Changeset 4c8f9cd in sasmodels
- Timestamp:
- Feb 20, 2015 9:06:18 AM (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:
- 5ca9762, f1ecfa92
- Parents:
- 2a74b99
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/gaussian_peak.py
r2eaae42 r4c8f9cd 1 1 r""" 2 For information about polarised and magnetic scattering, click here_. 2 This model describes a Gaussian shaped peak on a flat background 3 3 4 .. _here: polar_mag_help.html4 .. image:: img/image198.PNG 5 5 6 Definition 7 ---------- 6 with the peak having height of *I0* centered at *q0* and having a standard deviation of *B*. The FWHM (full-width 7 half-maximum) is 2.354 B. 8 8 9 The 1D scattering intensity is calculated in the following way (Guinier, 1955) 9 For 2D data: The 2D scattering intensity is calculated in the same way as 1D, where the *q* vector is defined as 10 10 11 .. math::11 .. image:: img/image040.gif 12 12 13 I(Q) = \frac{\text{scale}}{V} \cdot \left[ \ 14 3V(\Delta\rho) \cdot \frac{\sin(QR) - QR\cos(QR))}{(QR)^3} \ 15 \right]^2 + \text{background} 13 .. image:: img/image199.jpg 16 14 17 where *scale* is a volume fraction, $V$ is the volume of the scatterer, 18 $R$ is the radius of the sphere, *background* is the background level and 19 *sld* and *solvent_sld* are the scattering length densities (SLDs) of the 20 scatterer and the solvent respectively. 15 *Figure. 1D plot using the default values (w/500 data points).* 21 16 22 Note that if your data is in absolute scale, the *scale* should represent 23 the volume fraction (which is unitless) if you have a good fit. If not, 24 it should represent the volume fraction times a factor (by which your data 25 might need to be rescaled). 17 REFERENCE 26 18 27 The 2D scattering intensity is the same as above, regardless of the 28 orientation of $\vec q$. 29 30 Our model uses the form factor calculations as defined in the IGOR 31 package provided by the NIST Center for Neutron Research (Kline, 2006). 32 33 Validation 34 ---------- 35 36 Validation of our code was done by comparing the output of the 1D model 37 to the output of the software provided by the NIST (Kline, 2006). 38 Figure :num:`figure #sphere-comparison` shows a comparison of the output 39 of our model and the output of the NIST software. 40 41 .. _sphere-comparison: 42 43 .. figure:: img/sphere_comparison.jpg 44 45 Comparison of the DANSE scattering intensity for a sphere with the 46 output of the NIST SANS analysis software. The parameters were set to: 47 *scale* = 1.0, *radius* = 60 |Ang|, *contrast* = 1e-6 |Ang^-2|, and 48 *background* = 0.01 |cm^-1|. 49 50 51 Reference 52 --------- 53 54 A Guinier and G. Fournet, *Small-Angle Scattering of X-Rays*, 55 John Wiley and Sons, New York, (1955) 56 57 *2013/09/09 and 2014/01/06 - Description reviewed by S King and P Parker.* 19 None. 58 20 """ 59 21 60 22 from numpy import pi, inf 61 23 62 name = "sphere" 63 title = "Spheres with uniform scattering length density" 64 description = """\ 65 P(q)=(scale/V)*[3V(sld-solvent_sld)*(sin(qR)-qRcos(qR)) 66 /(qR)^3]^2 + background 67 R: radius of sphere 68 V: The volume of the scatter 69 sld: the SLD of the sphere 70 solvent_sld: the SLD of the solvent 24 name = "gaussian_peak" 25 title = "Gaussian shaped peak" 26 description = """ 27 Model describes a Gaussian shaped peak including a flat background 28 Provide F(q) = scale*exp( -1/2 *[(q-q0)/B]^2 )+ background 71 29 """ 72 30 … … 74 32 # [ "name", "units", default, [lower, upper], "type", 75 33 # "description" ], 76 [ "sld", "1e-6/Ang^2", 1, [-inf,inf], "", 77 "Layer scattering length density" ], 78 [ "solvent_sld", "1e-6/Ang^2", 6, [-inf,inf], "", 79 "Solvent scattering length density" ], 80 [ "radius", "Ang", 50, [0, inf], "volume", 81 "Sphere radius" ], 34 [ "q0", "Ang^-1", 0.05, [-inf,inf], "", 35 "Peak position" ], 36 [ "sigma", "Ang^-1", 0.005, [-inf,inf], "", 37 "Peak width (standard deviation)" ], 82 38 ] 83 39 … … 86 42 # This should perhaps be volume normalized? 87 43 form_volume = """ 88 return 1 .333333333333333*M_PI*radius*radius*radius;44 return 1; 89 45 """ 90 46 91 47 Iq = """ 92 const double qr = q*radius; 93 double sn, cn; 94 SINCOS(qr, sn, cn); 95 const double bes = qr==0.0 ? 1.0 : 3.0*(sn-qr*cn)/(qr*qr*qr); 96 const double fq = bes * (sld - solvent_sld) * form_volume(radius); 97 return 1.0e-4*fq*fq; 48 return exp(-0.5*pow((q - q0])/sigma,2.0)); 98 49 """ 99 50 … … 102 53 // never called since no orientation or magnetic parameters. 103 54 //return -1.0; 104 return Iq(sqrt(qx*qx + qy*qy), sld, solvent_sld, radius);55 return Iq(sqrt(qx*qx + qy*qy), q0, sigma); 105 56 """ 106 57 107 def ER(radius):108 return radius109 58 110 59 # VR defaults to 1.0 … … 112 61 demo = dict( 113 62 scale=1, background=0, 114 sld=6, solvent_sld=1, 115 radius=120, 116 radius_pd=.2, radius_pd_n=45, 63 q0 = 0.05, sigma = 0.005, 117 64 ) 118 oldname = " SphereModel"119 oldpars = dict(s ld='sldSph', solvent_sld='sldSolv', radius='radius')65 oldname = "PeakGaussModel" 66 oldpars = dict(sigma='B')
Note: See TracChangeset
for help on using the changeset viewer.