AMI code enhancements

Merged Andrew Heather requested to merge feature-ami into develop


Note: this is beta-level code and will receive further updates in future releases

This change set includes:

  • New option for cyclicAMI and cyclicACMI patches to perform topological updates to enforce a 1-to-1 match between source and target patches to ensure conservation across AMI patches and greatly reduced pressure field perturbations. Changes based on ref [1]
  • Deprecated directAMI; replaced by nearestFaceAMI
  • Significant code refactoring

Resolved bugs (If applicable)

  • General AMI conservation issues/noisy pressure predictions

Details of new models (If applicable)

  • Backwards compatibility [should be] maintained

  • New topological changes triggered by using a special mesh motion solver: dynamicFvMesh dynamicMotionSolverFvMeshAMI;

    • this may be absorbed into the 'standard' dynamicMotionSolverFvMesh model in future releases
  • Test case: mixerVesselAMI2D_with-boundary-layers.tgz

dynamicMotionSolverFvMesh dynamicMotionSolverFvMeshAMI
plot v2006 plot v2006
plot v1912

Note: since the AMI code triggers topological updates, to reconstruct parallel cases:

  • use reconstructParMesh to reconstruct the mesh at each time, followed by reconstructPar to reconstruct the fields; or

  • use redistributePar -reconstruct to reconstruct both mesh and fields (in parallel)

  • Code refactoring has enabled greater control of the AMI; the AMIMethod can now be set in the polyMesh/boundary file, e.g.

        type            cyclicAMI;
        inGroups        1(cyclicAMI);
        nFaces          96;
        startFace       6336;
        matchTolerance  0.0001;
        transform       noOrdering;
        neighbourPatch  AMI1;
        // New optional entries
        AMIMethod       faceAreaWeightAMI;
        restartUncoveredSourceFace 1;


The directAMI method has been deprecated and replaced by the faster and more robust, new nearestFaceAMI method. The new method creates a 1-to-1 mapping based on the nearest face.


  • Significant change to AMI code
  • Not only affects cyclic patches, but other areas of the code that make use of the tooling, e.g.:
    • mapped patches
    • mapFieldsPar
    • region models (film modelling)
    • mapping function objects

Known issues/to check

When using dynamicMotionSolverFvMeshAMI

  • restart behaviour not currently available


Checked on the following cases:

  • pimpleFoam/laminar/mixerVesselAMI2D
  • pimpleFoam/RAS/oscillatingInletACMI2D
  • XiDyMFoam/annularCombustorTurbine
  • {customer turbo machinery}

For each, the dynamicMotionSolverFvMesh option recovers v1912 behaviour


[1] H.J. Aguerre, S. Márquez Damián J.M. Gimenez, N.M.Nigro, Conservative handling of arbitrary non-conformal interfaces using an efficient supermesh, Journal of Computational Physics 335(15)21-49. 2017.


  • Many thanks to Horacio Aguerre @aguerrehoracio and Santiago Márquez @santiagomarquezd for bringing the methodology to our attention and for many useful discussions and testing throughout these developments.
Edited by Andrew Heather

Merge request reports