forked from IPKM/nmreval
add HN model with independent slopes
This commit is contained in:
parent
3149a3f958
commit
5db6a9f2c5
@ -54,10 +54,31 @@ class HavriliakNegamiBDS(_AbstractBDS):
|
|||||||
name = 'Havriliak-Negami'
|
name = 'Havriliak-Negami'
|
||||||
equation = r'\Delta\epsilon / [1-(i\omega\tau)^{\gamma}]^{\alpha}'
|
equation = r'\Delta\epsilon / [1-(i\omega\tau)^{\gamma}]^{\alpha}'
|
||||||
params = _AbstractBDS.params + [r'\alpha', r'\gamma']
|
params = _AbstractBDS.params + [r'\alpha', r'\gamma']
|
||||||
bounds = _AbstractBDS.bounds + [(0, 1), (0, 1)]
|
bounds = _AbstractBDS.bounds + [(0, 1), (0, None)]
|
||||||
susceptibility = HavriliakNegami.susceptibility
|
susceptibility = HavriliakNegami.susceptibility
|
||||||
|
|
||||||
|
|
||||||
|
class HavriliakNegamiAlphaGammaBDS:
|
||||||
|
type = 'Dielectric Spectroscopy'
|
||||||
|
name = 'Havriliak-Negami (ind. slopes)'
|
||||||
|
equation = r'\Delta\epsilon / [1-(i\omega\tau)^{\gamma}]^{\alpha}'
|
||||||
|
params = [r'\Delta\epsilon', r'\tau_{0}', r'\alpha', r'\alpha\gamma']
|
||||||
|
bounds = [(0, None), (0, None), (0, 1), (0, 1)]
|
||||||
|
iscomplex = True
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def func(x, deps, tau, alpha, alphagamma, complex_mode: int = 0, **kwargs):
|
||||||
|
chi = deps * HavriliakNegami.susceptibility(2*np.pi*x, tau, alpha, alphagamma/alpha, **kwargs)
|
||||||
|
if complex_mode == 0:
|
||||||
|
return chi
|
||||||
|
elif complex_mode == 1:
|
||||||
|
return chi.real
|
||||||
|
elif complex_mode == 2:
|
||||||
|
return chi.imag
|
||||||
|
else:
|
||||||
|
raise ValueError(f'{complex_mode!r} is not 0, 1, 2')
|
||||||
|
|
||||||
|
|
||||||
class KWWBDS(_AbstractBDS):
|
class KWWBDS(_AbstractBDS):
|
||||||
name = 'KWW'
|
name = 'KWW'
|
||||||
params = _AbstractBDS.params + [r'\beta']
|
params = _AbstractBDS.params + [r'\beta']
|
||||||
|
Loading…
Reference in New Issue
Block a user