Moving mesh theory
I'm currently working on two multiphase (gas-solid) flow simulations - one in the open-source code MFIX, the other in ANSYS Fluent. The mesh movement itself is fairly simple rigid body translation (no mesh topology changes). I've already got a moving mesh simulation going in Fluent with UDFs, as you can see below. This is a simplified single-phase case, but should give you a feel for the kind of mesh movement we have.
Mesh movement: https://www.youtube.com/watch?v=oKsKGFuuKrQ&feature=youtu.be
Flow field solution: https://www.youtube.com/watch?v=520gm-f9VAI&feature=youtu.be
Doing this in MFIX is a big challenge because I need to code the mesh movement myself. The ANSYS theory guide only provides a very general description of moving mesh theory in section 3.2.1 (see attached), which is not enough for me to understanding coding backend questions like "how and when are new mesh cell positions calculated and stored", "how does the mesh velocity influence the convection terms in the SIMPLE algorithm", etc.
I've been trying to learn how this is done with the only moving mesh CFD packages I know - OpenFoam and ANSYS. OpenFOAM has classes that do this operation for you "in the background" like ANSYS (i.e. solidBodyMotionFvMesh) so I'm not finding detailed information about how to do this yourself, in another program.
My understanding is I would need code that:
- Determines the new mesh point positions from the old ones at each time step. Many CFD solvers use adaptive time stepping (i.e. not a fixed dt) so maybe you have to do this on-the-fly?
- Reformulates the governing equations in terms of relative velocity between the fluid and the moving mesh
- Maybe calculates some correction terms for fluid and solid-phase variables (i.e. if mesh moves and particle is now out-of-bounds, update its position)
If this sounds incorrect, or if I'm missing any steps, please let me know! I'm especially worried about doing step 2 correctly. If you have any papers or textbooks you can point me to, that is what I'm looking for! My Google search results on these topics have not been very helpful.