Changeset 3e428ec in sasmodels for sasmodels/models/spherepy.py
- Timestamp:
- Mar 9, 2015 1:14:03 PM (9 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:
- ddfe69c
- Parents:
- 485aee2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/spherepy.py
r3c56da87 r3e428ec 73 73 category = "shape:sphere" 74 74 75 parameters = [ 76 # [ "name", "units", default, [lower, upper], "type", 77 # "description" ], 78 [ "sld", "1e-6/Ang^2", 1, [-inf,inf], "", 79 "Layer scattering length density" ], 80 [ "solvent_sld", "1e-6/Ang^2", 6, [-inf,inf], "", 81 "Solvent scattering length density" ], 82 [ "radius", "Ang", 50, [0, inf], "volume", 83 "Sphere radius" ], 84 ] 75 # ["name", "units", default, [lower, upper], "type","description"], 76 parameters = [["sld", "1e-6/Ang^2", 1, [-inf, inf], "", 77 "Layer scattering length density"], 78 ["solvent_sld", "1e-6/Ang^2", 6, [-inf, inf], "", 79 "Solvent scattering length density"], 80 ["radius", "Ang", 50, [0, inf], "volume", 81 "Sphere radius"], 82 ] 85 83 86 84 87 85 def form_volume(radius): 88 return 1.333333333333333 *pi*radius**386 return 1.333333333333333 * pi * radius ** 3 89 87 90 88 def Iq(q, sld, solvent_sld, radius): 91 89 #print "q",q 92 90 #print "sld,r",sld,solvent_sld,radius 93 qr = q *radius91 qr = q * radius 94 92 sn, cn = sin(qr), cos(qr) 95 93 # FOR VECTORIZED VERSION, UNCOMMENT THE NEXT TWO LINES 96 bes = 3 * (sn -qr*cn)/qr**3 # may be 0/0 but we fix that next line97 bes[qr ==0] = 194 bes = 3 * (sn - qr * cn) / qr ** 3 # may be 0/0 but we fix that next line 95 bes[qr == 0] = 1 98 96 # FOR NON VECTORIZED VERSION, UNCOMMENT THE NEXT LINE 99 97 #bes = 3 * (sn-qr*cn)/qr**3 if qr>0 else 1 100 98 fq = bes * (sld - solvent_sld) * form_volume(radius) 101 return 1.0e-4 *fq**299 return 1.0e-4 * fq ** 2 102 100 # FOR VECTORIZED VERSION, UNCOMMENT THE NEXT LINE 103 101 Iq.vectorized = True 104 102 105 103 def Iqxy(qx, qy, sld, solvent_sld, radius): 106 return Iq(sqrt(qx **2 + qy**2), sld, solvent_sld, radius)104 return Iq(sqrt(qx ** 2 + qy ** 2), sld, solvent_sld, radius) 107 105 Iqxy.vectorized = True 108 106 … … 113 111 Wim Bouwman after formulae Timofei Kruglov J.Appl.Cryst. 2003 article 114 112 """ 115 d = z /radius113 d = z / radius 116 114 g = np.zeros_like(z) 117 g[d ==0] = 1.115 g[d == 0] = 1. 118 116 low = ((d > 0) & (d < 2)) 119 117 dlow = d[low] 120 dlow2 = dlow **2121 g[low] = sqrt(1 -dlow2/4.)*(1+dlow2/8.) + dlow2/2.*(1-dlow2/16.)*log(dlow/(2.+sqrt(4.-dlow2)))118 dlow2 = dlow ** 2 119 g[low] = sqrt(1 - dlow2 / 4.) * (1 + dlow2 / 8.) + dlow2 / 2.*(1 - dlow2 / 16.) * log(dlow / (2. + sqrt(4. - dlow2))) 122 120 return g 123 121 sesans.vectorized = True … … 128 126 # VR defaults to 1.0 129 127 130 demo = dict( 131 scale=1, background=0, 132 sld=6, solvent_sld=1, 133 radius=120, 134 radius_pd=.2, radius_pd_n=45, 135 ) 128 demo = dict(scale=1, background=0, 129 sld=6, solvent_sld=1, 130 radius=120, 131 radius_pd=.2, radius_pd_n=45) 136 132 oldname = "SphereModel" 137 133 oldpars = dict(sld='sldSph', solvent_sld='sldSolv', radius='radius')
Note: See TracChangeset
for help on using the changeset viewer.