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