Changeset d277229 in sasmodels for sasmodels/models/elliptical_cylinder.c
- Timestamp:
- Sep 7, 2018 3:29:38 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:
- 3c60146
- Parents:
- 2a12351b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/elliptical_cylinder.c
r71b751d rd277229 3 3 { 4 4 return M_PI * radius_minor * radius_minor * r_ratio * length; 5 } 6 7 static double 8 radius_from_volume(double radius_minor, double r_ratio, double length) 9 { 10 const double volume_ellcyl = form_volume(radius_minor,r_ratio,length); 11 return cbrt(0.75*volume_ellcyl/M_PI); 12 } 13 14 static double 15 radius_from_min_dimension(double radius_minor, double r_ratio, double length) 16 { 17 const double rad_min = (r_ratio > 1.0 ? radius_minor : r_ratio*radius_minor); 18 return (rad_min < length ? rad_min : length); 19 } 20 21 static double 22 radius_from_max_dimension(double radius_minor, double r_ratio, double length) 23 { 24 const double rad_max = (r_ratio < 1.0 ? radius_minor : r_ratio*radius_minor); 25 return (rad_max > length ? rad_max : length); 26 } 27 28 static double 29 radius_from_diagonal(double radius_minor, double r_ratio, double length) 30 { 31 const double radius_max = (r_ratio > 1.0 ? radius_minor*r_ratio : radius_minor); 32 return sqrt(radius_max*radius_max + 0.25*length*length); 33 } 34 35 static double 36 effective_radius(int mode, double radius_minor, double r_ratio, double length) 37 { 38 if (mode == 1) { 39 return radius_from_volume(radius_minor, r_ratio, length); 40 } else if (mode == 2) { 41 return 0.5*radius_minor*(1.0 + r_ratio); 42 } else if (mode == 3) { 43 return (r_ratio > 1.0 ? radius_minor : r_ratio*radius_minor); 44 } else if (mode == 4) { 45 return (r_ratio < 1.0 ? radius_minor : r_ratio*radius_minor); 46 } else if (mode == 5) { 47 return sqrt(radius_minor*radius_minor*r_ratio); 48 } else if (mode == 6) { 49 return 0.5*length; 50 } else if (mode == 7) { 51 return radius_from_min_dimension(radius_minor,r_ratio,length); 52 } else if (mode == 8) { 53 return radius_from_max_dimension(radius_minor,r_ratio,length); 54 } else { 55 return radius_from_diagonal(radius_minor,r_ratio,length); 56 } 5 57 } 6 58
Note: See TracChangeset
for help on using the changeset viewer.