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_type` 40 - Run in test mode and specify whether solution (`solver`) or turbulent statistics (`turb_spanstats`) output should be verified 41 - `none` 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