Changeset 6530963 in sasmodels for sasmodels/models/fcc_paracrystal.c
- Timestamp:
- Sep 9, 2018 6:46:10 AM (6 years ago)
- Branches:
- ticket_1156
- Children:
- 78f8308
- Parents:
- 2c12061
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/fcc_paracrystal.c
r108e70e r6530963 1 1 static double 2 fcc_Zq(double qa, double qb, double qc, double dnn, double d_factor)2 fcc_Zq(double qa, double qb, double qc, double lattice_spacing, double lattice_distortion) 3 3 { 4 4 // Equations from Matsuoka 17-18-19, multiplied by |q| … … 16 16 // => exp(a)^2 - 2 cos(d ak) exp(a) + 1) 17 17 // => (exp(a) - 2 cos(d ak)) * exp(a) + 1 18 const double arg = -0.5*square( dnn*d_factor)*(a1*a1 + a2*a2 + a3*a3);18 const double arg = -0.5*square(lattice_spacing*lattice_distortion)*(a1*a1 + a2*a2 + a3*a3); 19 19 const double exp_arg = exp(arg); 20 20 const double Zq = -cube(expm1(2.0*arg)) 21 / ( ((exp_arg - 2.0*cos( dnn*a1))*exp_arg + 1.0)22 * ((exp_arg - 2.0*cos( dnn*a2))*exp_arg + 1.0)23 * ((exp_arg - 2.0*cos( dnn*a3))*exp_arg + 1.0));21 / ( ((exp_arg - 2.0*cos(lattice_spacing*a1))*exp_arg + 1.0) 22 * ((exp_arg - 2.0*cos(lattice_spacing*a2))*exp_arg + 1.0) 23 * ((exp_arg - 2.0*cos(lattice_spacing*a3))*exp_arg + 1.0)); 24 24 25 25 return Zq; … … 29 29 // occupied volume fraction calculated from lattice symmetry and sphere radius 30 30 static double 31 fcc_volume_fraction(double radius, double dnn)31 fcc_volume_fraction(double radius, double lattice_spacing) 32 32 { 33 return 4.0*sphere_volume(M_SQRT1_2*radius/ dnn);33 return 4.0*sphere_volume(M_SQRT1_2*radius/lattice_spacing); 34 34 } 35 35 … … 41 41 42 42 43 static double Iq(double q, double dnn,44 double d_factor, double radius,43 static double Iq(double q, double lattice_spacing, 44 double lattice_distortion, double radius, 45 45 double sld, double solvent_sld) 46 46 { … … 66 66 const double qa = qab*cos_phi; 67 67 const double qb = qab*sin_phi; 68 const double form = fcc_Zq(qa, qb, qc, dnn, d_factor);68 const double form = fcc_Zq(qa, qb, qc, lattice_spacing, lattice_distortion); 69 69 inner_sum += GAUSS_W[j] * form; 70 70 } … … 76 76 const double Pq = sphere_form(q, radius, sld, solvent_sld); 77 77 78 return fcc_volume_fraction(radius, dnn) * Pq * Zq;78 return fcc_volume_fraction(radius, lattice_spacing) * Pq * Zq; 79 79 } 80 80 81 81 82 82 static double Iqabc(double qa, double qb, double qc, 83 double dnn, double d_factor, double radius,83 double lattice_spacing, double lattice_distortion, double radius, 84 84 double sld, double solvent_sld) 85 85 { 86 86 const double q = sqrt(qa*qa + qb*qb + qc*qc); 87 87 const double Pq = sphere_form(q, radius, sld, solvent_sld); 88 const double Zq = fcc_Zq(qa, qb, qc, dnn, d_factor);89 return fcc_volume_fraction(radius, dnn) * Pq * Zq;88 const double Zq = fcc_Zq(qa, qb, qc, lattice_spacing, lattice_distortion); 89 return fcc_volume_fraction(radius, lattice_spacing) * Pq * Zq; 90 90 }
Note: See TracChangeset
for help on using the changeset viewer.