Changeset 6530963 in sasmodels for sasmodels/models/bcc_paracrystal.c
- Timestamp:
- Sep 9, 2018 4:46:10 AM (6 years ago)
- Branches:
- ticket_1156
- Children:
- 78f8308
- Parents:
- 2c12061
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/bcc_paracrystal.c
r108e70e r6530963 1 1 static double 2 bcc_Zq(double qa, double qb, double qc, double dnn, double d_factor)2 bcc_Zq(double qa, double qb, double qc, double lattice_spacing, double lattice_distortion) 3 3 { 4 4 // Equations from Matsuoka 26-27-28, multiplied by |q| … … 17 17 // => exp(a)^2 - 2 cos(d ak) exp(a) + 1) 18 18 // => (exp(a) - 2 cos(d ak)) * exp(a) + 1 19 const double arg = -0.5*square( dnn*d_factor)*(a1*a1 + a2*a2 + a3*a3);19 const double arg = -0.5*square(lattice_spacing*lattice_distortion)*(a1*a1 + a2*a2 + a3*a3); 20 20 const double exp_arg = exp(arg); 21 21 const double Zq = -cube(expm1(2.0*arg)) 22 / ( ((exp_arg - 2.0*cos( dnn*a1))*exp_arg + 1.0)23 * ((exp_arg - 2.0*cos( dnn*a2))*exp_arg + 1.0)24 * ((exp_arg - 2.0*cos( dnn*a3))*exp_arg + 1.0));22 / ( ((exp_arg - 2.0*cos(lattice_spacing*a1))*exp_arg + 1.0) 23 * ((exp_arg - 2.0*cos(lattice_spacing*a2))*exp_arg + 1.0) 24 * ((exp_arg - 2.0*cos(lattice_spacing*a3))*exp_arg + 1.0)); 25 25 26 26 #elif 0 … … 36 36 // = tanh(-a) / [1 - cos(d a_k)/cosh(-a)] 37 37 // 38 const double arg = 0.5*square( dnn*d_factor)*(a1*a1 + a2*a2 + a3*a3);38 const double arg = 0.5*square(lattice_spacing*lattice_distortion)*(a1*a1 + a2*a2 + a3*a3); 39 39 const double sinh_qd = sinh(arg); 40 40 const double cosh_qd = cosh(arg); 41 const double Zq = sinh_qd/(cosh_qd - cos( dnn*a1))42 * sinh_qd/(cosh_qd - cos( dnn*a2))43 * sinh_qd/(cosh_qd - cos( dnn*a3));41 const double Zq = sinh_qd/(cosh_qd - cos(lattice_spacing*a1)) 42 * sinh_qd/(cosh_qd - cos(lattice_spacing*a2)) 43 * sinh_qd/(cosh_qd - cos(lattice_spacing*a3)); 44 44 #else 45 const double arg = 0.5*square( dnn*d_factor)*(a1*a1 + a2*a2 + a3*a3);45 const double arg = 0.5*square(lattice_spacing*lattice_distortion)*(a1*a1 + a2*a2 + a3*a3); 46 46 const double tanh_qd = tanh(arg); 47 47 const double cosh_qd = cosh(arg); 48 const double Zq = tanh_qd/(1.0 - cos( dnn*a1)/cosh_qd)49 * tanh_qd/(1.0 - cos( dnn*a2)/cosh_qd)50 * tanh_qd/(1.0 - cos( dnn*a3)/cosh_qd);48 const double Zq = tanh_qd/(1.0 - cos(lattice_spacing*a1)/cosh_qd) 49 * tanh_qd/(1.0 - cos(lattice_spacing*a2)/cosh_qd) 50 * tanh_qd/(1.0 - cos(lattice_spacing*a3)/cosh_qd); 51 51 #endif 52 52 … … 57 57 // occupied volume fraction calculated from lattice symmetry and sphere radius 58 58 static double 59 bcc_volume_fraction(double radius, double dnn)59 bcc_volume_fraction(double radius, double lattice_spacing) 60 60 { 61 return 2.0*sphere_volume(sqrt(0.75)*radius/ dnn);61 return 2.0*sphere_volume(sqrt(0.75)*radius/lattice_spacing); 62 62 } 63 63 … … 69 69 70 70 71 static double Iq(double q, double dnn,72 double d_factor, double radius,71 static double Iq(double q, double lattice_spacing, 72 double lattice_distortion, double radius, 73 73 double sld, double solvent_sld) 74 74 { … … 94 94 const double qa = qab*cos_phi; 95 95 const double qb = qab*sin_phi; 96 const double form = bcc_Zq(qa, qb, qc, dnn, d_factor);96 const double form = bcc_Zq(qa, qb, qc, lattice_spacing, lattice_distortion); 97 97 inner_sum += GAUSS_W[j] * form; 98 98 } … … 103 103 const double Zq = outer_sum/(4.0*M_PI); 104 104 const double Pq = sphere_form(q, radius, sld, solvent_sld); 105 return bcc_volume_fraction(radius, dnn) * Pq * Zq;105 return bcc_volume_fraction(radius, lattice_spacing) * Pq * Zq; 106 106 } 107 107 108 108 109 109 static double Iqabc(double qa, double qb, double qc, 110 double dnn, double d_factor, double radius,110 double lattice_spacing, double lattice_distortion, double radius, 111 111 double sld, double solvent_sld) 112 112 { 113 113 const double q = sqrt(qa*qa + qb*qb + qc*qc); 114 const double Zq = bcc_Zq(qa, qb, qc, dnn, d_factor);114 const double Zq = bcc_Zq(qa, qb, qc, lattice_spacing, lattice_distortion); 115 115 const double Pq = sphere_form(q, radius, sld, solvent_sld); 116 return bcc_volume_fraction(radius, dnn) * Pq * Zq;116 return bcc_volume_fraction(radius, lattice_spacing) * Pq * Zq; 117 117 }
Note: See TracChangeset
for help on using the changeset viewer.