https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ArrayKernel.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
12#include "KernelBase.h"
14#include "MooseVariableScalar.h"
15
16class ArrayKernel : public KernelBase, public MooseVariableInterface<RealEigenVector>
17{
18public:
20
22
24 virtual void computeResidual() override;
25
27 virtual void computeJacobian() override;
28
30 virtual void computeOffDiagJacobian(unsigned int jvar) override;
31
36 virtual void computeOffDiagJacobianScalar(unsigned int jvar) override;
37
38 virtual const ArrayMooseVariable & variable() const override { return _var; }
39
40protected:
45 virtual void computeQpResidual(RealEigenVector & residual) = 0;
46
50 virtual RealEigenVector computeQpJacobian();
51
56 virtual RealEigenMatrix computeQpOffDiagJacobian(const MooseVariableFEBase & jvar);
57
62 virtual RealEigenMatrix computeQpOffDiagJacobianScalar(const MooseVariableScalar & jvar);
63
67 virtual void initQpResidual() {}
68
72 virtual void initQpJacobian() {}
73
78 virtual void initQpOffDiagJacobian(const MooseVariableFEBase & jvar)
79 {
80 if (jvar.number() == _var.number())
82 }
83
86
89
93
96
99
102
105
107 const unsigned int _count;
108
109private:
111 RealEigenVector _work_vector;
112
114 RealEigenMatrix _work_matrix;
115};
OutputTools< RealEigenVector >::VariablePhiGradient ArrayVariablePhiGradient
Definition MooseTypes.h:390
OutputTools< RealEigenVector >::VariableValue ArrayVariableValue
Definition MooseTypes.h:382
OutputTools< RealEigenVector >::VariablePhiValue ArrayVariablePhiValue
Definition MooseTypes.h:389
OutputTools< RealEigenVector >::VariableTestGradient ArrayVariableTestGradient
Definition MooseTypes.h:396
std::vector< std::vector< Eigen::Map< RealDIMValue > > > MappedArrayVariablePhiGradient
Definition MooseTypes.h:391
OutputTools< RealEigenVector >::VariableGradient ArrayVariableGradient
Definition MooseTypes.h:384
OutputTools< RealEigenVector >::VariableTestValue ArrayVariableTestValue
Definition MooseTypes.h:395
virtual RealEigenMatrix computeQpOffDiagJacobianScalar(const MooseVariableScalar &jvar)
This is the virtual that derived classes should override for computing a full Jacobian component.
virtual const ArrayMooseVariable & variable() const override
Returns the variable that this object operates on.
Definition ArrayKernel.h:38
const ArrayVariableTestValue & _test
the current test function
Definition ArrayKernel.h:88
virtual void initQpJacobian()
Put necessary evaluations depending on qp but independent on test and shape functions here.
Definition ArrayKernel.h:72
static InputParameters validParams()
Definition ArrayKernel.C:23
const unsigned int _count
Number of components of the array variable.
const ArrayVariableTestGradient & _grad_test
gradient of the test function
Definition ArrayKernel.h:91
virtual void computeJacobian() override
Compute this ArrayKernel's contribution to the diagonal Jacobian entries.
virtual void computeResidual() override
Compute this ArrayKernel's contribution to the residual.
Definition ArrayKernel.C:95
RealEigenMatrix _work_matrix
Work vector for off diag jacobian.
const MappedArrayVariablePhiGradient & _array_grad_test
Definition ArrayKernel.h:92
ArrayMooseVariable & _var
This is an array kernel so we cast to a ArrayMooseVariable.
Definition ArrayKernel.h:85
RealEigenVector _work_vector
Work vector for residual and diag jacobian.
virtual RealEigenMatrix computeQpOffDiagJacobian(const MooseVariableFEBase &jvar)
This is the virtual that derived classes should override for computing a full Jacobian component.
const ArrayVariablePhiGradient & _grad_phi
gradient of the shape function
Definition ArrayKernel.h:98
virtual void initQpResidual()
Put necessary evaluations depending on qp but independent on test functions here.
Definition ArrayKernel.h:67
const ArrayVariableValue & _u
Holds the solution at current quadrature points.
virtual void initQpOffDiagJacobian(const MooseVariableFEBase &jvar)
Put necessary evaluations depending on qp but independent on test and shape functions here for off-di...
Definition ArrayKernel.h:78
virtual void computeOffDiagJacobianScalar(unsigned int jvar) override
Computes jacobian block with respect to a scalar variable.
virtual RealEigenVector computeQpJacobian()
Compute this Kernel's contribution to the diagonal Jacobian at the current quadrature point.
const ArrayVariablePhiValue & _phi
the current shape functions
Definition ArrayKernel.h:95
virtual void computeQpResidual(RealEigenVector &residual)=0
Compute this Kernel's contribution to the residual at the current quadrature point,...
const ArrayVariableGradient & _grad_u
Holds the solution gradient at current quadrature points.
virtual void computeOffDiagJacobian(unsigned int jvar) override
Computes full Jacobian of jvar and the array variable this kernel operates on.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
This is the common base class for the three main kernel types implemented in MOOSE,...
Definition KernelBase.h:29
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
unsigned int number() const
Get variable number coming from libMesh.
This class provides an interface for common operations on field variables of both FE and FV types wit...
Interface for objects that need to get values of MooseVariables.
Class for scalar variables (they are different).