www.mooseframework.org
MaterialVectorGradAuxKernelAction.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 "Parser.h"
13 #include "Conversion.h"
14 #include "FEProblem.h"
15 #include "MooseMesh.h"
16 
17 registerMooseAction("PhaseFieldApp", MaterialVectorGradAuxKernelAction, "add_aux_kernel");
18 
19 template <>
20 InputParameters
22 {
23  InputParameters params = validParams<MaterialVectorAuxKernelAction>();
24  return params;
25 }
26 
29 {
30 }
31 
32 void
34 {
35  if (_num_prop != _num_var)
36  paramError("property", "variable_base and property must be vectors of the same size");
37 
38  // mesh dimension required for gradient variables
39  unsigned int dim = _mesh->dimension();
40  // For Specifying the components of the gradient terms
41  const std::vector<char> suffix = {'x', 'y', 'z'};
42 
43  for (unsigned int gr = 0; gr < _grain_num; ++gr)
44  for (unsigned int val = 0; val < _num_var; ++val)
45  for (unsigned int x = 0; x < dim; ++x)
46  {
47  std::string var_name = _var_name_base[val] + Moose::stringify(gr) + "_" + suffix[x];
48 
49  InputParameters params = _factory.getValidParams("MaterialStdVectorRealGradientAux");
50  params.set<AuxVariableName>("variable") = var_name;
51  params.set<MaterialPropertyName>("property") = _prop[val];
52  params.set<unsigned int>("component") = x;
53  params.set<unsigned int>("index") = gr;
54  params.set<bool>("use_displaced_mesh") = getParam<bool>("use_displaced_mesh");
55 
56  std::string aux_kernel_name = var_name;
57  _problem->addAuxKernel("MaterialStdVectorRealGradientAux", aux_kernel_name, params);
58  }
59 }
MaterialVectorAuxKernelAction::_num_var
const unsigned int _num_var
number of auxvariables
Definition: MaterialVectorAuxKernelAction.h:29
registerMooseAction
registerMooseAction("PhaseFieldApp", MaterialVectorGradAuxKernelAction, "add_aux_kernel")
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
MaterialVectorGradAuxKernelAction
Definition: MaterialVectorGradAuxKernelAction.h:14
MaterialVectorGradAuxKernelAction.h
MaterialVectorGradAuxKernelAction::MaterialVectorGradAuxKernelAction
MaterialVectorGradAuxKernelAction(const InputParameters &params)
Definition: MaterialVectorGradAuxKernelAction.C:27
validParams< MaterialVectorAuxKernelAction >
InputParameters validParams< MaterialVectorAuxKernelAction >()
Definition: MaterialVectorAuxKernelAction.C:19
MaterialVectorAuxKernelAction::_grain_num
const unsigned int _grain_num
number of grains to create
Definition: MaterialVectorAuxKernelAction.h:23
MaterialVectorGradAuxKernelAction::act
virtual void act()
Definition: MaterialVectorGradAuxKernelAction.C:33
validParams< MaterialVectorGradAuxKernelAction >
InputParameters validParams< MaterialVectorGradAuxKernelAction >()
Definition: MaterialVectorGradAuxKernelAction.C:21
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