Loading [MathJax]/extensions/tex2jax.js
www.mooseframework.org
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
NodalEqualValueConstraint.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 "Assembly.h"
14 #include "MooseVariableScalar.h"
15 
17 
19 
22 {
24  params.addRequiredCoupledVar("var", "Variable(s) to put the constraint on");
25  return params;
26 }
27 
29  : NodalScalarKernel(parameters)
30 {
31  if (_node_ids.size() != 2)
32  paramError("boundary", "invalid number of nodes: want 2, got ", _node_ids.size());
33 
34  unsigned int n = coupledComponents("var");
35  _value.resize(n);
36  _val_number.resize(n);
37  for (unsigned int k = 0; k < n; k++)
38  {
39  _value[k] = &coupledValue("var", k);
40  _val_number[k] = coupled("var", k);
41  }
42 }
43 
44 void
46 {
48 
49  for (unsigned int k = 0; k < _value.size(); k++)
50  _local_re(k) = (*_value[k])[0] - (*_value[k])[1];
51 
53 }
54 
55 void
57 {
59 
60  // put zeroes on the diagonal (we have to do it, otherwise PETSc will complain!)
61  for (unsigned int i = 0; i < _local_ke.m(); i++)
62  for (unsigned int j = 0; j < _local_ke.n(); j++)
63  _local_ke(i, j) = 0.;
64 
66 
67  for (unsigned int k = 0; k < _value.size(); k++)
68  {
70 
71  _local_ke(k, 0) = 1.;
72  _local_ke(k, 1) = -1.;
73 
75  }
76 }
InputParameters::addRequiredCoupledVar
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
This method adds a coupled variable name pair.
Definition: InputParameters.C:216
TaggingInterface::_local_re
DenseVector< Number > _local_re
Holds residual entries as they are accumulated by this Kernel.
Definition: TaggingInterface.h:156
TaggingInterface::prepareMatrixTag
void prepareMatrixTag(Assembly &assembly, unsigned int ivar, unsigned int jvar)
Prepare data for computing element jacobian according to the ative tags.
Definition: TaggingInterface.C:157
Assembly.h
defineLegacyParams
defineLegacyParams(NodalEqualValueConstraint)
NodalEqualValueConstraint.h
registerMooseObject
registerMooseObject("MooseApp", NodalEqualValueConstraint)
MooseObject::paramError
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: MooseObject.h:215
InputParameters
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
Definition: InputParameters.h:53
MooseVariableScalar.h
NodalEqualValueConstraint::computeJacobian
virtual void computeJacobian() override
Definition: NodalEqualValueConstraint.C:56
NodalEqualValueConstraint::validParams
static InputParameters validParams()
Definition: NodalEqualValueConstraint.C:21
ScalarKernel::_assembly
Assembly & _assembly
Definition: ScalarKernel.h:75
NodalEqualValueConstraint::NodalEqualValueConstraint
NodalEqualValueConstraint(const InputParameters &parameters)
Definition: NodalEqualValueConstraint.C:28
NodalScalarKernel::_node_ids
std::vector< dof_id_type > _node_ids
List of node IDs.
Definition: NodalScalarKernel.h:38
TaggingInterface::prepareVectorTag
void prepareVectorTag(Assembly &assembly, unsigned int ivar)
Prepare data for computing element residual the according to active tags.
Definition: TaggingInterface.C:121
Coupleable::coupledValue
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0)
Returns value of a coupled variable.
Definition: Coupleable.C:387
TaggingInterface::assignTaggedLocalMatrix
void assignTaggedLocalMatrix()
Local Jacobian blocks will assigned as the current local kernel Jacobian.
Definition: TaggingInterface.C:220
NodalEqualValueConstraint::_val_number
std::vector< unsigned int > _val_number
Definition: NodalEqualValueConstraint.h:38
NodalEqualValueConstraint::computeResidual
virtual void computeResidual() override
Definition: NodalEqualValueConstraint.C:45
Coupleable::coupledComponents
unsigned int coupledComponents(const std::string &var_name)
Number of coupled components.
Definition: Coupleable.C:128
NodalEqualValueConstraint::_value
std::vector< const VariableValue * > _value
Definition: NodalEqualValueConstraint.h:39
NodalEqualValueConstraint
Constraint to enforce equal values (in 1D)
Definition: NodalEqualValueConstraint.h:27
TaggingInterface::assignTaggedLocalResidual
void assignTaggedLocalResidual()
Local residual blocks will assigned as the current local kernel residual.
Definition: TaggingInterface.C:206
TaggingInterface::_local_ke
DenseMatrix< Number > _local_ke
Holds residual entries as they are accumulated by this Kernel.
Definition: TaggingInterface.h:159
Coupleable::coupled
virtual unsigned int coupled(const std::string &var_name, unsigned int comp=0)
Returns the index for a coupled variable by name.
Definition: Coupleable.C:364
NodalScalarKernel::validParams
static InputParameters validParams()
Definition: NodalScalarKernel.C:21
NodalScalarKernel
Definition: NodalScalarKernel.h:24
ScalarKernel::_var
MooseVariableScalar & _var
Scalar variable.
Definition: ScalarKernel.h:77
MooseVariableBase::number
unsigned int number() const
Get variable number coming from libMesh.
Definition: MooseVariableBase.h:48
n
PetscInt n
Definition: PetscDMMoose.C:1504