Line data Source code
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 "ArrayIntegratedBC.h" 13 : 14 : /** 15 : * Base class for deriving any boundary condition of a integrated type 16 : */ 17 : class ArrayLowerDIntegratedBC : public ArrayIntegratedBC 18 : { 19 : public: 20 : static InputParameters validParams(); 21 : 22 : ArrayLowerDIntegratedBC(const InputParameters & parameters); 23 : 24 1320 : const ArrayMooseVariable & variable() const override final { return _var; } 25 : const ArrayMooseVariable & lowerDVariable() const { return _lowerd_var; } 26 : 27 : virtual void computeResidual() override; 28 : virtual void computeJacobian() override; 29 : virtual void computeOffDiagJacobian(unsigned int jvar) override; 30 : 31 : protected: 32 : /** 33 : * Method for computing the Lower part of residual at quadrature points, to be filled in \p 34 : * residual. 35 : */ 36 : virtual void computeLowerDQpResidual(RealEigenVector & residual) = 0; 37 : 38 : /** 39 : * Method for computing the LowerLower, PrimaryLower and LowerPrimary parts of Jacobian 40 : */ 41 : virtual void computeLowerDJacobian(Moose::ConstraintJacobianType type); 42 : 43 : /** 44 : * Method for computing the LowerLower, PrimaryLower and LowerPrimary parts of Jacobian at 45 : * quadrature points 46 : */ 47 : virtual RealEigenVector computeLowerDQpJacobian(Moose::ConstraintJacobianType) = 0; 48 : 49 : /** 50 : * Method for computing an off-diagonal jacobian component 51 : */ 52 : void computeLowerDOffDiagJacobian(Moose::ConstraintJacobianType type, 53 : const unsigned int jvar_num); 54 : 55 : /** 56 : * Method for computing an off-diagonal jacobian component at quadrature points. 57 : */ 58 : virtual RealEigenMatrix computeLowerDQpOffDiagJacobian(Moose::ConstraintJacobianType type, 59 : const MooseVariableFEBase & jvar); 60 : 61 : /** 62 : * Put necessary evaluations depending on qp but independent on test functions here 63 : */ 64 18000 : virtual void initLowerDQpResidual() {} 65 : 66 : /** 67 : * Put necessary evaluations depending on qp but independent on test and shape functions here 68 : */ 69 768 : virtual void initLowerDQpJacobian(Moose::ConstraintJacobianType) {} 70 : 71 : /** 72 : * Put necessary evaluations depending on qp but independent on test and shape functions here for 73 : * off-diagonal Jacobian assembly 74 : */ 75 6528 : virtual void initLowerDQpOffDiagJacobian(Moose::ConstraintJacobianType, 76 : const MooseVariableFEBase &) 77 : { 78 6528 : } 79 : /// Variable this kernel operates on 80 : const ArrayMooseVariable & _lowerd_var; 81 : /// Holds the current solution at the current quadrature point on the face. 82 : const ArrayVariableValue & _lambda; 83 : /// Shape functions 84 : const ArrayVariablePhiValue & _phi_lambda; 85 : /// test functions 86 : const ArrayVariableTestValue & _test_lambda; 87 : 88 : private: 89 : /// Work vector for residual 90 : RealEigenVector _work_vector; 91 : };