Ignore:
Timestamp:
Oct 1, 2016 8:47:44 AM (8 years ago)
Author:
butler
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
e0de72f
Parents:
a807206
Message:

replace core_shell_ellipsoid with core_shell_ellipsoid_xt (i.e. delete
old and rename *_xt to *)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/core_shell_ellipsoid.c

    r2222134 r5031ca3  
    11double form_volume(double radius_equat_core, 
    2                    double radius_polar_core, 
    3                    double radius_equat_shell, 
    4                    double radius_polar_shell); 
     2                   double polar_core, 
     3                   double equat_shell, 
     4                   double polar_shell); 
    55double Iq(double q, 
    66          double radius_equat_core, 
    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); 
     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); 
    1313 
    1414 
    1515double Iqxy(double qx, double qy, 
    1616          double radius_equat_core, 
    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, 
     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, 
    2323          double theta, 
    2424          double phi); 
     
    2626 
    2727double form_volume(double radius_equat_core, 
    28                    double radius_polar_core, 
    29                    double radius_equat_shell, 
    30                    double radius_polar_shell) 
     28                   double x_core, 
     29                   double thick_shell, 
     30                   double x_polar_shell) 
    3131{ 
    32     double vol = 4.0*M_PI/3.0*radius_equat_shell*radius_equat_shell*radius_polar_shell; 
     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; 
    3335    return vol; 
    3436} 
    3537 
    3638static double 
    37 core_shell_ellipsoid_kernel(double q, 
     39core_shell_ellipsoid_xt_kernel(double q, 
    3840          double radius_equat_core, 
    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) 
     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) 
    4547{ 
    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 = sld_core - sld_shell;    //core - shell 
    54     const double delps = sld_shell - sld_solvent; //shell - solvent 
     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; 
    5560 
    5661    for(int i=0;i<N_POINTS_76;i++) { 
     
    5863        double yyy = Gauss76Wt[i] * gfn4(zi, 
    5964                                  radius_equat_core, 
    60                                   radius_polar_core, 
    61                                   radius_equat_shell, 
    62                                   radius_polar_shell, 
     65                                  polar_core, 
     66                                  equat_shell, 
     67                                  polar_shell, 
    6368                                  delpc, 
    6469                                  delps, 
     
    6873 
    6974    double answer = (uplim-lolim)/2.0*summ; 
    70  
    7175    //convert to [cm-1] 
    7276    answer *= 1.0e-4; 
     
    7680 
    7781static double 
    78 core_shell_ellipsoid_kernel_2d(double q, double q_x, double q_y, 
     82core_shell_ellipsoid_xt_kernel_2d(double q, double q_x, double q_y, 
    7983          double radius_equat_core, 
    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, 
     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, 
    8690          double theta, 
    8791          double phi) 
     
    9195    phi = phi * M_PI_180; 
    9296 
    93  
    9497    // ellipsoid orientation, the axis of the rotation is consistent with the ploar axis. 
    9598    const double cyl_x = cos(theta) * cos(phi); 
    9699    const double cyl_y = sin(theta); 
    97100 
    98     const double sldcs = sld_core - sld_shell; 
    99     const double sldss = sld_shell- sld_solvent; 
     101    const double sldcs = core_sld - shell_sld; 
     102    const double sldss = shell_sld- solvent_sld; 
    100103 
    101104    // Compute the angle btw vector q and the 
     
    103106    const double cos_val = cyl_x*q_x + cyl_y*q_y; 
    104107 
    105     // Call the IGOR library function to get the kernel: MUST use gfn4 not gf2 because of the def of params. 
     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. 
    106114    double answer = gfn4(cos_val, 
    107115                  radius_equat_core, 
    108                   radius_polar_core, 
    109                   radius_equat_shell, 
    110                   radius_polar_shell, 
     116                  polar_core, 
     117                  equat_shell, 
     118                  polar_shell, 
    111119                  sldcs, 
    112120                  sldss, 
     
    121129double Iq(double q, 
    122130          double radius_equat_core, 
    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) 
     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) 
    129137{ 
    130     double intensity = core_shell_ellipsoid_kernel(q, 
     138    double intensity = core_shell_ellipsoid_xt_kernel(q, 
    131139           radius_equat_core, 
    132            radius_polar_core, 
    133            radius_equat_shell, 
    134            radius_polar_shell, 
    135            sld_core, 
    136            sld_shell, 
    137            sld_solvent); 
     140           x_core, 
     141           thick_shell, 
     142           x_polar_shell, 
     143           core_sld, 
     144           shell_sld, 
     145           solvent_sld); 
    138146 
    139147    return intensity; 
     
    143151double Iqxy(double qx, double qy, 
    144152          double radius_equat_core, 
    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, 
     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, 
    151159          double theta, 
    152160          double phi) 
     
    154162    double q; 
    155163    q = sqrt(qx*qx+qy*qy); 
    156     double intensity = core_shell_ellipsoid_kernel_2d(q, qx/q, qy/q, 
     164    double intensity = core_shell_ellipsoid_xt_kernel_2d(q, qx/q, qy/q, 
    157165                       radius_equat_core, 
    158                        radius_polar_core, 
    159                        radius_equat_shell, 
    160                        radius_polar_shell, 
    161                        sld_core, 
    162                        sld_shell, 
    163                        sld_solvent, 
     166                       x_core, 
     167                       thick_shell, 
     168                       x_polar_shell, 
     169                       core_sld, 
     170                       shell_sld, 
     171                       solvent_sld, 
    164172                       theta, 
    165173                       phi); 
Note: See TracChangeset for help on using the changeset viewer.