diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index 47bdb976b3f4d6800b47156a3ec7cc2a5348a2ea..3bf9c8747d6ba37b46ca7e71634897d868d79eb1 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -124,6 +124,7 @@ $(derivedFvPatchFields)/buoyantPressure/buoyantPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/codedFixedValue/codedFixedValueFvPatchFields.C
 $(derivedFvPatchFields)/codedMixed/codedMixedFvPatchFields.C
 $(derivedFvPatchFields)/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.C
+$(derivedFvPatchFields)/externalCoupledMixed/externalCoupledMixedFvPatchFields.C
 $(derivedFvPatchFields)/fan/fanFvPatchFields.C
 $(derivedFvPatchFields)/fanPressure/fanPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C
new file mode 100644
index 0000000000000000000000000000000000000000..ac38f37e58ff441ccdafb7126f503bb3f1008c10
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.C
@@ -0,0 +1,428 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "externalCoupledMixedFvPatchField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvPatchFieldMapper.H"
+#include "volFields.H"
+#include "IFstream.H"
+#include "OFstream.H"
+#include "globalIndex.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::word Foam::externalCoupledMixedFvPatchField<Type>::lockName = "OpenFOAM";
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class Type>
+Foam::fileName Foam::externalCoupledMixedFvPatchField<Type>::baseDir() const
+{
+    word regionName(this->dimensionedInternalField().mesh().name());
+    if (regionName == polyMesh::defaultRegion)
+    {
+        regionName = ".";
+    }
+
+    return fileName(commsDir_/regionName/this->patch().name());
+}
+
+
+template<class Type>
+void Foam::externalCoupledMixedFvPatchField<Type>::createLockFile() const
+{
+    if (log_)
+    {
+        Info<< type() << ": creating lock file" << endl;
+    }
+
+    OFstream os(baseDir()/(lockName + ".lock"));
+    os  << "waiting";
+    os.flush();
+}
+
+
+template<class Type>
+void Foam::externalCoupledMixedFvPatchField<Type>::removeLockFile() const
+{
+    if (log_)
+    {
+        Info<< type() << ": removing lock file" << endl;
+    }
+
+    rm(baseDir()/(lockName + ".lock"));
+}
+
+
+template<class Type>
+void Foam::externalCoupledMixedFvPatchField<Type>::writeAndWait
+(
+    const fileName& transferFile
+) const
+{
+    if (log_)
+    {
+        Info<< type() << ": writing data to " << transferFile << endl;
+    }
+
+    OFstream os(transferFile);
+
+    if (Pstream::parRun())
+    {
+        int tag = Pstream::msgType() + 1;
+
+        List<Field<Type> > values(Pstream::nProcs());
+        values[Pstream::myProcNo()].setSize(this->refValue().size());
+        values[Pstream::myProcNo()] = this->refValue();
+        Pstream::listCombineScatter(values, tag);
+
+        List<Field<Type> > grads(Pstream::nProcs());
+        grads[Pstream::myProcNo()].setSize(this->refGrad().size());
+        grads[Pstream::myProcNo()] = this->refGrad();
+        Pstream::listCombineScatter(grads, tag);
+
+        List<scalarField> fracs(Pstream::nProcs());
+        fracs[Pstream::myProcNo()].setSize(this->valueFraction().size());
+        fracs[Pstream::myProcNo()] = this->valueFraction();
+        Pstream::listCombineScatter(fracs, tag);
+
+        if (Pstream::master())
+        {
+            forAll(values, procI)
+            {
+                const Field<Type>& v = values[procI];
+                const Field<Type>& g = grads[procI];
+                const scalarField& f = fracs[procI];
+
+                forAll(v, faceI)
+                {
+                    os  << v[faceI] << token::SPACE
+                        << g[faceI] << token::SPACE
+                        << f[faceI] << nl;
+                }
+            }
+        }
+    }
+    else
+    {
+        forAll(this->patch(), faceI)
+        {
+            os  << this->refValue()[faceI] << token::SPACE
+                << this->refGrad()[faceI] << token::SPACE
+                << this->valueFraction()[faceI] << nl;
+        }
+    }
+
+    os.flush();
+
+    // remove lock file, signalling external source to execute
+    removeLockFile();
+
+    const fileName lockFile(baseDir()/(lockName + ".lock"));
+
+    if (log_)
+    {
+        Info<< type() << ": beginning wait for lock file " << lockFile << endl;
+    }
+
+    bool found = false;
+    label totalTime = 0;
+
+    while (!found)
+    {
+        sleep(waitInterval_);
+        totalTime += waitInterval_;
+
+        if (log_)
+        {
+            Info<< type() << ": wait time = " << totalTime << endl;
+        }
+
+        if (totalTime > timeOut_)
+        {
+            FatalErrorIn
+            (
+                "void Foam::externalCoupledMixedFvPatchField<Type>::"
+                "writeAndWait(const fileName&) const"
+            )
+                << "Wait time exceeded time out time of " << timeOut_ << " s"
+                << abort(FatalError);
+        }
+
+        IFstream is(lockFile);
+
+        if (is.good())
+        {
+            if (log_)
+            {
+                Info<< type() << ": found lock file " << lockFile << endl;
+            }
+
+            found = true;
+        }
+    }
+
+    // remove old data file from OpenFOAM
+    rm(transferFile);
+}
+
+
+template<class Type>
+void Foam::externalCoupledMixedFvPatchField<Type>::initialiseRead
+(
+    IFstream& is
+) const
+{
+    if (!is.good())
+    {
+        FatalErrorIn
+        (
+            "void Foam::externalCoupledMixedFvPatchField<Type>::"
+            "initialiseRead()"
+        )
+            << "Unable to open data transfer file " << is.name()
+            << " for patch " << this->patch().name()
+            << exit(FatalError);
+    }
+
+    if (Pstream::parRun())
+    {
+        // fast-forward to relevant point in file
+        globalIndex gi(this->patch().size());
+        const label offset = gi.offset(Pstream::myProcNo());
+
+        string line;
+        for (label i = 0; i < offset; i++)
+        {
+            if (is.good())
+            {
+                is.getLine(line);
+            }
+            else
+            {
+                FatalErrorIn
+                (
+                    "void Foam::externalCoupledMixedFvPatchField<Type>::"
+                    "initialiseRead()"
+                )
+                    << "Unable to distribute parallel data for file "
+                    << is.name() << " for patch " << this->patch().name()
+                    << exit(FatalError);
+            }
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::externalCoupledMixedFvPatchField<Type>::externalCoupledMixedFvPatchField
+(
+    const fvPatch& p,
+    const DimensionedField<Type, volMesh>& iF
+)
+:
+    mixedFvPatchField<Type>(p, iF),
+    commsDir_("unknown-commsDir"),
+    waitInterval_(0),
+    timeOut_(0),
+    calcFrequency_(0),
+    log_(false)
+{
+    this->refValue() = pTraits<Type>::zero;
+    this->refGrad() = pTraits<Type>::zero;
+    this->valueFraction() = 0.0;
+}
+
+
+template<class Type>
+Foam::externalCoupledMixedFvPatchField<Type>::externalCoupledMixedFvPatchField
+(
+    const externalCoupledMixedFvPatchField& ptf,
+    const fvPatch& p,
+    const DimensionedField<Type, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    mixedFvPatchField<Type>(ptf, p, iF, mapper),
+    commsDir_(ptf.commsDir_),
+    fName_(ptf.fName_),
+    waitInterval_(ptf.waitInterval_),
+    timeOut_(ptf.timeOut_),
+    calcFrequency_(ptf.calcFrequency_),
+    log_(ptf.log_)
+{}
+
+
+template<class Type>
+Foam::externalCoupledMixedFvPatchField<Type>::externalCoupledMixedFvPatchField
+(
+    const fvPatch& p,
+    const DimensionedField<Type, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    mixedFvPatchField<Type>(p, iF),
+    commsDir_(dict.lookup("commsDir")),
+    fName_(dict.lookup("fileName")),
+    waitInterval_(dict.lookupOrDefault("waitInterval", 1)),
+    timeOut_(dict.lookupOrDefault("timeOut", 100*waitInterval_)),
+    calcFrequency_(dict.lookupOrDefault("calcFrequency", 1)),
+    log_(dict.lookupOrDefault("log", false))
+{
+    if (dict.found("value"))
+    {
+        fvPatchField<Type>::operator=
+        (
+            Field<Type>("value", dict, p.size())
+        );
+    }
+    else
+    {
+        fvPatchField<Type>::operator=(this->patchInternalField());
+    }
+
+    if (Pstream::master())
+    {
+        commsDir_.expand();
+        mkDir(baseDir());
+        createLockFile();
+    }
+
+    // initialise as a fixed value
+    this->refValue() = *this;
+    this->refGrad() = pTraits<Type>::zero;
+    this->valueFraction() = 1.0;
+}
+
+
+template<class Type>
+Foam::externalCoupledMixedFvPatchField<Type>::externalCoupledMixedFvPatchField
+(
+    const externalCoupledMixedFvPatchField& ecmpf
+)
+:
+    mixedFvPatchField<Type>(ecmpf),
+    commsDir_(ecmpf.commsDir_),
+    fName_(ecmpf.fName_),
+    waitInterval_(ecmpf.waitInterval_),
+    timeOut_(ecmpf.timeOut_),
+    calcFrequency_(ecmpf.calcFrequency_),
+    log_(ecmpf.log_)
+{}
+
+
+template<class Type>
+Foam::externalCoupledMixedFvPatchField<Type>::externalCoupledMixedFvPatchField
+(
+    const externalCoupledMixedFvPatchField& ecmpf,
+    const DimensionedField<Type, volMesh>& iF
+)
+:
+    mixedFvPatchField<Type>(ecmpf, iF),
+    commsDir_(ecmpf.commsDir_),
+    fName_(ecmpf.fName_),
+    waitInterval_(ecmpf.waitInterval_),
+    timeOut_(ecmpf.timeOut_),
+    calcFrequency_(ecmpf.calcFrequency_),
+    log_(ecmpf.log_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+void Foam::externalCoupledMixedFvPatchField<Type>::updateCoeffs()
+{
+    if (this->updated())
+    {
+        return;
+    }
+
+    if (this->db().time().timeIndex() % calcFrequency_ == 0)
+    {
+        fileName transferFile(baseDir()/fName_);
+
+        // write data for external source and wait for response
+        writeAndWait(transferFile + ".out");
+
+        // read data passed back from external source
+        IFstream is(transferFile + ".in");
+
+        // pre-process the input transfer file
+        initialiseRead(is);
+
+        // read data from file
+        forAll(this->patch(), faceI)
+        {
+            if (is.good())
+            {
+                is  >> this->refValue()[faceI]
+                    >> this->refGrad()[faceI]
+                    >> this->valueFraction()[faceI];
+            }
+            else
+            {
+                FatalErrorIn
+                (
+                    "void Foam::externalCoupledMixedFvPatchField<Type>::"
+                    "updateCoeffs()"
+                )
+                    << "Insufficient data for patch " << this->patch().name()
+                    << " in file " << is.name() << exit(FatalError);
+            }
+        }
+
+        // create lock file for external source
+        createLockFile();
+    }
+
+    mixedFvPatchField<Type>::updateCoeffs();
+}
+
+
+template<class Type>
+void Foam::externalCoupledMixedFvPatchField<Type>::write(Ostream& os) const
+{
+    mixedFvPatchField<Type>::write(os);
+
+    os.writeKeyword("commsDir") << commsDir_ << token::END_STATEMENT << nl;
+    os.writeKeyword("fileName") << fName_ << token::END_STATEMENT << nl;
+    os.writeKeyword("waitInterval") << waitInterval_ << token::END_STATEMENT
+        << nl;
+    os.writeKeyword("timeOut") << timeOut_ << token::END_STATEMENT
+        << nl;
+    os.writeKeyword("calcFrequency") << calcFrequency_ << token::END_STATEMENT
+        << nl;
+    os.writeKeyword("log") << log_ << token::END_STATEMENT << nl;
+
+    this->writeEntry("value", os);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H
new file mode 100644
index 0000000000000000000000000000000000000000..229d9bad6c33ebc16ae98faaff17b84eb3f27681
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchField.H
@@ -0,0 +1,251 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::externalCoupledMixedFvPatchField
+
+Group
+    grpGenericBoundaryConditions grpCoupledBoundaryConditions
+
+Description
+    This boundary condition provides an interface to an external application.
+    Values are transferred as plain text files, comprising of the constituent
+    pieces of the `mixed' condition, i.e.
+
+        <value1> <gradient1> <valueFracion1>
+        <value2> <gradient2> <valueFracion2>
+        <value3> <gradient3> <valueFracion3>
+        ...
+        <valueN> <gradientN> <valueFracionN>
+
+    At start-up, the boundary creates a lock file, e.g.
+
+        $FOAM_CASE/comms/patchName/OpenFOAM.lock
+
+    ... to signal the external source to wait.  During the boundary condition
+    update, boundary values are written to file, e.g.
+
+        $FOAM_CASE/comms/patchName/data.out
+
+    The lock file is then removed, instructing the exterbal source to take
+    control of the program execution.  When ready, the external program
+    should create the return values, e.g. to file
+
+        $FOAM_CASE/comms/patchName/data.in
+
+    ... and then re-instate the lock file.  The boundary condition will then
+    read the return values, and pass program execution back to OpenFOAM.
+
+
+    \heading Patch usage
+
+    \table
+        Property     | Description             | Required    | Default value
+        commsDir     | communications folder   | yes         |
+        fileName     | data transfer file name | yes         |
+        waitInterval | interval [s] between file checks | no | 1
+        timeOut      | time after which error invoked | no   | 100*waitInterval
+        calcFrequency | calculation frequency  | no          | 1
+        log          | log program control     | no          | no
+    \endtable
+
+    Example of the boundary condition specification:
+    \verbatim
+    myPatch
+    {
+        type            externalCoupled;
+        commsDir        "$FOAM_CASE/comms";
+        fileName        data;
+    }
+    \endverbatim
+
+SeeAlso
+    mixedFvPatchField
+
+SourceFiles
+    externalCoupledMixedFvPatchField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef externalCoupledMixedFvPatchField_H
+#define externalCoupledMixedFvPatchField_H
+
+#include "mixedFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class IFstream;
+
+/*---------------------------------------------------------------------------*\
+              Class externalCoupledMixedFvPatchField Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Type>
+class externalCoupledMixedFvPatchField
+:
+    public mixedFvPatchField<Type>
+{
+
+protected:
+
+    // Private data
+
+        //- Path to communications folder
+        fileName commsDir_;
+
+        //- Name of data file
+        word fName_;
+
+        //- Interval time between checking for return data [s]
+        label waitInterval_;
+
+        //- Time out time [s]
+        label timeOut_;
+
+        //- Calculation frequency
+        label calcFrequency_;
+
+        //- Log flag
+        bool log_;
+
+
+    // Private Member Functions
+
+        //- Return the file path to the base communications folder
+        fileName baseDir() const;
+
+        //- Create lock file
+        void createLockFile() const;
+
+        //- Remove lock file
+        void removeLockFile() const;
+
+        //- Wait and remove lock file
+        void writeAndWait(const fileName& transferFile) const;
+
+        //- Initialise input stream for reading
+        void initialiseRead(IFstream& is) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("externalCoupled");
+
+    //- Name of lock file
+    static word lockName;
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        externalCoupledMixedFvPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        externalCoupledMixedFvPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given externalCoupledMixedFvPatchField
+        //  onto a new patch
+        externalCoupledMixedFvPatchField
+        (
+            const externalCoupledMixedFvPatchField<Type>&,
+            const fvPatch&,
+            const DimensionedField<Type, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        externalCoupledMixedFvPatchField
+        (
+            const externalCoupledMixedFvPatchField&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchField<Type> > clone() const
+        {
+            return tmp<fvPatchField<Type> >
+            (
+                new externalCoupledMixedFvPatchField<Type>(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        externalCoupledMixedFvPatchField
+        (
+            const externalCoupledMixedFvPatchField&,
+            const DimensionedField<Type, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchField<Type> > clone
+        (
+            const DimensionedField<Type, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchField<Type> >
+            (
+                new externalCoupledMixedFvPatchField<Type>(*this, iF)
+            );
+        }
+
+
+    // Member functions
+
+        // Evaluation functions
+
+            //- Update the coefficients associated with the patch field
+            virtual void updateCoeffs();
+
+
+        //- Write
+        virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "externalCoupledMixedFvPatchField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C
new file mode 100644
index 0000000000000000000000000000000000000000..42ab10636d5cf304bfadc234540066b8e5d62a85
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.C
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "externalCoupledMixedFvPatchFields.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+makePatchFields(externalCoupledMixed);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..36d457004b0a9992f7fa24ba7048fcef6327a3e8
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFields.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef externalCoupledMixedFvPatchFields_H
+#define externalCoupledMixedFvPatchFields_H
+
+#include "externalCoupledMixedFvPatchField.H"
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePatchTypeFieldTypedefs(externalCoupledMixed);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFieldsFwd.H b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFieldsFwd.H
new file mode 100644
index 0000000000000000000000000000000000000000..7aae5c7b502ea25242f635c936398f08d5873d9f
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/externalCoupledMixed/externalCoupledMixedFvPatchFieldsFwd.H
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef externalCoupledMixedFvPatchFieldsFwd_H
+#define externalCoupledMixedFvPatchFieldsFwd_H
+
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template<class Type> class externalCoupledMixedFvPatchField;
+
+makePatchTypeFieldTypedefs(externalCoupledMixed);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //