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;
86 template <
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);
102 template <
bool is_ad>
103 template <
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) virtual bool preset() const override
Get whether the value is to be preset.
The base Kokkos boundary condition of a Dirichlet type.
KOKKOS_FUNCTION void operator()(PresetLoop, const ThreadID tid, const Derived &bc) const
The preset function called by Kokkos.
DirichletBCBaseTempl(const InputParameters ¶meters)
Constructor.
std::conditional_t< is_ad, ADNodalBC, NodalBC > Base
TagID _solution_tag
Tag associated with the solution vector to be preset.
virtual void presetSolution(TagID tag) override
Dispatch solution vector preset.
KOKKOS_FUNCTION auto computeQpResidual(const unsigned int qp, AssemblyDatum &datum) const
static InputParameters validParams()
Function tag for preset loop.
static constexpr dof_id_type invalid_id
std::conditional_t< is_ad, ADReal, Real > real_type
The Kokkos object that holds thread-private data in the parallel operations of Kokkos kernels...
const bool _preset
Flag whether the value is to be preset.
DirichletBCBaseTempl< true > ADDirichletBCBase
DirichletBCBaseTempl< false > DirichletBCBase