xref: /libCEED/examples/fluids/README.md (revision b7d6643930f63dbc81dde690883cc613b302935e)
1## libCEED: Navier-Stokes Example
2
3This page provides a description of the Navier-Stokes example for the libCEED library, based on PETSc.
4PETSc v3.17 or a development version of PETSc at commit 0e95d842 or later is required.
5
6The Navier-Stokes problem solves the compressible Navier-Stokes equations in three dimensions using an explicit time integration.
7The state variables are mass density, momentum density, and energy density.
8
9The main Navier-Stokes solver for libCEED is defined in [`navierstokes.c`](navierstokes.c) with different problem definitions according to the application of interest.
10
11Build by using:
12
13`make`
14
15and run with:
16
17```
18./navierstokes -ceed [ceed] -problem [problem type] -degree [degree]
19```
20
21## Runtime options
22
23% inclusion-fluids-marker
24
25The Navier-Stokes mini-app is controlled via command-line options.
26The following options are common among all problem types:
27
28:::{list-table} Common Runtime Options
29:header-rows: 1
30
31* - Option
32  - Description
33  - Default value
34
35* - `-ceed`
36  - CEED resource specifier
37  - `/cpu/self/opt/blocked`
38
39* - `-test`
40  - Run in test mode
41  - `false`
42
43* - `-compare_final_state_atol`
44  - Test absolute tolerance
45  - `1E-11`
46
47* - `-compare_final_state_filename`
48  - Test filename
49  -
50
51* - `-problem`
52  - Problem to solve (`advection`, `advection2d`, `density_current`, or `euler_vortex`)
53  - `density_current`
54
55* - `-implicit`
56  - Use implicit time integartor formulation
57  -
58
59* - `-degree`
60  - Polynomial degree of tensor product basis (must be >= 1)
61  - `1`
62
63* - `-q_extra`
64  - Number of extra quadrature points
65  - `0`
66
67* - `-ts_monitor_solution`
68  - PETSc output format, such as `cgns:output-%d.cgns` (requires PETSc `--download-cgns`)
69  -
70
71* - `-ts_monitor_solution_interval`
72  - Number of time steps between visualization output frames.
73  - `1`
74
75* - `-viewer_cgns_batch_size`
76  - Number of frames written per CGNS file if the CGNS file name includes a format specifier (`%d`).
77  - `20`
78
79* - `-checkpoint_interval`
80  - Number of steps between writing binary checkpoints. `0` has no output, `-1` outputs final state only
81  - `10`
82
83* - `-checkpoint_vtk`
84  - Checkpoints include VTK (`*.vtu`) files for visualization. Consider `-ts_monitor_solution`instead.
85  - `false`
86
87* - `-viz_refine`
88  - Use regular refinement for VTK visualization
89  - `0`
90
91* - `-output_dir`
92  - Output directory for binary checkpoints and VTK files (if enabled).
93  - `.`
94
95* - `-output_add_stepnum2bin`
96  - Whether to add step numbers to output binary files
97  - `false`
98
99* - `-continue`
100  - Continue from previous solution (input is step number of previous solution)
101  - `0`
102
103* - `-continue_filename`
104  - Path to solution binary file from which to continue from
105  - `[output_dir]/ns-solution.bin`
106
107* - `-continue_time_filename`
108  - Path to time stamp binary file (only for legacy checkpoints)
109  - `[output_dir]/ns-time.bin`
110
111* - `-bc_wall`
112  - Use wall boundary conditions on this list of faces
113  -
114
115* - `-wall_comps`
116  - An array of constrained component numbers for wall BCs
117  -
118
119* - `-bc_slip_x`
120  - Use slip boundary conditions, for the x component, on this list of faces
121  -
122
123* - `-bc_slip_y`
124  - Use slip boundary conditions, for the y component, on this list of faces
125  -
126
127* - `-bc_slip_z`
128  - Use slip boundary conditions, for the z component, on this list of faces
129  -
130
131* - `-bc_inflow`
132  - Use inflow boundary conditions on this list of faces
133  -
134
135* - `-bc_outflow`
136  - Use outflow boundary conditions on this list of faces
137  -
138
139* - `-bc_freestream`
140  - Use freestream boundary conditions on this list of faces
141  -
142
143* - `-ts_monitor_turbulence_spanstats_collect_interval`
144  - Number of timesteps between statistics collection
145  - `1`
146
147* - `-ts_monitor_turbulence_spanstats_viewer`
148  - Sets the PetscViewer for the statistics file writing, such as `cgns:output-%d.cgns` (requires PETSc `--download-cgns`). Also turns the statistics collection on.
149  -
150
151* - `-ts_monitor_turbulence_spanstats_viewer_interval`
152  - Number of timesteps between statistics file writing (`-1` means only at end of run)
153  - `-1`
154
155* - `-ts_monitor_turbulence_spanstats_viewer_cgns_batch_size`
156  - Number of frames written per CGNS file if the CGNS file name includes a format specifier (`%d`).
157  - `20`
158
159* - `-snes_view`
160  - View PETSc `SNES` nonlinear solver configuration
161  -
162
163* - `-log_view`
164  - View PETSc performance log
165  -
166
167* - `-help`
168  - View comprehensive information about run-time options
169  -
170:::
171
172For 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:
173
174:::{list-table} 2D Face ID Labels
175:header-rows: 1
176* - PETSc Face Name
177  - Cartesian direction
178  - Face ID
179
180* - faceMarkerBottom
181  - -z
182  - 1
183
184* - faceMarkerRight
185  - +x
186  - 2
187
188* - faceMarkerTop
189  - +z
190  - 3
191
192* - faceMarkerLeft
193  - -x
194  - 4
195:::
196
197:::{list-table} 2D Face ID Labels
198:header-rows: 1
199* - PETSc Face Name
200  - Cartesian direction
201  - Face ID
202
203* - faceMarkerBottom
204  - -z
205  - 1
206
207* - faceMarkerTop
208  - +z
209  - 2
210
211* - faceMarkerFront
212  - -y
213  - 3
214
215* - faceMarkerBack
216  - +y
217  - 4
218
219* - faceMarkerRight
220  - +x
221  - 5
222
223* - faceMarkerLeft
224  - -x
225  - 6
226:::
227
228### Boundary conditions
229
230Boundary conditions for compressible viscous flows are notoriously tricky. Here we offer some recommendations
231
232#### Inflow
233
234If 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).
235It is stable and the least reflective boundary condition for acoustics.
236
237If near a viscous wall, you may want a specified inflow profile.
238Use `bc_inflow` and see {ref}`example-blasius` and discussion of synthetic turbulence generation for ways to analytically generate developed inflow profiles.
239These 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.
240The strong approach gives sharper resolution of velocity structures.
241We have described the primitive variable formulation here; the conservative variants are similar, but not equivalent.
242
243### Outflow
244
245If you know the complete exterior state, `bc_freestream` is the least reflective boundary condition, but is disruptive to viscous flow structures.
246If thermal anomalies must exit the domain, the Riemann solver must resolve the contact wave to avoid reflections.
247The default Riemann solver, HLLC, is sufficient in this regard while the simpler HLL converts thermal structures exiting the domain into grid-scale reflecting acoustics.
248
249If 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.
250
251The 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).
252In our experience, `riemann` is slightly less reflective but produces similar flows in cases of strict outflow.
253The `pressure` variant is retained to facilitate comparison with other codes, such as PHASTA-C, but we recommend `riemann` for general use.
254
255### Periodicity
256
257PETSc provides two ways to specify periodicity:
258
2591. Topological periodicity, in which the donor and receiver dofs are the same, obtained using:
260
261``` yaml
262dm_plex:
263  shape: box
264  box_faces: 10,12,4
265  box_bd: none,none,periodic
266```
267
268The coordinates for such cases are stored as a new field, and
269
270### Advection
271
272For 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$.
273These are available in 2D and 3D.
274
275#### 2D advection
276
277For the 2D advection problem, the following additional command-line options are available:
278
279:::{list-table} Advection2D Runtime Options
280:header-rows: 1
281
282* - Option
283  - Description
284  - Default value
285  - Unit
286
287* - `-rc`
288  - Characteristic radius of thermal bubble
289  - `1000`
290  - `m`
291
292* - `-units_meter`
293  - 1 meter in scaled length units
294  - `1E-2`
295  -
296
297* - `-units_second`
298  - 1 second in scaled time units
299  - `1E-2`
300  -
301
302* - `-units_kilogram`
303  - 1 kilogram in scaled mass units
304  - `1E-6`
305  -
306
307* - `-strong_form`
308  - Strong (1) or weak/integrated by parts (0) residual
309  - `0`
310  -
311
312* - `-stab`
313  - Stabilization method (`none`, `su`, or `supg`)
314  - `none`
315  -
316
317* - `-CtauS`
318  - Scale coefficient for stabilization tau (nondimensional)
319  - `0`
320  -
321
322* - `-wind_type`
323  - Wind type in Advection (`rotation` or `translation`)
324  - `rotation`
325  -
326
327* - `-wind_translation`
328  - Constant wind vector when `-wind_type translation`
329  - `1,0,0`
330  -
331
332* - `-E_wind`
333  - Total energy of inflow wind when `-wind_type translation`
334  - `1E6`
335  - `J`
336:::
337
338An example of the `rotation` mode can be run with:
339
340```
341./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
342```
343
344and the `translation` mode with:
345
346```
347./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
348```
349Note the lengths in `-dm_plex_box_upper` are given in meters, and will be nondimensionalized according to `-units_meter`.
350
351#### 3D advection
352
353For the 3D advection problem, the following additional command-line options are available:
354
355:::{list-table} Advection3D Runtime Options
356:header-rows: 1
357
358* - Option
359  - Description
360  - Default value
361  - Unit
362
363* - `-rc`
364  - Characteristic radius of thermal bubble
365  - `1000`
366  - `m`
367
368* - `-units_meter`
369  - 1 meter in scaled length units
370  - `1E-2`
371  -
372
373* - `-units_second`
374  - 1 second in scaled time units
375  - `1E-2`
376  -
377
378* - `-units_kilogram`
379  - 1 kilogram in scaled mass units
380  - `1E-6`
381  -
382
383* - `-strong_form`
384  - Strong (1) or weak/integrated by parts (0) residual
385  - `0`
386  -
387
388* - `-stab`
389  - Stabilization method (`none`, `su`, or `supg`)
390  - `none`
391  -
392
393* - `-CtauS`
394  - Scale coefficient for stabilization tau (nondimensional)
395  - `0`
396  -
397
398* - `-wind_type`
399  - Wind type in Advection (`rotation` or `translation`)
400  - `rotation`
401  -
402
403* - `-wind_translation`
404  - Constant wind vector when `-wind_type translation`
405  - `1,0,0`
406  -
407
408* - `-E_wind`
409  - Total energy of inflow wind when `-wind_type translation`
410  - `1E6`
411  - `J`
412
413* - `-bubble_type`
414  - `sphere` (3D) or `cylinder` (2D)
415  - `shpere`
416  -
417
418* - `-bubble_continuity`
419  - `smooth`, `back_sharp`, or `thick`
420  - `smooth`
421  -
422:::
423
424An example of the `rotation` mode can be run with:
425
426```
427./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
428```
429
430and the `translation` mode with:
431
432```
433./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
434```
435
436### Inviscid Ideal Gas
437
438#### Isentropic Euler vortex
439
440For the Isentropic Vortex problem, the following additional command-line options are available:
441
442:::{list-table} Isentropic Vortex Runtime Options
443:header-rows: 1
444
445* - Option
446  - Description
447  - Default value
448  - Unit
449
450* - `-center`
451  - Location of vortex center
452  - `(lx,ly,lz)/2`
453  - `(m,m,m)`
454
455* - `-units_meter`
456  - 1 meter in scaled length units
457  - `1E-2`
458  -
459
460* - `-units_second`
461  - 1 second in scaled time units
462  - `1E-2`
463  -
464
465* - `-mean_velocity`
466  - Background velocity vector
467  - `(1,1,0)`
468  -
469
470* - `-vortex_strength`
471  - Strength of vortex < 10
472  - `5`
473  -
474
475* - `-c_tau`
476  - Stabilization constant
477  - `0.5`
478  -
479:::
480
481This problem can be run with:
482
483```
484./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.
485```
486
487#### Sod shock tube
488
489For the Shock Tube problem, the following additional command-line options are available:
490
491:::{list-table} Shock Tube Runtime Options
492:header-rows: 1
493
494* - Option
495  - Description
496  - Default value
497  - Unit
498
499* - `-units_meter`
500  - 1 meter in scaled length units
501  - `1E-2`
502  -
503
504* - `-units_second`
505  - 1 second in scaled time units
506  - `1E-2`
507  -
508
509* - `-yzb`
510  - Use YZB discontinuity capturing
511  - `none`
512  -
513
514* - `-stab`
515  - Stabilization method (`none`, `su`, or `supg`)
516  - `none`
517  -
518:::
519
520This problem can be run with:
521
522```
523./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
524```
525
526### Newtonian viscosity, Ideal Gas
527
528For the Density Current, Channel, and Blasius problems, the following common command-line options are available:
529
530:::{list-table} Newtonian Ideal Gas problems Runtime Options
531:header-rows: 1
532
533* - Option
534  - Description
535  - Default value
536  - Unit
537
538* - `-units_meter`
539  - 1 meter in scaled length units
540  - `1`
541  -
542
543* - `-units_second`
544  - 1 second in scaled time units
545  - `1`
546  -
547
548* - `-units_kilogram`
549  - 1 kilogram in scaled mass units
550  - `1`
551  -
552
553* - `-units_Kelvin`
554  - 1 Kelvin in scaled temperature units
555  - `1`
556  -
557
558* - `-stab`
559  - Stabilization method (`none`, `su`, or `supg`)
560  - `none`
561  -
562
563* - `-c_tau`
564  - Stabilization constant, $c_\tau$
565  - `0.5`
566  -
567
568* - `-Ctau_t`
569  - Stabilization time constant, $C_t$
570  - `1.0`
571  -
572
573* - `-Ctau_v`
574  - Stabilization viscous constant, $C_v$
575  - `36, 60, 128 for degree = 1, 2, 3`
576  -
577
578* - `-Ctau_C`
579  - Stabilization continuity constant, $C_c$
580  - `1.0`
581  -
582
583* - `-Ctau_M`
584  - Stabilization momentum constant, $C_m$
585  - `1.0`
586  -
587
588* - `-Ctau_E`
589  - Stabilization energy constant, $C_E$
590  - `1.0`
591  -
592
593* - `-cv`
594  - Heat capacity at constant volume
595  - `717`
596  - `J/(kg K)`
597
598* - `-cp`
599  - Heat capacity at constant pressure
600  - `1004`
601  - `J/(kg K)`
602
603* - `-g`
604  - Gravitational acceleration
605  - `9.81`
606  - `m/s^2`
607
608* - `-lambda`
609  - Stokes hypothesis second viscosity coefficient
610  - `-2/3`
611  -
612
613* - `-mu`
614  - Shear dynamic viscosity coefficient
615  - `75`
616  -  `Pa s`
617
618* - `-k`
619  - Thermal conductivity
620  - `0.02638`
621  - `W/(m K)`
622
623* - `-newtonian_unit_tests`
624  - Developer option to test properties
625  - `false`
626  - boolean
627
628* - `-state_var`
629  - State variables to solve solution with. `conservative` ($\rho, \rho \bm{u}, \rho e$) or `primitive` ($P, \bm{u}, T$)
630  - `conservative`
631  - string
632:::
633
634#### Newtonian Wave
635
636The newtonian wave problem has the following command-line options in addition to the Newtonian Ideal Gas options:
637
638:::{list-table} Newtonian Wave Runtime Options
639:header-rows: 1
640
641* - Option
642  - Description
643  - Default value
644  - Unit
645
646* - `-freestream_riemann`
647  - Riemann solver for boundaries (HLL or HLLC)
648  - `hllc`
649  -
650
651* - `-freestream_velocity`
652  - Freestream velocity vector
653  - `0,0,0`
654  - `m/s`
655
656* - `-freestream_temperature`
657  - Freestream temperature
658  - `288`
659  - `K`
660
661* - `-freestream_pressure`
662  - Freestream pressure
663  - `1.01e5`
664  - `Pa`
665
666* - `-epicenter`
667  - Coordinates of center of perturbation
668  - `0,0,0`
669  - `m`
670
671* - `-amplitude`
672  - Amplitude of the perturbation
673  - `0.1`
674  -
675
676* - `-width`
677  - Width parameter of the perturbation
678  - `0.002`
679  - `m`
680
681:::
682
683This problem can be run with the `newtonianwave.yaml` file via:
684
685```
686./navierstokes -options_file newtonianwave.yaml
687```
688
689```{literalinclude} ../../../../../examples/fluids/newtonianwave.yaml
690:language: yaml
691```
692
693#### Vortex Shedding - Flow past Cylinder
694
695The vortex shedding, flow past cylinder problem has the following command-line options in addition to the Newtonian Ideal Gas options:
696
697:::{list-table} Vortex Shedding Runtime Options
698:header-rows: 1
699
700* - Option
701  - Description
702  - Default value
703  - Unit
704
705* - `-freestream_velocity`
706  - Freestream velocity vector
707  - `0,0,0`
708  - `m/s`
709
710* - `-freestream_temperature`
711  - Freestream temperature
712  - `288`
713  - `K`
714
715* - `-freestream_pressure`
716  - Freestream pressure
717  - `1.01e5`
718  - `Pa`
719
720:::
721
722The initial condition is taken from `-reference_temperature` and `-reference_pressure`.
723To run this problem, first generate a mesh:
724
725```console
726$ make -C examples/fluids/meshes
727```
728
729Then run by building the executable and running:
730
731```console
732$ make build/fluids-navierstokes
733$ mpiexec -n 6 build/fluids-navierstokes -options_file vortexshedding.yaml
734```
735
736The vortex shedding period is roughly 6 and this problem runs until time 100 (2000 time steps).
737
738```{literalinclude} ../../../../../examples/fluids/vortexshedding.yaml
739:language: yaml
740```
741
742#### Density current
743
744The Density Current problem has the following command-line options in addition to the Newtonian Ideal Gas options:
745
746:::{list-table} Density Current Runtime Options
747:header-rows: 1
748
749* - Option
750  - Description
751  - Default value
752  - Unit
753
754* - `-center`
755  - Location of bubble center
756  - `(lx,ly,lz)/2`
757  - `(m,m,m)`
758
759* - `-dc_axis`
760  - Axis of density current cylindrical anomaly, or `(0,0,0)` for spherically symmetric
761  - `(0,0,0)`
762  -
763
764* - `-rc`
765  - Characteristic radius of thermal bubble
766  - `1000`
767  - `m`
768
769* - `-theta0`
770  - Reference potential temperature
771  - `300`
772  - `K`
773
774* - `-thetaC`
775  - Perturbation of potential temperature
776  - `-15`
777  - `K`
778
779* - `-P0`
780  - Atmospheric pressure
781  - `1E5`
782  - `Pa`
783
784* - `-N`
785  - Brunt-Vaisala frequency
786  - `0.01`
787  - `1/s`
788:::
789
790This problem can be run with:
791
792```
793./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
794```
795
796#### Channel flow
797
798The Channel problem has the following command-line options in addition to the Newtonian Ideal Gas options:
799
800:::{list-table} Channel Runtime Options
801:header-rows: 1
802
803* - Option
804  - Description
805  - Default value
806  - Unit
807
808* - `-umax`
809  - Maximum/centerline velocity of the flow
810  - `10`
811  - `m/s`
812
813* - `-theta0`
814  - Reference potential temperature
815  - `300`
816  - `K`
817
818* - `-P0`
819  - Atmospheric pressure
820  - `1E5`
821  - `Pa`
822
823* - `-body_force_scale`
824  - Multiplier for body force (`-1` for flow reversal)
825  - 1
826  -
827:::
828
829This problem can be run with the `channel.yaml` file via:
830
831```
832./navierstokes -options_file channel.yaml
833```
834```{literalinclude} ../../../../../examples/fluids/channel.yaml
835:language: yaml
836```
837
838(example-blasius)=
839
840#### Blasius boundary layer
841
842The Blasius problem has the following command-line options in addition to the Newtonian Ideal Gas options:
843
844:::{list-table} Blasius Runtime Options
845:header-rows: 1
846
847* - Option
848  - Description
849  - Default value
850  - Unit
851
852* - `-velocity_infinity`
853  - Freestream velocity
854  - `40`
855  - `m/s`
856
857* - `-temperature_infinity`
858  - Freestream temperature
859  - `288`
860  - `K`
861
862* - `-temperature_wall`
863  - Wall temperature
864  - `288`
865  - `K`
866
867* - `-delta0`
868  - Boundary layer height at the inflow
869  - `4.2e-3`
870  - `m`
871
872* - `-P0`
873  - Atmospheric pressure
874  - `1.01E5`
875  - `Pa`
876
877* - `-platemesh_refine_height`
878  - Height at which `-platemesh_Ndelta` number of elements should refined into
879  - `5.9E-4`
880  - `m`
881
882* - `-platemesh_Ndelta`
883  - Number of elements to keep below `-platemesh_refine_height`
884  - `45`
885  -
886
887* - `-platemesh_growth`
888  - Growth rate of the elements in the refinement region
889  - `1.08`
890  -
891
892* - `-platemesh_top_angle`
893  - Downward angle of the top face of the domain. This face serves as an outlet.
894  - `5`
895  - `degrees`
896
897* - `-stg_use`
898  - Whether to use stg for the inflow conditions
899  - `false`
900  -
901
902* - `-platemesh_y_node_locs_path`
903  - Path to file with y node locations. If empty, will use mesh warping instead.
904  - `""`
905  -
906
907* - `-n_chebyshev`
908  - Number of Chebyshev terms
909  - `20`
910  -
911
912* - `-chebyshev_`
913  - Prefix for Chebyshev snes solve
914  -
915  -
916
917:::
918
919This problem can be run with the `blasius.yaml` file via:
920
921```
922./navierstokes -options_file blasius.yaml
923```
924
925```{literalinclude} ../../../../../examples/fluids/blasius.yaml
926:language: yaml
927```
928
929#### STG Inflow for Flat Plate
930
931Using the STG Inflow for the blasius problem adds the following command-line options:
932
933:::{list-table} Blasius Runtime Options
934:header-rows: 1
935
936* - Option
937  - Description
938  - Default value
939  - Unit
940
941* - `-stg_inflow_path`
942  - Path to the STGInflow file
943  - `./STGInflow.dat`
944  -
945
946* - `-stg_rand_path`
947  - Path to the STGRand file
948  - `./STGRand.dat`
949  -
950
951* - `-stg_alpha`
952  - Growth rate of the wavemodes
953  - `1.01`
954  -
955
956* - `-stg_u0`
957  - Convective velocity, $U_0$
958  - `0.0`
959  - `m/s`
960
961* - `-stg_mean_only`
962  - Only impose the mean velocity (no fluctutations)
963  - `false`
964  -
965
966* - `-stg_strong`
967  - Strongly enforce the STG inflow boundary condition
968  - `false`
969  -
970
971* - `-stg_fluctuating_IC`
972  - "Extrude" the fluctuations through the domain as an initial condition
973  - `false`
974  -
975
976:::
977
978This problem can be run with the `blasius.yaml` file via:
979
980```
981./navierstokes -options_file blasius.yaml -stg_use true
982```
983
984Note the added `-stg_use true` flag
985This overrides the `stg: use: false` setting in the `blasius.yaml` file, enabling the use of the STG inflow.
986