Update src/nmreval/models/temperature.py #312
@ -1,3 +1,5 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ..utils.constants import kB
|
||||
@ -72,3 +74,25 @@ class Ecoop:
|
||||
ec = e_infty * np.exp(-mu * (x - ta) / e_infty)
|
||||
|
||||
return tau0 * np.exp((e_infty + ec) / x)
|
||||
|
||||
|
||||
class Tanaka:
|
||||
name = 'Tanaka two-state model'
|
||||
type = 'Temperature'
|
||||
equation = r'\tau_0 exp[(E_{a}^{f} + (E_{a}^{s}-E_{a}^{f})[1/(1+exp[(\DeltaE-T \Delta\sigma)/(k_{}B T)])]/(k_{B} T)]'
|
||||
params = [r'\tau_{0}', 'E_{a}^{f}', 'E_{a}^{s}', r'\DeltaE', r'\Delta\sigma']
|
||||
bounds = [(0, None), (0, None), (0, None), (None, 0), (None, 0)]
|
||||
choices = [('temperature', 'temp_axis', {'T': 'T', '1000 K/T': '1000/T'})]
|
||||
|
||||
@staticmethod
|
||||
def func(x, tau0: float, ea_f: float, ea_s: float, e_D: float, sigma_D: float, temp_axis: str = 'T'):
|
||||
|
||||
if temp_axis == '1000/T':
|
||||
x = 1000/x
|
||||
|
||||
kT = kB * x
|
||||
|
||||
exponent = 1 / (1 + np.exp((e_D - x * sigma_D) / kT))
|
||||
|
||||
return tau0 * np.exp((ea_f + (ea_s - ea_f) * exponent) / kT)
|
||||
|
||||
|
Reference in New Issue
Block a user