Changeset 6e7ba14 in sasmodels for sasmodels/models/ellipsoid.c
- Timestamp:
- Aug 20, 2018 8:52:21 AM (6 years ago)
- Branches:
- master, core_shell_microgels, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- aa44a6a
- Parents:
- bad3093
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/ellipsoid.c
r71b751d r6e7ba14 4 4 return M_4PI_3*radius_polar*radius_equatorial*radius_equatorial; 5 5 } 6 7 8 static double 9 radius_from_volume(double radius_polar, double radius_equatorial) 10 { 11 return cbrt(radius_polar*radius_equatorial*radius_equatorial); 12 } 13 14 static double 15 radius_from_curvature(double radius_polar, double radius_equatorial) 16 { 17 // Trivial cases 18 if (radius_polar == radius_equatorial) return radius_polar; 19 if (radius_polar * radius_equatorial == 0.) return 0.; 20 21 // see equation (26) in A.Isihara, J.Chem.Phys. 18(1950)1446-1449 22 const double ratio = (radius_polar < radius_equatorial 23 ? radius_polar / radius_equatorial 24 : radius_equatorial / radius_polar); 25 const double e1 = sqrt(1.0 - ratio*ratio); 26 const double b1 = 1.0 + asin(e1) / (e1 * ratio); 27 const double bL = (1.0 + e1) / (1.0 - e1); 28 const double b2 = 1.0 + 0.5 * ratio * ratio / e1 * log(bL); 29 const double delta = 0.75 * b1 * b2; 30 const double ddd = 2.0 * (delta + 1.0) * radius_polar * radius_equatorial * radius_equatorial; 31 return 0.5 * cbrt(ddd); 32 } 33 34 static double 35 effective_radius(int mode, double radius_polar, double radius_equatorial) 36 { 37 if (mode == 1) { 38 return radius_from_curvature(radius_polar, radius_equatorial); 39 } else if (mode == 2) { 40 return radius_from_volume(radius_polar, radius_equatorial); 41 } else if (mode == 3) { 42 return (radius_polar < radius_equatorial ? radius_polar : radius_equatorial); 43 } else { 44 return (radius_polar > radius_equatorial ? radius_polar : radius_equatorial); 45 } 46 } 47 6 48 7 49 static void
Note: See TracChangeset
for help on using the changeset viewer.