1 #ifndef ERF_SBM_CONSTRAINT_GROUPS_H_
2 #define ERF_SBM_CONSTRAINT_GROUPS_H_
6 #include <AMReX_GpuQualifiers.H>
7 #include <AMReX_REAL.H>
25 std::vector<ConstraintTerm>
terms;
41 [[nodiscard]]
bool contains (
const int component)
const noexcept;
43 const std::vector<amrex::Real>& state)
const;
44 [[nodiscard]]
bool admissible (
const std::vector<amrex::Real>& state,
46 std::string* failed_constraint =
nullptr)
const;
65 std::vector<ConstraintTerm>
terms;
69 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
75 for (
int i = 0; i < constraint.term_count; ++i) {
76 const auto& term = terms[constraint.term_offset + i];
77 result = std::fma(term.coefficient, state[term.component], result);
99 [[nodiscard]] std::vector<ConstraintGroup>
103 [[nodiscard]] FlattenedConstraintSet
107 [[nodiscard]] FlattenedConstraintSet
109 int state_components);
111 [[nodiscard]] std::vector<AttachedPropertySupportDescriptor>
124 [[nodiscard]] std::vector<ConstraintClosureChunk>
135 [[nodiscard]] std::pair<amrex::Real, amrex::Real>
Real H
Definition: ERF_InitCustomPert_MovingTerrain.H:7
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_SBMLayout.H:94
std::pair< amrex::Real, amrex::Real > inverse_two_moment(const amrex::Real L, const amrex::Real H, const amrex::Real lower, const amrex::Real upper)
Definition: ERF_SBMConstraintGroups.cpp:286
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real evaluate_constraint_descriptor(const ConstraintDescriptor &constraint, const ConstraintTerm *terms, const amrex::Real *state) noexcept
Definition: ERF_SBMConstraintGroups.H:70
std::vector< ConstraintGroup > make_constraint_groups(const SBMLayout &layout)
Definition: ERF_SBMConstraintGroups.cpp:77
bool property_support_is_admissible(const amrex::Real property, const amrex::Real carrier_number, const amrex::Real lower, const amrex::Real upper, const amrex::Real tolerance) noexcept
Definition: ERF_SBMConstraintGroups.cpp:292
FlattenedConstraintSet flatten_constraint_groups(const std::vector< ConstraintGroup > &groups, const int state_components)
Definition: ERF_SBMConstraintGroups.cpp:167
std::vector< AttachedPropertySupportDescriptor > make_attached_property_support_descriptors(const SBMLayout &layout)
Definition: ERF_SBMConstraintGroups.cpp:214
MomentMode
Definition: ERF_SpectralGrid.H:19
std::vector< ConstraintClosureChunk > make_constraint_closure_chunks(const SBMLayout &layout, const int max_groups)
Definition: ERF_SBMConstraintGroups.cpp:257
EndpointTransform transform_two_moment(const amrex::Real C, const amrex::Real M, const amrex::Real lower, const amrex::Real upper)
Definition: ERF_SBMConstraintGroups.cpp:280
FlattenedConstraintSet make_constraint_descriptors(const SBMLayout &layout)
Definition: ERF_SBMConstraintGroups.cpp:208
Definition: ERF_SBMConstraintGroups.H:83
int property_component
Definition: ERF_SBMConstraintGroups.H:86
amrex::Real pivot
Definition: ERF_SBMConstraintGroups.H:91
int has_hard_max
Definition: ERF_SBMConstraintGroups.H:95
int carrier_component
Definition: ERF_SBMConstraintGroups.H:89
int number_component
Definition: ERF_SBMConstraintGroups.H:88
amrex::Real hard_min
Definition: ERF_SBMConstraintGroups.H:92
amrex::Real hard_max
Definition: ERF_SBMConstraintGroups.H:93
int two_moment
Definition: ERF_SBMConstraintGroups.H:90
int group_index
Definition: ERF_SBMConstraintGroups.H:84
int mass_component
Definition: ERF_SBMConstraintGroups.H:87
int has_hard_min
Definition: ERF_SBMConstraintGroups.H:94
int property_index
Definition: ERF_SBMConstraintGroups.H:85
Definition: ERF_SBMConstraintGroups.H:119
std::vector< int > group_indices
Definition: ERF_SBMConstraintGroups.H:120
std::vector< int > components
Definition: ERF_SBMConstraintGroups.H:121
Definition: ERF_SBMConstraintGroups.H:53
int term_offset
Definition: ERF_SBMConstraintGroups.H:58
int bin
Definition: ERF_SBMConstraintGroups.H:56
int population_id
Definition: ERF_SBMConstraintGroups.H:55
int group_index
Definition: ERF_SBMConstraintGroups.H:54
int term_count
Definition: ERF_SBMConstraintGroups.H:59
int constraint_index
Definition: ERF_SBMConstraintGroups.H:57
Definition: ERF_SBMConstraintGroups.H:31
std::vector< int > transport_members
Definition: ERF_SBMConstraintGroups.H:37
bool contains(const int component) const noexcept
Definition: ERF_SBMConstraintGroups.cpp:24
std::vector< int > attached_property_indices
Definition: ERF_SBMConstraintGroups.H:38
int bin
Definition: ERF_SBMConstraintGroups.H:33
std::vector< int > members
Definition: ERF_SBMConstraintGroups.H:36
int population_id
Definition: ERF_SBMConstraintGroups.H:32
amrex::Real evaluate(const LinearConstraint &constraint, const std::vector< amrex::Real > &state) const
Definition: ERF_SBMConstraintGroups.cpp:30
std::vector< LinearConstraint > constraints
Definition: ERF_SBMConstraintGroups.H:39
std::string semantic_id
Definition: ERF_SBMConstraintGroups.H:34
bool admissible(const std::vector< amrex::Real > &state, amrex::Real *minimum_margin=nullptr, std::string *failed_constraint=nullptr) const
Definition: ERF_SBMConstraintGroups.cpp:43
MomentMode moment_mode
Definition: ERF_SBMConstraintGroups.H:35
Definition: ERF_SBMConstraintGroups.H:17
int component
Definition: ERF_SBMConstraintGroups.H:18
amrex::Real coefficient
Definition: ERF_SBMConstraintGroups.H:19
Definition: ERF_SBMConstraintGroups.H:63
std::vector< ConstraintTerm > terms
Definition: ERF_SBMConstraintGroups.H:65
std::vector< ConstraintDescriptor > constraints
Definition: ERF_SBMConstraintGroups.H:64
Definition: ERF_SBMConstraintGroups.H:23
std::vector< ConstraintTerm > terms
Definition: ERF_SBMConstraintGroups.H:25
std::string semantic_id
Definition: ERF_SBMConstraintGroups.H:24