Skip to content

fixedJumpAMI does not work for Distributed Parallel

Summary

When using the 'fixedJumpAMI' boundary condition with distributed AMI, OpenFOAM will crash in cyclicAMIFvPatchField.c at line 600 with the error:

--> FOAM FATAL ERROR: (openfoam-2406)
Outstanding  recv request(s) on patch [fixedJumpAMI patch] field [field]

It would seem that the underlying AMI is unable to communicate between processors. A work-around is to constrain the patches that use 'fixedJumpAMI' to the same processor in the decomposeParDict. Either by:

Create a faceSet 'f1' with the patches and supply to the decoposeParDict:

constraint
{
    processors
    {
        type    singleProcessorFaceSets;
        sets    ((f1 -1));
        enabled true;
    }
}

or use the preservePatches constraint:

constraint
{
    processors
    {
        type    preservePatches;
        patches (Side-1-Patch Side-2-Patch);
        enabled true;
    }
}

However, both will result in sub-optimal decomposition when using 'scotch.'

Steps to reproduce

Example case

One could use the propeller tutorial and treat the inlet and outlet patches as cyclicAMI boundaries. For the 0/U, 0/k, and 0/epsilon, use cyclicAMI with a translational offset. For 0/p, use the fixedJumpAMI so that the kinematic pressure decreases from inlet to outlet. This should simulate an infinite, translational array of propellers.

What is the current bug behaviour?

The solver will crash when it gets to solve the 'p' field with the above error.

What is the expected correct behavior?

The solver should be able to receive information from different processors.

Relevant logs and/or images

Environment information

  • OpenFOAM version : v2406
  • Operating system : Red Hat Enterprise Linux v8.10 (Ootpa)
  • Compiler : Installed from Package (Build _52c02cff-20240620)

Possible fixes

Edited by Chris Schleicher