75 template <
typename Derived>
81 ::Kokkos::abort(
"Default computeQpJacobian() should never be called. Make sure you properly "
82 "redefined this method in your class without typos.");
96 template <
typename Derived>
104 "Default computeQpOffDiagJacobian() should never be called. Make sure you properly "
105 "redefined this method in your class without typos.");
119 template <
typename Derived>
127 "Default computeQpOffDiagJacobianScalar() should never be called. Make sure you properly "
128 "redefined this method in your class without typos.");
140 template <
typename Derived>
143 return &IntegratedBC::computeQpJacobian<Derived>;
145 template <
typename Derived>
148 return &IntegratedBC::computeQpOffDiagJacobian<Derived>;
150 template <
typename Derived>
153 return &IntegratedBC::computeQpOffDiagJacobianScalar<Derived>;
161 template <
typename Derived>
162 KOKKOS_FUNCTION
void operator()(ResidualLoop,
const ThreadID tid,
const Derived & bc)
const;
163 template <
typename Derived>
164 KOKKOS_FUNCTION
void operator()(JacobianLoop,
const ThreadID tid,
const Derived & bc)
const;
165 template <
typename Derived>
168 template <
typename Derived>
184 template <
typename Derived>
191 template <
typename Derived>
198 template <
typename Derived>
206 template <
typename Derived>
238template <
typename Derived>
249 bc.computeResidualInternal(bc, datum);
252template <
typename Derived>
263 bc.computeJacobianInternal(bc, datum);
266template <
typename Derived>
275 if (!sys.isVariableActive(jvar,
kokkosMesh().getElementInfo(elem).subdomain))
282 bc.computeOffDiagJacobianInternal(bc, datum);
285template <
typename Derived>
294 if (!sys.isVariableActive(jvar,
kokkosMesh().getElementInfo(elem).subdomain))
299 bc.computeOffDiagJacobianScalarInternal(bc, datum);
302template <
typename Derived>
308 [&](Real * local_re,
const unsigned int ib,
const unsigned int ie)
310 for (
unsigned int qp = 0; qp < datum.
n_qps(); ++qp)
311 for (
unsigned int i = ib; i < ie; ++i)
312 local_re[i] += datum.
JxW(qp) * bc.template computeQpResidual<Derived>(i, qp, datum);
316template <
typename Derived>
322 [&](Real * local_ke,
const unsigned int ib,
const unsigned int ie,
const unsigned int j)
324 for (
unsigned int qp = 0; qp < datum.
n_qps(); ++qp)
325 for (
unsigned int i = ib; i < ie; ++i)
326 local_ke[i] += datum.
JxW(qp) * bc.template computeQpJacobian<Derived>(i, j, qp, datum);
330template <
typename Derived>
336 [&](Real * local_ke,
const unsigned int ib,
const unsigned int ie,
const unsigned int j)
338 for (
unsigned int qp = 0; qp < datum.
n_qps(); ++qp)
339 for (
unsigned int i = ib; i < ie; ++i)
340 local_ke[i] += datum.
JxW(qp) * bc.template computeQpOffDiagJacobian<Derived>(
341 i, j, datum.
jvar(), qp, datum);
345template <
typename Derived>
351 [&](Real * local_ke,
const unsigned int ib,
const unsigned int ie,
const unsigned int j)
353 for (
unsigned int qp = 0; qp < datum.
n_qps(); ++qp)
354 for (
unsigned int i = ib; i < ie; ++i)
355 local_ke[i] += datum.
JxW(qp) * bc.template computeQpOffDiagJacobianScalar<Derived>(
356 i, j, datum.
jvar(), qp, datum);
KOKKOS_FUNCTION auto kokkosBoundaryElementSideID(Moose::Kokkos::ThreadID tid) const
Get the contiguous element ID - side index pair this Kokkos thread is operating on.
const InputParameters & parameters() const
Get the parameters of the object.
The Kokkos object that holds thread-private data in the parallel operations of Kokkos kernels.
KOKKOS_FUNCTION unsigned int jvar() const
Get the coupled variable number.
KOKKOS_FUNCTION const Assembly & kokkosAssembly() const
Get the const reference of the Kokkos assembly.
KOKKOS_FUNCTION Real JxW(const unsigned int qp)
Get the transformed Jacobian weight.
KOKKOS_FUNCTION void set_local_parallel(const unsigned int local_thread_id, const unsigned int num_local_threads)
Set local parallelization option.
KOKKOS_FUNCTION unsigned int n_qps() const
Get the number of local quadrature points.
The base class for Kokkos integrated boundary conditions.
The base class for a user to derive their own Kokkos integrated boundary conditions.
const VariablePhiValue _phi
Current shape function.
KOKKOS_FUNCTION Real computeQpJacobian(const unsigned int, const unsigned int, const unsigned int, AssemblyDatum &) const
Default methods to prevent compile errors even when these methods were not defined in the derived cla...
static auto defaultJacobian()
Functions used to check if users have overriden the hook methods, whose calculations can be skipped w...
static InputParameters validParams()
KOKKOS_FUNCTION Real computeQpOffDiagJacobianScalar(const unsigned int, const unsigned int, const unsigned int, const unsigned int, AssemblyDatum &) const
Compute scalar off-diagonal Jacobian contribution on a quadrature point.
KOKKOS_FUNCTION Real computeQpOffDiagJacobian(const unsigned int, const unsigned int, const unsigned int, const unsigned int, AssemblyDatum &) const
Compute off-diagonal Jacobian contribution on a quadrature point.
KOKKOS_FUNCTION void computeResidualInternal(const Derived &bc, AssemblyDatum &datum) const
The parallel computation bodies that can be customized in the derived class by defining them in the d...
IntegratedBC(const InputParameters ¶meters)
Constructor.
static auto defaultOffDiagJacobianScalar()
static constexpr bool supports_scalar_jacobian
KOKKOS_FUNCTION void operator()(ResidualLoop, const ThreadID tid, const Derived &bc) const
The parallel computation entry functions called by Kokkos.
const VariableGradient _grad_u
Gradient of the current solution at quadrature points.
const VariableValue _u
Current solution at quadrature points.
const VariableTestGradient _grad_test
Gradient of the current test function.
const VariablePhiGradient _grad_phi
Gradient of the current shape function.
static auto defaultOffDiagJacobian()
KOKKOS_FUNCTION void computeJacobianInternal(const Derived &bc, AssemblyDatum &datum) const
Compute diagonal Jacobian.
const VariableTestValue _test
Current test function.
virtual void computeJacobian() override
Dispatch diagonal and off-diagonal Jacobian calculation.
KOKKOS_FUNCTION void computeOffDiagJacobianScalarInternal(const Derived &bc, AssemblyDatum &datum) const
Compute scalar off-diagonal Jacobian.
KOKKOS_FUNCTION void computeOffDiagJacobianInternal(const Derived &bc, AssemblyDatum &datum) const
Compute off-diagonal Jacobian.
virtual void computeResidual() override
Dispatch residual calculation.
KOKKOS_FUNCTION const Mesh & kokkosMesh() const
Get the const reference of the Kokkos mesh.
Variable _kokkos_var
Kokkos variable.
Thread _thread
Kokkos thread object.
KOKKOS_FUNCTION void computeJacobianInternal(AssemblyDatum &datum, function body) const
The common loop structure template for computing elemental Jacobian.
KOKKOS_FUNCTION void computeResidualInternal(AssemblyDatum &datum, function body) const
The common loop structure template for computing elemental residual.
KOKKOS_FUNCTION thread_id_type size() const
Get the total thread pool size.
The Kokkos wrapper classes for MOOSE-like shape function access.
The Kokkos wrapper classes for MOOSE-like variable value access.
KOKKOS_FUNCTION unsigned int var(unsigned int comp=0) const
Get the variable number of a component.
KOKKOS_FUNCTION unsigned int sys(unsigned int comp=0) const
Get the system number of a component.
MOOSE_KOKKOS_INDEX_TYPE ThreadID