This input is used to test the finite volume solver using standard essential boundary conditions.
compressibleFlow/compressibleCouetteFlow.yaml
---
# metadata used only for integration testing
testingIgnore: true
#test:
# # a unique test name for this integration tests
# name: compressibleCouetteFlow
# # create a default assert that compares the log file
# assert: "inputs/compressibleFlow/compressibleCouetteFlow.txt"
# metadata for the simulation
environment:
title: _compressibleCouetteFlow
tagDirectory: false
# global arguments that can be used by petsc
arguments:
dm_plex_separate_marker: ""
# set up the time stepper responsible for marching in time
timestepper:
name: theMainTimeStepper
# time stepper specific input arguments
arguments:
ts_type: rk
ts_adapt_type: physics # overwrite and set the time step based upon the CFL constraint
ts_max_steps: 20
# the domain/mesh must be specified at the start of a simulation
domain: !ablate::domain::BoxMesh
name: simpleBoxField
faces: [ 12, 12 ]
lower: [ 0, 0 ]
upper: [ 1, 1 ]
boundary: [ "PERIODIC", "NONE" ]
simplex: false
# specify any modifications to be performed to the mesh/domain
modifiers:
# if using mpi, this modifier distributes cells
- !ablate::domain::modifiers::DistributeWithGhostCells
# if using a FVM ghost boundary cells must be added
- !ablate::domain::modifiers::GhostBoundaryCells
fields:
# all fields must be defined before solvers. The ablate::finiteVolume::CompressibleFlowFields is a helper
# class that creates the required fields for the compressible flow solver (rho, rhoE, rhoU, ...)
- !ablate::finiteVolume::CompressibleFlowFields
# the !ablate::finiteVolume::CompressibleFlowFields needs the eos to determine if there are any species
eos: !ablate::eos::PerfectGas
&eos # the & anchors the eos so that it can be reused
parameters:
gamma: 1.4
Rgas: 287.0
# set the initial conditions of the flow field
initialization:
# this problem only using a single field "euler" with rho, rhoE, rhoU, rhoV. Use the default simpleFormula to set these field values
- fieldName: "euler" #for euler all components are in a single field
field: >-
1.0,
215250.0,
0.0,
0.0
timeDerivative: "0.0, 0.0, 0.0, 0.0"
exactSolution:
# set the exact solution for "euler" using another formula
- fieldName: "euler" # rho, rho_e = rho*(CvT + u^2/2), rho_u, rho_v
field: >-
1.0,
1.0 * (215250.0 + (0.5 * (50 * y)^2)),
1.0 * 50 * y,
1.0 * 0.0
timeDerivative: "0.0, 0.0, 0.0, 0.0"
# this problem uses a single solver (!ablate::finiteVolume::CompressibleFlowSolver)
solver: !ablate::finiteVolume::CompressibleFlowSolver
id: vortexFlowField
parameters:
cfl: 0.5
# a flux calculator must be specified to so solver for advection
fluxCalculator: !ablate::finiteVolume::fluxCalculator::Ausm
# the default transport object assumes constant values for k, mu, diff
transport:
k: 0.0
mu: 1.0
# share the existing eos with the compressible flow solver
eos: *eos
# using constant boundary condition values on sides 1,3 with the specified values for euler
boundaryConditions:
- !ablate::finiteVolume::boundaryConditions::EssentialGhost
boundaryName: "walls"
labelIds: [ 1 ]
boundaryValue:
fieldName: euler
field: "1.0, 215250.0, 0.0, 0.0"
- !ablate::finiteVolume::boundaryConditions::EssentialGhost
boundaryName: "walls"
labelIds: [ 3 ]
boundaryValue:
fieldName: euler
field: "1.0, 216500.0, 50.0, 0.0"
monitors:
# computes the standard l1 norm error and outputs to standard out
- !ablate::monitors::SolutionErrorMonitor
scope: component
type: l1_norm
# computes the standard l1 norm error and outputs to the L1_solutionMonitor.log file
- !ablate::monitors::SolutionErrorMonitor
scope: component
type: l1_norm
log: !ablate::monitors::logs::FileLog
name: L1_solutionMonitor.log
# computes the standard l1 norm error and outputs to a L1_solutionMonitor.csv file
- !ablate::monitors::SolutionErrorMonitor
scope: component
type: l1_norm
log: !ablate::monitors::logs::CsvLog
name: L1_solutionMonitor.csv
# computes the standard l2 norm error and outputs to standard out
- !ablate::monitors::SolutionErrorMonitor
scope: component
type: l2_norm
# computes the standard l2 norm error and outputs to the L2_solutionMonitor.log file
- !ablate::monitors::SolutionErrorMonitor
scope: component
type: l2_norm
log: !ablate::monitors::logs::FileLog
name: L2_solutionMonitor.log
# computes the standard l2 norm error and outputs to a L2_solutionMonitor.csv file
- !ablate::monitors::SolutionErrorMonitor
scope: component
type: l2_norm
log: !ablate::monitors::logs::CsvLog
name: L2_solutionMonitor.csv