From ed4345faf8f8ea75c0c34866ae75f4e3816483c8 Mon Sep 17 00:00:00 2001 From: Henrik Rusche Date: Sat, 9 Apr 2016 23:33:55 +0200 Subject: [PATCH] Backport orthogonal snGrad scheme from vanilla 3.0.1 --- src/finiteVolume/Make/files | 1 + .../orthogonalSnGrad/orthogonalSnGrad.C | 76 ++++++++++ .../orthogonalSnGrad/orthogonalSnGrad.H | 133 ++++++++++++++++++ .../orthogonalSnGrad/orthogonalSnGrads.C | 42 ++++++ .../icoFoam/cavity/system/fvSchemes | 6 +- 5 files changed, 254 insertions(+), 4 deletions(-) create mode 100644 src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C create mode 100644 src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H create mode 100644 src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 3fb994320..4fff15bdd 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -365,6 +365,7 @@ $(snGradSchemes)/snGradScheme/snGradSchemes.C $(snGradSchemes)/correctedSnGrad/correctedSnGrads.C $(snGradSchemes)/limitedSnGrad/limitedSnGrads.C $(snGradSchemes)/uncorrectedSnGrad/uncorrectedSnGrads.C +$(snGradSchemes)/orthogonalSnGrad/orthogonalSnGrads.C $(snGradSchemes)/skewCorrectedSnGrad/skewCorrectedSnGrads.C $(snGradSchemes)/fourthSnGrad/fourthSnGrads.C /* diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C new file mode 100644 index 000000000..39866b78a --- /dev/null +++ b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Description + Simple central-difference snGrad scheme without non-orthogonal correction. + +\*---------------------------------------------------------------------------*/ + +#include "orthogonalSnGrad.H" +#include "volFields.H" +#include "surfaceFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace fv +{ + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template +orthogonalSnGrad::~orthogonalSnGrad() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +tmp > +orthogonalSnGrad::correction +( + const GeometricField& +) const +{ + notImplemented + ( + "orthogonalSnGrad::correction" + "(const GeometricField&)" + ); + return tmp >(NULL); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace fv + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H new file mode 100644 index 000000000..b90329816 --- /dev/null +++ b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrad.H @@ -0,0 +1,133 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::fv::orthogonalSnGrad + +Description + Simple central-difference snGrad scheme without non-orthogonal correction. + +SourceFiles + orthogonalSnGrad.C + +\*---------------------------------------------------------------------------*/ + +#ifndef orthogonalSnGrad_H +#define orthogonalSnGrad_H + +#include "snGradScheme.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace fv +{ + +/*---------------------------------------------------------------------------*\ + Class orthogonalSnGrad Declaration +\*---------------------------------------------------------------------------*/ + +template +class orthogonalSnGrad +: + public snGradScheme +{ + // Private Member Functions + + //- Disallow default bitwise assignment + void operator=(const orthogonalSnGrad&); + + +public: + + //- Runtime type information + TypeName("orthogonal"); + + + // Constructors + + //- Construct from mesh + orthogonalSnGrad(const fvMesh& mesh) + : + snGradScheme(mesh) + {} + + + //- Construct from mesh and data stream + orthogonalSnGrad(const fvMesh& mesh, Istream&) + : + snGradScheme(mesh) + {} + + + //- Destructor + virtual ~orthogonalSnGrad(); + + + // Member Functions + + //- Return the interpolation weighting factors for the given field + virtual tmp deltaCoeffs + ( + const GeometricField& + ) const + { + return this->mesh().deltaCoeffs(); + } + + //- Return true if this scheme uses an explicit correction + virtual bool corrected() const + { + return false; + } + + //- Return the explicit correction to the orthogonalSnGrad + // for the given field + virtual tmp > + correction(const GeometricField&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace fv + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "orthogonalSnGrad.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C new file mode 100644 index 000000000..f48bbffe4 --- /dev/null +++ b/src/finiteVolume/finiteVolume/snGradSchemes/orthogonalSnGrad/orthogonalSnGrads.C @@ -0,0 +1,42 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Description + Simple central-difference snGrad scheme without non-orthogonal correction. + +\*---------------------------------------------------------------------------*/ + +#include "orthogonalSnGrad.H" +#include "fvMesh.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace fv +{ + makeSnGradScheme(orthogonalSnGrad) +} +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/icoFoam/cavity/system/fvSchemes b/tutorials/incompressible/icoFoam/cavity/system/fvSchemes index e807e470c..f2da7785f 100644 --- a/tutorials/incompressible/icoFoam/cavity/system/fvSchemes +++ b/tutorials/incompressible/icoFoam/cavity/system/fvSchemes @@ -33,9 +33,7 @@ divSchemes laplacianSchemes { - default none; - laplacian(nu,U) Gauss linear corrected; - laplacian((1|A(U)),p) Gauss linear corrected; + default Gauss linear orthogonal; } interpolationSchemes @@ -46,7 +44,7 @@ interpolationSchemes snGradSchemes { - default corrected; + default orthogonal; } // ************************************************************************* //