Changeset 2222134 in sasmodels for sasmodels/models/core_shell_parallelepiped.c
- Timestamp:
- Sep 30, 2016 9:07:16 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:
- a807206
- Parents:
- 6e5b2a7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/core_shell_parallelepiped.c
rabdd01c r2222134 1 double form_volume(double a_side, double b_side, double c_side,2 double arim_thickness, double brim_thickness, double crim_thickness);1 double form_volume(double length_a, double length_b, double length_c, 2 double thick_rim_a, double thick_rim_b, double thick_rim_c); 3 3 double Iq(double q, double core_sld, double arim_sld, double brim_sld, double crim_sld, 4 double solvent_sld, double a_side, double b_side, double c_side,5 double arim_thickness, double brim_thickness, double crim_thickness);4 double solvent_sld, double length_a, double length_b, double length_c, 5 double thick_rim_a, double thick_rim_b, double thick_rim_c); 6 6 double Iqxy(double qx, double qy, double core_sld, double arim_sld, double brim_sld, 7 double crim_sld, double solvent_sld, double a_side, double b_side,8 double c_side, double arim_thickness, double brim_thickness,9 double crim_thickness, double theta, double phi, double psi);10 11 double form_volume(double a_side, double b_side, double c_side,12 double arim_thickness, double brim_thickness, double crim_thickness)7 double crim_sld, double solvent_sld, double length_a, double length_b, 8 double length_c, double thick_rim_a, double thick_rim_b, 9 double thick_rim_c, double theta, double phi, double psi); 10 11 double form_volume(double length_a, double length_b, double length_c, 12 double thick_rim_a, double thick_rim_b, double thick_rim_c) 13 13 { 14 //return a_side * b_side * c_side;15 return a_side * b_side * c_side+16 2.0 * arim_thickness * b_side * c_side+17 2.0 * brim_thickness * a_side * c_side+18 2.0 * crim_thickness * a_side * b_side;14 //return length_a * length_b * length_c; 15 return length_a * length_b * length_c + 16 2.0 * thick_rim_a * length_b * length_c + 17 2.0 * thick_rim_b * length_a * length_c + 18 2.0 * thick_rim_c * length_a * length_b; 19 19 } 20 20 … … 25 25 double crim_sld, 26 26 double solvent_sld, 27 double a_side,28 double b_side,29 double c_side,30 double arim_thickness,31 double brim_thickness,32 double crim_thickness)27 double length_a, 28 double length_b, 29 double length_c, 30 double thick_rim_a, 31 double thick_rim_b, 32 double thick_rim_c) 33 33 { 34 34 // Code converted from functions CSPPKernel and CSParallelepiped in libCylinder.c_scaled … … 36 36 37 37 double t1, t2, t3, t4, tmp, answer; 38 double mu = q * b_side;38 double mu = q * length_b; 39 39 40 40 //calculate volume before rescaling (in original code, but not used) 41 //double vol = form_volume( a_side, b_side, c_side, arim_thickness, brim_thickness, crim_thickness);42 //double vol = a_side * b_side * c_side+43 // 2.0 * arim_thickness * b_side * c_side+44 // 2.0 * brim_thickness * a_side * c_side+45 // 2.0 * crim_thickness * a_side * b_side;41 //double vol = form_volume(length_a, length_b, length_c, thick_rim_a, thick_rim_b, thick_rim_c); 42 //double vol = length_a * length_b * length_c + 43 // 2.0 * thick_rim_a * length_b * length_c + 44 // 2.0 * thick_rim_b * length_a * length_c + 45 // 2.0 * thick_rim_c * length_a * length_b; 46 46 47 47 // Scale sides by B 48 double a_scaled = a_side / b_side;49 double c_scaled = c_side / b_side;48 double a_scaled = length_a / length_b; 49 double c_scaled = length_c / length_b; 50 50 51 51 // DelRho values (note that drC is not used later) … … 74 74 double mudum = mu * sqrt(1.0-sigma*sigma); 75 75 76 double Vin = a_side * b_side * c_side;77 //double Vot = ( a_side * b_side * c_side+78 // 2.0 * arim_thickness * b_side * c_side+79 // 2.0 * a_side * brim_thickness * c_side+80 // 2.0 * a_side * b_side * crim_thickness);81 double V1 = (2.0 * arim_thickness * b_side * c_side); // incorrect V1 (aa*bb*cc+2*ta*bb*cc)82 double V2 = (2.0 * a_side * brim_thickness * c_side); // incorrect V2(aa*bb*cc+2*aa*tb*cc)76 double Vin = length_a * length_b * length_c; 77 //double Vot = (length_a * length_b * length_c + 78 // 2.0 * thick_rim_a * length_b * length_c + 79 // 2.0 * length_a * thick_rim_b * length_c + 80 // 2.0 * length_a * length_b * thick_rim_c); 81 double V1 = (2.0 * thick_rim_a * length_b * length_c); // incorrect V1 (aa*bb*cc+2*ta*bb*cc) 82 double V2 = (2.0 * length_a * thick_rim_b * length_c); // incorrect V2(aa*bb*cc+2*aa*tb*cc) 83 83 84 84 // ta and tb correspond to the definitions in CSPPKernel, but they don't make sense to me (MG) … … 86 86 // while in cspkernel in csparallelepiped.cpp (used for the 2D), all the definitions 87 87 // for ta, tb, tc use also A + 2*rim_thickness (but not scaled by B!!!) 88 double ta = (a_scaled+2.0* arim_thickness)/b_side;89 double tb = (a_scaled+2.0* brim_thickness)/b_side;88 double ta = (a_scaled+2.0*thick_rim_a)/length_b; 89 double tb = (a_scaled+2.0*thick_rim_b)/length_b; 90 90 91 91 double arg1 = (0.5*mudum*a_scaled) * sin(0.5*M_PI*uu); … … 160 160 double crim_sld, 161 161 double solvent_sld, 162 double a_side,163 double b_side,164 double c_side,165 double arim_thickness,166 double brim_thickness,167 double crim_thickness,162 double length_a, 163 double length_b, 164 double length_c, 165 double thick_rim_a, 166 double thick_rim_b, 167 double thick_rim_c, 168 168 double theta, 169 169 double phi, … … 217 217 double drB = brim_sld-solvent_sld; 218 218 double drC = crim_sld-solvent_sld; 219 double Vin = a_side * b_side * c_side;219 double Vin = length_a * length_b * length_c; 220 220 // As for the 1D case, Vot is not used 221 //double Vot = ( a_side * b_side * c_side+222 // 2.0 * arim_thickness * b_side * c_side+223 // 2.0 * a_side * brim_thickness * c_side+224 // 2.0 * a_side * b_side * crim_thickness);225 double V1 = (2.0 * arim_thickness * b_side * c_side); // incorrect V1 (aa*bb*cc+2*ta*bb*cc)226 double V2 = (2.0 * a_side * brim_thickness * c_side); // incorrect V2(aa*bb*cc+2*aa*tb*cc)227 double V3 = (2.0 * a_side * b_side * crim_thickness);221 //double Vot = (length_a * length_b * length_c + 222 // 2.0 * thick_rim_a * length_b * length_c + 223 // 2.0 * length_a * thick_rim_b * length_c + 224 // 2.0 * length_a * length_b * thick_rim_c); 225 double V1 = (2.0 * thick_rim_a * length_b * length_c); // incorrect V1 (aa*bb*cc+2*ta*bb*cc) 226 double V2 = (2.0 * length_a * thick_rim_b * length_c); // incorrect V2(aa*bb*cc+2*aa*tb*cc) 227 double V3 = (2.0 * length_a * length_b * thick_rim_c); 228 228 // The definitions of ta, tb, tc are not the same as in the 1D case because there is no 229 // the scaling by B. The use of a_sidefor the 3 of them seems clearly a mistake to me,229 // the scaling by B. The use of length_a for the 3 of them seems clearly a mistake to me, 230 230 // but for the moment I let it like this until understanding better the code. 231 double ta = a_side + 2.0*arim_thickness;232 double tb = a_side + 2.0*brim_thickness;233 double tc = a_side + 2.0*crim_thickness;231 double ta = length_a + 2.0*thick_rim_a; 232 double tb = length_a + 2.0*thick_rim_b; 233 double tc = length_a + 2.0*thick_rim_c; 234 234 //handle arg=0 separately, as sin(t)/t -> 1 as t->0 235 double argA = 0.5*q* a_side*cos_val_a;236 double argB = 0.5*q* b_side*cos_val_b;237 double argC = 0.5*q* c_side*cos_val_c;235 double argA = 0.5*q*length_a*cos_val_a; 236 double argB = 0.5*q*length_b*cos_val_b; 237 double argC = 0.5*q*length_c*cos_val_c; 238 238 double argtA = 0.5*q*ta*cos_val_a; 239 239 double argtB = 0.5*q*tb*cos_val_b;
Note: See TracChangeset
for help on using the changeset viewer.