Changes in / [0c2da4b:acfb094] in sasmodels
- Location:
- sasmodels
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/conversion_table.py
rd3e3f756 rbb584b3 549 549 "radius": "core_radius", 550 550 "sld_solvent": "core_sld", 551 "n_ shells": "n_pairs",551 "n_pairs": "n_pairs", 552 552 "thick_shell": "s_thickness", 553 553 "sld": "shell_sld", -
sasmodels/models/multilayer_vesicle.c
rec1d4bc r925ad6e 1 static double 2 form_volume(double radius, 3 double thick_shell, 4 double thick_solvent, 5 double fp_n_shells) 6 { 7 int n_shells = (int)(fp_n_shells + 0.5); 8 double R_N = radius + n_shells*(thick_shell+thick_solvent) - thick_solvent; 9 return M_4PI_3*cube(R_N); 10 } 11 12 static double 13 multilayer_vesicle_kernel(double q, 1 static 2 double multilayer_vesicle_kernel(double q, 14 3 double volfraction, 15 4 double radius, … … 18 7 double sld_solvent, 19 8 double sld, 20 int n_shells)9 double n_pairs) 21 10 { 22 11 //calculate with a loop, two shells at a time … … 40 29 41 30 //do 2 layers at a time 42 ii ++;31 ii += 1; 43 32 44 } while(ii <= n_ shells-1); //change to make 0 < n_shells < 2 correspond to33 } while(ii <= n_pairs-1); //change to make 0 < n_pairs < 2 correspond to 45 34 //unilamellar vesicles (C. Glinka, 11/24/03) 46 35 47 return 1.0e-4*volfraction*fval*fval; // Volume normalization happens in caller 36 fval *= volfraction*1.0e-4*fval/voli; 37 38 return(fval); 48 39 } 49 40 50 static double51 Iq(double q,41 static 42 double Iq(double q, 52 43 double volfraction, 53 44 double radius, … … 56 47 double sld_solvent, 57 48 double sld, 58 double fp_n_shells)49 double n_pairs) 59 50 { 60 int n_shells = (int)(fp_n_shells + 0.5);61 51 return multilayer_vesicle_kernel(q, 62 52 volfraction, … … 66 56 sld_solvent, 67 57 sld, 68 n_ shells);58 n_pairs); 69 59 } 70 60 -
sasmodels/models/multilayer_vesicle.py
rec1d4bc r925ad6e 20 20 .. math:: 21 21 22 P(q) = \ text{scale}\frac{\phi}{V(R_N)} F^2(q) + \text{background}22 P(q) = \frac{\text{scale.volfraction}}{V_t} F^2(q) + \text{background} 23 23 24 24 where … … 26 26 .. math:: 27 27 28 F(q) = (\rho_ \text{shell}-\rho_\text{solv}) \sum_{i=1}^{N} \left[29 3V( r_i)\frac{\sin(qr_i) - qr_i\cos(qr_i)}{(qr_i)^3}30 - 3V(R_i)\frac{\sin(qR_i) - qR_i\cos(qR_i)}{(qR_i)^3}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} 31 31 \right] 32 32 33 for34 33 35 .. math:: 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. 36 39 37 r_i &= r_c + (i-1)(t_s + t_w) && \text{ solvent radius before shell } i \\38 R_i &= r_i + t_s && \text{ shell radius for shell } i39 40 $\phi$ is the volume fraction of particles, $V(r)$ is the volume of a sphere41 of radius $r$, $r_c$ is the radius of the core, $t_s$ is the thickness of42 the shell, $t_w$ is the thickness of the solvent layer between the shells,43 $\rho_\text{shell}$ is the scattering length density of a shell, and44 $\rho_\text{solv}$ is the scattering length density of the solvent.45 40 46 41 The 2D scattering intensity is the same as 1D, regardless of the orientation … … 51 46 q = \sqrt{q_x^2 + q_y^2} 52 47 53 The outer-most shell radius $R_N$ is used as the effective radius 54 for $P(Q)$ when $P(Q) * S(Q)$ is applied. 48 49 The outer most radius 50 51 $radius + n\_pairs * thick\_shell + (n\_pairs- 1) * thick\_solvent$ 52 53 is used for both the volume fraction normalization and for the 54 effective radius for *S(Q)* when $P(Q) * S(Q)$ is applied. 55 55 56 56 For information about polarised and magnetic scattering, see … … 89 89 sld_solvent: solvent scattering length density 90 90 sld: shell scattering length density 91 n_ shells:number of "shell plus solvent" layer pairs91 n_pairs:number of "shell plus solvent" layer pairs 92 92 background: incoherent background 93 93 """ … … 98 98 parameters = [ 99 99 ["volfraction", "", 0.05, [0.0, 1], "", "volume fraction of vesicles"], 100 ["radius", "Ang", 60.0, [0.0, inf], " volume", "radius of solvent filled core"],101 ["thick_shell", "Ang", 10.0, [0.0, inf], " volume", "thickness of one shell"],102 ["thick_solvent", "Ang", 10.0, [0.0, inf], " volume", "solvent thickness between shells"],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"], 103 103 ["sld_solvent", "1e-6/Ang^2", 6.4, [-inf, inf], "sld", "solvent scattering length density"], 104 104 ["sld", "1e-6/Ang^2", 0.4, [-inf, inf], "sld", "Shell scattering length density"], 105 ["n_ shells", "", 2.0, [1.0, inf], "volume", "Number of shell plus solvent layer pairs"],105 ["n_pairs", "", 2.0, [1.0, inf], "", "Number of shell plus solvent layer pairs"], 106 106 ] 107 107 # pylint: enable=bad-whitespace, line-too-long … … 109 109 source = ["lib/sas_3j1x_x.c", "multilayer_vesicle.c"] 110 110 111 def ER(radius, thick_shell, thick_solvent, n_shells): 112 n_shells = int(n_shells+0.5) 113 return radius + n_shells * (thick_shell + thick_solvent) - thick_solvent 111 polydispersity = ["radius", "n_pairs"] 114 112 115 113 demo = dict(scale=1, background=0, … … 120 118 sld_solvent=6.4, 121 119 sld=0.4, 122 n_ shells=2.0)120 n_pairs=2.0) 123 121 124 122 tests = [ … … 129 127 'sld_solvent': 6.4, 130 128 'sld': 0.4, 131 'n_ shells': 2.0,129 'n_pairs': 2.0, 132 130 'scale': 1.0, 133 131 'background': 0.001, … … 140 138 'sld_solvent': 6.4, 141 139 'sld': 0.4, 142 'n_ shells': 2.0,140 'n_pairs': 2.0, 143 141 'scale': 1.0, 144 142 'background': 0.001,
Note: See TracChangeset
for help on using the changeset viewer.