www.mooseframework.org
MaterialVectorAuxKernelAction.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 "Conversion.h"
13 #include "FEProblem.h"
14 
15 registerMooseAction("PhaseFieldApp", MaterialVectorAuxKernelAction, "add_aux_kernel");
16 
17 template <>
18 InputParameters
20 {
21  InputParameters params = validParams<Action>();
22  params.addRequiredParam<unsigned int>(
23  "grain_num", "Value that specifies the number of grains to create aux kernels for.");
24  params.addRequiredParam<std::vector<std::string>>(
25  "variable_base", "Vector specifies the base name of the variables.");
26  params.addRequiredParam<std::vector<MaterialPropertyName>>("property",
27  "The material property names.");
28  params.addParam<bool>(
29  "use_displaced_mesh", false, "Whether to use displaced mesh in the kernels.");
30  return params;
31 }
32 
34  : Action(params),
35  _grain_num(getParam<unsigned int>("grain_num")),
36  _var_name_base(getParam<std::vector<std::string>>("variable_base")),
37  _num_var(_var_name_base.size()),
38  _prop(getParam<std::vector<MaterialPropertyName>>("property")),
39  _num_prop(_prop.size())
40 {
41 }
42 
43 void
45 {
46  if (_num_prop != _num_var)
47  paramError("property", "variable_base and property must be vectors of the same size");
48 
49  for (unsigned int gr = 0; gr < _grain_num; ++gr)
50  for (unsigned int val = 0; val < _num_var; ++val)
51  {
52  std::string var_name = _var_name_base[val] + Moose::stringify(gr);
53 
54  InputParameters params = _factory.getValidParams("MaterialStdVectorAux");
55  params.set<AuxVariableName>("variable") = var_name;
56  params.set<MaterialPropertyName>("property") = _prop[val];
57  params.set<unsigned int>("index") = gr;
58  params.set<bool>("use_displaced_mesh") = getParam<bool>("use_displaced_mesh");
59 
60  std::string aux_kernel_name = var_name;
61  _problem->addAuxKernel("MaterialStdVectorAux", aux_kernel_name, params);
62  }
63 }
registerMooseAction
registerMooseAction("PhaseFieldApp", MaterialVectorAuxKernelAction, "add_aux_kernel")
MaterialVectorAuxKernelAction::_num_var
const unsigned int _num_var
number of auxvariables
Definition: MaterialVectorAuxKernelAction.h:29
MaterialVectorAuxKernelAction.h
validParams< MaterialVectorAuxKernelAction >
InputParameters validParams< MaterialVectorAuxKernelAction >()
Definition: MaterialVectorAuxKernelAction.C:19
MaterialVectorAuxKernelAction::_var_name_base
const std::vector< std::string > & _var_name_base
base name for the auxvariables
Definition: MaterialVectorAuxKernelAction.h:26
MaterialVectorAuxKernelAction
Definition: MaterialVectorAuxKernelAction.h:14
MaterialVectorAuxKernelAction::act
virtual void act()
Definition: MaterialVectorAuxKernelAction.C:44
MaterialVectorAuxKernelAction::_grain_num
const unsigned int _grain_num
number of grains to create
Definition: MaterialVectorAuxKernelAction.h:23
MaterialVectorAuxKernelAction::MaterialVectorAuxKernelAction
MaterialVectorAuxKernelAction(const InputParameters &params)
Definition: MaterialVectorAuxKernelAction.C:33
MaterialVectorAuxKernelAction::_prop
const std::vector< MaterialPropertyName > & _prop
list of material properties to be used
Definition: MaterialVectorAuxKernelAction.h:32
MaterialVectorAuxKernelAction::_num_prop
const unsigned int _num_prop
number of properties
Definition: MaterialVectorAuxKernelAction.h:35