1 | r""" |
---|
2 | |
---|
3 | This model provides the form factor, $P(q)$, for a micelle with a spherical |
---|
4 | core and Gaussian polymer chains attached to the surface, thus may be applied |
---|
5 | to block copolymer micelles. To work well the Gaussian chains must be much |
---|
6 | smaller than the core, which is often not the case. Please study the |
---|
7 | reference carefully. |
---|
8 | |
---|
9 | Definition |
---|
10 | ---------- |
---|
11 | |
---|
12 | The 1D scattering intensity for this model is calculated according to |
---|
13 | the equations given by Pedersen (Pedersen, 2000), summarised briefly here. |
---|
14 | |
---|
15 | The micelle core is imagined as $N\_aggreg$ polymer heads, each of volume $v\_core$, |
---|
16 | which then defines a micelle core of $radius\_core$, which is a separate parameter |
---|
17 | even though it could be directly determined. |
---|
18 | The Gaussian random coil tails, of gyration radius $rg$, are imagined uniformly |
---|
19 | distributed around the spherical core, centred at a distance $radius\_core + d\_penetration.rg$ |
---|
20 | from the micelle centre, where $d\_penetration$ is of order unity. |
---|
21 | A volume $v\_corona$ is defined for each coil. |
---|
22 | The model in detail seems to separately parametrise the terms for the shape of I(Q) and the |
---|
23 | relative intensity of each term, so use with caution and check parameters for consistency. |
---|
24 | The spherical core is monodisperse, so it's intensity and the cross terms may have sharp |
---|
25 | oscillations (use q resolution smearing if needs be to help remove them). |
---|
26 | |
---|
27 | .. math:: |
---|
28 | P(q) = N^2\beta^2_s\Phi(qR)^2+N\beta^2_cP_c(q)+2N^2\beta_s\beta_cS_{sc}s_c(q)+N(N-1)\beta_c^2S_{cc}(q) |
---|
29 | |
---|
30 | \beta_s = v\_core(sld\_core - sld\_solvent) |
---|
31 | |
---|
32 | \beta_c = v\_corona(sld\_corona - sld\_solvent) |
---|
33 | |
---|
34 | where $N = n\_aggreg$, and for the spherical core of radius $R$ |
---|
35 | |
---|
36 | .. math:: |
---|
37 | \Phi(qR)= \frac{\sin(qr) - qr\cos(qr)}{(qr)^3} |
---|
38 | |
---|
39 | whilst for the Gaussian coils |
---|
40 | |
---|
41 | .. math:: |
---|
42 | |
---|
43 | P_c(q) &= 2 [\exp(-Z) + Z - 1] / Z^2 |
---|
44 | |
---|
45 | Z &= (q R_g)^2 |
---|
46 | |
---|
47 | The sphere to coil ( core to corona) and coil to coil (corona to corona) cross terms are |
---|
48 | approximated by: |
---|
49 | |
---|
50 | .. math:: |
---|
51 | |
---|
52 | S_{sc}(q)=\Phi(qR)\psi(Z)\frac{sin(q(R+d.R_g))}{q(R+d.R_g)} |
---|
53 | |
---|
54 | S_{cc}(q)=\psi(Z)^2\left[\frac{sin(q(R+d.R_g))}{q(R+d.R_g)} \right ]^2 |
---|
55 | |
---|
56 | \psi(Z)=\frac{[1-exp^{-Z}]}{Z} |
---|
57 | |
---|
58 | Validation |
---|
59 | ---------- |
---|
60 | |
---|
61 | $P(q)$ above is multiplied by $ndensity$, and a units conversion of 10^{-13}, so $scale$ |
---|
62 | is likely 1.0 if the scattering data is in absolute units. This model has not yet been |
---|
63 | independently validated. |
---|
64 | |
---|
65 | |
---|
66 | References |
---|
67 | ---------- |
---|
68 | |
---|
69 | J Pedersen, *J. Appl. Cryst.*, 33 (2000) 637-640 |
---|
70 | |
---|
71 | """ |
---|
72 | |
---|
73 | from numpy import inf |
---|
74 | |
---|
75 | name = "polymer_micelle" |
---|
76 | title = "Polymer micelle model" |
---|
77 | description = """ |
---|
78 | This model provides the form factor, $P(q)$, for a micelle with a spherical |
---|
79 | core and Gaussian polymer chains attached to the surface, thus may be applied |
---|
80 | to block copolymer micelles. To work well the Gaussian chains must be much |
---|
81 | smaller than the core, which is often not the case. Please study the |
---|
82 | reference to Pedersen and full documentation carefully. |
---|
83 | """ |
---|
84 | |
---|
85 | |
---|
86 | category = "shape:sphere" |
---|
87 | |
---|
88 | # pylint: disable=bad-whitespace, line-too-long |
---|
89 | # ["name", "units", default, [lower, upper], "type","description"], |
---|
90 | parameters = [ |
---|
91 | ["ndensity", "1e15/cm^3", 8.94, [0.0, inf], "", "Number density of micelles"], |
---|
92 | ["v_core", "Ang^3", 62624.0, [0.0, inf], "", "Core volume "], |
---|
93 | ["v_corona", "Ang^3", 61940.0, [0.0, inf], "", "Corona volume"], |
---|
94 | ["sld_solvent", "1e-6/Ang^2", 6.4, [0.0, inf], "sld", "Solvent scattering length density"], |
---|
95 | ["sld_core", "1e-6/Ang^2", 0.34, [0.0, inf], "sld", "Core scattering length density"], |
---|
96 | ["sld_corona", "1e-6/Ang^2", 0.8, [0.0, inf], "sld", "Corona scattering length density"], |
---|
97 | ["radius_core", "Ang", 45.0, [0.0, inf], "", "Radius of core ( must be >> rg )"], |
---|
98 | ["rg", "Ang", 20.0, [0.0, inf], "", "Radius of gyration of chains in corona"], |
---|
99 | ["d_penetration", "", 1.0, [-inf, inf], "", "Factor to mimic non-penetration of Gaussian chains"], |
---|
100 | ["n_aggreg", "", 6.0, [-inf, inf], "", "Aggregation number of the micelle"], |
---|
101 | ] |
---|
102 | # pylint: enable=bad-whitespace, line-too-long |
---|
103 | |
---|
104 | single = False |
---|
105 | |
---|
106 | source = ["lib/sas_3j1x_x.c", "polymer_micelle.c"] |
---|
107 | |
---|
108 | demo = dict(scale=1, background=0, |
---|
109 | ndensity=8.94, |
---|
110 | v_core=62624.0, |
---|
111 | v_corona=61940.0, |
---|
112 | sld_solvent=6.4, |
---|
113 | sld_core=0.34, |
---|
114 | sld_corona=0.8, |
---|
115 | radius_core=45.0, |
---|
116 | rg=20.0, |
---|
117 | d_penetration=1.0, |
---|
118 | n_aggreg=6.0) |
---|
119 | |
---|
120 | |
---|
121 | tests = [ |
---|
122 | [{}, 0.01, 15.3532], |
---|
123 | ] |
---|
124 | # RKH 20Mar2016 - need to check whether the core & corona volumes are per |
---|
125 | # monomer ??? and how aggregation number works! |
---|
126 | # renamed from micelle_spherical_core to polymer_micelle, |
---|
127 | # moved from shape-independent to spheres section. |
---|
128 | # Ought to be able to add polydisp to core? And add ability to x by S(Q) ? |
---|