PRISMS-PF Manual
Loading...
Searching...
No Matches
user_input_parameters.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2025 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#pragma once
5
6#include <deal.II/base/parameter_handler.h>
7
10
22
23#include <prismspf/config.h>
24
25#include <vector>
26
28
29template <unsigned int dim>
31{
32public:
36 constexpr static unsigned int default_max_criteria = 5;
37
42
47 explicit UserInputParameters(const std::string &file_name,
48 unsigned int max_criteria = default_max_criteria);
49
53 void
54 declare_parameters(dealii::ParameterHandler &parameter_handler,
55 unsigned int max_criteria = default_max_criteria) const;
56
61 void
62 assign_parameters(dealii::ParameterHandler &parameter_handler,
63 unsigned int max_criteria = default_max_criteria);
64
68 void
69 validate(const std::vector<FieldAttributes> &field_attributes,
70 const std::vector<SolveBlock> &solve_blocks)
71 {
72 // Perform and postprocessing of user inputs and run checks
73 spatial_discretization.validate();
74 temporal_discretization.validate();
75 linear_solve_parameters.validate();
77 output_parameters.validate();
78 checkpoint_parameters.validate();
79 boundary_parameters.validate();
80 nucleation_parameters.validate();
81 misc_parameters.postprocess_and_validate();
82 load_ic_parameters.postprocess_and_validate();
83 }
84
88 std::string
90 {
91 // Print all the parameters to summary.log
92 spatial_discretization.print_parameter_summary();
93 temporal_discretization.print_parameter_summary();
94 linear_solve_parameters.print_parameter_summary();
95 nonlinear_solve_parameters.print_parameter_summary();
96 output_parameters.print_parameter_summary();
97 checkpoint_parameters.print_parameter_summary();
98 boundary_parameters.print_parameter_summary();
99 load_ic_parameters.print_parameter_summary();
100 nucleation_parameters.print_parameter_summary();
101 misc_parameters.print_parameter_summary();
102 user_constants.print();
103 return "";
104 }
105
106 // Spatial discretization parameters
108
109 // Temporal discretization parameters
111
112 // Linear solve parameters
114
115 // Nonlinear solve parameters
117
118 // Output parameters
120
121 // Checkpoint parameters
123
124 // Boundary parameters
126
127 // Load IC parameters
129
130 // Nucleation parameters
132
133 // Miscellaneous parameters
135
136 // User constants
138};
139
140template <unsigned int dim>
141inline UserInputParameters<dim>::UserInputParameters(const std::string &file_name,
142 unsigned int max_criteria)
143{
144 // user_constants is a special little princess that needs to know the file contents
145 // before we declare the parameters.
146 user_constants.file_name = file_name;
147 dealii::ParameterHandler parameter_handler;
148 declare_parameters(parameter_handler, max_criteria);
149 parameter_handler.parse_input(file_name);
150 assign_parameters(parameter_handler, max_criteria);
151}
152
153template <unsigned int dim>
154inline void
155UserInputParameters<dim>::declare_parameters(dealii::ParameterHandler &parameter_handler,
156 unsigned int max_criteria) const
157{
158 // Perform and postprocessing of user inputs and run checks
159 spatial_discretization.declare_parameters(parameter_handler, max_criteria);
160 temporal_discretization.declare_parameters(parameter_handler);
161 linear_solve_parameters.declare_parameters(parameter_handler, max_criteria);
162 nonlinear_solve_parameters.declare_parameters(parameter_handler, max_criteria);
163 output_parameters.declare_parameters(parameter_handler);
164 checkpoint_parameters.declare_parameters(parameter_handler);
165 boundary_parameters.declare_parameters(parameter_handler, max_criteria);
166 nucleation_parameters.declare_parameters(parameter_handler);
167 misc_parameters.declare_parameters(parameter_handler);
168 load_ic_parameters.declare_parameters(parameter_handler, max_criteria);
169 user_constants.declare_parameters(parameter_handler);
170}
171
172template <unsigned int dim>
173inline void
174UserInputParameters<dim>::assign_parameters(dealii::ParameterHandler &parameter_handler,
175 unsigned int max_criteria)
176{
177 // Perform and postprocessing of user inputs and run checks
178 spatial_discretization.assign_parameters(parameter_handler, max_criteria);
179 temporal_discretization.assign_parameters(parameter_handler);
180 linear_solve_parameters.assign_parameters(parameter_handler, max_criteria);
181 nonlinear_solve_parameters.assign_parameters(parameter_handler, max_criteria);
182 output_parameters.assign_parameters(parameter_handler, temporal_discretization);
183 checkpoint_parameters.assign_parameters(parameter_handler, temporal_discretization);
184 boundary_parameters.assign_parameters(parameter_handler, max_criteria);
185 nucleation_parameters.assign_parameters(parameter_handler);
186 misc_parameters.assign_parameters(parameter_handler);
187 load_ic_parameters.assign_parameters(parameter_handler, max_criteria);
188 user_constants.assign_parameters(parameter_handler);
189}
190
191PRISMS_PF_END_NAMESPACE
Class the stores and manages user-defined constants.
Definition user_constants.h:30
void validate(const std::vector< FieldAttributes > &field_attributes, const std::vector< SolveBlock > &solve_blocks)
Ensure that the parameters are compatible with a set of fields and solvers.
Definition user_input_parameters.h:69
SpatialDiscretization< dim > spatial_discretization
Definition user_input_parameters.h:107
void assign_parameters(dealii::ParameterHandler &parameter_handler, unsigned int max_criteria=default_max_criteria)
Read the parameters from the parameter handler and assign them to the appropriate member variables.
Definition user_input_parameters.h:174
NonlinearSolveParameterSet nonlinear_solve_parameters
Definition user_input_parameters.h:116
std::string parameter_summary()
Ensure that the parameters are compatible with a set of fields and solvers.
Definition user_input_parameters.h:89
LinearSolveParameters linear_solve_parameters
Definition user_input_parameters.h:113
static constexpr unsigned int default_max_criteria
Number of subsections to declare for certain field and solver parameters.
Definition user_input_parameters.h:36
MiscellaneousParameters misc_parameters
Definition user_input_parameters.h:134
LoadInitialConditionParameters load_ic_parameters
Definition user_input_parameters.h:128
CheckpointParameters checkpoint_parameters
Definition user_input_parameters.h:122
OutputParameters output_parameters
Definition user_input_parameters.h:119
NucleationParameters nucleation_parameters
Definition user_input_parameters.h:131
TemporalDiscretization temporal_discretization
Definition user_input_parameters.h:110
BoundaryParameters< dim > boundary_parameters
Definition user_input_parameters.h:125
void declare_parameters(dealii::ParameterHandler &parameter_handler, unsigned int max_criteria=default_max_criteria) const
Tell parameter handler to expect the parameters by declaring them.
Definition user_input_parameters.h:155
UserInputParameters()=default
Default Constructor.
UserConstants< dim > user_constants
Definition user_input_parameters.h:137
Definition conditional_ostreams.cc:20
Struct that holds boundary parameters.
Definition constraint_parameters.h:162
Struct that holds checkpoint parameters.
Definition checkpoint_parameters.h:27
Struct that holds linear solver parameters.
Definition linear_solve_parameters.h:62
Struct that stores relevant load initial condition information.
Definition load_initial_condition_parameters.h:51
Struct that holds miscellaneous parameters.
Definition miscellaneous_parameters.h:26
Struct that holds nonlinear solver parameters.
Definition nonlinear_solve_parameters.h:35
Struct that holds nucleation parameters.
Definition nucleation_parameters.h:29
Struct that holds output parameters.
Definition output_parameters.h:28
Struct that holds spatial discretization parameters.
Definition spatial_discretization.h:231
Struct that holds temporal discretization parameters.
Definition temporal_discretization.h:21