Ignore:
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); 
     1double form_volume(double radius, double thickness, double length); 
    22 
    3 double Iq(double q, double radius, double radius_core, double length, double sld, 
     3double Iq(double q, double radius, double thickness, double length, double sld, 
    44        double solvent_sld); 
    5 double Iqxy(double qx, double qy, double radius, double radius_core, double length, double sld, 
     5double Iqxy(double qx, double qy, double radius, double thickness, double length, double sld, 
    66        double solvent_sld, double theta, double phi); 
    77 
    8 #define INVALID(v) (v.radius_core >= v.radius) 
     8//#define INVALID(v) (v.radius_core >= v.radius) 
    99 
    1010// From Igor library 
     
    2727 
    2828static 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) 
    3030{ 
    3131    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)); 
    3535    //Note: lim_{r -> r_c} psi = J0(radius_core*qs) 
    3636    const double psi = (lam1 - gamma_sq*lam2)/(1.0 - gamma_sq); //SRK 10/19/00 
     
    4141 
    4242static 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, 
    4444    double length, double sld, double solvent_sld, double theta, double phi) 
    4545{ 
     
    6565    cos_val = cyl_x*q_x + cyl_y*q_y;// + cyl_z*q_z; 
    6666 
    67     answer = _hollow_cylinder_kernel(q, radius_core, radius, length, cos_val); 
     67    answer = _hollow_cylinder_kernel(q, radius, thickness, length, cos_val); 
    6868 
    69     vol = form_volume(radius, radius_core, length); 
     69    vol = form_volume(radius, thickness, length); 
    7070    answer = hollow_cylinder_scaling(answer, delrho, vol); 
    7171 
     
    7474 
    7575 
    76 double form_volume(double radius, double radius_core, double length) 
     76double form_volume(double radius, double thickness, double length) 
    7777{ 
    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); 
    7979    return(v_shell); 
    8080} 
    8181 
    8282 
    83 double Iq(double q, double radius, double radius_core, double length, 
     83double Iq(double q, double radius, double thickness, double length, 
    8484    double sld, double solvent_sld) 
    8585{ 
     
    9595    for (i=0;i<76;i++) { 
    9696        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); 
    9898        summ += inter; 
    9999    } 
    100100 
    101101    norm = summ*(upper-lower)/2.0; 
    102     volume = form_volume(radius, radius_core, length); 
     102    volume = form_volume(radius, thickness, length); 
    103103    delrho = solvent_sld - sld; 
    104104    answer = hollow_cylinder_scaling(norm, delrho, volume); 
     
    108108 
    109109 
    110 double Iqxy(double qx, double qy, double radius, double radius_core, 
     110double Iqxy(double qx, double qy, double radius, double thickness, 
    111111    double length, double sld, double solvent_sld, double theta, double phi) 
    112112{ 
    113113    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); 
    115115} 
Note: See TracChangeset for help on using the changeset viewer.