www.mooseframework.org
InclinedNoDisplacementBCAction.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 #include "Factory.h"
12 #include "FEProblem.h"
13 #include "Conversion.h"
14 
15 registerMooseAction("TensorMechanicsApp", InclinedNoDisplacementBCAction, "add_bc");
16 
18 
19 InputParameters
21 {
22  InputParameters params = Action::validParams();
23  params.addClassDescription("Set up inclined no displacement boundary conditions");
24 
25  params.addRequiredParam<std::vector<BoundaryName>>(
26  "boundary", "The list of boundary IDs from the mesh where the pressure will be applied");
27 
28  params.addParam<std::vector<VariableName>>(
29  "displacements",
30  "The displacements appropriate for the simulation geometry and coordinate system");
31  params.addParam<std::vector<AuxVariableName>>("save_in", "The displacement residuals");
32 
33  params.addRequiredParam<Real>("penalty", "Penalty parameter");
34  return params;
35 }
36 
38  : Action(params),
39  _displacements(getParam<std::vector<VariableName>>("displacements")),
40  _ndisp(_displacements.size()),
41  _save_in(getParam<std::vector<AuxVariableName>>("save_in"))
42 {
43  if (_ndisp == 1)
44  mooseError("InclinedNoDisplacementBC is specific to 2D and 3D models.");
45 
46  if (_save_in.size() != 0 && _save_in.size() != _ndisp)
47  mooseError("Number of save_in variables should equal to the number of displacement variables ",
48  _displacements.size());
49 }
50 
51 void
53 {
54  const std::string kernel_name = "PenaltyInclinedNoDisplacementBC";
55 
56  // Create pressure BCs
57  for (unsigned int i = 0; i < _ndisp; ++i)
58  {
59  // Create unique kernel name for each of the components
60  std::string unique_kernel_name = kernel_name + "_" + _name + "_" + Moose::stringify(i);
61 
62  InputParameters params = _factory.getValidParams(kernel_name);
63  params.applyParameters(parameters());
64  params.set<bool>("use_displaced_mesh") = false;
65  params.set<unsigned int>("component") = i;
66  params.set<NonlinearVariableName>("variable") = _displacements[i];
67 
68  if (_save_in.size() == _ndisp)
69  params.set<std::vector<AuxVariableName>>("save_in") = {_save_in[i]};
70 
71  _problem->addBoundaryCondition(kernel_name, unique_kernel_name, params);
72  }
73 }
InclinedNoDisplacementBCAction::_ndisp
unsigned int _ndisp
number of displacement variables
Definition: InclinedNoDisplacementBCAction.h:28
InclinedNoDisplacementBCAction::act
virtual void act() override
Definition: InclinedNoDisplacementBCAction.C:52
InclinedNoDisplacementBCAction
Definition: InclinedNoDisplacementBCAction.h:14
defineLegacyParams
defineLegacyParams(InclinedNoDisplacementBCAction)
InclinedNoDisplacementBCAction.h
InclinedNoDisplacementBCAction::_displacements
std::vector< VariableName > _displacements
displacement variables
Definition: InclinedNoDisplacementBCAction.h:25
InclinedNoDisplacementBCAction::validParams
static InputParameters validParams()
Definition: InclinedNoDisplacementBCAction.C:20
validParams
InputParameters validParams()
InclinedNoDisplacementBCAction::InclinedNoDisplacementBCAction
InclinedNoDisplacementBCAction(const InputParameters &params)
Definition: InclinedNoDisplacementBCAction.C:37
InclinedNoDisplacementBCAction::_save_in
std::vector< AuxVariableName > _save_in
auxvariables to save residuals
Definition: InclinedNoDisplacementBCAction.h:31
registerMooseAction
registerMooseAction("TensorMechanicsApp", InclinedNoDisplacementBCAction, "add_bc")