1*965d9f74SJames Wright# Runtime options 2*965d9f74SJames Wright 3*965d9f74SJames Wright## Common Options 4*965d9f74SJames WrightThe Navier-Stokes mini-app is controlled via command-line options. 5*965d9f74SJames WrightThe following options are common among all problem types: 6*965d9f74SJames Wright 7*965d9f74SJames Wright:::{list-table} Common Runtime Options 8*965d9f74SJames Wright:header-rows: 1 9*965d9f74SJames Wright 10*965d9f74SJames Wright* - Option 11*965d9f74SJames Wright - Description 12*965d9f74SJames Wright - Default value 13*965d9f74SJames Wright 14*965d9f74SJames Wright* - `-ceed` 15*965d9f74SJames Wright - CEED resource specifier 16*965d9f74SJames Wright - `/cpu/self/opt/blocked` 17*965d9f74SJames Wright 18*965d9f74SJames Wright* - `-test_type` 19*965d9f74SJames Wright - Run in test mode and specify whether solution (`solver`) or turbulent statistics (`turb_spanstats`) output should be verified 20*965d9f74SJames Wright - `none` 21*965d9f74SJames Wright 22*965d9f74SJames Wright* - `-compare_final_state_atol` 23*965d9f74SJames Wright - Test absolute tolerance 24*965d9f74SJames Wright - `1E-11` 25*965d9f74SJames Wright 26*965d9f74SJames Wright* - `-compare_final_state_filename` 27*965d9f74SJames Wright - Test filename 28*965d9f74SJames Wright - 29*965d9f74SJames Wright 30*965d9f74SJames Wright* - `-problem` 31*965d9f74SJames Wright - Problem to solve (`advection`, `density_current`, `euler_vortex`, `shocktube`, `blasius`, `channel`, `gaussian_wave`, and `taylor_green`) 32*965d9f74SJames Wright - `density_current` 33*965d9f74SJames Wright 34*965d9f74SJames Wright* - `-implicit` 35*965d9f74SJames Wright - Use implicit time integrator formulation 36*965d9f74SJames Wright - 37*965d9f74SJames Wright 38*965d9f74SJames Wright* - `-degree` 39*965d9f74SJames Wright - Polynomial degree of tensor product basis (must be >= 1) 40*965d9f74SJames Wright - `1` 41*965d9f74SJames Wright 42*965d9f74SJames Wright* - `-q_extra` 43*965d9f74SJames Wright - Number of extra quadrature points 44*965d9f74SJames Wright - `0` 45*965d9f74SJames Wright 46*965d9f74SJames Wright* - `-ts_monitor_solution` 47*965d9f74SJames Wright - PETSc output format, such as `cgns:output-%d.cgns` (requires PETSc `--download-cgns`) 48*965d9f74SJames Wright - 49*965d9f74SJames Wright 50*965d9f74SJames Wright* - `-ts_monitor_solution_interval` 51*965d9f74SJames Wright - Number of time steps between visualization output frames. 52*965d9f74SJames Wright - `1` 53*965d9f74SJames Wright 54*965d9f74SJames Wright* - `-viewer_cgns_batch_size` 55*965d9f74SJames Wright - Number of frames written per CGNS file if the CGNS file name includes a format specifier (`%d`). 56*965d9f74SJames Wright - `20` 57*965d9f74SJames Wright 58*965d9f74SJames Wright* - `-checkpoint_interval` 59*965d9f74SJames Wright - Number of steps between writing binary checkpoints. `0` has no output, `-1` outputs final state only 60*965d9f74SJames Wright - `10` 61*965d9f74SJames Wright 62*965d9f74SJames Wright* - `-checkpoint_vtk` 63*965d9f74SJames Wright - Checkpoints include VTK (`*.vtu`) files for visualization. Consider `-ts_monitor_solution`instead. 64*965d9f74SJames Wright - `false` 65*965d9f74SJames Wright 66*965d9f74SJames Wright* - `-viz_refine` 67*965d9f74SJames Wright - Use regular refinement for VTK visualization 68*965d9f74SJames Wright - `0` 69*965d9f74SJames Wright 70*965d9f74SJames Wright* - `-output_dir` 71*965d9f74SJames Wright - Output directory for binary checkpoints and VTK files (if enabled). 72*965d9f74SJames Wright - `.` 73*965d9f74SJames Wright 74*965d9f74SJames Wright* - `-output_add_stepnum2bin` 75*965d9f74SJames Wright - Whether to add step numbers to output binary files 76*965d9f74SJames Wright - `false` 77*965d9f74SJames Wright 78*965d9f74SJames Wright* - `-continue` 79*965d9f74SJames Wright - Continue from previous solution (input is step number of previous solution) 80*965d9f74SJames Wright - `0` 81*965d9f74SJames Wright 82*965d9f74SJames Wright* - `-continue_filename` 83*965d9f74SJames Wright - Path to solution binary file from which to continue from 84*965d9f74SJames Wright - `[output_dir]/ns-solution.bin` 85*965d9f74SJames Wright 86*965d9f74SJames Wright* - `-continue_time_filename` 87*965d9f74SJames Wright - Path to time stamp binary file (only for legacy checkpoints) 88*965d9f74SJames Wright - `[output_dir]/ns-time.bin` 89*965d9f74SJames Wright 90*965d9f74SJames Wright* - `-bc_wall` 91*965d9f74SJames Wright - Use wall boundary conditions on this list of faces 92*965d9f74SJames Wright - 93*965d9f74SJames Wright 94*965d9f74SJames Wright* - `-wall_comps` 95*965d9f74SJames Wright - An array of constrained component numbers for wall BCs 96*965d9f74SJames Wright - 97*965d9f74SJames Wright 98*965d9f74SJames Wright* - `-bc_slip` 99*965d9f74SJames Wright - Use weak slip boundary condition on this list of faces 100*965d9f74SJames Wright - 101*965d9f74SJames Wright 102*965d9f74SJames Wright* - `-bc_symmetry_x` 103*965d9f74SJames Wright - Use symmetry boundary conditions, for the x component, on this list of faces 104*965d9f74SJames Wright - 105*965d9f74SJames Wright 106*965d9f74SJames Wright* - `-bc_symmetry_y` 107*965d9f74SJames Wright - Use symmetry boundary conditions, for the y component, on this list of faces 108*965d9f74SJames Wright - 109*965d9f74SJames Wright 110*965d9f74SJames Wright* - `-bc_symmetry_z` 111*965d9f74SJames Wright - Use symmetry boundary conditions, for the z component, on this list of faces 112*965d9f74SJames Wright - 113*965d9f74SJames Wright 114*965d9f74SJames Wright* - `-bc_inflow` 115*965d9f74SJames Wright - Use inflow boundary conditions on this list of faces 116*965d9f74SJames Wright - 117*965d9f74SJames Wright 118*965d9f74SJames Wright* - `-bc_outflow` 119*965d9f74SJames Wright - Use outflow boundary conditions on this list of faces 120*965d9f74SJames Wright - 121*965d9f74SJames Wright 122*965d9f74SJames Wright* - `-bc_freestream` 123*965d9f74SJames Wright - Use freestream boundary conditions on this list of faces 124*965d9f74SJames Wright - 125*965d9f74SJames Wright 126*965d9f74SJames Wright* - `-ts_monitor_turbulence_spanstats_collect_interval` 127*965d9f74SJames Wright - Number of timesteps between statistics collection 128*965d9f74SJames Wright - `1` 129*965d9f74SJames Wright 130*965d9f74SJames Wright* - `-ts_monitor_turbulence_spanstats_viewer` 131*965d9f74SJames Wright - Sets the PetscViewer for the statistics file writing, such as `cgns:output-%d.cgns` (requires PETSc `--download-cgns`). Also turns the statistics collection on. 132*965d9f74SJames Wright - 133*965d9f74SJames Wright 134*965d9f74SJames Wright* - `-ts_monitor_turbulence_spanstats_viewer_interval` 135*965d9f74SJames Wright - Number of timesteps between statistics file writing (`-1` means only at end of run) 136*965d9f74SJames Wright - `-1` 137*965d9f74SJames Wright 138*965d9f74SJames Wright* - `-ts_monitor_turbulence_spanstats_viewer_cgns_batch_size` 139*965d9f74SJames Wright - Number of frames written per CGNS file if the CGNS file name includes a format specifier (`%d`). 140*965d9f74SJames Wright - `20` 141*965d9f74SJames Wright 142*965d9f74SJames Wright* - `-ts_monitor_wall_force` 143*965d9f74SJames Wright - Viewer for the force on each no-slip wall, e.g., `ascii:force.csv:ascii_csv` to write a CSV file. 144*965d9f74SJames Wright - 145*965d9f74SJames Wright 146*965d9f74SJames Wright* - `-mesh_transform` 147*965d9f74SJames Wright - Transform the mesh, usually for an initial box mesh. 148*965d9f74SJames Wright - `none` 149*965d9f74SJames Wright 150*965d9f74SJames Wright* - `-snes_view` 151*965d9f74SJames Wright - View PETSc `SNES` nonlinear solver configuration 152*965d9f74SJames Wright - 153*965d9f74SJames Wright 154*965d9f74SJames Wright* - `-log_view` 155*965d9f74SJames Wright - View PETSc performance log 156*965d9f74SJames Wright - 157*965d9f74SJames Wright 158*965d9f74SJames Wright* - `-help` 159*965d9f74SJames Wright - View comprehensive information about run-time options 160*965d9f74SJames Wright - 161*965d9f74SJames Wright::: 162*965d9f74SJames Wright 163*965d9f74SJames WrightFor 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_symmetry_x`, `-bc_symmetry_y`, and `-bc_symmetry_z` are: 164*965d9f74SJames Wright 165*965d9f74SJames Wright:::{list-table} 2D Face ID Labels 166*965d9f74SJames Wright:header-rows: 1 167*965d9f74SJames Wright* - PETSc Face Name 168*965d9f74SJames Wright - Cartesian direction 169*965d9f74SJames Wright - Face ID 170*965d9f74SJames Wright 171*965d9f74SJames Wright* - faceMarkerBottom 172*965d9f74SJames Wright - -z 173*965d9f74SJames Wright - 1 174*965d9f74SJames Wright 175*965d9f74SJames Wright* - faceMarkerRight 176*965d9f74SJames Wright - +x 177*965d9f74SJames Wright - 2 178*965d9f74SJames Wright 179*965d9f74SJames Wright* - faceMarkerTop 180*965d9f74SJames Wright - +z 181*965d9f74SJames Wright - 3 182*965d9f74SJames Wright 183*965d9f74SJames Wright* - faceMarkerLeft 184*965d9f74SJames Wright - -x 185*965d9f74SJames Wright - 4 186*965d9f74SJames Wright::: 187*965d9f74SJames Wright 188*965d9f74SJames Wright:::{list-table} 3D Face ID Labels 189*965d9f74SJames Wright:header-rows: 1 190*965d9f74SJames Wright* - PETSc Face Name 191*965d9f74SJames Wright - Cartesian direction 192*965d9f74SJames Wright - Face ID 193*965d9f74SJames Wright 194*965d9f74SJames Wright* - faceMarkerBottom 195*965d9f74SJames Wright - -z 196*965d9f74SJames Wright - 1 197*965d9f74SJames Wright 198*965d9f74SJames Wright* - faceMarkerTop 199*965d9f74SJames Wright - +z 200*965d9f74SJames Wright - 2 201*965d9f74SJames Wright 202*965d9f74SJames Wright* - faceMarkerFront 203*965d9f74SJames Wright - -y 204*965d9f74SJames Wright - 3 205*965d9f74SJames Wright 206*965d9f74SJames Wright* - faceMarkerBack 207*965d9f74SJames Wright - +y 208*965d9f74SJames Wright - 4 209*965d9f74SJames Wright 210*965d9f74SJames Wright* - faceMarkerRight 211*965d9f74SJames Wright - +x 212*965d9f74SJames Wright - 5 213*965d9f74SJames Wright 214*965d9f74SJames Wright* - faceMarkerLeft 215*965d9f74SJames Wright - -x 216*965d9f74SJames Wright - 6 217*965d9f74SJames Wright::: 218*965d9f74SJames Wright 219*965d9f74SJames Wright## Boundary conditions 220*965d9f74SJames Wright 221*965d9f74SJames WrightBoundary conditions for compressible viscous flows are notoriously tricky. 222*965d9f74SJames WrightHere we offer some recommendations. 223*965d9f74SJames Wright 224*965d9f74SJames Wright### Inflow 225*965d9f74SJames Wright 226*965d9f74SJames WrightIf 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). 227*965d9f74SJames WrightIt is stable and the least reflective boundary condition for acoustics. 228*965d9f74SJames Wright 229*965d9f74SJames WrightIf near a viscous wall, you may want a specified inflow profile. 230*965d9f74SJames WrightUse `bc_inflow` and see {ref}`example-blasius` and discussion of synthetic turbulence generation for ways to analytically generate developed inflow profiles. 231*965d9f74SJames WrightThese 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. 232*965d9f74SJames WrightThe strong approach gives sharper resolution of velocity structures. 233*965d9f74SJames WrightWe have described the primitive variable formulation here; the conservative variants are similar, but not equivalent. 234*965d9f74SJames Wright 235*965d9f74SJames Wright### Outflow 236*965d9f74SJames Wright 237*965d9f74SJames WrightIf you know the complete exterior state, `bc_freestream` is the least reflective boundary condition, but is disruptive to viscous flow structures. 238*965d9f74SJames WrightIf thermal anomalies must exit the domain, the Riemann solver must resolve the contact wave to avoid reflections. 239*965d9f74SJames WrightThe default Riemann solver, HLLC, is sufficient in this regard while the simpler HLL converts thermal structures exiting the domain into grid-scale reflecting acoustics. 240*965d9f74SJames Wright 241*965d9f74SJames WrightIf 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. 242*965d9f74SJames Wright 243*965d9f74SJames WrightThe 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). 244*965d9f74SJames WrightIn our experience, `riemann` is slightly less reflective but produces similar flows in cases of strict outflow. 245*965d9f74SJames WrightThe `pressure` variant is retained to facilitate comparison with other codes, such as PHASTA-C, but we recommend `riemann` for general use. 246*965d9f74SJames Wright 247*965d9f74SJames Wright### Periodicity 248*965d9f74SJames Wright 249*965d9f74SJames WrightPETSc provides two ways to specify periodicity: 250*965d9f74SJames Wright 251*965d9f74SJames Wright1. Topological periodicity, in which the donor and receiver dofs are the same, obtained using: 252*965d9f74SJames Wright 253*965d9f74SJames Wright```yaml 254*965d9f74SJames Wrightdm_plex: 255*965d9f74SJames Wright shape: box 256*965d9f74SJames Wright box_faces: 10,12,4 257*965d9f74SJames Wright box_bd: none,none,periodic 258*965d9f74SJames Wright``` 259*965d9f74SJames Wright 260*965d9f74SJames WrightThe coordinates for such cases are stored as a new field with special cell-based indexing to enable wrapping through the boundary. 261*965d9f74SJames WrightThis choice of coordinates prevents evaluating boundary integrals that cross the periodicity, such as for the outflow Riemann problem in the presence of spanwise periodicity. 262*965d9f74SJames Wright 263*965d9f74SJames Wright2. Isoperiodicity, in which the donor and receiver dofs are distinct in local vectors. This is obtained using `zbox`, as in: 264*965d9f74SJames Wright 265*965d9f74SJames Wright```yaml 266*965d9f74SJames Wrightdm_plex: 267*965d9f74SJames Wright shape: zbox 268*965d9f74SJames Wright box_faces: 10,12,4 269*965d9f74SJames Wright box_bd: none,none,periodic 270*965d9f74SJames Wright``` 271*965d9f74SJames Wright 272*965d9f74SJames WrightIsoperiodicity enables standard boundary integrals, and is recommended for general use. 273*965d9f74SJames WrightAt the time of this writing, it only supports one direction of periodicity. 274*965d9f74SJames WrightThe `zbox` method uses [Z-ordering](https://en.wikipedia.org/wiki/Z-order_curve) to construct the mesh in parallel and provide an adequate initial partition, which makes it higher performance and avoids needing a partitioning package. 275*965d9f74SJames Wright 276*965d9f74SJames Wright## Advection 277*965d9f74SJames Wright 278*965d9f74SJames WrightFor 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$. 279*965d9f74SJames WrightThe advection problems can be run in both 2D and 3D, based on the DM defined for the problem. 280*965d9f74SJames WrightThe following additional command-line options are available: 281*965d9f74SJames Wright 282*965d9f74SJames Wright:::{list-table} Advection Runtime Options 283*965d9f74SJames Wright:header-rows: 1 284*965d9f74SJames Wright 285*965d9f74SJames Wright* - Option 286*965d9f74SJames Wright - Description 287*965d9f74SJames Wright - Default value 288*965d9f74SJames Wright - Unit 289*965d9f74SJames Wright 290*965d9f74SJames Wright* - `-rc` 291*965d9f74SJames Wright - Characteristic radius of thermal bubble 292*965d9f74SJames Wright - `1000` 293*965d9f74SJames Wright - `m` 294*965d9f74SJames Wright 295*965d9f74SJames Wright* - `-units_meter` 296*965d9f74SJames Wright - 1 meter in scaled length units 297*965d9f74SJames Wright - `1E-2` 298*965d9f74SJames Wright - 299*965d9f74SJames Wright 300*965d9f74SJames Wright* - `-units_second` 301*965d9f74SJames Wright - 1 second in scaled time units 302*965d9f74SJames Wright - `1E-2` 303*965d9f74SJames Wright - 304*965d9f74SJames Wright 305*965d9f74SJames Wright* - `-units_kilogram` 306*965d9f74SJames Wright - 1 kilogram in scaled mass units 307*965d9f74SJames Wright - `1E-6` 308*965d9f74SJames Wright - 309*965d9f74SJames Wright 310*965d9f74SJames Wright* - `-strong_form` 311*965d9f74SJames Wright - Strong (1) or weak/integrated by parts (0) residual 312*965d9f74SJames Wright - `0` 313*965d9f74SJames Wright - 314*965d9f74SJames Wright 315*965d9f74SJames Wright* - `-stab` 316*965d9f74SJames Wright - Stabilization method (`none`, `su`, or `supg`) 317*965d9f74SJames Wright - `none` 318*965d9f74SJames Wright - 319*965d9f74SJames Wright 320*965d9f74SJames Wright* - `-stab_tau` 321*965d9f74SJames Wright - Formulation for $\tau$ in stabilization (`ctau`, `advdiff_shakib`) 322*965d9f74SJames Wright - `ctau` 323*965d9f74SJames Wright - 324*965d9f74SJames Wright 325*965d9f74SJames Wright* - `-Ctau_t` 326*965d9f74SJames Wright - Scaling factor on the temporal portion of the $\tau$ formulation 327*965d9f74SJames Wright - 0. 328*965d9f74SJames Wright - 329*965d9f74SJames Wright 330*965d9f74SJames Wright* - `-Ctau_a` 331*965d9f74SJames Wright - Scaling factor on the advection portion of the $\tau$ formulation 332*965d9f74SJames Wright - $P^2$ 333*965d9f74SJames Wright - 334*965d9f74SJames Wright 335*965d9f74SJames Wright* - `-CtauS` 336*965d9f74SJames Wright - Scale coefficient for stabilization tau (nondimensional) 337*965d9f74SJames Wright - `0` 338*965d9f74SJames Wright - 339*965d9f74SJames Wright 340*965d9f74SJames Wright* - `-wind_type` 341*965d9f74SJames Wright - Wind type in Advection (`rotation` or `translation`) 342*965d9f74SJames Wright - `rotation` 343*965d9f74SJames Wright - 344*965d9f74SJames Wright 345*965d9f74SJames Wright* - `-wind_translation` 346*965d9f74SJames Wright - Constant wind vector when `-wind_type translation` 347*965d9f74SJames Wright - `1,0,0` 348*965d9f74SJames Wright - 349*965d9f74SJames Wright 350*965d9f74SJames Wright* - `-diffusion_coeff` 351*965d9f74SJames Wright - Diffusion coefficient 352*965d9f74SJames Wright - `0` 353*965d9f74SJames Wright - 354*965d9f74SJames Wright 355*965d9f74SJames Wright* - `-E_wind` 356*965d9f74SJames Wright - Total energy of inflow wind when `-wind_type translation` 357*965d9f74SJames Wright - `1E6` 358*965d9f74SJames Wright - `J` 359*965d9f74SJames Wright 360*965d9f74SJames Wright* - `-advection_ic_type` 361*965d9f74SJames Wright - Initial condition type, from `sphere`, `cylinder`, `cosine_hill`, and `skew` 362*965d9f74SJames Wright - `sphere` 363*965d9f74SJames Wright - 364*965d9f74SJames Wright 365*965d9f74SJames Wright* - `-bubble_continuity` 366*965d9f74SJames Wright - Different shapes for `sphere` and `cylinder` initial conditions, from `smooth`, `back_sharp`, `thick`, or `cosine` 367*965d9f74SJames Wright - `smooth` 368*965d9f74SJames Wright - 369*965d9f74SJames Wright::: 370*965d9f74SJames Wright 371*965d9f74SJames WrightFor 3D advection, an example of the `rotation` mode can be run with: 372*965d9f74SJames Wright 373*965d9f74SJames Wright``` 374*965d9f74SJames Wright./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 375*965d9f74SJames Wright``` 376*965d9f74SJames Wright 377*965d9f74SJames Wrightand the `translation` mode with: 378*965d9f74SJames Wright 379*965d9f74SJames Wright``` 380*965d9f74SJames Wright./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 381*965d9f74SJames Wright``` 382*965d9f74SJames Wright 383*965d9f74SJames WrightFor 2D advection, an example of the `rotation` mode can be run with: 384*965d9f74SJames Wright 385*965d9f74SJames Wright``` 386*965d9f74SJames Wright./navierstokes -problem advection -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 387*965d9f74SJames Wright``` 388*965d9f74SJames Wright 389*965d9f74SJames Wrightand the `translation` mode with: 390*965d9f74SJames Wright 391*965d9f74SJames Wright``` 392*965d9f74SJames Wright./navierstokes -problem advection -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 393*965d9f74SJames Wright``` 394*965d9f74SJames WrightNote the lengths in `-dm_plex_box_upper` are given in meters, and will be nondimensionalized according to `-units_meter`. 395*965d9f74SJames Wright 396*965d9f74SJames Wright## Inviscid Ideal Gas 397*965d9f74SJames Wright 398*965d9f74SJames Wright### Isentropic Euler vortex 399*965d9f74SJames Wright 400*965d9f74SJames WrightFor the Isentropic Vortex problem, the following additional command-line options are available: 401*965d9f74SJames Wright 402*965d9f74SJames Wright:::{list-table} Isentropic Vortex Runtime Options 403*965d9f74SJames Wright:header-rows: 1 404*965d9f74SJames Wright 405*965d9f74SJames Wright* - Option 406*965d9f74SJames Wright - Description 407*965d9f74SJames Wright - Default value 408*965d9f74SJames Wright - Unit 409*965d9f74SJames Wright 410*965d9f74SJames Wright* - `-center` 411*965d9f74SJames Wright - Location of vortex center 412*965d9f74SJames Wright - `(lx,ly,lz)/2` 413*965d9f74SJames Wright - `(m,m,m)` 414*965d9f74SJames Wright 415*965d9f74SJames Wright* - `-units_meter` 416*965d9f74SJames Wright - 1 meter in scaled length units 417*965d9f74SJames Wright - `1E-2` 418*965d9f74SJames Wright - 419*965d9f74SJames Wright 420*965d9f74SJames Wright* - `-units_second` 421*965d9f74SJames Wright - 1 second in scaled time units 422*965d9f74SJames Wright - `1E-2` 423*965d9f74SJames Wright - 424*965d9f74SJames Wright 425*965d9f74SJames Wright* - `-mean_velocity` 426*965d9f74SJames Wright - Background velocity vector 427*965d9f74SJames Wright - `(1,1,0)` 428*965d9f74SJames Wright - 429*965d9f74SJames Wright 430*965d9f74SJames Wright* - `-vortex_strength` 431*965d9f74SJames Wright - Strength of vortex < 10 432*965d9f74SJames Wright - `5` 433*965d9f74SJames Wright - 434*965d9f74SJames Wright 435*965d9f74SJames Wright* - `-c_tau` 436*965d9f74SJames Wright - Stabilization constant 437*965d9f74SJames Wright - `0.5` 438*965d9f74SJames Wright - 439*965d9f74SJames Wright::: 440*965d9f74SJames Wright 441*965d9f74SJames WrightThis problem can be run with: 442*965d9f74SJames Wright 443*965d9f74SJames Wright``` 444*965d9f74SJames Wright./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_symmetry_z 1,2 -mean_velocity .5,-.8,0. 445*965d9f74SJames Wright``` 446*965d9f74SJames Wright 447*965d9f74SJames Wright### Sod shock tube 448*965d9f74SJames Wright 449*965d9f74SJames WrightFor the Shock Tube problem, the following additional command-line options are available: 450*965d9f74SJames Wright 451*965d9f74SJames Wright:::{list-table} Shock Tube Runtime Options 452*965d9f74SJames Wright:header-rows: 1 453*965d9f74SJames Wright 454*965d9f74SJames Wright* - Option 455*965d9f74SJames Wright - Description 456*965d9f74SJames Wright - Default value 457*965d9f74SJames Wright - Unit 458*965d9f74SJames Wright 459*965d9f74SJames Wright* - `-units_meter` 460*965d9f74SJames Wright - 1 meter in scaled length units 461*965d9f74SJames Wright - `1E-2` 462*965d9f74SJames Wright - 463*965d9f74SJames Wright 464*965d9f74SJames Wright* - `-units_second` 465*965d9f74SJames Wright - 1 second in scaled time units 466*965d9f74SJames Wright - `1E-2` 467*965d9f74SJames Wright - 468*965d9f74SJames Wright 469*965d9f74SJames Wright* - `-yzb` 470*965d9f74SJames Wright - Use YZB discontinuity capturing 471*965d9f74SJames Wright - `none` 472*965d9f74SJames Wright - 473*965d9f74SJames Wright 474*965d9f74SJames Wright* - `-stab` 475*965d9f74SJames Wright - Stabilization method (`none`, `su`, or `supg`) 476*965d9f74SJames Wright - `none` 477*965d9f74SJames Wright - 478*965d9f74SJames Wright::: 479*965d9f74SJames Wright 480*965d9f74SJames WrightThis problem can be run with: 481*965d9f74SJames Wright 482*965d9f74SJames Wright``` 483*965d9f74SJames Wright./navierstokes -problem shocktube -yzb -stab su -bc_symmetry_z 3,4 -bc_symmetry_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 484*965d9f74SJames Wright``` 485*965d9f74SJames Wright 486*965d9f74SJames Wright## Newtonian viscosity, Ideal Gas 487*965d9f74SJames Wright 488*965d9f74SJames WrightFor the Density Current, Channel, and Blasius problems, the following common command-line options are available: 489*965d9f74SJames Wright 490*965d9f74SJames Wright:::{list-table} Newtonian Ideal Gas problems Runtime Options 491*965d9f74SJames Wright:header-rows: 1 492*965d9f74SJames Wright 493*965d9f74SJames Wright* - Option 494*965d9f74SJames Wright - Description 495*965d9f74SJames Wright - Default value 496*965d9f74SJames Wright - Unit 497*965d9f74SJames Wright 498*965d9f74SJames Wright* - `-units_meter` 499*965d9f74SJames Wright - 1 meter in scaled length units 500*965d9f74SJames Wright - `1` 501*965d9f74SJames Wright - 502*965d9f74SJames Wright 503*965d9f74SJames Wright* - `-units_second` 504*965d9f74SJames Wright - 1 second in scaled time units 505*965d9f74SJames Wright - `1` 506*965d9f74SJames Wright - 507*965d9f74SJames Wright 508*965d9f74SJames Wright* - `-units_kilogram` 509*965d9f74SJames Wright - 1 kilogram in scaled mass units 510*965d9f74SJames Wright - `1` 511*965d9f74SJames Wright - 512*965d9f74SJames Wright 513*965d9f74SJames Wright* - `-units_Kelvin` 514*965d9f74SJames Wright - 1 Kelvin in scaled temperature units 515*965d9f74SJames Wright - `1` 516*965d9f74SJames Wright - 517*965d9f74SJames Wright 518*965d9f74SJames Wright* - `-stab` 519*965d9f74SJames Wright - Stabilization method (`none`, `su`, or `supg`) 520*965d9f74SJames Wright - `none` 521*965d9f74SJames Wright - 522*965d9f74SJames Wright 523*965d9f74SJames Wright* - `-c_tau` 524*965d9f74SJames Wright - Stabilization constant, $c_\tau$ 525*965d9f74SJames Wright - `0.5` 526*965d9f74SJames Wright - 527*965d9f74SJames Wright 528*965d9f74SJames Wright* - `-Ctau_t` 529*965d9f74SJames Wright - Stabilization time constant, $C_t$ 530*965d9f74SJames Wright - `1.0` 531*965d9f74SJames Wright - 532*965d9f74SJames Wright 533*965d9f74SJames Wright* - `-Ctau_v` 534*965d9f74SJames Wright - Stabilization viscous constant, $C_v$ 535*965d9f74SJames Wright - `36, 60, 128 for degree = 1, 2, 3` 536*965d9f74SJames Wright - 537*965d9f74SJames Wright 538*965d9f74SJames Wright* - `-Ctau_C` 539*965d9f74SJames Wright - Stabilization continuity constant, $C_c$ 540*965d9f74SJames Wright - `1.0` 541*965d9f74SJames Wright - 542*965d9f74SJames Wright 543*965d9f74SJames Wright* - `-Ctau_M` 544*965d9f74SJames Wright - Stabilization momentum constant, $C_m$ 545*965d9f74SJames Wright - `1.0` 546*965d9f74SJames Wright - 547*965d9f74SJames Wright 548*965d9f74SJames Wright* - `-Ctau_E` 549*965d9f74SJames Wright - Stabilization energy constant, $C_E$ 550*965d9f74SJames Wright - `1.0` 551*965d9f74SJames Wright - 552*965d9f74SJames Wright 553*965d9f74SJames Wright* - `-cv` 554*965d9f74SJames Wright - Heat capacity at constant volume 555*965d9f74SJames Wright - `717` 556*965d9f74SJames Wright - `J/(kg K)` 557*965d9f74SJames Wright 558*965d9f74SJames Wright* - `-cp` 559*965d9f74SJames Wright - Heat capacity at constant pressure 560*965d9f74SJames Wright - `1004` 561*965d9f74SJames Wright - `J/(kg K)` 562*965d9f74SJames Wright 563*965d9f74SJames Wright* - `-gravity` 564*965d9f74SJames Wright - Gravitational acceleration vector 565*965d9f74SJames Wright - `0,0,0` 566*965d9f74SJames Wright - `m/s^2` 567*965d9f74SJames Wright 568*965d9f74SJames Wright* - `-lambda` 569*965d9f74SJames Wright - Stokes hypothesis second viscosity coefficient 570*965d9f74SJames Wright - `-2/3` 571*965d9f74SJames Wright - 572*965d9f74SJames Wright 573*965d9f74SJames Wright* - `-mu` 574*965d9f74SJames Wright - Shear dynamic viscosity coefficient 575*965d9f74SJames Wright - `1.8e-5` 576*965d9f74SJames Wright - `Pa s` 577*965d9f74SJames Wright 578*965d9f74SJames Wright* - `-k` 579*965d9f74SJames Wright - Thermal conductivity 580*965d9f74SJames Wright - `0.02638` 581*965d9f74SJames Wright - `W/(m K)` 582*965d9f74SJames Wright 583*965d9f74SJames Wright* - `-newtonian_unit_tests` 584*965d9f74SJames Wright - Developer option to test properties 585*965d9f74SJames Wright - `false` 586*965d9f74SJames Wright - boolean 587*965d9f74SJames Wright 588*965d9f74SJames Wright* - `-state_var` 589*965d9f74SJames Wright - State variables to solve solution with. `conservative` ($\rho, \rho \bm{u}, \rho e$), `primitive` ($P, \bm{u}, T$), or `entropy` ($\frac{\gamma - s}{\gamma - 1} - \frac{\rho}{P} (e - c_v T),\ \frac{\rho}{P} \bm{u},\ -\frac{\rho}{P}$) where $s = \ln(P\rho^{-\gamma})$ 590*965d9f74SJames Wright - `conservative` 591*965d9f74SJames Wright - string 592*965d9f74SJames Wright 593*965d9f74SJames Wright* - `-idl_decay_time` 594*965d9f74SJames Wright - Characteristic timescale of the pressure deviance decay. The timestep is good starting point 595*965d9f74SJames Wright - `-1` (disabled) 596*965d9f74SJames Wright - `s` 597*965d9f74SJames Wright 598*965d9f74SJames Wright* - `-idl_start` 599*965d9f74SJames Wright - Start of IDL in the x direction 600*965d9f74SJames Wright - `0` 601*965d9f74SJames Wright - `m` 602*965d9f74SJames Wright 603*965d9f74SJames Wright* - `-idl_length` 604*965d9f74SJames Wright - Length of IDL in the positive x direction 605*965d9f74SJames Wright - `0` 606*965d9f74SJames Wright - `m` 607*965d9f74SJames Wright 608*965d9f74SJames Wright* - `-idl_pressure` 609*965d9f74SJames Wright - Pressure used for IDL reference pressure 610*965d9f74SJames Wright - `-reference_pressure` 611*965d9f74SJames Wright - `Pa` 612*965d9f74SJames Wright 613*965d9f74SJames Wright* - `-sgs_model_type` 614*965d9f74SJames Wright - Type of subgrid stress model to use. Currently only `data_driven` is available 615*965d9f74SJames Wright - `none` 616*965d9f74SJames Wright - string 617*965d9f74SJames Wright 618*965d9f74SJames Wright* - `-sgs_model_dd_leakyrelu_alpha` 619*965d9f74SJames Wright - Slope parameter for Leaky ReLU activation function. `0` corresponds to normal ReLU 620*965d9f74SJames Wright - 0 621*965d9f74SJames Wright - 622*965d9f74SJames Wright 623*965d9f74SJames Wright* - `-sgs_model_dd_parameter_dir` 624*965d9f74SJames Wright - Path to directory with data-driven model parameters (weights, biases, etc.) 625*965d9f74SJames Wright - `./dd_sgs_parameters` 626*965d9f74SJames Wright - string 627*965d9f74SJames Wright 628*965d9f74SJames Wright* - `-sgs_model_dd_model_implementation` 629*965d9f74SJames Wright - Which computational implementation to use for SGS DD model (`fused`, `sequential_ceed`, `sequential_torch`) 630*965d9f74SJames Wright - `fused` 631*965d9f74SJames Wright - string 632*965d9f74SJames Wright 633*965d9f74SJames Wright* - `-sgs_model_dd_torch_model_path` 634*965d9f74SJames Wright - Path to the PyTorch `*.pt` file containing the DD inference model 635*965d9f74SJames Wright - 636*965d9f74SJames Wright - string 637*965d9f74SJames Wright 638*965d9f74SJames Wright* - `-sgs_model_dd_torch_model_device` 639*965d9f74SJames Wright - What hardware to perform the model inference on (`cpu`, `cuda`, `hip`, `xpu`) 640*965d9f74SJames Wright - Default matches the libCEED backend 641*965d9f74SJames Wright - string 642*965d9f74SJames Wright 643*965d9f74SJames Wright* - `-diff_filter_monitor` 644*965d9f74SJames Wright - Enable differential filter TSMonitor 645*965d9f74SJames Wright - `false` 646*965d9f74SJames Wright - boolean 647*965d9f74SJames Wright 648*965d9f74SJames Wright* - `-diff_filter_grid_based_width` 649*965d9f74SJames Wright - Use filter width based on the grid size 650*965d9f74SJames Wright - `false` 651*965d9f74SJames Wright - boolean 652*965d9f74SJames Wright 653*965d9f74SJames Wright* - `-diff_filter_width_scaling` 654*965d9f74SJames Wright - Anisotropic scaling for filter width in wall-aligned coordinates (snz) 655*965d9f74SJames Wright - `1,1,1` 656*965d9f74SJames Wright - `m` 657*965d9f74SJames Wright 658*965d9f74SJames Wright* - `-diff_filter_kernel_scaling` 659*965d9f74SJames Wright - Scaling to make differential kernel size equivalent to other filter kernels 660*965d9f74SJames Wright - `0.1` 661*965d9f74SJames Wright - `m^2` 662*965d9f74SJames Wright 663*965d9f74SJames Wright* - `-diff_filter_wall_damping_function` 664*965d9f74SJames Wright - Damping function to use at the wall for anisotropic filtering (`none`, `van_driest`) 665*965d9f74SJames Wright - `none` 666*965d9f74SJames Wright - string 667*965d9f74SJames Wright 668*965d9f74SJames Wright* - `-diff_filter_wall_damping_constant` 669*965d9f74SJames Wright - Constant for the wall-damping function. $A^+$ for `van_driest` damping function. 670*965d9f74SJames Wright - 25 671*965d9f74SJames Wright - 672*965d9f74SJames Wright 673*965d9f74SJames Wright* - `-diff_filter_friction_length` 674*965d9f74SJames Wright - Friction length associated with the flow, $\delta_\nu$. Used in wall-damping functions 675*965d9f74SJames Wright - 0 676*965d9f74SJames Wright - `m` 677*965d9f74SJames Wright 678*965d9f74SJames Wright* - `-sgs_train_enable` 679*965d9f74SJames Wright - Whether to enable *in situ* training of data-driven SGS model. Require building with SmartRedis. 680*965d9f74SJames Wright - `false` 681*965d9f74SJames Wright - boolean 682*965d9f74SJames Wright 683*965d9f74SJames Wright* - `-sgs_train_write_data_interval` 684*965d9f74SJames Wright - Number of timesteps between writing training data into SmartRedis database 685*965d9f74SJames Wright - `1` 686*965d9f74SJames Wright - 687*965d9f74SJames Wright 688*965d9f74SJames Wright* - `-sgs_train_overwrite_data` 689*965d9f74SJames Wright - Whether new training data should overwrite old data on database 690*965d9f74SJames Wright - `true` 691*965d9f74SJames Wright - boolean 692*965d9f74SJames Wright 693*965d9f74SJames Wright* - `-sgs_train_filter_widths` 694*965d9f74SJames Wright - List of scalar values for different filter widths to calculate for training data 695*965d9f74SJames Wright - 696*965d9f74SJames Wright - `m` 697*965d9f74SJames Wright 698*965d9f74SJames Wright* - `-smartsim_collocated_num_ranks` 699*965d9f74SJames Wright - Number of MPI ranks associated with each collocated database (i.e. ranks per node) 700*965d9f74SJames Wright - `1` 701*965d9f74SJames Wright - 702*965d9f74SJames Wright::: 703*965d9f74SJames Wright 704*965d9f74SJames Wright### Gaussian Wave 705*965d9f74SJames Wright 706*965d9f74SJames WrightThe Gaussian wave problem has the following command-line options in addition to the Newtonian Ideal Gas options: 707*965d9f74SJames Wright 708*965d9f74SJames Wright:::{list-table} Gaussian Wave Runtime Options 709*965d9f74SJames Wright:header-rows: 1 710*965d9f74SJames Wright 711*965d9f74SJames Wright* - Option 712*965d9f74SJames Wright - Description 713*965d9f74SJames Wright - Default value 714*965d9f74SJames Wright - Unit 715*965d9f74SJames Wright 716*965d9f74SJames Wright* - `-freestream_riemann` 717*965d9f74SJames Wright - Riemann solver for boundaries (HLL or HLLC) 718*965d9f74SJames Wright - `hllc` 719*965d9f74SJames Wright - 720*965d9f74SJames Wright 721*965d9f74SJames Wright* - `-freestream_velocity` 722*965d9f74SJames Wright - Freestream velocity vector 723*965d9f74SJames Wright - `0,0,0` 724*965d9f74SJames Wright - `m/s` 725*965d9f74SJames Wright 726*965d9f74SJames Wright* - `-freestream_temperature` 727*965d9f74SJames Wright - Freestream temperature 728*965d9f74SJames Wright - `288` 729*965d9f74SJames Wright - `K` 730*965d9f74SJames Wright 731*965d9f74SJames Wright* - `-freestream_pressure` 732*965d9f74SJames Wright - Freestream pressure 733*965d9f74SJames Wright - `1.01e5` 734*965d9f74SJames Wright - `Pa` 735*965d9f74SJames Wright 736*965d9f74SJames Wright* - `-epicenter` 737*965d9f74SJames Wright - Coordinates of center of perturbation 738*965d9f74SJames Wright - `0,0,0` 739*965d9f74SJames Wright - `m` 740*965d9f74SJames Wright 741*965d9f74SJames Wright* - `-amplitude` 742*965d9f74SJames Wright - Amplitude of the perturbation 743*965d9f74SJames Wright - `0.1` 744*965d9f74SJames Wright - 745*965d9f74SJames Wright 746*965d9f74SJames Wright* - `-width` 747*965d9f74SJames Wright - Width parameter of the perturbation 748*965d9f74SJames Wright - `0.002` 749*965d9f74SJames Wright - `m` 750*965d9f74SJames Wright 751*965d9f74SJames Wright::: 752*965d9f74SJames Wright 753*965d9f74SJames WrightThis problem can be run with the `gaussianwave.yaml` file via: 754*965d9f74SJames Wright 755*965d9f74SJames Wright``` 756*965d9f74SJames Wright./navierstokes -options_file gaussianwave.yaml 757*965d9f74SJames Wright``` 758*965d9f74SJames Wright 759*965d9f74SJames Wright```{literalinclude} ../gaussianwave.yaml 760*965d9f74SJames Wright:language: yaml 761*965d9f74SJames Wright``` 762*965d9f74SJames Wright 763*965d9f74SJames Wright### Vortex Shedding - Flow past Cylinder 764*965d9f74SJames Wright 765*965d9f74SJames WrightThe vortex shedding, flow past cylinder problem has the following command-line options in addition to the Newtonian Ideal Gas options: 766*965d9f74SJames Wright 767*965d9f74SJames Wright:::{list-table} Vortex Shedding Runtime Options 768*965d9f74SJames Wright:header-rows: 1 769*965d9f74SJames Wright 770*965d9f74SJames Wright* - Option 771*965d9f74SJames Wright - Description 772*965d9f74SJames Wright - Default value 773*965d9f74SJames Wright - Unit 774*965d9f74SJames Wright 775*965d9f74SJames Wright* - `-freestream_velocity` 776*965d9f74SJames Wright - Freestream velocity vector 777*965d9f74SJames Wright - `0,0,0` 778*965d9f74SJames Wright - `m/s` 779*965d9f74SJames Wright 780*965d9f74SJames Wright* - `-freestream_temperature` 781*965d9f74SJames Wright - Freestream temperature 782*965d9f74SJames Wright - `288` 783*965d9f74SJames Wright - `K` 784*965d9f74SJames Wright 785*965d9f74SJames Wright* - `-freestream_pressure` 786*965d9f74SJames Wright - Freestream pressure 787*965d9f74SJames Wright - `1.01e5` 788*965d9f74SJames Wright - `Pa` 789*965d9f74SJames Wright 790*965d9f74SJames Wright::: 791*965d9f74SJames Wright 792*965d9f74SJames WrightThe initial condition is taken from `-reference_temperature` and `-reference_pressure`. 793*965d9f74SJames WrightTo run this problem, first generate a mesh: 794*965d9f74SJames Wright 795*965d9f74SJames Wright```console 796*965d9f74SJames Wright$ make -C /meshes 797*965d9f74SJames Wright``` 798*965d9f74SJames Wright 799*965d9f74SJames WrightThen run by building the executable and running: 800*965d9f74SJames Wright 801*965d9f74SJames Wright```console 802*965d9f74SJames Wright$ make build/fluids-navierstokes 803*965d9f74SJames Wright$ mpiexec -n 6 build/fluids-navierstokes -options_file vortexshedding.yaml -{ts,snes}_monitor_ 804*965d9f74SJames Wright``` 805*965d9f74SJames Wright 806*965d9f74SJames WrightThe vortex shedding period is roughly 5.6 and this problem runs until time 100 (2000 time steps). 807*965d9f74SJames WrightThe above run writes a file named `force.csv` (see `ts_monitor_wall_force` in `vortexshedding.yaml`), which can be postprocessed by running to create a figure showing lift and drag coefficients over time. 808*965d9f74SJames Wright 809*965d9f74SJames Wright```console 810*965d9f74SJames Wright$ python postprocess/vortexshedding.py 811*965d9f74SJames Wright``` 812*965d9f74SJames Wright 813*965d9f74SJames Wright```{literalinclude} ../vortexshedding.yaml 814*965d9f74SJames Wright:language: yaml 815*965d9f74SJames Wright``` 816*965d9f74SJames Wright 817*965d9f74SJames Wright### Density current 818*965d9f74SJames Wright 819*965d9f74SJames WrightThe Density Current problem has the following command-line options in addition to the Newtonian Ideal Gas options: 820*965d9f74SJames Wright 821*965d9f74SJames Wright:::{list-table} Density Current Runtime Options 822*965d9f74SJames Wright:header-rows: 1 823*965d9f74SJames Wright 824*965d9f74SJames Wright* - Option 825*965d9f74SJames Wright - Description 826*965d9f74SJames Wright - Default value 827*965d9f74SJames Wright - Unit 828*965d9f74SJames Wright 829*965d9f74SJames Wright* - `-center` 830*965d9f74SJames Wright - Location of bubble center 831*965d9f74SJames Wright - `(lx,ly,lz)/2` 832*965d9f74SJames Wright - `(m,m,m)` 833*965d9f74SJames Wright 834*965d9f74SJames Wright* - `-dc_axis` 835*965d9f74SJames Wright - Axis of density current cylindrical anomaly, or `(0,0,0)` for spherically symmetric 836*965d9f74SJames Wright - `(0,0,0)` 837*965d9f74SJames Wright - 838*965d9f74SJames Wright 839*965d9f74SJames Wright* - `-rc` 840*965d9f74SJames Wright - Characteristic radius of thermal bubble 841*965d9f74SJames Wright - `1000` 842*965d9f74SJames Wright - `m` 843*965d9f74SJames Wright 844*965d9f74SJames Wright* - `-theta0` 845*965d9f74SJames Wright - Reference potential temperature 846*965d9f74SJames Wright - `300` 847*965d9f74SJames Wright - `K` 848*965d9f74SJames Wright 849*965d9f74SJames Wright* - `-thetaC` 850*965d9f74SJames Wright - Perturbation of potential temperature 851*965d9f74SJames Wright - `-15` 852*965d9f74SJames Wright - `K` 853*965d9f74SJames Wright 854*965d9f74SJames Wright* - `-P0` 855*965d9f74SJames Wright - Atmospheric pressure 856*965d9f74SJames Wright - `1E5` 857*965d9f74SJames Wright - `Pa` 858*965d9f74SJames Wright 859*965d9f74SJames Wright* - `-N` 860*965d9f74SJames Wright - Brunt-Vaisala frequency 861*965d9f74SJames Wright - `0.01` 862*965d9f74SJames Wright - `1/s` 863*965d9f74SJames Wright::: 864*965d9f74SJames Wright 865*965d9f74SJames WrightThis problem can be run with: 866*965d9f74SJames Wright 867*965d9f74SJames Wright``` 868*965d9f74SJames Wright./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_symmetry_y 3,4 -mu 75 869*965d9f74SJames Wright``` 870*965d9f74SJames Wright 871*965d9f74SJames Wright### Channel flow 872*965d9f74SJames Wright 873*965d9f74SJames WrightThe Channel problem has the following command-line options in addition to the Newtonian Ideal Gas options: 874*965d9f74SJames Wright 875*965d9f74SJames Wright:::{list-table} Channel Runtime Options 876*965d9f74SJames Wright:header-rows: 1 877*965d9f74SJames Wright 878*965d9f74SJames Wright* - Option 879*965d9f74SJames Wright - Description 880*965d9f74SJames Wright - Default value 881*965d9f74SJames Wright - Unit 882*965d9f74SJames Wright 883*965d9f74SJames Wright* - `-umax` 884*965d9f74SJames Wright - Maximum/centerline velocity of the flow 885*965d9f74SJames Wright - `10` 886*965d9f74SJames Wright - `m/s` 887*965d9f74SJames Wright 888*965d9f74SJames Wright* - `-theta0` 889*965d9f74SJames Wright - Reference potential temperature 890*965d9f74SJames Wright - `300` 891*965d9f74SJames Wright - `K` 892*965d9f74SJames Wright 893*965d9f74SJames Wright* - `-P0` 894*965d9f74SJames Wright - Atmospheric pressure 895*965d9f74SJames Wright - `1E5` 896*965d9f74SJames Wright - `Pa` 897*965d9f74SJames Wright 898*965d9f74SJames Wright* - `-body_force_scale` 899*965d9f74SJames Wright - Multiplier for body force (`-1` for flow reversal) 900*965d9f74SJames Wright - 1 901*965d9f74SJames Wright - 902*965d9f74SJames Wright::: 903*965d9f74SJames Wright 904*965d9f74SJames WrightThis problem can be run with the `channel.yaml` file via: 905*965d9f74SJames Wright 906*965d9f74SJames Wright``` 907*965d9f74SJames Wright./navierstokes -options_file channel.yaml 908*965d9f74SJames Wright``` 909*965d9f74SJames Wright```{literalinclude} ../channel.yaml 910*965d9f74SJames Wright:language: yaml 911*965d9f74SJames Wright``` 912*965d9f74SJames Wright 913*965d9f74SJames Wright(example-blasius)= 914*965d9f74SJames Wright 915*965d9f74SJames Wright### Blasius boundary layer 916*965d9f74SJames Wright 917*965d9f74SJames WrightThe Blasius problem has the following command-line options in addition to the Newtonian Ideal Gas options: 918*965d9f74SJames Wright 919*965d9f74SJames Wright:::{list-table} Blasius Runtime Options 920*965d9f74SJames Wright:header-rows: 1 921*965d9f74SJames Wright 922*965d9f74SJames Wright* - Option 923*965d9f74SJames Wright - Description 924*965d9f74SJames Wright - Default value 925*965d9f74SJames Wright - Unit 926*965d9f74SJames Wright 927*965d9f74SJames Wright* - `-velocity_infinity` 928*965d9f74SJames Wright - Freestream velocity 929*965d9f74SJames Wright - `40` 930*965d9f74SJames Wright - `m/s` 931*965d9f74SJames Wright 932*965d9f74SJames Wright* - `-temperature_infinity` 933*965d9f74SJames Wright - Freestream temperature 934*965d9f74SJames Wright - `288` 935*965d9f74SJames Wright - `K` 936*965d9f74SJames Wright 937*965d9f74SJames Wright* - `-pressure_infinity` 938*965d9f74SJames Wright - Atmospheric pressure, also sets IDL reference pressure 939*965d9f74SJames Wright - `1.01E5` 940*965d9f74SJames Wright - `Pa` 941*965d9f74SJames Wright 942*965d9f74SJames Wright* - `-temperature_wall` 943*965d9f74SJames Wright - Wall temperature 944*965d9f74SJames Wright - `288` 945*965d9f74SJames Wright - `K` 946*965d9f74SJames Wright 947*965d9f74SJames Wright* - `-delta0` 948*965d9f74SJames Wright - Boundary layer height at the inflow 949*965d9f74SJames Wright - `4.2e-3` 950*965d9f74SJames Wright - `m` 951*965d9f74SJames Wright 952*965d9f74SJames Wright* - `-platemesh_modify_mesh` 953*965d9f74SJames Wright - Whether to modify the mesh using the given options below. 954*965d9f74SJames Wright - `false` 955*965d9f74SJames Wright - 956*965d9f74SJames Wright 957*965d9f74SJames Wright* - `-platemesh_refine_height` 958*965d9f74SJames Wright - Height at which `-platemesh_Ndelta` number of elements should refined into 959*965d9f74SJames Wright - `5.9E-4` 960*965d9f74SJames Wright - `m` 961*965d9f74SJames Wright 962*965d9f74SJames Wright* - `-platemesh_Ndelta` 963*965d9f74SJames Wright - Number of elements to keep below `-platemesh_refine_height` 964*965d9f74SJames Wright - `45` 965*965d9f74SJames Wright - 966*965d9f74SJames Wright 967*965d9f74SJames Wright* - `-platemesh_growth` 968*965d9f74SJames Wright - Growth rate of the elements in the refinement region 969*965d9f74SJames Wright - `1.08` 970*965d9f74SJames Wright - 971*965d9f74SJames Wright 972*965d9f74SJames Wright* - `-platemesh_top_angle` 973*965d9f74SJames Wright - Downward angle of the top face of the domain. This face serves as an outlet. 974*965d9f74SJames Wright - `5` 975*965d9f74SJames Wright - `degrees` 976*965d9f74SJames Wright 977*965d9f74SJames Wright* - `-platemesh_y_node_locs_path` 978*965d9f74SJames Wright - Path to file with y node locations. If empty, will use mesh warping instead. 979*965d9f74SJames Wright - `""` 980*965d9f74SJames Wright - 981*965d9f74SJames Wright 982*965d9f74SJames Wright* - `-stg_use` 983*965d9f74SJames Wright - Whether to use STG for the inflow conditions 984*965d9f74SJames Wright - `false` 985*965d9f74SJames Wright - 986*965d9f74SJames Wright 987*965d9f74SJames Wright* - `-n_chebyshev` 988*965d9f74SJames Wright - Number of Chebyshev terms 989*965d9f74SJames Wright - `20` 990*965d9f74SJames Wright - 991*965d9f74SJames Wright 992*965d9f74SJames Wright* - `-chebyshev_` 993*965d9f74SJames Wright - Prefix for Chebyshev snes solve 994*965d9f74SJames Wright - 995*965d9f74SJames Wright - 996*965d9f74SJames Wright 997*965d9f74SJames Wright::: 998*965d9f74SJames Wright 999*965d9f74SJames WrightThis problem can be run with the `blasius.yaml` file via: 1000*965d9f74SJames Wright 1001*965d9f74SJames Wright``` 1002*965d9f74SJames Wright./navierstokes -options_file blasius.yaml 1003*965d9f74SJames Wright``` 1004*965d9f74SJames Wright 1005*965d9f74SJames Wright```{literalinclude} ../blasius.yaml 1006*965d9f74SJames Wright:language: yaml 1007*965d9f74SJames Wright``` 1008*965d9f74SJames Wright 1009*965d9f74SJames Wright### STG Inflow for Flat Plate 1010*965d9f74SJames Wright 1011*965d9f74SJames WrightUsing the STG Inflow for the blasius problem adds the following command-line options: 1012*965d9f74SJames Wright 1013*965d9f74SJames Wright:::{list-table} Blasius Runtime Options 1014*965d9f74SJames Wright:header-rows: 1 1015*965d9f74SJames Wright 1016*965d9f74SJames Wright* - Option 1017*965d9f74SJames Wright - Description 1018*965d9f74SJames Wright - Default value 1019*965d9f74SJames Wright - Unit 1020*965d9f74SJames Wright 1021*965d9f74SJames Wright* - `-stg_inflow_path` 1022*965d9f74SJames Wright - Path to the STGInflow file 1023*965d9f74SJames Wright - `./STGInflow.dat` 1024*965d9f74SJames Wright - 1025*965d9f74SJames Wright 1026*965d9f74SJames Wright* - `-stg_rand_path` 1027*965d9f74SJames Wright - Path to the STGRand file 1028*965d9f74SJames Wright - `./STGRand.dat` 1029*965d9f74SJames Wright - 1030*965d9f74SJames Wright 1031*965d9f74SJames Wright* - `-stg_alpha` 1032*965d9f74SJames Wright - Growth rate of the wavemodes 1033*965d9f74SJames Wright - `1.01` 1034*965d9f74SJames Wright - 1035*965d9f74SJames Wright 1036*965d9f74SJames Wright* - `-stg_u0` 1037*965d9f74SJames Wright - Convective velocity, $U_0$ 1038*965d9f74SJames Wright - `0.0` 1039*965d9f74SJames Wright - `m/s` 1040*965d9f74SJames Wright 1041*965d9f74SJames Wright* - `-stg_mean_only` 1042*965d9f74SJames Wright - Only impose the mean velocity (no fluctutations) 1043*965d9f74SJames Wright - `false` 1044*965d9f74SJames Wright - 1045*965d9f74SJames Wright 1046*965d9f74SJames Wright* - `-stg_strong` 1047*965d9f74SJames Wright - Strongly enforce the STG inflow boundary condition 1048*965d9f74SJames Wright - `false` 1049*965d9f74SJames Wright - 1050*965d9f74SJames Wright 1051*965d9f74SJames Wright* - `-stg_fluctuating_IC` 1052*965d9f74SJames Wright - "Extrude" the fluctuations through the domain as an initial condition 1053*965d9f74SJames Wright - `false` 1054*965d9f74SJames Wright - 1055*965d9f74SJames Wright 1056*965d9f74SJames Wright* - `-stg_dx` 1057*965d9f74SJames Wright - Set the element size in the x direction. Default is calculated for box meshes, assuming equispaced elements. 1058*965d9f74SJames Wright - 1059*965d9f74SJames Wright - `m` 1060*965d9f74SJames Wright 1061*965d9f74SJames Wright* - `-stg_h_scale_factor` 1062*965d9f74SJames Wright - Scale element size for cutoff frequency calculation 1063*965d9f74SJames Wright - $1/p$ 1064*965d9f74SJames Wright - 1065*965d9f74SJames Wright 1066*965d9f74SJames Wright::: 1067*965d9f74SJames Wright 1068*965d9f74SJames WrightThis problem can be run with the `blasius.yaml` file via: 1069*965d9f74SJames Wright 1070*965d9f74SJames Wright``` 1071*965d9f74SJames Wright./navierstokes -options_file blasius.yaml -stg_use true 1072*965d9f74SJames Wright``` 1073*965d9f74SJames Wright 1074*965d9f74SJames WrightNote the added `-stg_use true` flag 1075*965d9f74SJames WrightThis overrides the `stg: use: false` setting in the `blasius.yaml` file, enabling the use of the STG inflow. 1076