Changeset 82592da in sasmodels
- Timestamp:
- Nov 6, 2017 1:12:33 PM (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:
- c11d09f
- Parents:
- 17db833
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/guide/orientation/orientation.rst
r3d40839 r82592da 62 62 care for large ranges of angle. 63 63 64 Note that the form factors for asymmetric particles are also performing 65 numerical integrations over one or more variables, so care should be taken, 66 especially with very large particles or more extreme aspect ratios. Users can 67 experiment with the values of *Npts* and *Nsigs*, the number of steps used in the 68 integration and the range spanned in number of standard deviations. The 69 standard deviation is entered in units of degrees. For a rectangular 70 (uniform) distribution the full width should be $\pm \sqrt(3)$ ~ 1.73 standard 71 deviations (this may be changed soon). 64 .. note:: 65 Note that the form factors for oriented particles are also performing 66 numerical integrations over one or more variables, so care should be taken, 67 especially with very large particles or more extreme aspect ratios. In such 68 cases results may not be accurate, particularly at very high Q, unless the model 69 has been specifically coded to use limiting forms of the scattering equations. 70 71 For best numerical results keep the $\theta$ distribution narrower than the $\phi$ 72 distribution. Thus for asymmetric particles, such as elliptical_cylinder, you may 73 need to reorder the sizes of the three axes to acheive the desired result. 74 This is due to the issues of mapping a rectangular distribution onto the 75 surface of a sphere. 72 76 73 Where appropriate, for best numerical results, keep $a < b < c$ and the 74 $\theta$ distribution narrower than the $\phi$ distribution. 77 Users can experiment with the values of *Npts* and *Nsigs*, the number of steps 78 used in the integration and the range spanned in number of standard deviations. 79 The standard deviation is entered in units of degrees. For a "rectangular" 80 distribution the full width should be $\pm \sqrt(3)$ ~ 1.73 standard deviations. 81 The new "uniform" distribution avoids this by letting you directly specify the 82 half width. 83 84 The angular distributions will be truncated outside of the range -180 to +180 85 degrees, so beware of using saying a broad Gaussian distribution with large value 86 of *Nsigs*, as the array of *Npts* may be truncated to many fewer points than would 87 give a good integration,as well as becoming rather meaningless. (At some point 88 in the future the actual polydispersity arrays may be made available to the user 89 for inspection.) 75 90 76 91 Some more detailed technical notes are provided in the developer section of … … 79 94 *Document History* 80 95 81 | 2017-1 0-27Richard Heenan96 | 2017-11-06 Richard Heenan -
sasmodels/models/core_shell_bicelle_elliptical.c
rbecded3 r82592da 92 92 93 93 // Compute effective radius in rotated coordinates 94 const double qr_hat = sqrt(square(r_major*q a) + square(r_minor*qb));95 const double qrshell_hat = sqrt(square((r_major+thick_rim)*q a)96 + square((r_minor+thick_rim)*q b));94 const double qr_hat = sqrt(square(r_major*qb) + square(r_minor*qa)); 95 const double qrshell_hat = sqrt(square((r_major+thick_rim)*qb) 96 + square((r_minor+thick_rim)*qa)); 97 97 const double be1 = sas_2J1x_x( qr_hat ); 98 98 const double be2 = sas_2J1x_x( qrshell_hat ); -
sasmodels/models/core_shell_bicelle_elliptical_belt_rough.c
r129bdc4 r82592da 91 91 double sigma) 92 92 { 93 // THIS NEEDS TESTING93 // integrated 2d seems to match 1d reasonably well, except perhaps at very high Q 94 94 // Vol1,2,3 and dr1,2,3 are now for Vcore, Vcore+rim, Vcore+face, 95 95 const double dr1 = -rhor - rhoh + rhoc + rhosolv; … … 103 103 104 104 // Compute effective radius in rotated coordinates 105 const double qr_hat = sqrt(square(r_major*q a) + square(r_minor*qb));105 const double qr_hat = sqrt(square(r_major*qb) + square(r_minor*qa)); 106 106 // does this need to be changed for the "missing corners" where there there is no "belt" ? 107 const double qrshell_hat = sqrt(square((r_major+thick_rim)*q a)108 + square((r_minor+thick_rim)*q b));107 const double qrshell_hat = sqrt(square((r_major+thick_rim)*qb) 108 + square((r_minor+thick_rim)*qa)); 109 109 const double be1 = sas_2J1x_x( qr_hat ); 110 110 const double be2 = sas_2J1x_x( qrshell_hat ); -
sasmodels/models/elliptical_cylinder.c
rbecded3 r82592da 28 28 //const double arg = radius_minor*sin_val; 29 29 double inner_sum=0; 30 for(int j=0;j< 20;j++) {31 //20 gauss points for the inner integral 32 const double theta = ( Gauss 20Z[j]*(vbj-vaj) + vaj + vbj )/2.0;30 for(int j=0;j<76;j++) { 31 //20 gauss points for the inner integral, increase to 76, RKH 6Nov2017 32 const double theta = ( Gauss76Z[j]*(vbj-vaj) + vaj + vbj )/2.0; 33 33 const double r = sin_val*sqrt(rA - rB*cos(theta)); 34 34 const double be = sas_2J1x_x(q*r); 35 inner_sum += Gauss 20Wt[j] * be * be;35 inner_sum += Gauss76Wt[j] * be * be; 36 36 } 37 37 //now calculate the value of the inner integral … … 61 61 // Compute: r = sqrt((radius_major*cos_nu)^2 + (radius_minor*cos_mu)^2) 62 62 // Given: radius_major = r_ratio * radius_minor 63 const double qr = radius_minor*sqrt(square(r_ratio*q a) + square(qb));63 const double qr = radius_minor*sqrt(square(r_ratio*qb) + square(qa)); 64 64 const double be = sas_2J1x_x(qr); 65 65 const double si = sas_sinx_x(qc*0.5*length);
Note: See TracChangeset
for help on using the changeset viewer.