https://mooseframework.inl.gov
Loading...
Searching...
No Matches
HFEMDirichletBC.C
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#include "HFEMDirichletBC.h"
11
13
16{
18 params.addParam<RealEigenVector>("value", "Value of the BC");
19 params.addCoupledVar("uhat", "The coupled variable");
20 params.addClassDescription("Imposes the Dirichlet BC with HFEM.");
21 return params;
22}
23
25 : LowerDIntegratedBC(parameters),
26 _value(isParamValid("value") ? getParam<Real>("value") : 0),
27 _uhat_var(isParamValid("uhat") ? getVar("uhat", 0) : nullptr),
28 _uhat(_uhat_var ? (_is_implicit ? &_uhat_var->slnLower() : &_uhat_var->slnLowerOld()) : nullptr)
29{
30 if (_uhat_var)
31 {
32 for (const auto & id : _uhat_var->activeSubdomains())
33 if (_mesh.boundaryLowerDBlocks().count(id) == 0)
35 29151,
36 "'uhat' must be defined on lower-dimensional boundary subdomain '" +
38 "' that is added by Mesh/build_all_side_lowerd_mesh=true.\nThe "
39 "check could be overly restrictive.");
40
41 if (isParamValid("value"))
42 paramError("uhat", "'uhat' and 'value' can not be both provided");
43 }
44}
45
46Real
51
52Real
54{
55 if (_uhat)
56 return (_u[_qp] - (*_uhat)[_qp]) * _test_lambda[_i][_qp];
57 else
58 return (_u[_qp] - _value) * _test_lambda[_i][_qp];
59}
60
61Real
66
67Real
69{
70 switch (type)
71 {
73 return _test_lambda[_i][_qp] * _phi[_j][_qp];
74
76 return _phi_lambda[_j][_qp] * _test[_i][_qp];
77
78 default:
79 break;
80 }
81
82 return 0;
83}
84
85Real
registerMooseObject("MooseApp", HFEMDirichletBC)
void mooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, Args &&... args)
Emit a documented error message with the given stringified, concatenated args and terminate the appli...
Definition MooseError.h:332
virtual Real computeLowerDQpResidual() override
Method for computing the Lower part of residual at quadrature points.
const VariableValue *const _uhat
Holds the coupled solution at the current quadrature point on the face.
const Real _value
Boundary values.
static InputParameters validParams()
virtual Real computeQpJacobian() override
Method for computing the diagonal Jacobian at quadrature points.
const MooseVariable *const _uhat_var
Variable coupled in.
HFEMDirichletBC(const InputParameters &parameters)
virtual Real computeLowerDQpJacobian(Moose::ConstraintJacobianType type) override
Method for computing the LowerLower, PrimaryLower and LowerPrimary parts of Jacobian at quadrature po...
virtual Real computeLowerDQpOffDiagJacobian(Moose::ConstraintJacobianType, const MooseVariableFEBase &jvar) override
Method for computing an off-diagonal jacobian component at quadrature points.
virtual Real computeQpResidual() override
Method for computing the residual at quadrature points.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object.
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.
void addCoupledVar(const std::string &name, const std::string &doc_string)
This method adds a coupled variable name pair.
unsigned int _qp
quadrature point index
unsigned int _i
i-th, j-th index for enumerating test and shape functions
const VariableValue & _u
the values of the unknown variable this BC is acting on
const VariablePhiValue & _phi
shape function values (in QPs)
const VariableTestValue & _test
test function values (in QPs)
const VariableValue & _lambda
Holds the current solution at the current quadrature point on the face.
static InputParameters validParams()
const VariableTestValue & _test_lambda
test functions
const VariablePhiValue & _phi_lambda
Shape functions.
const std::string & type() const
Get the type of this class.
Definition MooseBase.h:93
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition MooseBase.h:457
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition MooseBase.h:199
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition MooseMesh.C:1751
const std::set< SubdomainID > & boundaryLowerDBlocks() const
Definition MooseMesh.h:1556
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...
const std::set< SubdomainID > & activeSubdomains() const
The subdomains the variable is active on.
MooseMesh & _mesh
Reference to this Kernel's mesh object.
ConstraintJacobianType
Definition MooseTypes.h:851
@ LowerLower
Definition MooseTypes.h:856
@ PrimaryLower
Definition MooseTypes.h:860
@ LowerPrimary
Definition MooseTypes.h:858