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