Changeset ad90df9 in sasmodels for sasmodels/models/lib/sphere_form.c


Ignore:
Timestamp:
Mar 1, 2016 8:23:21 PM (8 years ago)
Author:
Paul Kienzle <pkienzle@…>
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:
e6f1410, 7d4b2ae
Parents:
50e1e40
Message:

refactor sphere/fcc/bcc/sc_crystal to use common code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/lib/sphere_form.c

    r9aac25d rad90df9  
    1 double 
     1inline double 
     2sphere_volume(double radius) 
     3{ 
     4    return M_4PI_3*cube(radius); 
     5} 
     6 
     7inline double 
    28sphere_form(double q, double radius, double sld, double solvent_sld) 
    39{ 
    4     const double qr = q*radius; 
    5     double sn, cn; 
    6     SINCOS(qr, sn, cn); 
    7     const double vol = 1.333333333333333*M_PI*radius*radius*radius; 
    8     const double bes = (qr == 0.0 ? 1.0 : 3.0*(sn-qr*cn)/(qr*qr*qr)); 
    9     const double fq = bes * (sld - solvent_sld)*vol; 
    10     return 1.0e-4*fq*fq; 
     10    const double fq = sphere_volume(radius) * sph_j1c(q*radius); 
     11    const double contrast = (sld - solvent_sld); 
     12    return 1.0e-4*square(contrast * fq); 
    1113} 
    12  
    13 // Do we even need the paracrystal form? 
    14 // The only difference is the return value at r=0 
    15 double 
    16 sphere_form_paracrystal(double q, double radius, double delrho) 
    17 { 
    18     const double qr = q*radius; 
    19     const double vol = 1.333333333333333*M_PI*radius*radius*radius; 
    20         const double f = vol*delrho*delrho*1.0e-4; 
    21     double sn, cn; 
    22     SINCOS(qr, sn, cn); 
    23         const double bes = (qr == 0.0 ? f : 3.0*(sn-qr*cn)/(qr*qr*qr)); 
    24         const double fq = bes*delrho*vol; 
    25         return fq*fq * 1.0e-4; 
    26 } 
Note: See TracChangeset for help on using the changeset viewer.