Changeset 352494a in sasmodels
- Timestamp:
- Mar 31, 2017 5:18:05 AM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 0cd9158, 956960a
- Parents:
- 37c7d5e (diff), cb0dc22 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/ref/index.rst
rc34a31f r9f12fbe 10 10 refs.rst 11 11 gpu/gpu_computations.rst 12 gpu/opencl_installation.rst 12 13 magnetism/magnetism.rst 13 14 sesans/sans_to_sesans.rst -
sasmodels/models/core_shell_parallelepiped.py
r797a8e3 rcb0dc22 4 4 5 5 Calculates the form factor for a rectangular solid with a core-shell structure. 6 **The thickness and the scattering length density of the shell or "rim" 7 can be different on all three (pairs) of faces.** 6 The thickness and the scattering length density of the shell or 7 "rim" can be different on each (pair) of faces. However at this time 8 the model does **NOT** actually calculate a c face rim despite the presence of 9 the parameter. 10 11 .. note:: 12 This model was originally ported from NIST IGOR macros. However,t is not 13 yet fully understood by the SasView developers and is currently review. 8 14 9 15 The form factor is normalized by the particle volume $V$ such that … … 35 41 V = ABC + 2t_ABC + 2t_BAC + 2t_CAB 36 42 37 **meaning that there are "gaps" at the corners of the solid.** 43 **meaning that there are "gaps" at the corners of the solid.** Again note that 44 $t_C = 0$ currently. 38 45 39 46 The intensity calculated follows the :ref:`parallelepiped` model, with the … … 41 48 amplitudes of the core and shell, in the same manner as a core-shell model. 42 49 43 .. math::44 45 F_{a}(Q,\alpha,\beta)=46 \Bigg(\frac{sin(Q(L_A+2t_A)/2sin\alpha sin\beta)}{Q(L_A+2t_A)/2sin\alpha47 sin\beta)}48 - \frac{sin(QL_A/2sin\alpha sin\beta)}{QL_A/2sin\alpha sin\beta)} \Bigg)49 + \frac{sin(QL_B/2sin\alpha sin\beta)}{QL_B/2sin\alpha sin\beta)}50 + \frac{sin(QL_C/2sin\alpha sin\beta)}{QL_C/2sin\alpha sin\beta)}51 50 52 51 .. note:: … … 93 92 detector plane. 94 93 95 Validation96 ----------97 98 The model uses the form factor calculations implemented in a c-library provided99 by the NIST Center for Neutron Research (Kline, 2006).100 101 94 References 102 95 ---------- … … 113 106 114 107 * **Author:** NIST IGOR/DANSE **Date:** pre 2010 115 * **Last Modified by:** Paul Butler **Date:** September 30, 2016 116 * **Last Reviewed by:** Miguel Gonzales **Date:** March 21, 2016 108 * **Converted to sasmodels by:** Miguel Gonzales **Date:** February 26, 2016 109 * **Last Modified by:** Wojciech Potrzebowski **Date:** January 11, 2017 110 * **Currently Under review by:** Paul Butler 117 111 """ 118 112 -
sasmodels/models/fractal.c
r925ad6e r4788822 1 1 #define INVALID(p) (p.fractal_dim < 0.0) 2 3 static double 4 form_volume(double radius) 5 { 6 return M_4PI_3 * cube(radius); 7 } 2 8 3 9 static double … … 13 19 14 20 //calculate P(q) for the spherical subunits 15 const double V = M_4PI_3*cube(radius);16 const double pq = V * square((sld_block-sld_solvent)*sas_3j1x_x(q*radius));21 const double pq = square(form_volume(radius) * (sld_block-sld_solvent) 22 *sas_3j1x_x(q*radius)); 17 23 18 24 // scale to units cm-1 sr-1 (assuming data on absolute scale) -
sasmodels/models/fractal.py
r925ad6e rdf89d77 20 20 .. math:: 21 21 22 P(q)&= F(qR_0)^2 23 24 F(q)&= \frac{3 (\sin x - x \cos x)}{x^3} 25 26 V_\text{particle} &= \frac{4}{3}\ \pi R_0 27 22 P(q)&= F(qR_0)^2 \\ 23 F(q)&= \frac{3 (\sin x - x \cos x)}{x^3} \\ 24 V_\text{particle} &= \frac{4}{3}\ \pi R_0 \\ 28 25 S(q) &= 1 + \frac{D_f\ \Gamma\!(D_f-1)}{[1+1/(q \xi)^2\ ]^{(D_f -1)/2}} 29 26 \frac{\sin[(D_f-1) \tan^{-1}(q \xi) ]}{(q R_0)^{D_f}} … … 32 29 is the fractal dimension, representing the self similarity of the structure. 33 30 Note that S(q) here goes negative if $D_f$ is too large, and the Gamma function 34 diverges at $D_f $=0 and $D_f$=1.31 diverges at $D_f=0$ and $D_f=1$. 35 32 36 33 **Polydispersity on the radius is provided for.** … … 47 44 ---------- 48 45 49 J Teixeira, *J. Appl. Cryst.*, 21 (1988) 781-78546 .. [#] J Teixeira, *J. Appl. Cryst.*, 21 (1988) 781-785 50 47 51 **Author:** NIST IGOR/DANSE **on:** pre 2010 48 Authorship and Verification 49 ---------------------------- 52 50 53 **Last Modified by:** Paul Butler **on:** March 20, 2016 54 55 **Last Reviewed by:** Paul Butler **on:** March 20, 2016 51 * **Author:** NIST IGOR/DANSE **Date:** pre 2010 52 * **Converted to sasmodels by:** Paul Butler **Date:** March 19, 2016 53 * **Last Modified by:** Paul Butler **Date:** March 12, 2017 54 * **Last Reviewed by:** Paul Butler **Date:** March 12, 2017 56 55 57 56 """ … … 84 83 parameters = [["volfraction", "", 0.05, [0.0, 1], "", 85 84 "volume fraction of blocks"], 86 ["radius", "Ang", 5.0, [0.0, inf], " ",85 ["radius", "Ang", 5.0, [0.0, inf], "volume", 87 86 "radius of particles"], 88 87 ["fractal_dim", "", 2.0, [0.0, 6.0], "", -
sasmodels/resolution.py
r2b3a1bd rb32caab 17 17 18 18 MINIMUM_RESOLUTION = 1e-8 19 20 21 # When extrapolating to -q, what is the minimum positive q relative to q_min 22 # that we wish to calculate? 23 MIN_Q_SCALE_FOR_NEGATIVE_Q_EXTRAPOLATION = 0.01 19 MINIMUM_ABSOLUTE_Q = 0.02 # relative to the minimum q in the data 24 20 25 21 class Resolution(object): … … 82 78 self.q_calc = (pinhole_extend_q(q, q_width, nsigma=nsigma) 83 79 if q_calc is None else np.sort(q_calc)) 80 81 # Protect against models which are not defined for very low q. Limit 82 # the smallest q value evaluated (in absolute) to 0.02*min 83 cutoff = MINIMUM_ABSOLUTE_Q*np.min(self.q) 84 self.q_calc = self.q_calc[abs(self.q_calc) >= cutoff] 85 86 # Build weight matrix from calculated q values 84 87 self.weight_matrix = pinhole_resolution(self.q_calc, self.q, 85 88 np.maximum(q_width, MINIMUM_RESOLUTION)) 89 self.q_calc = abs(self.q_calc) 86 90 87 91 def apply(self, theory): … … 123 127 self.q_calc = slit_extend_q(q, qx_width, qy_width) \ 124 128 if q_calc is None else np.sort(q_calc) 129 130 # Protect against models which are not defined for very low q. Limit 131 # the smallest q value evaluated (in absolute) to 0.02*min 132 cutoff = MINIMUM_ABSOLUTE_Q*np.min(self.q) 133 self.q_calc = self.q_calc[abs(self.q_calc) >= cutoff] 134 135 # Build weight matrix from calculated q values 125 136 self.weight_matrix = \ 126 137 slit_resolution(self.q_calc, self.q, qx_width, qy_width) 138 self.q_calc = abs(self.q_calc) 127 139 128 140 def apply(self, theory): … … 153 165 # neither trapezoid nor Simpson's rule improved the accuracy. 154 166 edges = bin_edges(q_calc) 155 edges[edges < 0.0] = 0.0 # clip edges below zero167 #edges[edges < 0.0] = 0.0 # clip edges below zero 156 168 cdf = erf((edges[:, None] - q[None, :]) / (sqrt(2.0)*q_width)[None, :]) 157 169 weights = cdf[1:] - cdf[:-1] … … 286 298 # The current algorithm is a midpoint rectangle rule. 287 299 q_edges = bin_edges(q_calc) # Note: requires q > 0 288 q_edges[q_edges < 0.0] = 0.0 # clip edges below zero300 #q_edges[q_edges < 0.0] = 0.0 # clip edges below zero 289 301 weights = np.zeros((len(q), len(q_calc)), 'd') 290 302 … … 392 404 interval. 393 405 394 if *q_min* is zero or less then *q[0]/10* is used instead.406 Note that extrapolated values may be negative. 395 407 """ 396 408 q = np.sort(q) 397 409 if q_min + 2*MINIMUM_RESOLUTION < q[0]: 398 if q_min <= 0: q_min = q_min*MIN_Q_SCALE_FOR_NEGATIVE_Q_EXTRAPOLATION399 410 n_low = np.ceil((q[0]-q_min) / (q[1]-q[0])) if q[1] > q[0] else 15 400 411 q_low = np.linspace(q_min, q[0], n_low+1)[:-1] … … 448 459 log_delta_q = log(10.) / points_per_decade 449 460 if q_min < q[0]: 450 if q_min < 0: q_min = q[0]*MIN _Q_SCALE_FOR_NEGATIVE_Q_EXTRAPOLATION461 if q_min < 0: q_min = q[0]*MINIMUM_ABSOLUTE_Q 451 462 n_low = log_delta_q * (log(q[0])-log(q_min)) 452 463 q_low = np.logspace(log10(q_min), log10(q[0]), np.ceil(n_low)+1)[:-1] -
doc/ref/gpu/gpu_computations.rst
r3f5a566 r7e74ed5 31 31 from available OpenCL platforms. 32 32 33 OpenCL devices can be set from OpenCL options dialog in Fitting menu or as 34 enviromental variables. 35 36 **If you don't want to use OpenCL, you can select "No OpenCL" option from** 37 **GUI dialog or set *SAS_OPENCL=None* in your environment settings** 38 **This will only use normal programs.** 39 33 40 SasView prefers AMD or NVIDIA drivers for GPU, and prefers Intel or 34 41 Apple drivers for CPU. Both GPU and CPU are included on the assumption that CPU … … 39 46 chose to run the model. 40 47 41 **If you don't want to use OpenCL, you can set** *SAS_OPENCL=None* 42 **in your environment settings, and it will only use normal programs.** 43 44 If you want to use one of the other devices, you can run the following 45 from the python console in SasView:: 48 If you want to use one of the other devices, you can select it from OpenCL 49 options dialog (accessible from Fitting menu) or run the following from 50 the python console in SasView:: 46 51 47 52 import pyopencl as cl
Note: See TracChangeset
for help on using the changeset viewer.