126 template <
typename Derived>
129 ::Kokkos::abort(
"Default computeBoundaryValue() should never be called. Make sure you "
130 "properly redefined this method in your class without typos.");
139 template <
typename Derived>
142 ::Kokkos::abort(
"Default computeBoundaryNormalGradient() should never be called. Make sure "
143 "you properly redefined this method in your class without typos.");
152 template <
typename Derived>
155 return &LinearFVBoundaryCondition::computeBoundaryValue<Derived>;
158 template <
typename Derived>
161 return &LinearFVBoundaryCondition::computeBoundaryNormalGradient<Derived>;
170 template <
typename Derived>
171 KOKKOS_FUNCTION
void operator()(BoundaryValueLoop,
const ThreadID tid,
const Derived & bc)
const;
179 template <
typename Derived>
215template <
typename Derived>
219 const Derived & bc)
const
223 const auto relation = bc.template computeBoundaryValue<Derived>(datum);
228template <
typename Derived>
232 const Derived & bc)
const
236 const auto relation = bc.template computeBoundaryNormalGradient<Derived>(datum);
A class for requiring an object to be boundary restricted.
KOKKOS_FUNCTION auto kokkosBoundaryElementSideID(Moose::Kokkos::ThreadID tid) const
Get the contiguous element ID - side index pair this Kokkos thread is operating on.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Interface for objects that need to use functions.
Interface for notifications that the mesh has changed.
const InputParameters & parameters() const
Get the parameters of the object.
Every object that can be built by the factory should be derived from this class.
Device-side geometric context for finite volume kernels and boundary conditions.
Base class for Kokkos linear finite volume boundary conditions.
BoundaryData _boundary_data
Boundary relation arrays owned by this boundary condition.
static InputParameters validParams()
Variable _var
Kokkos variable.
Scalar< Real > _dt_old
Previous time step size.
bool hasBoundaryValue() const
Whether this boundary condition overrides the boundary value relation hook.
KOKKOS_FUNCTION void operator()(BoundaryValueLoop, const ThreadID tid, const Derived &bc) const
Boundary value dispatch loop body; writes the per-face boundary value relation.
Scalar< const Real > _t_old
Old (previous time step) time.
KOKKOS_FUNCTION BoundaryRelation computeBoundaryValue(const FVDatum &) const
Default boundary value relation hook.
bool hasBoundaryNormalGradient() const
Whether this boundary condition overrides the boundary normal gradient relation hook.
KOKKOS_FUNCTION BoundaryRelation computeBoundaryNormalGradient(const FVDatum &) const
Default boundary normal gradient relation hook.
static auto defaultBoundaryValue()
Functions used to check whether derived boundary conditions override the boundary data hooks.
void computeBoundaryValueData()
Dispatch boundary value relation computation.
std::unique_ptr< DispatcherBase > _boundary_normal_gradient_dispatcher
Dispatcher for boundary normal gradient computation.
static auto defaultBoundaryNormalGradient()
FEProblemBase & _fe_problem
Reference to the finite element problem.
LinearFVBoundaryCondition(const LinearFVBoundaryCondition &object)
void computeBoundaryNormalGradientData()
Dispatch boundary normal gradient relation computation.
MOOSE_KOKKOS_INDEX_TYPE numBoundaryFaces() const
Number of faces in this boundary condition's existing worklist.
Scalar< Real > _dt
Current time step size.
std::unique_ptr< DispatcherBase > _boundary_value_dispatcher
Dispatcher for boundary value computation.
Pair< ContiguousElementID, unsigned int > boundaryFaceID(const MOOSE_KOKKOS_INDEX_TYPE bc_face_index) const
Face at a BC-local worklist index.
const BoundaryData & boundaryData() const
Get the boundary data relation arrays owned by this boundary condition.
Scalar< Real > _t
TODO: Move to TransientInterface.
Scalar< int > _t_step
Current time step number.
Variable variable() const
Get the Kokkos variable this boundary condition supplies data for.
LinearFVBoundaryCondition(const InputParameters ¶meters)
virtual void initialSetup() override
Gets called at the beginning of the simulation before this object is asked to do its job.
The Kokkos interface that holds the host reference of the Kokkos mesh and copies it to device during ...
KOKKOS_FUNCTION const Mesh & kokkosMesh() const
Get the const reference of the Kokkos mesh.
The Kokkos wrapper class that can hold the reference of an arithmetic scalar variable.
The Kokkos variable object that carries the coupled variable and tag information.
Interface class for classes which interact with Postprocessors.
A class for creating restricted objects.
Interface for objects that needs transient capabilities.
Interface for objects that need to use UserObjects.
MOOSE_KOKKOS_INDEX_TYPE ThreadID
Boundary relation data indexed by relation type and BC-local boundary face.
BoundaryRelationData value
BoundaryRelationData normal_gradient
Tag dispatch type for boundary normal gradient relation computation.
Boundary relation coefficient/source arrays indexed by BC-local boundary face.
Array< Real > coefficient
Affine boundary relation used by Kokkos linear FV kernels: boundary_quantity = coefficient * cell_unk...
Tag dispatch type for boundary value relation computation.