14 container.addInt(
"order",
"Order degree of the finite elements.").defaultValue(1).range(1, 8);
16 auto& material_container = container.addStructArray(
"materials",
"Container for array of materials");
19 auto& source = container.addStruct(
"source",
"Scalar source term (RHS of the heat transfer PDE)");
22 auto& equation_solver_container =
23 container.addStruct(
"equation_solver",
"Linear and Nonlinear stiffness Solver Parameters.");
26 auto& dynamics_container = container.addStruct(
"dynamics",
"Parameters for mass matrix inversion");
27 dynamics_container.addString(
"timestepper",
"Timestepper (ODE) method to use");
28 dynamics_container.addString(
"enforcement_method",
"Time-varying constraint enforcement method to use");
30 auto& bc_container = container.addStructDictionary(
"boundary_conds",
"Container of boundary conditions");
33 auto& init_temp = container.addStruct(
"initial_temperature",
"Coefficient for initial condition");
40 const axom::inlet::Container& base)
44 result.
order = base[
"order"];
47 auto equation_solver = base[
"equation_solver"];
51 if (base.contains(
"dynamics")) {
53 auto dynamics = base[
"dynamics"];
56 const static std::map<std::string, serac::TimestepMethod> timestep_methods = {
60 std::string timestep_method = dynamics[
"timestepper"];
61 SLIC_ERROR_ROOT_IF(timestep_methods.count(timestep_method) == 0,
62 "Unrecognized timestep method: " << timestep_method);
63 timestepping_options.
timestepper = timestep_methods.at(timestep_method);
66 const static std::map<std::string, serac::DirichletEnforcementMethod> enforcement_methods = {
68 std::string enforcement_method = dynamics[
"enforcement_method"];
69 SLIC_ERROR_ROOT_IF(enforcement_methods.count(enforcement_method) == 0,
70 "Unrecognized enforcement method: " << enforcement_method);
76 if (base.contains(
"source")) {
80 result.
materials = base[
"materials"].get<std::vector<serac::var_thermal_material_t>>();
83 base[
"boundary_conds"].get<std::unordered_map<std::string, serac::input::BoundaryConditionInputOptions>>();
85 if (base.contains(
"initial_temperature")) {
static void defineInputFileSchema(axom::inlet::Container &container)
Accelerator functionality.
Parameters for an iterative linear solution scheme.
Nonlinear solution scheme parameters.
A timestep and boundary condition enforcement method for a dynamic solver.
TimestepMethod timestepper
The timestepping method to be applied.
DirichletEnforcementMethod enforcement_method
The essential boundary enforcement method to use.