Template Struct RT

Struct Documentation

template<typename Real>
struct RT

Radiation transfer solver.

Public Functions

inline RT(const Grid<Real> &grid, const int num_rays)

TODO: num_rays of buffers can be reduced considering ray directions.

inline void save(const std::string &file_path) const
inline void load(const std::string &file_path)
inline void mpi_exchange_halo(const Grid<Real> &grid, const mpi::Shape &mpi_shape)

Exchange halo data between MPI processes.

inline void mpi_exchange_halo_x(const Grid<Real> &grid, const mpi::Shape &mpi_shape)

Exchange halo data (x-direction)

inline void mpi_exchange_halo_y(const Grid<Real> &grid, const mpi::Shape &mpi_shape)

Exchange halo data (y-direction)

inline void mpi_exchange_halo_z(const Grid<Real> &grid, const mpi::Shape &mpi_shape)

Exchange halo data (z-direction)

inline void single_sweep(const Grid<Real> &grid)

Sweep over the local grid by short characteristic method.

Note

Currently, only uniform grid is supported.

inline Real get_max_diff(const Grid<Real> &grid) const

Get maximum difference from previous state TODO: Reduce the number of evaluation (evaluate only at boundaries).

template<typename BoundaryCondition>
inline void solve(const Grid<Real> &grid, const mpi::Shape &mpi_shape, const Real tolerance, const int max_iters, BoundaryCondition &&bc)

Solve radiative transfer equation.

All necessary information should be stored in the rte_t object.

inline constexpr Real integrate_optical_thickness(const Real abs_coeff_u, const Real abs_coeff_d, const Real ds) const noexcept

Integrate the optical thickness along a ray segment.

inline Real integrate_radiative_intensity(const Real rint_u, const Real src_func_u, const Real src_func_d, const Real dtau) const noexcept

Integrate the radiative intensity along a ray segment. TODO: Switch eps_tau between single and double precision.

inline constexpr Real bilinear_interpolation(const Real cx, const Real cy, const Real u00, const Real u10, const Real u01, const Real u11) const noexcept

Bilinear interpolation.

Public Members

Array4D<Real> rint

Radiation intensity.

Array4D<Real> rint_old
Array3D<Real> src_func

Source function.

Array3D<Real> abs_coeff

Absorption coefficient.

AngularQuadrature<Real> ang_quad

Angular quadrature.

Array3D<Real> recv_buff_x_pos

MPI communication buffers.

Array3D<Real> recv_buff_x_neg
Array3D<Real> recv_buff_y_pos
Array3D<Real> recv_buff_y_neg
Array3D<Real> recv_buff_z_pos
Array3D<Real> recv_buff_z_neg
Array3D<Real> send_buff_x_pos
Array3D<Real> send_buff_x_neg
Array3D<Real> send_buff_y_pos
Array3D<Real> send_buff_y_neg
Array3D<Real> send_buff_z_pos
Array3D<Real> send_buff_z_neg
const int ib0

Left/right indices.

const int ib1
const int jb0
const int jb1
const int kb0
const int kb1