Source code for cortecs.eval.eval_polynomial
import jax
import jax.numpy as jnp
[docs]
@jax.jit
def eval_polynomial(
temperature,
pressure,
wavelength,
temperatures,
pressures,
wavelengths,
fitter_results,
**kwargs,
):
"""
evaluates the polynomial at a given temperature and pressure.
Inputs
------
temperature: float
temperature in K.
pressure: float
pressure in bar.
wavelength: float
wavelength in microns.
temperatures: array-like
temperature grid.
pressures: array-like
pressure grid.
wavelengths: array-like
wavelength grid.
fitter_results: array-like
the PCA coefficients.
Returns
-------
xsec_int: float
The cross section at the given temperature and pressure.
"""
TT = jnp.log10(temperature)
PP = jnp.log10(pressure)
coeffs = fitter_results[1]
j = jnp.argmin(jnp.abs(wavelengths - wavelength))
z2 = (
1.0,
TT,
PP,
TT**2,
TT**2 * PP,
TT**2 * PP**2,
TT * PP**2,
TT * PP,
TT * PP**3,
PP**4,
PP**5,
PP**6,
PP**7,
PP**12,
TT * PP**9,
TT**0.25,
)
Nterms = len(z2)
xsec_int = 0.0
for k in range(Nterms):
xsec_int += z2[k] * coeffs[j, k]
return xsec_int