Changes in sasmodels/models/sc_paracrystal.c [71b751d:6530963] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/sc_paracrystal.c
r71b751d r6530963 1 1 static double 2 sc_Zq(double qa, double qb, double qc, double dnn, double d_factor)2 sc_Zq(double qa, double qb, double qc, double lattice_spacing, double lattice_distortion) 3 3 { 4 4 // Equations from Matsuoka 9-10-11, 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; … … 28 28 // occupied volume fraction calculated from lattice symmetry and sphere radius 29 29 static double 30 sc_volume_fraction(double radius, double dnn)30 sc_volume_fraction(double radius, double lattice_spacing) 31 31 { 32 return sphere_volume(radius/ dnn);32 return sphere_volume(radius/lattice_spacing); 33 33 } 34 34 … … 41 41 42 42 static double 43 Iq(double q, double dnn,44 double d_factor, double radius,43 Iq(double q, double lattice_spacing, 44 double lattice_distortion, double radius, 45 45 double sld, double solvent_sld) 46 46 { … … 67 67 const double qa = qab*cos_phi; 68 68 const double qb = qab*sin_phi; 69 const double form = sc_Zq(qa, qb, qc, dnn, d_factor);69 const double form = sc_Zq(qa, qb, qc, lattice_spacing, lattice_distortion); 70 70 inner_sum += GAUSS_W[j] * form; 71 71 } … … 77 77 const double Pq = sphere_form(q, radius, sld, solvent_sld); 78 78 79 return sc_volume_fraction(radius, dnn) * Pq * Zq;79 return sc_volume_fraction(radius, lattice_spacing) * Pq * Zq; 80 80 } 81 81 82 82 83 static double 83 84 Iqabc(double qa, double qb, double qc, 84 double dnn, double d_factor, double radius,85 double lattice_spacing, double lattice_distortion, double radius, 85 86 double sld, double solvent_sld) 86 87 { 87 88 const double q = sqrt(qa*qa + qb*qb + qc*qc); 88 89 const double Pq = sphere_form(q, radius, sld, solvent_sld); 89 const double Zq = sc_Zq(qa, qb, qc, dnn, d_factor);90 return sc_volume_fraction(radius, dnn) * Pq * Zq;90 const double Zq = sc_Zq(qa, qb, qc, lattice_spacing, lattice_distortion); 91 return sc_volume_fraction(radius, lattice_spacing) * Pq * Zq; 91 92 }
Note: See TracChangeset
for help on using the changeset viewer.