Opened 2 years ago
Last modified 11 months ago
#702 new defect
Limiting cases of cylinder model
Reported by: | dirk | Owned by: | dirk |
---|---|---|---|
Priority: | major | Milestone: | SasView 4.3.0 |
Component: | sasmodels | Keywords: | |
Cc: | Work Package: | SasModels Redesign |
Description
The cylinder model should give the formfactor of a long, infinitely thin rod or thin disk if diameter or lengh is set to zero, respectively.
Attachments (2)
Change History (8)
Changed 19 months ago by pkienzle
Changed 19 months ago by pkienzle
comment:1 Changed 19 months ago by pkienzle
- Milestone changed from sasmodels WishList to SasView 4.2.0
comment:2 Changed 19 months ago by pkienzle
- Priority changed from minor to major
comment:3 Changed 19 months ago by pkienzle
- Type changed from enhancement to defect
comment:4 Changed 19 months ago by pkienzle
Inada 2005 (supplemental) gives the following for an infinite core-shell cylinder with core radius=0:
I(q) = pi L/q [drho V 2 J1(q r)/(q r)]^2
This equation gives the same curve shape as the finite cylinder, but the scale is off. Instead use:
I(q) = pi/L V/q [drho 2 J1(q r)/(q r)]^2
This matches the peaks well, but underestimates the dips. With minimal polydispersity or resolution the precise value of the dips won't matter and this approximation will be good enough. It breaks down at low q for shorter cylinder lengths.
Note: sasmodels kernels use V rather than V^{2} because the polydispersity loop does volume weighted normalization, which still doesn't explain the 1/L vs. L difference.
comment:5 Changed 19 months ago by pkienzle
Infinitely thin rod:
2Si(qL)/(qL) - [sin(qL/2)/(qL/2)]^2
Infinitely thin disk:
2/(qR)^2 [ 1 - 2 J1(2qR)/2qR ]
Pedersen, J.S., 1997. Analysis of small-angle scattering data from colloids and polymer solutions: modeling and least-squares fitting. Advances in Colloid and Interface Science 70, 171–210. doi:10.1016/S0001-8686(97)00312-6
comment:6 Changed 11 months ago by butler
- Milestone changed from SasView 4.2.0 to SasView 4.3.0
More practically, the cylinder model does not support carbon nanotubes, with length 10 um and diameter 1 nm.
Calculations for different numbers of integration steps attached. First image shows the highly oscillatory function that we are integrating at several q points. The second image shows the results for a few different optimization strategies. Trapezoidal method for 65000 points and 525000 points are indistinguishable on the graph, and so that is likely the true value.
Repeating the tests with different lengths, it seems that the current code with the 76 point Gaussian integration supports lengths up to 0.1 um. Switching to a 150 point Gaussian will allow up to 1-2 um. Using Gaussian integration with 1024 points (not shown) gives results within 1.5% of the 525000 point trapz. [1024 is a nicer number for GPUs to work with, though any multiple of 4 ought to be fine.]
Simulations were run with explore/symint.py in the ticket-776-orientation branch.