Changes in sasmodels/models/rectangular_prism.c [8de1477:1e7b0db0] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/rectangular_prism.c
r8de1477 r1e7b0db0 1 1 double form_volume(double length_a, double b2a_ratio, double c2a_ratio); 2 double Iq(double q, double sld, double solvent_sld, double length_a, 2 double Iq(double q, double sld, double solvent_sld, double length_a, 3 3 double b2a_ratio, double c2a_ratio); 4 4 … … 26 26 const double v2a = 0.0; 27 27 const double v2b = M_PI_2; //phi integration limits 28 28 29 29 double outer_sum = 0.0; 30 30 for(int i=0; i<76; i++) { … … 53 53 double answer = 0.5*(v1b-v1a)*outer_sum; 54 54 55 // Normalize by Pi (Eqn. 16). 56 // The term (ABC)^2 does not appear because it was introduced before on 55 // Normalize by Pi (Eqn. 16). 56 // The term (ABC)^2 does not appear because it was introduced before on 57 57 // the definitions of termA, termB, termC. 58 // The factor 2 appears because the theta integral has been defined between 58 // The factor 2 appears because the theta integral has been defined between 59 59 // 0 and pi/2, instead of 0 to pi. 60 60 answer /= M_PI_2; //Form factor P(q) … … 64 64 answer *= square((sld-solvent_sld)*volume); 65 65 66 // Convert from [1e-12 A-1] to [cm-1] 66 // Convert from [1e-12 A-1] to [cm-1] 67 67 answer *= 1.0e-4; 68 68 69 69 return answer; 70 70 } 71 72 73 double Iqxy(double qa, double qb, double qc,74 double sld,75 double solvent_sld,76 double length_a,77 double b2a_ratio,78 double c2a_ratio)79 {80 const double length_b = length_a * b2a_ratio;81 const double length_c = length_a * c2a_ratio;82 const double a_half = 0.5 * length_a;83 const double b_half = 0.5 * length_b;84 const double c_half = 0.5 * length_c;85 const double volume = length_a * length_b * length_c;86 87 // Amplitude AP from eqn. (13)88 89 const double termA = sas_sinx_x(qa * a_half);90 const double termB = sas_sinx_x(qb * b_half);91 const double termC = sas_sinx_x(qc * c_half);92 93 const double AP = termA * termB * termC;94 95 // Multiply by contrast^2. Factor corresponding to volume^2 cancels with previous normalization.96 const double delrho = sld - solvent_sld;97 98 // Convert from [1e-12 A-1] to [cm-1]99 return 1.0e-4 * square(volume * delrho * AP);100 }
Note: See TracChangeset
for help on using the changeset viewer.