www.mooseframework.org
EqualGradientLagrangeMultiplier.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
11 
12 // MOOSE includes
13 #include "MooseVariable.h"
14 
16 
17 template <>
18 InputParameters
20 {
21  InputParameters params = validParams<InterfaceKernel>();
22  params.addClassDescription("Lagrange multiplier kernel for EqualGradientLagrangeInterface.");
23  params.addRequiredParam<unsigned int>("component", "Gradient component to constrain");
24  params.addCoupledVar("element_var",
25  "The gradient constrained variable on this side of the interface.");
26  params.addParam<Real>("jacobian_fill",
27  0.0,
28  "Compensate on diagonal Jacobian fill term when "
29  "using a NullKernel on the Lagrange multiplier "
30  "variable");
31  return params;
32 }
33 
35  : InterfaceKernel(parameters),
36  _component(getParam<unsigned int>("component")),
37  _grad_element_value(getVar("element_var", 0)->gradSln()),
38  _element_jvar(getVar("element_var", 0)->number()),
39  _neighbor_jvar(_neighbor_var.number()),
40  _jacobian_fill(getParam<Real>("jacobian_fill"))
41 {
42 }
43 
44 Real
46 {
47  if (type == Moose::Element)
48  return (_grad_element_value[_qp](_component) - _grad_neighbor_value[_qp](_component)) *
49  _test[_i][_qp];
50 
51  return 0.0;
52 }
53 
54 Real
56 {
57  if (type == Moose::ElementNeighbor)
58  return -_grad_phi_neighbor[_j][_qp](_component) * _test[_i][_qp];
59 
60  if (type == Moose::ElementElement)
61  return -_jacobian_fill;
62 
63  return 0.0;
64 }
65 
66 Real
68  unsigned int jvar)
69 {
70  if (type == Moose::ElementElement && jvar == _element_jvar)
71  return _grad_phi[_j][_qp](_component) * _test[_i][_qp];
72 
73  return 0.0;
74 }
EqualGradientLagrangeMultiplier::EqualGradientLagrangeMultiplier
EqualGradientLagrangeMultiplier(const InputParameters &parameters)
Definition: EqualGradientLagrangeMultiplier.C:34
EqualGradientLagrangeMultiplier
Lagrange multiplier "FaceKernel" that is used in conjunction with EqualGradientLagrangeInterface.
Definition: EqualGradientLagrangeMultiplier.h:23
registerMooseObject
registerMooseObject("PhaseFieldApp", EqualGradientLagrangeMultiplier)
EqualGradientLagrangeMultiplier::computeQpJacobian
virtual Real computeQpJacobian(Moose::DGJacobianType type) override
Definition: EqualGradientLagrangeMultiplier.C:55
EqualGradientLagrangeMultiplier::computeQpResidual
virtual Real computeQpResidual(Moose::DGResidualType type) override
Definition: EqualGradientLagrangeMultiplier.C:45
EqualGradientLagrangeMultiplier::_component
const unsigned int _component
x,y,z component of the gradient to constrain
Definition: EqualGradientLagrangeMultiplier.h:34
EqualGradientLagrangeMultiplier::_grad_element_value
const VariableGradient & _grad_element_value
variable to control gradient on the master side of the interface
Definition: EqualGradientLagrangeMultiplier.h:37
EqualGradientLagrangeMultiplier::_jacobian_fill
const Real _jacobian_fill
compensate Jacobian fill term from NullKernel
Definition: EqualGradientLagrangeMultiplier.h:45
validParams< EqualGradientLagrangeMultiplier >
InputParameters validParams< EqualGradientLagrangeMultiplier >()
Definition: EqualGradientLagrangeMultiplier.C:19
EqualGradientLagrangeMultiplier::_element_jvar
unsigned int _element_jvar
Definition: EqualGradientLagrangeMultiplier.h:38
EqualGradientLagrangeMultiplier::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(Moose::DGJacobianType type, unsigned int jvar) override
Definition: EqualGradientLagrangeMultiplier.C:67
EqualGradientLagrangeMultiplier.h