Changes in sasmodels/models/hollow_cylinder.c [a807206:aea2e2a] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/hollow_cylinder.c
ra807206 raea2e2a 1 double form_volume(double radius, double radius_core, double length);1 double form_volume(double radius, double thickness, double length); 2 2 3 double Iq(double q, double radius, double radius_core, double length, double sld,3 double Iq(double q, double radius, double thickness, double length, double sld, 4 4 double solvent_sld); 5 double Iqxy(double qx, double qy, double radius, double radius_core, double length, double sld,5 double Iqxy(double qx, double qy, double radius, double thickness, double length, double sld, 6 6 double solvent_sld, double theta, double phi); 7 7 8 #define INVALID(v) (v.radius_core >= v.radius)8 //#define INVALID(v) (v.radius_core >= v.radius) 9 9 10 10 // From Igor library … … 27 27 28 28 static double _hollow_cylinder_kernel( 29 double q, double radius _core, double radius, double length, double dum)29 double q, double radius, double thickness, double length, double dum) 30 30 { 31 31 const double qs = q*sqrt(1.0-dum*dum); 32 const double lam1 = sas_J1c( radius*qs);33 const double lam2 = sas_J1c(radius _core*qs);34 const double gamma_sq = square(radius _core/radius);32 const double lam1 = sas_J1c((radius+thickness)*qs); 33 const double lam2 = sas_J1c(radius*qs); 34 const double gamma_sq = square(radius/(radius+thickness)); 35 35 //Note: lim_{r -> r_c} psi = J0(radius_core*qs) 36 36 const double psi = (lam1 - gamma_sq*lam2)/(1.0 - gamma_sq); //SRK 10/19/00 … … 41 41 42 42 static double hollow_cylinder_analytical_2D_scaled( 43 double q, double q_x, double q_y, double radius, double radius_core,43 double q, double q_x, double q_y, double radius, double thickness, 44 44 double length, double sld, double solvent_sld, double theta, double phi) 45 45 { … … 65 65 cos_val = cyl_x*q_x + cyl_y*q_y;// + cyl_z*q_z; 66 66 67 answer = _hollow_cylinder_kernel(q, radius _core, radius, length, cos_val);67 answer = _hollow_cylinder_kernel(q, radius, thickness, length, cos_val); 68 68 69 vol = form_volume(radius, radius_core, length);69 vol = form_volume(radius, thickness, length); 70 70 answer = hollow_cylinder_scaling(answer, delrho, vol); 71 71 … … 74 74 75 75 76 double form_volume(double radius, double radius_core, double length)76 double form_volume(double radius, double thickness, double length) 77 77 { 78 double v_shell = M_PI*length*( radius*radius-radius_core*radius_core);78 double v_shell = M_PI*length*((radius+thickness)*(radius+thickness)-radius*radius); 79 79 return(v_shell); 80 80 } 81 81 82 82 83 double Iq(double q, double radius, double radius_core, double length,83 double Iq(double q, double radius, double thickness, double length, 84 84 double sld, double solvent_sld) 85 85 { … … 95 95 for (i=0;i<76;i++) { 96 96 zi = ( Gauss76Z[i] * (upper-lower) + lower + upper )/2.0; 97 inter = Gauss76Wt[i] * _hollow_cylinder_kernel(q, radius _core, radius, length, zi);97 inter = Gauss76Wt[i] * _hollow_cylinder_kernel(q, radius, thickness, length, zi); 98 98 summ += inter; 99 99 } 100 100 101 101 norm = summ*(upper-lower)/2.0; 102 volume = form_volume(radius, radius_core, length);102 volume = form_volume(radius, thickness, length); 103 103 delrho = solvent_sld - sld; 104 104 answer = hollow_cylinder_scaling(norm, delrho, volume); … … 108 108 109 109 110 double Iqxy(double qx, double qy, double radius, double radius_core,110 double Iqxy(double qx, double qy, double radius, double thickness, 111 111 double length, double sld, double solvent_sld, double theta, double phi) 112 112 { 113 113 const double q = sqrt(qx*qx+qy*qy); 114 return hollow_cylinder_analytical_2D_scaled(q, qx/q, qy/q, radius, radius_core, length, sld, solvent_sld, theta, phi);114 return hollow_cylinder_analytical_2D_scaled(q, qx/q, qy/q, radius, thickness, length, sld, solvent_sld, theta, phi); 115 115 }
Note: See TracChangeset
for help on using the changeset viewer.