mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of ssh://noisy/home/noisy3/OpenFOAM/OpenFOAM-dev
This commit is contained in:
4
applications/test/directMappedPatch/Make/files
Normal file
4
applications/test/directMappedPatch/Make/files
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
testDirectMappedPatch.C
|
||||||
|
|
||||||
|
EXE = $(FOAM_USER_APPBIN)/testDirectMappedPatch
|
||||||
6
applications/test/directMappedPatch/Make/options
Normal file
6
applications/test/directMappedPatch/Make/options
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
EXE_INC = \
|
||||||
|
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||||
|
-I$(LIB_SRC)/finiteVolume/lnInclude
|
||||||
|
|
||||||
|
EXE_LIBS = \
|
||||||
|
-lfiniteVolume
|
||||||
127
applications/test/directMappedPatch/testDirectMappedPatch.C
Normal file
127
applications/test/directMappedPatch/testDirectMappedPatch.C
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 1991-2007 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 2 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, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Application
|
||||||
|
testDirectMappedPatch
|
||||||
|
|
||||||
|
Description
|
||||||
|
Test direct mapped b.c. by mapping face centres (mesh.C().boundaryField()).
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "argList.H"
|
||||||
|
#include "fvMesh.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "meshTools.H"
|
||||||
|
#include "Time.H"
|
||||||
|
#include "OFstream.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "directMappedFixedValueFvPatchFields.H"
|
||||||
|
|
||||||
|
using namespace Foam;
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
// Main program:
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
# include "addTimeOptions.H"
|
||||||
|
# include "setRootCase.H"
|
||||||
|
# include "createTime.H"
|
||||||
|
# include "createMesh.H"
|
||||||
|
|
||||||
|
wordList patchFieldTypes
|
||||||
|
(
|
||||||
|
mesh.boundaryMesh().size(),
|
||||||
|
calculatedFvPatchVectorField::typeName
|
||||||
|
);
|
||||||
|
|
||||||
|
forAll(mesh.boundaryMesh(), patchI)
|
||||||
|
{
|
||||||
|
if (isA<directMappedPolyPatch>(mesh.boundaryMesh()[patchI]))
|
||||||
|
{
|
||||||
|
patchFieldTypes[patchI] =
|
||||||
|
directMappedFixedValueFvPatchVectorField::typeName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Pout<< "patchFieldTypes:" << patchFieldTypes << endl;
|
||||||
|
|
||||||
|
volVectorField cc
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"cc",
|
||||||
|
runTime.timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
mesh,
|
||||||
|
dimensionedVector("zero", dimLength, vector::zero),
|
||||||
|
patchFieldTypes
|
||||||
|
);
|
||||||
|
|
||||||
|
cc.internalField() = mesh.C().internalField();
|
||||||
|
cc.boundaryField().updateCoeffs();
|
||||||
|
|
||||||
|
forAll(cc.boundaryField(), patchI)
|
||||||
|
{
|
||||||
|
if
|
||||||
|
(
|
||||||
|
isA<directMappedFixedValueFvPatchVectorField>
|
||||||
|
(
|
||||||
|
cc.boundaryField()[patchI]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Pout<< "Detected a directMapped patch:" << patchI << endl;
|
||||||
|
|
||||||
|
OFstream str(mesh.boundaryMesh()[patchI].name() + ".obj");
|
||||||
|
Pout<< "Writing mapped values to " << str.name() << endl;
|
||||||
|
|
||||||
|
label vertI = 0;
|
||||||
|
const fvPatchVectorField& fvp = cc.boundaryField()[patchI];
|
||||||
|
|
||||||
|
forAll(fvp, i)
|
||||||
|
{
|
||||||
|
meshTools::writeOBJ(str, fvp.patch().Cf()[i]);
|
||||||
|
vertI++;
|
||||||
|
meshTools::writeOBJ(str, fvp[i]);
|
||||||
|
vertI++;
|
||||||
|
str << "l " << vertI-1 << ' ' << vertI << nl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Info<< "End\n" << endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -170,6 +170,13 @@ int main(int argc, char *argv[])
|
|||||||
const dictionary& layerDict = meshDict.subDict("addLayersControls");
|
const dictionary& layerDict = meshDict.subDict("addLayersControls");
|
||||||
|
|
||||||
|
|
||||||
|
const scalar mergeDist = getMergeDistance
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
readScalar(meshDict.lookup("mergeTolerance"))
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Debug
|
// Debug
|
||||||
// ~~~~~
|
// ~~~~~
|
||||||
@ -192,8 +199,9 @@ int main(int argc, char *argv[])
|
|||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"abc", // dummy name
|
"abc", // dummy name
|
||||||
mesh.time().constant(), // directory
|
//mesh.time().constant(), // instance
|
||||||
"triSurface", // instance
|
mesh.time().findInstance("triSurface", word::null),// instance
|
||||||
|
"triSurface", // local
|
||||||
mesh.time(), // registry
|
mesh.time(), // registry
|
||||||
IOobject::MUST_READ,
|
IOobject::MUST_READ,
|
||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
@ -235,6 +243,33 @@ int main(int argc, char *argv[])
|
|||||||
<< mesh.time().cpuTimeIncrement() << " s" << nl << endl;
|
<< mesh.time().cpuTimeIncrement() << " s" << nl << endl;
|
||||||
|
|
||||||
|
|
||||||
|
// Refinement engine
|
||||||
|
// ~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Info<< nl
|
||||||
|
<< "Determining initial surface intersections" << nl
|
||||||
|
<< "-----------------------------------------" << nl
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
// Main refinement engine
|
||||||
|
meshRefinement meshRefiner
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
mergeDist, // tolerance used in sorting coordinates
|
||||||
|
surfaces, // for surface intersection refinement
|
||||||
|
shells // for volume (inside/outside) refinement
|
||||||
|
);
|
||||||
|
Info<< "Calculated surface intersections in = "
|
||||||
|
<< mesh.time().cpuTimeIncrement() << " s" << nl << endl;
|
||||||
|
|
||||||
|
// Some stats
|
||||||
|
meshRefiner.printMeshInfo(debug, "Initial mesh");
|
||||||
|
|
||||||
|
meshRefiner.write
|
||||||
|
(
|
||||||
|
debug&meshRefinement::OBJINTERSECTIONS,
|
||||||
|
mesh.time().path()/mesh.time().timeName()
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
// Add all the surface regions as patches
|
// Add all the surface regions as patches
|
||||||
@ -265,9 +300,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
forAll(regNames, i)
|
forAll(regNames, i)
|
||||||
{
|
{
|
||||||
label patchI = meshRefinement::addPatch
|
label patchI = meshRefiner.addMeshedPatch
|
||||||
(
|
(
|
||||||
mesh,
|
|
||||||
regNames[i],
|
regNames[i],
|
||||||
wallPolyPatch::typeName
|
wallPolyPatch::typeName
|
||||||
);
|
);
|
||||||
@ -308,45 +342,10 @@ int main(int argc, char *argv[])
|
|||||||
<< exit(FatalError);
|
<< exit(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
const scalar mergeDist = getMergeDistance
|
|
||||||
(
|
|
||||||
mesh,
|
|
||||||
readScalar(meshDict.lookup("mergeTolerance"))
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Mesh distribution engine (uses tolerance to reconstruct meshes)
|
// Mesh distribution engine (uses tolerance to reconstruct meshes)
|
||||||
fvMeshDistribute distributor(mesh, mergeDist);
|
fvMeshDistribute distributor(mesh, mergeDist);
|
||||||
|
|
||||||
|
|
||||||
// Refinement engine
|
|
||||||
// ~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Info<< nl
|
|
||||||
<< "Determining initial surface intersections" << nl
|
|
||||||
<< "-----------------------------------------" << nl
|
|
||||||
<< endl;
|
|
||||||
|
|
||||||
// Main refinement engine
|
|
||||||
meshRefinement meshRefiner
|
|
||||||
(
|
|
||||||
mesh,
|
|
||||||
mergeDist, // tolerance used in sorting coordinates
|
|
||||||
surfaces, // for surface intersection refinement
|
|
||||||
shells // for volume (inside/outside) refinement
|
|
||||||
);
|
|
||||||
Info<< "Calculated surface intersections in = "
|
|
||||||
<< mesh.time().cpuTimeIncrement() << " s" << nl << endl;
|
|
||||||
|
|
||||||
// Some stats
|
|
||||||
meshRefiner.printMeshInfo(debug, "Initial mesh");
|
|
||||||
|
|
||||||
meshRefiner.write
|
|
||||||
(
|
|
||||||
debug&meshRefinement::OBJINTERSECTIONS,
|
|
||||||
mesh.time().path()/mesh.time().timeName()
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -403,11 +402,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (wantLayers)
|
if (wantLayers)
|
||||||
{
|
{
|
||||||
autoLayerDriver layerDriver
|
autoLayerDriver layerDriver(meshRefiner);
|
||||||
(
|
|
||||||
meshRefiner,
|
|
||||||
globalToPatch
|
|
||||||
);
|
|
||||||
|
|
||||||
// Layer addition parameters
|
// Layer addition parameters
|
||||||
layerParameters layerParams(layerDict, mesh.boundaryMesh());
|
layerParameters layerParams(layerDict, mesh.boundaryMesh());
|
||||||
@ -435,7 +430,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
Info<< "End\n" << endl;
|
Info<< "End\n" << endl;
|
||||||
|
|
||||||
return 0;
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -292,6 +292,40 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
|
|||||||
meshRefinement::checkCoupledFaceZones(mesh_);
|
meshRefinement::checkCoupledFaceZones(mesh_);
|
||||||
|
|
||||||
|
|
||||||
|
// Refinement engine
|
||||||
|
// ~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
{
|
||||||
|
Info<< nl
|
||||||
|
<< "Determining initial surface intersections" << nl
|
||||||
|
<< "-----------------------------------------" << nl
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
// Main refinement engine
|
||||||
|
meshRefinerPtr_.reset
|
||||||
|
(
|
||||||
|
new meshRefinement
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
mergeDist_, // tolerance used in sorting coordinates
|
||||||
|
surfaces(),
|
||||||
|
shells()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
Info<< "Calculated surface intersections in = "
|
||||||
|
<< mesh_.time().cpuTimeIncrement() << " s" << endl;
|
||||||
|
|
||||||
|
// Some stats
|
||||||
|
meshRefinerPtr_().printMeshInfo(debug_, "Initial mesh");
|
||||||
|
|
||||||
|
meshRefinerPtr_().write
|
||||||
|
(
|
||||||
|
debug_&meshRefinement::OBJINTERSECTIONS,
|
||||||
|
mesh_.time().path()/mesh_.time().timeName()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Add all the surface regions as patches
|
// Add all the surface regions as patches
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -319,9 +353,8 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
|
|||||||
|
|
||||||
forAll(regNames, i)
|
forAll(regNames, i)
|
||||||
{
|
{
|
||||||
label patchI = meshRefinement::addPatch
|
label patchI = meshRefinerPtr_().addMeshedPatch
|
||||||
(
|
(
|
||||||
mesh,
|
|
||||||
regNames[i],
|
regNames[i],
|
||||||
wallPolyPatch::typeName
|
wallPolyPatch::typeName
|
||||||
);
|
);
|
||||||
@ -404,40 +437,6 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
|
|||||||
// Mesh distribution engine (uses tolerance to reconstruct meshes)
|
// Mesh distribution engine (uses tolerance to reconstruct meshes)
|
||||||
distributorPtr_.reset(new fvMeshDistribute(mesh_, mergeDist_));
|
distributorPtr_.reset(new fvMeshDistribute(mesh_, mergeDist_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Refinement engine
|
|
||||||
// ~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
{
|
|
||||||
Info<< nl
|
|
||||||
<< "Determining initial surface intersections" << nl
|
|
||||||
<< "-----------------------------------------" << nl
|
|
||||||
<< endl;
|
|
||||||
|
|
||||||
// Main refinement engine
|
|
||||||
meshRefinerPtr_.reset
|
|
||||||
(
|
|
||||||
new meshRefinement
|
|
||||||
(
|
|
||||||
mesh,
|
|
||||||
mergeDist_, // tolerance used in sorting coordinates
|
|
||||||
surfaces(),
|
|
||||||
shells()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
Info<< "Calculated surface intersections in = "
|
|
||||||
<< mesh_.time().cpuTimeIncrement() << " s" << endl;
|
|
||||||
|
|
||||||
// Some stats
|
|
||||||
meshRefinerPtr_().printMeshInfo(debug_, "Initial mesh");
|
|
||||||
|
|
||||||
meshRefinerPtr_().write
|
|
||||||
(
|
|
||||||
debug_&meshRefinement::OBJINTERSECTIONS,
|
|
||||||
mesh_.time().path()/mesh_.time().timeName()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -522,11 +521,7 @@ void Foam::autoHexMeshDriver::doMesh()
|
|||||||
const dictionary& shrinkDict = dict_.subDict("shrinkDict");
|
const dictionary& shrinkDict = dict_.subDict("shrinkDict");
|
||||||
PtrList<dictionary> surfaceDicts(dict_.lookup("surfaces"));
|
PtrList<dictionary> surfaceDicts(dict_.lookup("surfaces"));
|
||||||
|
|
||||||
autoLayerDriver layerDriver
|
autoLayerDriver layerDriver(meshRefinerPtr_());
|
||||||
(
|
|
||||||
meshRefinerPtr_(),
|
|
||||||
globalToPatch_
|
|
||||||
);
|
|
||||||
|
|
||||||
// Get all the layer specific params
|
// Get all the layer specific params
|
||||||
layerParameters layerParams
|
layerParameters layerParams
|
||||||
|
|||||||
@ -75,7 +75,7 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
|
|||||||
labelHashSet boundaryCells(mesh.nFaces()-mesh.nInternalFaces());
|
labelHashSet boundaryCells(mesh.nFaces()-mesh.nInternalFaces());
|
||||||
|
|
||||||
{
|
{
|
||||||
labelList patchIDs(meshRefinement::addedPatches(globalToPatch_));
|
labelList patchIDs(meshRefiner_.meshedPatches());
|
||||||
|
|
||||||
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
||||||
|
|
||||||
@ -2446,14 +2446,9 @@ void Foam::autoLayerDriver::getLayerCellsFaces
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::autoLayerDriver::autoLayerDriver
|
Foam::autoLayerDriver::autoLayerDriver(meshRefinement& meshRefiner)
|
||||||
(
|
|
||||||
meshRefinement& meshRefiner,
|
|
||||||
const labelList& globalToPatch
|
|
||||||
)
|
|
||||||
:
|
:
|
||||||
meshRefiner_(meshRefiner),
|
meshRefiner_(meshRefiner)
|
||||||
globalToPatch_(globalToPatch)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -101,9 +101,6 @@ class autoLayerDriver
|
|||||||
//- Mesh+surface
|
//- Mesh+surface
|
||||||
meshRefinement& meshRefiner_;
|
meshRefinement& meshRefiner_;
|
||||||
|
|
||||||
//- From surface region to patch
|
|
||||||
const labelList globalToPatch_;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
@ -509,11 +506,7 @@ public:
|
|||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
autoLayerDriver
|
autoLayerDriver(meshRefinement& meshRefiner);
|
||||||
(
|
|
||||||
meshRefinement& meshRefiner,
|
|
||||||
const labelList& globalToPatch
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|||||||
@ -680,7 +680,7 @@ void Foam::autoRefineDriver::mergePatchFaces
|
|||||||
(
|
(
|
||||||
Foam::cos(45*mathematicalConstant::pi/180.0),
|
Foam::cos(45*mathematicalConstant::pi/180.0),
|
||||||
Foam::cos(45*mathematicalConstant::pi/180.0),
|
Foam::cos(45*mathematicalConstant::pi/180.0),
|
||||||
meshRefinement::addedPatches(globalToPatch_)
|
meshRefiner_.meshedPatches()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
|
|||||||
@ -830,35 +830,6 @@ Foam::scalarField Foam::autoSnapDriver::calcSnapDistance
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//// Invert globalToPatch_ to get the patches related to surfaces.
|
|
||||||
//Foam::labelList Foam::autoSnapDriver::getSurfacePatches() const
|
|
||||||
//{
|
|
||||||
// // Set of patches originating from surface
|
|
||||||
// labelHashSet surfacePatchSet(globalToPatch_.size());
|
|
||||||
//
|
|
||||||
// forAll(globalToPatch_, i)
|
|
||||||
// {
|
|
||||||
// if (globalToPatch_[i] != -1)
|
|
||||||
// {
|
|
||||||
// surfacePatchSet.insert(globalToPatch_[i]);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// const fvMesh& mesh = meshRefiner_.mesh();
|
|
||||||
//
|
|
||||||
// DynamicList<label> surfacePatches(surfacePatchSet.size());
|
|
||||||
//
|
|
||||||
// for (label patchI = 0; patchI < mesh.boundaryMesh().size(); patchI++)
|
|
||||||
// {
|
|
||||||
// if (surfacePatchSet.found(patchI))
|
|
||||||
// {
|
|
||||||
// surfacePatches.append(patchI);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return surfacePatches.shrink();
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
void Foam::autoSnapDriver::preSmoothPatch
|
void Foam::autoSnapDriver::preSmoothPatch
|
||||||
(
|
(
|
||||||
const snapParameters& snapParams,
|
const snapParameters& snapParams,
|
||||||
@ -1479,7 +1450,7 @@ void Foam::autoSnapDriver::doSnap
|
|||||||
const_cast<Time&>(mesh.time())++;
|
const_cast<Time&>(mesh.time())++;
|
||||||
|
|
||||||
// Get the labels of added patches.
|
// Get the labels of added patches.
|
||||||
labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch_));
|
labelList adaptPatchIDs(meshRefiner_.meshedPatches());
|
||||||
|
|
||||||
// Create baffles (pairs of faces that share the same points)
|
// Create baffles (pairs of faces that share the same points)
|
||||||
// Baffles stored as owner and neighbour face that have been created.
|
// Baffles stored as owner and neighbour face that have been created.
|
||||||
|
|||||||
@ -170,9 +170,6 @@ public:
|
|||||||
const indirectPrimitivePatch&
|
const indirectPrimitivePatch&
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
////- Get patches generated for surfaces.
|
|
||||||
//labelList getSurfacePatches() const;
|
|
||||||
|
|
||||||
//- Smooth the mesh (patch and internal) to increase visibility
|
//- Smooth the mesh (patch and internal) to increase visibility
|
||||||
// of surface points (on castellated mesh) w.r.t. surface.
|
// of surface points (on castellated mesh) w.r.t. surface.
|
||||||
void preSmoothPatch
|
void preSmoothPatch
|
||||||
|
|||||||
@ -84,12 +84,15 @@ void Foam::meshRefinement::calcNeighbourData
|
|||||||
|
|
||||||
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
|
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
|
||||||
|
|
||||||
|
labelHashSet addedPatchIDSet(meshedPatches());
|
||||||
|
|
||||||
forAll(patches, patchI)
|
forAll(patches, patchI)
|
||||||
{
|
{
|
||||||
const polyPatch& pp = patches[patchI];
|
const polyPatch& pp = patches[patchI];
|
||||||
|
|
||||||
const unallocLabelList& faceCells = pp.faceCells();
|
const unallocLabelList& faceCells = pp.faceCells();
|
||||||
const vectorField::subField faceCentres = pp.faceCentres();
|
const vectorField::subField faceCentres = pp.faceCentres();
|
||||||
|
const vectorField::subField faceAreas = pp.faceAreas();
|
||||||
|
|
||||||
label bFaceI = pp.start()-mesh_.nInternalFaces();
|
label bFaceI = pp.start()-mesh_.nInternalFaces();
|
||||||
|
|
||||||
@ -102,6 +105,36 @@ void Foam::meshRefinement::calcNeighbourData
|
|||||||
bFaceI++;
|
bFaceI++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (addedPatchIDSet.found(patchI))
|
||||||
|
{
|
||||||
|
// Face was introduced from cell-cell intersection. Try to
|
||||||
|
// reconstruct other side cell(centre). Three possibilities:
|
||||||
|
// - cells same size.
|
||||||
|
// - preserved cell smaller. Not handled.
|
||||||
|
// - preserved cell larger.
|
||||||
|
forAll(faceCells, i)
|
||||||
|
{
|
||||||
|
// Extrapolate the face centre.
|
||||||
|
vector fn = faceAreas[i];
|
||||||
|
fn /= mag(fn)+VSMALL;
|
||||||
|
|
||||||
|
label own = faceCells[i];
|
||||||
|
label ownLevel = cellLevel[own];
|
||||||
|
label faceLevel = meshCutter_.getAnchorLevel(pp.start()+i);
|
||||||
|
|
||||||
|
// Normal distance from face centre to cell centre
|
||||||
|
scalar d = ((faceCentres[i] - cellCentres[own]) & fn);
|
||||||
|
if (faceLevel > ownLevel)
|
||||||
|
{
|
||||||
|
// Other cell more refined. Adjust normal distance
|
||||||
|
d *= 0.5;
|
||||||
|
}
|
||||||
|
neiLevel[bFaceI] = cellLevel[ownLevel];
|
||||||
|
// Calculate other cell centre by extrapolation
|
||||||
|
neiCc[bFaceI] = faceCentres[i] + d*fn;
|
||||||
|
bFaceI++;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
forAll(faceCells, i)
|
forAll(faceCells, i)
|
||||||
@ -1195,7 +1228,6 @@ Foam::labelList Foam::meshRefinement::intersectedFaces() const
|
|||||||
// Helper function to get points used by faces
|
// Helper function to get points used by faces
|
||||||
Foam::labelList Foam::meshRefinement::intersectedPoints
|
Foam::labelList Foam::meshRefinement::intersectedPoints
|
||||||
(
|
(
|
||||||
// const labelList& globalToPatch
|
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
const faceList& faces = mesh_.faces();
|
const faceList& faces = mesh_.faces();
|
||||||
@ -1221,9 +1253,10 @@ Foam::labelList Foam::meshRefinement::intersectedPoints
|
|||||||
}
|
}
|
||||||
|
|
||||||
//// Insert all meshed patches.
|
//// Insert all meshed patches.
|
||||||
//forAll(globalToPatch, i)
|
//labelList adaptPatchIDs(meshedPatches());
|
||||||
|
//forAll(adaptPatchIDs, i)
|
||||||
//{
|
//{
|
||||||
// label patchI = globalToPatch[i];
|
// label patchI = adaptPatchIDs[i];
|
||||||
//
|
//
|
||||||
// if (patchI != -1)
|
// if (patchI != -1)
|
||||||
// {
|
// {
|
||||||
@ -1262,27 +1295,6 @@ Foam::labelList Foam::meshRefinement::intersectedPoints
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::labelList Foam::meshRefinement::addedPatches
|
|
||||||
(
|
|
||||||
const labelList& globalToPatch
|
|
||||||
)
|
|
||||||
{
|
|
||||||
labelList patchIDs(globalToPatch.size());
|
|
||||||
label addedI = 0;
|
|
||||||
|
|
||||||
forAll(globalToPatch, i)
|
|
||||||
{
|
|
||||||
if (globalToPatch[i] != -1)
|
|
||||||
{
|
|
||||||
patchIDs[addedI++] = globalToPatch[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
patchIDs.setSize(addedI);
|
|
||||||
|
|
||||||
return patchIDs;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//- Create patch from set of patches
|
//- Create patch from set of patches
|
||||||
Foam::autoPtr<Foam::indirectPrimitivePatch> Foam::meshRefinement::makePatch
|
Foam::autoPtr<Foam::indirectPrimitivePatch> Foam::meshRefinement::makePatch
|
||||||
(
|
(
|
||||||
@ -1653,6 +1665,53 @@ Foam::label Foam::meshRefinement::addPatch
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::label Foam::meshRefinement::addMeshedPatch
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const word& type
|
||||||
|
)
|
||||||
|
{
|
||||||
|
label meshedI = findIndex(meshedPatches_, name);
|
||||||
|
|
||||||
|
if (meshedI != -1)
|
||||||
|
{
|
||||||
|
// Already there. Get corresponding polypatch
|
||||||
|
return mesh_.boundaryMesh().findPatchID(name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Add patch
|
||||||
|
label patchI = addPatch(mesh_, name, type);
|
||||||
|
|
||||||
|
// Store
|
||||||
|
label sz = meshedPatches_.size();
|
||||||
|
meshedPatches_.setSize(sz+1);
|
||||||
|
meshedPatches_[sz] = name;
|
||||||
|
|
||||||
|
return patchI;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::labelList Foam::meshRefinement::meshedPatches() const
|
||||||
|
{
|
||||||
|
labelList patchIDs(meshedPatches_.size());
|
||||||
|
forAll(meshedPatches_, i)
|
||||||
|
{
|
||||||
|
patchIDs[i] = mesh_.boundaryMesh().findPatchID(meshedPatches_[i]);
|
||||||
|
|
||||||
|
if (patchIDs[i] == -1)
|
||||||
|
{
|
||||||
|
FatalErrorIn("meshRefinement::meshedPatches() const")
|
||||||
|
<< "Problem : did not find patch " << meshedPatches_[i]
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return patchIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::splitMeshRegions
|
Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::splitMeshRegions
|
||||||
(
|
(
|
||||||
const point& keepPoint
|
const point& keepPoint
|
||||||
|
|||||||
@ -125,6 +125,10 @@ private:
|
|||||||
//- user supplied face based data.
|
//- user supplied face based data.
|
||||||
List<Tuple2<mapType, labelList> > userFaceData_;
|
List<Tuple2<mapType, labelList> > userFaceData_;
|
||||||
|
|
||||||
|
//- Meshed patches - are treated differently. Stored as wordList since
|
||||||
|
// order changes.
|
||||||
|
wordList meshedPatches_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
@ -400,12 +404,11 @@ private:
|
|||||||
const labelList& globalToPatch
|
const labelList& globalToPatch
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Initial test of marking faces using geometric information.
|
////- Initial test of marking faces using geometric information.
|
||||||
labelList markFacesOnProblemCellsGeometric
|
//labelList markFacesOnProblemCellsGeometric
|
||||||
(
|
//(
|
||||||
const dictionary& motionDict,
|
// const dictionary& motionDict
|
||||||
const labelList& globalToPatch
|
//) const;
|
||||||
) const;
|
|
||||||
|
|
||||||
|
|
||||||
// Baffle merging
|
// Baffle merging
|
||||||
@ -578,9 +581,6 @@ public:
|
|||||||
//- Get points on surfaces with intersection and boundary faces.
|
//- Get points on surfaces with intersection and boundary faces.
|
||||||
labelList intersectedPoints() const;
|
labelList intersectedPoints() const;
|
||||||
|
|
||||||
//- Get added patches (inverse of globalToPatch)
|
|
||||||
static labelList addedPatches(const labelList& globalToPatch);
|
|
||||||
|
|
||||||
//- Create patch from set of patches
|
//- Create patch from set of patches
|
||||||
static autoPtr<indirectPrimitivePatch> makePatch
|
static autoPtr<indirectPrimitivePatch> makePatch
|
||||||
(
|
(
|
||||||
@ -688,9 +688,16 @@ public:
|
|||||||
|
|
||||||
// Other topo changes
|
// Other topo changes
|
||||||
|
|
||||||
//- Helper function to add patch to mesh
|
//- Helper:add patch to mesh. Update all registered fields.
|
||||||
|
// Use addMeshedPatch to add patches originating from surfaces.
|
||||||
static label addPatch(fvMesh&, const word& name, const word& type);
|
static label addPatch(fvMesh&, const word& name, const word& type);
|
||||||
|
|
||||||
|
//- Add patch originating from meshing. Update meshedPatches_.
|
||||||
|
label addMeshedPatch(const word& name, const word& type);
|
||||||
|
|
||||||
|
//- Get patchIDs for patches added in addMeshedPatch.
|
||||||
|
labelList meshedPatches() const;
|
||||||
|
|
||||||
//- Split mesh. Keep part containing point.
|
//- Split mesh. Keep part containing point.
|
||||||
autoPtr<mapPolyMesh> splitMeshRegions(const point& keepPoint);
|
autoPtr<mapPolyMesh> splitMeshRegions(const point& keepPoint);
|
||||||
|
|
||||||
@ -699,7 +706,11 @@ public:
|
|||||||
|
|
||||||
//- Update for external change to mesh. changedFaces are in new mesh
|
//- Update for external change to mesh. changedFaces are in new mesh
|
||||||
// face labels.
|
// face labels.
|
||||||
void updateMesh(const mapPolyMesh&, const labelList& changedFaces);
|
void updateMesh
|
||||||
|
(
|
||||||
|
const mapPolyMesh&,
|
||||||
|
const labelList& changedFaces
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
// Restoring : is where other processes delete and reinsert data.
|
// Restoring : is where other processes delete and reinsert data.
|
||||||
|
|||||||
@ -1511,11 +1511,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
|
|||||||
perpendicularAngle,
|
perpendicularAngle,
|
||||||
globalToPatch
|
globalToPatch
|
||||||
)
|
)
|
||||||
//markFacesOnProblemCellsGeometric
|
//markFacesOnProblemCellsGeometric(motionDict)
|
||||||
//(
|
|
||||||
// motionDict,
|
|
||||||
// globalToPatch
|
|
||||||
//)
|
|
||||||
);
|
);
|
||||||
Info<< "Analyzed problem cells in = "
|
Info<< "Analyzed problem cells in = "
|
||||||
<< runTime.cpuTimeIncrement() << " s\n" << nl << endl;
|
<< runTime.cpuTimeIncrement() << " s\n" << nl << endl;
|
||||||
@ -1665,7 +1661,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
|
|||||||
|
|
||||||
|
|
||||||
// Split off (with optional buffer layers) unreachable areas of mesh.
|
// Split off (with optional buffer layers) unreachable areas of mesh.
|
||||||
Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::splitMesh
|
Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::splitMesh
|
||||||
(
|
(
|
||||||
const label nBufferLayers,
|
const label nBufferLayers,
|
||||||
const labelList& globalToPatch,
|
const labelList& globalToPatch,
|
||||||
|
|||||||
@ -136,15 +136,13 @@ Foam::Map<Foam::label> Foam::meshRefinement::findEdgeConnectedProblemCells
|
|||||||
const labelList& globalToPatch
|
const labelList& globalToPatch
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch));
|
// Construct addressing engine from all patches added for meshing.
|
||||||
|
|
||||||
// Construct addressing engine.
|
|
||||||
autoPtr<indirectPrimitivePatch> ppPtr
|
autoPtr<indirectPrimitivePatch> ppPtr
|
||||||
(
|
(
|
||||||
meshRefinement::makePatch
|
meshRefinement::makePatch
|
||||||
(
|
(
|
||||||
mesh_,
|
mesh_,
|
||||||
adaptPatchIDs
|
meshedPatches()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
const indirectPrimitivePatch& pp = ppPtr();
|
const indirectPrimitivePatch& pp = ppPtr();
|
||||||
@ -386,11 +384,6 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
|
|||||||
const labelList& pointLevel = meshCutter_.pointLevel();
|
const labelList& pointLevel = meshCutter_.pointLevel();
|
||||||
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
|
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
|
||||||
|
|
||||||
// Swap neighbouring cell centres and cell level
|
|
||||||
labelList neiLevel(mesh_.nFaces()-mesh_.nInternalFaces());
|
|
||||||
pointField neiCc(mesh_.nFaces()-mesh_.nInternalFaces());
|
|
||||||
calcNeighbourData(neiLevel, neiCc);
|
|
||||||
|
|
||||||
// Per internal face (boundary faces not used) the patch that the
|
// Per internal face (boundary faces not used) the patch that the
|
||||||
// baffle should get (or -1)
|
// baffle should get (or -1)
|
||||||
labelList facePatch(mesh_.nFaces(), -1);
|
labelList facePatch(mesh_.nFaces(), -1);
|
||||||
@ -403,7 +396,7 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
|
|||||||
|
|
||||||
// Fill boundary data. All elements on meshed patches get marked.
|
// Fill boundary data. All elements on meshed patches get marked.
|
||||||
// Get the labels of added patches.
|
// Get the labels of added patches.
|
||||||
labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch));
|
labelList adaptPatchIDs(meshedPatches());
|
||||||
|
|
||||||
forAll(adaptPatchIDs, i)
|
forAll(adaptPatchIDs, i)
|
||||||
{
|
{
|
||||||
@ -427,6 +420,12 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Swap neighbouring cell centres and cell level
|
||||||
|
labelList neiLevel(mesh_.nFaces()-mesh_.nInternalFaces());
|
||||||
|
pointField neiCc(mesh_.nFaces()-mesh_.nInternalFaces());
|
||||||
|
calcNeighbourData(neiLevel, neiCc);
|
||||||
|
|
||||||
|
|
||||||
// Count of faces marked for baffling
|
// Count of faces marked for baffling
|
||||||
label nBaffleFaces = 0;
|
label nBaffleFaces = 0;
|
||||||
|
|
||||||
@ -961,20 +960,16 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
|
|||||||
//// test to find nearest surface and checks which faces would get squashed.
|
//// test to find nearest surface and checks which faces would get squashed.
|
||||||
//Foam::labelList Foam::meshRefinement::markFacesOnProblemCellsGeometric
|
//Foam::labelList Foam::meshRefinement::markFacesOnProblemCellsGeometric
|
||||||
//(
|
//(
|
||||||
// const dictionary& motionDict,
|
// const dictionary& motionDict
|
||||||
// const labelList& globalToPatch
|
|
||||||
//) const
|
//) const
|
||||||
//{
|
//{
|
||||||
// // Get the labels of added patches.
|
|
||||||
// labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch));
|
|
||||||
//
|
|
||||||
// // Construct addressing engine.
|
// // Construct addressing engine.
|
||||||
// autoPtr<indirectPrimitivePatch> ppPtr
|
// autoPtr<indirectPrimitivePatch> ppPtr
|
||||||
// (
|
// (
|
||||||
// meshRefinement::makePatch
|
// meshRefinement::makePatch
|
||||||
// (
|
// (
|
||||||
// mesh_,
|
// mesh_,
|
||||||
// adaptPatchIDs
|
// meshedPatches()
|
||||||
// )
|
// )
|
||||||
// );
|
// );
|
||||||
// const indirectPrimitivePatch& pp = ppPtr();
|
// const indirectPrimitivePatch& pp = ppPtr();
|
||||||
|
|||||||
@ -185,8 +185,6 @@ class hexRef8
|
|||||||
const bool searchForward,
|
const bool searchForward,
|
||||||
const label wantedLevel
|
const label wantedLevel
|
||||||
) const;
|
) const;
|
||||||
//- Gets level such that the face has four points <= level.
|
|
||||||
label getAnchorLevel(const label faceI) const;
|
|
||||||
|
|
||||||
////- Print levels of list of points.
|
////- Print levels of list of points.
|
||||||
//void printLevels(Ostream&, const labelList&) const;
|
//void printLevels(Ostream&, const labelList&) const;
|
||||||
@ -370,6 +368,9 @@ public:
|
|||||||
|
|
||||||
// Refinement
|
// Refinement
|
||||||
|
|
||||||
|
//- Gets level such that the face has four points <= level.
|
||||||
|
label getAnchorLevel(const label faceI) const;
|
||||||
|
|
||||||
//- Given valid mesh and current cell level and proposed
|
//- Given valid mesh and current cell level and proposed
|
||||||
// cells to refine calculate any clashes (due to 2:1) and return
|
// cells to refine calculate any clashes (due to 2:1) and return
|
||||||
// ok list of cells to refine.
|
// ok list of cells to refine.
|
||||||
|
|||||||
@ -44,6 +44,7 @@ License
|
|||||||
#include "leastSquaresVectors.H"
|
#include "leastSquaresVectors.H"
|
||||||
#include "CentredFitData.H"
|
#include "CentredFitData.H"
|
||||||
#include "linearFitPolynomial.H"
|
#include "linearFitPolynomial.H"
|
||||||
|
#include "quadraticFitPolynomial.H"
|
||||||
#include "quadraticLinearFitPolynomial.H"
|
#include "quadraticLinearFitPolynomial.H"
|
||||||
#include "skewCorrectionVectors.H"
|
#include "skewCorrectionVectors.H"
|
||||||
|
|
||||||
@ -92,11 +93,12 @@ void Foam::fvMesh::clearGeom()
|
|||||||
// Things geometry dependent that are not updated.
|
// Things geometry dependent that are not updated.
|
||||||
volPointInterpolation::Delete(*this);
|
volPointInterpolation::Delete(*this);
|
||||||
extendedLeastSquaresVectors::Delete(*this);
|
extendedLeastSquaresVectors::Delete(*this);
|
||||||
extendedLeastSquaresVectors::Delete(*this);
|
|
||||||
leastSquaresVectors::Delete(*this);
|
leastSquaresVectors::Delete(*this);
|
||||||
CentredFitData<linearFitPolynomial>::Delete(*this);
|
CentredFitData<linearFitPolynomial>::Delete(*this);
|
||||||
|
CentredFitData<quadraticFitPolynomial>::Delete(*this);
|
||||||
CentredFitData<quadraticLinearFitPolynomial>::Delete(*this);
|
CentredFitData<quadraticLinearFitPolynomial>::Delete(*this);
|
||||||
skewCorrectionVectors::Delete(*this);
|
skewCorrectionVectors::Delete(*this);
|
||||||
|
quadraticFitSnGradData::Delete(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -108,16 +110,18 @@ void Foam::fvMesh::clearAddressing()
|
|||||||
|
|
||||||
volPointInterpolation::Delete(*this);
|
volPointInterpolation::Delete(*this);
|
||||||
extendedLeastSquaresVectors::Delete(*this);
|
extendedLeastSquaresVectors::Delete(*this);
|
||||||
extendedLeastSquaresVectors::Delete(*this);
|
|
||||||
leastSquaresVectors::Delete(*this);
|
leastSquaresVectors::Delete(*this);
|
||||||
CentredFitData<linearFitPolynomial>::Delete(*this);
|
CentredFitData<linearFitPolynomial>::Delete(*this);
|
||||||
|
CentredFitData<quadraticFitPolynomial>::Delete(*this);
|
||||||
CentredFitData<quadraticLinearFitPolynomial>::Delete(*this);
|
CentredFitData<quadraticLinearFitPolynomial>::Delete(*this);
|
||||||
skewCorrectionVectors::Delete(*this);
|
skewCorrectionVectors::Delete(*this);
|
||||||
|
quadraticFitSnGradData::Delete(*this);
|
||||||
|
|
||||||
centredCECCellToFaceStencilObject::Delete(*this);
|
centredCECCellToFaceStencilObject::Delete(*this);
|
||||||
centredCFCCellToFaceStencilObject::Delete(*this);
|
centredCFCCellToFaceStencilObject::Delete(*this);
|
||||||
centredCPCCellToFaceStencilObject::Delete(*this);
|
centredCPCCellToFaceStencilObject::Delete(*this);
|
||||||
centredFECCellToFaceStencilObject::Delete(*this);
|
centredFECCellToFaceStencilObject::Delete(*this);
|
||||||
|
// Is this geometry related - cells distorting to upwind direction?
|
||||||
upwindCECCellToFaceStencilObject::Delete(*this);
|
upwindCECCellToFaceStencilObject::Delete(*this);
|
||||||
upwindCFCCellToFaceStencilObject::Delete(*this);
|
upwindCFCCellToFaceStencilObject::Delete(*this);
|
||||||
upwindCPCCellToFaceStencilObject::Delete(*this);
|
upwindCPCCellToFaceStencilObject::Delete(*this);
|
||||||
@ -597,8 +601,10 @@ Foam::tmp<Foam::scalarField> Foam::fvMesh::movePoints(const pointField& p)
|
|||||||
MeshObjectMovePoints<extendedLeastSquaresVectors>(*this);
|
MeshObjectMovePoints<extendedLeastSquaresVectors>(*this);
|
||||||
MeshObjectMovePoints<leastSquaresVectors>(*this);
|
MeshObjectMovePoints<leastSquaresVectors>(*this);
|
||||||
MeshObjectMovePoints<CentredFitData<linearFitPolynomial> >(*this);
|
MeshObjectMovePoints<CentredFitData<linearFitPolynomial> >(*this);
|
||||||
|
MeshObjectMovePoints<CentredFitData<quadraticFitPolynomial> >(*this);
|
||||||
MeshObjectMovePoints<CentredFitData<quadraticLinearFitPolynomial> >(*this);
|
MeshObjectMovePoints<CentredFitData<quadraticLinearFitPolynomial> >(*this);
|
||||||
MeshObjectMovePoints<skewCorrectionVectors>(*this);
|
MeshObjectMovePoints<skewCorrectionVectors>(*this);
|
||||||
|
MeshObjectMovePoints<quadraticFitSnGradData>(*this);
|
||||||
|
|
||||||
return tsweptVols;
|
return tsweptVols;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,9 @@ P1Coeffs
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Number of flow iterations per radiation iteration
|
||||||
|
solverFreq 1;
|
||||||
|
|
||||||
absorptionEmissionModel constantAbsorptionEmission;
|
absorptionEmissionModel constantAbsorptionEmission;
|
||||||
|
|
||||||
constantAbsorptionEmissionCoeffs
|
constantAbsorptionEmissionCoeffs
|
||||||
|
|||||||
@ -0,0 +1,56 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
object G;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 0 -3 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type MarshakRadiation;
|
||||||
|
T T;
|
||||||
|
emissivity 1;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type MarshakRadiation;
|
||||||
|
T T;
|
||||||
|
emissivity 1;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type MarshakRadiation;
|
||||||
|
T T;
|
||||||
|
emissivity 1;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type MarshakRadiation;
|
||||||
|
T T;
|
||||||
|
emissivity 1;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
object IDefault;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 0 -3 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
".*"
|
||||||
|
{
|
||||||
|
type greyDiffusiveRadiation;
|
||||||
|
T T;
|
||||||
|
emissivity 0.5;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
object T;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 0 1 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 300;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 300.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 300.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 500.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volVectorField;
|
||||||
|
object U;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 1 -1 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform (0 0 0);
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform (0 0 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform (0 0 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform (0 0 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform (0 0 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
/*--------------------------------*- 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 volScalarField;
|
||||||
|
location "0";
|
||||||
|
object alphat;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -1 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type alphatWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type alphatWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type alphatWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type alphatWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
/*--------------------------------*- 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 volScalarField;
|
||||||
|
location "0";
|
||||||
|
object epsilon;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [ 0 2 -3 0 0 0 0 ];
|
||||||
|
|
||||||
|
internalField uniform 0.01;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type compressible::epsilonWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type compressible::epsilonWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type compressible::epsilonWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type compressible::epsilonWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
/*--------------------------------*- 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 volScalarField;
|
||||||
|
location "0";
|
||||||
|
object k;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [ 0 2 -2 0 0 0 0 ];
|
||||||
|
|
||||||
|
internalField uniform 0.1;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type compressible::kQRWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type compressible::kQRWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type compressible::kQRWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type compressible::kQRWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
/*--------------------------------*- 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 volScalarField;
|
||||||
|
location "0";
|
||||||
|
object mut;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [ 1 -1 -1 0 0 0 0 ];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type mutWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type mutWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type mutWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type mutWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
object p;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 100000;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 100000;
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 100000;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 100000;
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 100000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
object pd;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type fixedFluxBuoyantPressure;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type fixedFluxBuoyantPressure;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type fixedFluxBuoyantPressure;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type fixedFluxBuoyantPressure;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,100 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / 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;
|
||||||
|
|
||||||
|
laminarCoeffs
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
kEpsilonCoeffs
|
||||||
|
{
|
||||||
|
Cmu 0.09;
|
||||||
|
C1 1.44;
|
||||||
|
C2 1.92;
|
||||||
|
C3 0.85;
|
||||||
|
alphah 1;
|
||||||
|
alphak 1;
|
||||||
|
alphaEps 0.76923;
|
||||||
|
}
|
||||||
|
|
||||||
|
RNGkEpsilonCoeffs
|
||||||
|
{
|
||||||
|
Cmu 0.0845;
|
||||||
|
C1 1.42;
|
||||||
|
C2 1.68;
|
||||||
|
C3 -0.33;
|
||||||
|
alphah 1;
|
||||||
|
alphak 1.39;
|
||||||
|
alphaEps 1.39;
|
||||||
|
eta0 4.38;
|
||||||
|
beta 0.012;
|
||||||
|
}
|
||||||
|
|
||||||
|
LaunderSharmaKECoeffs
|
||||||
|
{
|
||||||
|
Cmu 0.09;
|
||||||
|
C1 1.44;
|
||||||
|
C2 1.92;
|
||||||
|
C3 -0.33;
|
||||||
|
alphah 1;
|
||||||
|
alphak 1;
|
||||||
|
alphaEps 0.76923;
|
||||||
|
}
|
||||||
|
|
||||||
|
LRRCoeffs
|
||||||
|
{
|
||||||
|
Cmu 0.09;
|
||||||
|
Clrr1 1.8;
|
||||||
|
Clrr2 0.6;
|
||||||
|
C1 1.44;
|
||||||
|
C2 1.92;
|
||||||
|
alphah 1;
|
||||||
|
Cs 0.25;
|
||||||
|
Ceps 0.15;
|
||||||
|
alphaR 1;
|
||||||
|
alphaEps 0.76923;
|
||||||
|
}
|
||||||
|
|
||||||
|
LaunderGibsonRSTMCoeffs
|
||||||
|
{
|
||||||
|
Cmu 0.09;
|
||||||
|
Clg1 1.8;
|
||||||
|
Clg2 0.6;
|
||||||
|
C1 1.44;
|
||||||
|
C2 1.92;
|
||||||
|
alphah 1;
|
||||||
|
C1Ref 0.5;
|
||||||
|
C2Ref 0.3;
|
||||||
|
Cs 0.25;
|
||||||
|
Ceps 0.15;
|
||||||
|
alphaR 1;
|
||||||
|
alphaEps 0.76923;
|
||||||
|
}
|
||||||
|
|
||||||
|
wallFunctionCoeffs
|
||||||
|
{
|
||||||
|
kappa 0.4187;
|
||||||
|
E 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object environmentalProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
g g [ 0 1 -2 0 0 0 0 ] ( 0 0 -9.81 );
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,170 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: http://www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object blockMeshDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
convertToMeters 1;
|
||||||
|
|
||||||
|
vertices
|
||||||
|
(
|
||||||
|
( 0.0 0.0 0.0)
|
||||||
|
( 0.5 0.0 0.0)
|
||||||
|
( 1.5 0.0 0.0)
|
||||||
|
(10.0 0.0 0.0)
|
||||||
|
( 0.0 0.5 0.0)
|
||||||
|
( 0.5 0.5 0.0)
|
||||||
|
( 1.5 0.5 0.0)
|
||||||
|
(10.0 0.5 0.0)
|
||||||
|
( 0.0 1.5 0.0)
|
||||||
|
( 0.5 1.5 0.0)
|
||||||
|
( 1.5 1.5 0.0)
|
||||||
|
(10.0 1.5 0.0)
|
||||||
|
( 0.0 6.0 0.0)
|
||||||
|
( 0.5 6.0 0.0)
|
||||||
|
( 1.5 6.0 0.0)
|
||||||
|
(10.0 6.0 0.0)
|
||||||
|
|
||||||
|
( 0.0 0.0 0.5)
|
||||||
|
( 0.5 0.0 0.5)
|
||||||
|
( 1.5 0.0 0.5)
|
||||||
|
(10.0 0.0 0.5)
|
||||||
|
( 0.0 0.5 0.5)
|
||||||
|
( 0.5 0.5 0.5)
|
||||||
|
( 1.5 0.5 0.5)
|
||||||
|
(10.0 0.5 0.5)
|
||||||
|
( 0.0 1.5 0.5)
|
||||||
|
( 0.5 1.5 0.5)
|
||||||
|
( 1.5 1.5 0.5)
|
||||||
|
(10.0 1.5 0.5)
|
||||||
|
( 0.0 6.0 0.5)
|
||||||
|
( 0.5 6.0 0.5)
|
||||||
|
( 1.5 6.0 0.5)
|
||||||
|
(10.0 6.0 0.5)
|
||||||
|
|
||||||
|
( 0.0 0.0 2.0)
|
||||||
|
( 0.5 0.0 2.0)
|
||||||
|
( 1.5 0.0 2.0)
|
||||||
|
(10.0 0.0 2.0)
|
||||||
|
( 0.0 0.5 2.0)
|
||||||
|
( 0.5 0.5 2.0)
|
||||||
|
( 1.5 0.5 2.0)
|
||||||
|
(10.0 0.5 2.0)
|
||||||
|
( 0.0 1.5 2.0)
|
||||||
|
( 0.5 1.5 2.0)
|
||||||
|
( 1.5 1.5 2.0)
|
||||||
|
(10.0 1.5 2.0)
|
||||||
|
( 0.0 6.0 2.0)
|
||||||
|
( 0.5 6.0 2.0)
|
||||||
|
( 1.5 6.0 2.0)
|
||||||
|
(10.0 6.0 2.0)
|
||||||
|
);
|
||||||
|
|
||||||
|
blocks
|
||||||
|
(
|
||||||
|
hex ( 0 1 5 4 16 17 21 20) ( 5 5 5) simpleGrading (1 1 1)
|
||||||
|
hex ( 1 2 6 5 17 18 22 21) (10 5 5) simpleGrading (1 1 1)
|
||||||
|
hex ( 2 3 7 6 18 19 23 22) (80 5 5) simpleGrading (1 1 1)
|
||||||
|
hex ( 4 5 9 8 20 21 25 24) ( 5 10 5) simpleGrading (1 1 1)
|
||||||
|
hex ( 6 7 11 10 22 23 27 26) (80 10 5) simpleGrading (1 1 1)
|
||||||
|
hex ( 8 9 13 12 24 25 29 28) ( 5 40 5) simpleGrading (1 1 1)
|
||||||
|
hex ( 9 10 14 13 25 26 30 29) (10 40 5) simpleGrading (1 1 1)
|
||||||
|
hex (10 11 15 14 26 27 31 30) (80 40 5) simpleGrading (1 1 1)
|
||||||
|
|
||||||
|
hex (16 17 21 20 32 33 37 36) ( 5 5 15) simpleGrading (1 1 1)
|
||||||
|
hex (17 18 22 21 33 34 38 37) (10 5 15) simpleGrading (1 1 1)
|
||||||
|
hex (18 19 23 22 34 35 39 38) (80 5 15) simpleGrading (1 1 1)
|
||||||
|
hex (20 21 25 24 36 37 41 40) ( 5 10 15) simpleGrading (1 1 1)
|
||||||
|
|
||||||
|
hex (21 22 26 25 37 38 42 41) (10 10 15) simpleGrading (1 1 1)
|
||||||
|
|
||||||
|
hex (22 23 27 26 38 39 43 42) (80 10 15) simpleGrading (1 1 1)
|
||||||
|
hex (24 25 29 28 40 41 45 44) ( 5 40 15) simpleGrading (1 1 1)
|
||||||
|
hex (25 26 30 29 41 42 46 45) (10 40 15) simpleGrading (1 1 1)
|
||||||
|
hex (26 27 31 30 42 43 47 46) (80 40 15) simpleGrading (1 1 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
edges
|
||||||
|
(
|
||||||
|
);
|
||||||
|
|
||||||
|
patches
|
||||||
|
(
|
||||||
|
wall box
|
||||||
|
(
|
||||||
|
( 6 22 21 5)
|
||||||
|
(10 26 22 6)
|
||||||
|
( 9 25 26 10)
|
||||||
|
( 5 21 25 9)
|
||||||
|
(22 26 25 21)
|
||||||
|
)
|
||||||
|
wall floor
|
||||||
|
(
|
||||||
|
( 1 5 4 0)
|
||||||
|
( 2 6 5 1)
|
||||||
|
( 3 7 6 2)
|
||||||
|
( 5 9 8 4)
|
||||||
|
( 7 11 10 6)
|
||||||
|
( 9 13 12 8)
|
||||||
|
(10 14 13 9)
|
||||||
|
(11 15 14 10)
|
||||||
|
)
|
||||||
|
wall ceiling
|
||||||
|
(
|
||||||
|
(33 37 36 32)
|
||||||
|
(34 38 37 33)
|
||||||
|
(35 39 38 34)
|
||||||
|
(37 41 40 36)
|
||||||
|
(38 42 41 37)
|
||||||
|
(39 43 42 38)
|
||||||
|
(41 45 44 40)
|
||||||
|
(42 46 45 41)
|
||||||
|
(43 47 46 42)
|
||||||
|
)
|
||||||
|
wall fixedWalls
|
||||||
|
(
|
||||||
|
( 1 17 16 0)
|
||||||
|
( 2 18 17 1)
|
||||||
|
( 3 19 18 2)
|
||||||
|
(17 33 32 16)
|
||||||
|
(18 34 33 17)
|
||||||
|
(19 35 34 18)
|
||||||
|
|
||||||
|
( 7 23 19 3)
|
||||||
|
(11 27 23 7)
|
||||||
|
(15 31 27 11)
|
||||||
|
(23 39 35 19)
|
||||||
|
(27 43 39 23)
|
||||||
|
(31 47 43 27)
|
||||||
|
|
||||||
|
(14 30 31 15)
|
||||||
|
(13 29 30 14)
|
||||||
|
(12 28 29 13)
|
||||||
|
(30 46 47 31)
|
||||||
|
(29 45 46 30)
|
||||||
|
(28 44 45 29)
|
||||||
|
|
||||||
|
( 8 24 28 12)
|
||||||
|
( 4 20 24 8)
|
||||||
|
( 0 16 20 4)
|
||||||
|
(24 40 44 28)
|
||||||
|
(20 36 40 24)
|
||||||
|
(16 32 36 20)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
mergePatchPairs
|
||||||
|
(
|
||||||
|
);
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
/*--------------------------------*- 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;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
4
|
||||||
|
(
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
nFaces 300;
|
||||||
|
startFace 303675;
|
||||||
|
}
|
||||||
|
floor
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
nFaces 5125;
|
||||||
|
startFace 303975;
|
||||||
|
}
|
||||||
|
ceiling
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
nFaces 5225;
|
||||||
|
startFace 309100;
|
||||||
|
}
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
nFaces 6000;
|
||||||
|
startFace 314325;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object radiationProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
radiation on;
|
||||||
|
|
||||||
|
radiationModel fvDOM;
|
||||||
|
|
||||||
|
noRadiation
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
P1Coeffs
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
fvDOMCoeffs
|
||||||
|
{
|
||||||
|
nPhi 3; // azimuthal angles in PI/2 on X-Y.(from Y to X)
|
||||||
|
nTheta 5; // polar angles in PI (from Z to X-Y plane)
|
||||||
|
convergence 1e-3; // convergence criteria for radiation iteration
|
||||||
|
maxIter 10; // maximum number of iterations
|
||||||
|
}
|
||||||
|
|
||||||
|
// Number of flow iterations per radiation iteration
|
||||||
|
solverFreq 10;
|
||||||
|
|
||||||
|
absorptionEmissionModel constantAbsorptionEmission;
|
||||||
|
|
||||||
|
constantAbsorptionEmissionCoeffs
|
||||||
|
{
|
||||||
|
a a [ 0 -1 0 0 0 0 0 ] 0.01;
|
||||||
|
e e [ 0 -1 0 0 0 0 0 ] 0;
|
||||||
|
E E [ 1 -1 -3 0 0 0 0 ] 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
scatterModel constantScatter;
|
||||||
|
|
||||||
|
constantScatterCoeffs
|
||||||
|
{
|
||||||
|
sigma sigma [ 0 -1 0 0 0 0 0 ] 0;
|
||||||
|
C C [ 0 0 0 0 0 0 0 ] 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object thermophysicalProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
thermoType hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
|
||||||
|
|
||||||
|
mixture air 1 28.9 1000 0 1.8e-05 0.7;
|
||||||
|
|
||||||
|
pRef 100000;
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object controlDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
startFrom latestTime;
|
||||||
|
|
||||||
|
startTime 0;
|
||||||
|
|
||||||
|
stopAt endTime;
|
||||||
|
|
||||||
|
endTime 1000;
|
||||||
|
|
||||||
|
deltaT 1;
|
||||||
|
|
||||||
|
writeControl timeStep;
|
||||||
|
|
||||||
|
writeInterval 100;
|
||||||
|
|
||||||
|
purgeWrite 0;
|
||||||
|
|
||||||
|
writeFormat binary;
|
||||||
|
|
||||||
|
writePrecision 6;
|
||||||
|
|
||||||
|
writeCompression uncompressed;
|
||||||
|
|
||||||
|
timeFormat general;
|
||||||
|
|
||||||
|
timePrecision 6;
|
||||||
|
|
||||||
|
runTimeModifiable yes;
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,70 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / 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
|
||||||
|
{
|
||||||
|
default none;
|
||||||
|
div(phi,U) Gauss upwind;
|
||||||
|
div(phi,h) Gauss upwind;
|
||||||
|
div(phi,k) Gauss upwind;
|
||||||
|
div(phi,epsilon) Gauss upwind;
|
||||||
|
div(phi,R) Gauss upwind;
|
||||||
|
div(R) Gauss linear;
|
||||||
|
div(Ji,Ii_h) Gauss linearUpwind Gauss linear; //Gauss upwind;
|
||||||
|
div((muEff*dev2(grad(U).T()))) Gauss linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
laplacianSchemes
|
||||||
|
{
|
||||||
|
default none;
|
||||||
|
laplacian(muEff,U) Gauss linear corrected;
|
||||||
|
laplacian((rho*(1|A(U))),pd) Gauss linear corrected;
|
||||||
|
laplacian(alphaEff,h) Gauss linear corrected;
|
||||||
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
|
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||||
|
laplacian(DREff,R) Gauss linear corrected;
|
||||||
|
laplacian(gammaRad,G) Gauss linear corrected;
|
||||||
|
}
|
||||||
|
|
||||||
|
interpolationSchemes
|
||||||
|
{
|
||||||
|
default linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
snGradSchemes
|
||||||
|
{
|
||||||
|
default corrected;
|
||||||
|
}
|
||||||
|
|
||||||
|
fluxRequired
|
||||||
|
{
|
||||||
|
default no;
|
||||||
|
pd ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,92 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 1.5 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object fvSolution;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
solvers
|
||||||
|
{
|
||||||
|
pd
|
||||||
|
{
|
||||||
|
solver GAMG;
|
||||||
|
tolerance 1e-06;
|
||||||
|
relTol 0.01;
|
||||||
|
smoother GaussSeidel;
|
||||||
|
cacheAgglomeration true;
|
||||||
|
nCellsInCoarsestLevel 10;
|
||||||
|
agglomerator faceAreaPair;
|
||||||
|
mergeLevels 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
U
|
||||||
|
{
|
||||||
|
solver PBiCG;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance 1e-05;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
h
|
||||||
|
{
|
||||||
|
solver PBiCG;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance 1e-05;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
k
|
||||||
|
{
|
||||||
|
solver PBiCG;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance 1e-05;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
epsilon
|
||||||
|
{
|
||||||
|
solver PBiCG;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance 1e-05;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ii
|
||||||
|
{
|
||||||
|
solver PBiCG;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance 1e-05;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SIMPLE
|
||||||
|
{
|
||||||
|
nNonOrthogonalCorrectors 0;
|
||||||
|
pdRefCell 0;
|
||||||
|
pdRefValue 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
relaxationFactors
|
||||||
|
{
|
||||||
|
rho 1.0;
|
||||||
|
pd 0.3;
|
||||||
|
U 0.7;
|
||||||
|
h 0.7;
|
||||||
|
k 0.7;
|
||||||
|
epsilon 0.7;
|
||||||
|
"ILambda.*" 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -45,6 +45,8 @@ geometry
|
|||||||
fridgeFreezer
|
fridgeFreezer
|
||||||
{
|
{
|
||||||
type searchableSurfaceCollection;
|
type searchableSurfaceCollection;
|
||||||
|
|
||||||
|
mergeSubRegions true;
|
||||||
|
|
||||||
freezer
|
freezer
|
||||||
{
|
{
|
||||||
@ -75,6 +77,8 @@ geometry
|
|||||||
{
|
{
|
||||||
type searchableSurfaceCollection;
|
type searchableSurfaceCollection;
|
||||||
|
|
||||||
|
mergeSubRegions true;
|
||||||
|
|
||||||
seal
|
seal
|
||||||
{
|
{
|
||||||
surface fridgeFreezer;
|
surface fridgeFreezer;
|
||||||
|
|||||||
Reference in New Issue
Block a user