diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.C
new file mode 100644
index 0000000000..87d7c20efd
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.C
@@ -0,0 +1,201 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "jumpCyclicAMIFvPatchField.H"
+#include "transformField.H"
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+template
+Foam::jumpCyclicAMIFvPatchField::jumpCyclicAMIFvPatchField
+(
+ const fvPatch& p,
+ const DimensionedField& iF
+)
+:
+ cyclicAMIFvPatchField(p, iF)
+{}
+
+
+template
+Foam::jumpCyclicAMIFvPatchField::jumpCyclicAMIFvPatchField
+(
+ const jumpCyclicAMIFvPatchField& ptf,
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const fvPatchFieldMapper& mapper
+)
+:
+ cyclicAMIFvPatchField(ptf, p, iF, mapper)
+{}
+
+
+template
+Foam::jumpCyclicAMIFvPatchField::jumpCyclicAMIFvPatchField
+(
+ const fvPatch& p,
+ const DimensionedField& iF,
+ const dictionary& dict
+)
+:
+ cyclicAMIFvPatchField(p, iF, dict)
+{
+ // Call this evaluation in derived classes
+ //this->evaluate(Pstream::blocking);
+}
+
+
+template
+Foam::jumpCyclicAMIFvPatchField::jumpCyclicAMIFvPatchField
+(
+ const jumpCyclicAMIFvPatchField& ptf
+)
+:
+ cyclicAMIFvPatchField(ptf)
+{}
+
+
+template
+Foam::jumpCyclicAMIFvPatchField::jumpCyclicAMIFvPatchField
+(
+ const jumpCyclicAMIFvPatchField& ptf,
+ const DimensionedField& iF
+)
+:
+ cyclicAMIFvPatchField(ptf, iF)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+Foam::tmp >
+Foam::jumpCyclicAMIFvPatchField::patchNeighbourField() const
+{
+ const Field& iField = this->internalField();
+ const labelUList& nbrFaceCells =
+ this->cyclicAMIPatch().cyclicAMIPatch().neighbPatch().faceCells();
+
+ Field pnf(iField, nbrFaceCells);
+ tmp > tpnf
+ (
+ new Field(this->cyclicAMIPatch().interpolate(pnf))
+ );
+
+ if (this->doTransform())
+ {
+ tpnf = transform(this->forwardT(), tpnf);
+ }
+
+ tmp > tjf = jump();
+ if (!this->cyclicAMIPatch().owner())
+ {
+ tjf = -tjf;
+ }
+
+ return tpnf - tjf;
+}
+
+
+template
+void Foam::jumpCyclicAMIFvPatchField::updateInterfaceMatrix
+(
+ scalarField& result,
+ const scalarField& psiInternal,
+ const scalarField& coeffs,
+ const direction cmpt,
+ const Pstream::commsTypes
+) const
+{
+ const labelUList& nbrFaceCells =
+ this->cyclicAMIPatch().cyclicAMIPatch().neighbPatch().faceCells();
+
+ scalarField pnf(psiInternal, nbrFaceCells);
+
+ pnf = this->cyclicAMIPatch().interpolate(pnf);
+
+ // for AMG solve - only apply jump to finest level
+ if (psiInternal.size() == this->internalField().size())
+ {
+ tmp > tjf = jump()().component(cmpt);
+ if (!this->cyclicAMIPatch().owner())
+ {
+ tjf = -tjf;
+ }
+ pnf -= tjf;
+ }
+
+ // Transform according to the transformation tensors
+ this->transformCoupleField(pnf, cmpt);
+
+ // Multiply the field by coefficients and add into the result
+ const labelUList& faceCells = this->cyclicAMIPatch().faceCells();
+ forAll(faceCells, elemI)
+ {
+ result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
+ }
+}
+
+
+template
+void Foam::jumpCyclicAMIFvPatchField::updateInterfaceMatrix
+(
+ Field& result,
+ const Field& psiInternal,
+ const scalarField& coeffs,
+ const Pstream::commsTypes
+) const
+{
+ const labelUList& nbrFaceCells =
+ this->cyclicAMIPatch().cyclicAMIPatch().neighbPatch().faceCells();
+
+ Field pnf(psiInternal, nbrFaceCells);
+
+ pnf = this->cyclicAMIPatch().interpolate(pnf);
+
+ // for AMG solve - only apply jump to finest level
+ if (psiInternal.size() == this->internalField().size())
+ {
+ tmp > tjf = jump();
+ if (!this->cyclicAMIPatch().owner())
+ {
+ tjf = -tjf;
+ }
+ pnf -= tjf;
+ }
+
+ // Transform according to the transformation tensors
+ this->transformCoupleField(pnf);
+
+ // Multiply the field by coefficients and add into the result
+ const labelUList& faceCells = this->cyclicAMIPatch().faceCells();
+ forAll(faceCells, elemI)
+ {
+ result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.H
new file mode 100644
index 0000000000..6759b09a36
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchField.H
@@ -0,0 +1,165 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+Class
+ Foam::jumpCyclicAMIFvPatchField
+
+Group
+ grpCoupledBoundaryConditions
+
+Description
+ This boundary condition provides a base class that enforces a cyclic
+ condition with a specified 'jump' (or offset) between a pair of boundaries,
+ whereby communication between the patches is performed using an arbitrary
+ mesh interface (AMI) interpolation.
+
+SeeAlso
+ Foam::cyclicAMIFvPatchField
+
+SourceFiles
+ jumpCyclicAMIFvPatchField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef jumpCyclicAMIFvPatchField_H
+#define jumpCyclicAMIFvPatchField_H
+
+#include "cyclicAMIFvPatchField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class jumpCyclicAMIFvPatchField Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class jumpCyclicAMIFvPatchField
+:
+ public cyclicAMIFvPatchField
+{
+
+public:
+
+ //- Runtime type information
+ TypeName("jumpCyclicAMI");
+
+
+ // Constructors
+
+ //- Construct from patch and internal field
+ jumpCyclicAMIFvPatchField
+ (
+ const fvPatch&,
+ const DimensionedField&
+ );
+
+ //- Construct from patch, internal field and dictionary
+ jumpCyclicAMIFvPatchField
+ (
+ const fvPatch&,
+ const DimensionedField&,
+ const dictionary&
+ );
+
+ //- Construct by mapping given jumpCyclicAMIFvPatchField onto a
+ // new patch
+ jumpCyclicAMIFvPatchField
+ (
+ const jumpCyclicAMIFvPatchField&,
+ const fvPatch&,
+ const DimensionedField&,
+ const fvPatchFieldMapper&
+ );
+
+ //- Construct as copy
+ jumpCyclicAMIFvPatchField
+ (
+ const jumpCyclicAMIFvPatchField&
+ );
+
+ //- Construct as copy setting internal field reference
+ jumpCyclicAMIFvPatchField
+ (
+ const jumpCyclicAMIFvPatchField&,
+ const DimensionedField&
+ );
+
+
+ // Member functions
+
+ // Access
+
+ //- Return the interface type
+ virtual const word& interfaceFieldType() const
+ {
+ return cyclicAMIFvPatchField::type();
+ }
+
+ //- Return the "jump" across the patch as a "half" field
+ virtual tmp > jump() const = 0;
+
+
+ // Evaluation functions
+
+ //- Return neighbour coupled given internal cell data
+ tmp > patchNeighbourField() const;
+
+ //- Update result field based on interface functionality
+ virtual void updateInterfaceMatrix
+ (
+ scalarField& result,
+ const scalarField& psiInternal,
+ const scalarField& coeffs,
+ const direction cmpt,
+ const Pstream::commsTypes commsType
+ ) const;
+
+ //- Update result field based on interface functionality
+ virtual void updateInterfaceMatrix
+ (
+ Field&,
+ const Field&,
+ const scalarField&,
+ const Pstream::commsTypes commsType
+ ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+# include "jumpCyclicAMIFvPatchField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFields.C
new file mode 100644
index 0000000000..323f460d9f
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFields.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "jumpCyclicAMIFvPatchFields.H"
+#include "addToRunTimeSelectionTable.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+makePatchFieldsTypeName(jumpCyclicAMI);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFields.H
new file mode 100644
index 0000000000..6f5039e0bc
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFields.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef jumpCyclicAMIFvPatchFields_H
+#define jumpCyclicAMIFvPatchFields_H
+
+#include "jumpCyclicAMIFvPatchField.H"
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePatchTypeFieldTypedefs(jumpCyclicAMI);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFieldsFwd.H b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFieldsFwd.H
new file mode 100644
index 0000000000..c4bc6547b0
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclicAMI/jumpCyclicAMIFvPatchFieldsFwd.H
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef jumpCyclicAMIFvPatchFieldsFwd_H
+#define jumpCyclicAMIFvPatchFieldsFwd_H
+
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template class jumpCyclicAMIFvPatchField;
+
+makePatchTypeFieldTypedefs(jumpCyclicAMI);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //