14 container.addInt(
"order",
"polynomial order of the basis functions.").defaultValue(1).range(1, 3);
16 auto& material_container = container.addStructArray(
"materials",
"Container for array of materials");
20 container.addBool(
"geometric_nonlin",
"Flag to include geometric nonlinearities in the residual calculation.")
23 auto& equation_solver_container =
24 container.addStruct(
"equation_solver",
"Linear and Nonlinear stiffness Solver Parameters.");
27 auto& dynamics_container = container.addStruct(
"dynamics",
"Parameters for mass matrix inversion");
28 dynamics_container.addString(
"timestepper",
"Timestepper (ODE) method to use");
29 dynamics_container.addString(
"enforcement_method",
"Time-varying constraint enforcement method to use");
31 auto& bc_container = container.addStructDictionary(
"boundary_conds",
"Container of boundary conditions");
34 auto& init_displ = container.addStruct(
"initial_displacement",
"Coefficient for initial condition");
36 auto& init_velo = container.addStruct(
"initial_velocity",
"Coefficient for initial condition");
43 const axom::inlet::Container& base)
47 result.
order = base[
"order"];
50 auto equation_solver = base[
"equation_solver"];
54 if (base.contains(
"dynamics")) {
56 auto dynamics = base[
"dynamics"];
59 const static std::map<std::string, serac::TimestepMethod> timestep_methods = {
63 std::string timestep_method = dynamics[
"timestepper"];
64 SLIC_ERROR_ROOT_IF(timestep_methods.count(timestep_method) == 0,
65 "Unrecognized timestep method: " << timestep_method);
66 timestepping_options.
timestepper = timestep_methods.at(timestep_method);
69 const static std::map<std::string, serac::DirichletEnforcementMethod> enforcement_methods = {
71 std::string enforcement_method = dynamics[
"enforcement_method"];
72 SLIC_ERROR_ROOT_IF(enforcement_methods.count(enforcement_method) == 0,
73 "Unrecognized enforcement method: " << enforcement_method);
79 result.
materials = base[
"materials"].get<std::vector<serac::var_solid_material_t>>();
82 bool input_geom_nonlin = base[
"geometric_nonlin"];
83 if (input_geom_nonlin) {
89 if (base.contains(
"boundary_conds")) {
91 base[
"boundary_conds"].get<std::unordered_map<std::string, serac::input::BoundaryConditionInputOptions>>();
94 if (base.contains(
"initial_displacement")) {
97 if (base.contains(
"initial_velocity")) {
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.