Changeset a807206 in sasmodels for sasmodels/models/hollow_cylinder.c
- Timestamp:
- Sep 30, 2016 10:42:06 PM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- caddb14, 5031ca3
- Parents:
- 2222134
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/hollow_cylinder.c
rf95556f ra807206 1 double form_volume(double radius, double core_radius, double length);1 double form_volume(double radius, double radius_core, double length); 2 2 3 double Iq(double q, double radius, double core_radius, double length, double sld,3 double Iq(double q, double radius, double radius_core, double length, double sld, 4 4 double solvent_sld); 5 double Iqxy(double qx, double qy, double radius, double core_radius, double length, double sld,5 double Iqxy(double qx, double qy, double radius, double radius_core, double length, double sld, 6 6 double solvent_sld, double theta, double phi); 7 7 8 #define INVALID(v) (v. core_radius>= 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 core_radius, double radius, double length, double dum)29 double q, double radius_core, double radius, double length, double dum) 30 30 { 31 31 const double qs = q*sqrt(1.0-dum*dum); 32 32 const double lam1 = sas_J1c(radius*qs); 33 const double lam2 = sas_J1c( core_radius*qs);34 const double gamma_sq = square( core_radius/radius);35 //Note: lim_{r -> r_c} psi = J0( core_radius*qs)33 const double lam2 = sas_J1c(radius_core*qs); 34 const double gamma_sq = square(radius_core/radius); 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 37 37 const double t2 = sinc(q*length*dum/2.0); … … 41 41 42 42 static double hollow_cylinder_analytical_2D_scaled( 43 double q, double q_x, double q_y, double radius, double core_radius,43 double q, double q_x, double q_y, double radius, double radius_core, 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, core_radius, radius, length, cos_val);67 answer = _hollow_cylinder_kernel(q, radius_core, radius, length, cos_val); 68 68 69 vol = form_volume(radius, core_radius, length);69 vol = form_volume(radius, radius_core, length); 70 70 answer = hollow_cylinder_scaling(answer, delrho, vol); 71 71 … … 74 74 75 75 76 double form_volume(double radius, double core_radius, double length)76 double form_volume(double radius, double radius_core, double length) 77 77 { 78 double v_shell = M_PI*length*(radius*radius- core_radius*core_radius);78 double v_shell = M_PI*length*(radius*radius-radius_core*radius_core); 79 79 return(v_shell); 80 80 } 81 81 82 82 83 double Iq(double q, double radius, double core_radius, double length,83 double Iq(double q, double radius, double radius_core, 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, core_radius, radius, length, zi);97 inter = Gauss76Wt[i] * _hollow_cylinder_kernel(q, radius_core, radius, length, zi); 98 98 summ += inter; 99 99 } 100 100 101 101 norm = summ*(upper-lower)/2.0; 102 volume = form_volume(radius, core_radius, length);102 volume = form_volume(radius, radius_core, 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 core_radius,110 double Iqxy(double qx, double qy, double radius, double radius_core, 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, core_radius, length, sld, solvent_sld, theta, phi);114 return hollow_cylinder_analytical_2D_scaled(q, qx/q, qy/q, radius, radius_core, length, sld, solvent_sld, theta, phi); 115 115 }
Note: See TracChangeset
for help on using the changeset viewer.