Changeset fcb33e4 in sasmodels
- Timestamp:
- Jan 4, 2017 8:09:53 AM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 473a9f1, b7e8b94
- Parents:
- 64614ad
- Location:
- sasmodels/models
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/barbell.py
r0d6e865 rfcb33e4 20 20 .. math:: 21 21 22 I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q )\right>22 I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q,\alpha).sin(\alpha)\right> 23 23 24 where the amplitude $A(q )$ is given as24 where the amplitude $A(q,\alpha)$ with the rod axis at angle $\alpha$ to $q$ is given as 25 25 26 26 .. math:: 27 27 28 28 A(q) =&\ \pi r^2L 29 \frac{\sin\left(\tfrac12 qL\cos\ theta\right)}30 {\tfrac12 qL\cos\ theta}31 \frac{2 J_1(qr\sin\ theta)}{qr\sin\theta} \\29 \frac{\sin\left(\tfrac12 qL\cos\alpha\right)} 30 {\tfrac12 qL\cos\alpha} 31 \frac{2 J_1(qr\sin\alpha)}{qr\sin\alpha} \\ 32 32 &\ + 4 \pi R^3 \int_{-h/R}^1 dt 33 \cos\left[ q\cos\ theta33 \cos\left[ q\cos\alpha 34 34 \left(Rt + h + {\tfrac12} L\right)\right] 35 35 \times (1-t^2) 36 \frac{J_1\left[qR\sin\ theta \left(1-t^2\right)^{1/2}\right]}37 {qR\sin\ theta \left(1-t^2\right)^{1/2}}36 \frac{J_1\left[qR\sin\alpha \left(1-t^2\right)^{1/2}\right]} 37 {qR\sin\alpha \left(1-t^2\right)^{1/2}} 38 38 39 39 The $\left<\ldots\right>$ brackets denote an average of the structure over 40 all orientations. $\left<A^2(q )\right>$ is then the form factor, $P(q)$.40 all orientations. $\left<A^2(q,\alpha)\right>$ is then the form factor, $P(q)$. 41 41 The scale factor is equivalent to the volume fraction of cylinders, each of 42 42 volume, $V$. Contrast $\Delta\rho$ is the difference of scattering length … … 85 85 * **Author:** NIST IGOR/DANSE **Date:** pre 2010 86 86 * **Last Modified by:** Paul Butler **Date:** March 20, 2016 87 * **Last Reviewed by:** Paul Butler **Date:** March 20, 201687 * **Last Reviewed by:** Richard Heenan **Date:** January 4, 2017 88 88 """ 89 89 from numpy import inf -
sasmodels/models/capped_cylinder.py
r0d6e865 rfcb33e4 21 21 .. math:: 22 22 23 I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q )\right>23 I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q,\alpha).sin(\alpha)\right> 24 24 25 where the amplitude $A(q )$ is given as25 where the amplitude $A(q,\alpha)$ with the rod axis at angle $\alpha$ to $q$ is given as 26 26 27 27 .. math:: 28 28 29 29 A(q) =&\ \pi r^2L 30 \frac{\sin\left(\tfrac12 qL\cos\ theta\right)}31 {\tfrac12 qL\cos\ theta}32 \frac{2 J_1(qr\sin\ theta)}{qr\sin\theta} \\30 \frac{\sin\left(\tfrac12 qL\cos\alpha\right)} 31 {\tfrac12 qL\cos\alpha} 32 \frac{2 J_1(qr\sin\alpha)}{qr\sin\alpha} \\ 33 33 &\ + 4 \pi R^3 \int_{-h/R}^1 dt 34 \cos\left[ q\cos\ theta34 \cos\left[ q\cos\alpha 35 35 \left(Rt + h + {\tfrac12} L\right)\right] 36 36 \times (1-t^2) 37 \frac{J_1\left[qR\sin\ theta \left(1-t^2\right)^{1/2}\right]}38 {qR\sin\ theta \left(1-t^2\right)^{1/2}}37 \frac{J_1\left[qR\sin\alpha \left(1-t^2\right)^{1/2}\right]} 38 {qR\sin\alpha \left(1-t^2\right)^{1/2}} 39 39 40 40 The $\left<\ldots\right>$ brackets denote an average of the structure over … … 88 88 * **Author:** NIST IGOR/DANSE **Date:** pre 2010 89 89 * **Last Modified by:** Paul Butler **Date:** September 30, 2016 90 * **Last Reviewed by:** Richard Heenan **Date:** March 19, 2016 90 * **Last Reviewed by:** Richard Heenan **Date:** January 4, 2017 91 91 92 """ 92 93 from numpy import inf -
sasmodels/models/core_shell_bicelle.py
ra23639a rfcb33e4 41 41 42 42 I(Q,\alpha) = \frac{\text{scale}}{V_t} \cdot 43 F(Q,\alpha)^2 + \text{background}43 F(Q,\alpha)^2.sin(\alpha) + \text{background} 44 44 45 45 where … … 85 85 * **Author:** NIST IGOR/DANSE **Date:** pre 2010 86 86 * **Last Modified by:** Paul Butler **Date:** September 30, 2016 87 * **Last Reviewed by:** Richard Heenan **Date:** October 5, 201687 * **Last Reviewed by:** Richard Heenan **Date:** January 4, 2017 88 88 """ 89 89 -
sasmodels/models/core_shell_cylinder.py
r755ecc2 rfcb33e4 9 9 .. math:: 10 10 11 I(q,\alpha) = \frac{\text{scale}}{V_s} F^2(q ) + \text{background}11 I(q,\alpha) = \frac{\text{scale}}{V_s} F^2(q,\alpha).sin(\alpha) + \text{background} 12 12 13 13 where … … 15 15 .. math:: 16 16 17 F(q ) = &\ (\rho_c - \rho_s) V_c17 F(q,\alpha) = &\ (\rho_c - \rho_s) V_c 18 18 \frac{\sin \left( q \tfrac12 L\cos\alpha \right)} 19 19 {q \tfrac12 L\cos\alpha} -
sasmodels/models/core_shell_ellipsoid.py
r73e08ae rfcb33e4 166 166 qy = q*sin(phi) 167 167 # After redefinition of angles find new reasonable values for unit test 168 #tests = [169 ## Accuracy tests based on content in test/utest_coreshellellipsoidXTmodel.py170 #[{'radius_equat_core': 200.0,171 #'x_core': 0.1,172 #'thick_shell': 50.0,173 #'x_polar_shell': 0.2,174 #'sld_core': 2.0,175 #'sld_shell': 1.0,176 #'sld_solvent': 6.3,177 #'background': 0.001,178 #'scale': 1.0,179 #}, 1.0, 0.00189402],168 tests = [ 169 # Accuracy tests based on content in test/utest_coreshellellipsoidXTmodel.py 170 [{'radius_equat_core': 200.0, 171 'x_core': 0.1, 172 'thick_shell': 50.0, 173 'x_polar_shell': 0.2, 174 'sld_core': 2.0, 175 'sld_shell': 1.0, 176 'sld_solvent': 6.3, 177 'background': 0.001, 178 'scale': 1.0, 179 }, 1.0, 0.00189402], 180 180 181 181 # Additional tests with larger range of parameters 182 # [{'background': 0.01}, 0.1, 11.6915], 183 184 # [{'radius_equat_core': 20.0, 185 # 'x_core': 200.0, 186 # 'thick_shell': 54.0, 187 # 'x_polar_shell': 3.0, 188 # 'sld_core': 20.0, 189 # 'sld_shell': 10.0, 190 # 'sld_solvent': 6.0, 191 # 'background': 0.0, 192 # 'scale': 1.0, 193 # }, 0.01, 8688.53], 194 195 # [{'background': 0.001}, (0.4, 0.5), 0.00690673], 196 197 # [{'radius_equat_core': 20.0, 198 # 'x_core': 200.0, 199 # 'thick_shell': 54.0, 200 # 'x_polar_shell': 3.0, 201 # 'sld_core': 20.0, 202 # 'sld_shell': 10.0, 203 # 'sld_solvent': 6.0, 204 # 'background': 0.01, 205 # 'scale': 0.01, 206 # }, (qx, qy), 0.0100002], 207 # ] 182 [{'background': 0.01}, 0.1, 11.6915], 183 184 [{'radius_equat_core': 20.0, 185 'x_core': 200.0, 186 'thick_shell': 54.0, 187 'x_polar_shell': 3.0, 188 'sld_core': 20.0, 189 'sld_shell': 10.0, 190 'sld_solvent': 6.0, 191 'background': 0.0, 192 'scale': 1.0, 193 }, 0.01, 8688.53], 194 195 [{'background': 0.001}, (0.4, 0.5), 0.00690673], 196 197 [{'radius_equat_core': 20.0, 198 'x_core': 200.0, 199 'thick_shell': 54.0, 200 'x_polar_shell': 3.0, 201 'sld_core': 20.0, 202 'sld_shell': 10.0, 203 'sld_solvent': 6.0, 204 'background': 0.01, 205 'scale': 0.01, 206 # assuming theta and phi zero here? 207 }, (qx, qy), 0.01000025], 208 ] -
sasmodels/models/cylinder.py
r4cdd0cc rfcb33e4 2 2 # Note: model title and parameter table are inserted automatically 3 3 r""" 4 The form factor is normalized by the particle volume V = \piR^2L. 4 5 5 For information about polarised and magnetic scattering, see 6 6 the :ref:`magnetism` documentation. … … 14 14 .. math:: 15 15 16 P(q,\alpha) = \frac{\text{scale}}{V} F^2(q,\alpha) + \text{background}16 P(q,\alpha) = \frac{\text{scale}}{V} F^2(q,\alpha).sin(\alpha) + \text{background} 17 17 18 18 where … … 25 25 \frac{J_1 \left(q R \sin \alpha\right)}{q R \sin \alpha} 26 26 27 and $\alpha$ is the angle between the axis of the cylinder and $\vec q$, $V $27 and $\alpha$ is the angle between the axis of the cylinder and $\vec q$, $V =\pi R^2L$ 28 28 is the volume of the cylinder, $L$ is the length of the cylinder, $R$ is the 29 29 radius of the cylinder, and $\Delta\rho$ (contrast) is the scattering length … … 35 35 .. math:: 36 36 37 F^2(q)=\int_{0}^{\pi/2}{F^2(q,\ theta)\sin(\theta)d\theta}37 F^2(q)=\int_{0}^{\pi/2}{F^2(q,\alpha)\sin(\alpha)d\alpha}=\int_{0}^{1}{F^2(q,u)du} 38 38 39 39 40 To provide easy access to the orientation of the cylinder, we define the 41 axis of the cylinder using two angles $\theta$ and $\phi$. Those angles 40 Numerical integration is simplified by a change of variable to $u = cos(\alpha)$ with 41 $sin(\alpha)=\sqrt{1-u^2}$. 42 43 The output of the 1D scattering intensity function for randomly oriented 44 cylinders is thus given by 45 46 .. math:: 47 48 P(q) = \frac{\text{scale}}{V} 49 \int_0^{\pi/2} F^2(q,\alpha) \sin \alpha\ d\alpha + \text{background} 50 51 52 NB: The 2nd virial coefficient of the cylinder is calculated based on the 53 radius and length values, and used as the effective radius for $S(q)$ 54 when $P(q) \cdot S(q)$ is applied. 55 56 For oriented cylinders, we define the direction of the 57 axis of the cylinder using two angles $\theta$ (note this is not the 58 same as the scattering angle used in q) and $\phi$. Those angles 42 59 are defined in :numref:`cylinder-angle-definition` . 43 60 … … 48 65 Definition of the angles for oriented cylinders. 49 66 50 51 NB: The 2nd virial coefficient of the cylinder is calculated based on the 52 radius and length values, and used as the effective radius for $S(q)$ 53 when $P(q) \cdot S(q)$ is applied. 54 55 The output of the 1D scattering intensity function for randomly oriented 56 cylinders is then given by 57 58 .. math:: 59 60 P(q) = \frac{\text{scale}}{V} 61 \int_0^{\pi/2} F^2(q,\alpha) \sin \alpha\ d\alpha + \text{background} 62 63 The $\theta$ and $\phi$ parameters are not used for the 1D output. 67 The $\theta$ and $\phi$ parameters only appear in the model when fitting 2d data. 64 68 65 69 Validation … … 74 78 75 79 P(q) = \int_0^{\pi/2} d\phi 76 \int_0^\pi p(\ alpha) P_0(q,\alpha) \sin \alpha\ d\alpha80 \int_0^\pi p(\theta) P_0(q,\theta) \sin \theta\ d\theta 77 81 78 82 79 83 where $p(\theta,\phi) = 1$ is the probability distribution for the orientation 80 and $P_0(q,\ alpha)$ is the scattering intensity for the fully oriented84 and $P_0(q,\theta)$ is the scattering intensity for the fully oriented 81 85 system, and then comparing to the 1D result. 82 86 … … 145 149 146 150 qx, qy = 0.2 * np.cos(2.5), 0.2 * np.sin(2.5) 147 # After redefinition of angles, find new tests values 148 #tests = [[{}, 0.2, 0.042761386790780453], 149 # [{}, [0.2], [0.042761386790780453]], 150 # [{'theta':10.0, 'phi':10.0}, (qx, qy), 0.03514647218513852], 151 # [{'theta':10.0, 'phi':10.0}, [(qx, qy)], [0.03514647218513852]], 152 # ] 151 # After redefinition of angles, find new tests values. Was 10 10 in old coords 152 tests = [[{}, 0.2, 0.042761386790780453], 153 [{}, [0.2], [0.042761386790780453]], 154 # expect new [{'theta':80.1534480601659, 'phi':10.1510817110481}, (qx, qy), 0.03514647218513852], 155 # [{'theta':80.1534480601659, 'phi':10.1510817110481}, [(qx, qy)], [0.03514647218513852]], 156 # old, but calcs .0344268 [{'theta':10.0, 'phi':10.0}, (qx, qy), 0.03514647218513852], 157 # [{'theta':10.0, 'phi':10.0}, [(qx, qy)], [0.03514647218513852]], 158 ] 153 159 del qx, qy # not necessary to delete, but cleaner 154 160 # ADDED by: RKH ON: 18Mar2016 renamed sld's etc -
sasmodels/models/elliptical_cylinder.py
ra807206 rfcb33e4 20 20 21 21 I(\vec q)=\frac{1}{V_\text{cyl}}\int{d\psi}\int{d\phi}\int{ 22 p(\theta,\phi,\psi)F^2(\vec q,\alpha,\psi)\sin(\ theta)d\theta}22 p(\theta,\phi,\psi)F^2(\vec q,\alpha,\psi)\sin(\alpha)d\alpha} 23 23 24 24 with the functions … … 26 26 .. math:: 27 27 28 F( \vecq,\alpha,\psi) = 2\frac{J_1(a)\sin(b)}{ab}28 F(q,\alpha,\psi) = 2\frac{J_1(a)\sin(b)}{ab} 29 29 30 30 where … … 32 32 .. math:: 33 33 34 a &= \vec q\sin(\alpha)\left[ 35 r^2_\text{major}\sin^2(\psi)+r^2_\text{minor}\cos(\psi) \right]^{1/2} 34 a = qr'\sin(\alpha) 35 36 b = q\frac{L}{2}\cos(\alpha) 37 38 r'=\frac{r_{minor}}{\sqrt{2}}\sqrt{(1+\nu^{2}) + (1-\nu^{2})cos(\psi)} 36 39 37 b &= \vec q\frac{L}{2}\cos(\alpha)38 40 39 and the angle $\ Psi$ is defined as the orientation of the major axis of the41 and the angle $\psi$ is defined as the orientation of the major axis of the 40 42 ellipse with respect to the vector $\vec q$. The angle $\alpha$ is the angle 41 43 between the axis of the cylinder and $\vec q$. … … 95 97 96 98 L A Feigin and D I Svergun, *Structure Analysis by Small-Angle X-Ray and 97 Neutron Scattering*, Plenum, New York, (1987) 99 Neutron Scattering*, Plenum, New York, (1987) [see table 3.4] 100 101 Authorship and Verification 102 ---------------------------- 103 104 * **Author:** 105 * **Last Modified by:** 106 * **Last Reviewed by:** Richard Heenan - corrected equation in docs **Date:** December 21, 2016 107 98 108 """ 99 109
Note: See TracChangeset
for help on using the changeset viewer.