xref: /honee/README.md (revision d9bb1cdb2c7cd5c15d09dfb55e4735e5ad2e7e19)
1ea10196cSJeremy L Thompson## libCEED: Navier-Stokes Example
2ea10196cSJeremy L Thompson
3ea10196cSJeremy L ThompsonThis page provides a description of the Navier-Stokes example for the libCEED library, based on PETSc.
4b9842f74SJeremy L ThompsonPETSc v3.17 or a development version of PETSc at commit 0e95d842 or later is required.
5ea10196cSJeremy L Thompson
6a515125bSLeila GhaffariThe Navier-Stokes problem solves the compressible Navier-Stokes equations in three dimensions using an explicit time integration.
7a515125bSLeila GhaffariThe state variables are mass density, momentum density, and energy density.
8ea10196cSJeremy L Thompson
9a515125bSLeila GhaffariThe main Navier-Stokes solver for libCEED is defined in [`navierstokes.c`](navierstokes.c) with different problem definitions according to the application of interest.
10ea10196cSJeremy L Thompson
11575f8106SLeila GhaffariBuild by using:
12ea10196cSJeremy L Thompson
13ea10196cSJeremy L Thompson`make`
14ea10196cSJeremy L Thompson
15575f8106SLeila Ghaffariand run with:
16ea10196cSJeremy L Thompson
17575f8106SLeila Ghaffari```
18575f8106SLeila Ghaffari./navierstokes -ceed [ceed] -problem [problem type] -degree [degree]
19575f8106SLeila Ghaffari```
20ea10196cSJeremy L Thompson
21575f8106SLeila Ghaffari## Runtime options
22ea10196cSJeremy L Thompson
23575f8106SLeila Ghaffari% inclusion-fluids-marker
24ea10196cSJeremy L Thompson
25575f8106SLeila GhaffariThe Navier-Stokes mini-app is controlled via command-line options.
26575f8106SLeila GhaffariThe following options are common among all problem types:
27ea10196cSJeremy L Thompson
28575f8106SLeila Ghaffari:::{list-table} Common Runtime Options
29575f8106SLeila Ghaffari:header-rows: 1
30ea10196cSJeremy L Thompson
31575f8106SLeila Ghaffari* - Option
32575f8106SLeila Ghaffari  - Description
33575f8106SLeila Ghaffari  - Default value
34ea10196cSJeremy L Thompson
35575f8106SLeila Ghaffari* - `-ceed`
36575f8106SLeila Ghaffari  - CEED resource specifier
37575f8106SLeila Ghaffari  - `/cpu/self/opt/blocked`
38ea10196cSJeremy L Thompson
39707de87aSJames Wright* - `-test_type`
40707de87aSJames Wright  - Run in test mode and specify whether solution (`solver`) or turbulent statistics (`turb_spanstats`) output should be verified
41707de87aSJames Wright  - `none`
42ea10196cSJeremy L Thompson
43575f8106SLeila Ghaffari* - `-compare_final_state_atol`
44575f8106SLeila Ghaffari  - Test absolute tolerance
45575f8106SLeila Ghaffari  - `1E-11`
46ea10196cSJeremy L Thompson
47575f8106SLeila Ghaffari* - `-compare_final_state_filename`
48575f8106SLeila Ghaffari  - Test filename
49575f8106SLeila Ghaffari  -
50ea10196cSJeremy L Thompson
51575f8106SLeila Ghaffari* - `-problem`
52575f8106SLeila Ghaffari  - Problem to solve (`advection`, `advection2d`, `density_current`, or `euler_vortex`)
53575f8106SLeila Ghaffari  - `density_current`
54ea10196cSJeremy L Thompson
55575f8106SLeila Ghaffari* - `-implicit`
56575f8106SLeila Ghaffari  - Use implicit time integartor formulation
57575f8106SLeila Ghaffari  -
58ea10196cSJeremy L Thompson
59575f8106SLeila Ghaffari* - `-degree`
60575f8106SLeila Ghaffari  - Polynomial degree of tensor product basis (must be >= 1)
61575f8106SLeila Ghaffari  - `1`
62ea10196cSJeremy L Thompson
63c1680e98SJeremy L Thompson* - `-q_extra`
64575f8106SLeila Ghaffari  - Number of extra quadrature points
651219168aSLeila Ghaffari  - `0`
66ea10196cSJeremy L Thompson
67852e5969SJed Brown* - `-ts_monitor_solution`
68852e5969SJed Brown  - PETSc output format, such as `cgns:output-%d.cgns` (requires PETSc `--download-cgns`)
69852e5969SJed Brown  -
70ea10196cSJeremy L Thompson
71852e5969SJed Brown* - `-ts_monitor_solution_interval`
72852e5969SJed Brown  - Number of time steps between visualization output frames.
73852e5969SJed Brown  - `1`
74852e5969SJed Brown
75852e5969SJed Brown* - `-viewer_cgns_batch_size`
76852e5969SJed Brown  - Number of frames written per CGNS file if the CGNS file name includes a format specifier (`%d`).
77852e5969SJed Brown  - `20`
78852e5969SJed Brown
79852e5969SJed Brown* - `-checkpoint_interval`
80852e5969SJed Brown  - Number of steps between writing binary checkpoints. `0` has no output, `-1` outputs final state only
81575f8106SLeila Ghaffari  - `10`
82ea10196cSJeremy L Thompson
83852e5969SJed Brown* - `-checkpoint_vtk`
84852e5969SJed Brown  - Checkpoints include VTK (`*.vtu`) files for visualization. Consider `-ts_monitor_solution`instead.
85852e5969SJed Brown  - `false`
86852e5969SJed Brown
87852e5969SJed Brown* - `-viz_refine`
88852e5969SJed Brown  - Use regular refinement for VTK visualization
89852e5969SJed Brown  - `0`
90852e5969SJed Brown
91575f8106SLeila Ghaffari* - `-output_dir`
92852e5969SJed Brown  - Output directory for binary checkpoints and VTK files (if enabled).
93575f8106SLeila Ghaffari  - `.`
94ea10196cSJeremy L Thompson
9591a36801SJames Wright* - `-output_add_stepnum2bin`
9691a36801SJames Wright  - Whether to add step numbers to output binary files
9791a36801SJames Wright  - `false`
9891a36801SJames Wright
9991a36801SJames Wright* - `-continue`
10091a36801SJames Wright  - Continue from previous solution (input is step number of previous solution)
10191a36801SJames Wright  - `0`
10291a36801SJames Wright
10391a36801SJames Wright* - `-continue_filename`
10491a36801SJames Wright  - Path to solution binary file from which to continue from
10591a36801SJames Wright  - `[output_dir]/ns-solution.bin`
10691a36801SJames Wright
10791a36801SJames Wright* - `-continue_time_filename`
1089293eaa1SJed Brown  - Path to time stamp binary file (only for legacy checkpoints)
10991a36801SJames Wright  - `[output_dir]/ns-time.bin`
11091a36801SJames Wright
111f4277be3SLeila Ghaffari* - `-bc_wall`
112f4277be3SLeila Ghaffari  - Use wall boundary conditions on this list of faces
113f4277be3SLeila Ghaffari  -
114f4277be3SLeila Ghaffari
115f4277be3SLeila Ghaffari* - `-wall_comps`
116f4277be3SLeila Ghaffari  - An array of constrained component numbers for wall BCs
117f4277be3SLeila Ghaffari  -
118f4277be3SLeila Ghaffari
119f4277be3SLeila Ghaffari* - `-bc_slip_x`
120f4277be3SLeila Ghaffari  - Use slip boundary conditions, for the x component, on this list of faces
121f4277be3SLeila Ghaffari  -
122f4277be3SLeila Ghaffari
123f4277be3SLeila Ghaffari* - `-bc_slip_y`
124f4277be3SLeila Ghaffari  - Use slip boundary conditions, for the y component, on this list of faces
125f4277be3SLeila Ghaffari  -
126f4277be3SLeila Ghaffari
127f4277be3SLeila Ghaffari* - `-bc_slip_z`
128f4277be3SLeila Ghaffari  - Use slip boundary conditions, for the z component, on this list of faces
129f4277be3SLeila Ghaffari  -
130f4277be3SLeila Ghaffari
131f4277be3SLeila Ghaffari* - `-bc_inflow`
132f4277be3SLeila Ghaffari  - Use inflow boundary conditions on this list of faces
133f4277be3SLeila Ghaffari  -
134f4277be3SLeila Ghaffari
135f4277be3SLeila Ghaffari* - `-bc_outflow`
136f4277be3SLeila Ghaffari  - Use outflow boundary conditions on this list of faces
137f4277be3SLeila Ghaffari  -
1388ef11c93SLeila Ghaffari
13979b17980SJames Wright* - `-bc_freestream`
14079b17980SJames Wright  - Use freestream boundary conditions on this list of faces
14179b17980SJames Wright  -
14279b17980SJames Wright
143c931fa59SJames Wright* - `-ts_monitor_turbulence_spanstats_collect_interval`
144a8ce54bfSJames Wright  - Number of timesteps between statistics collection
145a8ce54bfSJames Wright  - `1`
146a8ce54bfSJames Wright
147c931fa59SJames Wright* - `-ts_monitor_turbulence_spanstats_viewer`
148c931fa59SJames Wright  - Sets the PetscViewer for the statistics file writing, such as `cgns:output-%d.cgns` (requires PETSc `--download-cgns`). Also turns the statistics collection on.
149109cd75bSJames Wright  -
150109cd75bSJames Wright
151c931fa59SJames Wright* - `-ts_monitor_turbulence_spanstats_viewer_interval`
152a8ce54bfSJames Wright  - Number of timesteps between statistics file writing (`-1` means only at end of run)
153a8ce54bfSJames Wright  - `-1`
154a8ce54bfSJames Wright
155c931fa59SJames Wright* - `-ts_monitor_turbulence_spanstats_viewer_cgns_batch_size`
156109cd75bSJames Wright  - Number of frames written per CGNS file if the CGNS file name includes a format specifier (`%d`).
157109cd75bSJames Wright  - `20`
158109cd75bSJames Wright
159c5e9980aSAdeleke O. Bankole* - `-ts_monitor_wall_force`
160c5e9980aSAdeleke O. Bankole  - Viewer for the force on each no-slip wall, e.g., `ascii:force.csv:ascii_csv` to write a CSV file.
161c5e9980aSAdeleke O. Bankole  -
162c5e9980aSAdeleke O. Bankole
163575f8106SLeila Ghaffari* - `-snes_view`
164575f8106SLeila Ghaffari  - View PETSc `SNES` nonlinear solver configuration
165575f8106SLeila Ghaffari  -
1668ef11c93SLeila Ghaffari
167575f8106SLeila Ghaffari* - `-log_view`
168575f8106SLeila Ghaffari  - View PETSc performance log
169575f8106SLeila Ghaffari  -
170ea10196cSJeremy L Thompson
171575f8106SLeila Ghaffari* - `-help`
172575f8106SLeila Ghaffari  - View comprehensive information about run-time options
173575f8106SLeila Ghaffari  -
174575f8106SLeila Ghaffari:::
175ea10196cSJeremy L Thompson
17679b17980SJames WrightFor the case of a square/cubic mesh, the list of face indices to be used with `-bc_wall`, `bc_inflow`, `bc_outflow`, `bc_freestream`  and/or `-bc_slip_x`, `-bc_slip_y`, and `-bc_slip_z` are:
177f4277be3SLeila Ghaffari
178bb8a0c61SJames Wright:::{list-table} 2D Face ID Labels
179bb8a0c61SJames Wright:header-rows: 1
180bb8a0c61SJames Wright* - PETSc Face Name
181bb8a0c61SJames Wright  - Cartesian direction
182bb8a0c61SJames Wright  - Face ID
183bb8a0c61SJames Wright
184bb8a0c61SJames Wright* - faceMarkerBottom
185bb8a0c61SJames Wright  - -z
186bb8a0c61SJames Wright  - 1
187bb8a0c61SJames Wright
188bb8a0c61SJames Wright* - faceMarkerRight
189bb8a0c61SJames Wright  - +x
190bb8a0c61SJames Wright  - 2
191bb8a0c61SJames Wright
192bb8a0c61SJames Wright* - faceMarkerTop
193bb8a0c61SJames Wright  - +z
194bb8a0c61SJames Wright  - 3
195bb8a0c61SJames Wright
196bb8a0c61SJames Wright* - faceMarkerLeft
197bb8a0c61SJames Wright  - -x
198bb8a0c61SJames Wright  - 4
199bb8a0c61SJames Wright:::
200bb8a0c61SJames Wright
201c52f2c1bSLeila Ghaffari:::{list-table} 3D Face ID Labels
202bb8a0c61SJames Wright:header-rows: 1
203bb8a0c61SJames Wright* - PETSc Face Name
204bb8a0c61SJames Wright  - Cartesian direction
205bb8a0c61SJames Wright  - Face ID
206bb8a0c61SJames Wright
207bb8a0c61SJames Wright* - faceMarkerBottom
208bb8a0c61SJames Wright  - -z
209bb8a0c61SJames Wright  - 1
210bb8a0c61SJames Wright
211bb8a0c61SJames Wright* - faceMarkerTop
212bb8a0c61SJames Wright  - +z
213bb8a0c61SJames Wright  - 2
214bb8a0c61SJames Wright
215bb8a0c61SJames Wright* - faceMarkerFront
216bb8a0c61SJames Wright  - -y
217bb8a0c61SJames Wright  - 3
218bb8a0c61SJames Wright
219bb8a0c61SJames Wright* - faceMarkerBack
220bb8a0c61SJames Wright  - +y
221bb8a0c61SJames Wright  - 4
222bb8a0c61SJames Wright
223bb8a0c61SJames Wright* - faceMarkerRight
224bb8a0c61SJames Wright  - +x
225bb8a0c61SJames Wright  - 5
226bb8a0c61SJames Wright
227bb8a0c61SJames Wright* - faceMarkerLeft
228bb8a0c61SJames Wright  - -x
229bb8a0c61SJames Wright  - 6
230bb8a0c61SJames Wright:::
231f4277be3SLeila Ghaffari
232c8c30d87SJed Brown### Boundary conditions
233c8c30d87SJed Brown
234c8c30d87SJed BrownBoundary conditions for compressible viscous flows are notoriously tricky. Here we offer some recommendations
235c8c30d87SJed Brown
236c8c30d87SJed Brown#### Inflow
237c8c30d87SJed Brown
238c8c30d87SJed BrownIf in a region where the flow velocity is known (e.g., away from viscous walls), use `bc_freestream`, which solves a Riemann problem and can handle inflow and outflow (simultaneously and dynamically).
239c8c30d87SJed BrownIt is stable and the least reflective boundary condition for acoustics.
240c8c30d87SJed Brown
241c8c30d87SJed BrownIf near a viscous wall, you may want a specified inflow profile.
242c8c30d87SJed BrownUse `bc_inflow` and see {ref}`example-blasius` and discussion of synthetic turbulence generation for ways to analytically generate developed inflow profiles.
243c8c30d87SJed BrownThese conditions may be either weak or strong, with the latter specifying velocity and temperature as essential boundary conditions and evaluating a boundary integral for the mass flux.
244c8c30d87SJed BrownThe strong approach gives sharper resolution of velocity structures.
245c8c30d87SJed BrownWe have described the primitive variable formulation here; the conservative variants are similar, but not equivalent.
246c8c30d87SJed Brown
247a899b243SJames Wright#### Outflow
248c8c30d87SJed Brown
249c8c30d87SJed BrownIf you know the complete exterior state, `bc_freestream` is the least reflective boundary condition, but is disruptive to viscous flow structures.
250c8c30d87SJed BrownIf thermal anomalies must exit the domain, the Riemann solver must resolve the contact wave to avoid reflections.
251c8c30d87SJed BrownThe default Riemann solver, HLLC, is sufficient in this regard while the simpler HLL converts thermal structures exiting the domain into grid-scale reflecting acoustics.
252c8c30d87SJed Brown
253c8c30d87SJed BrownIf acoustic reflections are not a concern and/or the flow is impacted by walls or interior structures that you wish to resolve to near the boundary, choose `bc_outflow`. This condition (with default `outflow_type: riemann`) is stable for both inflow and outflow, so can be used in areas that have recirculation and lateral boundaries in which the flow fluctuates.
254c8c30d87SJed Brown
255c8c30d87SJed BrownThe simpler `bc_outflow` variant, `outflow_type: pressure`, requires that the flow be a strict outflow (or the problem becomes ill-posed and the solver will diverge).
256c8c30d87SJed BrownIn our experience, `riemann` is slightly less reflective but produces similar flows in cases of strict outflow.
257c8c30d87SJed BrownThe `pressure` variant is retained to facilitate comparison with other codes, such as PHASTA-C, but we recommend `riemann` for general use.
258c8c30d87SJed Brown
259a899b243SJames Wright#### Periodicity
260c8c30d87SJed Brown
261c8c30d87SJed BrownPETSc provides two ways to specify periodicity:
262c8c30d87SJed Brown
263c8c30d87SJed Brown1. Topological periodicity, in which the donor and receiver dofs are the same, obtained using:
264c8c30d87SJed Brown
265c8c30d87SJed Brown```yaml
266c8c30d87SJed Browndm_plex:
267c8c30d87SJed Brown  shape: box
268c8c30d87SJed Brown  box_faces: 10,12,4
269c8c30d87SJed Brown  box_bd: none,none,periodic
270c8c30d87SJed Brown```
271c8c30d87SJed Brown
272c5e9980aSAdeleke O. BankoleThe coordinates for such cases are stored as a new field with special cell-based indexing to enable wrapping through the boundary.
273c5e9980aSAdeleke O. BankoleThis choice of coordinates prevents evaluating boundary integrals that cross the periodicity, such as for the outflow Riemann problem in the presence of spanwise periodicity.
274c5e9980aSAdeleke O. Bankole
275c5e9980aSAdeleke O. Bankole2. Isoperiodicity, in which the donor and receiver dofs are distinct in local vectors. This is obtained using `zbox`, as in:
276c5e9980aSAdeleke O. Bankole
277c5e9980aSAdeleke O. Bankole```yaml
278c5e9980aSAdeleke O. Bankoledm_plex:
279c5e9980aSAdeleke O. Bankole  shape: zbox
280c5e9980aSAdeleke O. Bankole  box_faces: 10,12,4
281c5e9980aSAdeleke O. Bankole  box_bd: none,none,periodic
282c5e9980aSAdeleke O. Bankole```
283c5e9980aSAdeleke O. Bankole
284c5e9980aSAdeleke O. BankoleIsoperiodicity enables standard boundary integrals, and is recommended for general use.
285c5e9980aSAdeleke O. BankoleAt the time of this writing, it only supports one direction of periodicity.
286c5e9980aSAdeleke O. BankoleThe `zbox` method uses [Z-ordering](https://en.wikipedia.org/wiki/Z-order_curve) to construct the mesh in parallel and provide an adequate initial partition, which makes it higher performance and avoids needing a partitioning package.
287c8c30d87SJed Brown
288af8870a9STimothy Aiken### Advection
289af8870a9STimothy Aiken
290b46bfc5eSJeremy L ThompsonFor testing purposes, there is a reduced mode for pure advection, which holds density $\rho$ and momentum density $\rho \bm u$ constant while advecting "total energy density" $E$.
291b46bfc5eSJeremy L ThompsonThese are available in 2D and 3D.
292af8870a9STimothy Aiken
293af8870a9STimothy Aiken#### 2D advection
294af8870a9STimothy Aiken
295575f8106SLeila GhaffariFor the 2D advection problem, the following additional command-line options are available:
296ea10196cSJeremy L Thompson
297575f8106SLeila Ghaffari:::{list-table} Advection2D Runtime Options
298575f8106SLeila Ghaffari:header-rows: 1
2998ef11c93SLeila Ghaffari
300575f8106SLeila Ghaffari* - Option
301575f8106SLeila Ghaffari  - Description
302575f8106SLeila Ghaffari  - Default value
303575f8106SLeila Ghaffari  - Unit
3048ef11c93SLeila Ghaffari
305575f8106SLeila Ghaffari* - `-rc`
306575f8106SLeila Ghaffari  - Characteristic radius of thermal bubble
307575f8106SLeila Ghaffari  - `1000`
308575f8106SLeila Ghaffari  - `m`
3098ef11c93SLeila Ghaffari
310575f8106SLeila Ghaffari* - `-units_meter`
311575f8106SLeila Ghaffari  - 1 meter in scaled length units
312575f8106SLeila Ghaffari  - `1E-2`
313575f8106SLeila Ghaffari  -
3148ef11c93SLeila Ghaffari
315575f8106SLeila Ghaffari* - `-units_second`
316575f8106SLeila Ghaffari  - 1 second in scaled time units
317575f8106SLeila Ghaffari  - `1E-2`
318575f8106SLeila Ghaffari  -
3198ef11c93SLeila Ghaffari
320575f8106SLeila Ghaffari* - `-units_kilogram`
321575f8106SLeila Ghaffari  - 1 kilogram in scaled mass units
322575f8106SLeila Ghaffari  - `1E-6`
323575f8106SLeila Ghaffari  -
324a515125bSLeila Ghaffari
325575f8106SLeila Ghaffari* - `-strong_form`
326575f8106SLeila Ghaffari  - Strong (1) or weak/integrated by parts (0) residual
327575f8106SLeila Ghaffari  - `0`
328575f8106SLeila Ghaffari  -
329a515125bSLeila Ghaffari
330575f8106SLeila Ghaffari* - `-stab`
331575f8106SLeila Ghaffari  - Stabilization method (`none`, `su`, or `supg`)
332575f8106SLeila Ghaffari  - `none`
333575f8106SLeila Ghaffari  -
334a515125bSLeila Ghaffari
335575f8106SLeila Ghaffari* - `-CtauS`
336575f8106SLeila Ghaffari  - Scale coefficient for stabilization tau (nondimensional)
337575f8106SLeila Ghaffari  - `0`
338575f8106SLeila Ghaffari  -
339a515125bSLeila Ghaffari
340575f8106SLeila Ghaffari* - `-wind_type`
341575f8106SLeila Ghaffari  - Wind type in Advection (`rotation` or `translation`)
342575f8106SLeila Ghaffari  - `rotation`
343575f8106SLeila Ghaffari  -
344a515125bSLeila Ghaffari
345575f8106SLeila Ghaffari* - `-wind_translation`
346575f8106SLeila Ghaffari  - Constant wind vector when `-wind_type translation`
347575f8106SLeila Ghaffari  - `1,0,0`
348575f8106SLeila Ghaffari  -
3498ef11c93SLeila Ghaffari
350575f8106SLeila Ghaffari* - `-E_wind`
351575f8106SLeila Ghaffari  - Total energy of inflow wind when `-wind_type translation`
352575f8106SLeila Ghaffari  - `1E6`
353575f8106SLeila Ghaffari  - `J`
354575f8106SLeila Ghaffari:::
355268c6924SLeila Ghaffari
356575f8106SLeila GhaffariAn example of the `rotation` mode can be run with:
357268c6924SLeila Ghaffari
358575f8106SLeila Ghaffari```
359f4277be3SLeila Ghaffari./navierstokes -problem advection2d -dm_plex_box_faces 20,20 -dm_plex_box_lower 0,0 -dm_plex_box_upper 1000,1000 -bc_wall 1,2,3,4 -wall_comps 4 -wind_type rotation -implicit -stab supg
360575f8106SLeila Ghaffari```
361268c6924SLeila Ghaffari
362575f8106SLeila Ghaffariand the `translation` mode with:
363268c6924SLeila Ghaffari
364575f8106SLeila Ghaffari```
365f4277be3SLeila Ghaffari./navierstokes -problem advection2d -dm_plex_box_faces 20,20 -dm_plex_box_lower 0,0 -dm_plex_box_upper 1000,1000 -units_meter 1e-4 -wind_type translation -wind_translation 1,-.5 -bc_inflow 1,2,3,4
366575f8106SLeila Ghaffari```
367f4277be3SLeila GhaffariNote the lengths in `-dm_plex_box_upper` are given in meters, and will be nondimensionalized according to `-units_meter`.
368268c6924SLeila Ghaffari
369af8870a9STimothy Aiken#### 3D advection
370af8870a9STimothy Aiken
371575f8106SLeila GhaffariFor the 3D advection problem, the following additional command-line options are available:
372268c6924SLeila Ghaffari
373575f8106SLeila Ghaffari:::{list-table} Advection3D Runtime Options
374575f8106SLeila Ghaffari:header-rows: 1
375268c6924SLeila Ghaffari
376575f8106SLeila Ghaffari* - Option
377575f8106SLeila Ghaffari  - Description
378575f8106SLeila Ghaffari  - Default value
379575f8106SLeila Ghaffari  - Unit
380268c6924SLeila Ghaffari
381575f8106SLeila Ghaffari* - `-rc`
382575f8106SLeila Ghaffari  - Characteristic radius of thermal bubble
383575f8106SLeila Ghaffari  - `1000`
384575f8106SLeila Ghaffari  - `m`
385268c6924SLeila Ghaffari
386575f8106SLeila Ghaffari* - `-units_meter`
387575f8106SLeila Ghaffari  - 1 meter in scaled length units
388575f8106SLeila Ghaffari  - `1E-2`
389575f8106SLeila Ghaffari  -
390268c6924SLeila Ghaffari
391575f8106SLeila Ghaffari* - `-units_second`
392575f8106SLeila Ghaffari  - 1 second in scaled time units
393575f8106SLeila Ghaffari  - `1E-2`
394575f8106SLeila Ghaffari  -
395268c6924SLeila Ghaffari
396575f8106SLeila Ghaffari* - `-units_kilogram`
397575f8106SLeila Ghaffari  - 1 kilogram in scaled mass units
398575f8106SLeila Ghaffari  - `1E-6`
399575f8106SLeila Ghaffari  -
400268c6924SLeila Ghaffari
401575f8106SLeila Ghaffari* - `-strong_form`
402575f8106SLeila Ghaffari  - Strong (1) or weak/integrated by parts (0) residual
403575f8106SLeila Ghaffari  - `0`
404575f8106SLeila Ghaffari  -
405268c6924SLeila Ghaffari
406575f8106SLeila Ghaffari* - `-stab`
407575f8106SLeila Ghaffari  - Stabilization method (`none`, `su`, or `supg`)
408575f8106SLeila Ghaffari  - `none`
409575f8106SLeila Ghaffari  -
410268c6924SLeila Ghaffari
411575f8106SLeila Ghaffari* - `-CtauS`
412575f8106SLeila Ghaffari  - Scale coefficient for stabilization tau (nondimensional)
413575f8106SLeila Ghaffari  - `0`
414575f8106SLeila Ghaffari  -
415268c6924SLeila Ghaffari
416575f8106SLeila Ghaffari* - `-wind_type`
417575f8106SLeila Ghaffari  - Wind type in Advection (`rotation` or `translation`)
418575f8106SLeila Ghaffari  - `rotation`
419575f8106SLeila Ghaffari  -
420268c6924SLeila Ghaffari
421575f8106SLeila Ghaffari* - `-wind_translation`
422575f8106SLeila Ghaffari  - Constant wind vector when `-wind_type translation`
423575f8106SLeila Ghaffari  - `1,0,0`
424575f8106SLeila Ghaffari  -
425268c6924SLeila Ghaffari
426575f8106SLeila Ghaffari* - `-E_wind`
427575f8106SLeila Ghaffari  - Total energy of inflow wind when `-wind_type translation`
428575f8106SLeila Ghaffari  - `1E6`
429575f8106SLeila Ghaffari  - `J`
430268c6924SLeila Ghaffari
431575f8106SLeila Ghaffari* - `-bubble_type`
432575f8106SLeila Ghaffari  - `sphere` (3D) or `cylinder` (2D)
433a899b243SJames Wright  - `sphere`
434575f8106SLeila Ghaffari  -
435268c6924SLeila Ghaffari
436575f8106SLeila Ghaffari* - `-bubble_continuity`
437575f8106SLeila Ghaffari  - `smooth`, `back_sharp`, or `thick`
438575f8106SLeila Ghaffari  - `smooth`
439575f8106SLeila Ghaffari  -
440575f8106SLeila Ghaffari:::
441ea10196cSJeremy L Thompson
442575f8106SLeila GhaffariAn example of the `rotation` mode can be run with:
443ea10196cSJeremy L Thompson
444575f8106SLeila Ghaffari```
445f4277be3SLeila Ghaffari./navierstokes -problem advection -dm_plex_box_faces 10,10,10 -dm_plex_dim 3 -dm_plex_box_lower 0,0,0 -dm_plex_box_upper 8000,8000,8000 -bc_wall 1,2,3,4,5,6 -wall_comps 4 -wind_type rotation -implicit -stab su
446575f8106SLeila Ghaffari```
447ea10196cSJeremy L Thompson
448575f8106SLeila Ghaffariand the `translation` mode with:
449ea10196cSJeremy L Thompson
450575f8106SLeila Ghaffari```
451f4277be3SLeila Ghaffari./navierstokes -problem advection -dm_plex_box_faces 10,10,10 -dm_plex_dim 3 -dm_plex_box_lower 0,0,0 -dm_plex_box_upper 8000,8000,8000 -wind_type translation -wind_translation .5,-1,0 -bc_inflow 1,2,3,4,5,6
452575f8106SLeila Ghaffari```
453ea10196cSJeremy L Thompson
454af8870a9STimothy Aiken### Inviscid Ideal Gas
455af8870a9STimothy Aiken
456af8870a9STimothy Aiken#### Isentropic Euler vortex
457af8870a9STimothy Aiken
458575f8106SLeila GhaffariFor the Isentropic Vortex problem, the following additional command-line options are available:
459ea10196cSJeremy L Thompson
460575f8106SLeila Ghaffari:::{list-table} Isentropic Vortex Runtime Options
461575f8106SLeila Ghaffari:header-rows: 1
462ea10196cSJeremy L Thompson
463575f8106SLeila Ghaffari* - Option
464575f8106SLeila Ghaffari  - Description
465575f8106SLeila Ghaffari  - Default value
466575f8106SLeila Ghaffari  - Unit
467ea10196cSJeremy L Thompson
468575f8106SLeila Ghaffari* - `-center`
469575f8106SLeila Ghaffari  - Location of vortex center
470575f8106SLeila Ghaffari  - `(lx,ly,lz)/2`
471575f8106SLeila Ghaffari  - `(m,m,m)`
472ea10196cSJeremy L Thompson
473575f8106SLeila Ghaffari* - `-units_meter`
474575f8106SLeila Ghaffari  - 1 meter in scaled length units
475575f8106SLeila Ghaffari  - `1E-2`
476575f8106SLeila Ghaffari  -
477ea10196cSJeremy L Thompson
478575f8106SLeila Ghaffari* - `-units_second`
479575f8106SLeila Ghaffari  - 1 second in scaled time units
480575f8106SLeila Ghaffari  - `1E-2`
481575f8106SLeila Ghaffari  -
482ea10196cSJeremy L Thompson
483575f8106SLeila Ghaffari* - `-mean_velocity`
484575f8106SLeila Ghaffari  - Background velocity vector
485575f8106SLeila Ghaffari  - `(1,1,0)`
486575f8106SLeila Ghaffari  -
487ea10196cSJeremy L Thompson
488575f8106SLeila Ghaffari* - `-vortex_strength`
489575f8106SLeila Ghaffari  - Strength of vortex < 10
490575f8106SLeila Ghaffari  - `5`
491575f8106SLeila Ghaffari  -
492d8a22b9eSJed Brown
493d8a22b9eSJed Brown* - `-c_tau`
494d8a22b9eSJed Brown  - Stabilization constant
495f821ee77SLeila Ghaffari  - `0.5`
496d8a22b9eSJed Brown  -
497575f8106SLeila Ghaffari:::
498ea10196cSJeremy L Thompson
499575f8106SLeila GhaffariThis problem can be run with:
500ea10196cSJeremy L Thompson
501575f8106SLeila Ghaffari```
502f4277be3SLeila Ghaffari./navierstokes -problem euler_vortex -dm_plex_box_faces 20,20,1 -dm_plex_box_lower 0,0,0 -dm_plex_box_upper 1000,1000,50 -dm_plex_dim 3 -bc_inflow 4,6 -bc_outflow 3,5 -bc_slip_z 1,2 -mean_velocity .5,-.8,0.
503575f8106SLeila Ghaffari```
504ea10196cSJeremy L Thompson
505af8870a9STimothy Aiken#### Sod shock tube
506af8870a9STimothy Aiken
507af8870a9STimothy AikenFor the Shock Tube problem, the following additional command-line options are available:
508af8870a9STimothy Aiken
509af8870a9STimothy Aiken:::{list-table} Shock Tube Runtime Options
510af8870a9STimothy Aiken:header-rows: 1
511af8870a9STimothy Aiken
512af8870a9STimothy Aiken* - Option
513af8870a9STimothy Aiken  - Description
514af8870a9STimothy Aiken  - Default value
515af8870a9STimothy Aiken  - Unit
516af8870a9STimothy Aiken
517af8870a9STimothy Aiken* - `-units_meter`
518af8870a9STimothy Aiken  - 1 meter in scaled length units
519af8870a9STimothy Aiken  - `1E-2`
520af8870a9STimothy Aiken  -
521af8870a9STimothy Aiken
522af8870a9STimothy Aiken* - `-units_second`
523af8870a9STimothy Aiken  - 1 second in scaled time units
524af8870a9STimothy Aiken  - `1E-2`
525af8870a9STimothy Aiken  -
526af8870a9STimothy Aiken
527af8870a9STimothy Aiken* - `-yzb`
528af8870a9STimothy Aiken  - Use YZB discontinuity capturing
529af8870a9STimothy Aiken  - `none`
530af8870a9STimothy Aiken  -
531af8870a9STimothy Aiken
532af8870a9STimothy Aiken* - `-stab`
533af8870a9STimothy Aiken  - Stabilization method (`none`, `su`, or `supg`)
534af8870a9STimothy Aiken  - `none`
535af8870a9STimothy Aiken  -
536af8870a9STimothy Aiken:::
537af8870a9STimothy Aiken
538af8870a9STimothy AikenThis problem can be run with:
539af8870a9STimothy Aiken
540af8870a9STimothy Aiken```
541af8870a9STimothy Aiken./navierstokes -problem shocktube -yzb -stab su -bc_slip_z 3,4 -bc_slip_y 1,2 -bc_wall 5,6 -dm_plex_dim 3 -dm_plex_box_lower 0,0,0 -dm_plex_box_upper 1000,100,100 -dm_plex_box_faces 200,1,1 -units_second 0.1
542af8870a9STimothy Aiken```
543af8870a9STimothy Aiken
544af8870a9STimothy Aiken### Newtonian viscosity, Ideal Gas
545af8870a9STimothy Aiken
546bb8a0c61SJames WrightFor the Density Current, Channel, and Blasius problems, the following common command-line options are available:
547ea10196cSJeremy L Thompson
548bb8a0c61SJames Wright:::{list-table} Newtonian Ideal Gas problems Runtime Options
549575f8106SLeila Ghaffari:header-rows: 1
550ea10196cSJeremy L Thompson
551575f8106SLeila Ghaffari* - Option
552575f8106SLeila Ghaffari  - Description
553575f8106SLeila Ghaffari  - Default value
554575f8106SLeila Ghaffari  - Unit
555ea10196cSJeremy L Thompson
556575f8106SLeila Ghaffari* - `-units_meter`
557575f8106SLeila Ghaffari  - 1 meter in scaled length units
558bb8a0c61SJames Wright  - `1`
559575f8106SLeila Ghaffari  -
560ea10196cSJeremy L Thompson
561575f8106SLeila Ghaffari* - `-units_second`
562575f8106SLeila Ghaffari  - 1 second in scaled time units
563bb8a0c61SJames Wright  - `1`
564575f8106SLeila Ghaffari  -
565ea10196cSJeremy L Thompson
566575f8106SLeila Ghaffari* - `-units_kilogram`
567575f8106SLeila Ghaffari  - 1 kilogram in scaled mass units
568bb8a0c61SJames Wright  - `1`
569575f8106SLeila Ghaffari  -
570ea10196cSJeremy L Thompson
571575f8106SLeila Ghaffari* - `-units_Kelvin`
572575f8106SLeila Ghaffari  - 1 Kelvin in scaled temperature units
573575f8106SLeila Ghaffari  - `1`
574575f8106SLeila Ghaffari  -
575ea10196cSJeremy L Thompson
576575f8106SLeila Ghaffari* - `-stab`
577575f8106SLeila Ghaffari  - Stabilization method (`none`, `su`, or `supg`)
578575f8106SLeila Ghaffari  - `none`
579575f8106SLeila Ghaffari  -
580ea10196cSJeremy L Thompson
581d8a22b9eSJed Brown* - `-c_tau`
582bb8a0c61SJames Wright  - Stabilization constant, $c_\tau$
583f821ee77SLeila Ghaffari  - `0.5`
584d8a22b9eSJed Brown  -
585d8a22b9eSJed Brown
586bb8a0c61SJames Wright* - `-Ctau_t`
587bb8a0c61SJames Wright  - Stabilization time constant, $C_t$
588bb8a0c61SJames Wright  - `1.0`
589bb8a0c61SJames Wright  -
590ea10196cSJeremy L Thompson
591bb8a0c61SJames Wright* - `-Ctau_v`
592bb8a0c61SJames Wright  - Stabilization viscous constant, $C_v$
593b5786772SLeila Ghaffari  - `36, 60, 128 for degree = 1, 2, 3`
594bb8a0c61SJames Wright  -
595ea10196cSJeremy L Thompson
596bb8a0c61SJames Wright* - `-Ctau_C`
597bb8a0c61SJames Wright  - Stabilization continuity constant, $C_c$
598bb8a0c61SJames Wright  - `1.0`
599bb8a0c61SJames Wright  -
600ea10196cSJeremy L Thompson
601bb8a0c61SJames Wright* - `-Ctau_M`
602bb8a0c61SJames Wright  - Stabilization momentum constant, $C_m$
603bb8a0c61SJames Wright  - `1.0`
604bb8a0c61SJames Wright  -
605bb8a0c61SJames Wright
606bb8a0c61SJames Wright* - `-Ctau_E`
607bb8a0c61SJames Wright  - Stabilization energy constant, $C_E$
608bb8a0c61SJames Wright  - `1.0`
609bb8a0c61SJames Wright  -
610ea10196cSJeremy L Thompson
611575f8106SLeila Ghaffari* - `-cv`
612575f8106SLeila Ghaffari  - Heat capacity at constant volume
613575f8106SLeila Ghaffari  - `717`
614575f8106SLeila Ghaffari  - `J/(kg K)`
615ea10196cSJeremy L Thompson
616575f8106SLeila Ghaffari* - `-cp`
617575f8106SLeila Ghaffari  - Heat capacity at constant pressure
618575f8106SLeila Ghaffari  - `1004`
619575f8106SLeila Ghaffari  - `J/(kg K)`
620ea10196cSJeremy L Thompson
621*d9bb1cdbSJames Wright* - `-gravity`
622*d9bb1cdbSJames Wright  - Gravitational acceleration vector
623*d9bb1cdbSJames Wright  - `0,0,0`
624575f8106SLeila Ghaffari  - `m/s^2`
625ea10196cSJeremy L Thompson
626575f8106SLeila Ghaffari* - `-lambda`
627575f8106SLeila Ghaffari  - Stokes hypothesis second viscosity coefficient
628575f8106SLeila Ghaffari  - `-2/3`
629575f8106SLeila Ghaffari  -
630ea10196cSJeremy L Thompson
631575f8106SLeila Ghaffari* - `-mu`
632575f8106SLeila Ghaffari  - Shear dynamic viscosity coefficient
633*d9bb1cdbSJames Wright  - `1.8e-5`
634575f8106SLeila Ghaffari  -  `Pa s`
635a515125bSLeila Ghaffari
636575f8106SLeila Ghaffari* - `-k`
637575f8106SLeila Ghaffari  - Thermal conductivity
638575f8106SLeila Ghaffari  - `0.02638`
639575f8106SLeila Ghaffari  - `W/(m K)`
640edd152dcSJed Brown
641edd152dcSJed Brown* - `-newtonian_unit_tests`
642edd152dcSJed Brown  - Developer option to test properties
643edd152dcSJed Brown  - `false`
644edd152dcSJed Brown  - boolean
645aa61a79eSJames Wright
646ba952bfeSJames Wright* - `-state_var`
647ba952bfeSJames Wright  - State variables to solve solution with. `conservative` ($\rho, \rho \bm{u}, \rho e$) or `primitive` ($P, \bm{u}, T$)
648ba952bfeSJames Wright  - `conservative`
649ba952bfeSJames Wright  - string
650e7754af5SKenneth E. Jansen
651e7754af5SKenneth E. Jansen* - `-idl_decay_time`
652e7754af5SKenneth E. Jansen  - Characteristic timescale of the pressure deviance decay. The timestep is good starting point
653e7754af5SKenneth E. Jansen  - `-1` (disabled)
654e7754af5SKenneth E. Jansen  - `s`
655e7754af5SKenneth E. Jansen
656e7754af5SKenneth E. Jansen* - `-idl_start`
657e7754af5SKenneth E. Jansen  - Start of IDL in the x direction
658e7754af5SKenneth E. Jansen  - `0`
659e7754af5SKenneth E. Jansen  - `m`
660e7754af5SKenneth E. Jansen
661e7754af5SKenneth E. Jansen* - `-idl_length`
662e7754af5SKenneth E. Jansen  - Length of IDL in the positive x direction
663e7754af5SKenneth E. Jansen  - `0`
664e7754af5SKenneth E. Jansen  - `m`
665e7754af5SKenneth E. Jansen
666fb9b2996SJames Wright* - `-sgs_model_type`
667fb9b2996SJames Wright  - Type of subgrid stress model to use. Currently only `data_driven` is available
668fb9b2996SJames Wright  - `none`
669fb9b2996SJames Wright  - string
670fb9b2996SJames Wright
671fb9b2996SJames Wright* - `-sgs_model_dd_leakyrelu_alpha`
672fb9b2996SJames Wright  - Slope parameter for Leaky ReLU activation function. `0` corresponds to normal ReLU
673fb9b2996SJames Wright  - 0
674fb9b2996SJames Wright  -
675fb9b2996SJames Wright
676fb9b2996SJames Wright* - `-sgs_model_dd_parameter_dir`
677fb9b2996SJames Wright  - Path to directory with data-driven model parameters (weights, biases, etc.)
678fb9b2996SJames Wright  - `./dd_sgs_parameters`
679fb9b2996SJames Wright  - string
680fb9b2996SJames Wright
681f4fad612SJames Wright* - `-diff_filter_monitor`
682f4fad612SJames Wright  - Enable differential filter TSMonitor
683f4fad612SJames Wright  - `false`
684f4fad612SJames Wright  - boolean
685f4fad612SJames Wright
686f4fad612SJames Wright* - `-diff_filter_grid_based_width`
687f4fad612SJames Wright  - Use filter width based on the grid size
688f4fad612SJames Wright  - `false`
689f4fad612SJames Wright  - boolean
690f4fad612SJames Wright
691f4fad612SJames Wright* - `-diff_filter_width_scaling`
692f4fad612SJames Wright  - Anisotropic scaling for filter width in wall-aligned coordinates (snz)
693f4fad612SJames Wright  - `1,1,1`
694f4fad612SJames Wright  - `m`
695f4fad612SJames Wright
696f4fad612SJames Wright* - `-diff_filter_kernel_scaling`
697f4fad612SJames Wright  - Scaling to make differential kernel size equivalent to other filter kernels
698f4fad612SJames Wright  - `0.1`
699f4fad612SJames Wright  - `m^2`
700f4fad612SJames Wright
701f4fad612SJames Wright* - `-diff_filter_wall_damping_function`
702f4fad612SJames Wright  - Damping function to use at the wall for anisotropic filtering (`none`, `van_driest`)
703f4fad612SJames Wright  - `none`
704f4fad612SJames Wright  - string
705f4fad612SJames Wright
706f4fad612SJames Wright* - `-diff_filter_wall_damping_constant`
707aaa4e91fSJed Brown  - Constant for the wall-damping function. $A^+$ for `van_driest` damping function.
708f4fad612SJames Wright  - 25
709f4fad612SJames Wright  -
710f4fad612SJames Wright
711f4fad612SJames Wright* - `-diff_filter_friction_length`
712f4fad612SJames Wright  - Friction length associated with the flow, $\delta_\nu$. Used in wall-damping functions
713f4fad612SJames Wright  - 0
714f4fad612SJames Wright  - `m`
715f4fad612SJames Wright
716575f8106SLeila Ghaffari:::
717a515125bSLeila Ghaffari
718e7754af5SKenneth E. Jansen#### Gaussian Wave
71979b17980SJames Wright
720e7754af5SKenneth E. JansenThe Gaussian wave problem has the following command-line options in addition to the Newtonian Ideal Gas options:
72179b17980SJames Wright
722e7754af5SKenneth E. Jansen:::{list-table} Gaussian Wave Runtime Options
72379b17980SJames Wright:header-rows: 1
72479b17980SJames Wright
72579b17980SJames Wright* - Option
72679b17980SJames Wright  - Description
72779b17980SJames Wright  - Default value
72879b17980SJames Wright  - Unit
72979b17980SJames Wright
730edf614b5SJed Brown* - `-freestream_riemann`
731edf614b5SJed Brown  - Riemann solver for boundaries (HLL or HLLC)
732edf614b5SJed Brown  - `hllc`
733edf614b5SJed Brown  -
734edf614b5SJed Brown
735edf614b5SJed Brown* - `-freestream_velocity`
73679b17980SJames Wright  - Freestream velocity vector
73779b17980SJames Wright  - `0,0,0`
73879b17980SJames Wright  - `m/s`
73979b17980SJames Wright
740edf614b5SJed Brown* - `-freestream_temperature`
74179b17980SJames Wright  - Freestream temperature
74279b17980SJames Wright  - `288`
74379b17980SJames Wright  - `K`
74479b17980SJames Wright
745edf614b5SJed Brown* - `-freestream_pressure`
746ff82278dSJames Wright  - Freestream pressure
74779b17980SJames Wright  - `1.01e5`
74879b17980SJames Wright  - `Pa`
74979b17980SJames Wright
75079b17980SJames Wright* - `-epicenter`
75179b17980SJames Wright  - Coordinates of center of perturbation
75279b17980SJames Wright  - `0,0,0`
75379b17980SJames Wright  - `m`
75479b17980SJames Wright
75579b17980SJames Wright* - `-amplitude`
75679b17980SJames Wright  - Amplitude of the perturbation
75779b17980SJames Wright  - `0.1`
75879b17980SJames Wright  -
75979b17980SJames Wright
76079b17980SJames Wright* - `-width`
76179b17980SJames Wright  - Width parameter of the perturbation
76279b17980SJames Wright  - `0.002`
76379b17980SJames Wright  - `m`
76479b17980SJames Wright
76579b17980SJames Wright:::
76679b17980SJames Wright
767e7754af5SKenneth E. JansenThis problem can be run with the `gaussianwave.yaml` file via:
76879b17980SJames Wright
76979b17980SJames Wright```
770e7754af5SKenneth E. Jansen./navierstokes -options_file gaussianwave.yaml
77179b17980SJames Wright```
77279b17980SJames Wright
773e7754af5SKenneth E. Jansen```{literalinclude} ../../../../../examples/fluids/gaussianwave.yaml
77479b17980SJames Wright:language: yaml
77579b17980SJames Wright```
776edd152dcSJed Brown
777b8fb7609SAdeleke O. Bankole#### Vortex Shedding - Flow past Cylinder
778b8fb7609SAdeleke O. Bankole
779b8fb7609SAdeleke O. BankoleThe vortex shedding, flow past cylinder problem has the following command-line options in addition to the Newtonian Ideal Gas options:
780b8fb7609SAdeleke O. Bankole
781b8fb7609SAdeleke O. Bankole:::{list-table} Vortex Shedding Runtime Options
782b8fb7609SAdeleke O. Bankole:header-rows: 1
783b8fb7609SAdeleke O. Bankole
784b8fb7609SAdeleke O. Bankole* - Option
785b8fb7609SAdeleke O. Bankole  - Description
786b8fb7609SAdeleke O. Bankole  - Default value
787b8fb7609SAdeleke O. Bankole  - Unit
788b8fb7609SAdeleke O. Bankole
789b8fb7609SAdeleke O. Bankole* - `-freestream_velocity`
790b8fb7609SAdeleke O. Bankole  - Freestream velocity vector
791b8fb7609SAdeleke O. Bankole  - `0,0,0`
792b8fb7609SAdeleke O. Bankole  - `m/s`
793b8fb7609SAdeleke O. Bankole
794b8fb7609SAdeleke O. Bankole* - `-freestream_temperature`
795b8fb7609SAdeleke O. Bankole  - Freestream temperature
796b8fb7609SAdeleke O. Bankole  - `288`
797b8fb7609SAdeleke O. Bankole  - `K`
798b8fb7609SAdeleke O. Bankole
799b8fb7609SAdeleke O. Bankole* - `-freestream_pressure`
800b8fb7609SAdeleke O. Bankole  - Freestream pressure
801b8fb7609SAdeleke O. Bankole  - `1.01e5`
802b8fb7609SAdeleke O. Bankole  - `Pa`
803b8fb7609SAdeleke O. Bankole
804b8fb7609SAdeleke O. Bankole:::
805b8fb7609SAdeleke O. Bankole
806b8fb7609SAdeleke O. BankoleThe initial condition is taken from `-reference_temperature` and `-reference_pressure`.
807b8fb7609SAdeleke O. BankoleTo run this problem, first generate a mesh:
808b8fb7609SAdeleke O. Bankole
809b8fb7609SAdeleke O. Bankole```console
810b8fb7609SAdeleke O. Bankole$ make -C examples/fluids/meshes
811b8fb7609SAdeleke O. Bankole```
812b8fb7609SAdeleke O. Bankole
813b8fb7609SAdeleke O. BankoleThen run by building the executable and running:
814b8fb7609SAdeleke O. Bankole
815b8fb7609SAdeleke O. Bankole```console
816b8fb7609SAdeleke O. Bankole$ make build/fluids-navierstokes
817c5e9980aSAdeleke O. Bankole$ mpiexec -n 6 build/fluids-navierstokes -options_file examples/fluids/vortexshedding.yaml -{ts,snes}_monitor_
818b8fb7609SAdeleke O. Bankole```
819b8fb7609SAdeleke O. Bankole
820c5e9980aSAdeleke O. BankoleThe vortex shedding period is roughly 5.6 and this problem runs until time 100 (2000 time steps).
821c5e9980aSAdeleke O. BankoleThe above run writes a file named `force.csv` (see `ts_monitor_wall_force` in `vortexshedding.yaml`), which can be postprocessed by running to create a figure showing lift and drag coefficients over time.
822c5e9980aSAdeleke O. Bankole
823c5e9980aSAdeleke O. Bankole```console
8242004e3acSAdeleke O. Bankole$ python examples/fluids/postprocess/vortexshedding.py
825c5e9980aSAdeleke O. Bankole```
826b8fb7609SAdeleke O. Bankole
827b8fb7609SAdeleke O. Bankole```{literalinclude} ../../../../../examples/fluids/vortexshedding.yaml
828b8fb7609SAdeleke O. Bankole:language: yaml
829b8fb7609SAdeleke O. Bankole```
830b8fb7609SAdeleke O. Bankole
831af8870a9STimothy Aiken#### Density current
832af8870a9STimothy Aiken
83383c686feSJames WrightThe Density Current problem has the following command-line options in addition to the Newtonian Ideal Gas options:
834bb8a0c61SJames Wright
835bb8a0c61SJames Wright:::{list-table} Density Current Runtime Options
836bb8a0c61SJames Wright:header-rows: 1
837bb8a0c61SJames Wright
838bb8a0c61SJames Wright* - Option
839bb8a0c61SJames Wright  - Description
840bb8a0c61SJames Wright  - Default value
841bb8a0c61SJames Wright  - Unit
842bb8a0c61SJames Wright
843bb8a0c61SJames Wright* - `-center`
844bb8a0c61SJames Wright  - Location of bubble center
845bb8a0c61SJames Wright  - `(lx,ly,lz)/2`
846bb8a0c61SJames Wright  - `(m,m,m)`
847bb8a0c61SJames Wright
848bb8a0c61SJames Wright* - `-dc_axis`
849bb8a0c61SJames Wright  - Axis of density current cylindrical anomaly, or `(0,0,0)` for spherically symmetric
850bb8a0c61SJames Wright  - `(0,0,0)`
851bb8a0c61SJames Wright  -
852bb8a0c61SJames Wright
853bb8a0c61SJames Wright* - `-rc`
854bb8a0c61SJames Wright  - Characteristic radius of thermal bubble
855bb8a0c61SJames Wright  - `1000`
856bb8a0c61SJames Wright  - `m`
857bb8a0c61SJames Wright
858bb8a0c61SJames Wright* - `-theta0`
859bb8a0c61SJames Wright  - Reference potential temperature
860bb8a0c61SJames Wright  - `300`
861bb8a0c61SJames Wright  - `K`
862bb8a0c61SJames Wright
863bb8a0c61SJames Wright* - `-thetaC`
864bb8a0c61SJames Wright  - Perturbation of potential temperature
865bb8a0c61SJames Wright  - `-15`
866bb8a0c61SJames Wright  - `K`
867bb8a0c61SJames Wright
868bb8a0c61SJames Wright* - `-P0`
869bb8a0c61SJames Wright  - Atmospheric pressure
870bb8a0c61SJames Wright  - `1E5`
871bb8a0c61SJames Wright  - `Pa`
872bb8a0c61SJames Wright
873bb8a0c61SJames Wright* - `-N`
874bb8a0c61SJames Wright  - Brunt-Vaisala frequency
875bb8a0c61SJames Wright  - `0.01`
876bb8a0c61SJames Wright  - `1/s`
877bb8a0c61SJames Wright:::
878bb8a0c61SJames Wright
879575f8106SLeila GhaffariThis problem can be run with:
880ea10196cSJeremy L Thompson
881575f8106SLeila Ghaffari```
882bb8a0c61SJames Wright./navierstokes -problem density_current -dm_plex_box_faces 16,1,8 -degree 1 -dm_plex_box_lower 0,0,0 -dm_plex_box_upper 2000,125,1000 -dm_plex_dim 3 -rc 400. -bc_wall 1,2,5,6 -wall_comps 1,2,3 -bc_slip_y 3,4 -mu 75
883bb8a0c61SJames Wright```
884bb8a0c61SJames Wright
885af8870a9STimothy Aiken#### Channel flow
886af8870a9STimothy Aiken
88783c686feSJames WrightThe Channel problem has the following command-line options in addition to the Newtonian Ideal Gas options:
888bb8a0c61SJames Wright
889bb8a0c61SJames Wright:::{list-table} Channel Runtime Options
890bb8a0c61SJames Wright:header-rows: 1
891bb8a0c61SJames Wright
892bb8a0c61SJames Wright* - Option
893bb8a0c61SJames Wright  - Description
894bb8a0c61SJames Wright  - Default value
895bb8a0c61SJames Wright  - Unit
896bb8a0c61SJames Wright
897bb8a0c61SJames Wright* - `-umax`
898bb8a0c61SJames Wright  - Maximum/centerline velocity of the flow
899bb8a0c61SJames Wright  - `10`
900bb8a0c61SJames Wright  - `m/s`
901bb8a0c61SJames Wright
902bb8a0c61SJames Wright* - `-theta0`
903bb8a0c61SJames Wright  - Reference potential temperature
904bb8a0c61SJames Wright  - `300`
905bb8a0c61SJames Wright  - `K`
906bb8a0c61SJames Wright
907bb8a0c61SJames Wright* - `-P0`
908bb8a0c61SJames Wright  - Atmospheric pressure
909bb8a0c61SJames Wright  - `1E5`
910bb8a0c61SJames Wright  - `Pa`
911edd152dcSJed Brown
912edd152dcSJed Brown* - `-body_force_scale`
913edd152dcSJed Brown  - Multiplier for body force (`-1` for flow reversal)
914edd152dcSJed Brown  - 1
915edd152dcSJed Brown  -
916bb8a0c61SJames Wright:::
917bb8a0c61SJames Wright
918bb8a0c61SJames WrightThis problem can be run with the `channel.yaml` file via:
919bb8a0c61SJames Wright
920bb8a0c61SJames Wright```
921bb8a0c61SJames Wright./navierstokes -options_file channel.yaml
922bb8a0c61SJames Wright```
923bb8a0c61SJames Wright```{literalinclude} ../../../../../examples/fluids/channel.yaml
924bb8a0c61SJames Wright:language: yaml
925bb8a0c61SJames Wright```
926bb8a0c61SJames Wright
927c8c30d87SJed Brown(example-blasius)=
928c8c30d87SJed Brown
929af8870a9STimothy Aiken#### Blasius boundary layer
930af8870a9STimothy Aiken
93183c686feSJames WrightThe Blasius problem has the following command-line options in addition to the Newtonian Ideal Gas options:
932bb8a0c61SJames Wright
933bb8a0c61SJames Wright:::{list-table} Blasius Runtime Options
934bb8a0c61SJames Wright:header-rows: 1
935bb8a0c61SJames Wright
936bb8a0c61SJames Wright* - Option
937bb8a0c61SJames Wright  - Description
938bb8a0c61SJames Wright  - Default value
939bb8a0c61SJames Wright  - Unit
940bb8a0c61SJames Wright
941aef1eb53SLeila Ghaffari* - `-velocity_infinity`
942bb8a0c61SJames Wright  - Freestream velocity
943bb8a0c61SJames Wright  - `40`
944bb8a0c61SJames Wright  - `m/s`
945bb8a0c61SJames Wright
946aef1eb53SLeila Ghaffari* - `-temperature_infinity`
947aef1eb53SLeila Ghaffari  - Freestream temperature
948bb8a0c61SJames Wright  - `288`
949bb8a0c61SJames Wright  - `K`
950bb8a0c61SJames Wright
951aef1eb53SLeila Ghaffari* - `-temperature_wall`
952aef1eb53SLeila Ghaffari  - Wall temperature
9530d850f2eSLeila Ghaffari  - `288`
954aef1eb53SLeila Ghaffari  - `K`
955aef1eb53SLeila Ghaffari
956aef1eb53SLeila Ghaffari* - `-delta0`
957aef1eb53SLeila Ghaffari  - Boundary layer height at the inflow
958aef1eb53SLeila Ghaffari  - `4.2e-3`
959aef1eb53SLeila Ghaffari  - `m`
960aef1eb53SLeila Ghaffari
961bb8a0c61SJames Wright* - `-P0`
962bb8a0c61SJames Wright  - Atmospheric pressure
963bb8a0c61SJames Wright  - `1.01E5`
964bb8a0c61SJames Wright  - `Pa`
965bb8a0c61SJames Wright
96698b448e2SJames Wright* - `-platemesh_refine_height`
96798b448e2SJames Wright  - Height at which `-platemesh_Ndelta` number of elements should refined into
968bb8a0c61SJames Wright  - `5.9E-4`
969bb8a0c61SJames Wright  - `m`
970bb8a0c61SJames Wright
97198b448e2SJames Wright* - `-platemesh_Ndelta`
97298b448e2SJames Wright  - Number of elements to keep below `-platemesh_refine_height`
973bb8a0c61SJames Wright  - `45`
974bb8a0c61SJames Wright  -
975bb8a0c61SJames Wright
97698b448e2SJames Wright* - `-platemesh_growth`
977bb8a0c61SJames Wright  - Growth rate of the elements in the refinement region
978bb8a0c61SJames Wright  - `1.08`
979bb8a0c61SJames Wright  -
980bb8a0c61SJames Wright
98198b448e2SJames Wright* - `-platemesh_top_angle`
982bb8a0c61SJames Wright  - Downward angle of the top face of the domain. This face serves as an outlet.
983bb8a0c61SJames Wright  - `5`
984bb8a0c61SJames Wright  - `degrees`
985493642f1SJames Wright
986493642f1SJames Wright* - `-stg_use`
987493642f1SJames Wright  - Whether to use stg for the inflow conditions
988493642f1SJames Wright  - `false`
989493642f1SJames Wright  -
99098b448e2SJames Wright
99198b448e2SJames Wright* - `-platemesh_y_node_locs_path`
99298b448e2SJames Wright  - Path to file with y node locations. If empty, will use mesh warping instead.
99398b448e2SJames Wright  - `""`
99498b448e2SJames Wright  -
995aef1eb53SLeila Ghaffari
9960d850f2eSLeila Ghaffari* - `-n_chebyshev`
997aef1eb53SLeila Ghaffari  - Number of Chebyshev terms
998aef1eb53SLeila Ghaffari  - `20`
999aef1eb53SLeila Ghaffari  -
1000aef1eb53SLeila Ghaffari
10010d850f2eSLeila Ghaffari* - `-chebyshev_`
10020d850f2eSLeila Ghaffari  - Prefix for Chebyshev snes solve
10030d850f2eSLeila Ghaffari  -
10040d850f2eSLeila Ghaffari  -
10050d850f2eSLeila Ghaffari
1006bb8a0c61SJames Wright:::
1007bb8a0c61SJames Wright
1008bb8a0c61SJames WrightThis problem can be run with the `blasius.yaml` file via:
1009bb8a0c61SJames Wright
1010bb8a0c61SJames Wright```
1011bb8a0c61SJames Wright./navierstokes -options_file blasius.yaml
1012bb8a0c61SJames Wright```
1013bb8a0c61SJames Wright
1014bb8a0c61SJames Wright```{literalinclude} ../../../../../examples/fluids/blasius.yaml
1015bb8a0c61SJames Wright:language: yaml
1016575f8106SLeila Ghaffari```
1017493642f1SJames Wright
1018493642f1SJames Wright#### STG Inflow for Flat Plate
1019493642f1SJames Wright
1020b46bfc5eSJeremy L ThompsonUsing the STG Inflow for the blasius problem adds the following command-line options:
1021493642f1SJames Wright
1022493642f1SJames Wright:::{list-table} Blasius Runtime Options
1023493642f1SJames Wright:header-rows: 1
1024493642f1SJames Wright
1025493642f1SJames Wright* - Option
1026493642f1SJames Wright  - Description
1027493642f1SJames Wright  - Default value
1028493642f1SJames Wright  - Unit
1029493642f1SJames Wright
1030493642f1SJames Wright* - `-stg_inflow_path`
1031493642f1SJames Wright  - Path to the STGInflow file
1032493642f1SJames Wright  - `./STGInflow.dat`
1033493642f1SJames Wright  -
1034493642f1SJames Wright
1035493642f1SJames Wright* - `-stg_rand_path`
1036493642f1SJames Wright  - Path to the STGRand file
1037493642f1SJames Wright  - `./STGRand.dat`
1038493642f1SJames Wright  -
1039493642f1SJames Wright
1040493642f1SJames Wright* - `-stg_alpha`
1041493642f1SJames Wright  - Growth rate of the wavemodes
1042493642f1SJames Wright  - `1.01`
1043493642f1SJames Wright  -
1044493642f1SJames Wright
1045493642f1SJames Wright* - `-stg_u0`
1046493642f1SJames Wright  - Convective velocity, $U_0$
1047493642f1SJames Wright  - `0.0`
1048493642f1SJames Wright  - `m/s`
1049493642f1SJames Wright
1050493642f1SJames Wright* - `-stg_mean_only`
1051493642f1SJames Wright  - Only impose the mean velocity (no fluctutations)
1052493642f1SJames Wright  - `false`
1053493642f1SJames Wright  -
1054493642f1SJames Wright
105529ea39e3SJames Wright* - `-stg_strong`
105629ea39e3SJames Wright  - Strongly enforce the STG inflow boundary condition
105729ea39e3SJames Wright  - `false`
105829ea39e3SJames Wright  -
105929ea39e3SJames Wright
1060d4e0f297SJames Wright* - `-stg_fluctuating_IC`
1061d4e0f297SJames Wright  - "Extrude" the fluctuations through the domain as an initial condition
1062d4e0f297SJames Wright  - `false`
1063d4e0f297SJames Wright  -
1064d4e0f297SJames Wright
1065493642f1SJames Wright:::
1066493642f1SJames Wright
1067493642f1SJames WrightThis problem can be run with the `blasius.yaml` file via:
1068493642f1SJames Wright
1069493642f1SJames Wright```
1070493642f1SJames Wright./navierstokes -options_file blasius.yaml -stg_use true
1071493642f1SJames Wright```
1072493642f1SJames Wright
1073b46bfc5eSJeremy L ThompsonNote the added `-stg_use true` flag
1074b46bfc5eSJeremy L ThompsonThis overrides the `stg: use: false` setting in the `blasius.yaml` file, enabling the use of the STG inflow.
1075