Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/core_shell_ellipsoid.c

    r5031ca3 r2222134  
    11double form_volume(double radius_equat_core, 
    2                    double polar_core, 
    3                    double equat_shell, 
    4                    double polar_shell); 
     2                   double radius_polar_core, 
     3                   double radius_equat_shell, 
     4                   double radius_polar_shell); 
    55double Iq(double q, 
    66          double radius_equat_core, 
    7           double x_core, 
    8           double thick_shell, 
    9           double x_polar_shell, 
    10           double core_sld, 
    11           double shell_sld, 
    12           double solvent_sld); 
     7          double radius_polar_core, 
     8          double radius_equat_shell, 
     9          double radius_polar_shell, 
     10          double sld_core, 
     11          double sld_shell, 
     12          double sld_solvent); 
    1313 
    1414 
    1515double Iqxy(double qx, double qy, 
    1616          double radius_equat_core, 
    17           double x_core, 
    18           double thick_shell, 
    19           double x_polar_shell, 
    20           double core_sld, 
    21           double shell_sld, 
    22           double solvent_sld, 
     17          double radius_polar_core, 
     18          double radius_equat_shell, 
     19          double radius_polar_shell, 
     20          double sld_core, 
     21          double sld_shell, 
     22          double sld_solvent, 
    2323          double theta, 
    2424          double phi); 
     
    2626 
    2727double form_volume(double radius_equat_core, 
    28                    double x_core, 
    29                    double thick_shell, 
    30                    double x_polar_shell) 
     28                   double radius_polar_core, 
     29                   double radius_equat_shell, 
     30                   double radius_polar_shell) 
    3131{ 
    32     const double equat_shell = radius_equat_core + thick_shell; 
    33     const double polar_shell = radius_equat_core*x_core + thick_shell*x_polar_shell; 
    34     double vol = 4.0*M_PI/3.0*equat_shell*equat_shell*polar_shell; 
     32    double vol = 4.0*M_PI/3.0*radius_equat_shell*radius_equat_shell*radius_polar_shell; 
    3533    return vol; 
    3634} 
    3735 
    3836static double 
    39 core_shell_ellipsoid_xt_kernel(double q, 
     37core_shell_ellipsoid_kernel(double q, 
    4038          double radius_equat_core, 
    41           double x_core, 
    42           double thick_shell, 
    43           double x_polar_shell, 
    44           double core_sld, 
    45           double shell_sld, 
    46           double solvent_sld) 
     39          double radius_polar_core, 
     40          double radius_equat_shell, 
     41          double radius_polar_shell, 
     42          double sld_core, 
     43          double sld_shell, 
     44          double sld_solvent) 
    4745{ 
     46 
     47    //upper and lower integration limits 
    4848    const double lolim = 0.0; 
    4949    const double uplim = 1.0; 
     
    5151    double summ = 0.0;   //initialize intergral 
    5252 
    53     const double delpc = core_sld - shell_sld; //core - shell 
    54     const double delps = shell_sld - solvent_sld; //shell - solvent 
    55  
    56  
    57     const double polar_core = radius_equat_core*x_core; 
    58     const double equat_shell = radius_equat_core + thick_shell; 
    59     const double polar_shell = radius_equat_core*x_core + thick_shell*x_polar_shell; 
     53    const double delpc = sld_core - sld_shell;    //core - shell 
     54    const double delps = sld_shell - sld_solvent; //shell - solvent 
    6055 
    6156    for(int i=0;i<N_POINTS_76;i++) { 
     
    6358        double yyy = Gauss76Wt[i] * gfn4(zi, 
    6459                                  radius_equat_core, 
    65                                   polar_core, 
    66                                   equat_shell, 
    67                                   polar_shell, 
     60                                  radius_polar_core, 
     61                                  radius_equat_shell, 
     62                                  radius_polar_shell, 
    6863                                  delpc, 
    6964                                  delps, 
     
    7368 
    7469    double answer = (uplim-lolim)/2.0*summ; 
     70 
    7571    //convert to [cm-1] 
    7672    answer *= 1.0e-4; 
     
    8076 
    8177static double 
    82 core_shell_ellipsoid_xt_kernel_2d(double q, double q_x, double q_y, 
     78core_shell_ellipsoid_kernel_2d(double q, double q_x, double q_y, 
    8379          double radius_equat_core, 
    84           double x_core, 
    85           double thick_shell, 
    86           double x_polar_shell, 
    87           double core_sld, 
    88           double shell_sld, 
    89           double solvent_sld, 
     80          double radius_polar_core, 
     81          double radius_equat_shell, 
     82          double radius_polar_shell, 
     83          double sld_core, 
     84          double sld_shell, 
     85          double sld_solvent, 
    9086          double theta, 
    9187          double phi) 
     
    9591    phi = phi * M_PI_180; 
    9692 
     93 
    9794    // ellipsoid orientation, the axis of the rotation is consistent with the ploar axis. 
    9895    const double cyl_x = cos(theta) * cos(phi); 
    9996    const double cyl_y = sin(theta); 
    10097 
    101     const double sldcs = core_sld - shell_sld; 
    102     const double sldss = shell_sld- solvent_sld; 
     98    const double sldcs = sld_core - sld_shell; 
     99    const double sldss = sld_shell- sld_solvent; 
    103100 
    104101    // Compute the angle btw vector q and the 
     
    106103    const double cos_val = cyl_x*q_x + cyl_y*q_y; 
    107104 
    108     const double polar_core = radius_equat_core*x_core; 
    109     const double equat_shell = radius_equat_core + thick_shell; 
    110     const double polar_shell = radius_equat_core*x_core + thick_shell*x_polar_shell; 
    111  
    112     // Call the IGOR library function to get the kernel: 
    113     // MUST use gfn4 not gf2 because of the def of params. 
     105    // Call the IGOR library function to get the kernel: MUST use gfn4 not gf2 because of the def of params. 
    114106    double answer = gfn4(cos_val, 
    115107                  radius_equat_core, 
    116                   polar_core, 
    117                   equat_shell, 
    118                   polar_shell, 
     108                  radius_polar_core, 
     109                  radius_equat_shell, 
     110                  radius_polar_shell, 
    119111                  sldcs, 
    120112                  sldss, 
     
    129121double Iq(double q, 
    130122          double radius_equat_core, 
    131           double x_core, 
    132           double thick_shell, 
    133           double x_polar_shell, 
    134           double core_sld, 
    135           double shell_sld, 
    136           double solvent_sld) 
     123          double radius_polar_core, 
     124          double radius_equat_shell, 
     125          double radius_polar_shell, 
     126          double sld_core, 
     127          double sld_shell, 
     128          double sld_solvent) 
    137129{ 
    138     double intensity = core_shell_ellipsoid_xt_kernel(q, 
     130    double intensity = core_shell_ellipsoid_kernel(q, 
    139131           radius_equat_core, 
    140            x_core, 
    141            thick_shell, 
    142            x_polar_shell, 
    143            core_sld, 
    144            shell_sld, 
    145            solvent_sld); 
     132           radius_polar_core, 
     133           radius_equat_shell, 
     134           radius_polar_shell, 
     135           sld_core, 
     136           sld_shell, 
     137           sld_solvent); 
    146138 
    147139    return intensity; 
     
    151143double Iqxy(double qx, double qy, 
    152144          double radius_equat_core, 
    153           double x_core, 
    154           double thick_shell, 
    155           double x_polar_shell, 
    156           double core_sld, 
    157           double shell_sld, 
    158           double solvent_sld, 
     145          double radius_polar_core, 
     146          double radius_equat_shell, 
     147          double radius_polar_shell, 
     148          double sld_core, 
     149          double sld_shell, 
     150          double sld_solvent, 
    159151          double theta, 
    160152          double phi) 
     
    162154    double q; 
    163155    q = sqrt(qx*qx+qy*qy); 
    164     double intensity = core_shell_ellipsoid_xt_kernel_2d(q, qx/q, qy/q, 
     156    double intensity = core_shell_ellipsoid_kernel_2d(q, qx/q, qy/q, 
    165157                       radius_equat_core, 
    166                        x_core, 
    167                        thick_shell, 
    168                        x_polar_shell, 
    169                        core_sld, 
    170                        shell_sld, 
    171                        solvent_sld, 
     158                       radius_polar_core, 
     159                       radius_equat_shell, 
     160                       radius_polar_shell, 
     161                       sld_core, 
     162                       sld_shell, 
     163                       sld_solvent, 
    172164                       theta, 
    173165                       phi); 
Note: See TracChangeset for help on using the changeset viewer.