cppdisort
- class pyarts3.arts.cppdisort(*args, **kwargs)
A DISORT object.
This offers a low level interface to the DISORT solver. See
DisortSettingsfor 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 [11]
Original DISORT: Stamnes et al. [37]
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 [26], Mitchell [22]
Overview
Method
Compute upward, downward-diffuse, downward-direct flux and DFDT
Method
Compute the intensity
Method
Compute the intensity
Method
Compute intensity at user polar-angle cosines using DISORT source reconstruction and formal ray integration
Method
Compute IMS/TMS-corrected intensity at user polar-angle cosines
Operator
Return self==value.
Operator
__format__(self, arg: str, /) -> str
Operator
Return self>=value.
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, delta_m_peak: 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, delta_m_peak: 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 upward, downward-diffuse, downward-direct flux and DFDT
- 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
- u_user(self, mu: pyarts3.arts.Vector, tau: pyarts3.arts.AscendingGrid, phi: pyarts3.arts.Vector) pyarts3.arts.Tensor3
Compute intensity at user polar-angle cosines using DISORT source reconstruction and formal ray integration
- u_user_corr(self, mu: pyarts3.arts.Vector, tau: pyarts3.arts.AscendingGrid, phi: pyarts3.arts.Vector) pyarts3.arts.Tensor3
Compute IMS/TMS-corrected intensity at user polar-angle cosines
Operators
- __eq__(value, /)
Return self==value.
- __ge__(value, /)
Return self>=value.
- __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, delta_m_peak: 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, delta_m_peak: 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.