https://mooseframework.inl.gov
PolycrystalVoronoiVoidICAction.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 
12 #include "Factory.h"
13 #include "FEProblem.h"
14 #include "Conversion.h"
15 
16 registerMooseAction("PhaseFieldApp", PolycrystalVoronoiVoidICAction, "add_ic");
17 
20 {
22  params.addClassDescription(
23  "Sets polycrystal Voronoi void initial conditions for each order parameter");
25  params.addRequiredParam<std::string>("var_name_base", "specifies the base name of the variables");
26  params.suppressParameter<VariableName>("variable");
27  params.addRequiredParam<UserObjectName>(
28  "polycrystal_ic_uo", "UserObject for obtaining the polycrystal grain structure.");
29  params.addParam<FileName>(
30  "file_name",
31  "",
32  "File containing grain centroids, if file_name is provided, the centroids "
33  "from the file will be used.");
34  params.addParam<std::vector<SubdomainName>>(
35  "block", {}, "Block restriction for the initial condition");
36 
37  return params;
38 }
39 
41  : Action(params),
42  _op_num(getParam<unsigned int>("op_num")),
43  _var_name_base(getParam<std::string>("var_name_base")),
44  _file_name(getParam<FileName>("file_name"))
45 {
46 }
47 
48 void
50 {
51  // Loop through the number of order parameters
52  for (unsigned int op = 0; op < _op_num; op++)
53  {
54  // Set parameters for BoundingBoxIC
55  InputParameters poly_params = _factory.getValidParams("PolycrystalVoronoiVoidIC");
56  poly_params.applyParameters(parameters());
57  poly_params.set<unsigned int>("op_index") = op;
58  poly_params.set<VariableName>("variable") = _var_name_base + Moose::stringify(op);
59  poly_params.set<MooseEnum>("structure_type") = "grains";
60  poly_params.set<UserObjectName>("polycrystal_ic_uo") =
61  getParam<UserObjectName>("polycrystal_ic_uo");
62 
63  // Add initial condition
64  _problem->addInitialCondition(
65  "PolycrystalVoronoiVoidIC", name() + "_" + Moose::stringify(op), poly_params);
66  }
67 }
Sets up a polycrystal initial condition with voids on grain boundaries for all order parameters...
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
registerMooseAction("PhaseFieldApp", PolycrystalVoronoiVoidICAction, "add_ic")
InputParameters getValidParams(const std::string &name) const
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
PolycrystalVoronoiVoidICAction(const InputParameters &params)
virtual const std::string & name() const
void addRequiredParam(const std::string &name, const std::string &doc_string)
void suppressParameter(const std::string &name)
Factory & _factory
static InputParameters validParams()
std::string stringify(const T &t)
void addClassDescription(const std::string &doc_string)
std::shared_ptr< FEProblemBase > & _problem
const InputParameters & parameters() const
static InputParameters actionParameters()
void ErrorVector unsigned int