PRISMS-PF Manual
Loading...
Searching...
No Matches
load_initial_condition_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/exceptions.h>
7#include <deal.II/base/types.h>
8
11
12#include <prismspf/config.h>
13
14#include <cstdint>
15#include <filesystem>
16#include <string>
17#include <vector>
18
20
25{
26 // File name
27 std::string filename;
28
29 // Grid type
31
32 // File variable names
33 std::vector<std::string> file_variable_names;
34
35 // Simulation variable names
36 std::vector<std::string> simulation_variable_names;
37
38 // Number of data points in each direction
39 std::array<dealii::types::global_dof_index, 3> n_data_points = {
40 {0, 0, 0}
41 };
42};
43
48{
49public:
53 static constexpr unsigned int max_files = 8;
54
58 void
60
64 void
66
70 void
72 {
74 ic_files.clear();
75 }
76
80 void
85
89 [[nodiscard]] bool
94
98 void
106
110 [[nodiscard]] unsigned int
112 {
113 return ic_files.size();
114 }
115
119 [[nodiscard]] const std::vector<InitialConditionFile> &
121 {
122 return ic_files;
123 }
124
125private:
126 // Whether to read initial conditions from file
128
129 // IC files
130 std::vector<InitialConditionFile> ic_files;
131};
132
133inline void
135{
136 for (const auto &ic_file : ic_files)
137 {
138 // Check that the file variables are the same length as the simulation variables
139 AssertThrow(ic_file.file_variable_names.size() ==
140 ic_file.simulation_variable_names.size(),
141 dealii::ExcMessage("The number of file variables must be the same as "
142 "the number of simulation variables"));
143 }
144
145 // TODO (landinjm): Check that there are no duplicate field names so we don't double
146 // assign.
147}
148
149inline void
151{
153 {
155 << "================================================\n"
156 << " Load IC Parameters\n"
157 << "================================================\n";
158
159 for (const auto &ic_file : ic_files)
160 {
162 << "File name: " << ic_file.filename << "\n"
163 << "Dataset format: " << to_string(ic_file.dataset_format) << "\n"
164 << "File variable names: ";
165 for (const auto &file_variable_name : ic_file.file_variable_names)
166 {
168 }
170 << "Simulation variable names: ";
171 for (const auto &simulation_variable_name : ic_file.simulation_variable_names)
172 {
174 }
175 if (ic_file.dataset_format == FlatBinary)
176 {
177 ConditionalOStreams::pout_summary() << "\n Data points in each direction: ";
178 for (const auto &n_data_points : ic_file.n_data_points)
179 {
180 ConditionalOStreams::pout_summary() << n_data_points << " ";
181 }
182 }
183 }
184
185 ConditionalOStreams::pout_summary() << "\n" << std::flush;
186 }
187}
188
static dealii::ConditionalOStream & pout_summary()
Log output stream for writing a summary.log file.
Definition conditional_ostreams.cc:34
@ Value
Use value of the variable as a criterion for refinement.
Definition grid_refiner_criterion.h:31
Definition conditional_ostreams.cc:20
Struct that store the read-in information for a single file.
Definition load_initial_condition_parameters.h:25
std::vector< std::string > simulation_variable_names
Definition load_initial_condition_parameters.h:36
std::array< dealii::types::global_dof_index, 3 > n_data_points
Definition load_initial_condition_parameters.h:39
std::vector< std::string > file_variable_names
Definition load_initial_condition_parameters.h:33
DataFormatType dataset_format
Definition load_initial_condition_parameters.h:30
std::string filename
Definition load_initial_condition_parameters.h:27
Struct that stores relevant load initial condition information.
Definition load_initial_condition_parameters.h:48
void postprocess_and_validate()
Postprocess and validate parameters.
Definition load_initial_condition_parameters.h:134
bool read_initial_conditions_from_file
Definition load_initial_condition_parameters.h:127
unsigned int get_n_initial_condition_files() const
Get the number of initial condition files.
Definition load_initial_condition_parameters.h:111
void print_parameter_summary() const
Print parameters to summary.log.
Definition load_initial_condition_parameters.h:150
static constexpr unsigned int max_files
Maximum number of initial condition files.
Definition load_initial_condition_parameters.h:53
std::vector< InitialConditionFile > ic_files
Definition load_initial_condition_parameters.h:130
void add_initial_condition_file(InitialConditionFile _ic_file)
Add a initial condition file.
Definition load_initial_condition_parameters.h:99
const std::vector< InitialConditionFile > & get_initial_condition_files() const
Get the initial condition files.
Definition load_initial_condition_parameters.h:120
bool get_read_initial_conditions_from_file() const
Get the read initial conditions from file flag.
Definition load_initial_condition_parameters.h:90
void set_read_initial_conditions_from_file(bool _read_initial_conditions_from_file)
Set the read initial conditions from file flag.
Definition load_initial_condition_parameters.h:81
void clear()
Clear the initial condition parameters.
Definition load_initial_condition_parameters.h:71
std::string to_string(ElasticityModel type)
Enum to string for ElasticityModel.
Definition type_enums.h:120
DataFormatType
Data formats for input initial conditions. LastEntry is used for loop bounds.
Definition type_enums.h:110
@ FlatBinary
Definition type_enums.h:112