Line data Source code
1 : // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 : // SPDX-License-Identifier: Apache-2.0
3 :
4 : #ifndef PALACE_UTILS_IODATA_HPP
5 : #define PALACE_UTILS_IODATA_HPP
6 :
7 : #include "utils/configfile.hpp"
8 : #include "utils/units.hpp"
9 :
10 : namespace mfem
11 : {
12 :
13 : class ParMesh;
14 :
15 : } // namespace mfem
16 :
17 : namespace palace
18 : {
19 :
20 : std::stringstream PreprocessFile(const char *filename);
21 :
22 : //
23 : // A parser class for processing the configuration file which controls runtime options.
24 : //
25 : class IoData
26 : {
27 : public:
28 : // Configuration file objects.
29 : config::ProblemData problem;
30 : config::ModelData model;
31 : config::DomainData domains;
32 : config::BoundaryData boundaries;
33 : config::SolverData solver;
34 :
35 : // Class that holds mesh scale and converts between SI quantities and normalized values.
36 : Units units;
37 :
38 : private:
39 : bool init;
40 :
41 : // Check configuration file options and compatibility with requested problem type.
42 : void CheckConfiguration();
43 :
44 : public:
45 31 : IoData(const Units &units) : units(units), init(false) {}
46 :
47 : // Parse command line arguments and override options defaults.
48 : IoData(const char *filename, bool print);
49 :
50 : // Nondimensionalize input values for use in the solver, including the mesh coordinates.
51 : void NondimensionalizeInputs(mfem::ParMesh &mesh);
52 : };
53 :
54 : } // namespace palace
55 :
56 : #endif // PALACE_UTILS_IODATA_HPP
|