Changeset b1174ec in sasview for sansmodels/src/c_gen


Ignore:
Timestamp:
Jan 10, 2013 5:17:32 PM (12 years ago)
Author:
Jae Cho <jhjcho@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
1b28ff5
Parents:
dbc01f2
Message:

more fixes in gen sans

Location:
sansmodels/src/c_gen
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/c_gen/sld2i.cpp

    r318b5bbb rb1174ec  
    2929 */ 
    3030GenI :: GenI(int npix, double* x, double* y, double* z, double* sldn, 
    31                         double* mx, double* my, double* mz, 
     31                        double* mx, double* my, double* mz, double* voli, 
    3232                        double in_spin, double out_spin, 
    3333                        double s_theta) { 
     
    4343        this->my_val = my; 
    4444        this->mz_val = mz; 
     45        this->vol_pix = voli; 
    4546        this->inspin = in_spin; 
    4647        this->outspin = out_spin; 
     
    5253 */ 
    5354void GenI :: genicom(int npoints, double *qx, double *qy, double *I_out){ 
     55        // Assumes that q doesn't have qz component and sld_n is all real 
    5456        double q = 0.0; 
    5557        //double Pi = 4.0*atan(1.0); 
     
    6668        complex temp_fi; 
    6769 
    68         int count = 0; 
    69         //Assume that all pixels are in same size and int * 1A 
     70        double count = 0.0; 
     71        //Assume that pixel volumes are given in vol_pix in A^3 unit 
    7072        //int x_size = 0; //in Ang 
    7173        //int y_size = 0; //in Ang 
     
    8183                sumj_dd = cassign(0.0, 0.0);             
    8284                //printf ("%d ", i); 
    83                 q = sqrt(qx[i]*qx[i] + qy[i]*qy[i]); 
     85                q = sqrt(qx[i]*qx[i] + qy[i]*qy[i]); // + qz[i]*qz[i]); 
    8486 
    8587                for(int j=0; j<n_pix; j++){ 
     
    98100                                        comp_sld = cassign(b_sld.uu, 0.0); 
    99101                                        temp_fi = cplx_mult(comp_sld, ephase); 
     102                                        temp_fi = rcmult(vol_pix[j],temp_fi); 
    100103                                        sumj_uu = cplx_add(sumj_uu, temp_fi); 
    101104                                        } 
     
    104107                                        comp_sld = cassign(b_sld.dd, 0.0); 
    105108                                        temp_fi = cplx_mult(comp_sld, ephase); 
     109                                        temp_fi = rcmult(vol_pix[j],temp_fi); 
    106110                                        sumj_dd = cplx_add(sumj_dd, temp_fi); 
    107111                                        } 
     
    110114                                        comp_sld = cassign(b_sld.re_ud, b_sld.im_ud); 
    111115                                        temp_fi = cplx_mult(comp_sld, ephase); 
     116                                        temp_fi = rcmult(vol_pix[j],temp_fi); 
    112117                                        sumj_ud = cplx_add(sumj_ud, temp_fi); 
    113118                                        } 
     
    116121                                        comp_sld = cassign(b_sld.re_du, b_sld.im_du); 
    117122                                        temp_fi = cplx_mult(comp_sld, ephase); 
     123                                        temp_fi = rcmult(vol_pix[j],temp_fi); 
    118124                                        sumj_du = cplx_add(sumj_du, temp_fi); 
    119125                                        } 
    120126                                if (i == 0){ 
    121                                         count += 1; 
     127                                        count += vol_pix[j]; 
    122128                                } 
    123129                        } 
  • sansmodels/src/c_gen/sld2i.hh

    r318b5bbb rb1174ec  
    2626        double* my_val; 
    2727        double* mz_val; 
     28        double* vol_pix; 
    2829    // spin ratios 
    2930    double inspin; 
     
    3435    // Constructor 
    3536        GenI(int npix, double* x, double* y, double* z, double* sldn,  
    36                         double* mx, double* my, double* mz,  
     37                        double* mx, double* my, double* mz, double* voli, 
    3738                        double in_spin, double out_spin, 
    3839                        double s_theta); 
  • sansmodels/src/c_gen/sld2i_module.cpp

    r318b5bbb rb1174ec  
    4242        PyObject *my_val_obj; 
    4343        PyObject *mz_val_obj; 
     44        PyObject *vol_pix_obj; 
    4445        Py_ssize_t n_x; 
    4546        //PyObject rlimit_obj; 
     
    5556        double* my_val; 
    5657        double* mz_val; 
     58        double* vol_pix; 
    5759        double inspin; 
    5860        double outspin; 
    5961        double stheta; 
    6062 
    61         if (!PyArg_ParseTuple(args, "iOOOOOOOddd", &n_pix, &x_val_obj, &y_val_obj, &z_val_obj, &sldn_val_obj, &mx_val_obj, &my_val_obj, &mz_val_obj, &inspin, &outspin, &stheta)) return NULL; 
     63        if (!PyArg_ParseTuple(args, "iOOOOOOOOddd", &n_pix, &x_val_obj, &y_val_obj, &z_val_obj, &sldn_val_obj, &mx_val_obj, &my_val_obj, &mz_val_obj, &vol_pix_obj, &inspin, &outspin, &stheta)) return NULL; 
    6264        OUTVECTOR(x_val_obj, x_val, n_x); 
    6365        OUTVECTOR(y_val_obj, y_val, n_x); 
     
    6769        OUTVECTOR(my_val_obj, my_val, n_x); 
    6870        OUTVECTOR(mz_val_obj, mz_val, n_x); 
    69         GenI* sld2i = new GenI(n_pix,x_val,y_val,z_val,sldn_val,mx_val,my_val,mz_val,inspin,outspin,stheta); 
     71        OUTVECTOR(vol_pix_obj, vol_pix, n_x); 
     72        GenI* sld2i = new GenI(n_pix,x_val,y_val,z_val,sldn_val,mx_val,my_val,mz_val,vol_pix,inspin,outspin,stheta); 
    7073        return PyCObject_FromVoidPtr(sld2i, del_sld2i); 
    7174} 
Note: See TracChangeset for help on using the changeset viewer.