Changes in / [310ddcb:a1c91c2] in sasmodels
- Location:
- sasmodels/models
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/mono_gauss_coil.py
r38d2c97 rbf227cd 8 8 This model strictly describes the scattering from *monodisperse* polymer chains in theta solvents or polymer melts, conditions under which the distances between segments follow a Gaussian distribution. Provided the number of segments is large (ie, high molecular weight polymers) the single-chain form factor P(Q) is that described by Debye (1947). 9 9 10 To describe the scattering from *polydisperse* polymer chains, see the poly_gauss_coilmodel.10 To describe the scattering from *polydisperse* polymer chains, see the To describe the scattering from *monodisperse* polymer chains, see the :ref:`poly_gauss_coil <poly-gauss-coil>` model. 11 11 12 12 Definition 13 13 ---------- 14 14 15 *I(q)* = *scale* |cdot| * P(q)* + *background*15 *I(q)* = *scale* |cdot| *I* \ :sub:`0` |cdot| *P(q)* + *background* 16 16 17 17 where 18 18 19 * scale*= |phi|\ :sub:`poly` |cdot| *V* |cdot| (|rho|\ :sub:`poly` - |rho|\ :sub:`solv`)\ :sup:`2`19 *I*\ :sub:`0` = |phi|\ :sub:`poly` |cdot| *V* |cdot| (|rho|\ :sub:`poly` - |rho|\ :sub:`solv`)\ :sup:`2` 20 20 21 21 *P(q)* = 2 [exp(-Z) + Z - 1] / Z \ :sup:`2` … … 28 28 29 29 Here, |phi|\ :sub:`poly` is the volume fraction of polymer, *V* is the volume of a polymer coil, *M* is the molecular weight of the polymer, *N*\ :sub:`A` is Avogadro's Number, |delta| is the bulk density of the polymer, |rho|\ :sub:`poly` is the sld of the polymer, |rho|\ :sub:`solv` is the sld of the solvent, and *R*\ :sub:`g` is the radius of gyration of the polymer coil. 30 31 .. figure:: img/mono_gauss_coil_1d.jpg32 33 1D plot using the default values.34 30 35 31 The 2D scattering intensity is calculated in the same way as the 1D, but where the *q* vector is redefined as … … 59 55 60 56 # ["name", "units", default, [lower, upper], "type", "description"], 61 parameters = [["radius_gyration", "Ang", 50.0, [0.0, inf], "", "Radius of gyration"]] 57 parameters = [["i_zero", "1/cm", 1.0, [-inf, inf], "", "Intensity at q=0"], 58 ["radius_gyration", "Ang", 50.0, [0.0, inf], "", "Radius of gyration"]] 62 59 63 60 # NB: Scale and Background are implicit parameters on every model … … 68 65 inten = 1.0 69 66 else: 70 inten = 2.0 * (exp(-z) + z - 1.0 ) / (z * z)67 inten = i_zero * 2.0 * (exp(-z) + z - 1.0 ) / (z * z) 71 68 return inten 72 69 Iq.vectorized = True # Iq accepts an array of q values … … 78 75 79 76 demo = dict(scale = 1.0, 77 i_zero = 1.0, 80 78 radius_gyration = 50.0, 81 79 background = 0.0) -
sasmodels/models/poly_gauss_coil.py
rf64b154 rbf227cd 5 5 6 6 7 .._ poly_gauss_coil:8 7 r""" 9 8 This empirical model describes the scattering from *polydisperse* polymer chains in theta solvents or polymer melts, assuming a Schulz-Zimm type molecular weight distribution. 10 9 11 To describe the scattering from *monodisperse* polymer chains, see the mono_gauss_coilmodel.10 To describe the scattering from *monodisperse* polymer chains, see the :ref:`mono_gauss_coil <mono-gauss-coil>` model. 12 11 13 12 Definition 14 13 ---------- 15 14 16 *I(q)* = *scale* |cdot| * P(q)* + *background*15 *I(q)* = *scale* |cdot| *I* \ :sub:`0` |cdot| *P(q)* + *background* 17 16 18 17 where 19 18 20 * scale*= |phi|\ :sub:`poly` |cdot| *V* |cdot| (|rho|\ :sub:`poly` - |rho|\ :sub:`solv`)\ :sup:`2`19 *I*\ :sub:`0` = |phi|\ :sub:`poly` |cdot| *V* |cdot| (|rho|\ :sub:`poly` - |rho|\ :sub:`solv`)\ :sup:`2` 21 20 22 21 *P(q)* = 2 [(1 + UZ)\ :sup:`-1/U` + Z - 1] / [(1 + U) Z\ :sup:`2`] … … 31 30 32 31 Here, |phi|\ :sub:`poly`, is the volume fraction of polymer, *V* is the volume of a polymer coil, *M* is the molecular weight of the polymer, *N*\ :sub:`A` is Avogadro's Number, |delta| is the bulk density of the polymer, |rho|\ :sub:`poly` is the sld of the polymer, |rho|\ :sub:`solv` is the sld of the solvent, and *R*\ :sub:`g` is the radius of gyration of the polymer coil. 33 34 .. figure:: img/poly_gauss_coil_1d.jpg35 36 1D plot using the default values.37 32 38 33 The 2D scattering intensity is calculated in the same way as the 1D, but where the *q* vector is redefined as … … 65 60 66 61 # ["name", "units", default, [lower, upper], "type", "description"], 67 parameters = [["radius_gyration", "Ang", 50.0, [0.0, inf], "", "Radius of gyration"], 62 parameters = [["i_zero", "1/cm", 1.0, [-inf, inf], "", "Intensity at q=0"], 63 ["radius_gyration", "Ang", 50.0, [0.0, inf], "", "Radius of gyration"], 68 64 ["polydispersity", "None", 2.0, [1.0, inf], "", "Polymer Mw/Mn"]] 69 65 … … 77 73 z = ((x * radius_gyration) * (x * radius_gyration)) / (1.0 + 2.0 * u) 78 74 if x == 0: 79 inten = 1.075 inten = i_zero * 1.0 80 76 else: 81 inten = 2.0 * (power((1.0 + u * z),minusoneonu) + z - 1.0 ) / ((1.0 + u) * (z * z))77 inten = i_zero * 2.0 * (power((1.0 + u * z),minusoneonu) + z - 1.0 ) / ((1.0 + u) * (z * z)) 82 78 return inten 83 79 Iq.vectorized = True # Iq accepts an array of q values … … 89 85 90 86 demo = dict(scale = 1.0, 87 i_zero = 1.0, 91 88 radius_gyration = 50.0, 92 89 polydispersity = 2.0,
Note: See TracChangeset
for help on using the changeset viewer.