cppdisort
- class pyarts3.arts.cppdisort(*args, **kwargs)
A DISORT object.
This offers a low level interface to the DISORT solver. See
DisortSettings
for a higher level interface. Especially, see the workspace variables for the type as the workspace methods that operate on them explains the interface on a higher level.The implementation is based on the Pythonic-DISORT implementation, which is a from scratch reimplementation of DISORT in Python. The interface here is mostly mimicking the Pythonic-DISORT interface, with some exceptions to improve performance and usability.
The two main differences are that we use a custom Legendre-Gauss quadrature implementation, that we use the BandMatrix LAPACK solver for the left-hand side of the linear system, and that we use a pure real eigenvalue solver for the matrix decomposition that’s been ported and optimized in C++.
Warning
The DISORT implementation is still being tested. Initial results look promising, but please report any issues you find. Initial tests show that the implementation is about 6x faster than CDISORT. We do not have numbers on the performance compared to Pythonic-DISORT because Pythonic-DISORT is not optimized for speed.
Warning
The internals of this implementation calls LAPACK routines. Please ensure that your LAPACK installation is either single threaded or uses OpenMP. Mixing multiple threading implementations will lead to significant slowdowns (or a complete stall of the program).
The relevant references are:
Pythonic-DISORT: Ho [10]
Original DISORT: Stamnes et al. [33]
Legendre-Gauss quadrature: Bogaert [4]
BandMatrix solver: Barrett et al. [3]
Real eigenvalue solver (original sources, the executed code is ported to C++): Buras et al. [6], Dongarra and Moler [7], Parlett and Reinsch [24], Mitchell [21]
Overview
Method
Compute the flux
Method
Compute the downward flux
Method
Compute the upward flux
Method
Compute the intensity
Method
Compute the intensity
Operator
Return self==value.
Operator
__format__(self, arg: str, /) -> str
Operator
Return self>=value.
Operator
Helper for pickle.
Operator
Return self>value.
Operator
Return hash(self).
Operator
Overloaded function.
Operator
Return self<=value.
Operator
Return self<value.
Operator
Return self!=value.
Operator
__repr__(self) -> str
Operator
__str__(self) -> str
Constructors
- __init__(self, tau_arr: pyarts3.arts.AscendingGrid, omega_arr: pyarts3.arts.Vector, NQuad: int, Leg_coeffs_all: pyarts3.arts.Matrix, mu0: float, I0: float, phi0: float, NLeg: int | None = None, NFourier: int | None = None, b_pos: pyarts3.arts.Matrix | None = None, b_neg: pyarts3.arts.Matrix | None = None, f_arr: pyarts3.arts.Vector | None = None, BDRF_Fourier_modes: pyarts3.arts.disort.ArrayOfBDRF = pyarts3.arts.disort.ArrayOfBDRF([]), s_poly_coeffs: pyarts3.arts.Matrix | None = None) None
- __init__(self) None
- __init__(self, arg: pyarts3.arts.cppdisort) None
Overloaded function.
__init__(self, tau_arr: pyarts3.arts.AscendingGrid, omega_arr: pyarts3.arts.Vector, NQuad: int, Leg_coeffs_all: pyarts3.arts.Matrix, mu0: float, I0: float, phi0: float, NLeg: int | None = None, NFourier: int | None = None, b_pos: pyarts3.arts.Matrix | None = None, b_neg: pyarts3.arts.Matrix | None = None, f_arr: pyarts3.arts.Vector | None = None, BDRF_Fourier_modes: pyarts3.arts.disort.ArrayOfBDRF = pyarts3.arts.disort.ArrayOfBDRF([]), s_poly_coeffs: pyarts3.arts.Matrix | None = None) -> None
Run disort, mostly mimicying the 0.7 Pythonic-DISORT interface.
__init__(self) -> None
__init__(self, arg: pyarts3.arts.cppdisort) -> None
Methods
- flux(self, tau: pyarts3.arts.AscendingGrid) pyarts3.arts.Matrix
Compute the flux
- pydisort_flux_down(self, tau: pyarts3.arts.Vector) pyarts3.arts.ArrayOfVector
Compute the downward flux
- pydisort_flux_up(self, tau: pyarts3.arts.Vector) pyarts3.arts.Vector
Compute the upward flux
- pydisort_u(self, tau: pyarts3.arts.Vector, phi: pyarts3.arts.Vector) pyarts3.arts.Tensor3
Compute the intensity
- u(self, tau: pyarts3.arts.AscendingGrid, phi: pyarts3.arts.Vector) pyarts3.arts.Tensor3
Compute the intensity
Operators
- __eq__(value, /)
Return self==value.
- __ge__(value, /)
Return self>=value.
- __getstate__()
Helper for pickle.
- __gt__(value, /)
Return self>value.
- __hash__()
Return hash(self).
- __init__(self, tau_arr: pyarts3.arts.AscendingGrid, omega_arr: pyarts3.arts.Vector, NQuad: int, Leg_coeffs_all: pyarts3.arts.Matrix, mu0: float, I0: float, phi0: float, NLeg: int | None = None, NFourier: int | None = None, b_pos: pyarts3.arts.Matrix | None = None, b_neg: pyarts3.arts.Matrix | None = None, f_arr: pyarts3.arts.Vector | None = None, BDRF_Fourier_modes: pyarts3.arts.disort.ArrayOfBDRF = pyarts3.arts.disort.ArrayOfBDRF([]), s_poly_coeffs: pyarts3.arts.Matrix | None = None) None
- __init__(self) None
- __init__(self, arg: pyarts3.arts.cppdisort) None
Overloaded function.
__init__(self, tau_arr: pyarts3.arts.AscendingGrid, omega_arr: pyarts3.arts.Vector, NQuad: int, Leg_coeffs_all: pyarts3.arts.Matrix, mu0: float, I0: float, phi0: float, NLeg: int | None = None, NFourier: int | None = None, b_pos: pyarts3.arts.Matrix | None = None, b_neg: pyarts3.arts.Matrix | None = None, f_arr: pyarts3.arts.Vector | None = None, BDRF_Fourier_modes: pyarts3.arts.disort.ArrayOfBDRF = pyarts3.arts.disort.ArrayOfBDRF([]), s_poly_coeffs: pyarts3.arts.Matrix | None = None) -> None
Run disort, mostly mimicying the 0.7 Pythonic-DISORT interface.
__init__(self) -> None
__init__(self, arg: pyarts3.arts.cppdisort) -> None
- __le__(value, /)
Return self<=value.
- __lt__(value, /)
Return self<value.
- __ne__(value, /)
Return self!=value.