this test ensures that solvers can operate over a subset of the entire domain

domain/subDomainFVM.yaml

---
test:
  # a unique test name for this integration tests
  name: subDomainFVM
  asserts:
    # create a default assert that compares the log file
    - "inputs/domain/subDomainFVM/subDomainFVM.txt"
    - !testingResources::asserts::TextFileAssert
      expected: "inputs/domain/subDomainFVM/fluidField.xmf"
      actual: "fluidField.xmf"

# metadata for the simulation
environment:
  title: _subDomainFVM
  tagDirectory: false
arguments: 
  dm_plex_separate_marker: ""
  petsclimiter_type: none
# set up the time stepper responsible for marching in time
timestepper:
  name: theMainTimeStepper
  # output the field at every time step and allow for restarting
  io:
    interval: 0
  arguments:
    ts_type: rk
    ts_adapt_type: physics # overwrite and set the time step based upon the CFL constraint
    ts_max_steps: 10
    ts_adapt_safety: 1.0
  # the domain/mesh must be specified at the start of a simulation
  domain: !ablate::domain::BoxMesh
    name: simpleBoxField
    faces: [ 6, 6 ]
    lower: [ 0, 0 ]
    upper: [ 1, 1 ]
    boundary: [ "NONE", "NONE" ]
    simplex: false
    # specify arguments to be used for the creation of the dm/domain
    options:
      dm_refine: 1
    modifiers:
      # if using mpi, this modifier distributes cells
      - !ablate::domain::modifiers::DistributeWithGhostCells

      # create a new label and initialize it using the sphere math function
      - !ablate::domain::modifiers::CreateLabel
        # the name of the region to create
        region:
          name: fluidFlow
        # any math function can be used, the sphere defaults to 1 inside and 0 outside
        function: !ablate::mathFunctions::geom::Sphere
          center: [.5, .5]
          radius: .25

      # tag the faces and cells that are on the outside of the new fluidFlow region
      - !ablate::domain::modifiers::TagLabelBoundary
        region:
          name: fluidFlow
        boundaryFaceRegion:
          name: fluidFlowBoundary
        boundaryCellRegion:
          name: fluidBoundaryCell

      # merge the fluid flow and fluid boundary cell regions. This region is used to define the required fields
      - !ablate::domain::modifiers::MergeLabels
        mergedRegion:
          name: fluidField
        regions:
          - name: fluidFlow
          - name: fluidBoundaryCell
      - !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
        # only define these fields over a subset of the domain
        region:
          name: fluidField
        eos: !ablate::eos::PerfectGas &eos
          parameters:
            gamma: 1.4
            Rgas: 287.0
        conservedFieldOptions:
          petsclimiter_type: none
          petscfv_type: leastsquares
  initialization:
    # the ablate::finiteVolume::fieldFunctions::Euler can be used to initialize euler based upon t, p, and velocity
    - !ablate::finiteVolume::fieldFunctions::Euler
      state:
        eos: *eos
        temperature: "300"
        pressure: !ablate::mathFunctions::geom::Sphere
          center: [ .5, .5 ]
          radius: .1
          insideValues: [ 201325.0 ]
          outsideValues: [ 101325.0 ]
        velocity: "0, 0"

# this problem uses a single solver (!ablate::finiteVolume::CompressibleFlowSolver)
solver: !ablate::finiteVolume::CompressibleFlowSolver
  id: subDomainFVMSolver
  # only operate this solver over a subset of the domain
  region: 
    name: fluidFlow
  parameters:
    cfl: 0.25
  fluxCalculator: !ablate::finiteVolume::fluxCalculator::Ausm
  transport: !ablate::eos::transport::Sutherland
    eos: *eos
  eos: *eos
  boundaryConditions: []
  monitors:
    - !ablate::monitors::TimeStepMonitor