MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
General application control

Available solvers

m-AIA is a numerical simulation framework comprising the solvers listed below. More information on the individual solvers can be found on the respective page.

  1. Finite volume (FV)
  2. Finite Volume Moving-Boundary (FVMB)
  3. Lattice Boltzmann (LB)
  4. Discontinuous Galerkin (DG)
  5. Lagrangian particle tracking (LPT)
  6. Level-set (LS)
  7. Acoustic analogy (ACA)

The solvers can be arbitrarily coupled by a coupling class, in which the transfer of information between the solver interfaces is defined (cf. Coupling). The solvers run on subsets of a shared unstructured Cartesian mesh, which is generated in the Mesh Generation. This ensures an efficient coupling of the solvers in multisolver simulations. For single solver Finite volume (FV) simulations also an option to use a Structured Finite Volume (FVSTRCTRD) Grid is available.

Global properties

Some properties are solver independent and are required for each simulation. They describe, for example, for how many time steps a simulation should run, which solvers are used and in which order they are executed. The execution order of the solvers is handled in Recipe. Below an example property file is shown for a coupled Level-set (LS) and Finite Volume Moving-Boundary (FVMB) simulation. A list of all solver independet properties is given in the table on the bottom of the page.

### These are the global properties
nDim = 3
gridGenerator = false
flowSolver = true
timeSteps = 100
restartFile = false
restartInterval = 10
restartInterval = 50
outputDir = 'out/'
solutionOutput = './out/'
gridInputFileName = 'grid.Netcdf'
geometryInputFileName = "geometry.toml"
scratchSize = 30
maxNoCells = 10000
minLevel = 5
maxUniformRefinementLevel = 5
maxRfnmntLevel = 6
maxBoundaryRfnLvl = 6
### The properties below specify which solvers and couplers are used
multiSolverGrid = True
noSolvers = 2
solverType_0 = "MAIA_LEVELSET_SOLVER"
solverType_1 = "MAIA_FV_MB"
noCouplers = 1
couplerType_0 = "COUPLER_LS_FV_MB"
solversToCouple_0 = [0,1]
executionRecipe = "RECIPE_INTRASTEP"
recipeMaxNoSteps = 2
solverOrder_0 = [1,0]
solverOrder_1 = [0,1]
couplerOrder_0 = [1,1]
adaptationOrder = [0,1]

Mesh adaptation

The Cartesian mesh can be adapted according to the solver solutions during or before the solver run. Mesh adaptation means that the mesh resolution can be adjusted during the solver run, which can be useful when, for example, a distinct flow feature, such as a traveling shock wave, is supposed to be sufficiently resolved. More information on the mesh adaptation can be found here Adaptive mesh refinement (AMR).

Dynamic load balancing

Due to the mesh adaptation, the computational workload on the individual processors changes during the simulation. To avoid large load imbalances a Dynamic Load Balancing (DLB) is required.

List of properties

Property Type Description
nDim Int Number of space dimensions.
multiSolverGrid Bool Set to true if more than one solver is used.
gridGenerator Bool If true the Mesh Generation is executed. Musst be unequal to flowSolver.
flowSolver Bool If true a solver run is started. Musst be unequal to gridGenerator.
postProcessing Bool Activates the post-processing.
scratchSize Int During a simulation the memory is dynamically allocated and cleard if required by the solution algorithms. Scratch size defines the buffer size of memory reserved for this dynamic memory allocation.
timeSteps Int The number of time steps that will be executed.
testcaseDir String Path to simulation directory (Best leaf at "./").
restartDir String Directory from which restart files are read in case of a simulation restart. Use relative path from testcaseDir. If empty restartDir is set to outputDir.
inputDir String Input directory for ACA solver and location of geometry file (geometryInputFileName). Use relative path from testcaseDir.
outputDir String Directory to which restart files are written. Use relative pwth from testcaseDir.
solutionOutput String Directory to which solver specific solution files are written.
gridInputFileName String Name of grid file to be used for the simulation.
geometryInputFileName String Name of geometry file to be used for the simulation.
restartFile Bool Specifies whether a simulations is newly initialized or restarted from specific restart file.
restartTimeStep Int Time step from which simulation is restarted (requires restartFile=true).
restartInterval Int Interval in which restart files are written.
solutionInterval Int Interval in which solver solution files are written.
useNonSpecificRestartFileBoolIf true, previous restart files will be overwritten and current time step is read from restart file. Property 'restartTimeStep' will be ignored.
noSolvers Int The number of solvers used in the simulation.
solvertype String The type of the solver to be created. The solvers grid type is automatically determined.
noHaloLayers Int The number of halo layers for parallel simulations or periodic domains. The number of halo layers between solvers can differ.
noCouplers Int The number of couplers used for the coupling of the solver.
couplerType_ String The type of coupler that is used. The coupler type depends on the solvers that are coupled.
executionRecipe String Sets the type of the execution Recipe.
recipeMaxNoSteps </tb>Int This property specifies the MAIAExecutionRecipe::m_maxNoSteps of sub steps performed in the execution Recipe.
solverOrder_* Int This property if a solver is active during a specific sub step of the execution Recipe. solverOrder needs to be set for each solver individually, where * is replaced by the solver id. This property is given as an array, e.g., for MAIAExecutionRecipe::m_maxNoSteps = 2: [1,0] if solver is active in first step and inactive in second step.
couplerType_* String Sets the type of the couplers. The couplerType depends on the solvers used. This property is set for each coupler indivudally by replacing * with the coupler id.
couplerOrder_* Int This property if a solver is active during a specific sub step of the execution Recipe. solverOrder needs to be set for each solver individually, where * is replaced by the solver number. This property is given as an array, e.g., for MAIAExecutionRecipe::m_maxNoSteps = 2: [1,0] if solver is active in first step and inactive in second step.
solversToCouple_* Int Detremines which solver are coupled by the specific coupler. Replace * with the respective coupler id. Each coupler couples to solvers. E.g., write [1,2] to couple solvers 1 and 2.
maxNoCells Int For each grid cell handled by a single processor, memory allocated. This property limits the maximum number of cells per processor and thereby influences the memory foot print.
minLevel Int The grid level on which the partitioning of the grid is performed if no partition level shift exists. The minLevel is set during the Mesh Generation. Maybe you can find some information on partition level shifts in section ugHPC or Parallelization.
maxUniformRefinementLevelInt The maximum grid level to which each minLevel cell is refined. See also Mesh Generation.
maxBoundaryRfnLvl Int The maximum grid level to which cells at the speciefied domain boundaries are refined.
maxRfnmntLvl Int The maximum grid level allowed.
adaptation Bool If true, the Adaptive mesh refinement (AMR) of the Cartesian mesh is allowed.
initialAdaptation Bool If a new simulation is initialized (restartFile=false), a mesh adaptation based on the solver intital conditions can be forced.
adaptationOrder Int Specifies in which sub steps of the execution Recipe a mesh adaptation is allowed. Specify as array, e.g., for MAIAExecutionRecipe::m_maxNoSteps = 2: [1,0] if adapation is only allowed after the first sub step.
balance Bool If true, the Dynamic Load Balancing (DLB) is activated.
dualTimeStepping Bool The #ref ugFV solver featrues a dual time stepping method. (Untested, use at own risk.)
splitMpiComm Bool See Finite volume (FV) and Discontinuous Galerkin (DG) for more information. If unsure set splitMpiComm=false.
noPostProcessing Int The number of post-processing solvers. For more information on post-processing see Postprocessing.