Changeset 32c160a in sasmodels for sasmodels/models/cylinder_clone.c
- Timestamp:
- Aug 24, 2014 10:55:08 PM (10 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:
- 13d86bc
- Parents:
- 1f21edf
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/cylinder_clone.c
r1f21edf r32c160a 1 /* PARAMETERS2 {3 name: "CylinderModel",4 title: "Cylinder with uniform scattering length density",5 include: [ "lib/J1.c", "lib/gauss76.c", "lib/cylkernel.c"],6 parameters: [7 // [ "name", "units", default, [lower, upper], "type", "description" ],8 [ "sldCyl", "1e-6/Ang^2", 4e-6, [-Infinity,Infinity], "",9 "Cylinder scattering length density" ],10 [ "sldSolv", "1e-6/Ang^2", 1e-6, [-Infinity,Infinity], "",11 "Solvent scattering length density" ],12 [ "radius", "Ang", 20, [0, Infinity], "volume",13 "Cylinder radius" ],14 [ "length", "Ang", 400, [0, Infinity], "volume",15 "Cylinder length" ],16 [ "cyl_theta", "degrees", 60, [-Infinity, Infinity], "orientation",17 "In plane angle" ],18 [ "cyl_phi", "degrees", 60, [-Infinity, Infinity], "orientation",19 "Out of plane angle" ],20 ],21 description: "f(q)= 2*(sldCyl - sldSolv)*V*sin(qLcos(alpha/2))/[qLcos(alpha/2)]*J1(qRsin(alpha/2))/[qRsin(alpha)]",22 }23 PARAMETERS END24 25 DOCUMENTATION26 .. _CylinderModel:27 28 CylinderModel29 =============30 31 This model provides the form factor for a right circular cylinder with uniform32 scattering length density. The form factor is normalized by the particle volume.33 34 For information about polarised and magnetic scattering, click here_.35 36 Definition37 ----------38 39 The output of the 2D scattering intensity function for oriented cylinders is40 given by (Guinier, 1955)41 42 .. math::43 44 P(q,\alpha) = \frac{\text{scale}}{V}f^2(q) + \text{bkg}45 46 where47 48 .. math::49 50 f(q) = 2 (\Delta \rho) V51 \frac{\sin (q L/2 \cos \alpha)}{q L/2 \cos \alpha}52 \frac{J_1 (q r \sin \alpha)}{q r \sin \alpha}53 54 and $\alpha$ is the angle between the axis of the cylinder and $\vec q$, $V$55 is the volume of the cylinder, $L$ is the length of the cylinder, $r$ is the56 radius of the cylinder, and $d\rho$ (contrast) is the scattering length density57 difference between the scatterer and the solvent. $J_1$ is the first order58 Bessel function.59 60 To provide easy access to the orientation of the cylinder, we define the61 axis of the cylinder using two angles $\theta$ and $\phi$. Those angles62 are defined in Figure :num:`figure #CylinderModel-orientation`.63 64 .. _CylinderModel-orientation:65 66 .. figure:: img/image061.JPG67 68 Definition of the angles for oriented cylinders.69 70 .. figure:: img/image062.JPG71 72 Examples of the angles for oriented pp against the detector plane.73 74 NB: The 2nd virial coefficient of the cylinder is calculated based on the75 radius and length values, and used as the effective radius for $S(Q)$76 when $P(Q) \cdot S(Q)$ is applied.77 78 The returned value is scaled to units of |cm^-1| and the parameters of79 the CylinderModel are the following:80 81 %(parameters)s82 83 The output of the 1D scattering intensity function for randomly oriented84 cylinders is then given by85 86 .. math::87 88 P(q) = \frac{\text{scale}}{V}89 \int_0^{\pi/2} f^2(q,\alpha) \sin \alpha d\alpha + \text{background}90 91 The *theta* and *phi* parameters are not used for the 1D output. Our92 implementation of the scattering kernel and the 1D scattering intensity93 use the c-library from NIST.94 95 Validation of the CylinderModel96 -------------------------------97 98 Validation of our code was done by comparing the output of the 1D model99 to the output of the software provided by the NIST (Kline, 2006).100 Figure :num:`figure #CylinderModel-compare` shows a comparison of101 the 1D output of our model and the output of the NIST software.102 103 .. _CylinderModel-compare:104 105 .. figure:: img/image065.JPG106 107 Comparison of the SasView scattering intensity for a cylinder with the108 output of the NIST SANS analysis software.109 The parameters were set to: *Scale* = 1.0, *Radius* = 20 |Ang|,110 *Length* = 400 |Ang|, *Contrast* = 3e-6 |Ang^-2|, and111 *Background* = 0.01 |cm^-1|.112 113 In general, averaging over a distribution of orientations is done by114 evaluating the following115 116 .. math::117 118 P(q) = \int_0^{\pi/2} d\phi119 \int_0^\pi p(\theta, \phi) P_0(q,\alpha) \sin \theta d\theta120 121 122 where $p(\theta,\phi)$ is the probability distribution for the orientation123 and $P_0(q,\alpha)$ is the scattering intensity for the fully oriented124 system. Since we have no other software to compare the implementation of125 the intensity for fully oriented cylinders, we can compare the result of126 averaging our 2D output using a uniform distribution $p(\theta, \phi) = 1.0$.127 Figure :num:`figure #CylinderModel-crosscheck` shows the result of128 such a cross-check.129 130 .. _CylinderModel-crosscheck:131 132 .. figure:: img/image066.JPG133 134 Comparison of the intensity for uniformly distributed cylinders135 calculated from our 2D model and the intensity from the NIST SANS136 analysis software.137 The parameters used were: *Scale* = 1.0, *Radius* = 20 |Ang|,138 *Length* = 400 |Ang|, *Contrast* = 3e-6 |Ang^-2|, and139 *Background* = 0.0 |cm^-1|.140 141 DOCUMENTATION END142 */143 1 real form_volume(real radius, real length); 144 2 real Iq(real q, real sld, real solvent_sld, real radius, real length); 145 3 real Iqxy(real qx, real qy, real sld, real solvent_sld, real radius, real length, real theta, real phi); 146 147 4 148 5 real form_volume(real radius, real length) … … 173 30 return REAL(1.0e8) * form * s * s; 174 31 } 175 176 32 177 33 real Iqxy(real qx, real qy,
Note: See TracChangeset
for help on using the changeset viewer.