1 | r""" |
---|
2 | Polydisperse spherical core-shell microgel particles with fuzzy interfaces. |
---|
3 | ==================== |
---|
4 | |
---|
5 | This model provides the form factor, $P(q)$, for a spherical particle with |
---|
6 | core-shell structure and fuzzy interfaces, as follows. A Lorentzian peak is |
---|
7 | used to account for intra-particle composition fluctuations. |
---|
8 | |
---|
9 | .. math:: |
---|
10 | P(q) = \bigl[(\rho _{shell} - \rho _{solv}) |
---|
11 | \Phi _{{shell}_{out}}(q, R_{{shell}_{out}}, s_{{shell}_{out}}) |
---|
12 | + (\rho _{core} - \rho _{solv})\Phi _{core}(q, R_{core}, s_{core}) |
---|
13 | - (\rho _{shell} - \rho _{solv})\Phi _{{shell}_{in}}(q, R_{{shell}_{in}}, s_{{shell}_{in}})\bigr]^2 |
---|
14 | + \left(\frac{L_0}{1 + q^2\xi _{intra}^2}\right) |
---|
15 | |
---|
16 | where $\Phi _k$ is the radial density profile of component $k$, given by: |
---|
17 | |
---|
18 | .. math:: |
---|
19 | \begin{align*} |
---|
20 | \Phi _k(q,R_k,s_k) = \frac{4\pi }{q^4s_k^2} \biggl((R_k+s_k)cos[q(R_k+s_k)] |
---|
21 | + (R_k-s_k)cos[q(R_k-s_k)] - 3sin[q(R_k+s_k)]& \\ |
---|
22 | - 3sin[q(R_k-s_k)] + \frac{2cos(qR_k)}{q} + \frac{6sin(qR_k)}{q}&\biggr) |
---|
23 | \end{align*} |
---|
24 | |
---|
25 | and $k = core, shell_{in}, shell_{out}$. |
---|
26 | |
---|
27 | The core-shell interface can be either symmetric or asymmetric, and arises |
---|
28 | from interpenetration of the core polymer and the shell polymer. The model |
---|
29 | assumes a box density profile for each component, with a parabolic gradation |
---|
30 | at the interfaces. The model also includes a Lorentzian peak to account for |
---|
31 | composition fluctuations within the particle. A radial density profile |
---|
32 | $\Phi _{overall}(R)$ may be constructed from the fitted SANS curves. Polydispersity |
---|
33 | is accounted for in the overall particle radius, $R_tot$ (i.e. core, shell, |
---|
34 | inner interfaces, and outer surface/interface). |
---|
35 | |
---|
36 | Add Figure 1 from Angew. paper |
---|
37 | |
---|
38 | Parameters:\\ |
---|
39 | $\rho _{core}$: scattering length density of the core\\ |
---|
40 | $\rho _{shell}$: scattering length density of the shell\\ |
---|
41 | $\rho _{solv}$: scattering length density of the solvent\\ |
---|
42 | $R_{tot}$: radius of the full core-shell particle (polydisperse)\\ |
---|
43 | $R_{core}$: half-width radius of the core interface\\ |
---|
44 | $R_{{shell}_{in}}$: half-width radius of the shell inner interface\\ |
---|
45 | $s_{core}$: half of the thickness of the core interface\\ |
---|
46 | $s_{{shell}_{in}}$: half of the thickness of the shell inner interface\\ |
---|
47 | $s_{{shell}_{out}}$: half of the thickness of the shell outer interface\\ |
---|
48 | $L_0$: Lorentzian scale factor\\ |
---|
49 | $\xi _{intra}$: characteristic length of intra-particle fluctuations\\ |
---|
50 | |
---|
51 | |
---|
52 | Relationships to other physical parameters:\\ |
---|
53 | $W_{shell} = R_{tot} - R_{{shell}_{in}} - s_{{shell}_{in}} - 2*s_{{shell}_{out}}$ = width/thickness of the shell \\ |
---|
54 | $W_{core} = R_{core} - s_{core}$ = width/radius of the core \\ |
---|
55 | $R_{{shell}_{out}} = R_{tot} - s_{{shell}_{out}}$ = half-width radius of the shell outer interface\\ |
---|
56 | |
---|
57 | Additionally, one can calculate the following volumes:\\ |
---|
58 | .. math:: |
---|
59 | \begin{align*} |
---|
60 | V_{core} &= 4\pi \left(\frac{R_{core}^3}{3} + |
---|
61 | \frac{R_{core}s_{core}^2}{6}\right) \\ |
---|
62 | V_{shell} &= 4\pi \left[\frac{R_{{shell}_{out}}^3 - R_{{shell}_{in}}^3}{3} + |
---|
63 | \frac{R_{{shell}_{out}}s_{{shell}_{out}}^2 - R_{{shell}_{in}}s_{{shell}_{in}}^2}{6}\right] |
---|
64 | \end{align*} |
---|
65 | |
---|
66 | Special case for a symmetric core-shell interface:\\ |
---|
67 | $R_{{shell}_{in}} = R_{core}$ and $s_{{shell}_{in}} = s_{core}$ |
---|
68 | |
---|
69 | ==================== |
---|
70 | References |
---|
71 | ----------- |
---|
72 | |
---|
73 | Berndt, I., Pedersen, J. S., Richtering, W. J. Am. Chem. Soc. 2005, 127, |
---|
74 | pp. 9372 - 9373. |
---|
75 | |
---|
76 | Berndt, I., Pedersen, J. S., Lindner, P., Richtering, W. Langmuir. 2006, 22, |
---|
77 | pp. 459 - 468. |
---|
78 | |
---|
79 | Berndt, I., Pedersen, J. S., Richtering, W. Angew. Chem. 2006, 118, |
---|
80 | pp. 1769 - 1773. |
---|
81 | |
---|
82 | ==================== |
---|
83 | Author: Rachel Ford |
---|
84 | |
---|
85 | """ |
---|
86 | |
---|
87 | import numpy as np |
---|
88 | |
---|
89 | #name = """core_shell_microgels""" |
---|
90 | #title = """Form factor for fuzzy spherical core-shell microgels |
---|
91 | # with a Lorentzian peak for intra-particle fluctuations.""" |
---|
92 | #description = """ |
---|
93 | # P(q) = [(rho_shell - rho_solv)*Phi_shell_out(q, R_shell_out, s_shell_out) |
---|
94 | # + (rho_core - rho_solv)*Phi_core(q, R_core, s_core) |
---|
95 | # - (rho_shell - rho_solv)*Phi_shell_in(q, R_shell_in, s_shell_in)]**2 |
---|
96 | # + L_0/(1 + q**2*xi_intra**2) |
---|
97 | # |
---|
98 | # where density profile Phi(q, R, s) is given by: |
---|
99 | # Phi_k(q,R_k,s_k) = (4*pi/q**4*s_k**2)*((R_k+s_k)cos[q(R_k+s_k)] + |
---|
100 | # (R_k-s_k)cos[q(R_k-s_k)] - 3sin[q(R_k+s_k)] - 3sin[q(R_k-s_k)] + |
---|
101 | # 2cos(qR_k)/q + 6sin(qR_k)/q) |
---|
102 | # |
---|
103 | # and k = core, shell_in, shell_out. |
---|
104 | # |
---|
105 | # List of parameters: |
---|
106 | # rho_core: SLD of the core |
---|
107 | # rho_shell: SLD of the shell |
---|
108 | # rho_solv: SLD of the solvent |
---|
109 | # R_tot: radius of the full particle (polydisperse) |
---|
110 | # R_core: half-width radius of the core |
---|
111 | # R_shell_in: half-width radius of the shell inner interface |
---|
112 | # s_core: half the thickness of the core interface |
---|
113 | # s_shell_in: half the thickness of the shell inner interface |
---|
114 | # s_shell_out: half of the thickness of the outer shell interface |
---|
115 | # L_0: Lorentzian scale factor |
---|
116 | # xi_intra: characteristic length of intra-particle fluctuations |
---|
117 | # """ |
---|
118 | #category = "shape:sphere" |
---|
119 | |
---|
120 | # pylint: disable=bad-whitespace, line-too-long |
---|
121 | # ["name", "units", default, [lower, upper], "type", "description"], |
---|
122 | #parameters = [["rho_core", "1e-06 Ang^-2", 2.0, [-inf, inf], "", "SLD of core"], |
---|
123 | # ["rho_shell", "1e-06 Ang^-2", 3.0, [-inf, inf], "", "SLD of shell"], |
---|
124 | # ["rho_solv", "1e-06 Ang^-2", 1.0, [-inf, inf], "", "SLD of solvent"], |
---|
125 | # ["R_tot", "Ang", 700.0, [0, inf], "volume", "Radius of full particle"], |
---|
126 | # ["R_core", "Ang", 500.0, [0, inf], "", "Radius of core"], |
---|
127 | # ["R_shell_in", "Ang", 550.0, [0, inf], "", "Radius of shell inner interface"], |
---|
128 | # ["s_core", "Ang", 20.0, [0, inf], "", "Half-width of core interface"], |
---|
129 | # ["s_shell_in", "Ang", 20.0, [0, inf], "", "Half-width of shell inner interface"], |
---|
130 | # ["s_shell_out", "Ang", 20.0, [0, inf], "", "Half-width of shell outer interface"], |
---|
131 | # ["L_0", "", 10.0, [0, inf], "", "Lorentzian scale factor"], |
---|
132 | # ["xi_intra", "Ang", 1.0, [0, inf], "", "Intra-particle characteristic length"] |
---|
133 | # ] |
---|
134 | # pylint: enable=bad-whitespace, line-too-long |
---|
135 | # |
---|
136 | # |
---|
137 | def R_shell_out(R, s): |
---|
138 | """Return outer radius given total radius and surface thickenss.""" |
---|
139 | return R - s |
---|
140 | |
---|
141 | def phi_full(q, R, s): |
---|
142 | """Return the Fourier Transform of the particle density profile. |
---|
143 | Box profile with parabolic gradation of interfaces.""" |
---|
144 | return (4*np.pi/((q**4)*(s**2)))*((R+s)*np.cos(q*(R+s)) + (R-s)*np.cos(q*(R-s)) |
---|
145 | - (3/q)*np.sin(q*(R+s)) - (3/q)*np.sin(q*(R-s)) + (2/q)*np.cos(q*R) |
---|
146 | + (6/q)*np.sin(q*R)) |
---|
147 | |
---|
148 | def Fq(q, rho_core, rho_shell, rho_solv, R_tot, R_core, R_shell_in, s_core, |
---|
149 | s_shell_in, s_shell_out): |
---|
150 | """Return the scattering amplitude for core-shell microgels.""" |
---|
151 | return (rho_shell - rho_solv)*phi_full(q=q, R=R_shell_out(R=R_tot, s=s_shell_out), s=s_shell_out) |
---|
152 | + (rho_core - rho_solv)*phi_full(q=q, R=R_core, s=s_core) |
---|
153 | - (rho_shell - rho_solv)*phi_full(q=q, R=R_shell_in, s=s_shell_in) |
---|
154 | |
---|
155 | def Lor(q, L_0, xi): |
---|
156 | """Return a Lorenztian peak with correlation length xi.""" |
---|
157 | return L_0/(1 + q**2*xi**2) |
---|
158 | |
---|
159 | def Iq(q, |
---|
160 | rho_core=2.0, |
---|
161 | rho_shell=3.0, |
---|
162 | rho_solv=1.0, |
---|
163 | R_tot=700.0, |
---|
164 | R_core=500.0, |
---|
165 | R_shell_in=550.0, |
---|
166 | s_core=20.0, |
---|
167 | s_shell_in=20.0, |
---|
168 | s_shell_out=20.0, |
---|
169 | L_0=1.0, |
---|
170 | xi_intra=1.0): |
---|
171 | """Return the form factor of core-shell microgels. |
---|
172 | :param q: Input q-value |
---|
173 | :param rho_core: SLD of core |
---|
174 | :param rho_shell: SLD of shell |
---|
175 | :param rho_solv: SLD of solvent |
---|
176 | :param R_tot: Radius of full particle |
---|
177 | :param R_core: Radius of core |
---|
178 | :param R_shell_in: Radius of shell inner interface |
---|
179 | :param s_core: Half-width of core interface |
---|
180 | :param s_shell_in: Half-width of shell inner interface |
---|
181 | :param s_shell_out: Half-width of shell outer interface |
---|
182 | :param L_0: Lorentzian scale factor |
---|
183 | :param xi_intra: Intra-particle characteristic length |
---|
184 | :return: Calculated intensity |
---|
185 | """ |
---|
186 | A = Fq(q=q, rho_core=rho_core, rho_shell=rho_shell, rho_solv=rho_solv, |
---|
187 | R_tot=R_tot, R_core=R_core, R_shell_in=R_shell_in, s_core=s_core, |
---|
188 | s_shell_in=s_shell_in, s_shell_out=s_shell_out) |
---|
189 | return A**2 + Lor(q=q, L_0=L_0, xi=xi_intra) |
---|
190 | |
---|
191 | def norm(Iq, n, u): |
---|
192 | """Normalize Iq to number density of particles and convert to cm^-1""" |
---|
193 | return Iq*n*u |
---|
194 | |
---|
195 | print(norm(Iq=Iq(q=0.1, rho_core=0.62, rho_shell=0.74, rho_solv=6.4, R_tot=1170, R_core=965, R_shell_in=965, s_core=15, s_shell_in=15, s_shell_out=20, L_0=1, xi_intra=5), n=10**-10, u=10**-8)) |
---|