Changeset eb97b11 in sasmodels for sasmodels/models/spherical_sld.py
- Timestamp:
- Apr 18, 2016 8:22:12 AM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 4605bf10
- Parents:
- f2f67a6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/spherical_sld.py
rd2bb604 reb97b11 170 170 # pylint: disable=bad-whitespace, line-too-long 171 171 # ["name", "units", default, [lower, upper], "type", "description"], 172 parameters = [["n ", "", 1, [0, 9], "", "number of shells"],172 parameters = [["n_shells", "", 1, [0, 9], "", "number of shells"], 173 173 ["radius_core", "Ang", 50.0, [0, inf], "", "intern layer thickness"], 174 174 ["sld_core", "1e-6/Ang^2", 2.07, [-inf, inf], "", "sld function flat"], 175 ["sld_solvent", "1e-6/Ang^2", 1.0, [-inf, inf], "", "sld function solvent"], 175 176 ["sld_flat[n]", "1e-6/Ang^2", 4.06, [-inf, inf], "", "sld function flat"], 176 177 ["thick_flat[n]", "Ang", 100.0, [0, inf], "", "flat layer_thickness"], 177 178 ["func_inter[n]", "", 0, [0, 4], "", "Erf:0, RPower:1, LPower:2, RExp:3, LExp:4"], 178 179 ["thick_inter[n]", "Ang", 50.0, [0, inf], "", "intern layer thickness"], 179 [" inter_nu[n]", "", 2.5, [-inf, inf], "", "steepness parameter"],180 ["nu_inter[n]", "", 2.5, [-inf, inf], "", "steepness parameter"], 180 181 ["npts_inter", "", 35, [0, 35], "", "number of points in each sublayer Must be odd number"], 181 ["sld_solvent", "1e-6/Ang^2", 1.0, [-inf, inf], "", "sld function solvent"],182 182 ] 183 183 # pylint: enable=bad-whitespace, line-too-long 184 #source = ["lib/librefl.c", "lib/sph_j1c.c", "spherical_sld.c"] 185 186 def Iq(q, *args, **kw): 187 return q 188 189 def Iqxy(qx, *args, **kw): 190 return qx 184 source = ["lib/librefl.c", "lib/sph_j1c.c", "spherical_sld.c"] 185 186 #def Iq(q, *args, **kw): 187 # return q 188 189 #def Iqxy(qx, *args, **kw): 190 # return qx 191 192 def profile(n_shells, radius_core, sld_core, sld_solvent, sld_flat, 193 thick_flat, func_inter, thick_inter, nu_inter, npts_inter): 194 """ 195 Returns shape profile with x=radius, y=SLD. 196 """ 197 198 #total_radius = 1.25*(sum(thickness[:n_shells]) + core_radius + 1) 199 #dr = total_radius/400 # 400 points for a smooth plot 200 201 z = [] 202 beta = [] 203 z0 = 0 204 # two sld points for core 205 z.append(0) 206 beta.append(sld_core) 207 z.append(radius_core) 208 beta.append(sld_core) 209 z0 += radius_core 210 211 for i in range(1, n_shells+2): 212 dz = thick_inter[i-1]/npts_inter 213 # j=0 for interface, j=1 for flat layer 214 for j in range(0, 2): 215 # interation for sub-layers 216 for n_s in range(0, npts_inter+1): 217 if j == 1: 218 if i == n_shells+1: 219 break 220 # shift half sub thickness for the first point 221 z0 -= dz#/2.0 222 z.append(z0) 223 #z0 -= dz/2.0 224 z0 += thick_flat[i] 225 sld_i = sld_flat[i] 226 beta.append(sld_flat[i]) 227 dz = 0 228 else: 229 nu = nu_inter[i-1] 230 # decide which sld is which, sld_r or sld_l 231 if i == 1: 232 sld_l = sld_core 233 else: 234 sld_l = sld_flat[i-1] 235 if i == n_shells+1: 236 sld_r = sld_solvent 237 else: 238 sld_r = sld_flat[i] 239 # get function type 240 func_idx = func_inter[i-1] 241 # calculate the sld 242 sld_i = intersldfunc(func_idx, npts_inter, n_s, nu, 243 sld_l, sld_r) 244 # append to the list 245 z.append(z0) 246 beta.append(sld_i) 247 z0 += dz 248 if j == 1: 249 break 250 # put sld of solvent 251 z.append(z0) 252 beta.append(sld_solvent) 253 z_ext = z0/5.0 254 z.append(z0+z_ext) 255 beta.append(sld_solvent) 256 # return sld profile (r, beta) 257 258 return np.asarray(z), np.asarray(beta)*1e-6 259 260 def ER(core_radius, n, thickness): 261 return np.sum(thickness[:n[0]], axis=0) + core_radius 262 263 def VR(core_radius, n, thickness): 264 return 1.0, 1.0 191 265 192 266
Note: See TracChangeset
for help on using the changeset viewer.