https://mooseframework.inl.gov
Loading...
Searching...
No Matches
KokkosUpperBoundNodalKernel.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
13
18{
19public:
21
23
24 KOKKOS_FUNCTION Real getResidual(const unsigned int qp, AssemblyDatum & datum) const;
25 KOKKOS_FUNCTION Real getJacobian(const unsigned int qp, AssemblyDatum & datum) const;
26 KOKKOS_FUNCTION Real getOffDiagJacobian(const unsigned int jvar,
27 const unsigned int qp,
28 AssemblyDatum & datum) const;
29
30private:
32 const Real _upper_bound;
33};
34
35KOKKOS_FUNCTION inline Real
36KokkosUpperBoundNodalKernel::getResidual(const unsigned int qp, AssemblyDatum & datum) const
37{
38 return ::Kokkos::min(_u(datum, qp), _upper_bound - _v(datum, qp));
39}
40
41KOKKOS_FUNCTION inline Real
42KokkosUpperBoundNodalKernel::getJacobian(const unsigned int qp, AssemblyDatum & datum) const
43{
44 if (_u(datum, qp) <= _upper_bound - _v(datum, qp))
45 return 1;
46
47 return 0;
48}
49
50KOKKOS_FUNCTION inline Real
52 const unsigned int qp,
53 AssemblyDatum & datum) const
54{
55 if (jvar == _v_var)
56 if (_upper_bound - _v(datum, qp) < _u(datum, qp))
57 return -1;
58
59 return 0;
60}
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
const unsigned int _v_var
The number of the coupled variable.
const Moose::Kokkos::VariableValue _v
The value of the coupled variable.
Class used to enforce a upper bound on a coupled variable.
const Real _upper_bound
The upper bound on the coupled variable.
KOKKOS_FUNCTION Real getOffDiagJacobian(const unsigned int jvar, const unsigned int qp, AssemblyDatum &datum) const
KOKKOS_FUNCTION Real getJacobian(const unsigned int qp, AssemblyDatum &datum) const
static InputParameters validParams()
KOKKOS_FUNCTION Real getResidual(const unsigned int qp, AssemblyDatum &datum) const
KokkosUpperBoundNodalKernel(const InputParameters &parameters)
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
The Kokkos object that holds thread-private data in the parallel operations of Kokkos kernels.
const VariableValue _u
Current solution at nodes.