Changeset 217590b in sasmodels for sasmodels/models/fractal.c
- Timestamp:
- Oct 20, 2016 4:48:48 PM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 5c94f41
- Parents:
- 2b9e63f
- git-author:
- Paul Kienzle <pkienzle@…> (10/20/16 16:47:25)
- git-committer:
- Paul Kienzle <pkienzle@…> (10/20/16 16:48:48)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/fractal.c
r6d96b66 r217590b 1 #define INVALID(p) (p.fractal_dim < =0.0)1 #define INVALID(p) (p.fractal_dim < 0.0) 2 2 3 3 static double … … 10 10 double sld_solvent) 11 11 { 12 const double sq = fractal_sq(q, radius, fractal_dim, cor_length); 13 12 14 //calculate P(q) for the spherical subunits 13 const double pq = M_4PI_3*cube(radius) * square((sld_block-sld_solvent)*sph_j1c(q*radius)); 14 15 //calculate S(q), using Teixeira, Eq(15) 16 double sq; 17 if (q > 0. && fractal_dim > 1.) { 18 // q>0, D>0 19 const double D = fractal_dim; 20 const double Dm1 = fractal_dim - 1.0; 21 // Note: for large Dm1, sin(Dm1*atan(q*cor_length) can go negative 22 const double t1 = D*sas_gamma(Dm1)*sin(Dm1*atan(q*cor_length)); 23 const double t2 = pow(q*radius, -D); 24 const double t3 = pow(1.0 + 1.0/square(q*cor_length), -0.5*Dm1); 25 sq = 1.0 + t1 * t2 * t3; 26 } else if (q > 0.) { 27 // q>0, D=1 28 sq = 1.0 + atan(q*cor_length) / (q*radius); 29 } else if (fractal_dim > 1.) { 30 // q=0, D>1 31 const double D = fractal_dim; 32 sq = 1.0 + pow(cor_length/radius, D)*sas_gamma(D+1.0); 33 } else { 34 // q=0, D=1 35 sq = 1.0 + cor_length/radius; 36 } 15 const double V = M_4PI_3*cube(radius); 16 const double pq = V * square((sld_block-sld_solvent)*sph_j1c(q*radius)); 37 17 38 18 // scale to units cm-1 sr-1 (assuming data on absolute scale) … … 41 21 // combined: 1e-4 * I(q) 42 22 43 return 1.e-4 * volfraction * pq * sq;23 return 1.e-4 * volfraction * sq * pq; 44 24 } 45 25
Note: See TracChangeset
for help on using the changeset viewer.