24 using real_type = std::conditional_t<is_ad, ADReal, Real>;
56 template <
typename Derived>
59 template <
typename Derived>
62 using Base = std::conditional_t<is_ad, ADNodalBC, NodalBC>;
63 using Base::operator();
66 using Base::_kokkos_var;
68 using Base::kokkosAssembly;
69 using Base::kokkosBoundaryNodeID;
70 using Base::kokkosSystem;
71 using Base::kokkosSystems;
72 using Base::numKokkosBoundaryNodes;
86template <
typename Derived>
90 auto node = kokkosBoundaryNodeID(tid);
91 auto & sys = kokkosSystem(_kokkos_var.sys());
92 auto dof = sys.getNodeLocalDofIndex(node, 0, _kokkos_var.var());
97 AssemblyDatum datum(node, kokkosAssembly(), kokkosSystems(), _kokkos_var, _kokkos_var.var());
99 sys.getVectorDofValue(dof, _solution_tag) = bc.computeValue(0, datum);
103template <
typename Derived>
107 auto bc =
static_cast<const Derived *
>(
this);
109 return _u(datum, qp) -
real_type(bc->computeValue(qp, datum));
117#define registerKokkosDirichletBC(app, classname) \
118 registerKokkosResidualObject(app, classname); \
119 registerKokkosAdditionalOperation(classname, PresetLoop)
121#define registerKokkosADDirichletBC(app, classname) \
122 registerKokkosADResidualObject(app, classname); \
123 registerKokkosAdditionalOperation(classname, PresetLoop)
The Kokkos object that holds thread-private data in the parallel operations of Kokkos kernels.
The base Kokkos boundary condition of a Dirichlet type.
KOKKOS_FUNCTION auto computeQpResidual(const unsigned int qp, AssemblyDatum &datum) const
virtual void presetSolution(TagID tag) override
Dispatch solution vector preset.
const bool _preset
Flag whether the value is to be preset.
KOKKOS_FUNCTION void operator()(PresetLoop, const ThreadID tid, const Derived &bc) const
The preset function called by Kokkos.
std::conditional_t< is_ad, ADNodalBC, NodalBC > Base
TagID _solution_tag
Tag associated with the solution vector to be preset.
DirichletBCBaseTempl(const InputParameters ¶meters)
Constructor.
virtual bool preset() const override
Get whether the value is to be preset.
static InputParameters validParams()
std::conditional_t< is_ad, ADReal, Real > real_type
static constexpr dof_id_type invalid_id
DirichletBCBaseTempl< true > ADDirichletBCBase
DirichletBCBaseTempl< false > DirichletBCBase
MOOSE_KOKKOS_INDEX_TYPE ThreadID
Function tag for preset loop.