Add sliding mesh capability

Open Chris Cantwell requested to merge feature/ALE-fixed into master

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 and m_gridVelocityTrace were introduced.
  • Add a flag m_ALESolver for the ALE method.


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.


In ADRSolver

  • Movement_rotate_3D_stacked_cylinders_curved_par
  • Movement_translate_interfaces232_dirichlet

In CompressibleFlowSolver

  • Movement_rotate_couette

Suggested reviewers

Chris, David


  • There are issues with ALEHelper::InitObject called in SolverUtils::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 and CompressibleFlowSolver::Diffusion::DiffusionLDGNS to avoid implicit solver errors may also need to be redesigned.


  • 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

Merge request reports