Changes in sasmodels/models/multilayer_vesicle.py [925ad6e:68f45cb] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/multilayer_vesicle.py
r925ad6e r68f45cb 5 5 This model is a trivial extension of the core_shell_sphere function to include 6 6 *N* shells where the core is filled with solvent and the shells are interleaved 7 with layers of solvent. For *N = 1*, this returns the same as the vesicle model,7 with layers of solvent. For $N = 1$, this returns the same as the vesicle model, 8 8 except for the normalisation, which here is to outermost volume. 9 9 The shell thicknessess and SLD are constant for all shells as expected for … … 19 19 20 20 .. math:: 21 22 P(q) = \frac{\text{scale.volfraction}}{V_t} F^2(q) + \text{background} 21 P(q) = \text{scale} \cdot \frac{\phi}{V(R_N)} F^2(q) + \text{background} 23 22 24 23 where 25 24 26 25 .. math:: 27 28 F(q) = (\rho_{shell}-\rho_{solv}) \sum_{i=1}^{n\_pairs} \left[ 29 3V(R_i)\frac{\sin(qR_i)-qR_i\cos(qR_i)}{(qR_i)^3} \\ 30 - 3V(R_i+t_s)\frac{\sin(q(R_i+t_s))-q(R_i+t_s)\cos(q(R_i+t_s))}{(q(R_i+t_s))^3} 26 F(q) = (\rho_\text{shell}-\rho_\text{solv}) \sum_{i=1}^{N} \left[ 27 3V(r_i)\frac{\sin(qr_i) - qr_i\cos(qr_i)}{(qr_i)^3} 28 - 3V(R_i)\frac{\sin(qR_i) - qR_i\cos(qR_i)}{(qR_i)^3} 31 29 \right] 32 30 31 for 33 32 34 where $R_i = r_c + (i-1)(t_s + t_w)$ 35 36 where $V_t$ is the volume of the whole particle, $V(R)$ is the volume of a sphere 37 of radius $R$, $r_c$ is the radius of the core, $\rho_{shell}$ is the scattering length 38 density of a shell, $\rho_{solv}$ is the scattering length density of the solvent. 33 .. math:: 39 34 35 r_i &= r_c + (i-1)(t_s + t_w) && \text{ solvent radius before shell } i \\ 36 R_i &= r_i + t_s && \text{ shell radius for shell } i 37 38 $\phi$ is the volume fraction of particles, $V(r)$ is the volume of a sphere 39 of radius $r$, $r_c$ is the radius of the core, $t_s$ is the thickness of 40 the shell, $t_w$ is the thickness of the solvent layer between the shells, 41 $\rho_\text{shell}$ is the scattering length density of a shell, and 42 $\rho_\text{solv}$ is the scattering length density of the solvent. 43 44 The outer-most shell radius $R_N$ is used as the effective radius 45 for $P(Q)$ when $P(Q) * S(Q)$ is applied. 46 47 For mixed systems in which some vesicles have 1 shell, some have 2, 48 etc., use polydispersity on $N$ to model the data. For example, 49 create a file such as *shell_dist.txt* containing the relative portion 50 of each vesicle size:: 51 52 1 20 53 2 4 54 3 1 55 56 Turn on polydispersity and select an array distribution for the *n_shells* 57 parameter. Choose the above *shell_dist.txt* file, and the model will be 58 computed with 80% 1-shell vesicles, 16% 2-shell vesicles and 4% 59 3-shell vesicles. 40 60 41 61 The 2D scattering intensity is the same as 1D, regardless of the orientation … … 45 65 46 66 q = \sqrt{q_x^2 + q_y^2} 47 48 49 The outer most radius50 51 $radius + n\_pairs * thick\_shell + (n\_pairs- 1) * thick\_solvent$52 53 is used for both the volume fraction normalization and for the54 effective radius for *S(Q)* when $P(Q) * S(Q)$ is applied.55 67 56 68 For information about polarised and magnetic scattering, see … … 70 82 **Author:** NIST IGOR/DANSE **on:** pre 2010 71 83 72 **Last Modified by:** Piotr Rozyczko **on:** Feb 24, 201684 **Last Modified by:** Piotr Rozyczko **on:** Feb 24, 2016 73 85 74 86 **Last Reviewed by:** Paul Butler **on:** March 20, 2016 … … 89 101 sld_solvent: solvent scattering length density 90 102 sld: shell scattering length density 91 n_ pairs:number of "shell plus solvent" layer pairs103 n_shells:number of "shell plus solvent" layer pairs 92 104 background: incoherent background 93 105 """ … … 98 110 parameters = [ 99 111 ["volfraction", "", 0.05, [0.0, 1], "", "volume fraction of vesicles"], 100 ["radius", "Ang", 60.0, [0.0, inf], " ", "radius of solvent filled core"],101 ["thick_shell", "Ang", 10.0, [0.0, inf], " ", "thickness of one shell"],102 ["thick_solvent", "Ang", 10.0, [0.0, inf], " ", "solvent thickness between shells"],112 ["radius", "Ang", 60.0, [0.0, inf], "volume", "radius of solvent filled core"], 113 ["thick_shell", "Ang", 10.0, [0.0, inf], "volume", "thickness of one shell"], 114 ["thick_solvent", "Ang", 10.0, [0.0, inf], "volume", "solvent thickness between shells"], 103 115 ["sld_solvent", "1e-6/Ang^2", 6.4, [-inf, inf], "sld", "solvent scattering length density"], 104 116 ["sld", "1e-6/Ang^2", 0.4, [-inf, inf], "sld", "Shell scattering length density"], 105 ["n_ pairs", "", 2.0, [1.0, inf], "", "Number of shell plus solvent layer pairs"],117 ["n_shells", "", 2.0, [1.0, inf], "volume", "Number of shell plus solvent layer pairs"], 106 118 ] 107 119 # pylint: enable=bad-whitespace, line-too-long 108 120 121 # TODO: proposed syntax for specifying which parameters can be polydisperse 122 #polydispersity = ["radius", "thick_shell"] 123 109 124 source = ["lib/sas_3j1x_x.c", "multilayer_vesicle.c"] 110 125 111 polydispersity = ["radius", "n_pairs"] 126 def ER(radius, thick_shell, thick_solvent, n_shells): 127 n_shells = int(n_shells+0.5) 128 return radius + n_shells * (thick_shell + thick_solvent) - thick_solvent 112 129 113 130 demo = dict(scale=1, background=0, … … 118 135 sld_solvent=6.4, 119 136 sld=0.4, 120 n_ pairs=2.0)137 n_shells=2.0) 121 138 122 139 tests = [ … … 127 144 'sld_solvent': 6.4, 128 145 'sld': 0.4, 129 'n_ pairs': 2.0,146 'n_shells': 2.0, 130 147 'scale': 1.0, 131 148 'background': 0.001, … … 138 155 'sld_solvent': 6.4, 139 156 'sld': 0.4, 140 'n_ pairs': 2.0,157 'n_shells': 2.0, 141 158 'scale': 1.0, 142 159 'background': 0.001,
Note: See TracChangeset
for help on using the changeset viewer.