23 const double t_final=0;
26 const int random_seed=0;
34 const bc_vec_t boundary_conditions = {};
40 Parameters() =
default;
43 const double dx,
const double dt,
60 boundary_conditions(bcs),
62 initial_condition(ic),
64 integration_method(im)
67 n_y = (gs.size()>1) ? gs.at(1) : 1;
68 n_z = (gs.size()>2) ? gs.at(2) : 1;
69 n_cells = n_x * n_y * n_z;
76 case GridDimension::D1:
return "1d";
77 case GridDimension::D2:
return "2d";
78 case GridDimension::D3:
return "3d";
79 default:
return "Unknown";
85 case GridTopology::BOUNDED:
return "bounded";
86 case GridTopology::PERIODIC:
return "periodic";
87 default:
return "Unknown";
92 std::string combo =
"x edge:";
93 combo.append(report(gts.at(0)));
94 if (gd==GridDimension::D2 or gd==GridDimension::D3)
96 combo.append(
"; y edge:");
97 combo.append(report(gts.at(1)));
99 if (gd==GridDimension::D3)
101 combo.append(
"; z edge:");
102 combo.append(report(gts.at(2)));
109 case BoundaryCondition::FLOATING:
return "floating";
110 case BoundaryCondition::FIXED_VALUE:
return "fixed value";
111 case BoundaryCondition::FIXED_FLUX:
return "fixed flux";
112 default:
return "Unknown";
117 std::string combo =
"x0 edge:";
118 combo.append(report(bcs.at(0)));
119 combo.append(
", x1 edge:");
120 combo.append(report(bcs.at(1)));
121 if (gd==GridDimension::D2 or gd==GridDimension::D3)
123 combo.append(
"; y0 edge:");
124 combo.append(report(bcs.at(2)));
125 combo.append(
", y1 edge:");
126 combo.append(report(bcs.at(3)));
128 if (gd==GridDimension::D3)
130 combo.append(
"; z0 edge:");
131 combo.append(report(bcs.at(2)));
132 combo.append(
", z1 edge:");
133 combo.append(report(bcs.at(2)));
140 case InitialCondition::RANDOM_UNIFORM:
return "random uniform values";
141 case InitialCondition::RANDOM_GAUSSIAN:
return "random Gaussian values";
142 case InitialCondition::CONSTANT_VALUE:
return "constant value";
143 case InitialCondition::SINGLE_SEED:
return "single seed";
144 default:
return "Unknown";
150 case IntegrationMethod::EULER:
return "Euler";
151 case IntegrationMethod::RUNGE_KUTTA:
return "Runge-Kutta";
152 default:
return "Unknown";
158 std::cout << std::endl;
159 std::cout <<
"t_final: " << t_final << std::endl;
160 std::cout <<
"dx: " << dx << std::endl;
161 std::cout <<
"dt: " << dt << std::endl;
162 std::cout << std::endl;
163 std::cout <<
"random_seed: " << random_seed << std::endl;
164 std::cout <<
"grid_dimension: " << report(grid_dimension) << std::endl;
165 std::cout <<
"grid_size: ";
166 for (
const auto& element : grid_size) {std::cout << element <<
" ";}
167 std::cout << std::endl;
168 std::cout <<
"n_cells: " << n_cells << std::endl;
169 std::cout <<
"grid_topologies: "
170 << report(grid_dimension, grid_topologies) << std::endl;
171 std::cout <<
"boundary_conditions: "
172 << report(grid_dimension, boundary_conditions) << std::endl;
173 std::cout <<
"bc_values: ";
174 for (
const auto& element : bc_values) {std::cout << element <<
" ";}
175 std::cout << std::endl;
176 std::cout <<
"initial_condition: "
177 << report(initial_condition) << std::endl;
178 std::cout <<
"ic_values: ";
179 for (
const auto& element : ic_values) {std::cout << element <<
" ";}
180 std::cout << std::endl;
181 std::cout <<
"integration_method: "
182 << report(integration_method) << std::endl;