Branch data Line data Source code
1 : : // *****************************************************************************
2 : : /*!
3 : : \file src/Control/Inciter/InputDeck/InputDeck.hpp
4 : : \copyright 2012-2015 J. Bakosi,
5 : : 2016-2018 Los Alamos National Security, LLC.,
6 : : 2019-2021 Triad National Security, LLC.
7 : : All rights reserved. See the LICENSE file for details.
8 : : \brief Inciter's new input deck definition
9 : : \details This file defines the heterogeneous struct that is used for storing
10 : : the data from user input during the control file parsing of the
11 : : computational shock hydrodynamics tool, Inciter.
12 : : */
13 : : // *****************************************************************************
14 : : #ifndef InputDeck_h
15 : : #define InputDeck_h
16 : :
17 : : #include <getopt.h>
18 : : #include "Types.hpp"
19 : : #include "TaggedTuple.hpp"
20 : : #include "Inciter/CmdLine/CmdLine.hpp"
21 : : #include "Transfer.hpp"
22 : : #include "Inciter/OutVar.hpp"
23 : : #include "Inciter/Options/PDE.hpp"
24 : : #include "Inciter/Options/Problem.hpp"
25 : : #include "Inciter/Options/Scheme.hpp"
26 : : #include "Inciter/Options/Limiter.hpp"
27 : : #include "Inciter/Options/Flux.hpp"
28 : : #include "Inciter/Options/Initiate.hpp"
29 : : #include "Inciter/Options/AMRInitial.hpp"
30 : : #include "Inciter/Options/AMRError.hpp"
31 : : #include "Inciter/Options/PrefIndicator.hpp"
32 : : #include "Inciter/Options/MeshVelocity.hpp"
33 : : #include "Inciter/Options/MeshVelocitySmoother.hpp"
34 : : #include "Inciter/Options/Material.hpp"
35 : : #include "Options/PartitioningAlgorithm.hpp"
36 : : #include "Options/TxtFloatFormat.hpp"
37 : : #include "Options/FieldFile.hpp"
38 : : #include "Options/Error.hpp"
39 : : #include "Options/UserTable.hpp"
40 : :
41 : : namespace inciter {
42 : :
43 : : namespace ctr {
44 : :
45 : : using ncomp_t = std::size_t;
46 : :
47 : : using bclist = tk::TaggedTuple< brigand::list<
48 : : tag::dirichlet, std::vector< std::size_t >,
49 : : tag::symmetry, std::vector< std::size_t >,
50 : : tag::outlet, std::vector< std::size_t >,
51 : : tag::farfield, std::vector< std::size_t >,
52 : : tag::extrapolate, std::vector< std::size_t >,
53 : : tag::noslipwall, std::vector< std::size_t >,
54 : : tag::slipwall, std::vector< std::size_t >
55 : : > >;
56 : :
57 : : // Transport
58 : : using transportList = tk::TaggedTuple< brigand::list<
59 : : tag::physics, PhysicsType,
60 : : tag::ncomp, std::size_t,
61 : : tag::intsharp, int,
62 : : tag::intsharp_param, tk::real,
63 : : tag::problem, ProblemType,
64 : : tag::diffusivity, std::vector< tk::real >,
65 : : tag::lambda, std::vector< tk::real >,
66 : : tag::u0, std::vector< tk::real >
67 : : > >;
68 : :
69 : : // CompFlow
70 : : using compflowList = tk::TaggedTuple< brigand::list<
71 : : tag::physics, PhysicsType,
72 : : tag::problem, ProblemType,
73 : : tag::alpha, tk::real,
74 : : tag::beta, tk::real,
75 : : tag::betax, tk::real,
76 : : tag::betay, tk::real,
77 : : tag::betaz, tk::real,
78 : : tag::r0, tk::real,
79 : : tag::p0, tk::real,
80 : : tag::ce, tk::real,
81 : : tag::kappa, tk::real
82 : : > >;
83 : :
84 : : // MultiMat
85 : : using multimatList = tk::TaggedTuple< brigand::list<
86 : : tag::physics, PhysicsType,
87 : : tag::nmat, std::size_t,
88 : : tag::min_volumefrac, tk::real,
89 : : tag::prelax, uint64_t,
90 : : tag::prelax_timescale, tk::real,
91 : : tag::intsharp, int,
92 : : tag::intsharp_param, tk::real,
93 : : tag::rho0constraint, uint64_t,
94 : : tag::dt_sos_massavg, int,
95 : : tag::problem, ProblemType,
96 : : tag::viscous, bool
97 : : > >;
98 : :
99 : : // MultiSpecies
100 : : using multispeciesList = tk::TaggedTuple< brigand::list<
101 : : tag::physics, PhysicsType,
102 : : tag::nspec, std::size_t,
103 : : tag::problem, ProblemType,
104 : : tag::viscous, bool
105 : : > >;
106 : :
107 : : // Material/EOS object
108 : : using materialList = tk::TaggedTuple< brigand::list<
109 : : tag::eos, MaterialType,
110 : : tag::id, std::vector< uint64_t >,
111 : : tag::gamma, std::vector< tk::real >,
112 : : tag::pstiff, std::vector< tk::real >,
113 : : tag::w_gru, std::vector< tk::real >,
114 : : tag::A_jwl, std::vector< tk::real >,
115 : : tag::B_jwl, std::vector< tk::real >,
116 : : tag::C_jwl, std::vector< tk::real >,
117 : : tag::R1_jwl, std::vector< tk::real >,
118 : : tag::R2_jwl, std::vector< tk::real >,
119 : : tag::rho0_jwl, std::vector< tk::real >,
120 : : tag::de_jwl, std::vector< tk::real >,
121 : : tag::rhor_jwl, std::vector< tk::real >,
122 : : tag::Tr_jwl, std::vector< tk::real >,
123 : : tag::Pr_jwl, std::vector< tk::real >,
124 : : tag::mu, std::vector< tk::real >,
125 : : tag::yield_stress, std::vector< tk::real >,
126 : : tag::alpha, std::vector< tk::real >,
127 : : tag::K0, std::vector< tk::real >,
128 : : tag::cv, std::vector< tk::real >,
129 : : tag::k, std::vector< tk::real >,
130 : : tag::plasticity_reltime, std::vector< tk::real >
131 : : > >;
132 : :
133 : : // Species/EOS object
134 : : using speciesList = tk::TaggedTuple< brigand::list<
135 : : tag::id, std::vector< uint64_t >,
136 : : tag::gamma, std::vector< tk::real >,
137 : : tag::R, std::vector< tk::real >,
138 : : tag::cp_coeff, std::vector< std::vector< std::vector< tk::real > > >,
139 : : tag::t_range, std::vector< std::vector< tk::real > >,
140 : : tag::dH_ref, std::vector< tk::real >
141 : : > >;
142 : :
143 : : // Boundary conditions block
144 : : using bcList = tk::TaggedTuple< brigand::list<
145 : : tag::mesh, std::vector< std::size_t >,
146 : : tag::dirichlet, std::vector< std::size_t >,
147 : : tag::symmetry, std::vector< std::size_t >,
148 : : tag::outlet, std::vector< std::size_t >,
149 : : tag::farfield, std::vector< std::size_t >,
150 : : tag::extrapolate, std::vector< std::size_t >,
151 : : tag::noslipwall, std::vector< std::size_t >,
152 : : tag::slipwall, std::vector< std::size_t >,
153 : : tag::velocity, std::vector< tk::real >,
154 : : tag::pressure, tk::real,
155 : : tag::density, tk::real,
156 : : tag::temperature, tk::real,
157 : : tag::mass_fractions, std::vector< tk::real >,
158 : : tag::materialid, std::size_t,
159 : : tag::inlet, std::vector<
160 : : tk::TaggedTuple< brigand::list<
161 : : tag::sideset, std::vector< uint64_t >,
162 : : tag::velocity, std::vector< tk::real >,
163 : : tag::pressure, tk::real,
164 : : tag::temperature, tk::real,
165 : : tag::materialid, std::size_t
166 : : > >
167 : : >,
168 : : tag::timedep, std::vector<
169 : : tk::TaggedTuple< brigand::list<
170 : : tag::sideset, std::vector< uint64_t >,
171 : : tag::fn, std::vector< tk::real >
172 : : > >
173 : : >,
174 : : tag::back_pressure, tk::TaggedTuple< brigand::list<
175 : : tag::sideset, std::vector< std::size_t >,
176 : : tag::pressure, tk::real
177 : : > >
178 : : > >;
179 : :
180 : : // IC box
181 : : using boxList = tk::TaggedTuple< brigand::list<
182 : : tag::materialid, std::size_t,
183 : : tag::volume, tk::real,
184 : : tag::mass, tk::real,
185 : : tag::density, tk::real,
186 : : tag::velocity, std::vector< tk::real >,
187 : : tag::pressure, tk::real,
188 : : tag::energy, tk::real,
189 : : tag::energy_content, tk::real,
190 : : tag::temperature, tk::real,
191 : : tag::mass_fractions, std::vector< tk::real >,
192 : : tag::xmin, tk::real,
193 : : tag::xmax, tk::real,
194 : : tag::ymin, tk::real,
195 : : tag::ymax, tk::real,
196 : : tag::zmin, tk::real,
197 : : tag::zmax, tk::real,
198 : : tag::orientation, std::vector< tk::real >,
199 : : tag::initiate, inciter::ctr::InitiateType,
200 : : tag::point, std::vector< tk::real >,
201 : : tag::init_time, tk::real,
202 : : tag::front_width, tk::real,
203 : : tag::front_speed, tk::real
204 : : > >;
205 : :
206 : : // IC meshblock
207 : : using meshblockList = tk::TaggedTuple< brigand::list<
208 : : tag::blockid, std::uint64_t,
209 : : tag::materialid, std::size_t,
210 : : tag::volume, tk::real,
211 : : tag::mass, tk::real,
212 : : tag::density, tk::real,
213 : : tag::velocity, std::vector< tk::real >,
214 : : tag::pressure, tk::real,
215 : : tag::energy, tk::real,
216 : : tag::energy_content, tk::real,
217 : : tag::temperature, tk::real,
218 : : tag::mass_fractions, std::vector< tk::real >,
219 : : tag::initiate, inciter::ctr::InitiateType,
220 : : tag::point, std::vector< tk::real >,
221 : : tag::init_time, tk::real,
222 : : tag::front_width, tk::real,
223 : : tag::front_speed, tk::real
224 : : > >;
225 : :
226 : : // Initial conditions (ic) block
227 : : using icList = tk::TaggedTuple< brigand::list<
228 : : tag::materialid, std::size_t,
229 : : tag::pressure, tk::real,
230 : : tag::temperature, tk::real,
231 : : tag::mass_fractions, std::vector< tk::real >,
232 : : tag::density, tk::real,
233 : : tag::energy, tk::real,
234 : : tag::velocity, std::vector< tk::real >,
235 : : tag::box, std::vector< boxList >,
236 : : tag::meshblock, std::vector< meshblockList >
237 : : > >;
238 : :
239 : : // Overset mesh block
240 : : using meshList = tk::TaggedTuple< brigand::list<
241 : : tag::filename, std::string,
242 : : tag::location, std::vector< tk::real >,
243 : : tag::orientation, std::vector< tk::real >,
244 : : tag::mass, tk::real,
245 : : tag::moment_of_inertia, tk::real,
246 : : tag::center_of_mass, std::vector< tk::real >
247 : : > >;
248 : :
249 : : // Field output block
250 : : using fieldOutputList = tk::TaggedTuple< brigand::list<
251 : : tag::interval, uint32_t,
252 : : tag::time_interval, tk::real,
253 : : tag::time_range, std::vector< tk::real >,
254 : : tag::refined, bool,
255 : : tag::filetype, tk::ctr::FieldFileType,
256 : : tag::sideset, std::vector< uint64_t >,
257 : : tag::outvar, std::vector< OutVar >,
258 : : tag::elemalias, std::vector< std::string >, // only for error checking
259 : : tag::elemvar, std::vector< std::string >, // only for error checking
260 : : tag::nodealias, std::vector< std::string >, // only for error checking
261 : : tag::nodevar, std::vector< std::string > // only for error checking
262 : : > >;
263 : :
264 : : // Diagnostics block
265 : : using diagnosticsList = tk::TaggedTuple< brigand::list<
266 : : tag::interval, uint32_t,
267 : : tag::error, tk::ctr::ErrorType,
268 : : tag::format, tk::ctr::TxtFloatFormatType,
269 : : tag::precision, std::streamsize
270 : : > >;
271 : :
272 : : // History output block
273 : : using historyOutputList = tk::TaggedTuple< brigand::list<
274 : : tag::interval, uint32_t,
275 : : tag::time_interval, tk::real,
276 : : tag::time_range, std::vector< tk::real >,
277 : : tag::format, tk::ctr::TxtFloatFormatType,
278 : : tag::precision, std::streamsize,
279 : : tag::point, std::vector<
280 : : tk::TaggedTuple< brigand::list<
281 : : tag::id, std::string,
282 : : tag::coord, std::vector< tk::real >
283 : : > >
284 : : >
285 : : > >;
286 : :
287 : : using ConfigMembers = brigand::list<
288 : :
289 : : tag::title, std::string,
290 : :
291 : : // Command line parameters
292 : : tag::cmd, CmdLine,
293 : :
294 : : // time stepping options
295 : : tag::nstep, uint64_t,
296 : : tag::term, tk::real,
297 : : tag::t0, tk::real,
298 : : tag::dt, tk::real,
299 : : tag::cfl, tk::real,
300 : : tag::cfl_ramping, bool,
301 : : tag::ttyi, uint32_t,
302 : : tag::imex_runge_kutta, uint32_t,
303 : : tag::imex_maxiter, uint32_t,
304 : : tag::imex_reltol, tk::real,
305 : : tag::imex_abstol, tk::real,
306 : :
307 : : // steady-state solver options
308 : : tag::steady_state, bool,
309 : : tag::residual, tk::real,
310 : : tag::rescomp, uint32_t,
311 : :
312 : : // mesh partitioning and reordering/sorting choices
313 : : tag::partitioning, tk::ctr::PartitioningAlgorithmType,
314 : : tag::pelocal_reorder, bool,
315 : : tag::operator_reorder, bool,
316 : :
317 : : // discretization scheme choices
318 : : tag::scheme, SchemeType,
319 : : tag::ndof, std::size_t,
320 : : tag::rdof, std::size_t,
321 : : tag::flux, FluxType,
322 : : tag::lowspeed_kp, tk::real,
323 : : tag::lowspeed_ku, tk::real,
324 : :
325 : : // limiter options
326 : : tag::limiter, LimiterType,
327 : : tag::cweight, tk::real,
328 : : tag::shock_detector_coeff, tk::real,
329 : : tag::accuracy_test, bool,
330 : : tag::limsol_projection, bool,
331 : :
332 : : // PDE options
333 : : tag::ncomp, std::size_t,
334 : : tag::pde, PDEType,
335 : : tag::transport, transportList,
336 : : tag::compflow, compflowList,
337 : : tag::multimat, multimatList,
338 : : tag::multispecies, multispeciesList,
339 : :
340 : : // Dependent variable name
341 : : tag::depvar, std::vector< char >,
342 : :
343 : : tag::sys, std::map< std::size_t, std::size_t >,
344 : :
345 : : tag::material, std::vector< materialList >,
346 : :
347 : : tag::species, std::vector< speciesList >,
348 : :
349 : : tag::matidxmap, tk::TaggedTuple< brigand::list<
350 : : tag::eosidx, std::vector< std::size_t >,
351 : : tag::matidx, std::vector< std::size_t >,
352 : : tag::solidx, std::vector< std::size_t >
353 : : > >,
354 : :
355 : : // Conditions
356 : : tag::bc, std::vector< bcList >,
357 : : tag::ic, icList,
358 : : tag::mesh, std::vector< meshList >,
359 : : tag::transfer, std::vector< Transfer >,
360 : :
361 : : // Rigid-body motion solver
362 : : tag::rigid_body_motion, tk::TaggedTuple< brigand::list<
363 : : tag::rigid_body_movt, bool,
364 : : tag::rigid_body_dof, std::size_t,
365 : : tag::symmetry_plane, std::size_t
366 : : > >,
367 : :
368 : : // ALE block
369 : : // ---------------------------------------------------------------------------
370 : : tag::ale, tk::TaggedTuple< brigand::list<
371 : : tag::ale, bool,
372 : : tag::smoother, MeshVelocitySmootherType,
373 : : tag::mesh_velocity, MeshVelocityType,
374 : : tag::mesh_motion, std::vector< std::size_t >,
375 : : tag::meshforce, std::vector< tk::real >,
376 : : tag::dvcfl, tk::real,
377 : : tag::vortmult, tk::real,
378 : : tag::maxit, std::size_t,
379 : : tag::tolerance, tk::real,
380 : : tag::dirichlet, std::vector< std::size_t >,
381 : : tag::symmetry, std::vector< std::size_t >,
382 : : tag::move, std::vector<
383 : : tk::TaggedTuple< brigand::list<
384 : : tag::sideset, std::vector< uint64_t >,
385 : : tag::fntype, tk::ctr::UserTableType,
386 : : tag::fn, std::vector< tk::real >
387 : : > >
388 : : >
389 : : > >,
390 : :
391 : : // p-refinement block
392 : : // ---------------------------------------------------------------------------
393 : : tag::pref, tk::TaggedTuple< brigand::list<
394 : : tag::pref, bool,
395 : : tag::indicator, PrefIndicatorType,
396 : : tag::ndofmax, std::size_t,
397 : : tag::tolref, tk::real
398 : : > >,
399 : :
400 : : // AMR block
401 : : // ---------------------------------------------------------------------------
402 : : tag::amr, tk::TaggedTuple< brigand::list<
403 : : tag::amr, bool,
404 : : tag::t0ref, bool,
405 : : tag::dtref, bool,
406 : : tag::dtref_uniform, bool,
407 : : tag::dtfreq, std::size_t,
408 : : tag::maxlevels, std::size_t,
409 : : tag::initial, std::vector< AMRInitialType >,
410 : : tag::edgelist, std::vector< std::size_t >,
411 : : tag::coords, tk::TaggedTuple< brigand::list<
412 : : tag::xminus, tk::real,
413 : : tag::xplus, tk::real,
414 : : tag::yminus, tk::real,
415 : : tag::yplus, tk::real,
416 : : tag::zminus, tk::real,
417 : : tag::zplus, tk::real
418 : : > >,
419 : : tag::error, AMRErrorType,
420 : : tag::refvar, std::vector< char >,
421 : : tag::tol_refine, tk::real,
422 : : tag::tol_derefine, tk::real
423 : : > >,
424 : :
425 : : // Output options
426 : : tag::field_output, fieldOutputList,
427 : : tag::diagnostics, diagnosticsList,
428 : : tag::history_output, historyOutputList
429 : : >;
430 : :
431 : : // Class storing the Config params
432 : 176 : class InputDeck : public tk::TaggedTuple< ConfigMembers > {
433 : :
434 : : public:
435 : : //! Set of tags to ignore when printing this InputDeck
436 : : using ignore = CmdLine::ignore;
437 : :
438 : : //! \brief Constructor: set defaults
439 : : //! \param[in] cl Previously parsed and store command line
440 : : //! \details Anything not set here is initialized by the compiler using the
441 : : //! default constructor for the corresponding type.
442 : 1234 : explicit InputDeck( const CmdLine& cl = {} ) {
443 : : // Set previously parsed command line
444 : : get< tag::cmd >() = cl;
445 : : // Default time stepping params
446 : 1234 : get< tag::dt >() = 0.0;
447 : 1234 : get< tag::cfl >() = 0.0;
448 : 1234 : get< tag::cfl_ramping >() = false;
449 : : // Default AMR settings
450 : : auto rmax =
451 : : std::numeric_limits< tk::real >::max() / 100;
452 : 1234 : get< tag::amr, tag::coords, tag::xminus >() = rmax;
453 : 1234 : get< tag::amr, tag::coords, tag::xplus >() = -rmax;
454 : 1234 : get< tag::amr, tag::coords, tag::yminus >() = rmax;
455 : 1234 : get< tag::amr, tag::coords, tag::yplus >() = -rmax;
456 : 1234 : get< tag::amr, tag::coords, tag::zminus >() = rmax;
457 [ + - ]: 1234 : get< tag::amr, tag::coords, tag::zplus >() = -rmax;
458 : :
459 : : // -----------------------------------------------------------------------
460 : : /*
461 : : Keyword vector
462 : : The following code generates a vector of keywords, for the sole purpose
463 : : of documentation and user-help (accessible via the --helpctr and
464 : : --helpkw cmdline arguments. If entries for a keyword are not added to
465 : : this vector, help will not be output for it. The entries follow the
466 : : function signature of the tk::entry_t constructor (defined in
467 : : Base/Types.hpp).
468 : : */
469 : : // -----------------------------------------------------------------------
470 : : std::set< tk::entry_t > keywords;
471 : :
472 : : keywords.insert({"inciter",
473 : : "Start configuration block for inciter",
474 : : R"(This keyword is used to select inciter. Inciter, is a continuum-realm
475 : : shock hydrodynamics tool, solving a system of PDEs. The entire control
476 [ + - ][ + - ]: 4936 : file must be enclosed within the inciter block)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
477 : :
478 : : keywords.insert({"title", "Title", R"(The title may be specified in
479 [ + - ][ + - ]: 3702 : the input file. It is optional.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ - + ]
[ - + ][ - - ]
480 : :
481 : : // -----------------------------------------------------------------------
482 : : // time stepping options
483 : : // -----------------------------------------------------------------------
484 : :
485 : : keywords.insert({"nstep", "Set number of time steps to take",
486 : : R"(This keyword is used to specify the number of time steps to take in a
487 : : simulation. The number of time steps are used in conjunction with the
488 : : maximmum time specified by keyword 'term': the simulation stops whichever
489 : : is reached first. Both 'nstep' and 'term' can be left unspecified, in
490 [ + - ][ + - ]: 4936 : which case their default values are used. See also 'term'.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
491 : :
492 : : keywords.insert({"term", "Set maximum physical time to simulate",
493 : : R"(This keyword is used to specify the termination time in a simulation.
494 : : The termination time and number of time steps, specified by 'nstep', are
495 : : used in conjunction to determine when to stop a simulation: whichever is
496 : : reached first. Both 'nstep' and 'term' can be left unspecified, in which
497 [ + - ][ + - ]: 4936 : case their default values are used. See also 'nstep'.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
498 : :
499 : : keywords.insert({"t0", "Set starting non-dimensional time",
500 : : R"(This keyword is used to specify the starting time in a simulation.)",
501 [ + - ][ + - ]: 4936 : "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
502 : :
503 : : keywords.insert({"dt", "Select constant time step size",
504 : : R"(This keyword is used to specify the time step size that used as a
505 : : constant during simulation. Setting 'cfl' and 'dt' are mutually
506 [ + - ][ + - ]: 4936 : exclusive. If both 'cfl' and 'dt' are set, 'dt' wins.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
507 : :
508 : : keywords.insert({"cfl",
509 : : "Set the Courant-Friedrichs-Lewy (CFL) coefficient",
510 : : R"(This keyword is used to specify the CFL coefficient for
511 : : variable-time-step-size simulations. Setting 'cfl' and 'dt' are mutually
512 [ + - ][ + - ]: 4936 : exclusive. If both 'cfl' and 'dt' are set, 'dt' wins.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
513 : :
514 : : keywords.insert({"cfl_ramping",
515 : : "Determines whether a ramping coefficient is applied to the CFL coefficient.",
516 : : R"(This keyword is used to specify a boolean that determines
517 : : whether a ramping coefficient is applied to the CFL coefficient.
518 : : If true, the CFL would be scaled down by 0.01 at the first step,
519 [ + - ][ + - ]: 4936 : and increased by 0.01 for the next 100 steps.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
520 : :
521 : : keywords.insert({"ttyi", "Set screen output interval",
522 : : R"(This keyword is used to specify the interval in time steps for screen
523 [ + - ][ + - ]: 4936 : output during a simulation.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
524 : :
525 : : keywords.insert({"imex_runge_kutta",
526 : : "Toggle use of IMplicit-EXplicit Runge-Kutta scheme",
527 : : R"(This keywords is used to turn IMEX integrator on/off for solid materials
528 : : in a multimat run. Plastic terms are integrated implicitly in time. This
529 : : flag will activate an Implicit-Explicit Runge-Kutta scheme to replace the
530 : : explicit one that is usually used. Scheme taken from Cavaglieri, D., &
531 : : Bewley, T. (2015). Low-storage implicit/explicit Runge–Kutta schemes for
532 : : the simulation of stiff high-dimensional ODE systems. Journal of
533 [ + - ][ + - ]: 4936 : Computational Physics, 286, 172-193.)", "uint 0/1"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
534 : :
535 : : keywords.insert({"imex_maxiter",
536 : : "Set maximum number of iterations for non-linear solver with IMEX-RK scheme",
537 : : R"(This keywords is used to specify the maximum number of iterations that
538 : : the non-linear solver uses to obtain the implicit unknowns within the
539 [ + - ][ + - ]: 4936 : Implicit-Explicit Runge-Kutta scheme.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
540 : :
541 : : keywords.insert({"imex_reltol",
542 : : "Set relative tolerance for non-linear solver with IMEX-RK scheme",
543 : : R"(This keywords is used to specify the relative tolerance that
544 : : the non-linear solver uses to obtain the implicit unknowns within the
545 [ + - ][ + - ]: 4936 : Implicit-Explicit Runge-Kutta scheme.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
546 : :
547 : : keywords.insert({"imex_abstol",
548 : : "Set absolute tolerance for non-linear solver with IMEX-RK scheme",
549 : : R"(This keywords is used to specify the absolute tolerance that
550 : : the non-linear solver uses to obtain the implicit unknowns within the
551 [ + - ][ + - ]: 4936 : Implicit-Explicit Runge-Kutta scheme.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
552 : :
553 : : // -----------------------------------------------------------------------
554 : : // steady-state solver options
555 : : // -----------------------------------------------------------------------
556 : :
557 : : keywords.insert({"steady_state", "March to steady state",
558 : : R"(This keyword is used indicate that local time stepping should be used
559 [ + - ][ + - ]: 4936 : to march towards a stationary solution.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
560 : :
561 : : keywords.insert({"residual",
562 : : "Set the convergence criterion for the residual to reach",
563 : : R"(This keyword is used to specify a convergence criterion for the local
564 : : time stepping marching to steady state, below which the simulation is
565 [ + - ][ + - ]: 4936 : considered converged.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
566 : :
567 : : keywords.insert({"rescomp",
568 : : "Equation system component index for convergence",
569 : : R"(This keyword is used to specify a single integer that is used to denote
570 : : the equation component index in the complete system of equations
571 : : configured, to use for the convergence criterion for local
572 [ + - ][ + - ]: 4936 : time stepping marching towards steady state.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
573 : :
574 : : // -----------------------------------------------------------------------
575 : : // mesh partitioning and reordering/sorting choices
576 : : // -----------------------------------------------------------------------
577 : :
578 : : keywords.insert({"partitioning",
579 : : "Select mesh partitioning algorithm",
580 : : R"(This keyword is used to select a mesh partitioning algorithm. See
581 : : Control/Options/PartitioningAlgorithm.hpp for valid options.)",
582 [ + - ][ + - ]: 4936 : "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
583 : :
584 : : keywords.insert({"rcb",
585 : : "Select recursive coordinate bisection mesh partitioner",
586 : : R"(This keyword is used to select the recursive coordinate bisection (RCB)
587 : : mesh partitioner. RCB is a geometry-based partitioner used to distribute
588 : : an input mesh among processing elements. See
589 [ + - ][ + - ]: 4936 : Control/Options/PartitioningAlgorithm.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
590 : :
591 : : keywords.insert({"rib",
592 : : "Select recursive inertial bisection mesh partitioner",
593 : : R"(This keyword is used to select the recursive inertial bisection (RIB)
594 : : mesh partitioner. RIB is a geometry-based partitioner used to distribute
595 : : an input mesh among processing elements. See
596 [ + - ][ + - ]: 4936 : Control/Options/PartitioningAlgorithm.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
597 : :
598 : : keywords.insert({"hsfc",
599 : : "Select Hilbert Space Filling Curve (HSFC) mesh partitioner",
600 : : R"(This keyword is used to select the Hilbert Space Filling Curve (HSFC)
601 : : mesh partitioner. HSFC is a geometry-based partitioner used to distribute
602 : : an input mesh among processing elements. See
603 [ + - ][ + - ]: 4936 : Control/Options/PartitioningAlgorithm.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
604 : :
605 : : keywords.insert({"phg",
606 : : "Select parallel hypergraph mesh partitioner",
607 : : R"(This keyword is used to select the parallel hypergraph (PHG)
608 : : mesh partitioner. PHG is a graph-based partitioner used to distribute an
609 : : input mesh among processing elements. See
610 [ + - ][ + - ]: 4936 : Control/Options/PartitioningAlgorithm.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
611 : :
612 : : keywords.insert({"mj",
613 : : "Select multi-jagged (MJ) mesh partitioner",
614 : : R"(This keyword is used to select the multi-jagged (MJ) mesh partitioner.
615 : : MJ is a geometry-based partitioner used to distribute an input mesh among
616 : : processing elements. See
617 [ + - ][ + - ]: 4936 : Control/Options/PartitioningAlgorithm.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
618 : :
619 : : keywords.insert({"pelocal_reorder",
620 : : "PE-local reorder",
621 : : R"(This keyword is used in inciter as a keyword in the inciter...end block
622 : : as "pelocal_reorder true" (or false) to do (or not do) a global
623 : : distributed mesh reordering across all PEs that yields an approximately
624 : : continuous mesh node ID order as mesh partitions are assigned to PEs after
625 [ + - ][ + - ]: 4936 : mesh partitioning. This reordering is optional.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
626 : :
627 : : keywords.insert({"operator_reorder",
628 : : "Operator-access reorder",
629 : : R"(This keyword is used in inciter as a keyword in the inciter...end block
630 : : as "operator_reorder on" (or off) to do (or not do) a local mesh node
631 : : reordering based on the PDE operator access pattern. This reordering is
632 [ + - ][ + - ]: 4936 : optional.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
633 : :
634 : : // -----------------------------------------------------------------------
635 : : // discretization scheme choices
636 : : // -----------------------------------------------------------------------
637 : :
638 : : keywords.insert({"scheme", "Select discretization scheme",
639 : : R"(This keyword is used to select a spatial discretization scheme,
640 : : necessarily connected to the temporal discretization scheme. See
641 [ + - ][ + - ]: 4936 : Control/Inciter/Options/Scheme.hpp for valid options.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
642 : :
643 : : keywords.insert({"alecg",
644 : : "Select continuous Galerkin with ALE + Runge-Kutta",
645 : : R"(This keyword is used to select the continuous Galerkin finite element
646 : : scheme in the arbitrary Lagrangian-Eulerian (ALE) reference frame combined
647 : : with Runge-Kutta (RK) time stepping.
648 [ + - ][ + - ]: 4936 : See Control/Inciter/Options/Scheme.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
649 : :
650 : : keywords.insert({"oversetfe",
651 : : "Select continuous Galerkin finite element with overset meshes + "
652 : : "Runge-Kutta",
653 : : R"(This keyword is used to select the continuous Galerkin finite element
654 : : scheme with Runge-Kutta (RK) time stepping, combined with overset grids.
655 [ + - ][ + - ]: 4936 : See Control/Inciter/Options/Scheme.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
656 : :
657 : : keywords.insert({"dgp0",
658 : : "Select 1st-order discontinuous Galerkin discretization + Runge-Kutta",
659 : : R"(This keyword is used to select the first-order accurate discontinuous
660 : : Galerkin, DG(P0), spatial discretiztaion used in Inciter. As this is first
661 : : order accurate, it is intended for testing and debugging purposes only.
662 : : Selecting this spatial discretization also selects the Runge-Kutta scheme
663 : : for time discretization. See Control/Inciter/Options/Scheme.hpp for other
664 [ + - ][ + - ]: 4936 : valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
665 : :
666 : : keywords.insert({"p0p1",
667 : : "Select 2nd-order finite volume discretization + Runge-Kutta",
668 : : R"(This keyword is used to select the second-order accurate finite volume,
669 : : P0P1, spatial discretiztaion used in Inciter. This method uses a
670 : : least-squares procedure to reconstruct the second-order solution from the
671 : : first-order one. Selecting this spatial discretization also selects the
672 : : Runge-Kutta scheme for time discretization.
673 [ + - ][ + - ]: 4936 : See Control/Inciter/Options/Scheme.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
674 : :
675 : : keywords.insert({"dgp1",
676 : : "Select 2nd-order discontinuous Galerkin discretization + Runge-Kutta",
677 : : R"(This keyword is used to select the second-order accurate discontinuous
678 : : Galerkin, DG(P1), spatial discretiztaion used in Inciter. Selecting this
679 : : spatial discretization also selects the Runge-Kutta scheme for time
680 : : discretization. See Control/Inciter/Options/Scheme.hpp for other
681 [ + - ][ + - ]: 4936 : valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
682 : :
683 : : keywords.insert({"dgp2",
684 : : "Select 3nd-order discontinuous Galerkin discretization + Runge-Kutta",
685 : : R"(This keyword is used to select the third-order accurate discontinuous
686 : : Galerkin, DG(P2), spatial discretiztaion used in Inciter. Selecting this
687 : : spatial discretization also selects the Runge-Kutta scheme for time
688 : : discretization. See Control/Inciter/Options/Scheme.hpp for other
689 [ + - ][ + - ]: 4936 : valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
690 : :
691 : : keywords.insert({"pdg",
692 : : "Select p-adaptive discontinuous Galerkin discretization + Runge-Kutta",
693 : : R"(This keyword is used to select the polynomial adaptive discontinuous
694 : : Galerkin spatial discretizaion used in Inciter. Selecting this spatial
695 : : discretization also selects the Runge-Kutta scheme for time
696 : : discretization. See Control/Inciter/Options/Scheme.hpp for other valid
697 [ + - ][ + - ]: 4936 : options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
698 : :
699 : : keywords.insert({"fv",
700 : : "Select 2nd-order finite volume discretization + Runge-Kutta",
701 : : R"(This keyword is used to select the second-order accurate finite volume,
702 : : P0P1, spatial discretiztaion used in Inciter. This method uses a
703 : : least-squares procedure to reconstruct the second-order solution from the
704 : : first-order one. See Control/Inciter/Options/Scheme.hpp for other valid
705 [ + - ][ + - ]: 4936 : options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
706 : :
707 : : keywords.insert({"ndof", "Number of evolved solution DOFs",
708 [ + - ][ + - ]: 4936 : R"(The number of solution DOFs that are evolved.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
709 : :
710 : : keywords.insert({"rdof", "Total number of solution DOFs",
711 : : R"(The total number of solution DOFs, including the reconstructed and the
712 [ + - ][ + - ]: 4936 : evolved ones.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
713 : :
714 : : // -----------------------------------------------------------------------
715 : : // limiter options
716 : : // -----------------------------------------------------------------------
717 : :
718 : : keywords.insert({"limiter", "Select limiter function",
719 : : R"(This keyword is used to select a limiter function, used for
720 : : discontinuous Galerkin (DG) spatial discretization used in inciter. See
721 [ + - ][ + - ]: 4936 : Control/Inciter/Options/Limiter.hpp for valid options.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
722 : :
723 : : keywords.insert({"nolimiter", "No limiter used",
724 : : R"(This keyword is used for discontinuous Galerkin (DG) spatial
725 : : discretization without any limiter in inciter. See
726 [ + - ][ + - ]: 3702 : Control/Inciter/Options/Limiter.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ - + ]
[ - + ][ - - ]
727 : :
728 : : keywords.insert({"wenop1",
729 : : "Select the Weighted Essentially Non-Oscillatory (WENO) limiter for DGP1",
730 : : R"(This keyword is used to select the Weighted Essentially Non-Oscillatory
731 : : limiter used for discontinuous Galerkin (DG) P1 spatial discretization
732 : : used in inciter. See Control/Inciter/Options/Limiter.hpp for other valid
733 [ + - ][ + - ]: 4936 : options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
734 : :
735 : : keywords.insert({"cweight",
736 : : "Set value for central linear weight used by WENO, cweight",
737 : : R"(This keyword is used to set the central linear weight used for the
738 : : central stencil in the Weighted Essentially Non-Oscillatory (WENO) limiter
739 [ + - ][ + - ]: 4936 : for discontinuous Galerkin (DG) methods.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
740 : :
741 : : keywords.insert({"superbeep1",
742 : : "Select the Superbee limiter for DGP1",
743 : : R"(This keyword is used to select the Superbee limiter used for
744 : : discontinuous Galerkin (DG) P1 spatial discretization used in inciter.
745 [ + - ][ + - ]: 4936 : See Control/Inciter/Options/Limiter.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
746 : :
747 : : keywords.insert({"shock_detector_coeff",
748 : : "Configure the coefficient used in shock indicator",
749 : : R"(This keyword can be used to configure the coefficient used in the
750 [ + - ][ + - ]: 4936 : threshold calculation for the shock indicator.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
751 : :
752 : : keywords.insert({"vertexbasedp1",
753 : : "Select the vertex-based limiter for DGP1",
754 : : R"(This keyword is used to select the vertex-based limiter used for
755 : : discontinuous Galerkin (DG) P1 spatial discretization used in inciter.
756 : : Ref. Kuzmin, D. (2010). A vertex-based hierarchical slope limiter for
757 : : p-adaptive discontinuous Galerkin methods. Journal of computational and
758 : : applied mathematics, 233(12), 3077-3085.
759 [ + - ][ + - ]: 4936 : See Control/Inciter/Options/Limiter.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
760 : :
761 : : keywords.insert({"accuracy_test", "Toggle accuracy test setup",
762 : : R"(This keyword is used to specify if the current setup is for an
763 : : order-of-accuracy testing, used for discontinuous Galerkin (DG) spatial
764 : : discretization in inciter. This deactivates certain robustness corrections
765 : : which might impact order-of-accuracy. Only intended for simple test
766 [ + - ][ + - ]: 4936 : problems and not for real problems.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
767 : :
768 : : keywords.insert({"limsol_projection",
769 : : "Toggle limited solution projection",
770 : : R"(This keyword is used to specify limited solution projection.
771 : : This is used for discontinuous Galerkin (DG) spatial discretization in
772 : : inciter, for multi-material hydrodynamics. This uses a projection to
773 : : obtain bulk momentum and material energies from the limited primitive
774 : : quantities. This step is essential to obtain closure-law obeying limited
775 : : quantities. See Pandare et al. (2023). On the Design of Stable,
776 : : Consistent, and Conservative High-Order Methods for Multi-Material
777 [ + - ][ + - ]: 4936 : Hydrodynamics. J Comp Phys (490).)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
778 : :
779 : : // -----------------------------------------------------------------------
780 : : // flux options
781 : : // -----------------------------------------------------------------------
782 : :
783 : : keywords.insert({"flux", "Select flux function",
784 : : R"(This keyword is used to select a flux function, used for
785 : : discontinuous Galerkin (DG) spatial discretization used in inciter. See
786 [ + - ][ + - ]: 4936 : Control/Inciter/Options/Flux.hpp for valid options.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
787 : :
788 : : keywords.insert({"laxfriedrichs",
789 : : "Select Lax-Friedrichs flux function",
790 : : R"(This keyword is used to select the Lax-Friedrichs flux function used
791 : : for discontinuous Galerkin (DG) spatial discretization used in inciter.
792 [ + - ][ + - ]: 4936 : See Control/Inciter/Options/Flux.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
793 : :
794 : : keywords.insert({"hllc",
795 : : "Select the Harten-Lax-van Leer-Contact (HLLC) flux function",
796 : : R"(This keyword is used to select the Harten-Lax-van Leer-Contact flux
797 : : function used for discontinuous Galerkin (DG) spatial discretization
798 : : used in inciter. See Control/Inciter/Options/Flux.hpp for other valid
799 [ + - ][ + - ]: 4936 : options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
800 : :
801 : : keywords.insert({"upwind", "Select the upwind flux function",
802 : : R"(This keyword is used to select the upwind flux
803 : : function used for discontinuous Galerkin (DG) spatial discretization
804 : : used in inciter. It is only usable for scalar transport.
805 [ + - ][ + - ]: 4936 : See Control/Inciter/Options/Flux.hpp for other valid options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
806 : :
807 : : keywords.insert({"ausm",
808 : : "Select the Advection Upstream Splitting Method (AUSM) flux function",
809 : : R"(This keyword is used to select the AUSM flux
810 : : function used for discontinuous Galerkin (DG) spatial discretization
811 : : used in inciter. It is only set up for for multi-material hydro, and
812 [ + - ][ + - ]: 4936 : not selectable for anything else.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
813 : :
814 : : keywords.insert({"ldfss",
815 : : "Select the Low Diffusion Flux Splitting Scheme (LDFSS)",
816 : : R"(This keyword is used to select the LDFSS flux
817 : : function used for discontinuous Galerkin (DG) spatial discretization
818 : : used in inciter. It is only set up for for multi-material hydro, and
819 [ + - ][ + - ]: 4936 : not selectable for anything else.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
820 : :
821 : : keywords.insert({"lowspeed_kp",
822 : : "Select the low-speed coefficient K_p in the AUSM+up flux function",
823 : : R"(This keyword is used to select the low-speed coefficient K_p in the
824 : : AUSM+up flux function used for the DG or FV spatial discretization for
825 : : multi-material hydro, and not used for anything else. The default
826 : : value is 0, and recommended value for low speed flows (Mach < 0.1) is
827 [ + - ][ + - ]: 4936 : 1.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
828 : :
829 : : keywords.insert({"lowspeed_ku",
830 : : "Select the low-speed coefficient K_u in the AUSM+up flux function",
831 : : R"(This keyword is used to select the low-speed coefficient K_u in the
832 : : AUSM+up flux function used for the DG or FV spatial discretization for
833 : : multi-material hydro, and not used for anything else. The default
834 : : value is 1, and recommended value for low speed flows (Mach < 0.1) is
835 [ + - ][ + - ]: 4936 : 1.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
836 : :
837 : : keywords.insert({"hll",
838 : : "Select the Harten-Lax-vanLeer (HLL) flux function",
839 : : R"(This keyword is used to select the HLL flux
840 : : function used for discontinuous Galerkin (DG) spatial discretization
841 : : used in inciter. It is only set up for for multi-material hydro, and
842 [ + - ][ + - ]: 4936 : not selectable for anything else.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
843 : :
844 : : keywords.insert({"hlld",
845 : : "Select the Harten-Lax-vanLeer-Discontinuities (HLLD) flux function",
846 : : R"(This keyword is used to select the HLLD flux
847 : : function used for discontinuous Galerkin (DG) spatial discretization
848 : : used in inciter. It is only set up for for multi-material runs. This
849 : : flux is designed to handle normal and shear waves within solid
850 [ + - ][ + - ]: 4936 : materials)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
851 : :
852 : : // -----------------------------------------------------------------------
853 : : // PDE keywords
854 : : // -----------------------------------------------------------------------
855 : :
856 : : keywords.insert({"problem",
857 : : "Specify problem configuration for partial differential equation solver",
858 : : R"(This keyword is used to specify the problem configuration for the
859 [ + - ][ + - ]: 4936 : partial differential equation solver.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
860 : :
861 : : keywords.insert({"transport",
862 : : "Start configuration block for an transport equation",
863 : : R"(This keyword is used to introduce a transport block, used to
864 : : specify the configuration for a transport equation type.)",
865 [ + - ][ + - ]: 4936 : "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
866 : :
867 : : keywords.insert({"ncomp",
868 : : "Set number of scalar components for a system of transport equations",
869 : : R"(This keyword is used to specify the number of scalar
870 [ + - ][ + - ]: 4936 : components of transport (linear advection) equations.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
871 : :
872 : : keywords.insert({"compflow",
873 : : "Start configuration block for the compressible flow equations",
874 : : R"(This keyword is used to introduce the compflow block, used to
875 : : specify the configuration for a system of partial differential equations,
876 [ + - ][ + - ]: 4936 : governing single material compressible fluid flow.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
877 : :
878 : : keywords.insert({"multimat",
879 : : "Start configuration block for the compressible multi-material equations",
880 : : R"(This keyword is used to introduce the multimat block,
881 : : used to specify the configuration for a system of partial differential
882 : : equations, governing compressible multi-material hydrodynamics assuming
883 [ + - ][ + - ]: 4936 : velocity equilibrium (single velocity).)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
884 : :
885 : : keywords.insert({"multispecies",
886 : : "Start configuration block for the compressible multi-species equations",
887 : : R"(This keyword is used to introduce the multispecies block,
888 : : used to specify the configuration for a system of partial differential
889 : : equations, governing compressible multi-species fluid dynamics.)",
890 [ + - ][ + - ]: 4936 : "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
891 : :
892 : : keywords.insert({"nmat",
893 : : "Set number of materials for the multi-material system",
894 : : R"(This keyword is used to specify the number of materials for
895 [ + - ][ + - ]: 4936 : multi-material flow, see also the keyword 'multimat'.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
896 : :
897 : : keywords.insert({"min_volumefrac",
898 : : "Minimum volume fraction of a material in a cell",
899 : : R"(This keyword is used to specify the minimum volume fraction that a
900 : : material can occupy in a computational element. The default value is
901 : : 1.0e-12. It is used only for multimat, and has no effect for the other
902 [ + - ][ + - ]: 4936 : PDE types.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
903 : :
904 : : keywords.insert({"nspec",
905 : : "Set number of species for the multi-species system",
906 : : R"(This keyword is used to specify the number of species for
907 [ + - ][ + - ]: 4936 : multi-species flow, see also the keyword 'multispecies'.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
908 : :
909 : : keywords.insert({"prelax",
910 : : "Toggle multi-material finite pressure relaxation",
911 : : R"(This keyword is used to turn finite pressure relaxation between
912 : : multiple materials on/off. It is used only for the multi-material solver,
913 [ + - ][ + - ]: 4936 : and has no effect when used for the other PDE types.)", "uint 0/1"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
914 : :
915 : : keywords.insert({"prelax_timescale",
916 : : "Time-scale for multi-material finite pressure relaxation",
917 : : R"(This keyword is used to specify the time-scale at which finite pressure
918 : : relaxation between multiple materials occurs. The default value of 0.25
919 : : corresponds to a relaxation time that is 4 times the time required for a
920 : : sound wave to pass through a computational element. It is used only for
921 [ + - ][ + - ]: 4936 : multimat, and has no effect for the other PDE types.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
922 : :
923 : : keywords.insert({"intsharp",
924 : : "Toggle multi-material interface sharpening",
925 : : R"(This keyword is used to turn interface sharpening on/off. It uses the
926 : : multi-material THINC interface reconstruction.
927 : : Ref. Pandare A. K., Waltz J., & Bakosi J. (2021) Multi-Material
928 : : Hydrodynamics with Algebraic Sharp Interface Capturing. Computers &
929 : : Fluids, doi: https://doi.org/10.1016/j.compfluid.2020.104804. It is used
930 : : for the multi-material and the transport solver, and has no effect when
931 [ + - ][ + - ]: 4936 : used for the other PDE types.)", "uint 0/1"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
932 : :
933 : : keywords.insert({"intsharp_param",
934 : : "Parameter for multi-material interface sharpening",
935 : : R"(This keyword is used to specify the parameter for the interface
936 : : sharpening. This parameter affects how many cells the material interfaces
937 : : span, after the use of sharpening. It is used for multimat and transport,
938 [ + - ][ + - ]: 4936 : and has no effect for the other PDE types.)", "real" });
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
939 : :
940 : : keywords.insert({"rho0constraint",
941 : : "Toggle the density constraint correction",
942 : : R"(This keyword is used to toggle the density constraint in solid
943 : : dynamics on/off. It is used only for the multi-material solver in the
944 [ + - ][ + - ]: 4936 : presence of solids. The default is 1 (on).)", "uint 0/1"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
945 : :
946 : : keywords.insert({"dt_sos_massavg",
947 : : "Toggle method for calculating speed of sound used for time step in a cell",
948 : : R"(This keyword is used to specify the method to calculate the speed of
949 : : sound in a cell used for the time step. If set to 1, the speed of sound
950 : : will be calculated using the mass average, rather than the maximum value
951 : : across materials. It is used for multimat, and has no effect for the
952 [ + - ][ + - ]: 4936 : other PDE types.)", "uint 0/1" });
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
953 : :
954 : : // Dependent variable name
955 : : keywords.insert({"depvar",
956 : : "Select dependent variable name for PDE.",
957 [ + - ][ + - ]: 4936 : R"(Select dependent variable name for PDE.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
958 : :
959 : : // -----------------------------------------------------------------------
960 : : // physics choices
961 : : // -----------------------------------------------------------------------
962 : :
963 : : keywords.insert({"physics",
964 : : "Specify the physics configuration for a system of PDEs",
965 : : R"(This keyword is used to select the physics configuration for a
966 : : particular PDE system. Valid options depend on the system of PDEs in
967 [ + - ][ + - ]: 4936 : which the keyword is used.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
968 : :
969 : : keywords.insert({"advection",
970 : : "Specify the advection physics",
971 : : R"(This keyword is used to select the advection physics for the transport
972 [ + - ][ + - ]: 4936 : PDE system. Only usable for 'transport'.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
973 : :
974 : : keywords.insert({"advdiff",
975 : : "Specify the advection + diffusion physics",
976 : : R"(This keyword is used to select the advection + diffusion physics
977 [ + - ][ + - ]: 4936 : for transport PDEs. Only usable for 'transport'.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
978 : :
979 : : keywords.insert({"euler",
980 : : "Specify the Euler (inviscid) compressible flow physics",
981 : : R"(This keyword is used to select the Euler (inviscid) compressible
982 [ + - ][ + - ]: 4936 : flow physics configuration. Usable for 'compflow' and 'multimat')"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
983 : :
984 : : keywords.insert({"energy_pill",
985 : : "Specify the energy pill physics",
986 : : R"(This keyword is used to select an energy pill initialization as physics
987 : : configuration for multiple material compressible flow. Parameters for the
988 : : linearly traveling front are required to be specified when energy_pill is
989 : : selected. See 'linear' for more details. Currently setup only for
990 [ + - ][ + - ]: 4936 : 'multimat')"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
991 : :
992 : : // -----------------------------------------------------------------------
993 : : // material/eos object
994 : : // -----------------------------------------------------------------------
995 : :
996 : : keywords.insert({"material",
997 : : "Start configuration block for material (eos) properties",
998 : : R"(This keyword is used to introduce a material block, used to
999 [ + - ][ + - ]: 6170 : specify material properties.)", "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1000 : :
1001 : : keywords.insert({"species",
1002 : : "Start configuration block for species (eos) properties",
1003 : : R"(This keyword is used to introduce a species block, used to
1004 : : specify species properties in the multi species solver.)",
1005 [ + - ][ + - ]: 6170 : "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1006 : :
1007 : : keywords.insert({"id", "ID",
1008 : : R"(This keyword is used to specify an ID, a positive integer. Usage is
1009 : : context specific, i.e. what block it is specified in. E.g. Inside the
1010 : : material block, it is used to specify a block consisting of IDs of
1011 [ + - ][ + - ]: 3702 : materials of that EOS type)", "vector of uints"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ - + ]
[ - + ][ - - ]
1012 : :
1013 : : keywords.insert({"eos", "Select equation of state (type)",
1014 : : R"(This keyword is used to select an equation of state for a material.)",
1015 [ + - ][ + - ]: 4936 : "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1016 : :
1017 : : keywords.insert({"gamma", "ratio of specific heats",
1018 : : R"(This keyword is used to specify the material property, ratio of
1019 [ + - ][ + - ]: 4936 : specific heats.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1020 : :
1021 : : keywords.insert({"pstiff", "EoS stiffness parameter",
1022 : : R"(This keyword is used to specify the material property, stiffness
1023 [ + - ][ + - ]: 4936 : parameter in the stiffened gas equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1024 : :
1025 : : keywords.insert({"w_gru", "Grueneisen coefficient",
1026 : : R"(This keyword is used to specify the material property, Gruneisen
1027 : : coefficient for the Jones-Wilkins-Lee equation of state.)",
1028 [ + - ][ + - ]: 4936 : "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1029 : :
1030 : : keywords.insert({"A_jwl", "JWL EoS A parameter",
1031 : : R"(This keyword is used to specify the material property A (units: Pa)
1032 [ + - ][ + - ]: 4936 : for the Jones-Wilkins-Lee equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1033 : :
1034 : : keywords.insert({"B_jwl", "JWL EoS B parameter",
1035 : : R"(This keyword is used to specify the material property B (units: Pa)
1036 [ + - ][ + - ]: 4936 : for the Jones-Wilkins-Lee equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1037 : :
1038 : : keywords.insert({"C_jwl", "JWL EoS C parameter",
1039 : : R"(This keyword is used to specify the material property C (units: Pa)
1040 [ + - ][ + - ]: 4936 : for the Jones-Wilkins-Lee equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1041 : :
1042 : : keywords.insert({"R1_jwl", "JWL EoS R1 parameter",
1043 : : R"(This keyword is used to specify the material property R1 for the
1044 [ + - ][ + - ]: 4936 : Jones-Wilkins-Lee equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1045 : :
1046 : : keywords.insert({"R2_jwl", "JWL EoS R2 parameter",
1047 : : R"(This keyword is used to specify the material property R2 for the
1048 [ + - ][ + - ]: 4936 : Jones-Wilkins-Lee equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1049 : :
1050 : : keywords.insert({"rho0_jwl", "JWL EoS rho0 parameter",
1051 : : R"(This keyword is used to specify the material property rho0, which is
1052 : : the density of initial state (units: kg/m3) for the Jones-Wilkins-Lee
1053 [ + - ][ + - ]: 4936 : equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1054 : :
1055 : : keywords.insert({"de_jwl", "JWL EoS de parameter",
1056 : : R"(This keyword is used to specify the material property de, which is the
1057 : : heat of detonation for products; and for reactants, it is chosen such that
1058 : : the ambient internal energy (e0) is 0 (units: J/kg). Used for the
1059 [ + - ][ + - ]: 4936 : Jones-Wilkins-Lee equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1060 : :
1061 : : keywords.insert({"rhor_jwl", "JWL EoS rhor parameter",
1062 : : R"(This keyword is used to specify the material property rhor, which is
1063 : : the density of reference state (units: kg/m3) for the Jones-Wilkins-Lee
1064 [ + - ][ + - ]: 4936 : equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1065 : :
1066 : : keywords.insert({"Tr_jwl", "JWL EoS Tr parameter",
1067 : : R"(This keyword is used to specify the material property Tr, which is the
1068 : : temperature of reference state (units: K) for the Jones-Wilkins-Lee
1069 [ + - ][ + - ]: 4936 : equation of state.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1070 : :
1071 : : keywords.insert({"Pr_jwl", "JWL EoS er parameter",
1072 : : R"(This keyword is used to specify the material property Pr, which is the
1073 : : pressure at the reference state (units: Pa) for the Jones-Wilkins-Lee
1074 : : equation of state. It is used to calculate the reference temperature for
1075 [ + - ][ + - ]: 4936 : the EoS.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1076 : :
1077 : : keywords.insert({"mu", "shear modulus/dynamic viscosity",
1078 : : R"(This keyword is used to specify the material property, shear modulus
1079 [ + - ][ + - ]: 4936 : for solids, or dynamic viscosity for fluids.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1080 : :
1081 : : keywords.insert({"yield_stress", "Yield stress of solid material",
1082 : : R"(This keyword is used to specify the material property yield stress,
1083 : : which indicates the stress (units: Pa) after which the material begins
1084 [ + - ][ + - ]: 4936 : plastic flow.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1085 : :
1086 : : keywords.insert({"alpha", "alpha parameter for Godunov-Romenski EOS",
1087 : : R"(This keyword is used to specify the alpha parameter for
1088 [ + - ][ + - ]: 4936 : Godunov-Romenski EOS for solids.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1089 : :
1090 : : keywords.insert({"K0", "K0 parameter for Godunov-Romenski EOS",
1091 : : R"(This keyword is used to specify the K0 parameter for
1092 [ + - ][ + - ]: 4936 : Godunov-Romenski EOS for solids.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1093 : :
1094 : : keywords.insert({"cv", "specific heat at constant volume",
1095 : : R"(This keyword is used to specify the material property, specific heat at
1096 [ + - ][ + - ]: 4936 : constant volume.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1097 : :
1098 : : keywords.insert({"k", "heat conductivity",
1099 : : R"(This keyword is used to specify the material property, heat
1100 [ + - ][ + - ]: 4936 : conductivity.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1101 : :
1102 : : keywords.insert({"plasticity_reltime", "Relaxation time for plasticity",
1103 : : R"(This keyword is used to specify the base relaxation time for a solid
1104 : : subject to perfect plasticity. See Ortega, A. López, et al. "Numerical
1105 : : simulation of elastic–plastic solid mechanics using an Eulerian stretch
1106 : : tensor approach and HLLD Riemann solver." Journal of Computational
1107 [ + - ][ + - ]: 4936 : Physics 257 (2014): 414-441.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1108 : :
1109 : : keywords.insert({"cp_coeff", "specific heat coefficients for TPG",
1110 : : R"(This keyword is used to specify species' coefficients in the
1111 : : thermally perfect gas polynomial fit (per temperature range)
1112 : : for specific heat at constant volume. The outer vector is per
1113 : : species, the middle vector is per temperature range, and the
1114 : : inner vector contains 8 coefficients to describe the polynomial.)",
1115 [ + - ][ + - ]: 6170 : "vector of vector of vector of reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1116 : :
1117 : : keywords.insert({"t_range", "temperature range for TPG specific heat polynomials",
1118 : : R"(This keyword is used to specify the temperature range for each specific
1119 : : heat polynomial given in cp_coeff. The outer vector is per species,
1120 : : and the inner vector gives the temperature ranges. The inner vector must
1121 : : be sized 1 larger than the number of temperature ranges, as the ranges
1122 [ + - ][ + - ]: 6170 : are read as [T0, T1],[T1, T2],...)", "vector of vector of reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1123 : :
1124 : : keywords.insert({"dH_ref", "reference enthalpy for TPG specific heat polynomials",
1125 : : R"(This keyword is used to specify the reference enthalpy at 298.15 K so that
1126 : : the reference temperature in the enthalpy calculations is 0 K. This number
1127 : : is taken from the NASA Glenn 2002 report, and is the heat of formation
1128 [ + - ][ + - ]: 4936 : divided by the species molar mass.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1129 : :
1130 : : keywords.insert({"R", "Specific gas constant",
1131 : : R"(This keyword is used to specify the species property, specific gas
1132 [ + - ][ + - ]: 4936 : constant, in units J/kg.K.)", "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1133 : :
1134 : : keywords.insert({"stiffenedgas",
1135 : : "Select the stiffened gas equation of state",
1136 [ + - ][ + - ]: 4936 : R"(This keyword is used to select the stiffened gas equation of state.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1137 : :
1138 : : keywords.insert({"jwl", "Select the JWL equation of state",
1139 : : R"(This keyword is used to select the Jones, Wilkins, Lee equation of
1140 [ + - ][ + - ]: 4936 : state.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1141 : :
1142 : : keywords.insert({"smallshearsolid",
1143 : : "Select the SMALLSHEARSOLID equation of state",
1144 : : R"(This keyword is used to select the small shear strain equation of state
1145 : : for solids. This EOS uses a small-shear approximation for the elastic
1146 : : contribution, and a stiffened gas EOS for the hydrodynamic contribution of
1147 : : the internal energy See Plohr, J. N., & Plohr, B. J. (2005). Linearized
1148 : : analysis of Richtmyer–Meshkov flow for elastic materials. Journal of Fluid
1149 [ + - ][ + - ]: 4936 : Mechanics, 537, 55-89 for further details.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1150 : :
1151 : : keywords.insert({"wilkins_aluminum",
1152 : : "Select Wilkins' equation of state for aluminum",
1153 : : R"(This keyword is used to select Wilkin's equation of state for solids
1154 : : and a hydro EoS for aluminum. These functions were taken from Example 4
1155 : : of Barton, Philip T. "An interface-capturing Godunov method
1156 : : for the simulation of compressible solid-fluid problems." Journal
1157 [ + - ][ + - ]: 4936 : of Computational Physics 390 (2019): 25-50.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1158 : :
1159 : : keywords.insert({"godunovromenski",
1160 : : "Select godunovromenski equation of state for solids",
1161 : : R"(This keyword is used to select Godunov-Romenski equation of state
1162 : : for solids. These functions were taken from Example 1
1163 : : of Barton, Philip T. "An interface-capturing Godunov method
1164 : : for the simulation of compressible solid-fluid problems." Journal
1165 [ + - ][ + - ]: 4936 : of Computational Physics 390 (2019): 25-50.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1166 : :
1167 : : keywords.insert({"matidxmap",
1168 : : "AUTO-GENERATED Material index map for EOS",
1169 : : R"(The following AUTO-GENERATED data structure is used to index into the
1170 : : correct material vector entry. This is done using the following three maps:
1171 : : 1. eosidx: This vector provides the eos-index (value) in the
1172 : : vector<tag::material> for the given user-spec material id (index).
1173 : : 2. matidx: This vector provides the material-index (value) inside the
1174 : : vector<tag::material>[eosidx] block for the given user-specified
1175 : : material id (index).
1176 : : 3. solidx: This vector provides the solid-index (value) assigned to
1177 [ + - ][ + - ]: 4936 : the given user-specified material id (index). It is 0 for fluids.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1178 : :
1179 : : // -----------------------------------------------------------------------
1180 : : // output object
1181 : : // -----------------------------------------------------------------------
1182 : :
1183 : : keywords.insert({"field_output",
1184 : : "Start of field_output input block",
1185 : : R"(This keyword is used to start a block in the input file containing the
1186 [ + - ][ + - ]: 4936 : list and settings of requested field output.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1187 : :
1188 : : keywords.insert({"interval",
1189 : : "Set interval (in units of iteration count)",
1190 : : R"(This keyword is used to specify an interval in units of iteration count
1191 : : (i.e., number of time steps). This must be used within a relevant
1192 [ + - ][ + - ]: 4936 : block.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1193 : :
1194 : : keywords.insert({"time_interval",
1195 : : "Set interval (in units of physics time)",
1196 : : R"(This keyword is used to specify an interval in units of physics time.
1197 [ + - ][ + - ]: 4936 : This must be used within a relevant block.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1198 : :
1199 : : keywords.insert({"time_range",
1200 : : "Configure physics time range for output (in units of physics time)",
1201 : : R"(This keyword is used to configure field-, or history-output, specifying
1202 : : a start time, a stop time, and an output frequency in physics time units.
1203 : : Example: 'time_range = {0.2, 0.3, 0.001}', which specifies that from t=0.2 to
1204 : : t=0.3 output should happen at physics time units of dt=0.001. This must be
1205 [ + - ][ + - ]: 6170 : used within a relevant block.)", "vector of 3 reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1206 : :
1207 : : keywords.insert({"refined", "Toggle refined field output on/off",
1208 : : R"(This keyword can be used to turn on/off refined field output, which
1209 : : refines the mesh and evaluates the solution on the refined mesh for saving
1210 [ + - ][ + - ]: 4936 : the solution.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1211 : :
1212 : : keywords.insert({"filetype", "Select output file type",
1213 : : R"(This keyword is used to specify the output file type of
1214 [ + - ][ + - ]: 4936 : mesh-based field output in a field_output block.)", "string" });
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1215 : :
1216 : : keywords.insert({"elemvar",
1217 : : "Specify list of elem-centered variables for output",
1218 : : R"(This keyword is used to specify elem-centered variables for output to
1219 [ + - ][ + - ]: 6170 : file. It is used in field_output blocks.)", "vector of string"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1220 : :
1221 : : keywords.insert({"nodevar",
1222 : : "Specify list of node-centered variables for output",
1223 : : R"(This keyword is used to specify node-centered variables for output to
1224 [ + - ][ + - ]: 6170 : file. It is used in field_output blocks.)", "vector of string"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1225 : :
1226 : : keywords.insert({"sideset",
1227 : : "Specify list of side sets",
1228 : : R"(This keyword is used to specify side sets. Usage is context specific,
1229 : : i.e. depends on what block it is specified in. Eg. in the field_output
1230 : : block it specifies the sidesets on which field output is desired.)",
1231 [ + - ][ + - ]: 4936 : "vector of uints"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1232 : :
1233 : : keywords.insert({"diagnostics",
1234 : : "Specify the diagnostics block",
1235 : : R"(This keyword is used to introduce the dagnostics block, used to
1236 [ + - ][ + - ]: 4936 : configure diagnostics output.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1237 : :
1238 : : keywords.insert({"interval",
1239 : : "Set interval (in units of iteration count)",
1240 : : R"(This keyword is used to specify an interval in units of iteration count
1241 : : (i.e., number of time steps). Usage is context specific, and this must
1242 [ + - ][ + - ]: 4936 : be used within a relevant block.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1243 : :
1244 : : keywords.insert({"error", "Select an error type",
1245 : : R"(This keyword is used to select the error type. Used either in the
1246 : : diagnostics block to specify error norm, or in the AMR block to specify
1247 [ + - ][ + - ]: 4936 : the error for solution-adaptive mesh refinement.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1248 : :
1249 : : keywords.insert({"format",
1250 : : "Specify the ASCII floating-point output format",
1251 : : R"(This keyword is used to select the
1252 : : floating-point output format for ASCII floating-point number output.
1253 : : Valid options are 'default', 'fixed', and 'scientific'. For more info on
1254 : : these various formats, see
1255 [ + - ][ + - ]: 4936 : http://en.cppreference.com/w/cpp/io/manip/fixed.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1256 : :
1257 : : keywords.insert({"precision",
1258 : : "Precision in digits for ASCII floating-point output",
1259 : : R"(This keyword is used to select
1260 : : the precision in digits for ASCII floating-point real number output.
1261 : : Example: "precision=10", which selects ten digits for floating-point
1262 : : output, e.g., 3.141592654. The number of digits must be larger than zero
1263 : : and lower than the maximum representable digits for the given
1264 : : floating-point type. For more info on setting the precision in C++, see
1265 : : http://en.cppreference.com/w/cpp/io/manip/setprecision, and
1266 [ + - ][ + - ]: 4936 : http://en.cppreference.com/w/cpp/types/numeric_limits/digits10)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1267 : :
1268 : : keywords.insert({"history_output",
1269 : : "Start of history_output input block",
1270 : : R"(This keyword is used to start a block in the input file containing the
1271 [ + - ][ + - ]: 4936 : descriptions and settings of requested history output.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1272 : :
1273 : : keywords.insert({"point",
1274 : : "Start configuration block for history point, or a single point in IC blocks",
1275 : : R"(This keyword is used to either introduce a vector block used to
1276 : : specify probes for history output, or in the IC/BC block to specify
1277 : : a single point. When used in history output, it takes sub-entries of
1278 : : 'id' and 'coord'. When used in IC/BC, directly takes three reals as
1279 [ + - ][ + - ]: 6170 : coordinates.)", "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1280 : :
1281 : : keywords.insert({"coord", "Specify point coordinates",
1282 : : R"(This keyword is used to specify coordinates of the history-point.)",
1283 [ + - ][ + - ]: 4936 : "3 reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1284 : :
1285 : : keywords.insert({"exodusii", "Select ExodusII output",
1286 : : R"(This keyword is used to select the
1287 : : ExodusII output file type readable by, e.g., ParaView of either a requested
1288 : : probability density function (PDF) within a pdfs ... end block or for
1289 : : mesh-based field output in a field_output ... end block. Example:
1290 : : "filetype exodusii", which selects ExodusII file output. For more info on
1291 [ + - ][ + - ]: 4936 : ExodusII, see http://sourceforge.net/projects/exodusii.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1292 : :
1293 : : keywords.insert({"density", "Request/specify density",
1294 : : R"(This keyword is used to request/specify the density. Usage is
1295 : : context specific. When specifed as 'elemvar' or 'nodevar' inside
1296 : : field_output, requests density as an output quantity. Otherwise,
1297 [ + - ][ + - ]: 4936 : specifies density at IC/BC.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1298 : :
1299 : : keywords.insert({"x-momentum",
1300 : : "Request x-momentum",
1301 : : R"(This keyword is used to request the fluid x-momentum as an output
1302 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1303 : :
1304 : : keywords.insert({"y-momentum",
1305 : : "Request y-momentum",
1306 : : R"(This keyword is used to request the fluid y-momentum as an output
1307 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1308 : :
1309 : : keywords.insert({"z-momentum",
1310 : : "Request z-momentum",
1311 : : R"(This keyword is used to request the fluid z-momentum as an output
1312 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1313 : :
1314 : : keywords.insert({
1315 : : "specific_total_energy", "Request specific total energy",
1316 : : R"(This keyword is used to request the specific total energy as an output
1317 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1318 : :
1319 : : keywords.insert({
1320 : : "volumetric_total_energy", "Request total volumetric energy",
1321 : : R"(This keyword is used to request the volumetric total energy as an output
1322 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1323 : :
1324 : : keywords.insert({"x-velocity",
1325 : : "Request x-velocity",
1326 : : R"(This keyword is used to request the fluid x-velocity as an output
1327 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1328 : :
1329 : : keywords.insert({"y-velocity",
1330 : : "Request y-velocity",
1331 : : R"(This keyword is used to request the fluid y-velocity as an output
1332 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1333 : :
1334 : : keywords.insert({"z-velocity",
1335 : : "Request z-velocity",
1336 : : R"(This keyword is used to request the fluid z-velocity as an output
1337 [ + - ][ + - ]: 4936 : variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1338 : :
1339 : : keywords.insert({"pressure", "Request/specify pressure",
1340 : : R"(This keyword is used to request/specify the pressure. Usage is
1341 : : context specific. When specifed as 'elemvar' or 'nodevar' inside
1342 : : field_output, requests pressure as an output quantity. Otherwise,
1343 [ + - ][ + - ]: 4936 : specifies pressure at IC/BC.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1344 : :
1345 : : keywords.insert({"material_indicator",
1346 : : "Request material_indicator",
1347 : : R"(This keyword is used to request the material indicator function as an
1348 [ + - ][ + - ]: 4936 : output variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1349 : :
1350 : : keywords.insert({"analytic",
1351 : : "Request analytic solution",
1352 : : R"(This keyword is used to request the analytic solution (if exist) as an
1353 [ + - ][ + - ]: 4936 : output variable.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1354 : :
1355 : : keywords.insert({"l2", "Select the L2 norm",
1356 [ + - ][ + - ]: 4936 : R"(This keyword is used to enable computing the L2 norm.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1357 : :
1358 : : keywords.insert({"linf", "Select the L_{infinity} norm",
1359 [ + - ][ + - ]: 4936 : R"(This keyword is used to enable computing the L-infinity norm.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1360 : :
1361 : : keywords.insert({"default",
1362 : : "Select the default ASCII floating-point output",
1363 : : R"(This keyword is used to select the
1364 : : 'default' floating-point output format for ASCII floating-point real
1365 : : number output. For more info on these various formats, see
1366 [ + - ][ + - ]: 4936 : http://en.cppreference.com/w/cpp/io/manip/fixed.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1367 : :
1368 : : keywords.insert({"fixed",
1369 : : "Select the fixed ASCII floating-point output",
1370 : : R"(This keyword is used to select the
1371 : : 'fixed' floating-point output format for ASCII floating-point real
1372 : : number output. For more info on these various formats, see
1373 [ + - ][ + - ]: 4936 : http://en.cppreference.com/w/cpp/io/manip/fixed.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1374 : :
1375 : : keywords.insert({"scientific",
1376 : : "Select the scientific ASCII floating-point output",
1377 : : R"(This keyword is used to select the
1378 : : 'scientific' floating-point output format for ASCII floating-point real
1379 : : number output. For more info on these various formats, see
1380 [ + - ][ + - ]: 4936 : http://en.cppreference.com/w/cpp/io/manip/fixed.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1381 : :
1382 : : // -----------------------------------------------------------------------
1383 : : // ALE options
1384 : : // -----------------------------------------------------------------------
1385 : :
1386 : : keywords.insert({"ale", "Start block configuring ALE",
1387 : : R"(This keyword is used to introduce the ale block, used to
1388 : : configure arbitrary Lagrangian-Eulerian (ALE) mesh movement.)",
1389 [ + - ][ + - ]: 4936 : "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1390 : :
1391 : : keywords.insert({"smoother", "Select mesh velocity smoother",
1392 : : R"(This keyword is used to select a mesh velocity smoother option, used
1393 : : for Arbitrary-Lagrangian-Eulerian (ALE) mesh motion. Valid options are
1394 [ + - ][ + - ]: 4936 : 'laplace', 'helmholtz', and 'none')", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1395 : :
1396 : : keywords.insert({"mesh_velocity", "Select mesh velocity",
1397 : : R"(This keyword is used to select a mesh velocity option, used for
1398 : : Arbitrary-Lagrangian-Eulerian (ALE) mesh motion. Valid options are
1399 [ + - ][ + - ]: 4936 : 'sine', 'fluid', and 'user_defined".)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1400 : :
1401 : : keywords.insert({"mesh_motion",
1402 : : "List of dimension indices that are allowed to move in ALE calculations",
1403 : : R"(This keyword is used to specify a list of integers (0, 1, or 2) whose
1404 : : coordinate directions corresponding to x, y, or z are allowed to move with
1405 : : the mesh velocity in ALE calculations. Useful for 1D/2D problems.)",
1406 [ + - ][ + - ]: 4936 : "vector of uints"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1407 : :
1408 : : keywords.insert({"meshforce", "Set ALE mesh force model parameter(s)",
1409 : : R"(This keyword is used to specify a vector of real numbers used to
1410 : : parameterize a mesh force model for ALE. The length of the vector must
1411 [ + - ][ + - ]: 6170 : exactly be 4.)", "vector of 4 reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1412 : :
1413 : : keywords.insert({"dvcfl",
1414 : : "Set the volume-change Courant-Friedrichs-Lewy (CFL) coefficient",
1415 : : R"(This keyword is used to specify the volume-change (dV/dt) CFL coefficient
1416 : : for variable-time-step-size simulations due to volume change in time in
1417 : : arbitrary-Lagrangian-Eulerian (ALE) calculations. Setting 'dvcfl' only has
1418 : : effect in ALE calculations and used together with 'cfl'. See also J. Waltz,
1419 : : N.R. Morgan, T.R. Canfield, M.R.J. Charest, L.D. Risinger, J.G. Wohlbier, A
1420 : : three-dimensional finite element arbitrary Lagrangian–Eulerian method for
1421 : : shock hydrodynamics on unstructured grids, Computers & Fluids, 92: 172-187,
1422 [ + - ][ + - ]: 4936 : 2014.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1423 : :
1424 : : keywords.insert({"vortmult",
1425 : : "Configure vorticity multiplier for ALE mesh velocity",
1426 : : R"(This keyword is used to configure the multiplier for the vorticity term
1427 : : in the mesh velocity smoother (mesh_velocity=fluid) or for the potential
1428 : : gradient for the Helmholtz mesh velocity (mesh_velocity=helmholtz) for ALE
1429 : : mesh motion. For 'fluid' this is coefficient c2 in Eq.(36) of Waltz,
1430 : : Morgan, Canfield, Charest, Risinger, Wohlbier, A three-dimensional finite
1431 : : element arbitrary Lagrangian–Eulerian method for shock hydrodynamics on
1432 : : unstructured grids, Computers & Fluids, 2014, and for 'helmholtz', this
1433 : : is coefficient a1 in Eq.(23) of Bakosi, Waltz, Morgan, Improved ALE mesh
1434 : : velocities for complex flows, International Journal for Numerical Methods
1435 [ + - ][ + - ]: 4936 : in Fluids, 2017. )", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1436 : :
1437 : : keywords.insert({"maxit",
1438 : : "Set the max number of iterations for the ALE mesh velocity linear solve",
1439 : : R"(This keyword is used to specify the maximum number of linear solver
1440 : : iterations taken to converge the mesh velocity linear solve in
1441 : : arbitrary-Lagrangian-Eulerian (ALE) calculations. See also J. Waltz,
1442 : : N.R. Morgan, T.R. Canfield, M.R.J. Charest, L.D. Risinger, J.G. Wohlbier, A
1443 : : three-dimensional finite element arbitrary Lagrangian–Eulerian method for
1444 : : shock hydrodynamics on unstructured grids, Computers & Fluids, 92: 172-187,
1445 [ + - ][ + - ]: 4936 : 2014.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1446 : :
1447 : : keywords.insert({"tolerance",
1448 : : "Set the tolerance for the ALE mesh velocity linear solve",
1449 : : R"(This keyword is used to specify the tolerance to converge the mesh
1450 : : velocity linear solve for in
1451 : : arbitrary-Lagrangian-Eulerian (ALE) calculations. See also J. Waltz,
1452 : : N.R. Morgan, T.R. Canfield, M.R.J. Charest, L.D. Risinger, J.G. Wohlbier, A
1453 : : three-dimensional finite element arbitrary Lagrangian–Eulerian method for
1454 : : shock hydrodynamics on unstructured grids, Computers & Fluids, 92: 172-187,
1455 [ + - ][ + - ]: 4936 : 2014.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1456 : :
1457 : : keywords.insert({"move",
1458 : : "Start configuration block configuring surface movement in ALE",
1459 : : R"(This keyword is used to introduce a move block, used to
1460 [ + - ][ + - ]: 6170 : configure surface movement for ALE simulations.)", "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1461 : :
1462 : : keywords.insert({"fntype",
1463 : : "Select how a user-defined function is interpreted",
1464 : : R"(This keyword is used to select how a user-defined function should be
1465 [ + - ][ + - ]: 4936 : interpreted.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1466 : :
1467 : : keywords.insert({"fn", "Specify a discrete user-defined function",
1468 : : R"(This keyword is used to specify a user-defined function block with
1469 : : discrete points, listed inside the fn block. Used in ale mesh motion and
1470 [ + - ][ + - ]: 4936 : time-dependent BC specification)", "reals" });
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1471 : :
1472 : : keywords.insert({"laplace",
1473 : : "Select the Laplace mesh velocity smoother for ALE",
1474 : : R"(This keyword is used to select the 'Laplace' mesh velocity smoother
1475 [ + - ][ + - ]: 4936 : for Arbitrary-Lagrangian-Eulerian (ALE) mesh motion.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1476 : :
1477 : : keywords.insert({"helmholtz",
1478 : : "Select the Helmholtz velocity for ALE",
1479 : : R"(This keyword is used to select the a velocity, computed from the
1480 : : Helmholtz-decomposition as the mesh velocity for
1481 : : Arbitrary-Lagrangian-Eulerian (ALE) mesh motion. See J. Bakosi, J. Waltz,
1482 : : N. Morgan, Improved ALE mesh velocities for complex flows, Int. J. Numer.
1483 [ + - ][ + - ]: 4936 : Meth. Fl., 1-10, 2017, https://doi.org/10.1002/fld.4403.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1484 : :
1485 : : keywords.insert({"none", "Select none option",
1486 : : R"(This keyword is used to select the 'none' option from a list of
1487 [ + - ][ + - ]: 4936 : configuration options.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1488 : :
1489 : : keywords.insert({"sine",
1490 : : "Prescribe sinusoidal mesh velocity for ALE",
1491 : : R"(This keyword is used to prescribe a sinusoidal mesh velocity
1492 [ + - ][ + - ]: 4936 : for Arbitrary-Lagrangian-Eulerian (ALE) mesh motion.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1493 : :
1494 : : keywords.insert({"fluid", "Select the fluid velocity for ALE",
1495 : : R"(This keyword is used to select the 'fluid' velocity as the mesh velocity
1496 [ + - ][ + - ]: 4936 : for Arbitrary-Lagrangian-Eulerian (ALE) mesh motion.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1497 : :
1498 : : // -----------------------------------------------------------------------
1499 : : // h/p adaptation objects
1500 : : // -----------------------------------------------------------------------
1501 : :
1502 : : keywords.insert({"amr",
1503 : : "Start configuration block configuring adaptive mesh refinement",
1504 : : R"(This keyword is used to introduce the amr block, used to
1505 [ + - ][ + - ]: 4936 : configure adaptive mesh refinement.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1506 : :
1507 : : keywords.insert({"t0ref", "Enable mesh refinement at t<0",
1508 : : R"(This keyword is used to enable initial mesh refinement, which can be
1509 : : configured to perform multiple levels of mesh refinement based on various
1510 [ + - ][ + - ]: 4936 : refinement criteria and configuration settings.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1511 : :
1512 : : keywords.insert({"dtref", "Enable mesh refinement at t>0",
1513 : : R"(This keyword is used to enable solution-adaptive mesh refinement during
1514 [ + - ][ + - ]: 4936 : time stepping.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1515 : :
1516 : : keywords.insert({"dtref_uniform",
1517 : : "Enable mesh refinement at t>0 but only perform uniform refinement",
1518 : : R"(This keyword is used to force uniform-only solution-adaptive mesh
1519 [ + - ][ + - ]: 4936 : refinement during time stepping.)", "bool"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1520 : :
1521 : : keywords.insert({"dtfreq",
1522 : : "Set mesh refinement frequency during time stepping",
1523 : : R"(This keyword is used to configure the frequency of mesh refinement
1524 [ + - ][ + - ]: 4936 : during time stepping.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1525 : :
1526 : : keywords.insert({"maxlevels",
1527 : : "Set maximum allowed mesh refinement levels",
1528 : : R"(This keyword is used to configure the maximum allowed mesh refinement
1529 [ + - ][ + - ]: 4936 : levels.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1530 : :
1531 : : keywords.insert({"initial",
1532 : : "Configure initial mesh refinement (before time stepping)",
1533 : : R"(This keyword is used to add to a list of initial mesh refinement types
1534 : : that happens before t = 0. Allowed options are 'uniform',
1535 : : 'uniform_derefine', 'initial_conditions', 'coords', 'edgelist')",
1536 [ + - ][ + - ]: 6170 : "vector of strings"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1537 : :
1538 : : keywords.insert({"coords",
1539 : : "Configure initial refinement using coordinate planes",
1540 : : R"(This keyword can be used to configure entire volumes on a given side of
1541 : : a plane in 3D space. The keyword introduces an coords block within
1542 : : an amr block. All edges of the input mesh will be tagged for refinement
1543 : : whose end-points lie within the given ranges.
1544 : : Example: 'xminus 0.5' refines all edges whose end-point coordinates are
1545 : : less than 0.5. Multiple specifications are understood by combining with
1546 : : a logical AND. That is: 'xminus 0.5 yplus 0.3' refines all edges whose
1547 : : end-point x coordinates are less than 0.5 AND y coordinates are larger than
1548 [ + - ][ + - ]: 4936 : 0.3.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1549 : :
1550 : : keywords.insert({"xminus",
1551 : : "Configure initial refinement for coordinates lower than an x-normal plane",
1552 : : R"(This keyword can be used to configure a mesh refinement volume for edges
1553 : : whose end-points are less than the x coordinate of a plane perpendicular
1554 : : to coordinate x in 3D space. The keyword must be used in a coords-block
1555 : : within an amr-block with syntax 'xminus <real>'. All edges of the
1556 : : input mesh will be tagged for refinement whose end-points lie less than (-)
1557 : : the real number given. Example: 'xminus 0.5' refines all edges whose end-point
1558 [ + - ][ + - ]: 4936 : x-coordinates are less than 0.5.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1559 : :
1560 : : keywords.insert({"xplus",
1561 : : "Configure initial refinement for coordinates larger than an x-normal plane",
1562 : : R"(This keyword can be used to configure a mesh refinement volume for edges
1563 : : whose end-points are larger than the x coordinate of a plane perpendicular
1564 : : to coordinate x in 3D space. The keyword must be used in a coords-block
1565 : : within an amr-block with syntax 'xplus <real>'. All edges of the
1566 : : input mesh will be tagged for refinement whose end-points lie larger than
1567 : : (+) the real number given. Example: 'xplus 0.5' refines all edges whose
1568 [ + - ][ + - ]: 4936 : end-point coordinates are larger than 0.5.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1569 : :
1570 : : keywords.insert({"yminus",
1571 : : "Configure initial refinement for coordinates lower than an y-normal plane",
1572 : : R"(This keyword can be used to configure a mesh refinement volume for edges
1573 : : whose end-points are less than the y coordinate of a plane perpendicular
1574 : : to coordinate y in 3D space. The keyword must be used in a coords-block
1575 : : within an amr-block with syntax 'yminus <real>'. All edges of the
1576 : : input mesh will be tagged for refinement whose end-points lie less than (-)
1577 : : the real number given. Example: 'yminus 0.5' refines all edges whose end-point
1578 [ + - ][ + - ]: 4936 : coordinates are less than 0.5.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1579 : :
1580 : : keywords.insert({"yplus",
1581 : : "Configure initial refinement for coordinates larger than an y-normal plane",
1582 : : R"(This keyword can be used to configure a mesh refinement volume for edges
1583 : : whose end-points are larger than the y coordinate of a plane perpendicular
1584 : : to coordinate y in 3D space. The keyword must be used in a coords-block
1585 : : within an amr-block with syntax 'yplus <real>'. All edges of the
1586 : : input mesh will be tagged for refinement whose end-points lie larger than
1587 : : (+) the real number given. Example: 'yplus 0.5' refines all edges whose
1588 [ + - ][ + - ]: 4936 : end-point coordinates are larger than 0.5.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1589 : :
1590 : : keywords.insert({"zminus",
1591 : : "Configure initial refinement for coordinates lower than an z-normal plane",
1592 : : R"(This keyword can be used to configure a mesh refinement volume for edges
1593 : : whose end-points are less than the z coordinate of a plane perpendicular
1594 : : to coordinate z in 3D space. The keyword must be used in a coords-block
1595 : : within an amr-block with syntax 'zminus <real>'. All edges of the
1596 : : input mesh will be tagged for refinement whose end-points lie less than (-)
1597 : : the real number given. Example: 'zminus 0.5' refines all edges whose end-point
1598 [ + - ][ + - ]: 4936 : coordinates are less than 0.5.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1599 : :
1600 : : keywords.insert({"zplus",
1601 : : "Configure initial refinement for coordinates larger than an z-normal plane",
1602 : : R"(This keyword can be used to configure a mesh refinement volume for edges
1603 : : whose end-points are larger than the z coordinate of a plane perpendicular
1604 : : to coordinate z in 3D space. The keyword must be used in a coords-block
1605 : : within an amr-block with syntax 'zplus <real>'. All edges of the
1606 : : input mesh will be tagged for refinement whose end-points lie larger than
1607 : : (+) the real number given. Example: 'zplus 0.5' refines all edges whose
1608 [ + - ][ + - ]: 4936 : end-point coordinates are larger than 0.5.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1609 : :
1610 : : keywords.insert({"edgelist",
1611 : : "Configure edge-node pairs for initial refinement",
1612 : : R"(This keyword can be used to configure a list of edges that are explicitly
1613 : : tagged for initial refinement during setup in inciter. The keyword
1614 : : introduces an edgelist block within an amr block and must
1615 : : contain a list of integer pairs, i.e., the number of ids must be even,
1616 : : denoting the end-points of the nodes (=edge) which should be tagged for
1617 [ + - ][ + - ]: 4936 : refinement.)", "vector of uints"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1618 : :
1619 : : keywords.insert({"error",
1620 : : "Configure the error type for solution-adaptive mesh refinement",
1621 : : R"(This keyword is used to select the algorithm used to estimate the error
1622 : : for solution-adaptive mesh refinement. Available options are 'jump' and
1623 [ + - ][ + - ]: 4936 : 'hessian')", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1624 : :
1625 : : keywords.insert({"refvar",
1626 : : "Configure dependent variables used for adaptive mesh refinement",
1627 : : R"(This keyword is used to configured a list of dependent variables that
1628 : : trigger adaptive mesh refinement based on estimating their numerical error.
1629 : : These refinement variables are used for both initial (i.e., before time
1630 : : stepping) mesh refinement as well as during time stepping. Only previously
1631 : : (i.e., earlier in the input file) selected dependent variables can be
1632 : : configured as refinement variables. Dependent variables are required to be
1633 : : defined in all equation system configuration blocks, e.g., transport ...
1634 : : end, by using the 'depvar' keyword. Example: transport depvar c end amr
1635 : : refvar c end end. Selecting a particular scalar component in a system is
1636 : : done by appending the equation number to the refvar: Example: transport
1637 : : depvar q ncomp 3 end amr refvar q1 q2 end end, which configures two
1638 : : refinement variables: the first and third scalar component of the previously
1639 [ + - ][ + - ]: 4936 : configured transport equation system.)", "vector of char"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1640 : :
1641 : : keywords.insert({"tol_refine", "Configure refine tolerance",
1642 : : R"(This keyword is used to set the tolerance used to tag an edge for
1643 [ + - ][ + - ]: 4936 : refinement if the relative error exceeds this value.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1644 : :
1645 : : keywords.insert({"tol_derefine",
1646 : : "Configure derefine tolerance",
1647 : : R"(This keyword is used to set the tolerance used to tag an edge for
1648 [ + - ][ + - ]: 4936 : derefinement if the relative error is below this value.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1649 : :
1650 : : keywords.insert({"uniform",
1651 : : "Select uniform initial mesh refinement",
1652 : : R"(This keyword is used to select uniform initial mesh refinement.)",
1653 [ + - ][ + - ]: 4936 : "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1654 : :
1655 : : keywords.insert({"uniform_derefine",
1656 : : "Select uniform initial mesh de-refinement",
1657 : : R"(This keyword is used to select uniform initial mesh de-refinement.)",
1658 [ + - ][ + - ]: 4936 : "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1659 : :
1660 : : keywords.insert({"initial_conditions",
1661 : : "Select initial-conditions-based initial mesh refinement",
1662 : : R"(This keyword is used to select initial-conditions-based initial mesh
1663 [ + - ][ + - ]: 4936 : refinement.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1664 : :
1665 : : keywords.insert({"jump",
1666 : : "Error estimation based on the solution jump normalized by solution value",
1667 : : R"(This keyword is used to select the jump-based error indicator for
1668 : : solution-adaptive mesh refinement. The error is estimated by computing the
1669 : : magnitude of the jump in the solution value normalized by the solution
1670 [ + - ][ + - ]: 4936 : value.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1671 : :
1672 : : keywords.insert({"hessian",
1673 : : "Error estimation based on the Hessian normalized by solution value",
1674 : : R"(This keyword is used to select the Hessian-based error indicator for
1675 : : solution-adaptive mesh refinement. The error is estimated by computing the
1676 : : Hessian (2nd derivative matrix) of the solution normalized by sum of the
1677 [ + - ][ + - ]: 4936 : absolute values of the gradients at edges-end points.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1678 : :
1679 : : keywords.insert({"pref",
1680 : : "Start configuration block configuring p-adaptive refinement",
1681 : : R"(This keyword is used to introduce the pref block, to
1682 [ + - ][ + - ]: 4936 : configure p-adaptive refinement)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1683 : :
1684 : : keywords.insert({"indicator",
1685 : : "Configure the specific adaptive indicator for p-adaptive DG scheme",
1686 : : R"(This keyword can be used to configure a specific type of adaptive
1687 : : indicator for p-adaptive refinement of the DG scheme. The keyword must
1688 : : be used in a pref block. Available options are 'pref_spectral_decay' and
1689 [ + - ][ + - ]: 4936 : 'pref_non_conformity'.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1690 : :
1691 : : keywords.insert({"ndofmax",
1692 : : "Configure the maximum number of degree of freedom for p-adaptive DG",
1693 : : R"(This keyword can be used to configure a maximum number of degree of
1694 : : freedom for p-adaptive refinement of the DG scheme. The keyword must
1695 [ + - ][ + - ]: 6170 : be used in a pref block.)", "uint either 4 or 10"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1696 : :
1697 : : keywords.insert({"tolref",
1698 : : "Configure the tolerance for p-refinement for p-adaptive DG",
1699 : : R"(This keyword can be used to configure a tolerance for p-adaptive
1700 : : refinement for the DG scheme. The keyword must be used in a pref
1701 : : block. All elements with a refinement indicator larger than this
1702 [ + - ][ + - ]: 6170 : tolerance will be p-refined.)", "real between 0 and 1"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1703 : :
1704 : : keywords.insert({"spectral_decay",
1705 : : "Select the spectral-decay indicator for p-adaptive DG scheme",
1706 : : R"(This keyword is used to select the spectral-decay indicator used for
1707 : : p-adaptive discontinuous Galerkin (DG) discretization used in inciter.
1708 : : See Control/Inciter/Options/PrefIndicator.hpp for other valid options.)",
1709 [ + - ][ + - ]: 4936 : "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1710 : :
1711 : : keywords.insert({"non_conformity",
1712 : : "Select the non-conformity indicator for p-adaptive DG scheme",
1713 : : R"(This keyword is used to select the non-conformity indicator used for
1714 : : p-adaptive discontinuous Galerkin (DG) discretization used in inciter.
1715 : : See Control/Inciter/Options/PrefIndicator.hpp for other valid options.)",
1716 [ + - ][ + - ]: 4936 : "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1717 : :
1718 : : // -----------------------------------------------------------------------
1719 : : // boundary condition options
1720 : : // -----------------------------------------------------------------------
1721 : :
1722 : : keywords.insert({"bc",
1723 : : "Start configuration block for boundary conditions",
1724 : : R"(This keyword is used to introduce the bc block, used for
1725 : : boundary conditions. This is a vector block, where each vector entry
1726 [ + - ][ + - ]: 6170 : specifies BCs for a particular mesh)", "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1727 : :
1728 : : keywords.insert({"mesh",
1729 : : "List meshes on which the following BCs apply",
1730 : : R"(This keyword is used to list multiple meshes on which the boundary
1731 : : conditions listed in this particular bc-block apply.)",
1732 [ + - ][ + - ]: 4936 : "vector of uints"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1733 : :
1734 : : keywords.insert({"dirichlet",
1735 : : "List sidesets with Dirichlet boundary conditions",
1736 : : R"(This keyword is used to list Dirichlet sidesets.
1737 : : This keyword is used to list multiple sidesets on
1738 : : which a prescribed Dirichlet BC is then applied. Such prescribed BCs
1739 : : at each point in space and time are evaluated using a built-in function,
1740 [ + - ][ + - ]: 6170 : e.g., using the method of manufactured solutions.)", "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1741 : :
1742 : : keywords.insert({"symmetry",
1743 : : "List sidesets with symmetry boundary conditions",
1744 : : R"(This keyword is used to list (multiple) symmetry BC sidesets.)",
1745 [ + - ][ + - ]: 6170 : "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1746 : :
1747 : : keywords.insert({"inlet",
1748 : : "List sidesets with inlet boundary conditions",
1749 : : R"(This keyword is used to list (multiple) inlet BC sidesets.)",
1750 [ + - ][ + - ]: 6170 : "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1751 : :
1752 : : keywords.insert({"outlet",
1753 : : "List sidesets with outlet boundary conditions",
1754 : : R"(This keyword is used to list (multiple) outlet BC sidesets.)",
1755 [ + - ][ + - ]: 6170 : "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1756 : :
1757 : : keywords.insert({"farfield",
1758 : : "List sidesets with farfield boundary conditions",
1759 : : R"(This keyword is used to list (multiple) farfield BC sidesets.
1760 : : Keywords allowed in a bc_farfield block are 'density', 'velocity',
1761 [ + - ][ + - ]: 6170 : 'pressure')", "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1762 : :
1763 : : keywords.insert({"extrapolate",
1764 : : "List sidesets with Extrapolation boundary conditions",
1765 : : R"(This keyword is used to list (multiple) extrapolate BC sidesets.)",
1766 [ + - ][ + - ]: 6170 : "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1767 : :
1768 : : keywords.insert({"noslipwall",
1769 : : "List sidesets with no-slip wall boundary conditions",
1770 : : R"(This keyword is used to list (multiple) no-slip wall BC sidesets.)",
1771 [ + - ][ + - ]: 6170 : "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1772 : :
1773 : : keywords.insert({"slipwall",
1774 : : "List sidesets with slip wall boundary conditions",
1775 : : R"(This keyword is used to list (multiple) slip wall BC sidesets.)",
1776 [ + - ][ + - ]: 6170 : "vector of uint(s)"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1777 : :
1778 : : keywords.insert({"timedep",
1779 : : "Start configuration block describing time dependent boundary conditions",
1780 : : R"(This keyword is used to introduce a bc_timedep block, used to
1781 : : specify the configuration of time dependent boundary conditions for a
1782 : : partial differential equation. A discrete function in time t in the form
1783 : : of a table with 6 columns (t, pressure(t), density(t), vx(t), vy(t), vz(t))
1784 : : is expected inside a fn ... end block, specified within the bc_timedep
1785 : : block. Multiple such bc_timedep blocks can be specified for different
1786 [ + - ][ + - ]: 4936 : time dependent BCs on different groups of side sets.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1787 : :
1788 : : keywords.insert({"back_pressure",
1789 : : "Start configuration block describing back pressure boundary conditions",
1790 : : R"(This keyword is used to introduce a back pressure BC block. This
1791 : : block requires a 'sideset' vector and 'pressure' to be specified within
1792 [ + - ][ + - ]: 4936 : it.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1793 : :
1794 : : keywords.insert({"velocity", "Specify velocity",
1795 : : R"(This keyword is used to configure a velocity vector used in a
1796 : : context-specific way, e.g., for boundary or initial conditions.)",
1797 [ + - ][ + - ]: 6170 : "vector of 3 reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1798 : :
1799 : : // -----------------------------------------------------------------------
1800 : : // Rigid-body motion solver
1801 : : // -----------------------------------------------------------------------
1802 : :
1803 : : keywords.insert({"rigid_body_motion", "Specify a rigid body motion block",
1804 : : R"(This keyword is used to specify a rigid body motion block, to move an
1805 : : overset mesh as a rigid body. Number of degrees of freedom and the
1806 : : symmetry plane (if any) are specified within this block.)",
1807 [ + - ][ + - ]: 4936 : "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1808 : :
1809 : : keywords.insert({"rigid_body_dof",
1810 : : "Number of rigid body degrees of freedom", R"(This keyword is used to
1811 : : specify the number of degrees of freedom the rigid body has. Valid
1812 : : options are 3 and 6. 3 DOFs indicate translation in two dimensions and
1813 : : rotation about symmetry plane axis; 6 DOFs indication translation in
1814 : : three dimensions and rotation about three axes. If 3 DOFs is specified,
1815 : : symmetry plane is required; if 6 DOFs is specified symmetry plane is not
1816 [ + - ][ + - ]: 4936 : used.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1817 : :
1818 : : keywords.insert({"symmetry_plane", "Symmetry plane for rigid body motion",
1819 : : R"(This keyword is used to specify the symmetry plane for a 3 DOF rigid
1820 [ + - ][ + - ]: 4936 : body motion solver. 1: x-plane, 2: y-plane, 3: z-plane.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1821 : :
1822 : : // -----------------------------------------------------------------------
1823 : : // IC object
1824 : : // -----------------------------------------------------------------------
1825 : :
1826 : : keywords.insert({"ic",
1827 : : "Introduce an ic block used to configure initial conditions",
1828 : : R"(This keyword is used to introduce an ic block used to set initial
1829 [ + - ][ + - ]: 4936 : conditions.)", "block-title"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1830 : :
1831 : : keywords.insert({"materialid", "Specify material id",
1832 : : R"(This keyword is used to configure the material id within an IC box,
1833 : : IC mesh-block, farfield BC, or in the background as a part of the
1834 [ + - ][ + - ]: 4936 : initialization.)", "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1835 : :
1836 : : keywords.insert({"temperature", "Specify temperature",
1837 : : R"(This keyword is used to configure temperature, used for, e.g.,
1838 [ + - ][ + - ]: 4936 : boundary or initial conditions.)" , "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1839 : :
1840 : : keywords.insert({"mass_fractions", "Specify species mass fractions",
1841 : : R"(This keyword is used to configure species mass fractions, used for,
1842 [ + - ][ + - ]: 4936 : e.g., boundary or initial conditions.)" , "vector of reals"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1843 : :
1844 : : keywords.insert({"box",
1845 : : "Introduce a box block used to assign initial conditions",
1846 : : R"(This keyword is used to introduce a IC box block used to assign
1847 : : initial conditions within a box given by spatial coordinates.)",
1848 [ + - ][ + - ]: 6170 : "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1849 : :
1850 : : keywords.insert({"meshblock",
1851 : : "Introduce a meshblock block used to assign initial conditions",
1852 : : R"(This keyword is used to introduce a IC meshblock block used to
1853 : : assign initial conditions within a mesh block specified in the mesh file.)",
1854 [ + - ][ + - ]: 6170 : "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1855 : :
1856 : : keywords.insert({"blockid", "Specify mesh block id",
1857 : : R"(This keyword is used to configure the mesh block id within the
1858 : : meshblock-block as a part of the initialization. It is strongly
1859 : : recommended to use contiguous block ids in mesh file starting from 1.)",
1860 [ + - ][ + - ]: 4936 : "uint"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1861 : :
1862 : : keywords.insert({"volume", "Specify volume",
1863 : : R"(This keyword is used to configure the volume of a meshblock.)",
1864 [ + - ][ + - ]: 3702 : "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ - + ]
[ - + ][ - - ]
1865 : :
1866 : : keywords.insert({"mass", "Specify mass",
1867 : : R"(This keyword is used to configure the mass within a box/meshblock,
1868 : : or mass of the rigid body which is conformally meshed using the overset
1869 [ + - ][ + - ]: 3702 : mesh.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ - + ]
[ - + ][ - - ]
1870 : :
1871 : : keywords.insert({"energy", "Specify energy per unit mass",
1872 : : R"(This keyword is used to configure energy per unit mass, used for, e.g.,
1873 [ + - ][ + - ]: 4936 : boundary or initial conditions.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1874 : :
1875 : : keywords.insert({"energy_content", "Specify energy per unit volume",
1876 : : R"(This keyword is used to configure energy per unit volume, used for
1877 [ + - ][ + - ]: 4936 : initial conditions.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1878 : :
1879 : : keywords.insert({"xmin", "Minimum x coordinate",
1880 : : R"(This keyword used to configure a minimum x coordinate to specify
1881 [ + - ][ + - ]: 4936 : a box.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1882 : :
1883 : : keywords.insert({"xmax", "Maximum x coordinate",
1884 : : R"(This keyword used to configure a maximum x coordinate to specify
1885 [ + - ][ + - ]: 4936 : a box.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1886 : :
1887 : : keywords.insert({"ymin", "Minimum y coordinate",
1888 : : R"(This keyword used to configure a minimum y coordinate to specify
1889 [ + - ][ + - ]: 4936 : a box.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1890 : :
1891 : : keywords.insert({"ymax", "Maximum y coordinate",
1892 : : R"(This keyword used to configure a maximum y coordinate to specify
1893 [ + - ][ + - ]: 4936 : a box.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1894 : :
1895 : : keywords.insert({"zmin", "Minimum z coordinate",
1896 : : R"(This keyword used to configure a minimum z coordinate to specify
1897 [ + - ][ + - ]: 4936 : a box.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1898 : :
1899 : : keywords.insert({"zmax", "Maximum z coordinate",
1900 : : R"(This keyword used to configure a maximum z coordinate to specify
1901 [ + - ][ + - ]: 4936 : a box.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1902 : :
1903 : : keywords.insert({"orientation", "Configure orientation",
1904 : : R"(Configure orientation of an IC box for rotation about centroid of
1905 : : box (when specified within an IC 'box' block); or configure orientation
1906 : : of a mesh (when specified within a 'mesh' block). Requires specification
1907 : : of three angles about which the entity (box or mesh) is to be rotated.
1908 : : The entity is rotated about the cartesian coordinate axes.)",
1909 [ + - ][ + - ]: 6170 : "vector of 3 reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1910 : :
1911 : : keywords.insert({"initiate", "Initiation type",
1912 : : R"(This keyword is used to select an initiation type to configure how
1913 : : values are assigned for a box/meshblock initialization. This can be used
1914 : : to specify, how the values are assigned to mesh nodes within a box. Uses:
1915 : : (1) impulse: assign the full values at t=0 for all points in a box,
1916 : : (2) linear: use a linear function in time and space, configured with an
1917 : : initiation point in space, a constant velocity of the growing spherical
1918 : : front in time (and space) linearly, and width of the front and assigns
1919 : : values to mesh points falling within the growing spherical shell inside
1920 [ + - ][ + - ]: 3702 : a configured box.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ - + ]
[ - + ][ - - ]
1921 : :
1922 : : keywords.insert({"init_time","Specify the initialization time",
1923 : : R"(This keyword is used to specify the time at which the propagating front
1924 : : is initialized for a mesh block or box IC, with 'initiate linear' type.
1925 : : Delays in initializing separate mesh blocks or boxes can be achieved using
1926 [ + - ][ + - ]: 4936 : different initialization times.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1927 : :
1928 : : keywords.insert({"front_width", "Specify a front width",
1929 : : R"(This keyword is used to specify the width of the propagating front for
1930 : : a mesh block or box IC, with 'initiate linear' type. The suggested value
1931 : : of the front width is about 4-5 times the mesh size inside the mesh block
1932 [ + - ][ + - ]: 4936 : or box.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1933 : :
1934 : : keywords.insert({"front_speed", "Specify a front speed",
1935 : : R"(This keyword is used to specify the speed at which a front propagates
1936 [ + - ][ + - ]: 4936 : for a mesh block or box IC, with 'initiate linear' type.)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1937 : :
1938 : : keywords.insert({"impulse",
1939 : : "Select the impulse initiation type, for a box/meshblock IC",
1940 : : R"(This keyword can be used to select the 'impulse' initiation/assignment
1941 : : type for box initial conditions. It simply assigns the prescribed values
1942 [ + - ][ + - ]: 4936 : to all mesh points within a configured box at t=0.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1943 : :
1944 : : keywords.insert({"linear",
1945 : : "Select the linear initiation type, for a box/meshblock IC",
1946 : : R"(This keyword is be used to specify the 'linear' initiation parameters
1947 : : for a particular box or meshblock, as a part of the 'energy_pill'
1948 : : initialization. Linear initiation uses a linear function in time and space,
1949 : : configured with an initiation point in space, a constant velocity of the
1950 : : growing spherical front in time (and space) linearly, and width of the front
1951 : : and assigns values to mesh points falling within the growing spherical shell
1952 : : inside a configured box or meshblock. The following keywords are required
1953 : : in the box/meshblock block if 'linear' is used: 'init_time',
1954 [ + - ][ + - ]: 4936 : 'front_width', 'front_speed')"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1955 : :
1956 : : // -----------------------------------------------------------------------
1957 : : // Overset mesh object
1958 : : // -----------------------------------------------------------------------
1959 : :
1960 : : keywords.insert({"mesh",
1961 : : "Start configuration block assigning a mesh to a solver",
1962 : : R"(This keyword is used to introduce a mesh block, used to
1963 [ + - ][ + - ]: 6170 : assign and configure a mesh to a solver.)", "vector block-title"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1964 : :
1965 : : keywords.insert({"filename", "Set filename",
1966 [ + - ][ + - ]: 3702 : R"(Set filename, e.g., mesh filename for solver coupling.)", "string"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ - + ]
[ - + ][ - - ]
1967 : :
1968 : : keywords.insert({"location", "Configure location of mesh",
1969 : : R"(Configure location of a mesh relative to its local coordinate
1970 : : system. Requires specification of three distances which are used to
1971 [ + - ][ + - ]: 6170 : relocate the mesh.)", "vector of 3 reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1972 : :
1973 : : keywords.insert({"moment_of_inertia", "Moment of inertia of rigid body",
1974 [ + - ][ + - ]: 4936 : R"(Moment of inertia of rigid body for rotational motion)", "real"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
1975 : :
1976 : : keywords.insert({"center_of_mass", "Center of mass of rigid body",
1977 : : R"(Center of mass of rigid body used to compute torque for rotational
1978 [ + - ][ + - ]: 6170 : motion)", "vector of 3 reals"});
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ][ - - ]
1979 : :
1980 : : // -----------------------------------------------------------------------
1981 : : // pre-configured problems
1982 : : // -----------------------------------------------------------------------
1983 : :
1984 : : keywords.insert({"user_defined",
1985 : : "Select user-defined specification for a problem",
1986 : : R"(This keyword is used to select the user-defined specification for an
1987 : : option. This could be a 'problem' to be solved by a partial differential
1988 : : equation, but can also be a 'user-defined' mesh velocity specification for
1989 [ + - ][ + - ]: 4936 : ALE mesh motion.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1990 : :
1991 : : keywords.insert({"shear_diff",
1992 : : "Select the shear + diffusion test problem ",
1993 : : R"(This keyword is used to select the shear diffusion test problem. The
1994 : : initial and boundary conditions are specified to set up the test problem
1995 : : suitable to exercise and test the advection and diffusion terms of the
1996 [ + - ][ + - ]: 4936 : scalar transport equation.)" });
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
1997 : :
1998 : : keywords.insert({"slot_cyl",
1999 : : "Select Zalesak's slotted cylinder test problem",
2000 : : R"(This keyword is used to select Zalesak's slotted cylinder test
2001 : : problem. The initial and boundary conditions are specified to set up the
2002 : : test problem suitable to exercise and test the advection and diffusion
2003 [ + - ][ + - ]: 4936 : terms of the scalar transport equation.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2004 : :
2005 : : keywords.insert({"gauss_hump",
2006 : : "Select advection of 2D Gaussian hump test problem",
2007 : : R"(This keyword is used to select the advection of 2D Gaussian hump test
2008 : : problem. The initial and boundary conditions are specified to set up the
2009 : : test problem suitable to exercise and test the advection
2010 [ + - ][ + - ]: 4936 : terms of the scalar transport equation.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2011 : :
2012 : : keywords.insert({"cyl_advect",
2013 : : "Select advection of cylinder test problem",
2014 : : R"(This keyword is used to select the advection of cylinder test
2015 : : problem. The initial and boundary conditions are specified to set up the
2016 : : test problem suitable to exercise and test the advection
2017 [ + - ][ + - ]: 4936 : terms of the scalar transport equation.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2018 : :
2019 : : keywords.insert({"cyl_vortex",
2020 : : "Select deformation of cylinder in a vortex test problem",
2021 : : R"(This keyword is used to select the test problem which deforms a cylinder
2022 : : in a vortical velocity field. The initial and boundary conditions are
2023 : : specified to set up the test problem suitable to exercise and test the
2024 [ + - ][ + - ]: 4936 : advection terms of the scalar transport equation.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2025 : :
2026 : : keywords.insert({"vortical_flow",
2027 : : "Select the vortical flow test problem ",
2028 : : R"(This keyword is used to select the vortical flow test problem. The
2029 : : purpose of this test problem is to test velocity errors generated by spatial
2030 : : operators in the presence of 3D vorticity and in particluar the
2031 : : superposition of planar and vortical flows, analogous to voritcity
2032 : : stretching. For more details, see Waltz,
2033 : : et. al, "Manufactured solutions for the three-dimensional Euler equations
2034 : : with relevance to Inertial Confinement Fusion", Journal of Computational
2035 [ + - ][ + - ]: 4936 : Physics 267 (2014) 196-209.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2036 : :
2037 : : keywords.insert({"nl_energy_growth",
2038 : : "Select the nonlinear energy growth test problem",
2039 : : R"(This keyword is used to select the nonlinear energy growth test problem.
2040 : : The purpose of this test problem is to test nonlinear, time dependent energy
2041 : : growth and the subsequent development of pressure gradients due to coupling
2042 : : between the internal energy and the equation of state. For more details,
2043 : : see Waltz, et. al, "Manufactured
2044 : : solutions for the three-dimensional Euler equations with relevance to
2045 : : Inertial Confinement Fusion", Journal of Computational Physics 267 (2014)
2046 [ + - ][ + - ]: 4936 : 196-209.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2047 : :
2048 : : keywords.insert({"rayleigh_taylor",
2049 : : "Select the Rayleigh-Taylor test problem ",
2050 : : R"(This keyword is used to select the Rayleigh-Taylor unstable configuration
2051 : : test problem. The purpose of this test problem is to assess time dependent
2052 : : fluid motion in the presence of Rayleigh-Taylor unstable conditions, i.e.
2053 : : opposing density and pressure gradients.
2054 : : For more details, see Waltz, et. al, "Manufactured solutions for the
2055 : : three-dimensional Euler equations with relevance to Inertial Confinement
2056 [ + - ][ + - ]: 4936 : Fusion", Journal of Computational Physics 267 (2014) 196-209.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2057 : :
2058 : : keywords.insert({"taylor_green",
2059 : : "Select the Taylor-Green test problem ",
2060 : : R"(This keyword is used to select the Taylor-Green vortex test problem. The
2061 : : purpose of this problem is to test time accuracy and the correctness of the
2062 : : discretization of the viscous term in the Navier-Stokes equation. For more
2063 : : details on the flow, see G.I. Taylor, A.E.
2064 : : Green, "Mechanism of the Production of Small Eddies from Large Ones", Proc.
2065 : : R. Soc. Lond. A 1937 158 499-521; DOI: 10.1098/rspa.1937.0036. Published 3
2066 [ + - ][ + - ]: 4936 : February 1937.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2067 : :
2068 : : keywords.insert({"sod_shocktube",
2069 : : "Select the Sod shock-tube test problem ",
2070 : : R"(This keyword is used to select the Sod shock-tube test problem. The
2071 : : purpose of this test problem is to test the correctness of the
2072 : : approximate Riemann solver and its shock and interface capturing
2073 : : capabilities. For more details, see
2074 : : G. A. Sod, "A Survey of Several Finite Difference Methods for Systems of
2075 : : Nonlinear Hyperbolic Conservation Laws", J. Comput. Phys., 27 (1978)
2076 [ + - ][ + - ]: 4936 : 1–31.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2077 : :
2078 : : keywords.insert({"rotated_sod_shocktube",
2079 : : "Select the rotated Sod shock-tube test problem ",
2080 : : R"(This keyword is used to select the rotated Sod shock-tube test problem.
2081 : : This the same as Sod shocktube but the geometry is rotated about X, Y, Z
2082 : : each by 45 degrees (in that order) so that none of the domain boundary align
2083 : : with any of the coordinate directions. The purpose of this test problem is
2084 : : to test the correctness of the approximate Riemann solver and its shock and
2085 : : interface capturing capabilities in an arbitrarily oriented geometry.
2086 : : For more details on the Sod
2087 : : problem, see G. A. Sod, "A Survey of Several Finite Difference Methods for
2088 : : Systems of Nonlinear Hyperbolic Conservation Laws", J. Comput. Phys., 27
2089 [ + - ][ + - ]: 4936 : (1978) 1–31.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2090 : :
2091 : : keywords.insert({"shedding_flow",
2092 : : "Select the Shedding flow test problem ",
2093 : : R"(This keyword is used to select the Shedding flow test problem. It
2094 : : describe a quasi-2D inviscid flow over a triangular wedge in tetrahedron
2095 : : grid. The purpose of this test problem is to test the capability of DG
2096 : : scheme for retaining the shape of vortices and also different error
2097 : : indicator behavior for this external flow problem when p-adaptive DG scheme
2098 [ + - ][ + - ]: 4936 : is applied.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2099 : :
2100 : : keywords.insert({"sedov_blastwave",
2101 : : "Select the Sedov blast-wave test problem ",
2102 : : R"(This keyword is used to select the Sedov blast-wave test problem. The
2103 : : purpose of this test problem is to test the correctness of the
2104 : : approximate Riemann solver and its strong shock and interface capturing
2105 [ + - ][ + - ]: 4936 : capabilities.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2106 : :
2107 : : keywords.insert({"interface_advection",
2108 : : "Select the interface advection test problem ",
2109 : : R"(This keyword is used to select the interface advection test problem.
2110 : : The purpose of this test problem is to test the well-balancedness of the
2111 : : multi-material discretization and its interface capturing
2112 [ + - ][ + - ]: 4936 : capabilities.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2113 : :
2114 : : keywords.insert({"gauss_hump_compflow",
2115 : : "Select advection of 2D Gaussian hump test problem",
2116 : : R"(This keyword is used to select the advection of 2D Gaussian hump test
2117 : : problem. The initial and boundary conditions are specified to set up the
2118 : : test problem suitable to exercise and test the advection terms of the
2119 : : Euler equations. The baseline of the density distribution in this testcase
2120 : : is 1 instead of 0 in gauss_hump_transport which enables it to be the
2121 [ + - ][ + - ]: 4936 : regression testcase for p-adaptive DG scheme.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2122 : :
2123 : : keywords.insert({"waterair_shocktube",
2124 : : "Select the water-air shock-tube test problem ",
2125 : : R"(This keyword is used to select the Water-air shock-tube test problem.
2126 : : The purpose of this test problem is to test the correctness of the
2127 : : multi-material pressure relaxation procedure and its interface capturing
2128 : : capabilities. For more details, see
2129 : : Chiapolino, A., Saurel, R., & Nkonga, B. (2017). Sharpening diffuse
2130 : : interfaces with compressible fluids on unstructured meshes. Journal of
2131 [ + - ][ + - ]: 4936 : Computational Physics, 340, 389-417.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2132 : :
2133 : : keywords.insert({"shock_hebubble",
2134 : : "Select the shock He-bubble test problem ",
2135 : : R"(This keyword is used to select the shock He-bubble test problem. The
2136 : : purpose of this test problem is to test the correctness of the
2137 : : multi-material algorithm and its shock-interface interaction
2138 : : capabilities. For more details, see
2139 : : Quirk, J. J., & Karni, S. (1996). On the dynamics of a shock–bubble
2140 [ + - ][ + - ]: 4936 : interaction. Journal of Fluid Mechanics, 318, 129-163.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2141 : :
2142 : : keywords.insert({"underwater_ex",
2143 : : "Select the underwater explosion test problem ",
2144 : : R"(This keyword is used to select the underwater explosion test problem.
2145 : : The purpose of this test problem is to test the correctness of the
2146 : : multi-material algorithm and its interface capturing capabilities in the
2147 : : presence of strong shocks and large deformations.
2148 : : For more details, see
2149 : : Chiapolino, A., Saurel, R., & Nkonga, B. (2017). Sharpening diffuse
2150 : : interfaces with compressible fluids on unstructured meshes. Journal of
2151 [ + - ][ + - ]: 4936 : Computational Physics, 340, 389-417.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2152 : :
2153 : : keywords.insert({"shockdensity_wave",
2154 : : "Select the shock-density wave test problem ",
2155 : : R"(This keyword is used to select the shock-density wave test problem.
2156 : : THe purpose of this test problem is to assess the accuracy of high order
2157 : : method in predicting the interaction of a density wave with a shock front.
2158 : : For more details, see Yu, L., Matthias
2159 : : I. (2014). Discontinuous Galerkin method for multicomponent chemically
2160 : : reacting flows and combustion. Journal of Computational Physics, 270,
2161 [ + - ][ + - ]: 4936 : 105-137.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2162 : :
2163 : : keywords.insert({"equilinterface_advect",
2164 : : "Select the advection of equilibrium interface problem ",
2165 : : R"(This keyword is used to select the advection of equilibrium interface
2166 : : problem. This is a manufactured problem with source terms with nonlinear
2167 : : solutions near the material interface. Source terms are used to ensure
2168 [ + - ][ + - ]: 4936 : that the conservation laws are satisfied by the manufactured solution.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2169 : :
2170 : : keywords.insert({"sinewave_packet",
2171 : : "Select the advection of sinewave packet problem ",
2172 : : R"(This keyword is used to select the advection of sinewave packet
2173 [ + - ][ + - ]: 4936 : problem.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ - + ][ - - ]
2174 : :
2175 : : keywords.insert({"richtmyer_meshkov",
2176 : : "Select the Richtmyer-Meshkov instability problem ",
2177 : : R"(This keyword is used to select the Richtmyer-Meshkov instability
2178 [ + - ][ + - ]: 6170 : problem. In this problem, a shock hits a perturbed material interface.)"});
[ + - ][ + - ]
[ + - ][ - + ]
[ + - ][ + - ]
[ + - ][ - - ]
2179 : :
2180 : : // -----------------------------------------------------------------------
2181 : :
2182 : : // Initialize help: fill own keywords
2183 : : tk::ctr::Info ctrinfoFill(get< tag::cmd, tag::ctrinfo >());
2184 [ + + ]: 317138 : for (const auto& i : keywords) {
2185 [ + - ]: 315904 : ctrinfoFill.fill(i);
2186 : : }
2187 : 1234 : }
2188 : :
2189 : : //! Query scheme centering
2190 : : //! \return Scheme centering
2191 : 176 : tk::Centering centering() const
2192 [ + - ]: 352 : { return ctr::Scheme().centering( get< tag::scheme >() ); }
2193 : :
2194 : : /** @name Pack/Unpack: Serialize InputDeck object for Charm++ */
2195 : : ///@{
2196 : : //! \brief Pack/Unpack serialize member function
2197 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
2198 : : void pup( PUP::er& p ) { tk::TaggedTuple< ConfigMembers >::pup(p); }
2199 : : //! \brief Pack/Unpack serialize operator|
2200 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
2201 : : //! \param[in,out] c InputDeck object reference
2202 : : friend void operator|( PUP::er& p, InputDeck& c ) { c.pup(p); }
2203 : : //@}
2204 : :
2205 : : };
2206 : :
2207 : : } // ctr::
2208 : : } // inciter::
2209 : :
2210 : : #endif // InputDeck_h
|