diff --git a/src/combustionModels/PaSR/PaSR.H b/src/combustionModels/PaSR/PaSR.H index fba886f8ac3027c3c628d6a1b4ee48289c39beef..cc9cb3b4a1798d5dd76fd33ff09037e01fef37d1 100644 --- a/src/combustionModels/PaSR/PaSR.H +++ b/src/combustionModels/PaSR/PaSR.H @@ -24,9 +24,10 @@ Class Foam::combustionModels::PaSR Description - Simple infinitely fast chemistry combustion model based on the principle - mixed is burnt. Additional parameter C is used to distribute the heat - release rate.in time + Partially stirred reactor combustion model. The model calculates a finite + rate, based on both turbulence and chemistry time scales. Depending on + mesh resolution, the Cmix parameter can be used to scale the turbulence + mixing time scale. SourceFiles PaSR.C diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 8f83ea99b95550838f6561e848c7319f932b31bd..d13d0124687f353e9987288d01d812a726195e9b 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -371,6 +371,7 @@ $(porosity)/porosityModel/porosityModelList.C $(porosity)/porosityModel/IOporosityModelList.C $(porosity)/DarcyForchheimer/DarcyForchheimer.C $(porosity)/powerLaw/powerLaw.C +$(porosity)/fixedCoeff/fixedCoeff.C MRF = $(general)/MRF $(MRF)/MRFZone.C diff --git a/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.C b/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.C index f292cb63c85741f2f12496502b9baff933ffa945..36a9ba7ada0bccd2e0af5e6bceb534580278835e 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.C +++ b/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.C @@ -68,9 +68,10 @@ Foam::porosityModels::DarcyForchheimer::DarcyForchheimer ( "Foam::porosityModels::DarcyForchheimer::DarcyForchheimer" "(" - "const dictionary&, " - "const coordinateSystem&, " - "const keyType&" + "const word&, " + "const word&, " + "const fvMesh&, " + "const dictionary&" ")", coeffs_ ) << "incorrect dimensions for d: " << d.dimensions() @@ -92,9 +93,10 @@ Foam::porosityModels::DarcyForchheimer::DarcyForchheimer ( "Foam::porosityModels::DarcyForchheimer::DarcyForchheimer" "(" - "const dictionary&, " - "const coordinateSystem&, " - "const keyType&" + "const word&, " + "const word&, " + "const fvMesh&, " + "const dictionary&" ")", coeffs_ ) << "incorrect dimensions for f: " << f.dimensions() diff --git a/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H b/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H index 928422938a1da0357a1563335e93f20b618409f4..a85fae7fc66af9352cc56867fdfe1de21b31c6fe 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H +++ b/src/finiteVolume/cfdTools/general/porosityModel/DarcyForchheimer/DarcyForchheimer.H @@ -45,6 +45,7 @@ Description SourceFiles DarcyForchheimer.C + DarcyForchheimerTemplates.C \*---------------------------------------------------------------------------*/ diff --git a/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.C b/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.C new file mode 100644 index 0000000000000000000000000000000000000000..55c4202d5a27c5466ce68593f4da8980cda39ae3 --- /dev/null +++ b/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.C @@ -0,0 +1,243 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "addToRunTimeSelectionTable.H" +#include "fixedCoeff.H" +#include "fvMatrices.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + namespace porosityModels + { + defineTypeNameAndDebug(fixedCoeff, 0); + addToRunTimeSelectionTable(porosityModel, fixedCoeff, mesh); + } +} + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void Foam::porosityModels::fixedCoeff::apply +( + scalarField& Udiag, + vectorField& Usource, + const scalarField& V, + const vectorField& U, + const scalar rho +) const +{ + const tensor& alpha = alpha_.value(); + const tensor& beta = beta_.value(); + + forAll(cellZoneIds_, zoneI) + { + const labelList& cells = mesh_.cellZones()[cellZoneIds_[zoneI]]; + + forAll(cells, i) + { + const label cellI = cells[i]; + + const tensor Cd = rho*(alpha + beta*mag(U[cellI])); + + const scalar isoCd = tr(Cd); + + Udiag[cellI] += V[cellI]*isoCd; + Usource[cellI] -= V[cellI]*((Cd - I*isoCd) & U[cellI]); + } + } +} + + +void Foam::porosityModels::fixedCoeff::apply +( + tensorField& AU, + const vectorField& U, + const scalar rho +) const +{ + const tensor& alpha = alpha_.value(); + const tensor& beta = beta_.value(); + + forAll(cellZoneIds_, zoneI) + { + const labelList& cells = mesh_.cellZones()[cellZoneIds_[zoneI]]; + + forAll(cells, i) + { + const label cellI = cells[i]; + AU[cellI] += rho*(alpha + beta*mag(U[cellI])); + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::porosityModels::fixedCoeff::fixedCoeff +( + const word& name, + const word& modelType, + const fvMesh& mesh, + const dictionary& dict +) +: + porosityModel(name, modelType, mesh, dict), + coordSys_(coeffs_, mesh), + alpha_("alpha", dimless/dimTime, tensor::zero), + beta_("beta", dimless/dimLength, tensor::zero) +{ + // local-to-global transformation tensor + const tensor& E = coordSys_.R(); + + dimensionedVector alpha(coeffs_.lookup("alpha")); + if (alpha_.dimensions() != alpha.dimensions()) + { + FatalIOErrorIn + ( + "Foam::porosityModels::fixedCoeff::fixedCoeff" + "(" + "const word&, " + "const word&, " + "const fvMesh&, " + "const dictionary&" + ")", + coeffs_ + ) << "incorrect dimensions for alpha: " << alpha.dimensions() + << " should be " << alpha_.dimensions() + << exit(FatalIOError); + } + + adjustNegativeResistance(alpha); + + alpha_.value().xx() = alpha.value().x(); + alpha_.value().yy() = alpha.value().y(); + alpha_.value().zz() = alpha.value().z(); + alpha_.value() = (E & alpha_ & E.T()).value(); + + dimensionedVector beta(coeffs_.lookup("beta")); + if (beta_.dimensions() != beta.dimensions()) + { + FatalIOErrorIn + ( + "Foam::porosityModels::fixedCoeff::fixedCoeff" + "(" + "const word&, " + "const word&, " + "const fvMesh&, " + "const dictionary&" + ")", + coeffs_ + ) << "incorrect dimensions for beta: " << beta.dimensions() + << " should be " << beta_.dimensions() + << exit(FatalIOError); + } + + adjustNegativeResistance(beta); + + beta_.value().xx() = beta.value().x(); + beta_.value().yy() = beta.value().y(); + beta_.value().zz() = beta.value().z(); + beta_.value() = (E & beta_ & E.T()).value(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::porosityModels::fixedCoeff::~fixedCoeff() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::porosityModels::fixedCoeff::correct +( + fvVectorMatrix& UEqn +) const +{ + const vectorField& U = UEqn.psi(); + const scalarField& V = mesh_.V(); + scalarField& Udiag = UEqn.diag(); + vectorField& Usource = UEqn.source(); + + scalar rho = 1.0; + if (UEqn.dimensions() == dimForce) + { + coeffs_.lookup("rhoRef") >> rho; + } + + apply(Udiag, Usource, V, U, rho); +} + + +void Foam::porosityModels::fixedCoeff::correct +( + fvVectorMatrix& UEqn, + const volScalarField&, + const volScalarField& +) const +{ + const vectorField& U = UEqn.psi(); + const scalarField& V = mesh_.V(); + scalarField& Udiag = UEqn.diag(); + vectorField& Usource = UEqn.source(); + + scalar rho = 1.0; + if (UEqn.dimensions() == dimForce) + { + coeffs_.lookup("rhoRef") >> rho; + } + + apply(Udiag, Usource, V, U, rho); +} + + +void Foam::porosityModels::fixedCoeff::correct +( + const fvVectorMatrix& UEqn, + volTensorField& AU +) const +{ + const vectorField& U = UEqn.psi(); + + scalar rho = 1.0; + if (UEqn.dimensions() == dimForce) + { + coeffs_.lookup("rhoRef") >> rho; + } + + apply(AU, U, rho); +} + + +void Foam::porosityModels::fixedCoeff::writeData(Ostream& os) const +{ + os << indent << name_ << endl; + dict_.write(os); +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.H b/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.H new file mode 100644 index 0000000000000000000000000000000000000000..c0e28ac87e31bec4a4ac20085b6562e2ae6e701d --- /dev/null +++ b/src/finiteVolume/cfdTools/general/porosityModel/fixedCoeff/fixedCoeff.H @@ -0,0 +1,159 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::fixedCoeff + +Description + Fixed coefficient form of porosity model + + \f[ + S = - \rho_ref (\alpha + \beta |U|) U + \f] + + In the case of compressible flow, a value for the reference density is + required + +SourceFiles + fixedCoeff.C + +\*---------------------------------------------------------------------------*/ + +#ifndef fixedCoeff_H +#define fixedCoeff_H + +#include "porosityModel.H" +#include "coordinateSystem.H" +#include "dimensionedTensor.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace porosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class fixedCoeff Declaration +\*---------------------------------------------------------------------------*/ + +class fixedCoeff +: + public porosityModel +{ +private: + + // Private data + + //- Local co-ordinate system + coordinateSystem coordSys_; + + //- Model alpha coefficient [1/s] + dimensionedTensor alpha_; + + //- Model beta coefficient [1/m] + dimensionedTensor beta_; + + + // Private Member Functions + + //- Apply + void apply + ( + scalarField& Udiag, + vectorField& Usource, + const scalarField& V, + const vectorField& U, + const scalar rho + ) const; + + //- Apply + void apply + ( + tensorField& AU, + const vectorField& U, + const scalar rho + ) const; + + //- Disallow default bitwise copy construct + fixedCoeff(const fixedCoeff&); + + //- Disallow default bitwise assignment + void operator=(const fixedCoeff&); + + +public: + + //- Runtime type information + TypeName("fixedCoeff"); + + //- Constructor + fixedCoeff + ( + const word& name, + const word& modelType, + const fvMesh& mesh, + const dictionary& dict + ); + + //- Destructor + virtual ~fixedCoeff(); + + + // Member Functions + + //- Add resistance + virtual void correct(fvVectorMatrix& UEqn) const; + + //- Add resistance + virtual void correct + ( + fvVectorMatrix& UEqn, + const volScalarField& rho, + const volScalarField& mu + ) const; + + //- Add resistance + virtual void correct + ( + const fvVectorMatrix& UEqn, + volTensorField& AU + ) const; + + + // I-O + + //- Write + void writeData(Ostream& os) const; +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace porosityModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H b/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H index 070a00e9a021d4dc49d743f240f9e08b5edf03e5..2c26946265728b207391fc08149704e160e1ca7d 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H +++ b/src/finiteVolume/cfdTools/general/porosityModel/powerLaw/powerLaw.H @@ -33,13 +33,14 @@ Description where \vartable - C_0 | model coefficient - C_1 | model coefficient + C_0 | model linear coefficient + C_1 | model exponent coefficient \endvartable SourceFiles powerLaw.C + powerLawTemplates.C \*---------------------------------------------------------------------------*/ diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/0 b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/0 new file mode 120000 index 0000000000000000000000000000000000000000..f1c4a884b51ae4171513426c3b7f5f585d0d889e --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/0 @@ -0,0 +1 @@ +../angledDuctImplicit/0 \ No newline at end of file diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/Allrun b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/Allrun new file mode 120000 index 0000000000000000000000000000000000000000..09efeaf930d72136d1edbe49a421bc368227ad21 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/Allrun @@ -0,0 +1 @@ +../angledDuctImplicit/Allrun \ No newline at end of file diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/MRFZones b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/MRFZones new file mode 100644 index 0000000000000000000000000000000000000000..de81c73439850dabae0c51d6f0b899921f752af6 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/MRFZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object MRFZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/RASProperties b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/RASProperties new file mode 100644 index 0000000000000000000000000000000000000000..a4937b503a46850b2626f0d301e4a07b9f691507 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/RASProperties @@ -0,0 +1,25 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/polyMesh/blockMeshDict.m4 b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/polyMesh/blockMeshDict.m4 new file mode 100644 index 0000000000000000000000000000000000000000..79da11e10ac8f655aa16fc6287c9496875d8672f --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/polyMesh/blockMeshDict.m4 @@ -0,0 +1,165 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + `format' ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// block definition for a porosity with an angled inlet/outlet +// the porosity is not aligned with the main axes +// +dnl> ----------------------------------------------------------------- +dnl> <STANDARD DEFINTIONS> +dnl> +changecom(//)changequote([,]) dnl> +define(calc, [esyscmd(perl -e 'print ($1)')]) dnl> +define(VCOUNT, 0) dnl> +define(vlabel, [[// ]pt VCOUNT ($1) define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) dnl> +dnl> +define(hex2D, hex ($1b $2b $3b $4b $1f $2f $3f $4f)) dnl> +define(quad2D, ($1f $1b $2b $2f)) dnl> +define(frontQuad, ($1f $2f $3f $4f)) dnl> +define(backQuad, ($4b $3b $2b $1b)) dnl> +dnl> +dnl> </STANDARD DEFINTIONS> +dnl> ----------------------------------------------------------------- +dnl> +define(ncells, 20) dnl> +define(ninlet, 15) dnl> +define(nporo, 20) dnl> +define(noutlet, 20) dnl> +dnl> +define(x0,0) dnl> +define(y0,0) dnl> +define(y0,0) dnl> +define(Cos,0.7071067812) dnl> == cos(45) +define(Sin,0.7071067812) dnl> == sin(45) +dnl> +define(width,50) dnl> +define(zBack,calc(-width/2)) dnl> +define(zFront,calc(width/2)) dnl> +define(leninlet,150)dnl> +define(lenporo,100)dnl> +define(lenoutlet,100)dnl> +dnl> +define(xhyp,calc(Sin*width)) dnl> +define(yhyp,calc(Cos*width)) dnl> +define(xinlet,leninlet)dnl> +define(xporo,calc(Cos*lenporo)) dnl> +define(yporo,calc(Sin*lenporo)) dnl> +define(xoutlet,calc(xporo + Cos*lenoutlet)) dnl> +define(youtlet,calc(yporo + Sin*lenoutlet)) dnl> +dnl> + +convertToMeters 0.001; + +vertices +( + // inlet region + ( -xinlet y0 zBack ) vlabel(in1b) + ( -xinlet yhyp zBack ) vlabel(in2b) + ( -xinlet y0 zFront ) vlabel(in1f) + ( -xinlet yhyp zFront ) vlabel(in2f) + + // join inlet->outlet + ( x0 y0 zBack ) vlabel(join1b) + ( -xhyp yhyp zBack ) vlabel(join2b) + ( x0 y0 zFront ) vlabel(join1f) + ( -xhyp yhyp zFront ) vlabel(join2f) + + // porosity ends ->outlet + ( xporo yporo zBack ) vlabel(poro1b) + ( calc(xporo - xhyp) calc(yporo + yhyp) zBack ) vlabel(poro2b) + ( xporo yporo zFront ) vlabel(poro1f) + ( calc(xporo - xhyp) calc(yporo + yhyp) zFront ) vlabel(poro2f) + + // outlet + ( xoutlet youtlet zBack ) vlabel(out1b) + ( calc(xoutlet - xhyp) calc(youtlet + yhyp) zBack ) vlabel(out2b) + ( xoutlet youtlet zFront ) vlabel(out1f) + ( calc(xoutlet - xhyp) calc(youtlet + yhyp) zFront ) vlabel(out2f) +); + +blocks +( + // inlet block + hex2D(in1, join1, join2, in2) + inlet ( ninlet ncells ncells ) simpleGrading (1 1 1) + + // porosity block + hex2D(join1, poro1, poro2, join2) + porosity ( nporo ncells ncells ) simpleGrading (1 1 1) + + // outlet block + hex2D(poro1, out1, out2, poro2) + outlet ( noutlet ncells ncells ) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + // is there no way of defining all my 'defaultFaces' to be 'wall'? + wall front + ( + // inlet block + frontQuad(in1, join1, join2, in2) + // outlet block + frontQuad(poro1, out1, out2, poro2) + ) + + wall back + ( + // inlet block + backQuad(in1, join1, join2, in2) + // outlet block + backQuad(poro1, out1, out2, poro2) + ) + + wall wall + ( + // inlet block + quad2D(in1, join1) + quad2D(join2, in2) + // outlet block + quad2D(poro1, out1) + quad2D(out2, poro2) + ) + + wall porosityWall + ( + // porosity block + frontQuad(join1, poro1, poro2, join2) + // porosity block + backQuad(join1, poro1, poro2, join2) + // porosity block + quad2D(join1, poro1) + quad2D(poro2, join2) + ) + + patch inlet + ( + quad2D(in2, in1) + ) + + patch outlet + ( + quad2D(out2, out1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/polyMesh/boundary b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..0abd1608aba0dcb6aa66c9488133a3c4b51c7588 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/polyMesh/boundary @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +6 +( + front + { + type wall; + nFaces 700; + startFace 63400; + } + back + { + type wall; + nFaces 700; + startFace 64100; + } + wall + { + type wall; + nFaces 1400; + startFace 64800; + } + porosityWall + { + type wall; + nFaces 1600; + startFace 66200; + } + inlet + { + type patch; + nFaces 400; + startFace 67800; + } + outlet + { + type patch; + nFaces 400; + startFace 68200; + } +) + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/porosityProperties b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/porosityProperties new file mode 100644 index 0000000000000000000000000000000000000000..adc5ef3cc2132d7cce9aa225dd447c2b99a9dac3 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/porosityProperties @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object porosityProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +porosity1 +{ + type fixedCoeff; + active yes; + cellZone porosity; + + fixedCoeffCoeffs + { + alpha alpha [0 0 -1 0 0 0 0] (500 -1000 -1000); + beta beta [0 -1 0 0 0 0 0] (0 0 0); + rhoRef 1; + + coordinateSystem + { + e1 (0.70710678 0.70710678 0); + e2 (0 0 1); + } + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/sourcesProperties b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/sourcesProperties new file mode 100644 index 0000000000000000000000000000000000000000..4386bc52506b016f5aa089d5535b7d7c81ed7694 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/sourcesProperties @@ -0,0 +1,34 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object sourcesProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +source1 +{ + type fixedTemperatureSource; + active true; + timeStart 0; + duration 1000000; + selectionMode cellZone; + cellZone porosity; + + fixedTemperatureSourceCoeffs + { + temperature 350; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/thermophysicalProperties b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/thermophysicalProperties new file mode 100644 index 0000000000000000000000000000000000000000..920fff435c7b6e2c8b72b0af9f9e5e27324dbb6b --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/constant/thermophysicalProperties @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport sutherland; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1005; + Hf 0; + } + transport + { + As 1.4792e-06; + Ts 116; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/controlDict b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..4208f0d7564a0dffee439962d23367206545fca6 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/controlDict @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application rhoPorousMRFSimpleFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 1000; + +deltaT 1; + +writeControl timeStep; + +writeInterval 100; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +graphFormat raw; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSchemes b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..e106336cb2dd0a748f8d4dc499995db3c8067024 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSchemes @@ -0,0 +1,65 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default steadyState; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + div(phi,U) bounded Gauss upwind; + div((muEff*dev2(T(grad(U))))) Gauss linear; + div(phi,e) bounded Gauss upwind; + div(phi,epsilon) bounded Gauss upwind; + div(phi,k) bounded Gauss upwind; + div(phi,Ekp) bounded Gauss upwind; +} + +laplacianSchemes +{ + laplacian(muEff,U) Gauss linear corrected; + laplacian(alphaEff,e) Gauss linear corrected; + laplacian((rho*rAU),p) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(1,p) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSolution b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..a1e310922224d85f5ade01fa361b7ed0e1aeba01 --- /dev/null +++ b/tutorials/compressible/rhoPorousMRFSimpleFoam/angledDuctExplicitFixedCoeff/system/fvSolution @@ -0,0 +1,90 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver GAMG; + tolerance 1e-08; + relTol 0.05; + smoother GaussSeidel; + cacheAgglomeration off; + nCellsInCoarsestLevel 20; + agglomerator faceAreaPair; + mergeLevels 1; + } + + U + { + solver smoothSolver; + smoother GaussSeidel; + nSweeps 2; + tolerance 1e-06; + relTol 0.1; + } + + e + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-06; + relTol 0.1; + } + + "(k|epsilon)" + { + $U; + tolerance 1e-07; + relTol 0.1; + } +} + +SIMPLE +{ + nNonOrthogonalCorrectors 0; + rhoMin rhoMin [ 1 -3 0 0 0 ] 0.5; + rhoMax rhoMax [ 1 -3 0 0 0 ] 1.5; + + residualControl + { + p 1e-2; + U 1e-4; + T 1e-3; + + // possibly check turbulence fields + "(k|epsilon|omega)" 1e-3; + } +} + +relaxationFactors +{ + fields + { + p 0.3; + rho 0.05; + } + equations + { + U 0.7; + "(k|epsilon)" 0.7; + e 0.5; + } +} + + +// ************************************************************************* //