Ignore:
Timestamp:
Oct 12, 2010 6:22:08 PM (14 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:
20f00bed
Parents:
aaad3098
Message:

added some models and tests

Location:
sansmodels/src/sans/models/c_extensions
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/c_extensions/corefourshell.c

    rc724ccd r339ce67  
    1818 
    1919        dp[0] = pars->scale; 
    20         dp[1] = pars->rad_core; 
    21         dp[2] = pars->sld_core; 
     20        dp[1] = pars->rad_core0; 
     21        dp[2] = pars->sld_core0; 
    2222        dp[3] = pars->thick_shell1; 
    2323        dp[4] = pars->sld_shell1; 
  • sansmodels/src/sans/models/c_extensions/corefourshell.h

    rc724ccd r339ce67  
    66 */ 
    77 //[PYTHONCLASS] = CoreFourShellModel 
    8  //[DISP_PARAMS] = rad_core, thick_shell1,thick_shell2,thick_shell3,thick_shell4 
     8 //[DISP_PARAMS] = rad_core0, thick_shell1,thick_shell2,thick_shell3,thick_shell4 
    99 //[DESCRIPTION] =<text> Calculates the scattering intensity from a core-4 shell structure. 
    1010 //                     scale = scale factor * volume fraction 
    11  //                             rad_core: the radius of the core 
    12  //                             sld_core: the SLD of the core 
     11 //                             rad_core0: the radius of the core 
     12 //                             sld_core0: the SLD of the core 
    1313 //                             thick_shelli: the thickness of the i'th shell from the core 
    1414 //                             sld_shelli: the SLD of the i'th shell from the core 
     
    1616 //                             background: incoherent background 
    1717 //             </text> 
    18  //[FIXED]=<text>  thick_shell4.width; thick_shell1.width;thick_shell2.width;thick_shell3.width;rad_core.width </text> 
     18 //[FIXED]=<text>  thick_shell4.width; thick_shell1.width;thick_shell2.width;thick_shell3.width;rad_core0.width </text> 
    1919 //[ORIENTATION_PARAMS]= <text> </text> 
    2020 
     
    2424    double scale; 
    2525 
    26     /// Radius of the core [A] 
    27     //  [DEFAULT]=rad_core=60. [A] 
    28     double rad_core; 
     26    /// Radius of the core0 [A] 
     27    //  [DEFAULT]=rad_core0=60. [A] 
     28    double rad_core0; 
    2929 
    30     /// sld of core [1/A^(2)] 
    31     //  [DEFAULT]=sld_core= 6.4e-6 [1/A^(2)] 
    32     double sld_core; 
     30    /// sld of core0 [1/A^(2)] 
     31    //  [DEFAULT]=sld_core0= 6.4e-6 [1/A^(2)] 
     32    double sld_core0; 
    3333 
    3434    /// thickness of the shell1 [A] 
  • sansmodels/src/sans/models/c_extensions/fcc.c

    rd5b6a9d r339ce67  
    6565        double answer; 
    6666        double Pi = 4.0*atan(1.0); 
    67         double aa, Da, qDa_2, latticeScale, Zq, Fkq, Fkq_2; 
     67        double aa, Da, qDa_2, latticeScale, Zq, Fkq, Fkq_2,contrast; 
    6868 
    6969        double dp[5]; 
     
    7777        Da = pars->d_factor*aa; 
    7878        qDa_2 = pow(q*Da,2.0); 
     79        contrast = pars->sldSph - pars->sldSolv; 
    7980 
    8081        latticeScale = 4.0*(4.0/3.0)*Pi*(dp[1]*dp[1]*dp[1])/pow(aa*sqrt(2.0),3.0); 
     
    133134 
    134135        // Use SphereForm directly from libigor 
    135         answer = SphereForm(dp,q)*Zq; 
     136        answer = SphereForm_Paracrystal(pars->radius,contrast,q)*Zq; 
    136137 
    137138        //consider scales 
  • sansmodels/src/sans/models/c_extensions/onion.c

    ra1b2471 r339ce67  
    1111        int n = dp[0]; 
    1212        double scale = dp[1]; 
    13         double rad_core = dp[2]; 
    14         double sld_core = dp[3]; 
     13        double rad_core0 = dp[2]; 
     14        double sld_core0 = dp[3]; 
    1515        double sld_solv = dp[4]; 
    1616        double background = dp[5]; 
     
    3030                fun_type[i] = dp[i+45]; 
    3131        } 
    32         sld_out[0] = sld_core; 
     32        sld_out[0] = sld_core0; 
    3333        sld_out[n+1] = sld_solv; 
    34         sld_in[0] = sld_core; 
     34        sld_in[0] = sld_core0; 
    3535        sld_in[n+1] = sld_solv; 
    36         thick[0] = rad_core; 
     36        thick[0] = rad_core0; 
    3737        thick[n+1] = 1e+10; 
    3838        A[0] = 0.0; 
     
    6969                                        } 
    7070                                        else{ 
    71                                                 slope[i] = (sld_out[i]-sld_in[i])/(exp(A[i])-1); 
     71                                                slope[i] = (sld_out[i]-sld_in[i])/(exp(A[i])-1.0); 
    7272                                        } 
    7373                    for (j=0; j<2; j++){ 
     
    174174        dp[0] = pars->n_shells; 
    175175        dp[1] = pars->scale; 
    176         dp[2] = pars->rad_core; 
    177         dp[3] = pars->sld_core; 
     176        dp[2] = pars->rad_core0; 
     177        dp[3] = pars->sld_core0; 
    178178        dp[4] = pars->sld_solv; 
    179179        dp[5] = pars->background; 
  • sansmodels/src/sans/models/c_extensions/onion.h

    r7381f34 r339ce67  
    66 */ 
    77 //[PYTHONCLASS] = OnionModel 
    8  //[DISP_PARAMS] = rad_core, thick_shell1,thick_shell2,thick_shell3,thick_shell4, thick_shell5,thick_shell6,thick_shell7,thick_shell8,thick_shell9,thick_shell10 
     8 //[DISP_PARAMS] = rad_core0, thick_shell1,thick_shell2,thick_shell3,thick_shell4, thick_shell5,thick_shell6,thick_shell7,thick_shell8,thick_shell9,thick_shell10 
    99 //[DESCRIPTION] =<text>Form factor of mutishells normalized by the volume. Here each shell is described 
    1010 //                                              by an exponential function; 
     
    2424 // 
    2525 //                             background:background, 
    26  //                             rad_core: radius of sphere(core) 
     26 //                             rad_core0: radius of sphere(core) 
    2727 //                             thick_shell#:the thickness of the shell# 
    28  //                             sld_core: the SLD of the sphere 
     28 //                             sld_core0: the SLD of the sphere 
    2929 //                             sld_solv: the SLD of the solvent 
    3030 //                             sld_shell: the SLD of the shell# 
    3131 //                             A_shell#: the coefficient in the exponential function 
    3232 //             </text> 
    33  //[FIXED]=  <text>rad_core.width;thick_shell1.width;thick_shell2.width;thick_shell3.width;thick_shell4.width;thick_shell5.width;thick_shell6.width;thick_shell7.width;thick_shell8.width;thick_shell9.width;thick_shell10.width</text> 
     33 //[FIXED]=  <text>rad_core0.width;thick_shell1.width;thick_shell2.width;thick_shell3.width;thick_shell4.width;thick_shell5.width;thick_shell6.width;thick_shell7.width;thick_shell8.width;thick_shell9.width;thick_shell10.width</text> 
    3434 //[ORIENTATION_PARAMS]= <text> </text> 
    3535 
     
    4242        double scale; 
    4343    /// Radius of sphere [A] 
    44     //  [DEFAULT]=rad_core=200.0 [A] 
    45         double rad_core; 
     44    //  [DEFAULT]=rad_core0=200.0 [A] 
     45        double rad_core0; 
    4646        ///     sld_core [1/A^(2)] 
    47         //  [DEFAULT]=sld_core= 1.0e-6 [1/A^(2)] 
    48         double sld_core; 
     47        //  [DEFAULT]=sld_core0= 1.0e-6 [1/A^(2)] 
     48        double sld_core0; 
    4949        ///     sld_solv [1/A^(2)] 
    5050        //  [DEFAULT]=sld_solv= 6.4e-6 [1/A^(2)] 
  • sansmodels/src/sans/models/c_extensions/refl.c

    r35aface r339ce67  
    268268        double background = dp[6]; 
    269269 
    270         double sld[n+2],sld_nul[n+2],thick_inter[n+2],thick[n+2],total_thick; 
     270        double sld[n+2],sld_im[n+2],thick_inter[n+2],thick[n+2],total_thick; 
    271271        fun_type[0] = dp[3]; 
    272272        for (i =1; i<=n; i++){ 
     
    275275                thick[i] = dp[i+26]; 
    276276                fun_type[i] = dp[i+36]; 
     277                sld_im[i] = dp[i+46]; 
    277278 
    278279                total_thick += thick[i] + thick_inter[i]; 
     
    280281        sld[0] = sld_sub; 
    281282        sld[n+1] = sld_super; 
     283        sld_im[0] = fabs(dp[0+56]); 
     284        sld_im[n+1] = fabs(dp[1+56]); 
    282285        thick[0] = total_thick/5.0; 
    283286        thick[n+1] = total_thick/5.0; 
     
    287290        double nsl=21.0; //nsl = Num_sub_layer:  MUST ODD number in double //no other number works now 
    288291        int n_s, floor_nsl; 
    289     double sld_i,dz,phi,R,ko2; 
     292    double sld_i,sldim_i,dz,phi,R,ko2; 
    290293    double sign,erfunc; 
    291294    double pi; 
     
    300303        //Checking if floor is available. 
    301304        //no imaginary sld inputs in this function yet 
    302     n_sub=cassign(1.0-sld_sub*pow(lamda,2.0)/(2.0*pi),0.0); 
    303     n_sup=cassign(1.0-sld_super*pow(lamda,2.0)/(2.0*pi),0.0); 
     305    n_sub=cassign(1.0-sld_sub*pow(lamda,2.0)/(2.0*pi),pow(lamda,2.0)/(2.0*pi)*sld_im[0]); 
     306    n_sup=cassign(1.0-sld_super*pow(lamda,2.0)/(2.0*pi),pow(lamda,2.0)/(2.0*pi)*sld_im[n+1]); 
    304307    ko2 = pow(2.0*pi/lamda,2.0); 
    305308 
     
    323326                                        dz = thick[i]; 
    324327                                        sld_i = sld[i]; 
     328                                        sldim_i = sld_im[i]; 
    325329                                } 
    326330                                else{ 
    327331                                        dz = thick_inter[i-1]/nsl; 
    328                                         sld_i = interfunc(fun_type[i-1],nsl, n_s, sld[i-1], sld[i]); 
     332                                        if (sld[i-1] == sld[i]){ 
     333                                                sld_i = sld[i]; 
     334                                        } 
     335                                        else{ 
     336                                                sld_i = interfunc(fun_type[i-1],nsl, n_s, sld[i-1], sld[i]); 
     337                                        } 
     338                                        if (sld_im[i-1] == sld_im[i]){ 
     339                                                sldim_i = sld_im[i]; 
     340                                        } 
     341                                        else{ 
     342                                                sldim_i = interfunc(fun_type[i-1],nsl, n_s, sld_im[i-1], sld_im[i]); 
     343                                        } 
    329344                                } 
    330                                 nn = cassign(1.0-sld_i*pow(lamda,2.0)/(2.0*pi),0.0); 
     345                                nn = cassign(1.0-sld_i*pow(lamda,2.0)/(2.0*pi),pow(lamda,2.0)/(2.0*pi)*sldim_i); 
    331346                                nn2=cmult(nn,nn); 
    332347 
     
    366381 */ 
    367382double refl_analytical_1D(ReflParameters *pars, double q) { 
    368         double dp[47]; 
     383        double dp[59]; 
    369384 
    370385        dp[0] = pars->n_layers; 
     
    420435        dp[46] = pars->func_inter10; 
    421436 
     437        dp[47] = pars->sldIM_flat1; 
     438        dp[48] = pars->sldIM_flat2; 
     439        dp[49] = pars->sldIM_flat3; 
     440        dp[50] = pars->sldIM_flat4; 
     441        dp[51] = pars->sldIM_flat5; 
     442        dp[52] = pars->sldIM_flat6; 
     443        dp[53] = pars->sldIM_flat7; 
     444        dp[54] = pars->sldIM_flat8; 
     445        dp[55] = pars->sldIM_flat9; 
     446        dp[56] = pars->sldIM_flat10; 
     447 
     448        dp[57] = pars->sldIM_sub0; 
     449        dp[58] = pars->sldIM_medium; 
     450 
    422451        return re_kernel(dp, q); 
    423452} 
  • sansmodels/src/sans/models/c_extensions/refl.h

    r35aface r339ce67  
    142142    double func_inter10; 
    143143 
     144    //  [DEFAULT]=sldIM_flat1=0 
     145    double sldIM_flat1; 
     146    //  [DEFAULT]=sldIM_flat2=0 
     147    double sldIM_flat2; 
     148    //  [DEFAULT]=sldIM_flat3=0 
     149    double sldIM_flat3; 
     150    //  [DEFAULT]=sldIM_flat4=0 
     151    double sldIM_flat4; 
     152    //  [DEFAULT]=sldIM_flat5=0 
     153    double sldIM_flat5; 
     154    //  [DEFAULT]=sldIM_flat6=0 
     155    double sldIM_flat6; 
     156    //  [DEFAULT]=sldIM_flat7=0 
     157    double sldIM_flat7; 
     158    //  [DEFAULT]=sldIM_flat8=0 
     159    double sldIM_flat8; 
     160    //  [DEFAULT]=sldIM_flat9=0 
     161    double sldIM_flat9; 
     162    //  [DEFAULT]=sldIM_flat10=0 
     163    double sldIM_flat10; 
     164    //  [DEFAULT]=sldIM_sub0=0 
     165    double sldIM_sub0; 
     166    //  [DEFAULT]=sldIM_medium=0 
     167    double sldIM_medium; 
    144168 
    145169} ReflParameters; 
Note: See TracChangeset for help on using the changeset viewer.