Opened 6 years ago
Closed 5 years ago
#472 closed enhancement (fixed)
reparameterize Teubner-Strey
Reported by: | pkienzle | Owned by: | ajj |
---|---|---|---|
Priority: | critical | Milestone: | SasView 4.0.0 |
Component: | SasView | Keywords: | |
Cc: | Work Package: | SasModels Redesign |
Description
The current implementation of Teubner-Strey use parameters scale, c1, c2 and background. Since scale and background are automatic parameters in sasmodels, this was changed to a2, c1 and c2.
Propose changing the parameters to the more physically meaningful repeat length d, correlation length xi and a scale factor. This will give more useful parameter uncertainties.
A little bit of algebra gives a2/c2 and c1/c2 in terms of xi and d:
a2/c2 = (xi^{-2} + (2 pi/d)^{2})^{2}
c1/c2 = (xi^{-2} - (2 pi/d)^{2})^{2}
The scale factor comes from the normalized form (Schubert, 1994):
I(q) = (8 pi c2 eta^{2} / xi) / (a2 + c1 q^{2} + c2 q^{4})
where
eta^{2} = phi(1-phi)(delta rho)^{2}
for volume fraction phi and scattering length density difference delta rho.
The following parameters should be sufficient:
sld, sld_solvent, phi in (0,1), xi > 0, and d > 0
using
I(q) = (8 pi phi(1-phi)(delta rho)^{2}) / ((1+(2 pi xi/d)^{2})^{2} + (1-(2 pi xi/d)^{2})^{2} q^{2} + q^{4})
with two of phi, sld and sld_solvent fixed.
Change History (11)
comment:1 Changed 6 years ago by Paul Kienzle <pkienzle@…>
comment:2 Changed 6 years ago by butler
- Priority changed from minor to major
- Work Package changed from SasModels New Model to SasModels Redesign
comment:3 Changed 6 years ago by butler
- Milestone changed from WishList to SasView 4.0.0
comment:4 Changed 6 years ago by ajj
- Priority changed from major to critical
comment:5 Changed 6 years ago by ajj
- Owner set to ajj
- Status changed from new to assigned
comment:6 Changed 5 years ago by butler
This is the same request as ticket #530 by Wim Bouwman. There he is concerned about the instabilities with this parametrization. Gives reference and attachment for how to change — should compare against Paul Kienzle's approach above.
comment:7 Changed 5 years ago by butler
- Milestone changed from SasView 4.0.0 to SasView Next Release +1
- Type changed from defect to enhancement
with the 4.0 release being way late, we clearly don't have the bandwidth to deal with such a change now. Moving to +1
comment:8 Changed 5 years ago by butler
- Milestone changed from SasView Next Release +1 to SasView 4.0.0
Moving back to 4.0 as part of ticket #643 admonition to finalize parameter and model names so as to remain compatible in the future.
comment:9 Changed 5 years ago by ajj
Correct reparameterisation is as per (Schubert, 1994) and (Endo, 2001)
a2/c2 = (xi^{-2} + (2 pi/d)^{2})^{2}
c1/c2 = 2(xi^{-2} - (2 pi/d)^{2}) ←- difference is here compared to original ticket text
The scale factor comes from the normalized form (Schubert, 1994):
I(q) = (8 pi c2 eta^{2} / xi) / (a2 + c1 q^{2} + c2 q^{4})
where
eta^{2} = phi(1-phi)(delta rho)^{2}
for volume fraction phi and scattering length density difference delta rho.
The following parameters should be sufficient:
sld, sld_solvent, phi in (0,1), xi > 0, and d > 0
using
I(q) = (8 pi phi(1-phi)(delta rho)^{2}) / ((xi^{-2}+(2 pi/d)^{2})^{2} + 2(xi^{-2} - (2 pi/d)^{2}) q^{2} + q^{4})
with two of phi, sld and sld_solvent fixed.
comment:10 Changed 5 years ago by ajj
So it seems that we have had various implementations over time:
1) Igor + libigor
2) sansview + libigor
3) a python version
4) a c++ version replacing the python version (ILL 2012)
5) version in sasmodels
in leaving (1) it seems that correct normalisation of parameters was not transferred and so 2→5 are all "incorrectly" normalised. They all have the correct functional form, but the physical meaning of the parameters and how one extracts the physical meaning varies.
The update with this ticket will aim to match (1), since the citation is from a paper with Steve Kline as an author (along with R Strey) and he wrote that model, so we will take it as definitive.
comment:11 Changed 5 years ago by ajj
- Resolution set to fixed
- Status changed from assigned to closed
In [bc87305316c560a93eeaf77db05eb6721733d636]: