21 #ifndef FUB_AMREX_MULTI_BLOCK_SOURCE_TERM_HPP
22 #define FUB_AMREX_MULTI_BLOCK_SOURCE_TERM_HPP
34 static constexpr
int Rank = SourceTerm::Rank;
43 const std::shared_ptr<MultiBlockGriddingAlgorithm>& grid) {
44 auto&& tubes = grid->GetTubes();
46 for (
auto&& tube : tubes) {
53 Duration stable_dt(std::numeric_limits<double>::max());
55 stable_dt = std::min(stable_dt, source.ComputeStableDt(level));
61 template <
typename IntegratorContext>
64 [[maybe_unused]] const ::amrex::IntVect& ngrow = ::amrex::IntVect(0)) {
65 auto&& tubes = context.Tubes();
69 for (
auto&& tube : tubes) {
70 result =
source_terms_[i].AdvanceLevel(tube, level, dt, ngrow);
#define FUB_ASSERT(x)
Definition: assert.hpp:39
This class is used by the HypebrolicSplitLevelIntegrator and delegates AMR related tasks to the AMReX...
Definition: AMReX/IntegratorContext.hpp:49
This class manages multiple kinetic source terms which are associated to independend one-dimensional ...
Definition: MultiBlockSourceTerm.hpp:32
static constexpr int Rank
Definition: MultiBlockSourceTerm.hpp:34
Duration ComputeStableDt(int level) noexcept
Definition: MultiBlockSourceTerm.hpp:52
MultiBlockSourceTerm(const std::vector< SourceTerm > &src_terms)
Definition: MultiBlockSourceTerm.hpp:36
std::vector< SourceTerm > source_terms_
Definition: MultiBlockSourceTerm.hpp:80
void ResetHierarchyConfiguration(const std::shared_ptr< MultiBlockGriddingAlgorithm > &grid)
Definition: MultiBlockSourceTerm.hpp:42
MultiBlockSourceTerm(std::vector< SourceTerm > &&src_terms)
Definition: MultiBlockSourceTerm.hpp:39
Result< void, TimeStepTooLarge > AdvanceLevel(IntegratorContext &context, int level, Duration dt, [[maybe_unused]] const ::amrex::IntVect &ngrow=::amrex::IntVect(0))
Integrates the source term for each tube in the specified context.
Definition: MultiBlockSourceTerm.hpp:63
The amrex namespace.
Definition: AverageState.hpp:33
std::chrono::duration< double > Duration
Definition: Duration.hpp:31
boost::outcome_v2::result< T, E > Result
Definition: outcome.hpp:32