First complete compiled version

This commit is contained in:
Hrvoje Jasak 2010-09-23 14:04:10 +01:00
parent c382fe369c
commit 6489771b11
2288 changed files with 45771 additions and 2333113 deletions

View file

@ -51,7 +51,7 @@ using namespace Foam;
void modifyOrAddFace
(
polyTopoChange& meshMod,
directTopoChange& meshMod,
const face& f,
const label faceI,
const label own,
@ -59,7 +59,6 @@ void modifyOrAddFace
const label newPatchI,
const label zoneID,
const bool zoneFlip,
PackedBoolList& modifiedFace
)
{
@ -398,7 +397,8 @@ int main(int argc, char *argv[])
if (patchWarned.insert(patchI))
{
WarningIn(args.executable())
<< "Found boundary face (in patch " << pp.name()
<< "Found boundary face (in patch "
<< pp.name()
<< ") in faceZone " << fZone.name()
<< " to convert to baffle patch "
<< patches[newPatchI].name()
@ -408,43 +408,23 @@ int main(int argc, char *argv[])
<< " boundary faces." << endl;
}
meshMod.setAction
modifyOrAddFace
(
polyModifyFace
(
f, // modified face
meshMod,
mesh.faces()[faceI], // modified face
faceI, // label of face
mesh.faceOwner()[faceI], // owner
-1, // neighbour
false, // face flip
newPatch[faceI], // patch for face
false, // remove from zone
zoneID, // zone for face
zoneFlip // face flip in zone
)
newPatchI, // patch for face
zoneID.index(), // zone for face
fZone.flipMap()[zoneFaceI], // face flip in zone
modifiedFace // modify or add status
);
if (mesh.isInternalFace(faceI))
{
meshMod.setAction
(
polyAddFace
(
f.reverseFace(), // modified face
mesh.faceNeighbour()[faceI],// owner
-1, // neighbour
-1, // masterPointID
-1, // masterEdgeID
faceI, // masterFaceID,
false, // face flip
newPatch[faceI], // patch for face
zoneID, // zone for face
zoneFlip // face flip in zone
)
);
nModified++;
}
}
}
nBaffled++;
}
}

View file

@ -554,11 +554,12 @@ int main(int argc, char *argv[])
const Switch pointSync(dict.lookup("pointSync"));
// Change tolerance in controlDict instead. HJ, 22/Oct/2008
// Set the matching tolerance so we can read illegal meshes
scalar tol = readScalar(dict.lookup("matchTolerance"));
Info<< "Using relative tolerance " << tol
<< " to match up faces and points" << nl << endl;
// Change tolerancein controlDict instead. HJ, 22/Oct/2008
// scalar tol = readScalar(dict.lookup("matchTolerance"));
// Info<< "Using relative tolerance " << tol
// << " to match up faces and points" << nl << endl;
// polyPatch::matchTol_ = tol;
# include "createNamedPolyMesh.H"
@ -635,10 +636,8 @@ int main(int argc, char *argv[])
(
polyPatch::New
(
patchType,
patchName,
0, // size
startFaceI, // start
patchDict,
destPatchI,
patches
).ptr()

View file

@ -123,7 +123,6 @@ Foam::mergePolyMesh::mergePolyMesh(const IOobject& io)
patchNames_(2*boundaryMesh().size()),
pointZoneNames_(),
faceZoneNames_(),
cellZoneNames_()
cellZoneNames_(),
pointZones_(),
faceZones_(),

View file

@ -88,7 +88,7 @@ labelList regionBandCompression
Pout<< " region " << regionI << " starts at " << cellI << endl;
// Per region do a reordering.
fvMeshSubset subsetter
fvMeshSubset meshSubset
(
IOobject
(
@ -100,11 +100,11 @@ labelList regionBandCompression
),
mesh
);
subsetter.setLargeCellSubset(cellToRegion, regionI);
const fvMesh& subMesh = subsetter.subMesh();
meshSubset.setLargeCellSubset(cellToRegion, regionI);
const fvMesh& subMesh = meshSubset.subMesh();
labelList subCellOrder(bandCompression(subMesh.cellCells()));
const labelList& cellMap = subsetter.cellMap();
const labelList& cellMap = meshSubset.cellMap();
forAll(subCellOrder, i)
{
@ -376,7 +376,6 @@ autoPtr<mapPolyMesh> reorderMesh
int main(int argc, char *argv[])
{
argList::validOptions.insert("blockOrder", "");
argList::validOptions.insert("orderPoints", "");
argList::validOptions.insert("writeMaps", "");
argList::validOptions.insert("overwrite", "");
@ -405,13 +404,6 @@ int main(int argc, char *argv[])
<< endl;
}
const bool orderPoints = args.optionFound("orderPoints");
if (orderPoints)
{
Info<< "Ordering points into internal and boundary points." << nl
<< endl;
}
const bool writeMaps = args.optionFound("writeMaps");
if (writeMaps)
@ -564,7 +556,7 @@ int main(int argc, char *argv[])
false, // inflate
true, // parallel sync
true, // cell ordering
orderPoints // point ordering
false // point ordering
);
}
@ -583,66 +575,8 @@ int main(int argc, char *argv[])
Info<< "Band after renumbering: "
<< returnReduce(band, maxOp<label>()) << nl << endl;
if (orderPoints)
{
// Force edge calculation (since only reason that points would need to
// be sorted)
(void)mesh.edges();
label nTotPoints = returnReduce
(
mesh.nPoints(),
sumOp<label>()
);
label nTotIntPoints = returnReduce
(
mesh.nInternalPoints(),
sumOp<label>()
);
label nTotEdges = returnReduce
(
mesh.nEdges(),
sumOp<label>()
);
label nTotIntEdges = returnReduce
(
mesh.nInternalEdges(),
sumOp<label>()
);
label nTotInt0Edges = returnReduce
(
mesh.nInternal0Edges(),
sumOp<label>()
);
label nTotInt1Edges = returnReduce
(
mesh.nInternal1Edges(),
sumOp<label>()
);
Info<< "Points:" << nl
<< " total : " << nTotPoints << nl
<< " internal: " << nTotIntPoints << nl
<< " boundary: " << nTotPoints-nTotIntPoints << nl
<< "Edges:" << nl
<< " total : " << nTotEdges << nl
<< " internal: " << nTotIntEdges << nl
<< " internal using 0 boundary points: "
<< nTotInt0Edges << nl
<< " internal using 1 boundary points: "
<< nTotInt1Edges-nTotInt0Edges << nl
<< " internal using 2 boundary points: "
<< nTotIntEdges-nTotInt1Edges << nl
<< " boundary: " << nTotEdges-nTotIntEdges << nl
<< endl;
}
// Removed. HJ, 23/Sep/2010
// if (orderPoints)
if (overwrite)
{

View file

@ -23,7 +23,7 @@ License
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description
Manipulate a cell/face/point/ set or zone interactively.
Manipulate a cell/face/point set interactively.
\*---------------------------------------------------------------------------*/
@ -42,16 +42,13 @@ Description
#include "writePatch.H"
#include "writePointSet.H"
#include "IOobjectList.H"
#include "cellZoneSet.H"
#include "faceZoneSet.H"
#include "pointZoneSet.H"
#include <stdio.h>
#if READLINE != 0
# include <readline/readline.h>
# include <readline/history.h>
#include <readline/readline.h>
#include <readline/history.h>
#endif
using namespace Foam;
@ -85,7 +82,6 @@ Istream& selectStream(Istream* is0Ptr, Istream* is1Ptr)
// Copy set
void backup
(
const word& setType,
const polyMesh& mesh,
const word& fromName,
const topoSet& fromSet,
@ -96,7 +92,7 @@ void backup
{
Info<< " Backing up " << fromName << " into " << toName << endl;
topoSet::New(setType, mesh, toName, fromSet)().write();
topoSet::New(mesh, toName, fromSet)().write();
}
}
@ -118,7 +114,7 @@ void backup
IOobject::READ_IF_PRESENT
);
backup(setType, mesh, fromName, fromSet(), toName);
backup(mesh, fromName, fromSet(), toName);
}
@ -250,8 +246,7 @@ void printHelp(Ostream& os)
<< "A set command should be of the following form" << endl
<< endl
<< " cellSet|faceSet|pointSet <setName> <action> <source>"
<< endl
<< endl
<< endl << endl
<< "The <action> is one of" << endl
<< " list - prints the contents of the set" << endl
<< " clear - clears the set" << endl
@ -282,18 +277,6 @@ void printHelp(Ostream& os)
<< "List set:" << endl
<< " cellSet c0 list" << endl
<< endl
<< "Zones can be set using zoneSets from corresponding sets:" << endl
<< " cellZoneSet c0Zone new setToCellZone c0" << endl
<< " faceZoneSet f0Zone new setToFaceZone f0" << endl
<< endl
<< "or if orientation is important:" << endl
<< " faceZoneSet f0Zone new setsToFaceZone f0 c0" << endl
<< endl
<< "ZoneSets can be manipulated using the general actions:" << endl
<< " list - prints the contents of the set" << endl
<< " clear - clears the set" << endl
<< " invert - inverts the set (undefined orientation)"
<< endl
<< " remove - remove the set" << endl
<< endl;
}
@ -337,74 +320,10 @@ void printAllSets(const polyMesh& mesh, Ostream& os)
os << '\t' << set.name() << "\tsize:" << set.size() << endl;
}
}
const cellZoneMesh& cellZones = mesh.cellZones();
if (cellZones.size())
{
os << "cellZones:" << endl;
forAll(cellZones, i)
{
const cellZone& zone = cellZones[i];
os << '\t' << zone.name() << "\tsize:" << zone.size() << endl;
}
}
const faceZoneMesh& faceZones = mesh.faceZones();
if (faceZones.size())
{
os << "faceZones:" << endl;
forAll(faceZones, i)
{
const faceZone& zone = faceZones[i];
os << '\t' << zone.name() << "\tsize:" << zone.size() << endl;
}
}
const pointZoneMesh& pointZones = mesh.pointZones();
if (pointZones.size())
{
os << "pointZones:" << endl;
forAll(pointZones, i)
{
const pointZone& zone = pointZones[i];
os << '\t' << zone.name() << "\tsize:" << zone.size() << endl;
}
}
os << endl;
}
template<class ZoneType>
void removeZone
(
ZoneMesh<ZoneType, polyMesh>& zones,
const word& setName
)
{
label zoneID = zones.findZoneID(setName);
if (zoneID != -1)
{
Info<< "Removing zone " << setName << " at index " << zoneID << endl;
// Shuffle to last position
labelList oldToNew(zones.size());
label newI = 0;
forAll(oldToNew, i)
{
if (i != zoneID)
{
oldToNew[i] = newI++;
}
}
oldToNew[zoneID] = newI;
zones.reorder(oldToNew);
// Remove last element
zones.setSize(zones.size()-1);
zones.clearAddressing();
zones.write();
}
}
// Physically remove a set
void removeSet
(
@ -428,32 +347,6 @@ void removeSet
Info<< "Removing file " << object << endl;
rm(object);
}
// See if zone
if (setType == cellZoneSet::typeName)
{
removeZone
(
const_cast<cellZoneMesh&>(mesh.cellZones()),
setName
);
}
else if (setType == faceZoneSet::typeName)
{
removeZone
(
const_cast<faceZoneMesh&>(mesh.faceZones()),
setName
);
}
else if (setType == pointZoneSet::typeName)
{
removeZone
(
const_cast<pointZoneMesh&>(mesh.pointZones()),
setName
);
}
}
@ -521,7 +414,14 @@ bool doCommand
currentSet.resize(max(currentSet.size(), typSize));
}
if (currentSetPtr.valid())
if (!currentSetPtr.valid())
{
Info<< " Cannot construct/load set "
<< topoSet::localPath(mesh, setName) << endl;
ok = false;
}
else
{
topoSet& currentSet = currentSetPtr();
@ -530,6 +430,12 @@ bool doCommand
<< " Action:" << actionName
<< endl;
if ((r == IOobject::MUST_READ) && (action != topoSetSource::LIST))
{
// currentSet has been read so can make copy.
backup(mesh, setName, currentSet, setName + "_old");
}
switch (action)
{
case topoSetSource::CLEAR:
@ -567,7 +473,6 @@ bool doCommand
(
topoSet::New
(
setType,
mesh,
currentSet.name() + "_old2",
currentSet
@ -786,15 +691,6 @@ commandStatus parseType
{
return VALIDSETCMD;
}
else if
(
setType == "cellZoneSet"
|| setType == "faceZoneSet"
|| setType == "pointZoneSet"
)
{
return VALIDZONECMD;
}
else
{
SeriousErrorIn
@ -803,7 +699,7 @@ commandStatus parseType
", IStringStream&)"
) << "Illegal command " << setType << endl
<< "Should be one of 'help', 'list', 'time' or a set type :"
<< " 'cellSet', 'faceSet', 'pointSet', 'faceZoneSet'"
<< " 'cellSet', 'faceSet', 'pointSet'"
<< endl;
return INVALID;
@ -958,12 +854,12 @@ int main(int argc, char *argv[])
IStringStream is(rawLine + ' ');
// Type: cellSet, faceSet, pointSet, faceZoneSet
// Type: cellSet, faceSet, pointSet
is >> setType;
stat = parseType(runTime, mesh, setType, is);
if (stat == VALIDSETCMD || stat == VALIDZONECMD)
if (stat == VALIDSETCMD)
{
if (is >> setName)
{
@ -979,7 +875,7 @@ int main(int argc, char *argv[])
{
break;
}
else if (stat == VALIDSETCMD || stat == VALIDZONECMD)
else if (stat == VALIDSETCMD)
{
ok = doCommand(mesh, setType, setName, actionName, writeVTK, is);
}

View file

@ -162,6 +162,10 @@ int main(int argc, char *argv[])
IndirectList<face> zoneFaces(mesh.faces(), faces);
// Calculation engine for set of faces in a mesh
typedef PrimitivePatch<face, List, const pointField&> facePatch;
// Addressing on faces only in mesh vertices.
facePatch fPatch(zoneFaces(), mesh.points());

View file

@ -69,7 +69,9 @@ Description
- cellRegionAddressing : ,, cell ,, cell ,,
- faceRegionAddressing : ,, face ,, face in
the original mesh + 'turning index'. For a face in the same orientation
this is the original facelabel+1, for a turned face this is -facelabel-1
this is the original facelabel+1, for a turned face
this is -facelabel-1
\*---------------------------------------------------------------------------*/
#include "SortableList.H"
@ -80,7 +82,8 @@ Description
#include "volFields.H"
#include "faceSet.H"
#include "cellSet.H"
#include "polyTopoChange.H"
#include "directTopoChange.H"
#include "mapPolyMesh.H"
#include "removeCells.H"
#include "EdgeMap.H"
#include "syncTools.H"
@ -414,7 +417,7 @@ void subsetVolFields
tmp<GeoField> tSubFld
(
fvMeshSubset::interpolate
fvMeshSubset::meshToMesh
(
fld,
subMesh,
@ -473,7 +476,7 @@ void subsetSurfaceFields
tmp<GeoField> tSubFld
(
fvMeshSubset::interpolate
fvMeshSubset::meshToMesh
(
fld,
subMesh,
@ -750,7 +753,7 @@ autoPtr<mapPolyMesh> createRegionMesh
// Topology change container. Start off from existing mesh.
polyTopoChange meshMod(mesh);
directTopoChange meshMod(mesh);
// Cell remover engine
removeCells cellRemover(mesh);

View file

@ -68,104 +68,6 @@ Description
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
label addPointZone(const polyMesh& mesh, const word& name)
{
label zoneID = mesh.pointZones().findZoneID(name);
if (zoneID != -1)
{
Info<< "Reusing existing pointZone "
<< mesh.pointZones()[zoneID].name()
<< " at index " << zoneID << endl;
}
else
{
pointZoneMesh& pointZones = const_cast<polyMesh&>(mesh).pointZones();
zoneID = pointZones.size();
Info<< "Adding pointZone " << name << " at index " << zoneID << endl;
pointZones.setSize(zoneID+1);
pointZones.set
(
zoneID,
new pointZone
(
name,
labelList(0),
zoneID,
pointZones
)
);
}
return zoneID;
}
label addFaceZone(const polyMesh& mesh, const word& name)
{
label zoneID = mesh.faceZones().findZoneID(name);
if (zoneID != -1)
{
Info<< "Reusing existing faceZone " << mesh.faceZones()[zoneID].name()
<< " at index " << zoneID << endl;
}
else
{
faceZoneMesh& faceZones = const_cast<polyMesh&>(mesh).faceZones();
zoneID = faceZones.size();
Info<< "Adding faceZone " << name << " at index " << zoneID << endl;
faceZones.setSize(zoneID+1);
faceZones.set
(
zoneID,
new faceZone
(
name,
labelList(0),
boolList(),
zoneID,
faceZones
)
);
}
return zoneID;
}
label addCellZone(const polyMesh& mesh, const word& name)
{
label zoneID = mesh.cellZones().findZoneID(name);
if (zoneID != -1)
{
Info<< "Reusing existing cellZone " << mesh.cellZones()[zoneID].name()
<< " at index " << zoneID << endl;
}
else
{
cellZoneMesh& cellZones = const_cast<polyMesh&>(mesh).cellZones();
zoneID = cellZones.size();
Info<< "Adding cellZone " << name << " at index " << zoneID << endl;
cellZones.setSize(zoneID+1);
cellZones.set
(
zoneID,
new cellZone
(
name,
labelList(0),
zoneID,
cellZones
)
);
}
return zoneID;
}
// Checks whether patch present
void checkPatch(const polyBoundaryMesh& bMesh, const word& name)
{
@ -203,8 +105,6 @@ int main(int argc, char *argv[])
Foam::argList::validOptions.insert("overwrite", "");
Foam::argList::validOptions.insert("toleranceDict", "file with tolerances");
# include "setRootCase.H"
# include "createTime.H"
runTime.functionObjects().off();
@ -268,22 +168,6 @@ int main(int argc, char *argv[])
<< "If this is not the case use the -partial option" << nl << endl;
}
// set up the tolerances for the sliding mesh
dictionary slidingTolerances;
if (args.options().found("toleranceDict"))
{
IOdictionary toleranceFile(
IOobject(
args.options()["toleranceDict"],
runTime.constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
slidingTolerances += toleranceFile;
}
// Check for non-empty master and slave patches
checkPatch(mesh.boundaryMesh(), masterPatchName);
checkPatch(mesh.boundaryMesh(), slavePatchName);
@ -308,21 +192,30 @@ int main(int argc, char *argv[])
polyTopoChanger stitcher(mesh);
stitcher.setSize(1);
mesh.pointZones().clearAddressing();
mesh.faceZones().clearAddressing();
mesh.cellZones().clearAddressing();
DynamicList<pointZone*> pz;
DynamicList<faceZone*> fz;
DynamicList<cellZone*> cz;
if (perfectCover)
{
// Add empty zone for resulting internal faces
label cutZoneID = addFaceZone(mesh, cutZoneName);
mesh.faceZones()[cutZoneID].resetAddressing
fz.append
(
new faceZone
(
cutZoneName,
isf,
boolList(masterPatch.size(), false)
boolList(masterPatch.size(), false),
0,
mesh.faceZones()
)
);
// Note: make sure to add the zones BEFORE constructing polyMeshModifier
// (since looks up various zones at construction time)
Info << "Adding point and face zones" << endl;
mesh.addZones(pz.shrink(), fz.shrink(), cz.shrink());
// Add the perfect interface mesh modifier
stitcher.set
(
@ -340,15 +233,27 @@ int main(int argc, char *argv[])
}
else
{
label pointZoneID = addPointZone(mesh, mergePatchName + "CutPointZone");
mesh.pointZones()[pointZoneID] = labelList(0);
label masterZoneID = addFaceZone(mesh, mergePatchName + "MasterZone");
mesh.faceZones()[masterZoneID].resetAddressing
pz.append
(
new pointZone
(
mergePatchName + "CutPointZone",
labelList(0),
0,
mesh.pointZones()
)
);
fz.append
(
new faceZone
(
mergePatchName + "MasterZone",
isf,
boolList(masterPatch.size(), false)
boolList(masterPatch.size(), false),
0,
mesh.faceZones()
)
);
// Slave patch
@ -365,22 +270,37 @@ int main(int argc, char *argv[])
osf[i] = slavePatch.start() + i;
}
label slaveZoneID = addFaceZone(mesh, mergePatchName + "SlaveZone");
mesh.faceZones()[slaveZoneID].resetAddressing
fz.append
(
new faceZone
(
mergePatchName + "SlaveZone",
osf,
boolList(slavePatch.size(), false)
boolList(slavePatch.size(), false),
1,
mesh.faceZones()
)
);
// Add empty zone for cut faces
label cutZoneID = addFaceZone(mesh, cutZoneName);
mesh.faceZones()[cutZoneID].resetAddressing
fz.append
(
new faceZone
(
cutZoneName,
labelList(0),
boolList(0, false)
boolList(0, false),
2,
mesh.faceZones()
)
);
// Note: make sure to add the zones BEFORE constructing
// polyMeshModifier (since looks up various zones at construction time)
Info << "Adding point and face zones" << endl;
mesh.addZones(pz.shrink(), fz.shrink(), cz.shrink());
// Add the sliding interface mesh modifier
stitcher.set
(
@ -397,14 +317,10 @@ int main(int argc, char *argv[])
masterPatchName,
slavePatchName,
tom, // integral or partial
true // couple/decouple mode
false, // Attach-detach action
intersection::VISIBLE
)
);
static_cast<slidingInterface&>(stitcher[0]).setTolerances
(
slidingTolerances,
true
);
}
@ -445,7 +361,7 @@ int main(int argc, char *argv[])
}
// Execute all polyMeshModifiers
autoPtr<mapPolyMesh> morphMap = stitcher.changeMesh(true);
autoPtr<mapPolyMesh> morphMap = stitcher.changeMesh();
mesh.movePoints(morphMap->preMotionPoints());

View file

@ -346,7 +346,7 @@ int main(int argc, char *argv[])
}
else
{
subsetter.subMesh().setInstance(oldInstance);
meshSubset.subMesh().setInstance(oldInstance);
}
Info<< "Writing subsetted mesh and fields to time " << runTime.timeName()

View file

@ -269,13 +269,12 @@ int main(int argc, char *argv[])
}
else if (args.optionFound("rotateAlongVector"))
{
IStringStream rotateVectorOptions
(
args.optionLookup("rotateAlongVector")
);
vector rotationAxis;
scalar rotationAngle;
vector rotationAxis(rotateVectorOptions);
scalar rotationAngle = readScalar(rotateVectorOptions);
args.optionLookup("rotateAlongVector")()
>> rotationAxis
>> rotationAngle;
tensor T = RodriguesRotation(rotationAxis, rotationAngle);
@ -285,7 +284,7 @@ int main(int argc, char *argv[])
if (args.options().found("rotateFields"))
{
rotateFields(runTime, T);
rotateFields(args, runTime, T);
}
}

View file

@ -255,12 +255,24 @@ void Foam::vtkPV3Foam::convertMeshCellZones
<< zoneName << endl;
}
fvMeshSubset subsetter(mesh);
subsetter.setLargeCellSubset(zMesh[zoneId]);
fvMeshSubset subsetMesh
(
IOobject
(
"set",
mesh.time().constant(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh
);
subsetMesh.setLargeCellSubset(zMesh[zoneId]);
vtkUnstructuredGrid* vtkmesh = volumeVTKMesh
(
subsetter.subMesh(),
subsetMesh.subMesh(),
zonePolyDecomp_[datasetNo]
);
@ -269,17 +281,17 @@ void Foam::vtkPV3Foam::convertMeshCellZones
// superCells + addPointCellLabels must contain global cell ids
inplaceRenumber
(
subsetter.cellMap(),
subsetMesh.cellMap(),
zonePolyDecomp_[datasetNo].superCells()
);
inplaceRenumber
(
subsetter.cellMap(),
subsetMesh.cellMap(),
zonePolyDecomp_[datasetNo].addPointCellLabels()
);
// copy pointMap as well, otherwise pointFields fail
zonePolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
zonePolyDecomp_[datasetNo].pointMap() = subsetMesh.pointMap();
AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
vtkmesh->Delete();
@ -337,12 +349,25 @@ void Foam::vtkPV3Foam::convertMeshCellSets
}
const cellSet cSet(mesh, partName);
fvMeshSubset subsetter(mesh);
subsetter.setLargeCellSubset(cSet);
fvMeshSubset subsetMesh
(
IOobject
(
"set",
mesh.time().constant(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh
);
subsetMesh.setLargeCellSubset(cSet);
vtkUnstructuredGrid* vtkmesh = volumeVTKMesh
(
subsetter.subMesh(),
subsetMesh.subMesh(),
csetPolyDecomp_[datasetNo]
);
@ -351,17 +376,17 @@ void Foam::vtkPV3Foam::convertMeshCellSets
// superCells + addPointCellLabels must contain global cell ids
inplaceRenumber
(
subsetter.cellMap(),
subsetMesh.cellMap(),
csetPolyDecomp_[datasetNo].superCells()
);
inplaceRenumber
(
subsetter.cellMap(),
subsetMesh.cellMap(),
csetPolyDecomp_[datasetNo].addPointCellLabels()
);
// copy pointMap as well, otherwise pointFields fail
csetPolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
csetPolyDecomp_[datasetNo].pointMap() = subsetMesh.pointMap();
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
vtkmesh->Delete();

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2006-7 H. Jasak. All rights reserved
\\ / A nd | Copyright (C) 2010 Hrvoje Jasak
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -25,6 +25,9 @@ License
Application
interFoamPressure
Author
Hrvoje Jasak, Wikki Ltd. All rights reserved.
Description
Calculate static pressure from interFoam results
@ -53,7 +56,7 @@ int main(int argc, char *argv[])
runTime.setTime(Times[startTime], startTime);
# include "createMesh.H"
# include "readEnvironmentalProperties.H"
# include "readGravitationalAcceleration.H"
const dictionary& piso = mesh.solutionDict().subDict("PISO");

View file

@ -54,9 +54,9 @@ setenv ParaView_DIR $ParaView_INST_DIR/platforms/$WM_ARCH$WM_COMPILER
set paraviewPython=$ParaView_DIR/Utilities/VTKPythonWrapping
if ( -r $paraviewPython ) then
if ($?PYTHONPATH) then
setenv PYTHONPATH ${PYTHONPATH}:${paraviewPython}:$ParaView_DIR/lib/${$ParaView_MAJOR}
setenv PYTHONPATH ${PYTHONPATH}:${paraviewPython}:$ParaView_DIR/lib/${ParaView_MAJOR}
else
setenv PYTHONPATH ${paraviewPython}:$ParaView_DIR/lib/${$ParaView_MAJOR}
setenv PYTHONPATH ${paraviewPython}:$ParaView_DIR/lib/${ParaView_MAJOR}
endif
endif

View file

@ -393,6 +393,16 @@ public:
) const;
//- Map surface field
template<class Type>
static tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
meshToMesh
(
const GeometricField<Type, fvsPatchField, surfaceMesh>&,
const fvMesh& sMesh,
const labelList& patchMap,
const labelList& faceMap
);
template<class Type>
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
interpolate
@ -403,7 +413,7 @@ public:
//- Map point field
template<class Type>
static tmp<GeometricField<Type, pointPatchField, pointMesh> >
interpolate
meshToMesh
(
const GeometricField<Type, pointPatchField, pointMesh>&,
const pointMesh& sMesh,

View file

@ -26,8 +26,9 @@ License
#include "fvMeshSubset.H"
#include "calculatedFvPatchFields.H"
#include "emptyFvPatchFields.H"
#include "calculatedFvsPatchFields.H"
#include "emptyFvPatchFields.H"
#include "emptyFvsPatchFields.H"
#include "calculatedPointPatchFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -247,7 +248,137 @@ tmp<GeometricField<Type, fvPatchField, volMesh> > fvMeshSubset::interpolate
template<class Type>
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > fvMeshSubset::interpolate
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
fvMeshSubset::meshToMesh
(
const GeometricField<Type, fvsPatchField, surfaceMesh>& vf,
const fvMesh& sMesh,
const labelList& patchMap,
const labelList& faceMap
)
{
// Create and map the internal-field values
Field<Type> internalField
(
vf.internalField(),
SubList<label>
(
faceMap,
sMesh.nInternalFaces()
)
);
// Create and map the patch field values
PtrList<fvsPatchField<Type> > patchFields(patchMap.size());
forAll (patchFields, patchI)
{
// Set the first one by hand as it corresponds to the
// exposed internal faces. Additional interpolation can be put here
// as necessary.
if (patchMap[patchI] == -1)
{
patchFields.set
(
patchI,
new emptyFvsPatchField<Type>
(
sMesh.boundary()[patchI],
DimensionedField<Type, surfaceMesh>::null()
)
);
}
else
{
// Construct addressing
const fvPatch& subPatch = sMesh.boundary()[patchI];
const fvPatch& basePatch = vf.mesh().boundary()[patchMap[patchI]];
label baseStart = basePatch.patch().start();
label baseSize = basePatch.size();
labelList directAddressing(subPatch.size());
forAll(directAddressing, i)
{
label baseFaceI = faceMap[subPatch.patch().start()+i];
if (baseFaceI >= baseStart && baseFaceI < baseStart+baseSize)
{
directAddressing[i] = baseFaceI-baseStart;
}
else
{
// Mapped from internal face. Do what? Map from element
// 0 for now.
directAddressing[i] = 0;
}
}
patchFields.set
(
patchI,
fvsPatchField<Type>::New
(
vf.boundaryField()[patchMap[patchI]],
sMesh.boundary()[patchI],
DimensionedField<Type, surfaceMesh>::null(),
patchFieldSubset
(
vf.boundaryField()[patchMap[patchI]].size(),
directAddressing
)
)
);
}
}
// Map exposed internal faces. Note: Only nessecary if exposed faces added
// into existing patch but since we don't know that at this point...
forAll(patchFields, patchI)
{
fvsPatchField<Type>& pfld = patchFields[patchI];
label meshFaceI = pfld.patch().patch().start();
forAll(pfld, i)
{
label oldFaceI = faceMap[meshFaceI++];
if (oldFaceI < vf.internalField().size())
{
pfld[i] = vf.internalField()[oldFaceI];
}
}
}
// Create the complete field from the pieces
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tresF
(
new GeometricField<Type, fvsPatchField, surfaceMesh>
(
IOobject
(
"subset"+vf.name(),
sMesh.time().timeName(),
sMesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
sMesh,
vf.dimensions(),
internalField,
patchFields
)
);
return tresF;
}
template<class Type>
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
fvMeshSubset::interpolate
(
const GeometricField<Type, fvsPatchField, surfaceMesh>& vf
) const
@ -423,7 +554,8 @@ fvMeshSubset::interpolate
// Get mesh point on original mesh.
label meshPointI = ptMap[subMeshPoints[localI]];
Map<label>::const_iterator iter = meshPointMap.find(meshPointI);
Map<label>::const_iterator iter =
meshPointMap.find(meshPointI);
if (iter != meshPointMap.end())
{
@ -439,7 +571,10 @@ fvMeshSubset::interpolate
vf.boundaryField()[pm[patchI]],
subPatch,
DimensionedField<Type, pointMesh>::null(),
pointPatchFieldSubset(directAddressing)
pointPatchFieldSubset
(
directAddressing
)
)
);
}

View file

@ -51,8 +51,6 @@ class cellSet
:
public topoSet
{
// Private Member Functions
//- Disallow default bitwise copy construct
@ -75,8 +73,8 @@ public:
(
const polyMesh& mesh,
const word& name,
readOption r=MUST_READ,
writeOption w=NO_WRITE
readOption r = MUST_READ,
writeOption w = NO_WRITE
);
//- Construct empty from size of labelHashSet
@ -85,7 +83,7 @@ public:
const polyMesh& mesh,
const word& name,
const label sizes,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
//- Construct from existing set
@ -103,7 +101,7 @@ public:
const polyMesh& mesh,
const word& name,
const labelHashSet&,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
@ -114,8 +112,8 @@ public:
(
const Time&,
const word& name,
readOption r=MUST_READ,
writeOption w=NO_WRITE
readOption r = MUST_READ,
writeOption w = NO_WRITE
);
//- Construct empty from objectRegistry.
@ -124,7 +122,7 @@ public:
const Time&,
const word& name,
const label size,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
//- Construct from labelHashSet
@ -133,7 +131,7 @@ public:
const Time&,
const word& name,
const labelHashSet&,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);

View file

@ -51,8 +51,6 @@ class faceSet
:
public topoSet
{
public:
//- Runtime type information
@ -70,8 +68,8 @@ public:
(
const polyMesh& mesh,
const word& name,
readOption r=MUST_READ,
writeOption w=NO_WRITE
readOption r = MUST_READ,
writeOption w = NO_WRITE
);
//- Construct from additional size of labelHashSet
@ -80,7 +78,7 @@ public:
const polyMesh& mesh,
const word& name,
const label,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
//- Construct from existing set
@ -89,7 +87,7 @@ public:
const polyMesh& mesh,
const word& name,
const topoSet&,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
//- Construct from additional labelHashSet
@ -98,7 +96,7 @@ public:
const polyMesh& mesh,
const word& name,
const labelHashSet&,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);

View file

@ -51,8 +51,6 @@ class pointSet
:
public topoSet
{
public:
//- Runtime type information
@ -70,8 +68,8 @@ public:
(
const polyMesh& mesh,
const word& name,
readOption r=MUST_READ,
writeOption w=NO_WRITE
readOption r = MUST_READ,
writeOption w = NO_WRITE
);
//- Construct from additional size of labelHashSet
@ -80,7 +78,7 @@ public:
const polyMesh& mesh,
const word& name,
const label,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
//- Construct from additional labelHashSet
@ -98,7 +96,7 @@ public:
const polyMesh& mesh,
const word& name,
const labelHashSet&,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);

View file

@ -53,8 +53,7 @@ autoPtr<topoSet> topoSet::New
)
{
wordConstructorTable::iterator cstrIter =
wordConstructorTablePtr_
->find(setType);
wordConstructorTablePtr_->find(setType);
if (cstrIter == wordConstructorTablePtr_->end())
{
@ -84,8 +83,7 @@ autoPtr<topoSet> topoSet::New
)
{
sizeConstructorTable::iterator cstrIter =
sizeConstructorTablePtr_
->find(setType);
sizeConstructorTablePtr_->find(setType);
if (cstrIter == sizeConstructorTablePtr_->end())
{
@ -107,7 +105,6 @@ autoPtr<topoSet> topoSet::New
// Construct named object from existing set.
autoPtr<topoSet> topoSet::New
(
const word& setType,
const polyMesh& mesh,
const word& name,
const topoSet& set,
@ -115,16 +112,15 @@ autoPtr<topoSet> topoSet::New
)
{
setConstructorTable::iterator cstrIter =
setConstructorTablePtr_
->find(setType);
setConstructorTablePtr_->find(set.type());
if (cstrIter == setConstructorTablePtr_->end())
{
FatalErrorIn
(
"topoSet::New(const word&, "
"const polyMesh&, const word&, const topoSet&, writeOption)"
) << "Unknown set type " << setType
"topoSet::New(const polyMesh&, const word&, "
"const topoSet&, writeOption)"
) << "Unknown set type " << set.type()
<< endl << endl
<< "Valid set types : " << endl
<< setConstructorTablePtr_->toc()

View file

@ -65,7 +65,6 @@ class topoSet
public regIOobject,
public labelHashSet
{
protected:
// Protected Member Functions
@ -182,8 +181,8 @@ public:
const polyMesh& mesh,
const word& wantedType,
const word& name,
readOption r=MUST_READ,
writeOption w=NO_WRITE
readOption r = MUST_READ,
writeOption w = NO_WRITE
);
//- Construct empty from additional size of labelHashSet
@ -192,7 +191,7 @@ public:
const polyMesh& mesh,
const word& name,
const label,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
//- Construct empty from additional labelHashSet
@ -201,7 +200,7 @@ public:
const polyMesh& mesh,
const word& name,
const labelHashSet&,
writeOption w=NO_WRITE
writeOption w = NO_WRITE
);
//- Construct empty from IOobject and size
@ -245,7 +244,6 @@ public:
//- Return a pointer to a new toposet as copy of another toposet
static autoPtr<topoSet> New
(
const word& setType,
const polyMesh& mesh,
const word& name,
const topoSet& set,
@ -286,7 +284,7 @@ public:
Ostream& os,
const primitiveMesh&,
const label maxLen
) const; // = 0;
) const;
//- Write contents.
virtual bool writeData(Ostream&) const;
@ -295,7 +293,7 @@ public:
virtual void updateMesh(const mapPolyMesh& morphMap);
//- Return max allowable index (+1). Not implemented.
virtual label maxSize(const polyMesh& mesh) const; // = 0;
virtual label maxSize(const polyMesh& mesh) const;

View file

@ -1,50 +0,0 @@
/*--------------------------------*- 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 volTensorField;
object B;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform (0 0 0 0 0 0 0 0 0);
boundaryField
{
inlet
{
type fixedValue;
value uniform (0 0 0 0 0 0 0 0 0);
}
outlet
{
type zeroGradient;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type empty;
}
}
// ************************************************************************* //

View file

@ -1,52 +0,0 @@
/*--------------------------------*- 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 Su;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform 0.135;
boundaryField
{
inlet
{
type fixedValue;
value uniform 0.135;
}
outlet
{
type inletOutlet;
inletValue uniform 0.135;
value uniform 0.135;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type empty;
}
}
// ************************************************************************* //

View file

@ -1,54 +0,0 @@
/*--------------------------------*- 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 Tu;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 293;
boundaryField
{
inlet
{
type fixedValue;
value uniform 293;
}
outlet
{
type inletOutlet;
inletValue uniform 293;
value uniform 293;
}
upperWall
{
type fixedValue;
value uniform 293;
}
lowerWall
{
type fixedValue;
value uniform 293;
}
frontAndBack
{
type empty;
}
}
// ************************************************************************* //

View file

@ -1,82 +0,0 @@
/*--------------------------------*- 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 combustionProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
laminarFlameSpeedCorrelation constant;
fuel Propane;
Su Su [0 1 -1 0 0 0 0] 0.135;
SuModel transport;
equivalenceRatio equivalenceRatio [0 0 0 0 0 0 0] 0.6;
sigmaExt sigmaExt [0 0 -1 0 0 0 0] 338;
XiModel transport;
XiCoef XiCoef [0 0 0 0 0 0 0] 0.62;
XiShapeCoef XiShapeCoef [0 0 0 0 0 0 0] 1;
uPrimeCoef uPrimeCoef [0 0 0 0 0 0 0] 1;
GuldersCoeffs
{
Methane
{
W 0.422;
eta 0.15;
xi 5.18;
alpha 2;
beta -0.5;
f 2.3;
}
Propane
{
W 0.446;
eta 0.12;
xi 4.95;
alpha 1.77;
beta -0.2;
f 2.3;
}
IsoOctane
{
W 0.4658;
eta -0.326;
xi 4.48;
alpha 1.56;
beta -0.22;
f 2.3;
}
}
ignite no;
ignitionSites
(
);
ignitionSphereFraction 0;
ignitionThickness ignitionThickness [0 1 0 0 0 0 0] 0;
ignitionCircleFraction 0;
ignitionKernelArea ignitionKernelArea [0 2 0 0 0 0 0] 0;
// ************************************************************************* //

View file

@ -1,41 +0,0 @@
/*--------------------------------*- 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 thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 15.675;
fuel fuel 1 44.0962 200 5000 1000 7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923 0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017 1.67212e-06 170.672;
oxidant oxidant 1 28.8504 200 6000 1000 3.10205 0.00123963 -4.17512e-07 6.60292e-11 -3.87448e-15 -985.517 5.35187 3.58378 -0.0007269 1.66985e-06 -1.08452e-10 -4.31951e-13 -1050.53 3.11223 1.67212e-06 170.672;
reactants reactants 24.8095 29.4649 200 5000 1000 3.28069 0.00195035 -6.53483e-07 1.00239e-10 -5.64653e-15 -1609.55 4.41496 3.47696 0.000367499 1.84866e-06 -9.8993e-10 -3.10214e-14 -1570.81 3.76075 1.67212e-06 170.672;
products products 1 28.3233 200 5000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
burntProducts burntProducts 25.8095 28.3233 200 6000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
/*
thermoType hhuMixtureThermo<homogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 9.286;
reactants reactants 1 28 1330.9 2.133e+06 1.798e-05 0.7;
products products 1 28 1579.9 0 5.016e-05 0.7;
*/
// ************************************************************************* //

View file

@ -1,83 +0,0 @@
/*--------------------------------*- 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 fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phid,p) Gauss linear;
div(phiU,p) Gauss linear;
div(phi,k) Gauss limitedLinear 1;
div(phi,B) Gauss limitedLinear 1;
div(B) Gauss linear;
div(phiXi,Xi) Gauss limitedLinear 1;
div(phiXi,Su) Gauss limitedLinear 1;
div(phiSt,b) Gauss limitedLinear01 1;
div(phi,ft_b_h_hu) Gauss multivariateSelection
{
fu limitedLinear01 1;
ft limitedLinear01 1;
b limitedLinear01 1;
h limitedLinear 1;
hu limitedLinear 1;
};
div(U) Gauss linear;
div((Su*grad(b))) Gauss linear;
div((U+((Su*Xi)*grad(b)))) Gauss linear;
div((muEff*dev2(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default none;
laplacian(muEff,U) Gauss linear corrected;
laplacian(DkEff,k) Gauss linear corrected;
laplacian(DBEff,B) Gauss linear corrected;
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
laplacian(muEff,b) Gauss linear corrected;
laplacian(muEff,ft) Gauss linear corrected;
laplacian(alphaEff,h) Gauss linear corrected;
laplacian(alphaEff,hu) Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
p;
}
// ************************************************************************* //

View file

@ -1,105 +0,0 @@
/*--------------------------------*- 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 fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
rho PCG
{
preconditioner DIC;
tolerance 1e-05;
relTol 0;
};
U PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
p PCG
{
preconditioner DIC;
tolerance 1e-06;
relTol 0;
};
ft PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
fu PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
b PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
Xi PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
Su PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
h PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
hu PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
R PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
k PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
epsilon PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
}
PISO
{
nCorrectors 2;
nNonOrthogonalCorrectors 0;
}
// ************************************************************************* //

View file

@ -1,50 +0,0 @@
/*--------------------------------*- 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 volTensorField;
object B;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform (0 0 0 0 0 0 0 0 0);
boundaryField
{
inlet
{
type fixedValue;
value uniform (0 0 0 0 0 0 0 0 0);
}
outlet
{
type zeroGradient;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type cyclic;
}
}
// ************************************************************************* //

View file

@ -1,52 +0,0 @@
/*--------------------------------*- 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 Su;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform 0.135;
boundaryField
{
inlet
{
type fixedValue;
value uniform 0.135;
}
outlet
{
type inletOutlet;
inletValue uniform 0.135;
value uniform 0.135;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type cyclic;
}
}
// ************************************************************************* //

View file

@ -1,54 +0,0 @@
/*--------------------------------*- 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 Tu;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 293;
boundaryField
{
inlet
{
type fixedValue;
value uniform 293;
}
outlet
{
type inletOutlet;
inletValue uniform 293;
value uniform 293;
}
upperWall
{
type fixedValue;
value uniform 293;
}
lowerWall
{
type fixedValue;
value uniform 293;
}
frontAndBack
{
type cyclic;
}
}
// ************************************************************************* //

View file

@ -1,54 +0,0 @@
/*--------------------------------*- 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 k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type fixedValue;
value uniform 2e-05;
}
outlet
{
type inletOutlet;
inletValue uniform 2e-05;
value uniform 2e-05;
}
upperWall
{
type fixedValue;
value uniform 1e-8;
}
lowerWall
{
type fixedValue;
value uniform 1e-8;
}
frontAndBack
{
type cyclic;
}
}
// ************************************************************************* //

View file

@ -1,90 +0,0 @@
/*--------------------------------*- 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 combustionProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
laminarFlameSpeedCorrelation Gulders;
fuel Propane;
Su Su [0 1 -1 0 0 0 0] 0.135;
SuModel transport;
equivalenceRatio equivalenceRatio [0 0 0 0 0 0 0] 0.6;
sigmaExt sigmaExt [0 0 -1 0 0 0 0] 338;
XiModel transport;
XiCoef XiCoef [0 0 0 0 0 0 0] 0.62;
XiShapeCoef XiShapeCoef [0 0 0 0 0 0 0] 1;
uPrimeCoef uPrimeCoef [0 0 0 0 0 0 0] 1;
GuldersCoeffs
{
Methane
{
W 0.422;
eta 0.15;
xi 5.18;
alpha 2;
beta -0.5;
f 2.3;
}
Propane
{
W 0.446;
eta 0.12;
xi 4.95;
alpha 1.77;
beta -0.2;
f 2.3;
}
IsoOctane
{
W 0.4658;
eta -0.326;
xi 4.48;
alpha 1.56;
beta -0.22;
f 2.3;
}
}
ignite yes;
ignitionSites
(
{
location (0 0 0);
diameter 0.003;
start 0;
duration 0.001;
strength 2;
}
);
ignitionSphereFraction 1;
ignitionThickness ignitionThickness [0 1 0 0 0 0 0] 0;
ignitionCircleFraction 0;
ignitionKernelArea ignitionKernelArea [0 2 0 0 0 0 0] 0;
// ************************************************************************* //

View file

@ -1,153 +0,0 @@
/*--------------------------------*- 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 0.001;
vertices
(
(-20.6 0 0)
(-20.6 2 0)
(-20.6 12.7 0)
(-20.6 25.4 0)
(0 -25.4 0)
(0 -4 0)
(0 0 0)
(0 2 0)
(0 12.7 0)
(0 25.4 0)
(206 -25.4 0)
(206 -8.5 0)
(206 0 0)
(206 8.5 0)
(206 17 0)
(206 25.4 0)
(290 -16.6 0)
(290 -8.3 0)
(290 0 0)
(290 5.5 0)
(290 11 0)
(290 16.6 0)
(-20.6 0 38.1)
(-20.6 2 38.1)
(-20.6 12.7 38.1)
(-20.6 25.4 38.1)
(0 -25.4 38.1)
(0 -4 38.1)
(0 0 38.1)
(0 2 38.1)
(0 12.7 38.1)
(0 25.4 38.1)
(206 -25.4 38.1)
(206 -8.5 38.1)
(206 0 38.1)
(206 8.5 38.1)
(206 17 38.1)
(206 25.4 38.1)
(290 -16.6 38.1)
(290 -8.3 38.1)
(290 0 38.1)
(290 5.5 38.1)
(290 11 38.1)
(290 16.6 38.1)
);
blocks
(
hex (0 6 7 1 22 28 29 23) (18 7 20) simpleGrading (1 1 1)
hex (1 7 8 2 23 29 30 24) (18 10 20) simpleGrading (1 4 1)
hex (2 8 9 3 24 30 31 25) (18 13 20) simpleGrading (1 0.25 1)
hex (4 10 11 5 26 32 33 27) (180 18 20) simpleGrading (2 1 1)
hex (5 11 12 6 27 33 34 28) (180 9 20) simpleGrading (2 1 1)
hex (6 12 13 7 28 34 35 29) (180 7 20) simpleGrading (2 1 1)
hex (7 13 14 8 29 35 36 30) (180 10 20) simpleGrading (2 4 1)
hex (8 14 15 9 30 36 37 31) (180 13 20) simpleGrading (2 0.25 1)
hex (10 16 17 11 32 38 39 33) (25 18 20) simpleGrading (1 1 1)
hex (11 17 18 12 33 39 40 34) (25 9 20) simpleGrading (1 1 1)
hex (12 18 19 13 34 40 41 35) (25 7 20) simpleGrading (1 1 1)
hex (13 19 20 14 35 41 42 36) (25 10 20) simpleGrading (1 4 1)
hex (14 20 21 15 36 42 43 37) (25 13 20) simpleGrading (1 0.25 1)
);
edges
(
);
patches
(
patch inlet
(
(0 22 23 1)
(1 23 24 2)
(2 24 25 3)
)
patch outlet
(
(16 17 39 38)
(17 18 40 39)
(18 19 41 40)
(19 20 42 41)
(20 21 43 42)
)
wall upperWall
(
(3 25 31 9)
(9 31 37 15)
(15 37 43 21)
)
wall lowerWall
(
(0 6 28 22)
(6 5 27 28)
(5 4 26 27)
(4 10 32 26)
(10 16 38 32)
)
cyclic frontAndBack
(
(22 28 29 23)
(23 29 30 24)
(24 30 31 25)
(26 32 33 27)
(27 33 34 28)
(28 34 35 29)
(29 35 36 30)
(30 36 37 31)
(32 38 39 33)
(33 39 40 34)
(34 40 41 35)
(35 41 42 36)
(36 42 43 37)
(0 1 7 6)
(1 2 8 7)
(2 3 9 8)
(4 5 11 10)
(5 6 12 11)
(6 7 13 12)
(7 8 14 13)
(8 9 15 14)
(10 11 17 16)
(11 12 18 17)
(12 13 19 18)
(13 14 20 19)
(14 15 21 20)
)
);
mergePatchPairs
(
);
// ************************************************************************* //

View file

@ -1,41 +0,0 @@
/*--------------------------------*- 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 thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 15.675;
fuel fuel 1 44.0962 200 5000 1000 7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923 0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017 1.67212e-06 170.672;
oxidant oxidant 1 28.8504 200 6000 1000 3.10205 0.00123963 -4.17512e-07 6.60292e-11 -3.87448e-15 -985.517 5.35187 3.58378 -0.0007269 1.66985e-06 -1.08452e-10 -4.31951e-13 -1050.53 3.11223 1.67212e-06 170.672;
reactants reactants 24.8095 29.4649 200 5000 1000 3.28069 0.00195035 -6.53483e-07 1.00239e-10 -5.64653e-15 -1609.55 4.41496 3.47696 0.000367499 1.84866e-06 -9.8993e-10 -3.10214e-14 -1570.81 3.76075 1.67212e-06 170.672;
products products 1 28.3233 200 5000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
burntProducts burntProducts 25.8095 28.3233 200 6000 1000 3.106 0.00179682 -5.94382e-07 9.04998e-11 -5.08033e-15 -11003.7 5.11872 3.49612 0.000650364 -2.08029e-07 1.2291e-09 -7.73697e-13 -11080.3 3.18978 1.67212e-06 170.672;
/*
thermoType hhuMixtureThermo<homogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 9.286;
reactants reactants 1 28 1330.9 2.133e+06 1.798e-05 0.7;
products products 1 28 1579.9 0 5.016e-05 0.7;
*/
// ************************************************************************* //

View file

@ -1,76 +0,0 @@
/*--------------------------------*- 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 controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application Xoodles;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 0.02;
deltaT 5e-06;
writeControl runTime;
writeInterval 0.0005;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression compressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
functions
(
fieldAverage1
{
// Type of functionObject
type fieldAverage;
// Where to load it from (if not already in solver)
functionObjectLibs ("libfieldAverage.so");
// Fields to be averaged - runTime modifiable
fields
(
U
{
mean on;
prime2Mean on;
base time;
}
p
{
mean on;
prime2Mean on;
base time;
}
);
}
);
// ************************************************************************* //

View file

@ -1,105 +0,0 @@
/*--------------------------------*- 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 fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
rho PCG
{
preconditioner DIC;
tolerance 1e-05;
relTol 0;
};
U PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
p PCG
{
preconditioner DIC;
tolerance 1e-06;
relTol 0;
};
ft PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
fu PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
b PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
Xi PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
Su PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
h PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
hu PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
R PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
k PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
epsilon PBiCG
{
preconditioner DILU;
tolerance 1e-05;
relTol 0;
};
}
PISO
{
nCorrectors 2;
nNonOrthogonalCorrectors 0;
}
// ************************************************************************* //

Some files were not shown because too many files have changed in this diff Show more