www.mooseframework.org
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
CavityPressureAction Class Reference

#include <CavityPressureAction.h>

Inheritance diagram for CavityPressureAction:
[legend]

Public Member Functions

 CavityPressureAction (const InputParameters &params)
 
virtual void act () override
 

Static Public Member Functions

static InputParameters validParams ()
 

Public Attributes

const bool _use_ad
 Flag to use automatic differentiation where possible. More...
 

Detailed Description

Definition at line 19 of file CavityPressureAction.h.

Constructor & Destructor Documentation

◆ CavityPressureAction()

CavityPressureAction::CavityPressureAction ( const InputParameters &  params)

Definition at line 38 of file CavityPressureAction.C.

39  : Action(params), _use_ad(getParam<bool>("use_automatic_differentiation"))
40 {
41 }

Member Function Documentation

◆ act()

void CavityPressureAction::act ( )
overridevirtual

Definition at line 44 of file CavityPressureAction.C.

45 {
46  auto displacements = getParam<std::vector<VariableName>>("displacements");
47  auto save_in = getParam<std::vector<AuxVariableName>>("save_in");
48 
49  unsigned int ndisp = displacements.size();
50  if (save_in.size() > 0 && save_in.size() != ndisp)
51  mooseError("Number of save_in variables should equal to the number of displacement variables ",
52  ndisp);
53 
54  std::string ad_append = "";
55  std::string ad_prepend = "";
56  if (_use_ad)
57  {
58  ad_append = "<RESIDUAL>";
59  ad_prepend = "AD";
60  }
61 
62  std::string kernel_name = ad_prepend + "Pressure";
63 
64  InputParameters params = _factory.getValidParams(kernel_name + ad_append);
65  params.applyParameters(parameters());
66 
67  params.set<PostprocessorName>("postprocessor") =
68  isParamValid("output") ? getParam<std::string>("output") : _name;
69 
70  for (unsigned int i = 0; i < ndisp; ++i)
71  {
72  params.set<unsigned int>("component") = i;
73  params.set<NonlinearVariableName>("variable") = displacements[i];
74  if (!save_in.empty())
75  params.set<std::vector<AuxVariableName>>("save_in") = {save_in[i]};
76  std::string unique_kernel_name = _name + "_" + Moose::stringify(i);
77 
78  if (_use_ad)
79  {
80  _problem->addBoundaryCondition(
81  kernel_name + ad_append, unique_kernel_name + "_residual", params);
82  _problem->addBoundaryCondition(
83  kernel_name + "<JACOBIAN>", unique_kernel_name + "_jacobian", params);
84  _problem->haveADObjects(true);
85  }
86  else
87  {
88  _problem->addBoundaryCondition(kernel_name, unique_kernel_name, params);
89  }
90  }
91 }

◆ validParams()

InputParameters CavityPressureAction::validParams ( )
static

Definition at line 20 of file CavityPressureAction.C.

21 {
22  InputParameters params = Action::validParams();
23  params.addRequiredParam<std::vector<BoundaryName>>(
24  "boundary", "The list of boundary IDs from the mesh where the pressure will be applied");
25  params.addRequiredParam<std::vector<VariableName>>("displacements",
26  "The nonlinear displacement variables");
27  params.addParam<std::vector<AuxVariableName>>(
28  "save_in", "Auxiliary variables to save the displacement residuals");
29  params.addParam<std::string>("output", "The name to use for the cavity pressure value");
30  params.addParam<bool>(
31  "use_displaced_mesh", true, "Whether to use displaced mesh in the boundary condition");
32  params.addParam<bool>("use_automatic_differentiation",
33  false,
34  "Flag to use automatic differentiation (AD) objects when possible");
35  return params;
36 }

Member Data Documentation

◆ _use_ad

const bool CavityPressureAction::_use_ad

Flag to use automatic differentiation where possible.

Definition at line 29 of file CavityPressureAction.h.

Referenced by act().


The documentation for this class was generated from the following files:
validParams
InputParameters validParams()
CavityPressureAction::_use_ad
const bool _use_ad
Flag to use automatic differentiation where possible.
Definition: CavityPressureAction.h:29