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