Ignore:
Timestamp:
Nov 29, 2017 11:25:39 PM (7 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, core_shell_microgels, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
10ee838
Parents:
0e55afe
Message:

core_shell_parallelepiped: simplify the calculation and update the docs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/core_shell_parallelepiped.py

    r0e55afe r4493288  
    4040amplitudes of the core and the slabs on the edges. 
    4141 
    42 the scattering amplitude is computed for a particular orientation of the core-shell 
    43 parallelepiped with respect to the scattering vector and then averaged over all 
    44 possible orientations, where $\alpha$ is the angle between the $z$ axis and the longest axis $C$ 
    45 of the parallelepiped, $\beta$ is the angle between projection of the particle in the $xy$ detector plane and the $y$ axis. 
    46  
    47 .. math:: 
    48     \begin{align*} 
    49     F(Q)&=A B C (\rho_\text{core}-\rho_\text{solvent})  S(A \sin\alpha \sin\beta)S(B \sin\alpha \cos\beta)S(C \cos\alpha) \\ 
    50     &+ 2t_A B C (\rho_\text{A}-\rho_\text{solvent})  \left[S((A+t_A) \sin\alpha \sin\beta)-S(A \sin\alpha \sin\beta)\right] S(B \sin\alpha \cos\beta) S(C \cos\alpha)\\ 
    51     &+ 2 A t_B C (\rho_\text{B}-\rho_\text{solvent})  S(A \sin\alpha \sin\beta) \left[S((B+t_B) \sin\alpha \cos\beta)-S(B \sin\alpha \cos\beta)\right] S(C \cos\alpha)\\ 
    52     &+ 2 A B t_C (\rho_\text{C}-\rho_\text{solvent}) S(A \sin\alpha \sin\beta) S(B \sin\alpha \cos\beta) \left[S((C+t_C) \cos\alpha)-S(C \cos\alpha)\right] 
    53     \end{align*} 
     42the scattering amplitude is computed for a particular orientation of the 
     43core-shell parallelepiped with respect to the scattering vector and then 
     44averaged over all possible orientations, where $\alpha$ is the angle between 
     45the $z$ axis and the $C$ axis of the parallelepiped, $\beta$ is 
     46the angle between projection of the particle in the $xy$ detector plane 
     47and the $y$ axis. 
     48 
     49.. math:: 
     50 
     51    F(Q) 
     52    &= (\rho_\text{core}-\rho_\text{solvent}) 
     53       S(Q_A, A) S(Q_B, B) S(Q_C, C) \\ 
     54    &+ (\rho_\text{A}-\rho_\text{solvent}) 
     55        \left[S(Q_A, A+2t_A) - S(Q_A, Q)\right] S(Q_B, B) S(Q_C, C) \\ 
     56    &+ (\rho_\text{B}-\rho_\text{solvent}) 
     57        S(Q_A, A) \left[S(Q_B, B+2t_B) - S(Q_B, B)\right] S(Q_C, C) \\ 
     58    &+ (\rho_\text{C}-\rho_\text{solvent}) 
     59        S(Q_A, A) S(Q_B, B) \left[S(Q_C, C+2t_C) - S(Q_C, C)\right] 
    5460 
    5561with 
     
    5763.. math:: 
    5864 
    59     S(x) = \frac{\sin \tfrac{1}{2}Q x}{\tfrac{1}{2}Q x} 
    60  
    61 where $\rho_\text{core}$, $\rho_\text{A}$, $\rho_\text{B}$ and $\rho_\text{C}$ are 
    62 the scattering length of the parallelepiped core, and the rectangular slabs of 
    63 thickness $t_A$, $t_B$ and $t_C$, respectively. 
    64 $\rho_\text{solvent}$ is the scattering length of the solvent. 
     65    S(Q, L) = L \frac{\sin \tfrac{1}{2} Q L}{\tfrac{1}{2} Q L} 
     66 
     67and 
     68 
     69.. math:: 
     70 
     71    Q_A &= \sin\alpha \sin\beta \\ 
     72    Q_B &= \sin\alpha \cos\beta \\ 
     73    Q_C &= \cos\alpha 
     74 
     75 
     76where $\rho_\text{core}$, $\rho_\text{A}$, $\rho_\text{B}$ and $\rho_\text{C}$ 
     77are the scattering length of the parallelepiped core, and the rectangular 
     78slabs of thickness $t_A$, $t_B$ and $t_C$, respectively. $\rho_\text{solvent}$ 
     79is the scattering length of the solvent. 
    6580 
    6681FITTING NOTES 
     82~~~~~~~~~~~~~ 
     83 
    6784If the scale is set equal to the particle volume fraction, $\phi$, the returned 
    68 value is the scattered intensity per unit volume, $I(q) = \phi P(q)$. 
    69 However, **no interparticle interference effects are included in this 
    70 calculation.** 
     85value is the scattered intensity per unit volume, $I(q) = \phi P(q)$. However, 
     86**no interparticle interference effects are included in this calculation.** 
    7187 
    7288There are many parameters in this model. Hold as many fixed as possible with 
     
    7793NB: The 2nd virial coefficient of the core_shell_parallelepiped is calculated 
    7894based on the the averaged effective radius $(=\sqrt{(A+2t_A)(B+2t_B)/\pi})$ 
    79 and length $(C+2t_C)$ values, after appropriately 
    80 sorting the three dimensions to give an oblate or prolate particle, to give an 
    81 effective radius, for $S(Q)$ when $P(Q) * S(Q)$ is applied. 
     95and length $(C+2t_C)$ values, after appropriately sorting the three dimensions 
     96to give an oblate or prolate particle, to give an effective radius, 
     97for $S(Q)$ when $P(Q) * S(Q)$ is applied. 
    8298 
    8399For 2d data the orientation of the particle is required, described using 
    84 angles $\theta$, $\phi$ and $\Psi$ as in the diagrams below, for further details 
    85 of the calculation and angular dispersions see :ref:`orientation` . 
     100angles $\theta$, $\phi$ and $\Psi$ as in the diagrams below, for further 
     101details of the calculation and angular dispersions see :ref:`orientation`. 
    86102The angle $\Psi$ is the rotational angle around the *long_c* axis. For example, 
    87103$\Psi = 0$ when the *short_b* axis is parallel to the *x*-axis of the detector. 
    88104 
    89 For 2d, constraints must be applied during fitting to ensure that the inequality 
    90 $A < B < C$ is not violated, and hence the correct definition of angles is preserved. The calculation will not report an error, 
     105For 2d, constraints must be applied during fitting to ensure that the 
     106inequality $A < B < C$ is not violated, and hence the correct definition 
     107of angles is preserved. The calculation will not report an error, 
    91108but the results may be not correct. 
    92109 
     
    173190 
    174191    # surface average radius (rough approximation) 
    175     surf_rad = sqrt((length_a + 2.0*thick_rim_a) * (length_b + 2.0*thick_rim_b) / pi) 
     192    surf_rad = sqrt((length_a + 2.0*thick_rim_a) 
     193                    * (length_b + 2.0*thick_rim_b) / pi) 
    176194 
    177195    height = length_c + 2.0*thick_rim_c 
    178196 
    179     ddd = 0.75 * surf_rad * (2 * surf_rad * height + (height + surf_rad) * (height + pi * surf_rad)) 
     197    ddd = (0.75 * surf_rad * (2 * surf_rad * height 
     198           + (height + surf_rad) * (height + pi * surf_rad))) 
    180199    return 0.5 * (ddd) ** (1. / 3.) 
    181200 
     
    212231            psi_pd=10, psi_pd_n=1) 
    213232 
    214 # rkh 7/4/17 add random unit test for 2d, note make all params different, 2d values not tested against other codes or models 
     233# rkh 7/4/17 add random unit test for 2d, note make all params different, 
     234# 2d values not tested against other codes or models 
    215235if 0:  # pak: model rewrite; need to update tests 
    216236    qx, qy = 0.2 * cos(pi/6.), 0.2 * sin(pi/6.) 
Note: See TracChangeset for help on using the changeset viewer.