Changeset 177c1a1 in sasmodels
- Timestamp:
- Feb 4, 2016 10:17:50 PM (9 years ago)
- 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:
- 3a45c2c
- Parents:
- eeb8bac
- Location:
- sasmodels/models
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/core_shell_ellipsoid.py
r13ed84c r177c1a1 112 112 # pylint: enable=bad-whitespace, line-too-long 113 113 114 source = ["lib/ gfn.c", "lib/gauss76.c", "core_shell_ellipsoid.c"]114 source = ["lib/sph_j1c.c", "lib/gfn.c", "lib/gauss76.c", "core_shell_ellipsoid.c"] 115 115 116 116 demo = dict(scale=1, background=0.001, -
sasmodels/models/lib/gfn.c
r13ed84c r177c1a1 6 6 // <OBLATE ELLIPSOID> 7 7 // function gfn4 for oblate ellipsoids 8 static double 8 double 9 gfn4(double xx, double crmaj, double crmin, double trmaj, double trmin, double delpc, double delps, double qq); 10 double 9 11 gfn4(double xx, double crmaj, double crmin, double trmaj, double trmin, double delpc, double delps, double qq) 10 12 { 11 // local variables 12 double aa,bb,u2,ut2,uq,ut,vc,vt,siq,sit,gfnc,gfnt,tgfn,gfn4,pi43,Pi; 13 // local variables 14 const double pi43=4.0/3.0*M_PI; 15 const double aa = crmaj; 16 const double bb = crmin; 17 const double u2 = (bb*bb*xx*xx + aa*aa*(1.0-xx*xx)); 18 const double uq = sqrt(u2)*qq; 19 // changing to more accurate sph_j1c since the following inexplicably fails on Radeon Nano. 20 //const double siq = (uq == 0.0 ? 1.0 : 3.0*(sin(uq)/uq/uq - cos(uq)/uq)/uq); 21 const double siq = sph_j1c(uq); 22 const double vc = pi43*aa*aa*bb; 23 const double gfnc = siq*vc*delpc; 13 24 14 Pi = 4.0*atan(1.0); 15 pi43=4.0/3.0*Pi; 16 aa = crmaj; 17 bb = crmin; 18 u2 = (bb*bb*xx*xx + aa*aa*(1.0-xx*xx)); 19 ut2 = (trmin*trmin*xx*xx + trmaj*trmaj*(1.0-xx*xx)); 20 uq = sqrt(u2)*qq; 21 ut= sqrt(ut2)*qq; 22 vc = pi43*aa*aa*bb; 23 vt = pi43*trmaj*trmaj*trmin; 24 if (uq == 0.0){ 25 siq = 1.0/3.0; 26 }else{ 27 siq = (sin(uq)/uq/uq - cos(uq)/uq)/uq; 28 } 29 if (ut == 0.0){ 30 sit = 1.0/3.0; 31 }else{ 32 sit = (sin(ut)/ut/ut - cos(ut)/ut)/ut; 33 } 34 gfnc = 3.0*siq*vc*delpc; 35 gfnt = 3.0*sit*vt*delps; 36 tgfn = gfnc+gfnt; 37 gfn4 = tgfn*tgfn; 25 const double ut2 = (trmin*trmin*xx*xx + trmaj*trmaj*(1.0-xx*xx)); 26 const double ut= sqrt(ut2)*qq; 27 const double vt = pi43*trmaj*trmaj*trmin; 28 //const double sit = (ut == 0.0 ? 1.0 : 3.0*(sin(ut)/ut/ut - cos(ut)/ut)/ut); 29 const double sit = sph_j1c(ut); 30 const double gfnt = sit*vt*delps; 38 31 39 return (gfn4); 32 const double tgfn = gfnc + gfnt; 33 const double result = tgfn*tgfn; 34 35 return (result); 40 36 }
Note: See TracChangeset
for help on using the changeset viewer.