diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index 855fb1fd6f..8b184cfaf1 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -456,6 +456,7 @@ $(snGradSchemes)/orthogonalSnGrad/orthogonalSnGrads.C
$(snGradSchemes)/quadraticFitSnGrad/quadraticFitSnGrads.C
$(snGradSchemes)/linearFitSnGrad/linearFitSnGrads.C
$(snGradSchemes)/skewCorrectedSnGrad/skewCorrectedSnGrads.C
+$(snGradSchemes)/relaxedSnGrad/relaxedSnGrads.C
convectionSchemes = finiteVolume/convectionSchemes
$(convectionSchemes)/convectionScheme/convectionSchemes.C
@@ -466,6 +467,7 @@ $(convectionSchemes)/boundedConvectionScheme/boundedConvectionSchemes.C
laplacianSchemes = finiteVolume/laplacianSchemes
$(laplacianSchemes)/laplacianScheme/laplacianSchemes.C
$(laplacianSchemes)/gaussLaplacianScheme/gaussLaplacianSchemes.C
+$(laplacianSchemes)/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianSchemes.C
finiteVolume/fvc/fvcFlux.C
finiteVolume/fvc/fvcMeshPhi.C
diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianScheme.C b/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianScheme.C
new file mode 100644
index 0000000000..d0732bf124
--- /dev/null
+++ b/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianScheme.C
@@ -0,0 +1,276 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2019 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+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 "relaxedNonOrthoGaussLaplacianScheme.H"
+#include "surfaceInterpolate.H"
+#include "fvcDiv.H"
+#include "fvcGrad.H"
+#include "fvMatrices.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace fv
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template
+tmp>
+relaxedNonOrthoGaussLaplacianScheme::fvmLaplacianUncorrected
+(
+ const surfaceScalarField& gammaMagSf,
+ const surfaceScalarField& deltaCoeffs,
+ const GeometricField& vf
+)
+{
+ tmp> tfvm
+ (
+ new fvMatrix
+ (
+ vf,
+ deltaCoeffs.dimensions()*gammaMagSf.dimensions()*vf.dimensions()
+ )
+ );
+ fvMatrix& fvm = tfvm.ref();
+
+ fvm.upper() = deltaCoeffs.primitiveField()*gammaMagSf.primitiveField();
+ fvm.negSumDiag();
+
+ forAll(vf.boundaryField(), patchi)
+ {
+ const fvPatchField& pvf = vf.boundaryField()[patchi];
+ const fvsPatchScalarField& pGamma = gammaMagSf.boundaryField()[patchi];
+ const fvsPatchScalarField& pDeltaCoeffs =
+ deltaCoeffs.boundaryField()[patchi];
+
+ if (pvf.coupled())
+ {
+ fvm.internalCoeffs()[patchi] =
+ pGamma*pvf.gradientInternalCoeffs(pDeltaCoeffs);
+ fvm.boundaryCoeffs()[patchi] =
+ -pGamma*pvf.gradientBoundaryCoeffs(pDeltaCoeffs);
+ }
+ else
+ {
+ fvm.internalCoeffs()[patchi] = pGamma*pvf.gradientInternalCoeffs();
+ fvm.boundaryCoeffs()[patchi] = -pGamma*pvf.gradientBoundaryCoeffs();
+ }
+ }
+
+ return tfvm;
+}
+
+
+template
+tmp>
+relaxedNonOrthoGaussLaplacianScheme::gammaSnGradCorr
+(
+ const surfaceVectorField& SfGammaCorr,
+ const GeometricField& vf
+)
+{
+ const fvMesh& mesh = this->mesh();
+
+ tmp> tgammaSnGradCorr
+ (
+ new GeometricField
+ (
+ IOobject
+ (
+ "gammaSnGradCorr("+vf.name()+')',
+ vf.instance(),
+ mesh,
+ IOobject::NO_READ,
+ IOobject::NO_WRITE
+ ),
+ mesh,
+ SfGammaCorr.dimensions()
+ *vf.dimensions()*mesh.deltaCoeffs().dimensions()
+ )
+ );
+
+ for (direction cmpt = 0; cmpt < pTraits::nComponents; cmpt++)
+ {
+ tgammaSnGradCorr.ref().replace
+ (
+ cmpt,
+ fvc::dotInterpolate(SfGammaCorr, fvc::grad(vf.component(cmpt)))
+ );
+ }
+
+ return tgammaSnGradCorr;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template
+tmp>
+relaxedNonOrthoGaussLaplacianScheme::fvcLaplacian
+(
+ const GeometricField& vf
+)
+{
+ const fvMesh& mesh = this->mesh();
+
+ tmp> tLaplacian
+ (
+ fvc::div(this->tsnGradScheme_().snGrad(vf)*mesh.magSf())
+ );
+
+ tLaplacian.ref().rename("laplacian(" + vf.name() + ')');
+
+ return tLaplacian;
+}
+
+
+template
+tmp>
+relaxedNonOrthoGaussLaplacianScheme::fvmLaplacian
+(
+ const GeometricField& gamma,
+ const GeometricField& vf
+)
+{
+ const fvMesh& mesh = this->mesh();
+
+ typedef GeometricField SType;
+
+ const surfaceVectorField Sn(mesh.Sf()/mesh.magSf());
+
+ const surfaceVectorField SfGamma(mesh.Sf() & gamma);
+ const GeometricField SfGammaSn
+ (
+ SfGamma & Sn
+ );
+ const surfaceVectorField SfGammaCorr(SfGamma - SfGammaSn*Sn);
+
+ tmp> tfvm = fvmLaplacianUncorrected
+ (
+ SfGammaSn,
+ this->tsnGradScheme_().deltaCoeffs(vf),
+ vf
+ );
+ fvMatrix& fvm = tfvm.ref();
+
+ tmp tfaceFluxCorrection = gammaSnGradCorr(SfGammaCorr, vf);
+
+ if (this->tsnGradScheme_().corrected())
+ {
+ tfaceFluxCorrection.ref() +=
+ SfGammaSn*this->tsnGradScheme_().correction(vf);
+ }
+
+ const word corrName(tfaceFluxCorrection().name());
+
+ tmp trelaxedCorrection(new SType(tfaceFluxCorrection()));
+
+ const word oldName(corrName + "_0");
+ const scalar relax(vf.mesh().equationRelaxationFactor(oldName));
+
+ const objectRegistry& obr = vf.db();
+ if (obr.foundObject(oldName))
+ {
+ SType& oldCorrection = obr.lookupObjectRef(oldName);
+
+ trelaxedCorrection.ref() *= relax;
+ trelaxedCorrection.ref() += (1.0-relax)*oldCorrection;
+
+ oldCorrection = tfaceFluxCorrection;
+ }
+ else
+ {
+ SType* s = new SType(oldName, tfaceFluxCorrection);
+ s->store();
+ }
+
+ fvm.source() -=
+ mesh.V()
+ *fvc::div
+ (
+ trelaxedCorrection()
+ )().primitiveField();
+
+ if (mesh.fluxRequired(vf.name()))
+ {
+ fvm.faceFluxCorrectionPtr() = trelaxedCorrection.ptr();
+ }
+
+ return tfvm;
+}
+
+
+template
+tmp>
+relaxedNonOrthoGaussLaplacianScheme::fvcLaplacian
+(
+ const GeometricField& gamma,
+ const GeometricField& vf
+)
+{
+ const fvMesh& mesh = this->mesh();
+
+ const surfaceVectorField Sn(mesh.Sf()/mesh.magSf());
+ const surfaceVectorField SfGamma(mesh.Sf() & gamma);
+ const GeometricField SfGammaSn
+ (
+ SfGamma & Sn
+ );
+ const surfaceVectorField SfGammaCorr(SfGamma - SfGammaSn*Sn);
+
+ tmp> tLaplacian
+ (
+ fvc::div
+ (
+ SfGammaSn*this->tsnGradScheme_().snGrad(vf)
+ + gammaSnGradCorr(SfGammaCorr, vf)
+ )
+ );
+
+ tLaplacian.ref().rename
+ (
+ "laplacian(" + gamma.name() + ',' + vf.name() + ')'
+ );
+
+ return tLaplacian;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace fv
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianScheme.H b/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianScheme.H
new file mode 100644
index 0000000000..ff4a7f6c67
--- /dev/null
+++ b/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianScheme.H
@@ -0,0 +1,210 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2019 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+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::fv::relaxedNonOrthoGaussLaplacianScheme
+
+Description
+ Basic second-order laplacian using face-gradients and Gauss' theorem.
+
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ laplacianSchemes
+ {
+ laplacian() relaxedNonOrthoGauss ;
+ }
+ \endverbatim
+
+ and by using \c system/fvSolution:
+ \verbatim
+ relaxationFactors
+ {
+ equations
+ {
+ ;
+ }
+ }
+ \endverbatim
+
+SourceFiles
+ relaxedNonOrthoGaussLaplacianScheme.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef relaxedNonOrthoGaussLaplacianScheme_H
+#define relaxedNonOrthoGaussLaplacianScheme_H
+
+#include "laplacianScheme.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace fv
+{
+
+/*---------------------------------------------------------------------------*\
+ Class relaxedNonOrthoGaussLaplacianScheme Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class relaxedNonOrthoGaussLaplacianScheme
+:
+ public fv::laplacianScheme
+{
+ // Private Member Functions
+
+ tmp> gammaSnGradCorr
+ (
+ const surfaceVectorField& SfGammaCorr,
+ const GeometricField&
+ );
+
+ //- No copy construct
+ relaxedNonOrthoGaussLaplacianScheme
+ (
+ const relaxedNonOrthoGaussLaplacianScheme&
+ ) = delete;
+
+ //- No copy assignment
+ void operator=(const relaxedNonOrthoGaussLaplacianScheme&) = delete;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("relaxedNonOrthoGauss");
+
+
+ // Constructors
+
+ //- Construct null
+ relaxedNonOrthoGaussLaplacianScheme(const fvMesh& mesh)
+ :
+ laplacianScheme(mesh)
+ {}
+
+ //- Construct from Istream
+ relaxedNonOrthoGaussLaplacianScheme(const fvMesh& mesh, Istream& is)
+ :
+ laplacianScheme(mesh, is)
+ {}
+
+ //- Construct from mesh, interpolation and snGradScheme schemes
+ relaxedNonOrthoGaussLaplacianScheme
+ (
+ const fvMesh& mesh,
+ const tmp>& igs,
+ const tmp>& sngs
+ )
+ :
+ laplacianScheme(mesh, igs, sngs)
+ {}
+
+
+ //- Destructor
+ virtual ~relaxedNonOrthoGaussLaplacianScheme() = default;
+
+
+ // Member Functions
+
+ static tmp> fvmLaplacianUncorrected
+ (
+ const surfaceScalarField& gammaMagSf,
+ const surfaceScalarField& deltaCoeffs,
+ const GeometricField&
+ );
+
+ tmp> fvcLaplacian
+ (
+ const GeometricField&
+ );
+
+ tmp> fvmLaplacian
+ (
+ const GeometricField&,
+ const GeometricField&
+ );
+
+ tmp> fvcLaplacian
+ (
+ const GeometricField&,
+ const GeometricField&
+ );
+};
+
+
+// Use macros to emulate partial-specialisation of the Laplacian functions
+// for scalar diffusivity gamma
+
+#define defineFvmLaplacianScalarGamma(Type) \
+ \
+template<> \
+tmp> \
+relaxedNonOrthoGaussLaplacianScheme::fvmLaplacian \
+( \
+ const GeometricField&, \
+ const GeometricField& \
+); \
+ \
+template<> \
+tmp> \
+relaxedNonOrthoGaussLaplacianScheme::fvcLaplacian \
+( \
+ const GeometricField&, \
+ const GeometricField& \
+);
+
+
+defineFvmLaplacianScalarGamma(scalar);
+defineFvmLaplacianScalarGamma(vector);
+defineFvmLaplacianScalarGamma(sphericalTensor);
+defineFvmLaplacianScalarGamma(symmTensor);
+defineFvmLaplacianScalarGamma(tensor);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace fv
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+ #include "relaxedNonOrthoGaussLaplacianScheme.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianSchemes.C b/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianSchemes.C
new file mode 100644
index 0000000000..7aa0027ec9
--- /dev/null
+++ b/src/finiteVolume/finiteVolume/laplacianSchemes/relaxedNonOrthoGaussLaplacianScheme/relaxedNonOrthoGaussLaplacianSchemes.C
@@ -0,0 +1,140 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2019 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+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 "relaxedNonOrthoGaussLaplacianScheme.H"
+#include "fvMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makeFvLaplacianScheme(relaxedNonOrthoGaussLaplacianScheme)
+
+#define declareFvmLaplacianScalarGamma(Type) \
+ \
+template<> \
+Foam::tmp> \
+Foam::fv::relaxedNonOrthoGaussLaplacianScheme:: \
+fvmLaplacian \
+( \
+ const GeometricField& gamma, \
+ const GeometricField& vf \
+) \
+{ \
+ const fvMesh& mesh = this->mesh(); \
+ \
+ typedef GeometricField SType; \
+ \
+ GeometricField gammaMagSf \
+ ( \
+ gamma*mesh.magSf() \
+ ); \
+ \
+ tmp> tfvm = fvmLaplacianUncorrected \
+ ( \
+ gammaMagSf, \
+ this->tsnGradScheme_().deltaCoeffs(vf), \
+ vf \
+ ); \
+ fvMatrix& fvm = tfvm.ref(); \
+ \
+ if (this->tsnGradScheme_().corrected()) \
+ { \
+ tmp tCorr(this->tsnGradScheme_().correction(vf)); \
+ const word corrName(tCorr().name()); \
+ tmp tfaceFluxCorrection(gammaMagSf*tCorr); \
+ \
+ tmp trelaxedCorrection(new SType(tfaceFluxCorrection())); \
+ \
+ const word oldName(corrName + "_0"); \
+ const scalar relax(vf.mesh().equationRelaxationFactor(corrName)); \
+ const objectRegistry& obr = vf.db(); \
+ if (obr.foundObject(oldName)) \
+ { \
+ SType& oldCorrection = obr.lookupObjectRef(oldName); \
+ trelaxedCorrection.ref() *= relax; \
+ trelaxedCorrection.ref() += (1.0-relax)*oldCorrection; \
+ \
+ oldCorrection = trelaxedCorrection(); \
+ } \
+ else \
+ { \
+ SType* s = new SType(oldName, tfaceFluxCorrection); \
+ s->store(); \
+ } \
+ \
+ tmp> tcorr \
+ ( \
+ mesh.V() \
+ *fvc::div \
+ ( \
+ trelaxedCorrection() \
+ )().primitiveField() \
+ ); \
+ \
+ fvm.source() -= tcorr(); \
+ \
+ if (mesh.fluxRequired(vf.name())) \
+ { \
+ fvm.faceFluxCorrectionPtr() = trelaxedCorrection.ptr(); \
+ } \
+ } \
+ \
+ return tfvm; \
+} \
+ \
+ \
+template<> \
+Foam::tmp> \
+Foam::fv::relaxedNonOrthoGaussLaplacianScheme::fvcLaplacian \
+( \
+ const GeometricField& gamma, \
+ const GeometricField& vf \
+) \
+{ \
+ const fvMesh& mesh = this->mesh(); \
+ \
+ tmp> tLaplacian \
+ ( \
+ fvc::div(gamma*this->tsnGradScheme_().snGrad(vf)*mesh.magSf()) \
+ ); \
+ \
+ tLaplacian.ref().rename \
+ ( \
+ "laplacian(" + gamma.name() + ',' + vf.name() + ')' \
+ ); \
+ \
+ return tLaplacian; \
+}
+
+
+declareFvmLaplacianScalarGamma(scalar);
+declareFvmLaplacianScalarGamma(vector);
+declareFvmLaplacianScalarGamma(sphericalTensor);
+declareFvmLaplacianScalarGamma(symmTensor);
+declareFvmLaplacianScalarGamma(tensor);
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/CentredFitSnGrad/CentredFitSnGradScheme.H b/src/finiteVolume/finiteVolume/snGradSchemes/CentredFitSnGrad/CentredFitSnGradScheme.H
index 81b7cdf0ef..7a7a80366c 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/CentredFitSnGrad/CentredFitSnGradScheme.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/CentredFitSnGrad/CentredFitSnGradScheme.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2013-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -109,7 +110,7 @@ public:
}
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return true;
}
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C
index 174d11bbb9..ab5d7f4063 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -32,13 +33,6 @@ License
#include "fvcGrad.H"
#include "gaussGrad.H"
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-
-template
-Foam::fv::correctedSnGrad::~correctedSnGrad()
-{}
-
-
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template
@@ -96,7 +90,7 @@ Foam::fv::correctedSnGrad::correction
GeometricField& ssf = tssf.ref();
ssf.setOriented();
- for (direction cmpt = 0; cmpt < pTraits::nComponents; cmpt++)
+ for (direction cmpt = 0; cmpt < pTraits::nComponents; ++cmpt)
{
ssf.replace
(
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H
index 8f0b7c3abe..4533778dc8 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correctedSnGrad.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,7 +31,16 @@ Group
grpFvSnGradSchemes
Description
- Simple central-difference snGrad scheme with non-orthogonal correction.
+ Surface gradient scheme with full explicit non-orthogonal correction.
+
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ snGradSchemes
+ {
+ snGrad() corrected;
+ }
+ \endverbatim
SourceFiles
correctedSnGrad.C
@@ -53,7 +63,7 @@ namespace fv
{
/*---------------------------------------------------------------------------*\
- Class correctedSnGrad Declaration
+ Class correctedSnGrad Declaration
\*---------------------------------------------------------------------------*/
template
@@ -81,7 +91,6 @@ public:
snGradScheme(mesh)
{}
-
//- Construct from mesh and data stream
correctedSnGrad(const fvMesh& mesh, Istream&)
:
@@ -90,7 +99,7 @@ public:
//- Destructor
- virtual ~correctedSnGrad();
+ virtual ~correctedSnGrad() = default;
// Member Functions
@@ -105,13 +114,13 @@ public:
}
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return true;
}
//- Return the explicit correction to the correctedSnGrad
- // for the given field using the gradient of the field
+ //- for the given field using the gradient of the field
tmp>
fullGradCorrection
(
@@ -119,7 +128,7 @@ public:
) const;
//- Return the explicit correction to the correctedSnGrad
- // for the given field using the gradients of the field components
+ //- for the given field using the gradients of the field components
virtual tmp>
correction(const GeometricField&) const;
};
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.C
index 913af1e61b..46982ebda8 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -29,13 +30,6 @@ License
#include "volPointInterpolation.H"
#include "triangle.H"
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-
-template
-Foam::fv::faceCorrectedSnGrad::~faceCorrectedSnGrad()
-{}
-
-
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template
@@ -89,18 +83,18 @@ Foam::fv::faceCorrectedSnGrad::fullGradCorrection
const face& fi = faces[facei];
- vector nf(Sf[facei]/magSf[facei]);
+ const vector nf(Sf[facei]/magSf[facei]);
- for (label pi=0; pi::fullGradCorrection
vector dCorr(C[neighbour[facei]] - C[owner[facei]]);
dCorr /= (nf & dCorr);
- // if (mag(dCorr) > 2) dCorr *= 2/mag(dCorr);
-
sfCorr[facei] = dCorr&fgrad;
}
@@ -152,7 +144,7 @@ Foam::fv::faceCorrectedSnGrad::correction
);
GeometricField& ssf = tssf.ref();
- for (direction cmpt = 0; cmpt < pTraits::nComponents; cmpt++)
+ for (direction cmpt = 0; cmpt < pTraits::nComponents; ++cmpt)
{
ssf.replace
(
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.H
index 13bb277464..f4540ba0c0 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/faceCorrectedSnGrad/faceCorrectedSnGrad.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,7 +31,16 @@ Group
grpFvSnGradSchemes
Description
- Simple central-difference snGrad scheme with non-orthogonal correction.
+ Surface gradient scheme with full explicit non-orthogonal correction.
+
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ snGradSchemes
+ {
+ snGrad() faceCorrected;
+ }
+ \endverbatim
SourceFiles
faceCorrectedSnGrad.C
@@ -53,7 +63,7 @@ namespace fv
{
/*---------------------------------------------------------------------------*\
- Class faceCorrectedSnGrad Declaration
+ Class faceCorrectedSnGrad Declaration
\*---------------------------------------------------------------------------*/
template
@@ -81,7 +91,6 @@ public:
snGradScheme(mesh)
{}
-
//- Construct from mesh and data stream
faceCorrectedSnGrad(const fvMesh& mesh, Istream&)
:
@@ -90,7 +99,7 @@ public:
//- Destructor
- virtual ~faceCorrectedSnGrad();
+ virtual ~faceCorrectedSnGrad() = default;
// Member Functions
@@ -105,13 +114,13 @@ public:
}
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return true;
}
//- Return the explicit correction to the faceCorrectedSnGrad
- // for the given field using the gradient of the field
+ //- for the given field using the gradient of the field
tmp>
fullGradCorrection
(
@@ -119,7 +128,7 @@ public:
) const;
//- Return the explicit correction to the faceCorrectedSnGrad
- // for the given field using the gradients of the field components
+ //- for the given field using the gradients of the field components
virtual tmp>
correction(const GeometricField&) const;
};
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.C
index babc458a20..6f0f95ee35 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -42,13 +43,6 @@ namespace Foam
namespace fv
{
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-
-template
-limitedSnGrad::~limitedSnGrad()
-{}
-
-
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.H
index b14abfa5cf..1922fe14d8 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrad.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,20 +31,26 @@ Group
grpFvSnGradSchemes
Description
- Run-time selected snGrad scheme with limited non-orthogonal correction.
+ Surface gradient scheme with limited explicit non-orthogonal correction.
The limiter is controlled by a coefficient with a value between 0 and 1
which when 0 switches the correction off and the scheme behaves as
- uncorrectedSnGrad, when set to 1 the full correction of the selected scheme
- is used and when set to 0.5 the limiter is calculated such that the
- non-orthogonal contribution does not exceed the orthogonal part.
+ \c uncorrected \c snGrad, when set to 1 the full correction of the
+ selected scheme is used and the scheme behaves as \c corrected \c snGrad,
+ and when set to 0.5 the limiter is calculated such that the non-orthogonal
+ component does not exceed the orthogonal component.
- Format:
- limited \ \;
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ snGradSchemes
+ {
+ snGrad() limited ;
- or
-
- limited \; // Backward compatibility
+ // Backward compatibility
+ snGrad() limited ;
+ }
+ \endverbatim
SourceFiles
limitedSnGrad.C
@@ -66,7 +73,7 @@ namespace fv
{
/*---------------------------------------------------------------------------*\
- Class limitedSnGrad Declaration
+ Class limitedSnGrad Declaration
\*---------------------------------------------------------------------------*/
template
@@ -74,10 +81,12 @@ class limitedSnGrad
:
public snGradScheme
{
- // Private data
+ // Private Data
+ //- Type of correction scheme
tmp> correctedScheme_;
+ //- Limiter coefficient
scalar limitCoeff_;
@@ -87,7 +96,7 @@ class limitedSnGrad
void operator=(const limitedSnGrad&) = delete;
//- Lookup function for the corrected to support backward compatibility
- // of dictionary specification
+ //- of dictionary specification
tmp> lookupCorrectedScheme(Istream& schemeData)
{
token nextToken(schemeData);
@@ -131,7 +140,6 @@ public:
limitCoeff_(1)
{}
-
//- Construct from mesh and data stream
limitedSnGrad(const fvMesh& mesh, Istream& schemeData)
:
@@ -149,7 +157,7 @@ public:
//- Destructor
- virtual ~limitedSnGrad();
+ virtual ~limitedSnGrad() = default;
// Member Functions
@@ -164,13 +172,13 @@ public:
}
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return true;
}
//- Return the explicit correction to the limitedSnGrad
- // for the given field
+ //- for the given field
virtual tmp>
correction(const GeometricField&) const;
};
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrads.C b/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrads.C
index ef02a344a5..5a385681bf 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrads.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/limitedSnGrad/limitedSnGrads.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -23,13 +24,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
-Description
- Central-difference snGrad scheme with limited non-orthogonal correction.
- The limiter is controlled by a coefficient with a value between 0 and 1
- which when zero switches the limiter off and the scheme behaves as
- correctedSnGrad, and when set to 1 the limiter is calculated such that the
- non-orthogonal contribution does not exceed the orthogonal part.
-
\*---------------------------------------------------------------------------*/
#include "limitedSnGrad.H"
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C
index 1ea8894bbf..64380af3ad 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -23,9 +24,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
-Description
- Simple central-difference snGrad scheme without non-orthogonal correction.
-
\*---------------------------------------------------------------------------*/
#include "orthogonalSnGrad.H"
@@ -42,13 +40,6 @@ namespace Foam
namespace fv
{
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-
-template
-orthogonalSnGrad::~orthogonalSnGrad()
-{}
-
-
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H
index 747870a911..c242628b84 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,8 +31,21 @@ Group
grpFvSnGradSchemes
Description
- Simple central-difference snGrad scheme using the cell-centre to cell-centre
- delta-coefficients.
+ Surface gradient scheme with no non-orthogonal correction.
+
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ snGradSchemes
+ {
+ snGrad() orthogonal;
+ }
+ \endverbatim
+
+Note
+ - Interpolation weighting factors (i.e. delta coefficients) are based
+ on the \c deltaCoeffs function rather than the \c nonOrthDeltaCoeffs
+ function, which is used by the \c uncorrected scheme.
SourceFiles
orthogonalSnGrad.C
@@ -54,7 +68,7 @@ namespace fv
{
/*---------------------------------------------------------------------------*\
- Class orthogonalSnGrad Declaration
+ Class orthogonalSnGrad Declaration
\*---------------------------------------------------------------------------*/
template
@@ -82,7 +96,6 @@ public:
snGradScheme(mesh)
{}
-
//- Construct from mesh and data stream
orthogonalSnGrad(const fvMesh& mesh, Istream&)
:
@@ -91,7 +104,7 @@ public:
//- Destructor
- virtual ~orthogonalSnGrad();
+ virtual ~orthogonalSnGrad() = default;
// Member Functions
@@ -106,13 +119,13 @@ public:
}
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return false;
}
//- Return the explicit correction to the orthogonalSnGrad
- // for the given field
+ //- for the given field
virtual tmp>
correction(const GeometricField&) const;
};
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C
index b52a70ca6b..9f350c0bf2 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -23,9 +24,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
-Description
- Simple central-difference snGrad scheme without non-orthogonal correction.
-
\*---------------------------------------------------------------------------*/
#include "orthogonalSnGrad.H"
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrad.C
new file mode 100644
index 0000000000..0b01812677
--- /dev/null
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrad.C
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2021 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+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 "fv.H"
+#include "relaxedSnGrad.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+Foam::tmp>
+Foam::fv::relaxedSnGrad::correction
+(
+ const GeometricField& vf
+) const
+{
+ typedef GeometricField SurfFieldType;
+
+ // Calculate explicit correction field
+ tmp tcorrection = correctedScheme_().correction(vf);
+
+ // Retrieve relaxation factor value
+ const word fieldName(vf.name());
+ const word oldFieldName(fieldName + "_0");
+ const scalar relax =
+ vf.mesh().fieldRelaxationFactor("snGrad("+fieldName+")");
+
+ // Return explicit correction field if
+ // previous-time step correction is unavailable
+ const objectRegistry& obr = vf.db();
+ if (!obr.foundObject(oldFieldName))
+ {
+ SurfFieldType* oldCorrection =
+ new SurfFieldType(oldFieldName, tcorrection());
+ oldCorrection->store();
+ }
+
+ // Return under/over-relaxed explicit correction field
+ tmp trelaxedCorrection(new SurfFieldType(tcorrection()));
+
+ SurfFieldType& oldCorrection =
+ obr.lookupObjectRef(oldFieldName);
+
+ trelaxedCorrection.ref() *= relax;
+ trelaxedCorrection.ref() += (scalar(1) - relax)*oldCorrection;
+
+ oldCorrection = tcorrection;
+
+ return trelaxedCorrection;
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrad.H
new file mode 100644
index 0000000000..f01afd528e
--- /dev/null
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrad.H
@@ -0,0 +1,166 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2021 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+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::fv::relaxedSnGrad
+
+Group
+ grpFvSnGradSchemes
+
+Description
+ Surface gradient scheme with under-/over-relaxed
+ full or limited explicit non-orthogonal correction.
+
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ snGradSchemes
+ {
+ snGrad() relaxed;
+ }
+ \endverbatim
+
+ and by using \c system/fvSolution:
+ \verbatim
+ relaxationFactors
+ {
+ fields
+ {
+ snGrad() ;
+ }
+ }
+ \endverbatim
+
+
+SourceFiles
+ relaxedSnGrad.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef relaxedSnGrad_H
+#define relaxedSnGrad_H
+
+#include "correctedSnGrad.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace fv
+{
+
+/*---------------------------------------------------------------------------*\
+ Class relaxedSnGrad Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class relaxedSnGrad
+:
+ public snGradScheme
+{
+ // Private Data
+
+ //- Type of correction scheme
+ tmp> correctedScheme_;
+
+
+ // Private Member Functions
+
+ //- No copy assignment
+ void operator=(const relaxedSnGrad&) = delete;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("relaxed");
+
+
+ // Constructors
+
+ //- Construct from mesh
+ relaxedSnGrad(const fvMesh& mesh)
+ :
+ snGradScheme(mesh),
+ correctedScheme_(new correctedSnGrad(this->mesh()))
+ {}
+
+ //- Construct from mesh and data stream
+ relaxedSnGrad(const fvMesh& mesh, Istream& schemeData)
+ :
+ snGradScheme(mesh),
+ correctedScheme_(new correctedSnGrad(this->mesh()))
+ {}
+
+
+ //- Destructor
+ virtual ~relaxedSnGrad() = default;
+
+
+ // Member Functions
+
+ //- Return the interpolation weighting factors for the given field
+ virtual tmp deltaCoeffs
+ (
+ const GeometricField&
+ ) const
+ {
+ return this->mesh().nonOrthDeltaCoeffs();
+ }
+
+ //- Return true if this scheme uses an explicit correction
+ virtual bool corrected() const noexcept
+ {
+ return true;
+ }
+
+ //- Return the explicit correction to the relaxedSnGrad
+ //- for the given field using the gradients of the field components
+ virtual tmp>
+ correction(const GeometricField&) const;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace fv
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+ #include "relaxedSnGrad.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrads.C b/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrads.C
new file mode 100644
index 0000000000..d863791dc5
--- /dev/null
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/relaxedSnGrad/relaxedSnGrads.C
@@ -0,0 +1,35 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2021 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+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 "relaxedSnGrad.H"
+#include "fvMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makeSnGradScheme(relaxedSnGrad)
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.C
index 7138197f69..5faffa76f5 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2019 Zeljko Tukovic, FSB Zagreb.
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -72,8 +73,6 @@ Foam::fv::skewCorrectedSnGrad::fullGradCorrection
const vectorField& Sf = mesh.Sf().internalField();
const scalarField& magSf = mesh.magSf().internalField();
- vectorField nf(Sf/magSf);
-
const vectorField& Cf = mesh.Cf().internalField();
const vectorField& C = mesh.C().internalField();
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.H
index 1ab2e696a9..5e2919c250 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/skewCorrectedSnGrad/skewCorrectedSnGrad.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2019 Zeljko Tukovic, FSB Zagreb.
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,7 +31,17 @@ Group
grpFvSnGradSchemes
Description
- Simple central-difference snGrad scheme with non-orthogonal correction.
+ Surface gradient scheme with skewness and full
+ explicit non-orthogonal corrections.
+
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ snGradSchemes
+ {
+ snGrad() skewCorrected;
+ }
+ \endverbatim
SourceFiles
skewCorrectedSnGrad.C
@@ -81,7 +92,6 @@ public:
snGradScheme(mesh)
{}
-
//- Construct from mesh and data stream
skewCorrectedSnGrad(const fvMesh& mesh, Istream&)
:
@@ -105,7 +115,7 @@ public:
}
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return true;
}
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C
index 0dc584dcfb..e507d053c8 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.C
@@ -60,8 +60,8 @@ tmp> snGradScheme::New
{
FatalIOErrorInFunction(schemeData)
<< "Discretisation scheme not specified"
- << endl << endl
- << "Valid schemes are :" << endl
+ << nl << nl
+ << "Valid schemes are :" << nl
<< MeshConstructorTablePtr_->sortedToc()
<< exit(FatalIOError);
}
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.H b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.H
index 324fd03a69..d19a63bf3f 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradScheme.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,7 +31,17 @@ Group
grpFvSnGradSchemes
Description
- Abstract base class for snGrad schemes.
+ Abstract base class for runtime selected \c snGrad surface
+ normal gradient schemes.
+
+ A surface normal gradient is evaluated at a cell face. It
+ is the normal-to-face component of the gradient of
+ values at the centres of two cells that the face connects.
+
+ Unit-surface-normal vector decomposition is based on the
+ so-called over-relaxed approach. Orthogonal components are
+ treated implicitly and non-orthogonal components are treated
+ explicitly with (or without) various limiters.
SourceFiles
snGradScheme.C
@@ -59,7 +70,7 @@ namespace fv
{
/*---------------------------------------------------------------------------*\
- Class snGradScheme Declaration
+ Class snGradScheme Declaration
\*---------------------------------------------------------------------------*/
template
@@ -67,9 +78,9 @@ class snGradScheme
:
public refCount
{
- // Private data
+ // Private Data
- //- Hold reference to mesh
+ //- Hold const reference to mesh
const fvMesh& mesh_;
@@ -125,14 +136,14 @@ public:
// Member Functions
- //- Return mesh reference
+ //- Return const reference to mesh
const fvMesh& mesh() const
{
return mesh_;
}
-
- //- Return the snGrad of the given cell field with the given deltaCoeffs
+ //- Return the snGrad of the given cell field
+ //- by using the given deltaCoeffs
static tmp>
snGrad
(
@@ -156,13 +167,13 @@ public:
) const = 0;
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return false;
}
//- Return the explicit correction to the snGrad
- // for the given field
+ //- for the given field
virtual tmp>
correction(const GeometricField&) const
{
@@ -173,12 +184,12 @@ public:
}
//- Return the snGrad of the given cell field
- // with explicit correction
+ //- with explicit correction
virtual tmp>
snGrad(const GeometricField&) const;
//- Return the snGrad of the given tmp cell field
- // with explicit correction
+ //- with explicit correction
tmp>
snGrad
(
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradSchemes.C b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradSchemes.C
index 1f5c316d22..d03fe44c7a 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradSchemes.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/snGradScheme/snGradSchemes.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -23,9 +24,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
-Description
- Abstract base class for snGrad schemes.
-
\*---------------------------------------------------------------------------*/
#include "snGradScheme.H"
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.C
index e8af0a09fe..793e16a563 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -23,9 +24,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
-Description
- Simple central-difference snGrad scheme without non-orthogonal correction.
-
\*---------------------------------------------------------------------------*/
#include "uncorrectedSnGrad.H"
@@ -42,13 +40,6 @@ namespace Foam
namespace fv
{
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-
-template
-uncorrectedSnGrad::~uncorrectedSnGrad()
-{}
-
-
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.H
index 72d9c87481..afdd1d8b94 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrad.H
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,8 +31,21 @@ Group
grpFvSnGradSchemes
Description
- Simple central-difference snGrad scheme using the non-orthogonal mesh
- delta-coefficients but without non-orthogonal correction.
+ Surface gradient scheme with no non-orthogonal correction.
+
+Usage
+ Minimal example by using \c system/fvSchemes:
+ \verbatim
+ snGradSchemes
+ {
+ snGrad() uncorrected;
+ }
+ \endverbatim
+
+Note
+ - Interpolation weighting factors (i.e. delta coefficients) are based
+ on the \c nonOrthDeltaCoeffs function rather than the \c deltaCoeffs
+ function, which is used by the \c orthogonal scheme.
SourceFiles
uncorrectedSnGrad.C
@@ -54,7 +68,7 @@ namespace fv
{
/*---------------------------------------------------------------------------*\
- Class uncorrectedSnGrad Declaration
+ Class uncorrectedSnGrad Declaration
\*---------------------------------------------------------------------------*/
template
@@ -82,7 +96,6 @@ public:
snGradScheme(mesh)
{}
-
//- Construct from mesh and data stream
uncorrectedSnGrad(const fvMesh& mesh, Istream&)
:
@@ -91,7 +104,7 @@ public:
//- Destructor
- virtual ~uncorrectedSnGrad();
+ virtual ~uncorrectedSnGrad() = default;
// Member Functions
@@ -106,13 +119,13 @@ public:
}
//- Return true if this scheme uses an explicit correction
- virtual bool corrected() const
+ virtual bool corrected() const noexcept
{
return false;
}
//- Return the explicit correction to the uncorrectedSnGrad
- // for the given field
+ //- for the given field
virtual tmp>
correction(const GeometricField&) const;
};
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrads.C b/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrads.C
index c8fc0c122f..284a991eac 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrads.C
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/uncorrectedSnGrad/uncorrectedSnGrads.C
@@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -23,9 +24,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
-Description
- Simple central-difference snGrad scheme without non-orthogonal correction.
-
\*---------------------------------------------------------------------------*/
#include "uncorrectedSnGrad.H"
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/Allclean b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/Allclean
new file mode 100755
index 0000000000..e570da4052
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/Allclean
@@ -0,0 +1,14 @@
+#!/bin/sh
+cd "${0%/*}" || exit # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
+#------------------------------------------------------------------------------
+
+cleanCase0
+
+rm -rf 0.orig
+rm -rf system
+rm -rf constant
+rm -rf results
+rm -rf plots
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/Allrun b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/Allrun
new file mode 100755
index 0000000000..51d093ba4a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/Allrun
@@ -0,0 +1,143 @@
+#!/bin/sh
+cd "${0%/*}" || exit # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
+#------------------------------------------------------------------------------
+
+# settings
+
+ # operand setups
+ setups="
+ 0
+ 10
+ 20
+ 30
+ 40
+ 50
+ 60
+ 70
+ 80
+ 85
+ "
+
+ # flag to enable computations in parallel mode
+ parallel=true
+
+
+#------------------------------------------------------------------------------
+
+#######################################
+# Collect results into a given path
+# and clean the case for the next run
+# Arguments:
+# $1 = Path to move results
+# Outputs:
+# Writes info to stdout
+#######################################
+collect() {
+
+ [ $# -eq 0 ] && { echo "Usage: $0 dir-model"; exit 1; }
+
+ collection="$1"
+
+ dirResult=results/"$collection"
+ dirSettings="$dirResult"/system
+
+ if [ ! -d "$dirResult" ]
+ then
+
+ echo " # Collecting results and settings into $dirResult"
+
+ mkdir -p "$dirSettings"
+
+ mv -f $(foamListTimes) "$dirResult"
+ [ -d postProcessing ] && mv -f postProcessing "$dirResult"
+ [ -d processor0 ] && mv -f processor* "$dirResult"
+ mv -f log.* "$dirResult"
+ mv -f logs "$dirResult"
+ mv -f constant "$dirResult"/
+ cp -f system/fv* system/controlDict "$dirSettings"
+ mv -f 0/ "$dirSettings"
+
+ echo " # Cleaning up the case"
+
+ cleanTimeDirectories
+ cleanPostProcessing
+
+ else
+
+ echo " # Directory $dirResult already exists"
+ echo " # Skipping the computation"
+
+ fi
+
+}
+
+
+#------------------------------------------------------------------------------
+
+for setup in $setups
+do
+
+ echo ""
+ echo "# Computations for the setup: $setup"
+ echo ""
+
+ dirSetup="setups.orig/$setup"
+
+ if [ ! -d "$dirSetup" ]
+ then
+ echo "Setup directory: $dirSetup" \
+ "could not be found - skipping execution" 1>&2
+ exit 1
+ fi
+
+ cp -rfL "$dirSetup/0.orig" .
+ cp -rfL "$dirSetup/constant" .
+ cp -rfL "$dirSetup/system" .
+ cp -rf 0.orig/ 0/
+
+ runApplication blockMesh
+
+ runApplication renumberMesh -overwrite -constant
+
+ runApplication checkMesh \
+ -allTopology -allGeometry -constant \
+ -writeAllFields -writeAllSurfaceFields
+
+
+ if [ "$parallel" = true ]
+ then
+
+ runApplication decomposePar
+
+ runParallel -s parallel renumberMesh -overwrite
+
+ runParallel $(getApplication)
+
+ runApplication reconstructPar
+
+ else
+
+ runApplication $(getApplication)
+
+ fi
+
+ # runtime sampling has problems in parallel mode (Apr 2021)
+ runApplication \
+ postProcess -func sample -latestTime
+
+ runApplication -s "epsilon" \
+ postProcess -func sampleEpsilon -latestTime
+
+ runApplication -s "G"\
+ postProcess -func sampleG -latestTime
+
+ runApplication foamLog log.$(getApplication)
+
+ collect "$setup"
+
+done
+
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/plot b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/plot
new file mode 100755
index 0000000000..153118703b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/plot
@@ -0,0 +1,663 @@
+#!/bin/bash
+cd "${0%/*}" || exit # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
+#------------------------------------------------------------------------------
+
+# settings
+
+ # operand setups
+ setups="
+ 0
+ 10
+ 20
+ 30
+ 40
+ 50
+ 60
+ 70
+ 80
+ 85
+ "
+
+
+#------------------------------------------------------------------------------
+
+plot_initial_iteration_residuals() {
+
+ setup="$1"
+
+ echo " Plotting the initial-iteration residuals for $setup"
+
+ # benchmarkFile="..."
+ samples="results/$setup/logs"
+ image="plots/$setup/initial-iteration-residuals.png"
+
+ gnuplot</dev/null || {
+ echo "gnuplot not found - skipping graph creation" 1>&2
+ exit 1
+}
+
+# Requires awk
+command -v awk >/dev/null || {
+ echo "awk not found - skipping graph creation" 1>&2
+ exit 1
+}
+
+# Check "results" directory
+[ -d "results" ] || {
+ echo "No results directory found - skipping graph creation" 1>&2
+ exit 1
+}
+
+
+#------------------------------------------------------------------------------
+
+for setup in $setups
+do
+
+ echo ""
+ echo "# Plots for the setup: $setup"
+ echo ""
+
+ dirPlots="plots/$setup"
+ [ -d "$dirPlots" ] || mkdir -p "$dirPlots"
+
+ # few manipulations
+ endTime=$(foamDictionary results/$setup/system/controlDict -entry endTime -value)
+ nu=$(foamDictionary results/$setup/constant/transportProperties -entry nu | sed 's|^.*\s\(.*\);|\1|g')
+ tau=$(foamDictionary results/$setup/$endTime/wallShearStress1:wallShearStress -entry boundaryField.bottom.value -value | sed -n '/(/,/)/p' | sed -e 's/[()]//g;/^\s*$/d' | cut -d' ' -f6)
+ uTau=$(awk -v tau="$tau" 'BEGIN { printf "%.16f", sqrt(-1*tau) }')
+
+ plot_yPlus_vs_uPlus "$setup" "$endTime" "$nu" "$uTau"
+
+ plot_yPlus_vs_R "$setup" "$endTime" "$nu" "$uTau"
+
+ plot_yPlus_vs_epsilonPlus "$setup" "$endTime" "$nu" "$uTau"
+
+ plot_yPlus_vs_productionRatePlus "$setup" "$endTime" "$nu" "$uTau"
+
+ plot_initial_iteration_residuals "$setup"
+
+ plot_final_iteration_residuals "$setup"
+
+done
+
+plot_yPlus_vs_uPlus_all_setups $setups
+
+plot_yPlus_vs_R_all_setups $setups
+
+plot_yPlus_vs_epsilonPlus_all_setups $setups
+
+plot_yPlus_vs_productionRatePlus_all_setups $setups
+
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/blockMeshDict
new file mode 100644
index 0000000000..4cd9e46311
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 0;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/0/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/blockMeshDict
new file mode 100644
index 0000000000..627d7a9ee3
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 10;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/10/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/blockMeshDict
new file mode 100644
index 0000000000..73e162e2b6
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 20;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/20/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/blockMeshDict
new file mode 100644
index 0000000000..f4dc911368
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 30;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/30/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/blockMeshDict
new file mode 100644
index 0000000000..59bbc543cc
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 40;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/40/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/blockMeshDict
new file mode 100644
index 0000000000..b8ed3c6cf4
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 50;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/50/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/blockMeshDict
new file mode 100644
index 0000000000..084c8fb332
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 60;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/60/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/blockMeshDict
new file mode 100644
index 0000000000..6e484519c1
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 70;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/70/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/blockMeshDict
new file mode 100644
index 0000000000..c2e7c0f44e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 80;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/80/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/0.orig b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/0.orig
new file mode 120000
index 0000000000..f9966c1c82
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/0.orig
@@ -0,0 +1 @@
+../common/0.orig
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/constant b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/constant
new file mode 120000
index 0000000000..f629794886
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/constant
@@ -0,0 +1 @@
+../common/constant
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/blockMeshDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/blockMeshDict
new file mode 100644
index 0000000000..f31baa38c2
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/blockMeshDict
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+alpha 85;
+nx 5;
+ny 100;
+nz 1;
+xMin 0;
+xMax 1;
+yMin 0;
+yMax 1;
+zMin 0;
+zMax 1;
+yExpansion 9.987905978;
+
+sin0 #eval{sin(degToRad($alpha))};
+cos0 #eval{cos(degToRad($alpha))};
+xMindx #eval{$xMin + $sin0};
+xMaxdx #eval{$xMax + $sin0};
+yMaxdy #eval{$yMax*$cos0};
+
+vertices
+(
+ ($xMin $yMin $zMin)
+ ($xMax $yMin $zMin)
+ ($xMaxdx $yMaxdy $zMin)
+ ($xMindx $yMaxdy $zMin)
+ ($xMin $yMin $zMax)
+ ($xMax $yMin $zMax)
+ ($xMaxdx $yMaxdy $zMax)
+ ($xMindx $yMaxdy $zMax)
+);
+
+blocks
+(
+ hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 $yExpansion 1)
+);
+
+boundary
+(
+ inlet
+ {
+ type patch;
+ faces
+ (
+ (0 4 7 3)
+ );
+ }
+ outlet
+ {
+ type patch;
+ faces
+ (
+ (2 6 5 1)
+ );
+ }
+ top
+ {
+ type symmetry;
+ faces
+ (
+ (3 7 6 2)
+ );
+ }
+ bottom
+ {
+ type wall;
+ faces
+ (
+ (1 5 4 0)
+ );
+ }
+ leftAndRight
+ {
+ type empty;
+ faces
+ (
+ (0 3 2 1)
+ (4 5 6 7)
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/controlDict
new file mode 120000
index 0000000000..e38bfb1f6b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/controlDict
@@ -0,0 +1 @@
+../../common/system/controlDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/decomposeParDict
new file mode 120000
index 0000000000..9276e7939a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/decomposeParDict
@@ -0,0 +1 @@
+../../common/system/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/fvSchemes
new file mode 120000
index 0000000000..274d17e172
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/fvSchemes
@@ -0,0 +1 @@
+../../common/system/fvSchemes
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/fvSolution
new file mode 120000
index 0000000000..504f0b1c9e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/fvSolution
@@ -0,0 +1 @@
+../../common/system/fvSolution
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sample
new file mode 120000
index 0000000000..dd0303886f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sample
@@ -0,0 +1 @@
+../../common/system/sample
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sampleEpsilon
new file mode 120000
index 0000000000..c26b1f97d5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sampleEpsilon
@@ -0,0 +1 @@
+../../common/system/sampleEpsilon
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sampleG
new file mode 120000
index 0000000000..6d73a78c84
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/85/system/sampleG
@@ -0,0 +1 @@
+../../common/system/sampleG
\ No newline at end of file
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/U b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/U
new file mode 100644
index 0000000000..e59fd7e55a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/U
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volVectorField;
+ object U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 1 -1 0 0 0 0];
+
+internalField uniform (0 0 0);
+
+boundaryField
+{
+ bottom
+ {
+ type fixedValue;
+ value uniform (0 0 0);
+ }
+
+ top
+ {
+ type symmetry;
+ }
+
+ inlet
+ {
+ type zeroGradient;
+ }
+
+ outlet
+ {
+ type zeroGradient;
+ }
+
+ leftAndRight
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/k b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/k
new file mode 100644
index 0000000000..02f18bd113
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/k
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 2 -2 0 0 0 0];
+
+internalField uniform 0.325;
+
+boundaryField
+{
+ bottom
+ {
+ type fixedValue;
+ value uniform 1e-10;
+ }
+
+ top
+ {
+ type symmetry;
+ }
+
+ inlet
+ {
+ type zeroGradient;
+ }
+
+ outlet
+ {
+ type zeroGradient;
+ }
+
+ leftAndRight
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/nut b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/nut
new file mode 100644
index 0000000000..3cd40c660b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/nut
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 2 -1 0 0 0 0];
+
+internalField uniform 0;
+
+boundaryField
+{
+ bottom
+ {
+ type nutLowReWallFunction;
+ value $internalField;
+ }
+
+ top
+ {
+ type symmetry;
+ }
+
+ inlet
+ {
+ type calculated;
+ value $internalField;
+ }
+
+ outlet
+ {
+ type calculated;
+ value $internalField;
+ }
+
+ leftAndRight
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/omega b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/omega
new file mode 100644
index 0000000000..bd6cc86d94
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/omega
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object omega;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 -1 0 0 0 0];
+
+internalField uniform 400;
+
+boundaryField
+{
+ bottom
+ {
+ type omegaWallFunction;
+ value $internalField;
+ }
+
+ top
+ {
+ type symmetry;
+ }
+
+ inlet
+ {
+ type zeroGradient;
+ }
+
+ outlet
+ {
+ type zeroGradient;
+ }
+
+ leftAndRight
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/p b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/p
new file mode 100644
index 0000000000..7b156f2866
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/0.orig/p
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ object p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 2 -2 0 0 0 0];
+
+internalField uniform 0;
+
+boundaryField
+{
+ bottom
+ {
+ type zeroGradient;
+ }
+
+ top
+ {
+ type symmetry;
+ }
+
+ inlet
+ {
+ type fixedValue;
+ value uniform 1.0;
+ }
+
+ outlet
+ {
+ type fixedValue;
+ value uniform 0.0;
+ }
+
+ leftAndRight
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/constant/transportProperties b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/constant/transportProperties
new file mode 100644
index 0000000000..8cf1ea6cbd
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/constant/transportProperties
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+transportModel Newtonian;
+
+nu 0.0025494595145829;
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/constant/turbulenceProperties b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/constant/turbulenceProperties
new file mode 100644
index 0000000000..46a32a743f
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/constant/turbulenceProperties
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType RAS;
+
+RAS
+{
+ RASModel kOmegaSST;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/controlDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/controlDict
new file mode 100644
index 0000000000..82e68c390e
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/controlDict
@@ -0,0 +1,151 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application simpleFoam;
+
+startFrom latestTime;
+
+startTime 0;
+
+stopAt endTime;
+
+endTime 50000;
+
+deltaT 1;
+
+writeControl timeStep;
+
+writeInterval 50000;
+
+purgeWrite 1;
+
+writeFormat ascii;
+
+writePrecision 16;
+
+writeCompression off;
+
+timeFormat general;
+
+timePrecision 8;
+
+runTimeModifiable false;
+
+functions
+{
+ fieldMinMax1
+ {
+ type fieldMinMax;
+ libs (fieldFunctionObjects);
+ writeToFile no;
+ log yes;
+ location yes;
+ mode magnitude;
+ fields ( p U );
+ }
+
+ wallShearStress1
+ {
+ type wallShearStress;
+ libs (fieldFunctionObjects);
+ patches ( bottom );
+ executeControl writeTime;
+ writeControl writeTime;
+ }
+
+ yPlus1
+ {
+ type yPlus;
+ libs (fieldFunctionObjects);
+ executeControl writeTime;
+ writeControl writeTime;
+ }
+
+ writeCellCentres1
+ {
+ type writeCellCentres;
+ libs (fieldFunctionObjects);
+ executeControl onEnd;
+ writeControl onEnd;
+ }
+
+ turbulenceFields1
+ {
+ type turbulenceFields;
+ libs (fieldFunctionObjects);
+ fields ( k epsilon R );
+ executeControl writeTime;
+ writeControl writeTime;
+ }
+
+ productionRate1
+ {
+ type coded;
+ libs (utilityFunctionObjects);
+ name productionRate;
+ writeControl writeTime;
+
+ codeExecute
+ #{
+ static autoPtr productionRate;
+ if
+ (
+ mesh().time().timeIndex() == 1
+ ||
+ mesh().time().startTimeIndex() == mesh().time().timeIndex() - 1
+ )
+ {
+ Info<< "Create production rate field" << nl;
+ productionRate.set
+ (
+ new volScalarField
+ (
+ IOobject
+ (
+ "productionRate",
+ mesh().time().timeName(),
+ mesh(),
+ IOobject::NO_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh(),
+ sqr(dimLength)/pow(dimTime, 3)
+ )
+ );
+ }
+
+ if
+ (
+ mesh().time().timeIndex() != 1
+ && mesh().time().timeIndex() > 1 // = timeStart
+ )
+ {
+ Info<< "Computing production rate field\n" << endl;
+
+ auto& prod =
+ mesh().lookupObjectRef("productionRate");
+
+ const auto& nut = mesh().lookupObject("nut");
+ const auto& U = mesh().lookupObject("U");
+
+ prod = 2*nut*(symm(fvc::grad(U)) && symm(fvc::grad(U)));
+ }
+ #};
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/decomposeParDict b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/decomposeParDict
new file mode 100644
index 0000000000..1f6fb39517
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/decomposeParDict
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 2;
+
+method scotch;
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/fvSchemes b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/fvSchemes
new file mode 100644
index 0000000000..a13d605795
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/fvSchemes
@@ -0,0 +1,75 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+ default steadyState;
+}
+
+gradSchemes
+{
+ default Gauss linear;
+ grad(U) cellLimited Gauss linear 1;
+ grad(k) cellLimited Gauss linear 1;
+ grad(omega) cellLimited Gauss linear 1;
+}
+
+divSchemes
+{
+ default none;
+ div(phi,U) bounded Gauss linearUpwind grad(U);
+
+ turbulence bounded Gauss limitedLinear 1;
+
+ div(phi,k) $turbulence;
+ div(phi,omega) $turbulence;
+ div(phi,nuTilda) $turbulence;
+ div(phi,epsilon) $turbulence;
+ div(phi,phit) $turbulence;
+ div(phi,f) $turbulence;
+
+ div((nuEff*dev2(T(grad(U))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+ default Gauss linear limited corrected 0.33;
+ laplacian((1|((1|(1|A(U)))-H(1))),p) Gauss linear limited relaxed 0.33;
+}
+
+interpolationSchemes
+{
+ default linear;
+}
+
+snGradSchemes
+{
+ default limited corrected 0.33;
+}
+
+wallDist
+{
+ method meshWave;
+}
+
+fluxRequired
+{
+ default no;
+ p;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/fvSolution b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/fvSolution
new file mode 100644
index 0000000000..dd52d23f1b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/fvSolution
@@ -0,0 +1,90 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+ p
+ {
+ solver GAMG;
+ tolerance 1e-09;
+ relTol 0.01;
+ smoother DICGaussSeidel;
+ nPreSweeps 0;
+ nPostSweeps 2;
+ cacheAgglomeration on;
+ agglomerator faceAreaPair;
+ nCellsInCoarsestLevel 10;
+ mergeLevels 1;
+ }
+
+ U
+ {
+ solver smoothSolver;
+ smoother symGaussSeidel;
+ tolerance 1e-12;
+ relTol 0;
+ }
+
+ "(k|omega|nuTilda)"
+ {
+ solver smoothSolver;
+ smoother symGaussSeidel;
+ tolerance 1e-09;
+ relTol 0.01;
+ }
+
+ "(epsilon|phit)"
+ {
+ solver PBiCGStab;
+ preconditioner DILU;
+ tolerance 1e-8;
+ relTol 0;
+ }
+
+ f
+ {
+ solver PBiCGStab;
+ preconditioner DIC;
+ tolerance 1e-8;
+ relTol 0;
+ }
+}
+
+SIMPLE
+{
+ nNonOrthogonalCorrectors 0;
+ consistent true;
+}
+
+relaxationFactors
+{
+ fields
+ {
+ "snGrad(p)" 0.5;
+ }
+ equations
+ {
+ U 0.9;
+ k 0.7;
+ omega 0.7;
+ nuTilda 0.7;
+ epsilon 0.7;
+ "(phit|f)" 0.7;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sample b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sample
new file mode 100644
index 0000000000..ce4645b847
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sample
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object sample;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type sets;
+libs (sampling);
+interpolationScheme cellPoint;
+setFormat raw;
+executeControl writeTime;
+writeControl writeTime;
+fields
+(
+ U
+ turbulenceProperties:k
+ turbulenceProperties:R
+);
+
+sets
+(
+ ref_point
+ {
+ type cloud;
+ axis y;
+ points ((0.5 1 0.5));
+ }
+
+ y
+ {
+ type midPoint;
+ axis y;
+ start (0.5 0 0.5);
+ end (0.5 1 0.5);
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sampleEpsilon b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sampleEpsilon
new file mode 100644
index 0000000000..de09bff3b1
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sampleEpsilon
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object sample;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type sets;
+libs (sampling);
+interpolationScheme cellPoint;
+setFormat raw;
+executeControl writeTime;
+writeControl writeTime;
+fields
+(
+ turbulenceProperties:epsilon
+);
+
+sets
+(
+ y
+ {
+ type midPoint;
+ axis y;
+ start (0.5 0 0.5);
+ end (0.5 1 0.5);
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sampleG b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sampleG
new file mode 100644
index 0000000000..7460f2c6ca
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/nonOrthogonalChannel/setups.orig/common/system/sampleG
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v2012 |
+| \\ / A nd | Website: www.openfoam.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object sample;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type sets;
+libs (sampling);
+interpolationScheme cellPoint;
+setFormat raw;
+executeControl writeTime;
+writeControl writeTime;
+fields
+(
+ productionRate
+);
+
+sets
+(
+ y
+ {
+ type midPoint;
+ axis y;
+ start (0.5 0 0.5);
+ end (0.5 1 0.5);
+ }
+);
+
+
+// ************************************************************************* //