diff --git a/applications/utilities/mesh/generation/extrudeMesh/Allwclean b/applications/utilities/mesh/generation/extrude/Allwclean
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/Allwclean
rename to applications/utilities/mesh/generation/extrude/Allwclean
diff --git a/applications/utilities/mesh/generation/extrudeMesh/Allwmake b/applications/utilities/mesh/generation/extrude/Allwmake
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/Allwmake
rename to applications/utilities/mesh/generation/extrude/Allwmake
diff --git a/applications/utilities/mesh/generation/extrudeMesh/Make/files b/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/Make/files
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files
diff --git a/applications/utilities/mesh/generation/extrudeMesh/Make/options b/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/options
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/Make/options
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/Make/options
diff --git a/applications/utilities/mesh/generation/extrudeMesh/createTimeExtruded.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/createTimeExtruded.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/createTimeExtruded.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/createTimeExtruded.H
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeProperties b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMeshDict
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeProperties
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMeshDict
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/files b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/files
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/files
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/files
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/options b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/options
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/options
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/options
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.H
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.H
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.H
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.H
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.H
rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/Make/files b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/files
new file mode 100644
index 0000000000..fdd7c3e7b7
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/files
@@ -0,0 +1,10 @@
+extrudeModel/extrudeModel.C
+extrudeModel/extrudeModelNew.C
+linearNormal/linearNormal.C
+linearDirection/linearDirection.C
+linearRadial/linearRadial.C
+sigmaRadial/sigmaRadial.C
+wedge/wedge.C
+
+LIB = $(FOAM_LIBBIN)/libextrudeModel
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/Make/options b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/options
new file mode 100644
index 0000000000..3c57befe4f
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/options
@@ -0,0 +1,8 @@
+EXE_INC = \
+ -I$(LIB_SRC)/meshTools/lnInclude \
+ -I$(LIB_SRC)/dynamicMesh/lnInclude
+
+EXE_LIBS = \
+ -lmeshTools \
+ -ldynamicMesh
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.C b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.C
new file mode 100644
index 0000000000..b7b47bd6f2
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.C
@@ -0,0 +1,89 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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 "extrudeModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTypeNameAndDebug(extrudeModel, 0);
+ defineRunTimeSelectionTable(extrudeModel, dictionary);
+}
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::extrudeModel::extrudeModel
+(
+ const word& modelType,
+ const dictionary& dict
+)
+:
+ nLayers_(readLabel(dict.lookup("nLayers"))),
+ expansionRatio_(readScalar(dict.lookup("expansionRatio"))),
+ dict_(dict),
+ coeffDict_(dict.subDict(modelType + "Coeffs"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::extrudeModel::~extrudeModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+Foam::label Foam::extrudeModel::nLayers() const
+{
+ return nLayers_;
+}
+
+
+Foam::scalar Foam::extrudeModel::expansionRatio() const
+{
+ return expansionRatio_;
+}
+
+
+Foam::scalar Foam::extrudeModel::sumThickness(const label layer) const
+{
+ // 1+r+r^2+ .. +r^(n-1) = (1-r^n)/(1-r)
+
+ if (mag(1.0-expansionRatio_) < SMALL)
+ {
+ return scalar(layer)/nLayers_;
+ }
+ else
+ {
+ return
+ (1.0-pow(expansionRatio_, layer))
+ / (1.0-pow(expansionRatio_, nLayers_));
+ }
+}
+
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.H b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.H
new file mode 100644
index 0000000000..ceeb2975d7
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.H
@@ -0,0 +1,143 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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::extrudeModel
+
+Description
+ Top level extrusion model class
+
+SourceFiles
+ extrudeModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef extrudeModel_H
+#define extrudeModel_H
+
+#include "dictionary.H"
+#include "point.H"
+#include "autoPtr.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class extrudeModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class extrudeModel
+{
+protected:
+
+ // Protected data
+
+ const label nLayers_;
+
+ const scalar expansionRatio_;
+
+ const dictionary& dict_;
+
+ const dictionary& coeffDict_;
+
+
+ // Private Member Functions
+
+ //- Disallow default bitwise copy construct
+ extrudeModel(const extrudeModel&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const extrudeModel&);
+
+
+public:
+
+ //- Runtime type information
+ TypeName("extrudeModel");
+
+ //- Declare runtime constructor selection table
+
+ declareRunTimeSelectionTable
+ (
+ autoPtr,
+ extrudeModel,
+ dictionary,
+ (
+ const dictionary& dict
+ ),
+ (dict)
+ );
+
+
+ // Constructors
+
+ //- Construct from dictionary
+ extrudeModel(const word& modelType, const dictionary&);
+
+
+ // Selectors
+
+ //- Select null constructed
+ static autoPtr New(const dictionary&);
+
+
+ //- Destructor
+ virtual ~extrudeModel();
+
+
+ // Member Functions
+
+ // Access
+
+ label nLayers() const;
+
+ scalar expansionRatio() const;
+
+
+ // Member Operators
+
+ //- Helper: calculate cumulative relative thickness for layer.
+ // (layer=0 -> 0; layer=nLayers -> 1)
+ scalar sumThickness(const label layer) const;
+
+ virtual point operator()
+ (
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+ ) const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModelNew.C b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModelNew.C
new file mode 100644
index 0000000000..b2a243d83c
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModelNew.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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 "extrudeModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr Foam::extrudeModel::New
+(
+ const dictionary& dict
+)
+{
+ const word modelType(dict.lookup("extrudeModel"));
+
+ Info<< "Selecting extrudeModel " << modelType << endl;
+
+ dictionaryConstructorTable::iterator cstrIter =
+ dictionaryConstructorTablePtr_->find(modelType);
+
+ if (cstrIter == dictionaryConstructorTablePtr_->end())
+ {
+ FatalErrorIn
+ (
+ "extrudeModel::New(const dictionary&)"
+ ) << "Unknown extrudeModel type "
+ << modelType << nl << nl
+ << "Valid extrudeModel types are :" << nl
+ << dictionaryConstructorTablePtr_->sortedToc() << nl
+ << exit(FatalError);
+ }
+
+ return autoPtr(cstrIter()(dict));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.C b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.C
new file mode 100644
index 0000000000..d3d3d24382
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.C
@@ -0,0 +1,89 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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 "linearDirection.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(linearDirection, 0);
+
+addToRunTimeSelectionTable(extrudeModel, linearDirection, dictionary);
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+linearDirection::linearDirection(const dictionary& dict)
+:
+ extrudeModel(typeName, dict),
+ direction_(coeffDict_.lookup("direction")),
+ thickness_(readScalar(coeffDict_.lookup("thickness")))
+{
+ direction_ /= mag(direction_);
+
+ if (thickness_ <= 0)
+ {
+ FatalErrorIn("linearDirection(const dictionary&)")
+ << "thickness should be positive : " << thickness_
+ << exit(FatalError);
+ }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+linearDirection::~linearDirection()
+{}
+
+
+// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
+
+point linearDirection::operator()
+(
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+) const
+{
+ //scalar d = thickness_*layer/nLayers_;
+ scalar d = thickness_*sumThickness(layer);
+ return surfacePoint + d*direction_;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.H b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.H
new file mode 100644
index 0000000000..4d26ee56f5
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.H
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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::extrudeModels::linearDirection
+
+Description
+ Extrudes by transforming points in a specified direction by a given distance
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef linearDirection_H
+#define linearDirection_H
+
+#include "point.H"
+#include "extrudeModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class linearDirection Declaration
+\*---------------------------------------------------------------------------*/
+
+class linearDirection
+:
+ public extrudeModel
+{
+ // Private data
+
+ //- Extrude direction
+ vector direction_;
+
+ //- layer thickness
+ scalar thickness_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("linearDirection");
+
+ // Constructors
+
+ //- Construct from dictionary
+ linearDirection(const dictionary& dict);
+
+
+ //- Destructor
+ ~linearDirection();
+
+
+ // Member Operators
+
+ point operator()
+ (
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+ ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.C b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.C
new file mode 100644
index 0000000000..34e0ba81cd
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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 "linearNormal.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(linearNormal, 0);
+
+addToRunTimeSelectionTable(extrudeModel, linearNormal, dictionary);
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+linearNormal::linearNormal(const dictionary& dict)
+:
+ extrudeModel(typeName, dict),
+ thickness_(readScalar(coeffDict_.lookup("thickness")))
+{
+ if (thickness_ <= 0)
+ {
+ FatalErrorIn("linearNormal(const dictionary&)")
+ << "thickness should be positive : " << thickness_
+ << exit(FatalError);
+ }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+linearNormal::~linearNormal()
+{}
+
+
+// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
+
+point linearNormal::operator()
+(
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+) const
+{
+ //scalar d = thickness_*layer/nLayers_;
+ scalar d = thickness_*sumThickness(layer);
+ return surfacePoint + d*surfaceNormal;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.H b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.H
new file mode 100644
index 0000000000..62ae81bffb
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.H
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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::extrudeModels::linearNormal
+
+Description
+ Extrudes by transforming points normal to the surface by a given distance
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef linearNormal_H
+#define linearNormal_H
+
+#include "point.H"
+#include "extrudeModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class linearNormal Declaration
+\*---------------------------------------------------------------------------*/
+
+class linearNormal
+:
+ public extrudeModel
+{
+ // Private data
+
+ //- layer thickness
+ scalar thickness_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("linearNormal");
+
+ // Constructors
+
+ //- Construct from dictionary
+ linearNormal(const dictionary& dict);
+
+
+ //- Destructor
+ ~linearNormal();
+
+
+ // Member Operators
+
+ point operator()
+ (
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+ ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.C b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.C
new file mode 100644
index 0000000000..b3a8c1298a
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.C
@@ -0,0 +1,82 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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 "linearRadial.H"
+#include "addToRunTimeSelectionTable.H"
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(linearRadial, 0);
+
+addToRunTimeSelectionTable(extrudeModel, linearRadial, dictionary);
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+linearRadial::linearRadial(const dictionary& dict)
+:
+ extrudeModel(typeName, dict),
+ R_(readScalar(coeffDict_.lookup("R"))),
+ Rsurface_(coeffDict_.lookupOrDefault("Rsurface", -1))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+linearRadial::~linearRadial()
+{}
+
+
+// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
+
+point linearRadial::operator()
+(
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+) const
+{
+ // radius of the surface
+ scalar rs = mag(surfacePoint);
+ vector rsHat = surfacePoint/rs;
+ if (Rsurface_ >= 0) rs = Rsurface_;
+
+ scalar r = rs + (R_ - rs)*sumThickness(layer);
+ return r*rsHat;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.H b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.H
new file mode 100644
index 0000000000..04f19764ba
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.H
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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::extrudeModels::linearRadial
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef linearRadial_H
+#define linearRadial_H
+
+#include "extrudeModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class linearRadial Declaration
+\*---------------------------------------------------------------------------*/
+
+class linearRadial
+:
+ public extrudeModel
+{
+ // Private data
+
+ scalar R_;
+ scalar Rsurface_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("linearRadial");
+
+ // Constructors
+
+ //- Construct from dictionary
+ linearRadial(const dictionary& dict);
+
+
+ //- Destructor
+ ~linearRadial();
+
+
+ // Member Operators
+
+ point operator()
+ (
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+ ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.C b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.C
new file mode 100644
index 0000000000..c8a8ffe6fb
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.C
@@ -0,0 +1,92 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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 "sigmaRadial.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(sigmaRadial, 0);
+
+addToRunTimeSelectionTable(extrudeModel, sigmaRadial, dictionary);
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+sigmaRadial::sigmaRadial(const dictionary& dict)
+:
+ extrudeModel(typeName, dict),
+ RTbyg_(readScalar(coeffDict_.lookup("RTbyg"))),
+ pRef_(readScalar(coeffDict_.lookup("pRef"))),
+ pStrat_(readScalar(coeffDict_.lookup("pStrat")))
+{
+ if (mag(expansionRatio() - 1.0) > SMALL)
+ {
+ WarningIn("sigmaRadial::sigmaRadial(const dictionary&)")
+ << "Ignoring expansionRatio setting." << endl;
+ }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+sigmaRadial::~sigmaRadial()
+{}
+
+
+// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
+
+point sigmaRadial::operator()
+(
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+) const
+{
+ // radius of the surface
+ scalar rs = mag(surfacePoint);
+ vector rsHat = surfacePoint/rs;
+
+ scalar p = pRef_ - layer*(pRef_ - pStrat_)/nLayers_;
+ scalar r = rs - RTbyg_*log(p/pRef_);
+
+ return r*rsHat;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.H b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.H
new file mode 100644
index 0000000000..e55c81bfe4
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.H
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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::extrudeModels::sigmaRadial
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef sigmaRadial_H
+#define sigmaRadial_H
+
+#include "extrudeModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class sigmaRadial Declaration
+\*---------------------------------------------------------------------------*/
+
+class sigmaRadial
+:
+ public extrudeModel
+{
+ // Private data
+
+ scalar RTbyg_;
+ scalar pRef_;
+ scalar pStrat_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("sigmaRadial");
+
+ // Constructors
+
+ //- Construct from dictionary
+ sigmaRadial(const dictionary& dict);
+
+
+ //-Destructor
+ ~sigmaRadial();
+
+
+ // Member Operators
+
+ point operator()
+ (
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+ ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
+
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.C b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.C
new file mode 100644
index 0000000000..02154ffa67
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.C
@@ -0,0 +1,125 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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 "wedge.H"
+#include "addToRunTimeSelectionTable.H"
+#include "unitConversion.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(wedge, 0);
+
+addToRunTimeSelectionTable(extrudeModel, wedge, dictionary);
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+wedge::wedge(const dictionary& dict)
+:
+ extrudeModel(typeName, dict),
+ axisPt_(coeffDict_.lookup("axisPt")),
+ axis_(coeffDict_.lookup("axis")),
+ angle_
+ (
+ degToRad(readScalar(coeffDict_.lookup("angle")))
+ )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+wedge::~wedge()
+{}
+
+
+// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
+
+point wedge::operator()
+(
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+) const
+{
+ scalar sliceAngle;
+ // For the case of a single layer extrusion assume a
+ // symmetric wedge about the reference plane is required
+ if (nLayers_ == 1)
+ {
+ if (layer == 0)
+ {
+ sliceAngle = -angle_/2.0;
+ }
+ else
+ {
+ sliceAngle = angle_/2.0;
+ }
+ }
+ else
+ {
+ //sliceAngle = angle_*layer/nLayers_;
+ sliceAngle = angle_*sumThickness(layer);
+ }
+
+ // Find projection onto axis (or rather decompose surfacePoint
+ // into vector along edge (proj), vector normal to edge in plane
+ // of surface point and surface normal.
+ point d = surfacePoint - axisPt_;
+
+ d -= (axis_ & d)*axis_;
+
+ scalar dMag = mag(d);
+
+ point edgePt = surfacePoint - d;
+
+ // Rotate point around sliceAngle.
+ point rotatedPoint = edgePt;
+
+ if (dMag > VSMALL)
+ {
+ vector n = (d/dMag) ^ axis_;
+
+ rotatedPoint +=
+ + cos(sliceAngle)*d
+ - sin(sliceAngle)*mag(d)*n; // Use either n or surfaceNormal
+ }
+
+ return rotatedPoint;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.H b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.H
new file mode 100644
index 0000000000..a936e798e4
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.H
@@ -0,0 +1,107 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\/ 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::extrudeModels::wedge
+
+Description
+ Extrudes by rotating a surface around an axis
+ - extrusion is opposite the surface/patch normal so inwards the source
+ mesh
+ - axis direction has to be consistent with this.
+ - use -mergeFaces option if doing full 360 and want to merge front and back
+ - note direction of axis. This should be consistent with rotating against
+ the patch normal direction. If you get it wrong you'll see all cells
+ with extreme aspect ratio and internal faces wrong way around in
+ checkMesh
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef wedge_H
+#define wedge_H
+
+#include "extrudeModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace extrudeModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class wedge Declaration
+\*---------------------------------------------------------------------------*/
+
+class wedge
+:
+ public extrudeModel
+{
+ // Private data
+
+ //- Point on axis
+ const point axisPt_;
+
+ //- Normalized direction of axis
+ const vector axis_;
+
+ //- Overall angle (radians)
+ const scalar angle_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("wedge");
+
+ // Constructors
+
+ //- Construct from dictionary
+ wedge(const dictionary& dict);
+
+
+ //- Destrcuctor
+ ~wedge();
+
+
+ // Member Operators
+
+ point operator()
+ (
+ const point& surfacePoint,
+ const vector& surfaceNormal,
+ const label layer
+ ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace extrudeModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/Make/files b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/files
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/Make/files
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/files
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/Make/options b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/options
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/Make/options
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/options
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.C
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.C
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.H b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.H
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.H
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/extrudeToRegionMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/extrudeToRegionMesh.C
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C
diff --git a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMeshDict b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMeshDict
new file mode 100644
index 0000000000..6f6fc40f17
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMeshDict
@@ -0,0 +1,78 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object extrudeToRegionMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Name of region to create
+region liquidFilm;
+
+// faceZones to extrude
+faceZones (f0);
+
+// Extrude 1D-columns of cells?
+oneD false;
+
+//- Extrusion model to use. The only logical choice is linearNormal?
+
+//- Linear extrusion in normal direction
+extrudeModel linearNormal;
+
+//- Linear extrusion in specified direction
+//extrudeModel linearDirection;
+
+//- Wedge extrusion. If nLayers is 1 assumes symmetry around plane.
+// extrudeModel wedge;
+
+//- Extrudes into sphere around (0 0 0)
+//extrudeModel linearRadial;
+
+//- Extrudes into sphere with grading according to pressure (atmospherics)
+//extrudeModel sigmaRadial;
+
+nLayers 10;
+
+expansionRatio 0.9;
+
+linearNormalCoeffs
+{
+ thickness 0.05;
+}
+
+wedgeCoeffs
+{
+ axisPt (0 0.1 -0.05);
+ axis (-1 0 0);
+ angle 360; // For nLayers=1 assume symmetry so angle/2 on each side
+}
+
+linearDirectionCoeffs
+{
+ direction (0 1 0);
+ thickness 0.05;
+}
+
+linearRadialCoeffs
+{
+ R 0.1;
+}
+
+sigmaRadialCoeffs
+{
+ RTbyg 1;
+ pRef 1;
+ pStrat 1;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.C
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.C
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.C
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.H b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.H
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.H
diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculatorI.H b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculatorI.H
similarity index 100%
rename from applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculatorI.H
rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculatorI.H