- Timestamp:
- Jan 12, 2018 9:46:11 AM (7 years ago)
- Branches:
- master, core_shell_microgels, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 3d58247
- Parents:
- 1ceb951 (diff), 4c08e69 (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. - Location:
- doc
- Files:
-
- 3 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/_extensions/dollarmath.py
r103ea45 rdd4d95d 12 12 import re 13 13 14 _dollar = re.compile(r"(?:^|(?<=\s|[ (]))[$]([^\n]*?)(?<![\\])[$](?:$|(?=\s|[.,;)\\]))")14 _dollar = re.compile(r"(?:^|(?<=\s|[-(]))[$]([^\n]*?)(?<![\\])[$](?:$|(?=\s|[-.,;:?\\)]))") 15 15 _notdollar = re.compile(r"\\[$]") 16 16 -
doc/developer/calculator.rst
r870a2f4 r2c108a3 7 7 8 8 This document describes the layer between the form factor kernels and the 9 model calculator which implements the polydispersity and magnetic SLD9 model calculator which implements the dispersity and magnetic SLD 10 10 calculations. There are three separate implementations of this layer, 11 11 :mod:`kernelcl` for OpenCL, which operates on a single Q value at a time, … … 14 14 15 15 Each implementation provides three different calls *Iq*, *Iqxy* and *Imagnetic* 16 for 1-D, 2-D and 2-D magnetic kernels respectively. 17 18 The C code is defined in *kernel_iq.c* and *kernel_iq.cl* for DLL and OpenCL 19 respectively. The kernel call looks as follows:: 16 for 1-D, 2-D and 2-D magnetic kernels respectively. The C code is defined 17 in *kernel_iq.c*, with the minor differences between OpenCL and DLL handled 18 by #ifdef statements. 19 20 The kernel call looks as follows:: 20 21 21 22 kernel void KERNEL_NAME( 22 23 int nq, // Number of q values in the q vector 23 int pd_start, // Starting position in the polydispersity loop24 int pd_stop, // Ending position in the polydispersity loop25 ProblemDetails *details, // Polydispersity info24 int pd_start, // Starting position in the dispersity loop 25 int pd_stop, // Ending position in the dispersity loop 26 ProblemDetails *details, // dispersity info 26 27 double *values, // Value and weights vector 27 28 double *q, // q or (qx,qy) vector 28 29 double *result, // returned I(q), with result[nq] = pd_weight 29 double cutoff) // polydispersity weight cutoff30 double cutoff) // dispersity weight cutoff 30 31 31 32 The details for OpenCL and the python loop are slightly different, but these … … 34 35 *nq* indicates the number of q values that will be calculated. 35 36 36 The *pd_start* and *pd_stop* parameters set the range of the polydispersity37 loop to compute for the current kernel call. Give a polydispersity37 The *pd_start* and *pd_stop* parameters set the range of the dispersity 38 loop to compute for the current kernel call. Give a dispersity 38 39 calculation with 30 weights for length and 30 weights for radius for example, 39 40 there are a total of 900 calls to the form factor required to compute the … … 42 43 the length index to 3 and the radius index to 10 for a position of 3*30+10=100, 43 44 and could then proceed to position 200. This allows us to interrupt the 44 calculation in the middle of a long polydispersity loop without having to45 calculation in the middle of a long dispersity loop without having to 45 46 do special tricks with the C code. More importantly, it stops the OpenCL 46 47 kernel in a reasonable time; because the GPU is used by the operating … … 49 50 50 51 The *ProblemDetails* structure is a direct map of the 51 :class:`details.CallDetails` buffer. This indicates which parameters are52 polydisperse, and where in the values vector the values and weights can be53 found. For each p olydisperse parameterthere is a parameter id, the length54 of the polydispersity loop for that parameter, the offset of the parameter52 :class:`details.CallDetails` buffer. This indicates which parameters have 53 dispersity, and where in the values vector the values and weights can be 54 found. For each parameter with dispersity there is a parameter id, the length 55 of the dispersity loop for that parameter, the offset of the parameter 55 56 values in the pd value and pd weight vectors and the 'stride' from one index 56 57 to the next, which is used to translate between the position in the 57 polydispersity loop and the particular parameter indices. The *num_eval*58 field is the total size of the polydispersity loop. *num_weights* is the58 dispersity loop and the particular parameter indices. The *num_eval* 59 field is the total size of the dispersity loop. *num_weights* is the 59 60 number of elements in the pd value and pd weight vectors. *num_active* is 60 the number of non-trivial pd loops (p olydisperse parametersshould be ordered61 by decreasing pd vector length, with a length of 1 meaning no polydispersity).61 the number of non-trivial pd loops (parameters with dispersity should be ordered 62 by decreasing pd vector length, with a length of 1 meaning no dispersity). 62 63 Oriented objects in 2-D need a cos(theta) spherical correction on the angular 63 64 variation in order to preserve the 'surface area' of the weight distribution. … … 72 73 *(Mx, My, Mz)*. Sample magnetization is translated from *(M, theta, phi)* 73 74 to *(Mx, My, Mz)* before the kernel is called. After the fixed values comes 74 the pd value vector, with the polydispersity values for each parameter75 the pd value vector, with the dispersity values for each parameter 75 76 stacked one after the other. The order isn't important since the location 76 77 for each parameter is stored in the *pd_offset* field of the *ProblemDetails* … … 78 79 values, the pd weight vector is stored, with the same configuration as the 79 80 pd value vector. Note that the pd vectors can contain values that are not 80 in the polydispersity loop; this is used by :class:`mixture.MixtureKernel`81 in the dispersity loop; this is used by :class:`mixture.MixtureKernel` 81 82 to make it easier to call the various component kernels. 82 83 … … 87 88 88 89 The *results* vector contains one slot for each of the *nq* values, plus 89 one extra slot at the end for the current polydisperse normalization. This90 is required when the polydispersity loop is broken across several kernel 91 calls.90 one extra slot at the end for the weight normalization accumulated across 91 all points in the dispersity mesh. This is required when the dispersity 92 loop is broken across several kernel calls. 92 93 93 94 *cutoff* is a importance cutoff so that points which contribute negligibly … … 97 98 98 99 - USE_OPENCL is defined if running in opencl 99 - MAX_PD is the maximum depth of the polydispersity loop [model specific]100 - MAX_PD is the maximum depth of the dispersity loop [model specific] 100 101 - NUM_PARS is the number of parameter values in the kernel. This may be 101 102 more than the number of parameters if some of the parameters are vector 102 103 values. 103 104 - NUM_VALUES is the number of fixed values, which defines the offset in the 104 value list to the polydispersevalue and weight vectors.105 value list to the dispersity value and weight vectors. 105 106 - NUM_MAGNETIC is the number of magnetic SLDs 106 107 - MAGNETIC_PARS is a comma separated list of the magnetic SLDs, indicating 107 108 their locations in the values vector. 108 - MAGNETIC_PAR0 to MAGNETIC_PAR2 are the first three magnetic parameter ids109 so we can hard code the setting of magnetic values if there are only a110 few of them.111 109 - KERNEL_NAME is the name of the function being declared 112 110 - PARAMETER_TABLE is the declaration of the parameters to the kernel: … … 152 150 Cylinder2D:: 153 151 154 #define CALL_IQ(q, i, var) Iqxy(q [2*i], q[2*i+1], \152 #define CALL_IQ(q, i, var) Iqxy(qa, qc, \ 155 153 var.length, \ 156 154 var.radius, \ 157 155 var.sld, \ 158 var.sld_solvent, \ 159 var.theta, \ 160 var.phi) 156 var.sld_solvent) 161 157 162 158 - CALL_VOLUME(var) is similar, but for calling the form volume:: … … 182 178 #define INVALID(var) constrained(var.p1, var.p2, var.p3) 183 179 184 Our design supports a limited number of polydispersity loops, wherein185 we need to cycle through the values of the polydispersity, calculate180 Our design supports a limited number of dispersity loops, wherein 181 we need to cycle through the values of the dispersity, calculate 186 182 the I(q, p) for each combination of parameters, and perform a normalized 187 183 weighted sum across all the weights. Parameters may be passed to the 188 underlying calculation engine as scalars or vectors, but the polydispersity184 underlying calculation engine as scalars or vectors, but the dispersity 189 185 calculator treats the parameter set as one long vector. 190 186 191 Let's assume we have 8 parameters in the model, with two polydisperse. Since192 this is a 1-D model the orientation parameters won't be used::187 Let's assume we have 8 parameters in the model, two of which allow dispersity. 188 Since this is a 1-D model the orientation parameters won't be used:: 193 189 194 190 0: scale {scl = constant} … … 196 192 2: radius {r = vector of 10pts} 197 193 3: length {l = vector of 30pts} 198 4: sld {s = constant/(radius**2*length)}194 4: sld {s1 = constant/(radius**2*length)} 199 195 5: sld_solvent {s2 = constant} 200 196 6: theta {not used} … … 202 198 203 199 This generates the following call to the kernel. Note that parameters 4 and 204 5 are treated as polydisperse even though they are not --- this is because200 5 are treated as having dispersity even though they don't --- this is because 205 201 it is harmless to do so and simplifies the looping code:: 206 202 … … 210 206 NUM_MAGNETIC = 2 // two parameters might be magnetic 211 207 MAGNETIC_PARS = 4, 5 // they are sld and sld_solvent 212 MAGNETIC_PAR0 = 4 // sld index213 MAGNETIC_PAR1 = 5 // solvent index214 208 215 209 details { … … 218 212 pd_offset = {10, 0, 31, 32} // *length* starts at index 10 in weights 219 213 pd_stride = {1, 30, 300, 300} // cumulative product of pd length 220 num_eval = 300 // 300 values in the polydispersity loop214 num_eval = 300 // 300 values in the dispersity loop 221 215 num_weights = 42 // 42 values in the pd vector 222 216 num_active = 2 // only the first two pd are active … … 225 219 226 220 values = { scl, bkg, // universal 227 r, l, s , s2, theta, phi,// kernel pars221 r, l, s1, s2, theta, phi, // kernel pars 228 222 in spin, out spin, spin angle, // applied magnetism 229 mx s , my s, mz s, mx s2, my s2, mz s2,// magnetic slds223 mx s1, my s1, mz s1, mx s2, my s2, mz s2, // magnetic slds 230 224 r0, .., r9, l0, .., l29, s, s2, // pd values 231 225 r0, .., r9, l0, .., l29, s, s2} // pd weights … … 235 229 result = {r1, ..., r130, pd_norm, x } 236 230 237 The polydisperseparameters are stored in as an array of parameter238 indices, one for each p olydisperse parameter, stored in pd_par[n].239 Non-polydisperse parameters do not appear in this array. Each polydisperse 231 The dispersity parameters are stored in as an array of parameter 232 indices, one for each parameter, stored in pd_par[n]. Parameters which do 233 not support dispersity do not appear in this array. Each dispersity 240 234 parameter has a weight vector whose length is stored in pd_length[n]. 241 235 The weights are stored in a contiguous vector of weights for all … … 243 237 in pd_offset[n]. The values corresponding to the weights are stored 244 238 together in a separate weights[] vector, with offset stored in 245 par_offset[pd_par[n]]. Polydisperseparameters should be stored in239 par_offset[pd_par[n]]. Dispersity parameters should be stored in 246 240 decreasing order of length for highest efficiency. 247 241 248 We limit the number of polydispersedimensions to MAX_PD (currently 4),249 though some models may have fewer if they have fewer polydisperse242 We limit the number of dispersity dimensions to MAX_PD (currently 4), 243 though some models may have fewer if they have fewer dispersity 250 244 parameters. The main reason for the limit is to reduce code size. 251 Each additional polydisperse parameter requires a separate polydispersity 252 loop. If more than 4 levels of polydispersity are needed, then kernel_iq.c 253 and kernel_iq.cl will need to be extended. 245 Each additional dispersity parameter requires a separate dispersity 246 loop. If more than 4 levels of dispersity are needed, then we need to 247 switch to a monte carlo importance sampling algorithm with better 248 performance for high-dimensional integrals. 254 249 255 250 Constraints between parameters are not supported. Instead users will … … 262 257 theta since the polar coordinates normalization is tied to this parameter. 263 258 264 If there is no polydispersity we pretend that it is polydisperisty with one265 parameter, pd_start=0 and pd_stop=1. We may or may not short circuit the 266 calculation in this case, depending on how much time it saves.259 If there is no dispersity we pretend that we have a disperisty mesh over 260 a single parameter with a single point in the distribution, giving 261 pd_start=0 and pd_stop=1. 267 262 268 263 The problem details structure could be allocated and sent in as an integer 269 264 array using the read-only flag. This would allow us to copy it once per fit 270 265 along with the weights vector, since features such as the number of 271 polydisperity elements per pd parameter or the coordinated won't change 272 between function evaluations. A new parameter vector must be sent for 273 each I(q) evaluation. This is not currently implemented, and would require 274 some resturcturing ofthe :class:`sasview_model.SasviewModel` interface.275 276 The results array will be initialized to zero for polydispersity loop266 disperity points per pd parameter won't change between function evaluations. 267 A new parameter vector must be sent for each I(q) evaluation. This is 268 not currently implemented, and would require some resturcturing of 269 the :class:`sasview_model.SasviewModel` interface. 270 271 The results array will be initialized to zero for dispersity loop 277 272 entry zero, and preserved between calls to [start, stop] so that the 278 273 results accumulate by the time the loop has completed. Background and … … 295 290 296 291 This will require accumulated error for each I(q) value to be preserved 297 between kernel calls to implement this fully. The kernel_iq.ccode, which298 loops over q for each parameter set in the polydispersity loop, willneed299 also need the accumalation vector.292 between kernel calls to implement this fully. The *kernel_iq.c* code, which 293 loops over q for each parameter set in the dispersity loop, will also need 294 the accumulation vector. -
doc/developer/overview.rst
r870a2f4 r3d40839 166 166 :ref:`Calculator_Interface` 167 167 168 .. _orientation_developer: 169 170 Orientation and Numerical Integration 171 ------------------------------------- 172 173 For 2d data from oriented anisotropic particles, the mean particle 174 orientation is defined by angles $\theta$, $\phi$ and $\Psi$, which are not 175 in general the same as similarly named angles in many form factors. The 176 wikipedia page on Euler angles (https://en.wikipedia.org/wiki/Euler_angles) 177 lists the different conventions available. To quote: "Different authors may 178 use different sets of rotation axes to define Euler angles, or different 179 names for the same angles. Therefore, any discussion employing Euler angles 180 should always be preceded by their definition." 181 182 We are using the $z$-$y$-$z$ convention with extrinsic rotations 183 $\Psi$-$\theta$-$\phi$ for the particle orientation and $x$-$y$-$z$ 184 convention with extrinsic rotations $\Psi$-$\theta$-$\phi$ for jitter, with 185 jitter applied before particle orientation. 186 187 For numerical integration within form factors etc. sasmodels is mostly using 188 Gaussian quadrature with 20, 76 or 150 points depending on the model. It also 189 makes use of symmetries such as calculating only over one quadrant rather 190 than the whole sphere. There is often a U-substitution replacing $\theta$ 191 with $cos(\theta)$ which changes the limits of integration from 0 to $\pi/2$ 192 to 0 to 1 and also conveniently absorbs the $sin(\theta)$ scale factor in the 193 integration. This can cause confusion if checking equations to include in a 194 paper or thesis! Most models use the same core kernel code expressed in terms 195 of the rotated view ($q_a$, $q_b$, $q_c$) for both the 1D and the 2D models, 196 but there are also historical quirks such as the parallelepiped model, which 197 has a useless transformation representing $j_0(a q_a)$ as $j_0(b q_a a/b)$. 198 199 Useful testing routines include: 200 201 :mod:`asymint` a direct implementation of the surface integral for certain 202 models to get a more trusted value for the 1D integral using a 203 reimplementation of the 2D kernel in python and mpmath (which computes math 204 functions to arbitrary precision). It uses $\theta$ ranging from 0 to $\pi$ 205 and $\phi$ ranging from 0 to $2\pi$. It perhaps would benefit from including 206 the U-substitution for $\theta$. 207 208 :mod:`check1d` uses sasmodels 1D integration and compares that with a 209 rectangle distribution in $\theta$ and $\phi$, with $\theta$ limits set to 210 $\pm 90/\sqrt(3)$ and $\phi$ limits set to $\pm 180/\sqrt(3)$ [The rectangle 211 weight function uses the fact that the distribution width column is labelled 212 sigma to decide that the 1-$\sigma$ width of a rectangular distribution needs to 213 be multiplied by $\sqrt(3)$ to get the corresponding gaussian equivalent, or 214 similar reasoning.] This should rotate the sample through the entire 215 $\theta$-$\phi$ surface according to the pattern that you see in jitter.py when 216 you modify it to use 'rectangle' rather than 'gaussian' for its distribution 217 without changing the viewing angle. In order to match the 1-D pattern for 218 an arbitrary viewing angle on triaxial shapes, we need to integrate 219 over $\theta$, $\phi$ and $\Psi$. 220 221 When computing the dispersity integral, weights are scaled by 222 $|\cos(\delta \theta)|$ to account for the points in $\phi$ getting closer 223 together as $\delta \theta$ increases. 224 [This will probably change so that instead of adjusting the weights, we will 225 adjust $\delta\theta$-$\delta\phi$ mesh so that the point density in 226 $\delta\phi$ is lower at larger $\delta\theta$. The flag USE_SCALED_PHI in 227 *kernel_iq.c* selects an alternative algorithm.] 228 229 The integrated dispersion is computed at a set of $(qx, qy)$ points $(q 230 \cos(\alpha), q \sin(\alpha))$ at some angle $\alpha$ (currently angle=0) for 231 each $q$ used in the 1-D integration. The individual $q$ points should be 232 equivalent to asymint rect-n when the viewing angle is set to 233 $(\theta,\phi,\Psi) = (90, 0, 0)$. Such tests can help to validate that 2d 234 models are consistent with 1d models. 235 236 :mod:`sascomp -sphere=n` uses the same rectangular distribution as check1d to 237 compute the pattern of the $q_x$-$q_y$ grid. 238 239 The :mod:`sascomp` utility can be used for 2d as well as 1d calculations to 240 compare results for two sets of parameters or processor types, for example 241 these two oriented cylinders here should be equivalent. 242 243 :mod:`\./sascomp -2d cylinder theta=0 phi=0,90 theta_pd_type=rectangle phi_pd_type=rectangle phi_pd=10,1 theta_pd=1,10 length=500 radius=10` 244 168 245 169 246 Testing -
doc/genapi.py
r2e66ef5 r706f466 59 59 #('alignment', 'GPU data alignment [unused]'), 60 60 ('bumps_model', 'Bumps interface'), 61 ('compare', 'Compare models on different compute engines'), 61 62 ('compare_many', 'Batch compare models on different compute engines'), 62 ('co mpare', 'Compare models on different compute engines'),63 ('conversion_table', 'Model conversion table'), 63 64 ('convert', 'Sasview to sasmodel converter'), 64 65 ('core', 'Model access'), … … 82 83 ('sasview_model', 'Sasview interface'), 83 84 ('sesans', 'SESANS calculation routines'), 85 ('special', 'Special functions library'), 84 86 ('weights', 'Distribution functions'), 85 87 ] -
doc/guide/index.rst
rc0d7ab3 rda5536f 13 13 resolution.rst 14 14 magnetism/magnetism.rst 15 orientation/orientation.rst 15 16 sesans/sans_to_sesans.rst 16 17 sesans/sesans_fitting.rst -
doc/guide/magnetism/magnetism.rst
r1f058ea r4f5afc9 5 5 6 6 Models which define a scattering length density parameter can be evaluated 7 8 9 10 7 as magnetic models. In general, the scattering length density (SLD = 8 $\beta$) in each region where the SLD is uniform, is a combination of the 9 nuclear and magnetic SLDs and, for polarised neutrons, also depends on the 10 spin states of the neutrons. 11 11 12 12 For magnetic scattering, only the magnetization component $\mathbf{M_\perp}$ 13 13 perpendicular to the scattering vector $\mathbf{Q}$ contributes to the magnetic 14 14 scattering length. 15 16 15 17 16 .. figure:: … … 28 27 is the Pauli spin. 29 28 30 Assuming that incident neutrons are polarized parallel (+) and anti-parallel (-)31 to the $x'$ axis, the possible spin states after the sample are then 29 Assuming that incident neutrons are polarized parallel $(+)$ and anti-parallel 30 $(-)$ to the $x'$ axis, the possible spin states after the sample are then: 32 31 33 No spin-flips (+ +) and (- -) 32 * Non spin-flip $(+ +)$ and $(- -)$ 34 33 35 Spin-flips (+ -) and (- +) 34 * Spin-flip $(+ -)$ and $(- +)$ 35 36 Each measurement is an incoherent mixture of these spin states based on the 37 fraction of $+$ neutrons before ($u_i$) and after ($u_f$) the sample, 38 with weighting: 39 40 .. math:: 41 -- &= ((1-u_i)(1-u_f))^{1/4} \\ 42 -+ &= ((1-u_i)(u_f))^{1/4} \\ 43 +- &= ((u_i)(1-u_f))^{1/4} \\ 44 ++ &= ((u_i)(u_f))^{1/4} 45 46 Ideally the experiment would measure the pure spin states independently and 47 perform a simultaneous analysis of the four states, tying all the model 48 parameters together except $u_i$ and $u_f$. 36 49 37 50 .. figure:: … … 41 54 $\phi$ and $\theta_{up}$, respectively, then, depending on the spin state of the 42 55 neutrons, the scattering length densities, including the nuclear scattering 43 length density ($\beta{_N}$)are56 length density $(\beta{_N})$ are 44 57 45 58 .. math:: 46 59 \beta_{\pm\pm} = \beta_N \mp D_M M_{\perp x'} 47 \text{ when there are no spin-flips}60 \text{ for non spin-flip states} 48 61 49 62 and … … 51 64 .. math:: 52 65 \beta_{\pm\mp} = -D_M (M_{\perp y'} \pm iM_{\perp z'}) 53 \text{ when there are}66 \text{ for spin-flip states} 54 67 55 68 where 56 69 57 70 .. math:: 58 M_{\perp x'} = M_{0q_x}\cos(\theta_{up})+M_{0q_y}\sin(\theta_{up}) \\59 M_{\perp y'} = M_{0q_y}\cos(\theta_{up})-M_{0q_x}\sin(\theta_{up}) \\60 M_{\perp z'} = M_{0z} \\61 M_{0q_x} = (M_{0x}\cos\phi - M_{0y}\sin\phi)\cos\phi \\62 M_{0q_y} = (M_{0y}\sin\phi - M_{0x}\cos\phi)\sin\phi71 M_{\perp x'} &= M_{0q_x}\cos(\theta_{up})+M_{0q_y}\sin(\theta_{up}) \\ 72 M_{\perp y'} &= M_{0q_y}\cos(\theta_{up})-M_{0q_x}\sin(\theta_{up}) \\ 73 M_{\perp z'} &= M_{0z} \\ 74 M_{0q_x} &= (M_{0x}\cos\phi - M_{0y}\sin\phi)\cos\phi \\ 75 M_{0q_y} &= (M_{0y}\sin\phi - M_{0x}\cos\phi)\sin\phi 63 76 64 77 Here, $M_{0x}$, $M_{0x}$, $M_{0z}$ are the x, y and z components … … 66 79 67 80 .. math:: 68 M_{0x} = M_0\cos\theta_M\cos\phi_M \\69 M_{0y} = M_0\sin\theta_M \\70 M_{0z} = -M_0\cos\theta_M\sin\phi_M81 M_{0x} &= M_0\cos\theta_M\cos\phi_M \\ 82 M_{0y} &= M_0\sin\theta_M \\ 83 M_{0z} &= -M_0\cos\theta_M\sin\phi_M 71 84 72 85 and the magnetization angles $\theta_M$ and $\phi_M$ are defined in … … 76 89 77 90 =========== ================================================================ 78 M0 _sld =$D_M M_0$79 Up_theta = $\theta_\mathrm{up}$80 M_theta = $\theta_M$81 M_phi = $\phi_M$82 Up_frac_i = (spin up)/(spin up + spin down) neutrons*before* the sample83 Up_frac_f = (spin up)/(spin up + spin down) neutrons*after* the sample91 M0:sld $D_M M_0$ 92 mtheta:sld $\theta_M$ 93 mphi:sld $\phi_M$ 94 up:angle $\theta_\mathrm{up}$ 95 up:frac_i $u_i$ = (spin up)/(spin up + spin down) *before* the sample 96 up:frac_f $u_f$ = (spin up)/(spin up + spin down) *after* the sample 84 97 =========== ================================================================ 85 98 86 99 .. note:: 87 The values of the ' Up_frac_i' and 'Up_frac_f' must be in the range 0 to 1.100 The values of the 'up:frac_i' and 'up:frac_f' must be in the range 0 to 1. 88 101 89 102 *Document History* 90 103 91 104 | 2015-05-02 Steve King 92 | 2017- 05-08Paul Kienzle105 | 2017-11-15 Paul Kienzle -
doc/guide/pd/polydispersity.rst
r75e4319 r22279a4 6 6 .. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 7 7 8 .. _polydispersityhelp: 9 8 10 Polydispersity Distributions 9 11 ---------------------------- 10 12 11 With some models in sasmodels we can calculate the average form factorfor a13 With some models in sasmodels we can calculate the average intensity for a 12 14 population of particles that exhibit size and/or orientational 13 polydispersity. The resultant form factoris normalized by the average15 polydispersity. The resultant intensity is normalized by the average 14 16 particle volume such that 15 17 … … 40 42 calculations are generally more robust with more data points or more angles. 41 43 42 The following sixdistribution functions are provided:44 The following distribution functions are provided: 43 45 44 46 * *Rectangular Distribution* -
doc/guide/resolution.rst
r1f058ea r0db85af 209 209 $x'_0 = x_0 \cos(\theta) + y_0 \sin(\theta)$ and 210 210 $y'_0 = -x_0 \sin(\theta) + y_0 \cos(\theta)$. 211 Note that the rotation angle is zero for a $x$ \ -\$y$ symmetric211 Note that the rotation angle is zero for a $x$-$y$ symmetric 212 212 elliptical Gaussian distribution. The $A$ is a normalization factor. 213 213 … … 233 233 234 234 Since the weighting factor on each of the bins is known, it is convenient to 235 transform $x'$ \ -\ $y'$ back to $x$\ -\$y$ coordinates (by rotating it235 transform $x'$-$y'$ back to $x$-$y$ coordinates (by rotating it 236 236 by $-\theta$ around the $z$\ -axis). 237 237 … … 254 254 y'_0 &= 0 255 255 256 while for a $x$ \ -\$y$ symmetric smear256 while for a $x$-$y$ symmetric smear 257 257 258 258 .. math::
Note: See TracChangeset
for help on using the changeset viewer.