18 container.addInt(
"order",
"Order degree of the finite elements.").defaultValue(1).range(1, 8);
20 auto& material_container = container.addStructArray(
"materials",
"Container for array of materials");
23 auto& source = container.addStruct(
"source",
"Scalar source term (RHS of the heat transfer PDE)");
26 auto& equation_solver_container =
27 container.addStruct(
"equation_solver",
"Linear and Nonlinear stiffness Solver Parameters.");
30 auto& dynamics_container = container.addStruct(
"dynamics",
"Parameters for mass matrix inversion");
31 dynamics_container.addString(
"timestepper",
"Timestepper (ODE) method to use");
32 dynamics_container.addString(
"enforcement_method",
"Time-varying constraint enforcement method to use");
34 auto& bc_container = container.addStructDictionary(
"boundary_conds",
"Container of boundary conditions");
37 auto& init_temp = container.addStruct(
"initial_temperature",
"Coefficient for initial condition");
44 const axom::inlet::Container& base)
48 result.
order = base[
"order"];
51 auto equation_solver = base[
"equation_solver"];
55 if (base.contains(
"dynamics")) {
57 auto dynamics = base[
"dynamics"];
60 const static std::map<std::string, smith::TimestepMethod> timestep_methods = {
64 std::string timestep_method = dynamics[
"timestepper"];
65 SLIC_ERROR_ROOT_IF(timestep_methods.count(timestep_method) == 0,
66 "Unrecognized timestep method: " << timestep_method);
67 timestepping_options.
timestepper = timestep_methods.at(timestep_method);
70 const static std::map<std::string, smith::DirichletEnforcementMethod> enforcement_methods = {
72 std::string enforcement_method = dynamics[
"enforcement_method"];
73 SLIC_ERROR_ROOT_IF(enforcement_methods.count(enforcement_method) == 0,
74 "Unrecognized enforcement method: " << enforcement_method);
80 if (base.contains(
"source")) {
84 result.
materials = base[
"materials"].get<std::vector<smith::var_thermal_material_t>>();
87 base[
"boundary_conds"].get<std::unordered_map<std::string, smith::input::BoundaryConditionInputOptions>>();
89 if (base.contains(
"initial_temperature")) {
static void defineInputFileSchema(axom::inlet::Container &container)
This file contains the declaration of an equation solver wrapper.
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.