Changeset a807206 in sasmodels for sasmodels/models/pearl_necklace.c
- Timestamp:
- Oct 1, 2016 12:42:06 AM (8 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:
- caddb14, 5031ca3
- Parents:
- 2222134
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/pearl_necklace.c
r2f5c6d4 ra807206 1 double _pearl_necklace_kernel(double q, double radius, double edge_sep aration,1 double _pearl_necklace_kernel(double q, double radius, double edge_sep, 2 2 double thick_string, double num_pearls, double sld_pearl, 3 3 double sld_string, double sld_solv); 4 double form_volume(double radius, double edge_sep aration,5 double string_thickness, double number_of_pearls);4 double form_volume(double radius, double edge_sep, 5 double thick_string, double num_pearls); 6 6 7 double Iq(double q, double radius, double edge_sep aration,8 double string_thickness, double number_of_pearls, double sld,7 double Iq(double q, double radius, double edge_sep, 8 double thick_string, double num_pearls, double sld, 9 9 double string_sld, double solvent_sld); 10 10 11 #define INVALID(v) (v. string_thickness >= v.radius || v.number_of_pearls <= 0)11 #define INVALID(v) (v.thick_string >= v.radius || v.num_pearls <= 0) 12 12 13 13 // From Igor library 14 double _pearl_necklace_kernel(double q, double radius, double edge_sep aration, double thick_string,14 double _pearl_necklace_kernel(double q, double radius, double edge_sep, double thick_string, 15 15 double num_pearls, double sld_pearl, double sld_string, double sld_solv) 16 16 { … … 27 27 28 28 // center to center distance between the neighboring pearls 29 double A_s = edge_sep aration+ 2.0 * radius;29 double A_s = edge_sep + 2.0 * radius; 30 30 31 31 // Repeated Calculations … … 33 33 double oneminussinc = 1 - sincasq; 34 34 double q_r = q * radius; 35 double q_edge = q * edge_sep aration;35 double q_edge = q * edge_sep; 36 36 37 37 // each volume 38 double string_vol = edge_sep aration* pi * thick_string * thick_string / 4.0;38 double string_vol = edge_sep * pi * thick_string * thick_string / 4.0; 39 39 double pearl_vol = 4.0 / 3.0 * pi * radius * radius * radius; 40 40 … … 105 105 } 106 106 107 double form_volume(double radius, double edge_sep aration,108 double string_thickness, double number_of_pearls)107 double form_volume(double radius, double edge_sep, 108 double thick_string, double num_pearls) 109 109 { 110 110 double total_vol; 111 111 112 112 double pi = 4.0*atan(1.0); 113 double number_of_strings = num ber_of_pearls - 1.0;113 double number_of_strings = num_pearls - 1.0; 114 114 115 double string_vol = edge_sep aration * pi * string_thickness * string_thickness/ 4.0;115 double string_vol = edge_sep * pi * thick_string * thick_string / 4.0; 116 116 double pearl_vol = 4.0 / 3.0 * pi * radius * radius * radius; 117 117 118 118 total_vol = number_of_strings * string_vol; 119 total_vol += num ber_of_pearls * pearl_vol;119 total_vol += num_pearls * pearl_vol; 120 120 121 121 return(total_vol); 122 122 } 123 123 124 double Iq(double q, double radius, double edge_sep aration,125 double string_thickness, double number_of_pearls, double sld,124 double Iq(double q, double radius, double edge_sep, 125 double thick_string, double num_pearls, double sld, 126 126 double string_sld, double solvent_sld) 127 127 { 128 128 double value, tot_vol; 129 129 130 value = _pearl_necklace_kernel(q, radius, edge_sep aration, string_thickness,131 num ber_of_pearls, sld, string_sld, solvent_sld);132 tot_vol = form_volume(radius, edge_sep aration, string_thickness, number_of_pearls);130 value = _pearl_necklace_kernel(q, radius, edge_sep, thick_string, 131 num_pearls, sld, string_sld, solvent_sld); 132 tot_vol = form_volume(radius, edge_sep, thick_string, num_pearls); 133 133 134 134 return value*tot_vol;
Note: See TracChangeset
for help on using the changeset viewer.