Changeset 82592da in sasmodels


Ignore:
Timestamp:
Nov 6, 2017 1:12:33 PM (6 years ago)
Author:
richardh
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
Message:

swapped 2d qa with qb in three elliptical particles, edits to orientation doc

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • doc/guide/orientation/orientation.rst

    r3d40839 r82592da  
    6262care for large ranges of angle. 
    6363 
    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. 
    7276 
    73 Where appropriate, for best numerical results, keep $a < b < c$ and the 
    74 $\theta$ distribution narrower than the $\phi$ distribution. 
     77Users can experiment with the values of *Npts* and *Nsigs*, the number of steps  
     78used in the integration and the range spanned in number of standard deviations.  
     79The standard deviation is entered in units of degrees. For a "rectangular"  
     80distribution the full width should be $\pm \sqrt(3)$ ~ 1.73 standard deviations.  
     81The new "uniform" distribution avoids this by letting you directly specify the  
     82half width. 
     83 
     84The angular distributions will be truncated outside of the range -180 to +180  
     85degrees, so beware of using saying a broad Gaussian distribution with large value 
     86of *Nsigs*, as the array of *Npts* may be truncated to many fewer points than would  
     87give a good integration,as well as becoming rather meaningless. (At some point  
     88in the future the actual polydispersity arrays may be made available to the user  
     89for inspection.) 
    7590 
    7691Some more detailed technical notes are provided in the developer section of 
     
    7994*Document History* 
    8095 
    81 | 2017-10-27 Richard Heenan 
     96| 2017-11-06 Richard Heenan 
  • sasmodels/models/core_shell_bicelle_elliptical.c

    rbecded3 r82592da  
    9292 
    9393    // Compute effective radius in rotated coordinates 
    94     const double qr_hat = sqrt(square(r_major*qa) + square(r_minor*qb)); 
    95     const double qrshell_hat = sqrt(square((r_major+thick_rim)*qa) 
    96                                    + square((r_minor+thick_rim)*qb)); 
     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)); 
    9797    const double be1 = sas_2J1x_x( qr_hat ); 
    9898    const double be2 = sas_2J1x_x( qrshell_hat ); 
  • sasmodels/models/core_shell_bicelle_elliptical_belt_rough.c

    r129bdc4 r82592da  
    9191          double sigma) 
    9292{ 
    93     // THIS NEEDS TESTING 
     93    // integrated 2d seems to match 1d reasonably well, except perhaps at very high Q 
    9494    // Vol1,2,3 and dr1,2,3 are now for Vcore, Vcore+rim, Vcore+face, 
    9595    const double dr1 = -rhor - rhoh + rhoc + rhosolv; 
     
    103103 
    104104    // Compute effective radius in rotated coordinates 
    105     const double qr_hat = sqrt(square(r_major*qa) + square(r_minor*qb)); 
     105    const double qr_hat = sqrt(square(r_major*qb) + square(r_minor*qa)); 
    106106    // 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)*qa) 
    108                                    + square((r_minor+thick_rim)*qb)); 
     107    const double qrshell_hat = sqrt(square((r_major+thick_rim)*qb) 
     108                                   + square((r_minor+thick_rim)*qa)); 
    109109    const double be1 = sas_2J1x_x( qr_hat ); 
    110110    const double be2 = sas_2J1x_x( qrshell_hat ); 
  • sasmodels/models/elliptical_cylinder.c

    rbecded3 r82592da  
    2828        //const double arg = radius_minor*sin_val; 
    2929        double inner_sum=0; 
    30         for(int j=0;j<20;j++) { 
    31             //20 gauss points for the inner integral 
    32             const double theta = ( Gauss20Z[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; 
    3333            const double r = sin_val*sqrt(rA - rB*cos(theta)); 
    3434            const double be = sas_2J1x_x(q*r); 
    35             inner_sum += Gauss20Wt[j] * be * be; 
     35            inner_sum += Gauss76Wt[j] * be * be; 
    3636        } 
    3737        //now calculate the value of the inner integral 
     
    6161    // Compute:  r = sqrt((radius_major*cos_nu)^2 + (radius_minor*cos_mu)^2) 
    6262    // Given:    radius_major = r_ratio * radius_minor 
    63     const double qr = radius_minor*sqrt(square(r_ratio*qa) + square(qb)); 
     63    const double qr = radius_minor*sqrt(square(r_ratio*qb) + square(qa)); 
    6464    const double be = sas_2J1x_x(qr); 
    6565    const double si = sas_sinx_x(qc*0.5*length); 
Note: See TracChangeset for help on using the changeset viewer.