MAIA bb96820c
Multiphysics at AIA
|
The finite-volume moving-boundary (FVMB) solver enhances the regular finite-volume (FV) solver by an immersed-boundary method. In this, the FVMB solver inherits from the FV solver and is thus able to access all of its parent variables and functions. The general functionality is shared (ER) whereas specific functions are adapted to accomodate for the moving bodies.
The implemented immersed-boundary method allows for the embedment of rigid bodies of various shapes and properties. The FVMB solver can therefore be used to model a wide variety of environments such as rigid particles in a particle-laden flow or complex geometrical settings as in, e.g., combustion engines with moving pistons. The information used to model the geometric shape is provided by the Levelset solver (LS) whereas particles of varying shape can be directly modeled by an analytical levelset (ANAL-LS) incorporated into the FVMB solver. In this, the term levelset refers to a distance-based function \( \phi \) where \( \phi>0 \) comprises to the outside, \( \phi<0 \) to the inside of a body, and \( \phi=0 \) to the body surface.
To discretize the body based on the given levelset information, a Cartesian multi cut-cell method is used (CutCell). All conservative units, i.e., mass, momentum, and energy, are strictly conserved at the fluid-particle interfaces
Separate from the source of information (LS vs ANAL-LS), all boundaries of the body are represented by boundary surfaces. In this, the aforementioned multi-cut cell algorithm triangulates the levelset information and adds surfaces where appropriate. Each surface is then supplied a boundary ghost cell to describe the properties at the body surface (GCB). Multi-cut cells, that is, cells with multiple boundary surfaces, are assigned multiple ghost cells.
Different boundary conditions can be enforced onto the moving-boundary surfaces. Commonly used options include adiabatic boundary conditions (3006), isothermal boundary conditions (3008), and boundary conditions for static (non-moving) boundaries (3600). All boundary conditions are specific for (non-)moving boundaries and can be applied to the Navier-Stokes- as well as the Euler-equations.
The immersed boundaries are updated according to different properties/algorithms and can be classified into two different classes: forced movement and free motion. Forced movements are commonly used by complex geometrical boundaries such as multi-stage axial turbines and are computed in the LS solver and later on transferred into the FVMB solver (Coupling). Here, the FVMB solver receives updated levelset information used for the discretization of the moving boundary surfaces whereas the movement update is compute in different solvers. The concept of free motion is generally described by solving Newtons law of motion, time intregration of the resulting forces, and is commonly applied in particle computations in the FVMB solver directly. Here, each particle motion, that is, e.g., rotational and translational acceleration and velocity, is described by the integrated forces acting on its boundary reduced to its center of gravity.
The utilized methods and the holistic approach allows the direct investigation of the direct transfer of kinetic energy via the flux of linear and angular momentum between the fluid and the rigid body. The fluid-boundary computations are further stabilized by a correction of intersected fluid cells whichs volume falls below a specified threshold.
The overall method exhibits very good stability and accuracy properties even for large displacements of the boundaries.
A five-step Runge-Kutta Scheme of second-order accuracy is commonly applied to the temporal integration of the conservative variables while using the Euler equations as governing equations is possible. The computation of the RK Scheme is equivalent to that of the FV Solver (FV). As mentioned in the introduction, the FVMB Solver inherits from the FV Solver and thus, the general computing procedure is similar and, in some places, equal to its parent solver. A general overview will be given here, major differences are highlighted and similarities between both solvers will be omitted. For further reference, the reader is reffered to (FV).
The execution recipe describes the general workflow of the solver, different execution recipes are possible (ER). The main objective here is that different modalities for the update of the moving boundary bodies are possible. For example, the modelling of rigid particles in particle-laden flow is approached using a Predictor-Corrector Scheme which runs multiple cycles within a singular timestep which is in contrast to the investigation of geometries using forced motion such as a cylinder in a combustion engine.
All execution recipes have in common, that the call solversteps in a predefined order. A general overview of the used functions by the FVMB solver are given in the following.
Marks a new timestep and, depending on the simulation settings, advances the moving boundary bodies properties and computes the resulting levelset information.
Determines cell settings and marks moving boundary cells, generates the specific moving boundary cells based on the cell levelset values, computes the relevant boundary surfaces and adds ghost cells accordingly. The solver then updates the cell properties due to the moving of the surfaces based on, e.g., the redistribution of fluid mass inside the domain and in close proximity to the body boundaries.
Integrates the governing equations in time and subsequently performs the relevant actions on the left-hand side and the right-hand side of the equations.
Performs computations after the timestep integration. Herein, the residual is checked and, depending on the executionrecipe, the correction of the rigid body motion parameters and levelset information is updated based on the resulting boundary surface forces.
Finalizes the timestep.
The FVMB Solver has the majority of properties in common with the FV solver and thus, only major moving-boundary specific properties will be listed and described shortly in the following.
Property | Type | Description |
---|---|---|
timeStepAdaptationStart | Int | Start of adaptation of the timestep value after this timestep |
timeStepAdaptationEnd | Int | The timestep at which a desired cfl number cflTarget is reached |
cflInitial | Float | The initial CFL number for the time step adaptation |
Property | Type | Description |
---|---|---|
bodySamplingInterval | Boolean | Defines the sampling interval of the immersed bodies |
trackBodySurfaceData | Boolean | Triggers the computation of relevant variables at the moving boundary surfaces and determines the resulting body forces |
trackMovingBndry | Boolean | Triggers the displacement of bodies in the moving boundary solver using the levelset field |
trackMbStart | Int | For time steps smaller than the specified value, the bodies are not displaced and the levelset field is not updated |
trackMbEnd | Int | For time steps larger than the specified value, the bodies are not displaced and the levelset field is not updated |
complexBoundaryForMb | Boolean | Triggers if complex boundaries should be considered in the FVMB solver, i.e., cut cells are based on information from multiple levelset functions |
generateOuterBndryCells | Boolean | Controls whether outer (non-moving) boundary cells should be created |
gravity | Float | Gravitational acceleration in X/Y/Z direction |
motionEquation | Int | Specifies the equations that are used for updating the body properties such as velocity. Possible values are: 0: forced motion 1: free motion under gravity 2: Ahn & Kallinderis scheme 3: Borazjani scheme 4: Adaptation by Schneiders |
movingBndryCndId | Int | Specifies the boundary condition id assigned to the moving boundary surfaces |
noEmbeddedBodies | Int | Number of distinct bodies |
bodyTypeMb | Int | Select the moving boundary body type to simulate. Possible values are: 0: generic body (STL) 1: sphere 2: piston 3: ellipsoid 4: NACA00XX 5: split sphere 6: cube 7: tetrahedron |
bodyRadii | Float | Specifies the bodyradii used for the generation of spherical and ellipsoidal particles |
densityRatio | Float | Sets the density of a moving body based on rhoInfinty |
initialBodyCenter | Float | Specifies the initial body position of the particles |
initialBodyVelocity | Float | Specifies the initial body velocity of the particles |
initialBodyRotation | Float | Specifies the initial body rotation of the particles |
fixedBodyComponents | Int | Restricts translational movement of the rigid bodies |
fixedBodyComponentsRotation | Int | Restricts rotational movement of the rigid bodies |
applyCollisionModel | Boolean | Enables the collision model (based on Glowinski et al.) |
volumeLimitWall | Float | Fractional cell volume which triggers the Smallcell correction |
volumeLimitOther | Float | Fractional cell volume which triggers the Smallcell correction |
Property | Type | Description |
---|---|---|
levelSetMb | Boolean | Enables the use of levelset information for the computation |
buildCollectedLevelSetFunction | Boolean | Triggers if the levelset functions from all sets are collected in a combined set |
maxNoLevelSets | Int | Maximum number of levelsets used for the computation |
constructGField | Boolean | Enables the usage of levelset information for rigid particles |
If you want to learn how to enable AMR for you simulation, read here. The list of all available sensors for the FVMB solver can be found here. Additionally, the sensors from the classic FV solver can be used.
In the following, a minimal example of a free falling, i.e., gravity driven, ellipsoidal particle in a rectangular periodic box is given. A single particle (noEmbeddedBodies) of ellipsoidal shape (bodyTypeMb,bodyRadii,bodyRotation) has an initial velocity of 0.1 in +x direction (initialBodyVelocity) and gets accelerated by gravitational forces (gravity). The bounding box uses cutoff boundary conditions which are additionally, in x-direction, periodic simulating a freefalling particle in an infinite length domain.
Beside the properties mentioned to compute the particle data, additional properties for different HPC relatived mechanisms are given , please refer to the respective pages of this documentation for further reading (ref general application, fv, adaptation, balance, hpc, cutoff).