|
Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website |
Adiabatic constant-volume reactor: the chemistry of one cell over a splitting step, integrated with RODAS. More...
#include <Kokkos_Core.hpp>#include <cstdint>#include "kinetics.h"#include "rosenbrock.h"#include "sparse_lu.h"#include "thermo.h"Go to the source code of this file.
Classes | |
| struct | chemistry::ReactorOptions |
| struct | chemistry::ConstantVolumeReactor< MemorySpace > |
| Adiabatic, constant-volume reactor at density rho with state y = (Y_1 .. Y_Ns, T): dY_k/dt = W_k omega_k / rho, dT/dt = -sum_k u_k omega_k / (rho cv), with u_k the molar internal energies. The ODE system of integrate(). More... | |
| struct | chemistry::IgnitionObserver |
| Ignition delay as the time of the maximum of dT/dt: the vertex of the parabola through the largest sample and its two neighbors. The reactor has ignited once dT/dt has since fallen below half that maximum: the thermal runaway is over, however small the temperature rise (very lean mixtures). More... | |
Namespaces | |
| namespace | chemistry |
Functions | |
| bool | chemistry::use_sparse_lu (const ReactorOptions &options, const Mechanism &mechanism) |
| Whether a mechanism's reactors use the sparse LU: as options.sparse says, or automatically from 30 species when the factors of the static pattern fill at most 60% of the dense matrix (GRI-3.0 53%: sparse; on an A100 the sparse LU is about 3x faster at 100 species). | |
| template<typename MemorySpace > | |
| KOKKOS_INLINE_FUNCTION uint32_t | chemistry::reactor_fast_size (const KineticsTable< MemorySpace > &kinetics, const SparseLUPattern< MemorySpace > *sparse=nullptr) |
| Doubles of the part of advance_reactor()'s work memory that can be in fast (team scratch) memory: the state, the factors and the integrator's vectors, the most used in the factorization and solves. | |
| template<typename MemorySpace > | |
| KOKKOS_INLINE_FUNCTION uint32_t | chemistry::reactor_work_size (const KineticsTable< MemorySpace > &kinetics, const SparseLUPattern< MemorySpace > *sparse=nullptr) |
| Doubles of work memory advance_reactor() needs, the linear solver's included: dense, or sparse with a SparseLUPattern. | |
| template<bool Sparse = false, typename Lanes , typename MemorySpace , typename Observer = NoObserver> | |
| KOKKOS_INLINE_FUNCTION RosenbrockResult | chemistry::advance_reactor (const Lanes &lanes, const ThermoTable< MemorySpace > &thermo, const KineticsTable< MemorySpace > &kinetics, const double rho, const double dt, double *Y, double &T, double &h, const ReactorOptions &options, double *work, uint32_t *pivot, Observer &&observer=Observer(), const SparseLUPattern< MemorySpace > *sparse=nullptr, double *fast=nullptr, const double *forcing=nullptr) |
| Advance one adiabatic constant-volume reactor over dt: integrate (Y, T), then clip negative mass fractions, renormalize, and take T from the initial internal energy (so energy is exact). Negative initial mass fractions are clipped the same way before integrating. | |
| template<typename MemorySpace , typename Observer = NoObserver> | |
| KOKKOS_INLINE_FUNCTION RosenbrockResult | chemistry::advance_reactor (const ThermoTable< MemorySpace > &thermo, const KineticsTable< MemorySpace > &kinetics, const double rho, const double dt, double *Y, double &T, double &h, const ReactorOptions &options, double *work, uint32_t *pivot, Observer &&observer=Observer(), const SparseLUPattern< MemorySpace > *sparse=nullptr) |
| advance_reactor() by one thread. | |
Adiabatic constant-volume reactor: the chemistry of one cell over a splitting step, integrated with RODAS.