Add sliding mesh capability
Issue/feature addressed
Implement the ALE method for sliding mesh with rotating, sliding, and prescribed motions in ADRSolver
and CompressibleFlowSolver
.
Proposed solution
-
Nektar::SolverUtils::ALEHelper
was added to implement the ALE method. - New class members
m_gridVelocity
andm_gridVelocityTrace
were introduced. - Add a flag
m_ALESolver
for the ALE method.
Implementation
In order to introduce grid velocity, the function ALEHelper::InitObject
was utilized to initialize the variables m_gridVelocity
and m_gridVelocityTrace
. As the mass matrix undergoes changes during the ALE process, the function ALEHelper::ALEPreMultiplyMass
is employed to perform mass matrix multiplication. ALEHelper::ALEDoElmtInvMass
and ALEHelper::ALEDoElmtInvMassBwdTrans
were used to attain the variables in coefficient and physical space, respectively. To perform movement, ALEHelper::MoveMesh
was used to call Movement::PerformMovement
.
Tests
In ADRSolver
- Movement_rotate_3D_stacked_cylinders_curved_par
- Movement_translate_interfaces232_dirichlet
In CompressibleFlowSolver
- Movement_rotate_couette
Suggested reviewers
Chris, David
Notes
- There are issues with
ALEHelper::InitObject
called inSolverUtils::UnsteadySystem
when using CG projection and the pulse wave solver. There needs to be a redesign to address this problem. - Changes in
SolverUtils::Advection::AdvectionWeakDG
andCompressibleFlowSolver::Diffusion::DiffusionLDGNS
to avoid implicit solver errors may also need to be redesigned.
Checklist
-
Functions and classes, or changes to them, are documented. -
User guide/documentation is updated. -
Changelog is updated. -
Suitable tests added for new functionality. -
Contributed code is correctly formatted. (See the contributing guidelines). -
License added to any new files. -
No extraneous files have been added (e.g. compiler output or test data files).
Edited by Junjie Ye