Changeset ee60aa7 in sasmodels for sasmodels/models/hollow_rectangular_prism.c
- Timestamp:
- Sep 10, 2018 2:16:46 PM (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:
- d299327
- Parents:
- 3f818b2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/hollow_rectangular_prism.c
ra94046f ree60aa7 1 // TODO: interface to form_volume/shell_volume not yet settled 1 2 static double 2 form_volume(double length_a, double b2a_ratio, double c2a_ratio, double thickness)3 shell_volume(double *total, double length_a, double b2a_ratio, double c2a_ratio, double thickness) 3 4 { 4 5 double length_b = length_a * b2a_ratio; … … 8 9 double c_core = length_c - 2.0*thickness; 9 10 double vol_core = a_core * b_core * c_core; 10 double vol_total = length_a * length_b * length_c; 11 double vol_shell = vol_total - vol_core; 12 return vol_shell; 11 *total = length_a * length_b * length_c; 12 return *total - vol_core; 13 } 14 15 static double 16 form_volume(double length_a, double b2a_ratio, double c2a_ratio, double thickness) 17 { 18 double total; 19 return shell_volume(&total, length_a, b2a_ratio, c2a_ratio, thickness); 13 20 } 14 21 … … 19 26 // NOTE length_a is external dimension! 20 27 { 21 if (mode == 1) { 28 switch (mode) { 29 case 1: // equivalent sphere 22 30 return cbrt(0.75*cube(length_a)*b2a_ratio*c2a_ratio/M_PI); 23 } else if (mode == 2) {31 case 2: // half length_a 24 32 return 0.5 * length_a; 25 } else if (mode == 3) {33 case 3: // half length_b 26 34 return 0.5 * length_a*b2a_ratio; 27 } else if (mode == 4) {35 case 4: // half length_c 28 36 return 0.5 * length_a*c2a_ratio; 29 } else if (mode == 5) {37 case 5: // equivalent outer circular cross-section 30 38 return length_a*sqrt(b2a_ratio/M_PI); 31 } else if (mode == 6) {39 case 6: // half ab diagonal 32 40 return 0.5*sqrt(square(length_a) * (1.0 + square(b2a_ratio))); 33 } else {41 case 7: // half diagonal 34 42 return 0.5*sqrt(square(length_a) * (1.0 + square(b2a_ratio) + square(c2a_ratio))); 35 43 }
Note: See TracChangeset
for help on using the changeset viewer.