https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
17
20{
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
48void
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}
registerMooseAction("PhaseFieldApp", PolycrystalVoronoiVoidICAction, "add_ic")
void ErrorVector unsigned int
static InputParameters validParams()
std::shared_ptr< FEProblemBase > & _problem
InputParameters getValidParams(const std::string &name) const
void suppressParameter(const std::string &name)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
const InputParameters & parameters() const
const std::string & name() const
Factory & _factory
Sets up a polycrystal initial condition with voids on grain boundaries for all order parameters.
PolycrystalVoronoiVoidICAction(const InputParameters &params)
static InputParameters actionParameters()
std::string stringify(const T &t)