Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
mattijs
2011-04-22 10:59:38 +01:00
90 changed files with 2291 additions and 2332 deletions

View File

@ -4,4 +4,3 @@ scalar maxAcousticCo
( (
readScalar(runTime.controlDict().lookup("maxAcousticCo")) readScalar(runTime.controlDict().lookup("maxAcousticCo"))
); );

View File

@ -340,7 +340,7 @@ endif
# ~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~
set boost_version=boost_1_45_0 set boost_version=boost_1_45_0
set cgal_version=CGAL-3.7 set cgal_version=CGAL-3.8
setenv BOOST_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version setenv BOOST_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version
setenv CGAL_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version setenv CGAL_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version

View File

@ -358,7 +358,7 @@ fi
# ~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~
boost_version=boost_1_45_0 boost_version=boost_1_45_0
cgal_version=CGAL-3.7 cgal_version=CGAL-3.8
export BOOST_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version export BOOST_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version
export CGAL_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version export CGAL_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version

View File

@ -137,7 +137,7 @@ Foam::pimpleControl::pimpleControl(fvMesh& mesh)
{ {
Info<< " field " << residualControl_[i].name << token::TAB Info<< " field " << residualControl_[i].name << token::TAB
<< ": relTol " << residualControl_[i].relTol << ": relTol " << residualControl_[i].relTol
<< ", absTol " << residualControl_[i].absTol << ", tolerance " << residualControl_[i].absTol
<< nl; << nl;
} }
Info<< endl; Info<< endl;

View File

@ -68,7 +68,7 @@ bool Foam::simpleControl::criteriaSatisfied()
{ {
Info<< algorithmName_ << " solution statistics:" << endl; Info<< algorithmName_ << " solution statistics:" << endl;
Info<< " " << variableName << ": abs tol = " << residual Info<< " " << variableName << ": tolerance = " << residual
<< " (" << residualControl_[fieldI].absTol << ")" << " (" << residualControl_[fieldI].absTol << ")"
<< endl; << endl;
} }
@ -96,7 +96,7 @@ Foam::simpleControl::simpleControl(fvMesh& mesh)
forAll(residualControl_, i) forAll(residualControl_, i)
{ {
Info<< " field " << residualControl_[i].name << token::TAB Info<< " field " << residualControl_[i].name << token::TAB
<< " absTol " << residualControl_[i].absTol << " tolerance " << residualControl_[i].absTol
<< nl; << nl;
} }
Info<< endl; Info<< endl;

View File

@ -68,7 +68,7 @@ void Foam::solutionControl::read(const bool absTolOnly)
if (iter().isDict()) if (iter().isDict())
{ {
const dictionary& fieldDict(iter().dict()); const dictionary& fieldDict(iter().dict());
fd.absTol = readScalar(fieldDict.lookup("absTol")); fd.absTol = readScalar(fieldDict.lookup("tolerance"));
fd.relTol = readScalar(fieldDict.lookup("relTol")); fd.relTol = readScalar(fieldDict.lookup("relTol"));
fd.initialResidual = 0.0; fd.initialResidual = 0.0;
} }

View File

@ -367,7 +367,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
d0, d0,
U0, U0,
rho0, rho0,
0.5*(mass0 + mass1), mass0,
Su, Su,
dUTrans, dUTrans,
Spu Spu
@ -384,16 +384,18 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
{ {
scalar dm = np0*dMassGas[i]; scalar dm = np0*dMassGas[i];
label gid = composition.localToGlobalCarrierId(GAS, i); label gid = composition.localToGlobalCarrierId(GAS, i);
scalar hs = composition.carrier().Hs(gid, 0.5*(T0 + T1)); scalar hs = composition.carrier().Hs(gid, T0);
td.cloud().rhoTrans(gid)[cellI] += dm; td.cloud().rhoTrans(gid)[cellI] += dm;
td.cloud().UTrans()[cellI] += dm*U0;
td.cloud().hsTrans()[cellI] += dm*hs; td.cloud().hsTrans()[cellI] += dm*hs;
} }
forAll(YLiquid_, i) forAll(YLiquid_, i)
{ {
scalar dm = np0*dMassLiquid[i]; scalar dm = np0*dMassLiquid[i];
label gid = composition.localToGlobalCarrierId(LIQ, i); label gid = composition.localToGlobalCarrierId(LIQ, i);
scalar hs = composition.carrier().Hs(gid, 0.5*(T0 + T1)); scalar hs = composition.carrier().Hs(gid, T0);
td.cloud().rhoTrans(gid)[cellI] += dm; td.cloud().rhoTrans(gid)[cellI] += dm;
td.cloud().UTrans()[cellI] += dm*U0;
td.cloud().hsTrans()[cellI] += dm*hs; td.cloud().hsTrans()[cellI] += dm*hs;
} }
/* /*
@ -402,16 +404,18 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
{ {
scalar dm = np0*dMassSolid[i]; scalar dm = np0*dMassSolid[i];
label gid = composition.localToGlobalCarrierId(SLD, i); label gid = composition.localToGlobalCarrierId(SLD, i);
scalar hs = composition.carrier().Hs(gid, 0.5*(T0 + T1)); scalar hs = composition.carrier().Hs(gid, T0);
td.cloud().rhoTrans(gid)[cellI] += dm; td.cloud().rhoTrans(gid)[cellI] += dm;
td.cloud().UTrans()[cellI] += dm*U0;
td.cloud().hsTrans()[cellI] += dm*hs; td.cloud().hsTrans()[cellI] += dm*hs;
} }
*/ */
forAll(dMassSRCarrier, i) forAll(dMassSRCarrier, i)
{ {
scalar dm = np0*dMassSRCarrier[i]; scalar dm = np0*dMassSRCarrier[i];
scalar hs = composition.carrier().Hs(i, 0.5*(T0 + T1)); scalar hs = composition.carrier().Hs(i, T0);
td.cloud().rhoTrans(i)[cellI] += dm; td.cloud().rhoTrans(i)[cellI] += dm;
td.cloud().UTrans()[cellI] += dm*U0;
td.cloud().hsTrans()[cellI] += dm*hs; td.cloud().hsTrans()[cellI] += dm*hs;
} }

View File

@ -389,7 +389,7 @@ void Foam::ReactingParcel<ParcelType>::calc
d0, d0,
U0, U0,
rho0, rho0,
0.5*(mass0 + mass1), mass0,
Su, Su,
dUTrans, dUTrans,
Spu Spu
@ -405,9 +405,10 @@ void Foam::ReactingParcel<ParcelType>::calc
{ {
scalar dm = np0*dMass[i]; scalar dm = np0*dMass[i];
label gid = composition.localToGlobalCarrierId(0, i); label gid = composition.localToGlobalCarrierId(0, i);
scalar hs = composition.carrier().Hs(gid, 0.5*(T0 + T1)); scalar hs = composition.carrier().Hs(gid, T0);
td.cloud().rhoTrans(gid)[cellI] += dm; td.cloud().rhoTrans(gid)[cellI] += dm;
td.cloud().UTrans()[cellI] += dm*U0;
td.cloud().hsTrans()[cellI] += dm*hs; td.cloud().hsTrans()[cellI] += dm*hs;
} }

View File

@ -107,7 +107,7 @@ protected:
tmp<volScalarField> calcInvR1(const volVectorField& U) const; tmp<volScalarField> calcInvR1(const volVectorField& U) const;
//- Calculate the cosine of the angle between gravity vector and //- Calculate the cosine of the angle between gravity vector and
// cell out flow direction // cell out flow direction
tmp<scalarField> calcCosAngle(const surfaceScalarField& phi) const; tmp<scalarField> calcCosAngle(const surfaceScalarField& phi) const;

View File

@ -91,7 +91,7 @@ void phaseChangeModel::correct
); );
latestMassPC_ = sum(dMass.internalField()); latestMassPC_ = sum(dMass.internalField());
totalMassPC_ += latestMassPC_; totalMassPC_ += latestMassPC_;
availableMass -= dMass; availableMass -= dMass;
dMass.correctBoundaryConditions(); dMass.correctBoundaryConditions();

View File

@ -28,7 +28,9 @@ License
#include "IOmanip.H" #include "IOmanip.H"
// For 'nearInfo' helper class only // For 'nearInfo' helper class only
#include "directMappedPatchBase.H" #include "directMappedPatchBase.H"
#include "meshSearch.H" //#include "meshSearch.H"
#include "treeBoundBox.H"
#include "treeDataFace.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -41,27 +43,116 @@ namespace Foam
void Foam::patchProbes::findElements(const fvMesh& mesh) void Foam::patchProbes::findElements(const fvMesh& mesh)
{ {
elementList_.clear();
elementList_.setSize(size()); const polyBoundaryMesh& bm = mesh.boundaryMesh();
label patchI = bm.findPatchID(patchName_);
if (patchI == -1)
{
FatalErrorIn
(
" Foam::patchProbes::findElements(const fvMesh&)"
) << " Unknown patch name "
<< patchName_ << endl
<< exit(FatalError);
}
// All the info for nearest. Construct to miss // All the info for nearest. Construct to miss
List<directMappedPatchBase::nearInfo> nearest(this->size()); List<directMappedPatchBase::nearInfo> nearest(this->size());
// Octree based search engine const polyPatch& pp = bm[patchI];
meshSearch meshSearchEngine(mesh, false);
forAll(*this, probeI) if (pp.size() > 0)
{ {
const vector& sample = operator[](probeI); labelList bndFaces(pp.size());
label faceI = meshSearchEngine.findNearestBoundaryFace(sample); forAll(bndFaces, i)
const point& fc = mesh.faceCentres()[faceI]; {
nearest[probeI].first() = pointIndexHit bndFaces[i] = pp.start() + i;
}
treeBoundBox overallBb(pp.points());
Random rndGen(123456);
overallBb = overallBb.extend(rndGen, 1E-4);
overallBb.min() -= point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
overallBb.max() += point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
const indexedOctree<treeDataFace> boundaryTree
( (
true, treeDataFace // all information needed to search faces
fc, (
faceI false, // do not cache bb
mesh,
bndFaces // patch faces only
),
overallBb, // overall search domain
8, // maxLevel
10, // leafsize
3.0 // duplicity
); );
nearest[probeI].second().first() = magSqr(fc-sample);
nearest[probeI].second().second() = Pstream::myProcNo();
if (elementList_.empty())
{
elementList_.setSize(probeLocations().size());
forAll(probeLocations(), probeI)
{
const point sample = probeLocations()[probeI];
scalar span = boundaryTree.bb().mag();
pointIndexHit info = boundaryTree.findNearest
(
sample,
Foam::sqr(span)
);
if (!info.hit())
{
info = boundaryTree.findNearest
(
sample,
Foam::sqr(GREAT)
);
}
label faceI = boundaryTree.shapes().faceLabels()[info.index()];
const label patchi = bm.whichPatch(faceI);
if (isA<emptyPolyPatch>(bm[patchi]))
{
WarningIn
(
" Foam::patchProbes::findElements(const fvMesh&)"
)
<< " The sample point: " << sample
<< " belongs to " << patchi
<< " which is an empty patch. This is not permitted. "
<< " This sample will not be included "
<< endl;
}
else
{
const point& fc = mesh.faceCentres()[faceI];
directMappedPatchBase::nearInfo sampleInfo;
sampleInfo.first() = pointIndexHit
(
true,
fc,
faceI
);
sampleInfo.second().first() = magSqr(fc-sample);
sampleInfo.second().second() = Pstream::myProcNo();
nearest[probeI]= sampleInfo;
}
}
}
} }
@ -93,6 +184,11 @@ void Foam::patchProbes::findElements(const fvMesh& mesh)
localI = nearest[sampleI].first().index(); localI = nearest[sampleI].first().index();
} }
if (elementList_.empty())
{
elementList_.setSize(probeLocations().size());
}
elementList_[sampleI] = localI; elementList_[sampleI] = localI;
} }
} }

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -58,6 +58,11 @@ class patchProbes
: :
public probes public probes
{ {
// Private data
//- Patch name
word patchName_;
// Private Member Functions // Private Member Functions

View File

@ -221,6 +221,10 @@ updateCoeffs()
+ emissivity()()[faceI]*physicoChemical::sigma.value() + emissivity()()[faceI]*physicoChemical::sigma.value()
* pow4(Tp[faceI]) * pow4(Tp[faceI])
)/pi; )/pi;
// Emmited heat flux from this ray direction
ray.Qem().boundaryField()[patchI][faceI] =
refValue()[faceI]*(n[faceI] & ray.dAve());
} }
else else
{ {
@ -228,6 +232,10 @@ updateCoeffs()
valueFraction()[faceI] = 0.0; valueFraction()[faceI] = 0.0;
refGrad()[faceI] = 0.0; refGrad()[faceI] = 0.0;
refValue()[faceI] = 0.0; //not used refValue()[faceI] = 0.0; //not used
// Incident heat flux on this ray direction
ray.Qin().boundaryField()[patchI][faceI] =
Iw[faceI]*(n[faceI] & ray.dAve());
} }
} }

View File

@ -82,6 +82,32 @@ Foam::radiation::fvDOM::fvDOM(const volScalarField& T)
mesh_, mesh_,
dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0) dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0)
), ),
Qem_
(
IOobject
(
"Qem",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("Qem", dimMass/pow3(dimTime), 0.0)
),
Qin_
(
IOobject
(
"Qin",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("Qin", dimMass/pow3(dimTime), 0.0)
),
a_ a_
( (
IOobject IOobject
@ -366,13 +392,16 @@ void Foam::radiation::fvDOM::updateG()
{ {
G_ = dimensionedScalar("zero",dimMass/pow3(dimTime), 0.0); G_ = dimensionedScalar("zero",dimMass/pow3(dimTime), 0.0);
Qr_ = dimensionedScalar("zero",dimMass/pow3(dimTime), 0.0); Qr_ = dimensionedScalar("zero",dimMass/pow3(dimTime), 0.0);
Qem_ = dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0);
Qin_ = dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0);
forAll(IRay_, rayI) forAll(IRay_, rayI)
{ {
IRay_[rayI].addIntensity(); IRay_[rayI].addIntensity();
G_ += IRay_[rayI].I()*IRay_[rayI].omega(); G_ += IRay_[rayI].I()*IRay_[rayI].omega();
//Qr_ += IRay_[rayI].Qr();
Qr_.boundaryField() += IRay_[rayI].Qr().boundaryField(); Qr_.boundaryField() += IRay_[rayI].Qr().boundaryField();
Qem_.boundaryField() += IRay_[rayI].Qem().boundaryField();
Qin_.boundaryField() += IRay_[rayI].Qin().boundaryField();
} }
} }

View File

@ -83,6 +83,12 @@ class fvDOM
//- Total radiative heat flux [W/m2] //- Total radiative heat flux [W/m2]
volScalarField Qr_; volScalarField Qr_;
//- Emmited radiative heat flux [W/m2]
volScalarField Qem_;
//- Incidet radiative heat flux [W/m2]
volScalarField Qin_;
//- Total absorption coefficient [1/m] //- Total absorption coefficient [1/m]
volScalarField a_; volScalarField a_;
@ -213,6 +219,12 @@ public:
//- Const access to total radiative heat flux field //- Const access to total radiative heat flux field
inline const volScalarField& Qr() const; inline const volScalarField& Qr() const;
//- Const access to incident radiative heat flux field
inline const volScalarField& Qin() const;
//- Const access to emitted radiative heat flux field
inline const volScalarField& Qem() const;
//- Const access to black body //- Const access to black body
inline const blackBodyEmission& blackBody() const; inline const blackBodyEmission& blackBody() const;
}; };

View File

@ -91,6 +91,16 @@ inline const Foam::volScalarField& Foam::radiation::fvDOM::Qr() const
return Qr_; return Qr_;
} }
inline const Foam::volScalarField& Foam::radiation::fvDOM::Qin() const
{
return Qin_;
}
inline const Foam::volScalarField& Foam::radiation::fvDOM::Qem() const
{
return Qem_;
}
inline const Foam::radiation::blackBodyEmission& inline const Foam::radiation::blackBodyEmission&
Foam::radiation::fvDOM::blackBody() const Foam::radiation::fvDOM::blackBody() const

View File

@ -81,6 +81,32 @@ Foam::radiation::radiativeIntensityRay::radiativeIntensityRay
mesh_, mesh_,
dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0) dimensionedScalar("Qr", dimMass/pow3(dimTime), 0.0)
), ),
Qin_
(
IOobject
(
"Qin" + name(rayId),
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("Qin", dimMass/pow3(dimTime), 0.0)
),
Qem_
(
IOobject
(
"Qem" + name(rayId),
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("Qem", dimMass/pow3(dimTime), 0.0)
),
d_(vector::zero), d_(vector::zero),
dAve_(vector::zero), dAve_(vector::zero),
theta_(theta), theta_(theta),

View File

@ -81,6 +81,12 @@ private:
//- Total radiative heat flux on boundary //- Total radiative heat flux on boundary
volScalarField Qr_; volScalarField Qr_;
//- Incident radiative heat flux on boundary
volScalarField Qin_;
//- Emitted radiative heat flux on boundary
volScalarField Qem_;
//- Direction //- Direction
vector d_; vector d_;
@ -171,6 +177,18 @@ public:
//- Return non-const access to the boundary heat flux //- Return non-const access to the boundary heat flux
inline volScalarField& Qr(); inline volScalarField& Qr();
//- Return non-const access to the boundary incident heat flux
inline volScalarField& Qin();
//- Return non-const access to the boundary emmited heat flux
inline volScalarField& Qem();
//- Return const access to the boundary incident heat flux
inline const volScalarField& Qin() const;
//- Return const access to the boundary emmited heat flux
inline const volScalarField& Qem() const;
//- Return direction //- Return direction
inline const vector& d() const; inline const vector& d() const;

View File

@ -42,6 +42,31 @@ inline Foam::volScalarField& Foam::radiation::radiativeIntensityRay::Qr()
return Qr_; return Qr_;
} }
inline const Foam::volScalarField& Foam::radiation::
radiativeIntensityRay::Qin() const
{
return Qin_;
}
inline Foam::volScalarField& Foam::radiation::radiativeIntensityRay::Qin()
{
return Qin_;
}
inline const Foam::volScalarField& Foam::radiation::
radiativeIntensityRay::Qem() const
{
return Qem_;
}
inline Foam::volScalarField& Foam::radiation::radiativeIntensityRay::Qem()
{
return Qem_;
}
inline const Foam::vector& Foam::radiation::radiativeIntensityRay::d() const inline const Foam::vector& Foam::radiation::radiativeIntensityRay::d() const
{ {

View File

@ -15,7 +15,7 @@ oneEqEddy/oneEqEddy.C
dynOneEqEddy/dynOneEqEddy.C dynOneEqEddy/dynOneEqEddy.C
locDynOneEqEddy/locDynOneEqEddy.C locDynOneEqEddy/locDynOneEqEddy.C
Smagorinsky/Smagorinsky.C Smagorinsky/Smagorinsky.C
dynSmagorinsky/dynSmagorinsky.C homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.C
LRRDiffStress/LRRDiffStress.C LRRDiffStress/LRRDiffStress.C
DeardorffDiffStress/DeardorffDiffStress.C DeardorffDiffStress/DeardorffDiffStress.C
spectEddyVisc/spectEddyVisc.C spectEddyVisc/spectEddyVisc.C
@ -23,7 +23,6 @@ dynLagrangian/dynLagrangian.C
scaleSimilarity/scaleSimilarity.C scaleSimilarity/scaleSimilarity.C
mixedSmagorinsky/mixedSmagorinsky.C mixedSmagorinsky/mixedSmagorinsky.C
dynMixedSmagorinsky/dynMixedSmagorinsky.C
/*Smagorinsky2/Smagorinsky2.C*/ /*Smagorinsky2/Smagorinsky2.C*/

View File

@ -1,143 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "dynMixedSmagorinsky.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace incompressible
{
namespace LESModels
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(dynMixedSmagorinsky, 0);
addToRunTimeSelectionTable(LESModel, dynMixedSmagorinsky, dictionary);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
dynMixedSmagorinsky::dynMixedSmagorinsky
(
const volVectorField& U,
const surfaceScalarField& phi,
transportModel& transport,
const word& turbulenceModelName,
const word& modelName
)
:
LESModel(modelName, U, phi, transport, turbulenceModelName),
scaleSimilarity(U, phi, transport),
dynSmagorinsky(U, phi, transport)
{
printCoeffs();
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
tmp<volScalarField> dynMixedSmagorinsky::k() const
{
return
(
scaleSimilarity::k()
+ dynSmagorinsky::k()
);
}
tmp<volScalarField> dynMixedSmagorinsky::epsilon() const
{
return
(
scaleSimilarity::epsilon()
+ dynSmagorinsky::epsilon()
);
}
tmp<volSymmTensorField> dynMixedSmagorinsky::B() const
{
return
(
scaleSimilarity::B()
+ dynSmagorinsky::B()
);
}
tmp<volSymmTensorField> dynMixedSmagorinsky::devBeff() const
{
return
(
scaleSimilarity::devBeff()
+ dynSmagorinsky::devBeff()
);
}
tmp<fvVectorMatrix> dynMixedSmagorinsky::divDevBeff(volVectorField& U) const
{
return
(
scaleSimilarity::divDevBeff(U)
+ dynSmagorinsky::divDevBeff(U)
);
}
void dynMixedSmagorinsky::correct(const tmp<volTensorField>& gradU)
{
scaleSimilarity::correct(gradU);
dynSmagorinsky::correct(gradU());
}
bool dynMixedSmagorinsky::read()
{
if (LESModel::read())
{
scaleSimilarity::read();
dynSmagorinsky::read();
return true;
}
else
{
return false;
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace LESModels
} // namespace incompressible
} // End namespace Foam
// ************************************************************************* //

View File

@ -1,150 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::incompressible::LESModels::dynMixedSmagorinsky
Description
The Mixed Isochoric Smagorinsky Model for incompressible flows.
The mixed model is a linear combination of an eddy viscosity model
with a scale similarity model.
\verbatim
B = (L + C) + R = (F(v*v) - F(v)*F(v)) + R
\endverbatim
The algebraic eddy viscosity SGS model is founded on the assumption
that local equilibrium prevails, hence
\verbatim
R = 2/3*rho*k*I - 2*nuEff*dev(D)
where
k = cI*delta^2*||D||^2
nuEff = ck*sqrt(k)*delta + nu
\endverbatim
The Leonard and cross contributions are incorporated
by adding,
\verbatim
+ div(((filter(U*U) - filter(U)*filter(U)) -
0.333*I*tr(filter(U*U) - filter(U)*filter(U))))
+ div((filter(U*epsilon) - filter(U)*filter(epsilon)))
\endverbatim
to the rhs. of the equations. This version implements filtering to
evaluate the coefficients in the model.
SourceFiles
dynMixedSmagorinsky.C
\*---------------------------------------------------------------------------*/
#ifndef dynMixedSmagorinsky_H
#define dynMixedSmagorinsky_H
#include "dynSmagorinsky.H"
#include "scaleSimilarity.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace incompressible
{
namespace LESModels
{
/*---------------------------------------------------------------------------*\
Class dynMixedSmagorinsky Declaration
\*---------------------------------------------------------------------------*/
class dynMixedSmagorinsky
:
public scaleSimilarity,
public dynSmagorinsky
{
// Private Member Functions
// Disallow default bitwise copy construct and assignment
dynMixedSmagorinsky(const dynMixedSmagorinsky&);
dynMixedSmagorinsky& operator=(const dynMixedSmagorinsky&);
public:
//- Runtime type information
TypeName("dynMixedSmagorinsky");
// Constructors
//- Constructors from components
dynMixedSmagorinsky
(
const volVectorField& U,
const surfaceScalarField& phi,
transportModel& transport,
const word& turbulenceModelName = turbulenceModel::typeName,
const word& modelName = typeName
);
//- Destructor
~dynMixedSmagorinsky()
{}
// Member Functions
//- Return SGS kinetic energy
tmp<volScalarField> k() const;
//- Return sub-grid disipation rate
tmp<volScalarField> epsilon() const;
//- Return the sub-grid stress tensor.
tmp<volSymmTensorField> B() const;
//- Return the effective sub-grid turbulence stress tensor
// including the laminar stress
tmp<volSymmTensorField> devBeff() const;
//- Returns div(B).
// This is the additional term due to the filtering of the NSE.
tmp<fvVectorMatrix> divDevBeff(volVectorField& U) const;
//- Correct Eddy-Viscosity and related properties
void correct(const tmp<volTensorField>& gradU);
//- Read LESProperties dictionary
bool read();
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace LESModels
} // End namespace incompressible
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "dynSmagorinsky.H" #include "homogeneousDynSmagorinsky.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -37,19 +37,25 @@ namespace LESModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(dynSmagorinsky, 0); defineTypeNameAndDebug(homogeneousDynSmagorinsky, 0);
addToRunTimeSelectionTable(LESModel, dynSmagorinsky, dictionary); addToRunTimeSelectionTable(LESModel, homogeneousDynSmagorinsky, dictionary);
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void dynSmagorinsky::updateSubGridScaleFields(const volSymmTensorField& D) void homogeneousDynSmagorinsky::updateSubGridScaleFields
(
const volSymmTensorField& D
)
{ {
nuSgs_ = cD(D)*sqr(delta())*sqrt(magSqr(D)); nuSgs_ = cD(D)*sqr(delta())*sqrt(magSqr(D));
nuSgs_.correctBoundaryConditions(); nuSgs_.correctBoundaryConditions();
} }
dimensionedScalar dynSmagorinsky::cD(const volSymmTensorField& D) const dimensionedScalar homogeneousDynSmagorinsky::cD
(
const volSymmTensorField& D
) const
{ {
const volSymmTensorField MM const volSymmTensorField MM
( (
@ -72,7 +78,10 @@ dimensionedScalar dynSmagorinsky::cD(const volSymmTensorField& D) const
} }
dimensionedScalar dynSmagorinsky::cI(const volSymmTensorField& D) const dimensionedScalar homogeneousDynSmagorinsky::cI
(
const volSymmTensorField& D
) const
{ {
const volScalarField mm const volScalarField mm
( (
@ -97,7 +106,7 @@ dimensionedScalar dynSmagorinsky::cI(const volSymmTensorField& D) const
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
dynSmagorinsky::dynSmagorinsky homogeneousDynSmagorinsky::homogeneousDynSmagorinsky
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
@ -135,7 +144,7 @@ dynSmagorinsky::dynSmagorinsky
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void dynSmagorinsky::correct(const tmp<volTensorField>& gradU) void homogeneousDynSmagorinsky::correct(const tmp<volTensorField>& gradU)
{ {
LESModel::correct(gradU); LESModel::correct(gradU);
@ -148,7 +157,7 @@ void dynSmagorinsky::correct(const tmp<volTensorField>& gradU)
} }
bool dynSmagorinsky::read() bool homogeneousDynSmagorinsky::read()
{ {
if (GenEddyVisc::read()) if (GenEddyVisc::read())
{ {

View File

@ -22,10 +22,11 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class Class
Foam::incompressible::LESModels::dynSmagorinsky Foam::incompressible::LESModels::homogeneousDynSmagorinsky
Description Description
The Isochoric dynamic Smagorinsky Model for incompressible flows. The Isochoric homogeneous dynamic Smagorinsky Model for
incompressible flows.
Algebraic eddy viscosity SGS model founded on the assumption that Algebraic eddy viscosity SGS model founded on the assumption that
local equilibrium prevails. local equilibrium prevails.
@ -55,15 +56,18 @@ Description
m = delta^2*(4*||F(D)||^2 - F(||D||^2)) m = delta^2*(4*||F(D)||^2 - F(||D||^2))
L = dev(F(U*U) - F(U)*F(U)) L = dev(F(U*U) - F(U)*F(U))
M = delta^2*(F(||D||*dev(D)) - 4*||F(D)||*F(dev(D))) M = delta^2*(F(||D||*dev(D)) - 4*||F(D)||*F(dev(D)))
The averaging <...> is over the whole domain, i.e. homogeneous turbulence
is assumed
\endverbatim \endverbatim
SourceFiles SourceFiles
dynSmagorinsky.C homogeneousDynSmagorinsky.C
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef dynSmagorinsky_H #ifndef homogeneousDynSmagorinsky_H
#define dynSmagorinsky_H #define homogeneousDynSmagorinsky_H
#include "Smagorinsky.H" #include "Smagorinsky.H"
#include "LESfilter.H" #include "LESfilter.H"
@ -78,10 +82,10 @@ namespace LESModels
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class dynSmagorinsky Declaration Class homogeneousDynSmagorinsky Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class dynSmagorinsky class homogeneousDynSmagorinsky
: :
public GenEddyVisc public GenEddyVisc
{ {
@ -103,19 +107,19 @@ class dynSmagorinsky
dimensionedScalar cI(const volSymmTensorField& D) const; dimensionedScalar cI(const volSymmTensorField& D) const;
// Disallow default bitwise copy construct and assignment // Disallow default bitwise copy construct and assignment
dynSmagorinsky(const dynSmagorinsky&); homogeneousDynSmagorinsky(const homogeneousDynSmagorinsky&);
dynSmagorinsky& operator=(const dynSmagorinsky&); homogeneousDynSmagorinsky& operator=(const homogeneousDynSmagorinsky&);
public: public:
//- Runtime type information //- Runtime type information
TypeName("dynSmagorinsky"); TypeName("homogeneousDynSmagorinsky");
// Constructors // Constructors
//- Construct from components //- Construct from components
dynSmagorinsky homogeneousDynSmagorinsky
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,
@ -126,7 +130,7 @@ public:
//- Destructor //- Destructor
virtual ~dynSmagorinsky() virtual ~homogeneousDynSmagorinsky()
{} {}

View File

@ -8063,6 +8063,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0;
} }
baffleWall baffleWall
{ {

View File

@ -8063,6 +8063,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform ( 0 0 0 0 0 0 );
} }
baffleWall baffleWall
{ {

View File

@ -8063,6 +8063,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform ( 0 0 0 0 0 0 );
} }
baffleWall baffleWall
{ {

View File

@ -8063,6 +8063,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform ( 0 0 0 0 0 0 );
} }
baffleWall baffleWall
{ {

View File

@ -8063,6 +8063,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0;
} }
baffleWall baffleWall
{ {

View File

@ -8063,6 +8063,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0;
} }
baffleWall baffleWall
{ {

View File

@ -34,6 +34,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 300;
} }
baffleWall baffleWall
{ {

View File

@ -34,6 +34,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 300;
} }
baffleWall baffleWall
{ {

View File

@ -34,6 +34,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 1;
} }
baffleWall baffleWall
{ {

View File

@ -34,6 +34,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 1;
} }
baffleWall baffleWall
{ {

View File

@ -8063,6 +8063,7 @@ boundaryField
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0;
} }
baffleWall baffleWall
{ {

View File

@ -1,8 +1,5 @@
PDR test case PDR test case
The folder 0.org contains the initial fields for the original
blockMesh.
Step to introduce the PDR fields: Step to introduce the PDR fields:
1) Create zero-size patches for wall or/and coupled baffles in 1) Create zero-size patches for wall or/and coupled baffles in

View File

@ -36,7 +36,6 @@ dictionaryReplacement
{ {
type cyclic; type cyclic;
} }
} }
} }
@ -109,8 +108,8 @@ dictionaryReplacement
} }
baffleWall baffleWall
{ {
type compressible::kqRWallFunction; type compressible::kqRWallFunction;
value uniform 1.5; value uniform 1.5;
} }
baffleCyclic_half0 baffleCyclic_half0
{ {
@ -153,6 +152,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 1;
} }
baffleWall baffleWall
{ {
@ -177,6 +177,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 300;
} }
baffleWall baffleWall
{ {
@ -201,6 +202,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 300;
} }
baffleWall baffleWall
{ {
@ -225,6 +227,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 1;
} }
baffleWall baffleWall
{ {
@ -273,8 +276,9 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0.0;
} }
baffleWall baffleWall
{ {
type zeroGradient; type zeroGradient;
value uniform 0.0; value uniform 0.0;
@ -296,6 +300,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform (0 0 0 0 0 0);
} }
baffleWall baffleWall
{ {
@ -319,6 +324,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0;
} }
baffleWall baffleWall
{ {
@ -342,6 +348,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform (0 0 0 0 0 0);
} }
baffleWall baffleWall
{ {
@ -365,6 +372,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform (0 0 0 0 0 0);
} }
baffleWall baffleWall
{ {
@ -388,6 +396,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0;
} }
baffleWall baffleWall
{ {
@ -411,6 +420,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform (0 0 0 0 0 0);
} }
baffleWall baffleWall
{ {
@ -434,6 +444,7 @@ dictionaryReplacement
blockedFaces blockedFaces
{ {
type zeroGradient; type zeroGradient;
value uniform 0;
} }
baffleWall baffleWall
{ {

View File

@ -67,6 +67,7 @@ solvers
PIMPLE PIMPLE
{ {
nCorrectors 2; nCorrectors 2;
nOuterCorrectors 1;
nNonOrthogonalCorrectors 0; nNonOrthogonalCorrectors 0;
momentumPredictor true; momentumPredictor true;
} }

View File

@ -76,8 +76,8 @@ ignitionSites
location (0.005 -0.02 0); location (0.005 -0.02 0);
diameter 0.003; diameter 0.003;
start 0; start 0;
duration 0.05; duration 0.1;
strength 20; strength 100;
} }
); );

View File

@ -23,13 +23,13 @@ startTime 0;
stopAt endTime; stopAt endTime;
endTime 0.5; endTime 3.0;//0.5;
deltaT 5e-06; deltaT 5e-06;
writeControl adjustableRunTime; writeControl adjustableRunTime;
writeInterval 0.01; writeInterval 0.1;
purgeWrite 0; purgeWrite 0;

View File

@ -36,7 +36,7 @@ solvers
{ {
solver PBiCG; solver PBiCG;
preconditioner DILU; preconditioner DILU;
tolerance 1e-05; tolerance 1e-06;
relTol 0.1; relTol 0.1;
} }

View File

@ -17,7 +17,7 @@ FoamFile
psiChemistryModel ODEChemistryModel<gasThermoPhysics>; psiChemistryModel ODEChemistryModel<gasThermoPhysics>;
chemistry off; chemistry on;
chemistrySolver ode; chemistrySolver ode;

View File

@ -19,7 +19,7 @@ Cmix Cmix [ 0 0 0 0 0 0 0 ] 1;
ignitionProperties1 ignitionProperties1
{ {
ignite off; ignite on;
ignitionPoint ignitionPoint [ 0 1 0 0 0 0 0 ] ( 0.2 0 0.02 ); ignitionPoint ignitionPoint [ 0 1 0 0 0 0 0 ] ( 0.2 0 0.02 );
timing timing [ 0 0 1 0 0 0 0 ] 0; timing timing [ 0 0 1 0 0 0 0 ] 0;
duration duration [ 0 0 1 0 0 0 0 ] 1; duration duration [ 0 0 1 0 0 0 0 ] 1;

View File

@ -8,7 +8,7 @@
FoamFile FoamFile
{ {
version 2.0; version 2.0;
format ascii; format binary;
class polyBoundaryMesh; class polyBoundaryMesh;
location "constant/polyMesh"; location "constant/polyMesh";
object boundary; object boundary;

View File

@ -70,6 +70,7 @@ solvers
PIMPLE PIMPLE
{ {
nOuterCorrectors 1;
nCorrectors 2; nCorrectors 2;
nNonOrthogonalCorrectors 0; nNonOrthogonalCorrectors 0;
} }

View File

@ -47,14 +47,14 @@ solvers
relTol 0; relTol 0;
} }
"(U|ft|h|k|epsilon)" "(U|Xi|hu|ft|b|h|k|epsilon)"
{ {
solver PBiCG; solver PBiCG;
preconditioner DILU; preconditioner DILU;
tolerance 1e-05; tolerance 1e-05;
relTol 0.1; relTol 0.1;
} }
"(U|ft|h|k|epsilon)Final" "(U|ft|Xi|hu|b|h|k|epsilon)Final"
{ {
$U; $U;
tolerance 1e-05; tolerance 1e-05;

View File

@ -22,7 +22,7 @@ startTime 0.0;
stopAt endTime; stopAt endTime;
endTime 6.0; endTime 2.75;
deltaT 0.001; deltaT 0.001;

View File

@ -23,13 +23,13 @@ startTime 0;
stopAt endTime; stopAt endTime;
endTime 1.0; endTime 0.3;
deltaT 1e-6; deltaT 1e-6;
writeControl adjustableRunTime; writeControl adjustableRunTime;
writeInterval 0.1; writeInterval 0.05;
purgeWrite 0; purgeWrite 0;

View File

@ -71,6 +71,8 @@ solvers
PIMPLE PIMPLE
{ {
momentumPredictor no;
nOuterCorrectors 1;
nCorrectors 2; nCorrectors 2;
nNonOrthogonalCorrectors 0; nNonOrthogonalCorrectors 0;
} }

View File

@ -63,7 +63,7 @@ PIMPLE
"(U|k|epsilon)" "(U|k|epsilon)"
{ {
relTol 0; relTol 0;
absTol 0.0001; tolerance 0.0001;
} }
} }
} }

View File

@ -23,7 +23,7 @@ startTime 0;
stopAt endTime; stopAt endTime;
endTime 0.025; endTime 0.01;
deltaT 1e-6; deltaT 1e-6;

View File

@ -44,7 +44,7 @@ SIMPLE
{ {
p_rgh 1e-2; p_rgh 1e-2;
U 1e-4; U 1e-4;
T 1e-3; T 1e-2;
// possibly check turbulence fields // possibly check turbulence fields
"(k|epsilon|omega)" 1e-3; "(k|epsilon|omega)" 1e-3;
@ -54,7 +54,7 @@ SIMPLE
relaxationFactors relaxationFactors
{ {
p_rgh 0.7; p_rgh 0.7;
U 0.2; U 0.3;
T 0.5; T 0.5;
"(k|epsilon|R)" 0.7; "(k|epsilon|R)" 0.7;
} }

View File

@ -21,55 +21,55 @@ FoamFile
{ {
type empty; type empty;
nFaces 0; nFaces 0;
startFace 60336; startFace 61295;
} }
minX minX
{ {
type empty; type empty;
nFaces 0; nFaces 0;
startFace 60336; startFace 61295;
} }
maxX maxX
{ {
type empty; type empty;
nFaces 0; nFaces 0;
startFace 60336; startFace 61295;
} }
minY minY
{ {
type empty; type empty;
nFaces 0; nFaces 0;
startFace 60336; startFace 61295;
} }
ground ground
{ {
type wall; type wall;
nFaces 590; nFaces 590;
startFace 60336; startFace 61295;
} }
maxZ maxZ
{ {
type empty; type empty;
nFaces 0; nFaces 0;
startFace 60926; startFace 61885;
} }
igloo_region0 igloo_region0
{ {
type wall; type wall;
nFaces 2260; nFaces 2260;
startFace 60926; startFace 61885;
} }
twoFridgeFreezers_seal_0 twoFridgeFreezers_seal_0
{ {
type wall; type wall;
nFaces 1344; nFaces 1344;
startFace 63186; startFace 64145;
} }
twoFridgeFreezers_herring_1 twoFridgeFreezers_herring_1
{ {
type wall; type wall;
nFaces 1116; nFaces 1116;
startFace 64530; startFace 65489;
} }
) )

View File

@ -29,14 +29,14 @@ solvers
{ {
solver PBiCG; solver PBiCG;
preconditioner DILU; preconditioner DILU;
tolerance 1e-05; tolerance 1e-07;
relTol 0.1; relTol 0.1;
} }
} }
SIMPLE SIMPLE
{ {
nNonOrthogonalCorrectors 0; nNonOrthogonalCorrectors 2;
pRefCell 0; pRefCell 0;
pRefValue 0; pRefValue 0;

View File

@ -23,7 +23,7 @@ cp -r 0.org 0
runApplication mapFields ../wingMotion2D_simpleFoam -sourceTime latestTime -consistent runApplication mapFields ../wingMotion2D_simpleFoam -sourceTime latestTime -consistent
mv 0/pointDisplacement.unmapped 0/pointDisplacement mv 0/pointDisplacement.unmapped 0/pointDisplacement
runApplication decomposePar runApplication decomposePar
runParallel `getApplication` 3 runParallel `getApplication` 4
runApplication reconstructPar runApplication reconstructPar
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- end-of-file

View File

@ -35,7 +35,7 @@ boundaryField
); );
velocity (0 0 0); velocity (0 0 0);
acceleration (0 0 0); acceleration (0 0 0);
angularMomentum (0 0 -0.5); angularMomentum (0 0 -2.0);
torque (0 0 0); torque (0 0 0);
rhoName rhoInf; rhoName rhoInf;
rhoInf 1; rhoInf 1;

View File

@ -20,38 +20,38 @@ FoamFile
topAndBottom topAndBottom
{ {
type patch; type patch;
nFaces 150; nFaces 72;
startFace 76473; startFace 25168;
} }
inlet inlet
{ {
type patch; type patch;
nFaces 48; nFaces 40;
startFace 76623; startFace 25240;
} }
outlet outlet
{ {
type patch; type patch;
nFaces 48; nFaces 62;
startFace 76671; startFace 25280;
} }
front front
{ {
type empty; type empty;
nFaces 38129; nFaces 12559;
startFace 76719; startFace 25342;
} }
back back
{ {
type empty; type empty;
nFaces 38129; nFaces 12559;
startFace 114848; startFace 37901;
} }
wing wing
{ {
type wall; type wall;
nFaces 778; nFaces 378;
startFace 152977; startFace 50460;
} }
) )

View File

@ -23,7 +23,7 @@ startTime 0;
stopAt endTime; stopAt endTime;
endTime 1; endTime 0.6;
deltaT 1e-5; deltaT 1e-5;

View File

@ -15,27 +15,22 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 3; numberOfSubdomains 4;
method simple; method simple;
simpleCoeffs simpleCoeffs
{ {
n ( 1 3 1 ); n ( 2 2 1 );
delta 0.001; delta 0.001;
} }
hierarchicalCoeffs hierarchicalCoeffs
{ {
n ( 3 2 1 ); n ( 2 2 1 );
delta 0.001; delta 0.001;
order xyz; order xyz;
} }
manualCoeffs
{
dataFile "cellDecomposition";
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -20,38 +20,38 @@ FoamFile
topAndBottom topAndBottom
{ {
type patch; type patch;
nFaces 150; nFaces 72;
startFace 76473; startFace 25168;
} }
inlet inlet
{ {
type patch; type patch;
nFaces 48; nFaces 40;
startFace 76623; startFace 25240;
} }
outlet outlet
{ {
type patch; type patch;
nFaces 48; nFaces 62;
startFace 76671; startFace 25280;
} }
front front
{ {
type empty; type empty;
nFaces 38129; nFaces 12559;
startFace 76719; startFace 25342;
} }
back back
{ {
type empty; type empty;
nFaces 38129; nFaces 12559;
startFace 114848; startFace 37901;
} }
wing wing
{ {
type wall; type wall;
nFaces 778; nFaces 378;
startFace 152977; startFace 50460;
} }
) )

View File

@ -19,19 +19,19 @@ convertToMeters 1;
vertices vertices
( (
(-2.5 -4.8 -0.1) (-1.2 -2.2 -0.1)
( 10 -4.8 -0.1) ( 5 -2.2 -0.1)
( 10 4.8 -0.1) ( 5 2.2 -0.1)
(-2.5 4.8 -0.1) (-1.2 2.2 -0.1)
(-2.5 -4.8 0.1) (-1.2 -2.2 0.1)
( 10 -4.8 0.1) ( 5 -2.2 0.1)
( 10 4.8 0.1) ( 5 2.2 0.1)
(-2.5 4.8 0.1) (-1.2 2.2 0.1)
); );
blocks blocks
( (
hex (0 1 2 3 4 5 6 7) (75 48 1) simpleGrading (1 1 1) hex (0 1 2 3 4 5 6 7) (36 24 1) simpleGrading (1 1 1)
); );
edges edges

View File

@ -20,38 +20,38 @@ FoamFile
topAndBottom topAndBottom
{ {
type patch; type patch;
nFaces 150; nFaces 72;
startFace 2098769; startFace 495985;
} }
inlet inlet
{ {
type patch; type patch;
nFaces 48; nFaces 72;
startFace 2098919; startFace 496057;
} }
outlet outlet
{ {
type patch; type patch;
nFaces 48; nFaces 204;
startFace 2098967; startFace 496129;
} }
front front
{ {
type empty; type empty;
nFaces 38129; nFaces 12559;
startFace 2099015; startFace 496333;
} }
back back
{ {
type empty; type empty;
nFaces 38120; nFaces 12559;
startFace 2137144; startFace 508892;
} }
wing_5degrees.obj_WALL10 wing_5degrees.obj_WALL10
{ {
type wall; type wall;
nFaces 49792; nFaces 12096;
startFace 2175264; startFace 521451;
} }
) )

View File

@ -62,10 +62,10 @@ castellatedMeshControls
// actually be a lot less. // actually be a lot less.
maxGlobalCells 2000000; maxGlobalCells 2000000;
// The surface refinement loop might spend lots of iterations refining just a // The surface refinement loop might spend lots of iterations refining just
// few cells. This setting will cause refinement to stop if <= minimumRefine // a few cells. This setting will cause refinement to stop if <=
// are selected for refinement. Note: it will at least do one iteration // minimumRefine are selected for refinement. Note: it will at least do one
// (unless the number of cells to refine is 0) // iteration (unless the number of cells to refine is 0)
minRefinementCells 100; minRefinementCells 100;
// Number of buffer layers between different levels. // Number of buffer layers between different levels.
@ -98,7 +98,7 @@ castellatedMeshControls
wing_5degrees.obj wing_5degrees.obj
{ {
// Surface-wise min and max refinement level // Surface-wise min and max refinement level
level (6 6); level (5 5);
} }
} }
@ -124,7 +124,7 @@ castellatedMeshControls
refinementBox refinementBox
{ {
mode inside; mode inside;
levels ((1e15 3)); levels ((1e15 2));
} }
} }

View File

@ -17,7 +17,7 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0); internalField uniform (0 0 0);
boundaryField boundaryField
{ {

View File

@ -17,7 +17,7 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0); internalField uniform (0 0 0);
boundaryField boundaryField
{ {

View File

@ -17,7 +17,7 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0); internalField uniform (0 0 0);
boundaryField boundaryField
{ {

View File

@ -17,7 +17,7 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0); internalField uniform (0 0 0);
boundaryField boundaryField
{ {

View File

@ -11,4 +11,3 @@ cp -rf 0.org 0
rm -f *.obj rm -f *.obj
#rm -rf VTK #rm -rf VTK

View File

@ -8,4 +8,3 @@ cd ${0%/*} || exit 1 # run from this directory
application=`getApplication` application=`getApplication`
runApplication $application runApplication $application

View File

@ -7,4 +7,3 @@ runApplication setSet -batch wallFilmRegion.setSet
mv log.setSet log.wallFilmRegion.setSet mv log.setSet log.wallFilmRegion.setSet
runApplication extrudeToRegionMesh -overwrite runApplication extrudeToRegionMesh -overwrite

View File

@ -8,4 +8,3 @@ species
reactions reactions
{} {}

View File

@ -31,7 +31,7 @@ FoamFile
sampleMode nearestPatchFace; sampleMode nearestPatchFace;
sampleRegion wallFilmRegion; sampleRegion wallFilmRegion;
samplePatch region0_to_wallFilmRegion_wallFilmFaces; samplePatch region0_to_wallFilmRegion_wallFilmFaces;
offsets offsets
200 200
( (
(-4.33680869e-19 -4.33680869e-19 -0) (-4.33680869e-19 -4.33680869e-19 -0)

View File

@ -20,7 +20,7 @@ FoamFile
wallFilmFaces wallFilmFaces
{ {
type faceZone; type faceZone;
faceLabels List<label> faceLabels List<label>
200 200
( (
12600 12600

View File

@ -18,206 +18,206 @@ FoamFile
200 200
( (
12600 12600
12601 12601
12602 12602
12603 12603
12604 12604
12605 12605
12606 12606
12607 12607
12608 12608
12609 12609
12610 12610
12611 12611
12612 12612
12613 12613
12614 12614
12615 12615
12616 12616
12617 12617
12618 12618
12619 12619
12620 12620
12621 12621
12622 12622
12623 12623
12624 12624
12625 12625
12626 12626
12627 12627
12628 12628
12629 12629
12630 12630
12631 12631
12632 12632
12633 12633
12634 12634
12635 12635
12636 12636
12637 12637
12638 12638
12639 12639
12640 12640
12641 12641
12642 12642
12643 12643
12644 12644
12645 12645
12646 12646
12647 12647
12648 12648
12649 12649
12650 12650
12651 12651
12652 12652
12653 12653
12654 12654
12655 12655
12656 12656
12657 12657
12658 12658
12659 12659
12660 12660
12661 12661
12662 12662
12663 12663
12664 12664
12665 12665
12666 12666
12667 12667
12668 12668
12669 12669
12670 12670
12671 12671
12672 12672
12673 12673
12674 12674
12675 12675
12676 12676
12677 12677
12678 12678
12679 12679
12680 12680
12681 12681
12682 12682
12683 12683
12684 12684
12685 12685
12686 12686
12687 12687
12688 12688
12689 12689
12690 12690
12691 12691
12692 12692
12693 12693
12694 12694
12695 12695
12696 12696
12697 12697
12698 12698
12699 12699
12700 12700
12701 12701
12702 12702
12703 12703
12704 12704
12705 12705
12706 12706
12707 12707
12708 12708
12709 12709
12710 12710
12711 12711
12712 12712
12713 12713
12714 12714
12715 12715
12716 12716
12717 12717
12718 12718
12719 12719
12720 12720
12721 12721
12722 12722
12723 12723
12724 12724
12725 12725
12726 12726
12727 12727
12728 12728
12729 12729
12730 12730
12731 12731
12732 12732
12733 12733
12734 12734
12735 12735
12736 12736
12737 12737
12738 12738
12739 12739
12740 12740
12741 12741
12742 12742
12743 12743
12744 12744
12745 12745
12746 12746
12747 12747
12748 12748
12749 12749
12750 12750
12751 12751
12752 12752
12753 12753
12754 12754
12755 12755
12756 12756
12757 12757
12758 12758
12759 12759
12760 12760
12761 12761
12762 12762
12763 12763
12764 12764
12765 12765
12766 12766
12767 12767
12768 12768
12769 12769
12770 12770
12771 12771
12772 12772
12773 12773
12774 12774
12775 12775
12776 12776
12777 12777
12778 12778
12779 12779
12780 12780
12781 12781
12782 12782
12783 12783
12784 12784
12785 12785
12786 12786
12787 12787
12788 12788
12789 12789
12790 12790
12791 12791
12792 12792
12793 12793
12794 12794
12795 12795
12796 12796
12797 12797
12798 12798
12799 12799
) )
// ************************************************************************* // // ************************************************************************* //

View File

@ -38,7 +38,7 @@ FoamFile
sampleRegion wallFilmRegion; sampleRegion wallFilmRegion;
samplePatch region0_to_wallFilmRegion_wallFilmFaces; samplePatch region0_to_wallFilmRegion_wallFilmFaces;
offsetMode nonuniform; offsetMode nonuniform;
offsets offsets
1100 1100
( (
(-1.110223025e-16 -0 -0) (-1.110223025e-16 -0 -0)

View File

@ -1,4 +1,3 @@
# Create face set # Create face set
faceSet wallFilmFaces new patchToFace filmWalls faceSet wallFilmFaces new patchToFace filmWalls
faceZoneSet wallFilmFaces new setToFaceZone wallFilmFaces faceZoneSet wallFilmFaces new setToFaceZone wallFilmFaces

View File

@ -30,4 +30,3 @@ cp -r system/wallFilmRegion.org system/wallFilmRegion
find ./0 -maxdepth 1 -type f -exec \ find ./0 -maxdepth 1 -type f -exec \
sed -i "s/wallFilm/\"(region0_to.*)\"/g" {} \; sed -i "s/wallFilm/\"(region0_to.*)\"/g" {} \;

View File

@ -70,7 +70,7 @@ thermoSingleLayerCoeffs
{ {
cloudName reactingCloud1; cloudName reactingCloud1;
deltaStable 0; deltaStable 0;
particlesPerParcel 100.0; particlesPerParcel 100.0;
parcelDistribution parcelDistribution

View File

@ -1,11 +1,11 @@
#!/bin/bash #!/bin/bash
#--------------------------------*- C++ -*---------------------------------- #--------------------------------*- C++ -*----------------------------------#
# ========= | # ========= | #
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox #
# \\ / O peration | Version: dev # \\ / O peration | Version: dev #
# \\ / A nd | Web: www.OpenFOAM.com # \\ / A nd | Web: www.OpenFOAM.com #
# \\/ M anipulation | # \\/ M anipulation | #
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------#
cd ${0%/*} || exit 1 # run from this directory cd ${0%/*} || exit 1 # run from this directory
x0=0.4 x0=0.4

View File

@ -17,7 +17,7 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0); internalField uniform (0 0 0);
boundaryField boundaryField
{ {

View File

@ -17,7 +17,7 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0); internalField uniform (0 0 0);
boundaryField boundaryField
{ {

View File

@ -11,4 +11,3 @@ cp -rf 0.org 0
rm -f *.obj rm -f *.obj
#rm -rf VTK #rm -rf VTK

View File

@ -8,4 +8,3 @@ cd ${0%/*} || exit 1 # run from this directory
application=`getApplication` application=`getApplication`
runApplication $application runApplication $application

View File

@ -12,4 +12,3 @@ runApplication setSet -region wallFilmRegion -batch createWallFilmRegionPatches.
mv log.setSet log.createWallFilmRegionPatches.setSet mv log.setSet log.createWallFilmRegionPatches.setSet
runApplication createPatch -region wallFilmRegion -overwrite runApplication createPatch -region wallFilmRegion -overwrite

View File

@ -8,4 +8,3 @@ species
reactions reactions
{} {}

View File

@ -32,7 +32,7 @@ FoamFile
sampleRegion wallFilmRegion; sampleRegion wallFilmRegion;
samplePatch region0_to_wallFilmRegion_wallFilmFaces; samplePatch region0_to_wallFilmRegion_wallFilmFaces;
offsetMode nonuniform; offsetMode nonuniform;
offsets offsets
200 200
( (
(4.33680869e-19 4.33680869e-19 -0) (4.33680869e-19 4.33680869e-19 -0)

View File

@ -3,4 +3,3 @@ faceSet sideFaces1 new boxToFace (-0.00001 -0.00001 -1) (0.10001 0.00001 1)
faceSet sideFaces2 new boxToFace ( 0.09999 -0.00001 -1) (0.10001 0.05001 1) faceSet sideFaces2 new boxToFace ( 0.09999 -0.00001 -1) (0.10001 0.05001 1)
faceSet sideFaces3 new boxToFace (-0.00001 0.04999 -1) (1.00001 0.05001 1) faceSet sideFaces3 new boxToFace (-0.00001 0.04999 -1) (1.00001 0.05001 1)
faceSet sideFaces4 new boxToFace (-0.00001 -0.00001 -1) (0.00001 0.05001 1) faceSet sideFaces4 new boxToFace (-0.00001 -0.00001 -1) (0.00001 0.05001 1)

View File

@ -25,9 +25,9 @@ pointSync false;
// Patches to create. // Patches to create.
patches patches
( (
{ {
// Name of new patch // Name of new patch
name side1; name side1;
// Type of new patch // Type of new patch
patchInfo patchInfo