www.mooseframework.org
Tricrystal2CircleGrainsICAction.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 "FEProblem.h"
14 #include "Conversion.h"
15 
16 #include <sstream>
17 #include <stdexcept>
18 
19 #include "libmesh/libmesh.h"
20 #include "libmesh/exodusII_io.h"
21 #include "libmesh/equation_systems.h"
22 #include "libmesh/nonlinear_implicit_system.h"
23 #include "libmesh/explicit_system.h"
24 #include "libmesh/string_to_enum.h"
25 
27 
28 registerMooseAction("PhaseFieldApp", Tricrystal2CircleGrainsICAction, "add_ic");
29 
30 template <>
31 InputParameters
33 {
34  InputParameters params = validParams<Action>();
35  params.addRequiredParam<unsigned int>("op_num", "number of order parameters to create");
36  params.addRequiredParam<std::string>("var_name_base", "specifies the base name of the variables");
37 
38  return params;
39 }
40 
42  : Action(params),
43  _var_name_base(getParam<std::string>("var_name_base")),
44  _op_num(getParam<unsigned int>("op_num"))
45 {
46 }
47 
48 void
50 {
51 #ifdef DEBUG
52  Moose::err << "Inside the Tricrystal2CircleGrainsICAction Object\n";
53 #endif
54 
55  // Loop through the number of order parameters
56  for (unsigned int op = 0; op < _op_num; op++)
57  {
58  // Create variable names
59  std::string var_name = _var_name_base;
60  std::stringstream out;
61  out << op;
62  var_name.append(out.str());
63 
64  // Set parameters for BoundingBoxIC
65  InputParameters poly_params = _factory.getValidParams("Tricrystal2CircleGrainsIC");
66  poly_params.set<VariableName>("variable") = var_name;
67  poly_params.set<unsigned int>("op_num") = _op_num;
68  poly_params.set<unsigned int>("op_index") = op;
69 
70  // Add initial condition
71  _problem->addInitialCondition("Tricrystal2CircleGrainsIC",
72  "Tricrystal2CircleGrainsIC_" + Moose::stringify(op),
73  poly_params);
74  }
75 }
Tricrystal2CircleGrainsICAction::act
virtual void act()
Definition: Tricrystal2CircleGrainsICAction.C:49
Tricrystal2CircleGrainsICAction::Tricrystal2CircleGrainsICAction
Tricrystal2CircleGrainsICAction(const InputParameters &params)
Definition: Tricrystal2CircleGrainsICAction.C:41
validParams< Tricrystal2CircleGrainsICAction >
InputParameters validParams< Tricrystal2CircleGrainsICAction >()
Definition: Tricrystal2CircleGrainsICAction.C:32
Tricrystal2CircleGrainsICAction
Automatically generates all variables to model a polycrystal with op_num orderparameters.
Definition: Tricrystal2CircleGrainsICAction.h:18
Tricrystal2CircleGrainsICAction::_var_name_base
std::string _var_name_base
Definition: Tricrystal2CircleGrainsICAction.h:28
Tricrystal2CircleGrainsICAction::_abs_zero_tol
static const Real _abs_zero_tol
Definition: Tricrystal2CircleGrainsICAction.h:26
registerMooseAction
registerMooseAction("PhaseFieldApp", Tricrystal2CircleGrainsICAction, "add_ic")
Tricrystal2CircleGrainsICAction::_op_num
unsigned int _op_num
Definition: Tricrystal2CircleGrainsICAction.h:29
Tricrystal2CircleGrainsICAction.h