Merge branch 'master' of ssh://noisy/home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
henry
2009-12-01 12:05:24 +00:00
557 changed files with 3988 additions and 2401 deletions

11
README
View File

@ -2,7 +2,7 @@
#
#+TITLE: OpenFOAM README for version 1.6
#+AUTHOR: OpenCFD Ltd.
#+DATE: July 2009
#+DATE: November 2009
#+LINK: http://www.opencfd.co.uk
#+OPTIONS: author:nil ^:{}
@ -168,9 +168,9 @@
+ rm -rf paraview-3.6.1/platforms
+ ./makeParaView
The PV3FoamReader module is an OpenFOAM utility that can be compiled in the
usual manner as follows:
+ cd $FOAM_UTILITIES/postProcessing/graphics/PV3FoamReader
The PV3blockMeshReader and the PV3FoamReader ParaView plugins are compiled
as usual for OpenFOAM utilities:
+ cd $FOAM_UTILITIES/postProcessing/graphics/PV3Readers/
+ ./Allwclean
+ ./Allwmake
@ -187,7 +187,8 @@
newly built qmake as an argument:
+ ./makeParaView -qmake <path_to_qmake>
The user must then recompile the PV3FoamReader module as normal (see above).
The user must then recompile the PV3blockMeshReader and the
PV3FoamReader plugins as usual (see above).
* Documentation
http://www.OpenFOAM.org/doc

View File

@ -108,8 +108,7 @@ int main()
Info<< " badName(die) => " << findEtcFile("badName", true) << nl
<< endl;
Info<< "\nEnd" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -95,8 +95,7 @@ int main(int argc, char *argv[])
printCleaning(pathName);
}
Info<< "\nEnd" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -102,8 +102,7 @@ int main(int argc, char *argv[])
Info<< "Ostream<< >" << s2 << "<\n";
Info<< "hash:" << hex << string::hash()(s2) << endl;
Info << "End\n" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -131,8 +131,7 @@ int main(int argc, char *argv[])
psf.write();
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -1,215 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 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
Class
Foam::Tuple
Description
A 2 Tuple. Differs from Tuple in that the two elements can be different
type.
\*---------------------------------------------------------------------------*/
#ifndef Tuple_H
#define Tuple_H
#include "Istream.H"
#include "Ostream.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declaration of friend functions and operators
template<class Type1, class Type2>
class Tuple;
template<class Type1, class Type2>
Istream& operator>>(Istream&, Tuple<Type1, Type2>&);
template<class Type1, class Type2>
Ostream& operator<<(Ostream&, const Tuple<Type1, Type2>&);
/*---------------------------------------------------------------------------*\
Class Tuple Declaration
\*---------------------------------------------------------------------------*/
template<class Type1, class Type2>
class Tuple
{
// Private data
Type1 first_;
Type2 second_;
public:
// Constructors
//- Null constructor for lists
inline Tuple()
{}
//- Construct from components
inline Tuple(const Type1& first, const Type2& second)
:
first_(first),
second_(second)
{}
//- Construct from Istream
inline Tuple(Istream& is)
{
// Read beginning of pair
is.readBegin("pair");
is >> first_ >> second_;
// Read end of pair
is.readEnd("pair");
// Check state of Istream
is.check("Tuple::Tuple(Istream&)");
}
// Member Functions
//- Return first
inline Type1 first() const
{
return first_;
}
//- Return first
inline Type1& first()
{
return first_;
}
//- Return second
inline Type2 second() const
{
return second_;
}
//- Return second
inline Type2& second()
{
return second_;
}
//- Return reverse pair
inline Tuple<Type1, Type2> reverseTuple() const
{
return Tuple<Type1, Type2>(second_, first_);
}
// Friend Operators
inline friend bool operator==
(
const Tuple<Type1, Type2>& a,
const Tuple<Type1, Type2>& b
)
{
return
(
(a.first_ == b.first_) && (a.second_ == b.second_)
);
}
inline friend bool operator!=
(
const Tuple<Type1, Type2>& a,
const Tuple<Type1, Type2>& b
)
{
return (!(a == b));
}
// IOstream Operators
friend Istream& operator>> <Type1, Type2>
(
Istream& is,
Tuple<Type1, Type2>& p
);
friend Ostream& operator<< <Type1, Type2>
(
Ostream& os,
const Tuple<Type1, Type2>& p
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
template<class Type1, class Type2>
Istream& operator>>(Istream& is, Tuple<Type1, Type2>& p)
{
// Read beginning of Tuple<Type, Type>
is.readBegin("Tuple<Type, Type>");
is >> p.first_ >> p.second_;
// Read end of Tuple<Type, Type>
is.readEnd("Tuple<Type, Type>");
// Check state of Ostream
is.check("Istream& operator>>(Istream&, Tuple<Type, Type>&)");
return is;
}
template<class Type1, class Type2>
Ostream& operator<<(Ostream& os, const Tuple<Type1, Type2>& p)
{
os << token::BEGIN_LIST
<< p.first_ << token::SPACE
<< p.second_
<< token::END_LIST;
// Check state of Ostream
os.check("Ostream& operator<<(Ostream&, const Tuple<Type, Type>&)");
return os;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -375,7 +375,7 @@ int main(int argc, char *argv[])
bool cellsToSplit = cellsToPyramidise.size();
//List<Tuple<pointField,point> >
// List<Tuple2<pointField,point> >
// cellsToCreate(dict.lookup("cellsToCreate"));
Info<< "Read from " << dict.name() << nl
@ -661,8 +661,7 @@ int main(int argc, char *argv[])
}
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -126,41 +126,41 @@ int main(int argc, char *argv[])
// Create bin0. Have upperlimit as factor times lowerlimit.
bins.append(DynamicList<label>());
lowerLimits.append(sortedVols[0]);
upperLimits.append(1.1*lowerLimits[lowerLimits.size()-1]);
upperLimits.append(1.1 * lowerLimits.last());
forAll(sortedVols, i)
{
if (sortedVols[i] > upperLimits[upperLimits.size()-1])
if (sortedVols[i] > upperLimits.last())
{
// New value outside of current bin
// Shrink old bin.
DynamicList<label>& bin = bins[bins.size()-1];
DynamicList<label>& bin = bins.last();
bin.shrink();
Info<< "Collected " << bin.size() << " elements in bin "
<< lowerLimits[lowerLimits.size()-1] << " .. "
<< upperLimits[upperLimits.size()-1] << endl;
<< lowerLimits.last() << " .. "
<< upperLimits.last() << endl;
// Create new bin.
bins.append(DynamicList<label>());
lowerLimits.append(sortedVols[i]);
upperLimits.append(1.1*lowerLimits[lowerLimits.size()-1]);
upperLimits.append(1.1 * lowerLimits.last());
Info<< "Creating new bin " << lowerLimits[lowerLimits.size()-1]
<< " .. " << upperLimits[upperLimits.size()-1]
Info<< "Creating new bin " << lowerLimits.last()
<< " .. " << upperLimits.last()
<< endl;
}
// Append to current bin.
DynamicList<label>& bin = bins[bins.size()-1];
DynamicList<label>& bin = bins.last();
bin.append(sortedVols.indices()[i]);
}
Info<< endl;
bins[bins.size()-1].shrink();
bins.last().shrink();
bins.shrink();
lowerLimits.shrink();
upperLimits.shrink();
@ -355,8 +355,7 @@ int main(int argc, char *argv[])
<< nl << endl;
}
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -324,7 +324,7 @@ endOfSection {space}")"{space}
// point group type skipped
strtol(endPtr, &endPtr, 16);
pointi = pointGroupStartIndex[pointGroupStartIndex.size()-1];
pointi = pointGroupStartIndex.last();
// reset number of components to default
pointGroupNumberOfComponents = 3;
@ -336,11 +336,11 @@ endOfSection {space}")"{space}
}
Info<< "PointGroup: "
<< pointGroupZoneID[pointGroupZoneID.size()-1]
<< pointGroupZoneID.last()
<< " start: "
<< pointGroupStartIndex[pointGroupStartIndex.size()-1]
<< pointGroupStartIndex.last()
<< " end: "
<< pointGroupEndIndex[pointGroupEndIndex.size()-1] << flush;
<< pointGroupEndIndex.last() << flush;
}
<readNumberOfPoints,readPointGroupData>{endOfSection} {
@ -387,14 +387,14 @@ endOfSection {space}")"{space}
Info<< "done." << endl;
// check read of points
if (pointi != pointGroupEndIndex[pointGroupEndIndex.size()-1]+1)
if (pointi != pointGroupEndIndex.last()+1)
{
Warning
<< "Problem with reading points: " << nl
<< " start index: "
<< pointGroupStartIndex[pointGroupStartIndex.size()-1]
<< pointGroupStartIndex.last()
<< " end index: "
<< pointGroupEndIndex[pointGroupEndIndex.size()-1]
<< pointGroupEndIndex.last()
<< " last points read: " << pointi << nl
<< " on line " << lineNo << endl;
}
@ -440,14 +440,14 @@ endOfSection {space}")"{space}
faceGroupElementType = strtol(endPtr, &endPtr, 16);
facei = faceGroupStartIndex[faceGroupStartIndex.size()-1];
facei = faceGroupStartIndex.last();
Info<< "FaceGroup: "
<< faceGroupZoneID[faceGroupZoneID.size()-1]
<< faceGroupZoneID.last()
<< " start: "
<< faceGroupStartIndex[faceGroupStartIndex.size()-1]
<< faceGroupStartIndex.last()
<< " end: "
<< faceGroupEndIndex[faceGroupEndIndex.size()-1] << flush;
<< faceGroupEndIndex.last() << flush;
}
<readNumberOfFaces,readFaceGroupData>{space}{endOfSection} {
@ -507,14 +507,14 @@ endOfSection {space}")"{space}
Info<< "done." << endl;
// check read of fluentFaces
if (facei != faceGroupEndIndex[faceGroupEndIndex.size()-1]+1)
if (facei != faceGroupEndIndex.last()+1)
{
Warning
<< "Problem with reading fluentFaces: " << nl
<< " start index: "
<< faceGroupStartIndex[faceGroupStartIndex.size()-1]
<< faceGroupStartIndex.last()
<< " end index: "
<< faceGroupEndIndex[faceGroupEndIndex.size()-1]
<< faceGroupEndIndex.last()
<< " last fluentFaces read: " << facei << nl
<< " on line " << lineNo << endl;
}
@ -560,13 +560,13 @@ endOfSection {space}")"{space}
cellGroupType.append(strtol(endPtr, &endPtr, 16));
Info<< "CellGroup: "
<< cellGroupZoneID[cellGroupZoneID.size()-1]
<< cellGroupZoneID.last()
<< " start: "
<< cellGroupStartIndex[cellGroupStartIndex.size()-1]
<< cellGroupStartIndex.last()
<< " end: "
<< cellGroupEndIndex[cellGroupEndIndex.size()-1]
<< cellGroupEndIndex.last()
<< " type: "
<< cellGroupType[cellGroupType.size()-1]
<< cellGroupType.last()
<< endl;
}
@ -587,13 +587,13 @@ endOfSection {space}")"{space}
strtol(endPtr, &endPtr, 16);
Info<< "CellGroup: "
<< cellGroupZoneID[cellGroupZoneID.size()-1]
<< cellGroupZoneID.last()
<< " start: "
<< cellGroupStartIndex[cellGroupStartIndex.size()-1]
<< cellGroupStartIndex.last()
<< " end: "
<< cellGroupEndIndex[cellGroupEndIndex.size()-1]
<< cellGroupEndIndex.last()
<< " type: "
<< cellGroupType[cellGroupType.size()-1]
<< cellGroupType.last()
<< endl;
}
@ -1356,7 +1356,7 @@ int main(int argc, char *argv[])
mesh.write();
Info<< nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -1404,7 +1404,11 @@ int main(int argc, char *argv[])
//it will be put in a default wall boundary
//internal boundaries are simply ignored
if(patchTypes[patchI] != "internal" && !pShapeMesh.isInternalFace(meshFaces[0]))
if
(
patchTypes[patchI] != "internal"
&& !pShapeMesh.isInternalFace(meshFaces[0])
)
{
//first face is external and has valid non-internal type
@ -1729,7 +1733,7 @@ int main(int argc, char *argv[])
}
}
Info<< nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -867,7 +867,7 @@ int main(int argc, char *argv[])
Info<< "Writing polyMesh" << endl;
pShapeMesh.write();
Info<< nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -885,7 +885,7 @@ int main(int argc, char *argv[])
// Now use the patchFaces to patch up the outside faces of the mesh.
// Get the patch for all the outside faces (= default patch added as last)
const polyPatch& pp = mesh.boundaryMesh()[mesh.boundaryMesh().size()-1];
const polyPatch& pp = mesh.boundaryMesh().last();
// Storage for faceZones.
List<DynamicList<label> > zoneFaces(patchFaces.size());

View File

@ -324,13 +324,13 @@ void readCells
cellVerts.append(cellShape(tet, cVerts, true));
cellMaterial.append(physProp);
if (cellVerts[cellVerts.size()-1].size() != cVerts.size())
if (cellVerts.last().size() != cVerts.size())
{
Pout<< "Line:" << is.lineNumber()
<< " element:" << cellI
<< " type:" << feID
<< " collapsed from " << cVerts << nl
<< " to:" << cellVerts[cellVerts.size()-1]
<< " to:" << cellVerts.last()
<< endl;
}
}
@ -347,13 +347,13 @@ void readCells
cellVerts.append(cellShape(prism, cVerts, true));
cellMaterial.append(physProp);
if (cellVerts[cellVerts.size()-1].size() != cVerts.size())
if (cellVerts.last().size() != cVerts.size())
{
Pout<< "Line:" << is.lineNumber()
<< " element:" << cellI
<< " type:" << feID
<< " collapsed from " << cVerts << nl
<< " to:" << cellVerts[cellVerts.size()-1]
<< " to:" << cellVerts.last()
<< endl;
}
}
@ -371,13 +371,13 @@ void readCells
cellVerts.append(cellShape(hex, cVerts, true));
cellMaterial.append(physProp);
if (cellVerts[cellVerts.size()-1].size() != cVerts.size())
if (cellVerts.last().size() != cVerts.size())
{
Pout<< "Line:" << is.lineNumber()
<< " element:" << cellI
<< " type:" << feID
<< " collapsed from " << cVerts << nl
<< " to:" << cellVerts[cellVerts.size()-1]
<< " to:" << cellVerts.last()
<< endl;
}
}
@ -511,7 +511,7 @@ void readDOFS
}
Info<< "For DOF set " << group
<< " named " << patchNames[patchNames.size()-1]
<< " named " << patchNames.last()
<< " trying to read vertex indices."
<< endl;
@ -534,7 +534,7 @@ void readDOFS
}
Info<< "For DOF set " << group
<< " named " << patchNames[patchNames.size()-1]
<< " named " << patchNames.last()
<< " read " << vertices.size() << " vertex indices." << endl;
dofVertices.append(vertices.shrink());

View File

@ -64,7 +64,7 @@ int main(int argc, char *argv[])
Info<< "Writing mesh" << endl;
makeMesh.writeMesh();
Info<< nl << "End" << nl << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -64,7 +64,7 @@ int main(int argc, char *argv[])
Info<< "Writing mesh" << endl;
makeMesh.writeMesh();
Info<< nl << "End" << nl << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -382,7 +382,7 @@ int main(int argc, char *argv[])
}
}
Info<< nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -418,8 +418,8 @@ int main(int argc, char *argv[])
frontPatchFaces.setSize(layerFaces.size());
forAll(backPatchFaces, i)
{
backPatchFaces[i] = layerFaces[i][0];
frontPatchFaces[i] = layerFaces[i][layerFaces[i].size()-1];
backPatchFaces[i] = layerFaces[i].first();
frontPatchFaces[i] = layerFaces[i].last();
}
// Create dummy fvSchemes, fvSolution

View File

@ -1,6 +1,6 @@
EXE_INC = \
/* -g -DFULLDEBUG -O0 */ \
-I$(LIB_SRC)/decompositionMethods/decompositionMethods/lnInclude \
-I$(LIB_SRC)/parallel/decompositionMethods/lnInclude \
-I$(LIB_SRC)/mesh/autoMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/triSurface/lnInclude \

View File

@ -189,7 +189,7 @@ int main(int argc, char *argv[])
currentSet.write();
}
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -186,7 +186,7 @@ int main(int argc, char *argv[])
{
newPatches.append(findPatchID(mesh, patchNames[i]));
Info<< "Using additional patch " << patchNames[i]
<< " at index " << newPatches[newPatches.size()-1] << endl;
<< " at index " << newPatches.last() << endl;
}
}

View File

@ -189,7 +189,7 @@ int main(int argc, char *argv[])
currentSet.write();
}
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -77,7 +77,7 @@ int main(int argc, char *argv[])
masterMesh.merge();
masterMesh.polyMesh::write();
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -189,7 +189,7 @@ int main(int argc, char *argv[])
currentSet.write();
}
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -2,7 +2,7 @@ EXE_INC = \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/decompositionMethods/decompositionMethods/lnInclude
-I$(LIB_SRC)/parallel/decompositionMethods/lnInclude
EXE_LIBS = \
-lmeshTools \

View File

@ -992,7 +992,7 @@ int main(int argc, char *argv[])
delete fileStreamPtr;
}
Pout<< "\nEnd" << endl;
Pout<< "\nEnd\n" << endl;
return 0;
}

View File

@ -341,7 +341,7 @@ int main(int argc, char *argv[])
<< exit(FatalError);
}
Info<< nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -439,7 +439,7 @@ int main(int argc, char *argv[])
}
Info << nl << "End" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -1,7 +1,7 @@
decomposeMesh.C
decomposePar.C
domainDecomposition.C
distributeCells.C
domainDecompositionMesh.C
domainDecompositionDistribute.C
fvFieldDecomposer.C
pointFieldDecomposer.C
lagrangianFieldDecomposer.C

View File

@ -1,5 +1,5 @@
EXE_INC = \
-I$(LIB_SRC)/decompositionMethods/decompositionMethods/lnInclude \
-I$(LIB_SRC)/parallel/decompositionMethods/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude

View File

@ -106,7 +106,6 @@ int main(int argc, char *argv[])
Info<< "Decomposing mesh " << regionName << nl << endl;
}
bool writeCellDist = args.optionFound("cellDist");
bool copyUniform = args.optionFound("copyUniform");
bool decomposeFieldsOnly = args.optionFound("fields");

View File

@ -38,7 +38,7 @@ License
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void domainDecomposition::mark
void Foam::domainDecomposition::mark
(
const labelList& zoneElems,
const label zoneI,
@ -66,7 +66,7 @@ void domainDecomposition::mark
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// from components
domainDecomposition::domainDecomposition(const IOobject& io)
Foam::domainDecomposition::domainDecomposition(const IOobject& io)
:
fvMesh(io),
decompositionDict_
@ -105,13 +105,13 @@ domainDecomposition::domainDecomposition(const IOobject& io)
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
domainDecomposition::~domainDecomposition()
Foam::domainDecomposition::~domainDecomposition()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool domainDecomposition::writeDecomposition()
bool Foam::domainDecomposition::writeDecomposition()
{
Info<< "\nConstructing processor meshes" << endl;

View File

@ -26,7 +26,7 @@ Class
Foam::domainDecomposition
Description
Automatic domain decomposition class for FOAM meshes
Automatic domain decomposition class for finite-volume meshes
SourceFiles
domainDecomposition.C
@ -42,10 +42,8 @@ SourceFiles
#include "PtrList.H"
#include "point.H"
#ifndef namespaceFoam
#define namespaceFoam
using namespace Foam;
#endif
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class domainDecomposition Declaration
@ -165,6 +163,11 @@ public:
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif

View File

@ -33,7 +33,7 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void domainDecomposition::distributeCells()
void Foam::domainDecomposition::distributeCells()
{
Info<< "\nCalculating distribution of cells" << endl;

View File

@ -40,7 +40,7 @@ Description
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void domainDecomposition::decomposeMesh(const bool filterEmptyPatches)
void Foam::domainDecomposition::decomposeMesh(const bool filterEmptyPatches)
{
// Decide which cell goes to which processor
distributeCells();
@ -775,3 +775,5 @@ void domainDecomposition::decomposeMesh(const bool filterEmptyPatches)
sort(globallySharedPoints_);
}
}
// ************************************************************************* //

View File

@ -26,14 +26,10 @@ License
#include "fvFieldDecomposer.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
fvFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer
Foam::fvFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer
(
const unallocLabelList& addressingSlice,
const label addressingOffset
@ -49,7 +45,7 @@ fvFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer
}
fvFieldDecomposer::processorVolPatchFieldDecomposer::
Foam::fvFieldDecomposer::processorVolPatchFieldDecomposer::
processorVolPatchFieldDecomposer
(
const fvMesh& mesh,
@ -97,7 +93,7 @@ processorVolPatchFieldDecomposer
}
fvFieldDecomposer::processorSurfacePatchFieldDecomposer::
Foam::fvFieldDecomposer::processorSurfacePatchFieldDecomposer::
processorSurfacePatchFieldDecomposer
(
const unallocLabelList& addressingSlice
@ -117,7 +113,7 @@ processorSurfacePatchFieldDecomposer
}
fvFieldDecomposer::fvFieldDecomposer
Foam::fvFieldDecomposer::fvFieldDecomposer
(
const fvMesh& completeMesh,
const fvMesh& procMesh,
@ -187,7 +183,7 @@ fvFieldDecomposer::fvFieldDecomposer
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
fvFieldDecomposer::~fvFieldDecomposer()
Foam::fvFieldDecomposer::~fvFieldDecomposer()
{
forAll(patchFieldDecomposerPtrs_, patchi)
{
@ -214,9 +210,4 @@ fvFieldDecomposer::~fvFieldDecomposer()
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -28,16 +28,11 @@ License
#include "processorFvPatchField.H"
#include "processorFvsPatchField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type>
tmp<GeometricField<Type, fvPatchField, volMesh> >
fvFieldDecomposer::decomposeField
Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> >
Foam::fvFieldDecomposer::decomposeField
(
const GeometricField<Type, fvPatchField, volMesh>& field
) const
@ -106,8 +101,8 @@ fvFieldDecomposer::decomposeField
template<class Type>
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
fvFieldDecomposer::decomposeField
Foam::tmp<Foam::GeometricField<Type, Foam::fvsPatchField, Foam::surfaceMesh> >
Foam::fvFieldDecomposer::decomposeField
(
const GeometricField<Type, fvsPatchField, surfaceMesh>& field
) const
@ -217,7 +212,7 @@ fvFieldDecomposer::decomposeField
template<class GeoField>
void fvFieldDecomposer::decomposeFields
void Foam::fvFieldDecomposer::decomposeFields
(
const PtrList<GeoField>& fields
) const
@ -229,8 +224,4 @@ void fvFieldDecomposer::decomposeFields
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -29,16 +29,10 @@ Description
#include "lagrangianFieldDecomposer.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Construct from components
lagrangianFieldDecomposer::lagrangianFieldDecomposer
Foam::lagrangianFieldDecomposer::lagrangianFieldDecomposer
(
const polyMesh& mesh,
const polyMesh& procMesh,
@ -88,6 +82,4 @@ lagrangianFieldDecomposer::lagrangianFieldDecomposer
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -27,15 +27,10 @@ License
#include "lagrangianFieldDecomposer.H"
#include "IOobjectList.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type>
void lagrangianFieldDecomposer::readFields
void Foam::lagrangianFieldDecomposer::readFields
(
const label cloudI,
const IOobjectList& lagrangianObjects,
@ -70,7 +65,8 @@ void lagrangianFieldDecomposer::readFields
template<class Type>
tmp<IOField<Type> > lagrangianFieldDecomposer::decomposeField
Foam::tmp<Foam::IOField<Type> >
Foam::lagrangianFieldDecomposer::decomposeField
(
const word& cloudName,
const IOField<Type>& field
@ -100,7 +96,7 @@ tmp<IOField<Type> > lagrangianFieldDecomposer::decomposeField
template<class GeoField>
void lagrangianFieldDecomposer::decomposeFields
void Foam::lagrangianFieldDecomposer::decomposeFields
(
const word& cloudName,
const PtrList<GeoField>& fields
@ -116,8 +112,4 @@ void lagrangianFieldDecomposer::decomposeFields
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -26,14 +26,9 @@ License
#include "pointFieldDecomposer.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
pointFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer
Foam::pointFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer
(
const pointPatch& completeMeshPatch,
const pointPatch& procMeshPatch,
@ -79,7 +74,7 @@ pointFieldDecomposer::patchFieldDecomposer::patchFieldDecomposer
}
pointFieldDecomposer::pointFieldDecomposer
Foam::pointFieldDecomposer::pointFieldDecomposer
(
const pointMesh& completeMesh,
const pointMesh& procMesh,
@ -114,7 +109,7 @@ pointFieldDecomposer::pointFieldDecomposer
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
pointFieldDecomposer::~pointFieldDecomposer()
Foam::pointFieldDecomposer::~pointFieldDecomposer()
{
forAll(patchFieldDecomposerPtrs_, patchi)
{
@ -128,6 +123,4 @@ pointFieldDecomposer::~pointFieldDecomposer()
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -28,16 +28,11 @@ License
#include "processorPointPatchFields.H"
#include "globalPointPatchFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type>
tmp<GeometricField<Type, pointPatchField, pointMesh> >
pointFieldDecomposer::decomposeField
Foam::tmp<Foam::GeometricField<Type, Foam::pointPatchField, Foam::pointMesh> >
Foam::pointFieldDecomposer::decomposeField
(
const GeometricField<Type, pointPatchField, pointMesh>& field
) const
@ -117,7 +112,7 @@ pointFieldDecomposer::decomposeField
template<class GeoField>
void pointFieldDecomposer::decomposeFields
void Foam::pointFieldDecomposer::decomposeFields
(
const PtrList<GeoField>& fields
) const
@ -131,6 +126,4 @@ void pointFieldDecomposer::decomposeFields
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View File

@ -1,7 +1,3 @@
processorMeshes.C
fvFieldReconstructor.C
pointFieldReconstructor.C
reconstructLagrangianPositions.C
reconstructPar.C
EXE = $(FOAM_APPBIN)/reconstructPar

View File

@ -1,9 +1,11 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/parallel/reconstruct/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lgenericPatchFields \
-llagrangian \
-lmeshTools
-lmeshTools \
-lreconstruct

View File

@ -1,5 +1,5 @@
EXE_INC = \
-I$(LIB_SRC)/decompositionMethods/decompositionMethods/lnInclude \
-I$(LIB_SRC)/parallel/decompositionMethods/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude

View File

@ -33,11 +33,11 @@ Description
Balances mesh and writes new mesh to new time directory.
Can also work like decomposePar:
@verbatim
mkdir processor0
cp -r constant processor0
mpirun -np ddd redistributeMeshPar -parallel
@endverbatim
\*---------------------------------------------------------------------------*/
#include "Field.H"

View File

@ -175,7 +175,7 @@ int main(int argc, char *argv[])
ensightMesh eMesh(mesh, args, binary);
// Set Time to the last time before looking for the lagrangian objects
runTime.setTime(Times[Times.size()-1], Times.size()-1);
runTime.setTime(Times.last(), Times.size()-1);
IOobjectList objects(mesh, runTime.timeName());

View File

@ -8,7 +8,7 @@ HashTable< HashTable<word> > cloudFields;
if (timeDirs.size())
{
IOobjectList objs(mesh, timeDirs[timeDirs.size()-1].name());
IOobjectList objs(mesh, timeDirs.last().name());
forAllConstIter(IOobjectList, objs, fieldIter)
{
@ -34,7 +34,7 @@ if (timeDirs.size())
fileNameList cloudDirs = readDir
(
runTime.path()
/ timeDirs[timeDirs.size()-1].name()
/ timeDirs.last().name()
/ regionPrefix
/ cloud::prefix,
fileName::DIRECTORY
@ -54,7 +54,7 @@ if (timeDirs.size())
IOobjectList objs
(
mesh,
timeDirs[timeDirs.size()-1].name(),
timeDirs.last().name(),
cloud::prefix/cloudName
);

View File

@ -1,6 +1,9 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
if [ "$TEC_360_2009" ]
then
wmake
fi
# ----------------------------------------------------------------- end-of-file

View File

@ -16,6 +16,17 @@
</Documentation>
</StringVectorProperty>
<!-- Send discrete time info to the animation panel -->
<DoubleVectorProperty
name="TimestepValues"
repeatable="1"
information_only="1">
<TimeStepsInformationHelper/>
<Documentation>
Available timestep values.
</Documentation>
</DoubleVectorProperty>
<!-- Cache Mesh check-box -->
<IntVectorProperty
name="UiCacheMesh"
@ -30,20 +41,33 @@
</Documentation>
</IntVectorProperty>
<!-- Send discrete time info to the animation panel -->
<DoubleVectorProperty
name="TimestepValues"
repeatable="1"
information_only="1">
<TimeStepsInformationHelper/>
<!-- Refresh button -->
<IntVectorProperty
name="UiRefresh"
command="SetRefresh"
number_of_elements="1"
is_internal="0"
default_values="0"
animateable="0">
<BooleanDomain name="bool"/>
<Documentation>
Available timestep values.
Rescan for updated timesteps/fields.
</Documentation>
</DoubleVectorProperty>
</IntVectorProperty>
<!-- Global settings -->
<!-- Skip Zero Time check-box -->
<IntVectorProperty
name="UiZeroTime"
command="SetSkipZeroTime"
number_of_elements="1"
is_internal="1"
default_values="0"
animateable="0">
<BooleanDomain name="bool"/>
<Documentation>
Skip including the 0/ time directory
</Documentation>
</IntVectorProperty>
<!-- Extrapolate Patches check-box -->
<IntVectorProperty
@ -60,22 +84,24 @@
<!-- Include Sets check-box -->
<IntVectorProperty
name="IncludeSets"
name="UiIncludeSets"
command="SetIncludeSets"
number_of_elements="1"
is_internal="1"
default_values="0"
animateable="0">
<Documentation>
Searches the polyMesh/sets/ directory
Search the polyMesh/sets/ directory
</Documentation>
<BooleanDomain name="bool"/>
</IntVectorProperty>
<!-- Include Zones check-box -->
<IntVectorProperty
name="IncludeZones"
name="UiIncludeZones"
command="SetIncludeZones"
number_of_elements="1"
is_internal="1"
default_values="0"
animateable="0">
<Documentation>
@ -95,7 +121,7 @@
animateable="0">
<BooleanDomain name="bool"/>
<Documentation>
Show patch names in render window.
Show patch names in render window
</Documentation>
</IntVectorProperty>
@ -112,12 +138,13 @@
</Documentation>
</IntVectorProperty>
<!-- Selections -->
<!--
| Selections
-->
<!-- Available Parts (volume, patches, lagrangian) array -->
<StringVectorProperty
name="PartArrayInfo"
name="PartArrayStatus"
information_only="1">
<ArraySelectionInformationHelper attribute_name="Part"/>
</StringVectorProperty>
@ -129,18 +156,21 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
information_property="PartArrayInfo"
information_property="PartArrayStatus"
animateable="0">
<ArraySelectionDomain name="array_list">
<RequiredProperties>
<Property name="PartArrayInfo" function="ArrayList"/>
<Property name="PartArrayStatus" function="ArrayList"/>
</RequiredProperties>
</ArraySelectionDomain>
<Documentation>
This property contains a list of the mesh parts (patches, sets, zones).
</Documentation>
</StringVectorProperty>
<!-- Available volFields array -->
<StringVectorProperty
name="VolFieldArrayInfo"
name="VolFieldArrayStatus"
information_only="1">
<ArraySelectionInformationHelper attribute_name="VolField"/>
</StringVectorProperty>
@ -152,18 +182,21 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
information_property="VolFieldArrayInfo"
information_property="VolFieldArrayStatus"
animateable="0">
<ArraySelectionDomain name="array_list">
<RequiredProperties>
<Property name="VolFieldArrayInfo" function="ArrayList"/>
<Property name="VolFieldArrayStatus" function="ArrayList"/>
</RequiredProperties>
</ArraySelectionDomain>
<Documentation>
This property contains a list of the volume fields
</Documentation>
</StringVectorProperty>
<!-- Available Lagrangian fields array -->
<StringVectorProperty
name="LagrangianFieldArrayInfo"
name="LagrangianFieldArrayStatus"
information_only="1">
<ArraySelectionInformationHelper attribute_name="LagrangianField"/>
</StringVectorProperty>
@ -175,18 +208,21 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
information_property="LagrangianFieldArrayInfo"
information_property="LagrangianFieldArrayStatus"
animateable="0">
<ArraySelectionDomain name="array_list">
<RequiredProperties>
<Property name="LagrangianFieldArrayInfo" function="ArrayList"/>
<Property name="LagrangianFieldArrayStatus" function="ArrayList"/>
</RequiredProperties>
</ArraySelectionDomain>
<Documentation>
This property contains a list of the lagrangian fields
</Documentation>
</StringVectorProperty>
<!-- Available pointFields array -->
<StringVectorProperty
name="PointFieldArrayInfo"
name="PointFieldArrayStatus"
information_only="1">
<ArraySelectionInformationHelper attribute_name="PointField"/>
</StringVectorProperty>
@ -198,19 +234,26 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
information_property="PointFieldArrayInfo"
information_property="PointFieldArrayStatus"
animateable="0">
<ArraySelectionDomain name="array_list">
<RequiredProperties>
<Property name="PointFieldArrayInfo" function="ArrayList"/>
<Property name="PointFieldArrayStatus" function="ArrayList"/>
</RequiredProperties>
</ArraySelectionDomain>
<Documentation>
This property contains a list of the point fields
</Documentation>
</StringVectorProperty>
<Hints>
<Property name="FileName" show="0"/>
<Property name="UiCacheMesh" show="0"/>
<Property name="UiZeroTime" show="0"/>
<Property name="UiRefresh" show="0"/>
<Property name="UiShowPatchNames" show="0"/>
<Property name="UiIncludeSets" show="0"/>
<Property name="UiIncludeZones" show="0"/>
</Hints>

View File

@ -32,6 +32,7 @@ License
#include <QLabel>
#include <QLayout>
#include <QString>
#include <QPushButton>
#include <QtDebug>
// Paraview <-> QT UI
@ -56,22 +57,75 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
QWidget *p
)
:
pqAutoGeneratedObjectPanel(proxy, p),
sourceProxy_(vtkSMSourceProxy::SafeDownCast(this->proxy()))
pqAutoGeneratedObjectPanel(proxy, p)
{
// create first sublayout (at top of the panel)
QGridLayout *sect1 = new QGridLayout();
this->PanelLayout->addLayout(sect1, 0, 0, 1, -1);
QGridLayout *form = new QGridLayout();
this->PanelLayout->addLayout(form, 0, 0, 1, -1);
vtkSMProperty* prop = 0;
// refresh button for updating times/fields
if ((prop = this->proxy()->GetProperty("UiRefresh")) != 0)
{
prop->SetImmediateUpdate(1);
QPushButton *refresh = new QPushButton("Refresh Times");
refresh->setToolTip("Rescan for updated times/fields.");
form->addWidget(refresh, 0, 0, Qt::AlignLeft);
QObject::connect
(
refresh,
SIGNAL(clicked()),
this,
SLOT(RefreshPressed())
);
}
// checkbox for skip zeroTime
if ((prop = this->proxy()->GetProperty("UiZeroTime")) != 0)
{
// immediate update on the Server Manager side
prop->SetImmediateUpdate(true);
ZeroTime_ = new QCheckBox("Skip Zero Time");
ZeroTime_->setChecked
(
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
);
ZeroTime_->setToolTip
(
"Skip including the 0/ time directory."
);
form->addWidget(ZeroTime_, 0, 1, Qt::AlignLeft);
connect
(
ZeroTime_,
SIGNAL(stateChanged(int)),
this,
SLOT(ZeroTimeToggled())
);
}
// checkbox for caching mesh
if ((prop = this->proxy()->GetProperty("UiCacheMesh")) != 0)
{
// immediate update on the Server Manager side
prop->SetImmediateUpdate(true);
CacheMesh_ = new QCheckBox("Cache Mesh");
CacheMesh_->setChecked(true);
// checkbox for caching mesh
ShowPatchNames_ = new QCheckBox("Show Patch Names");
ShowPatchNames_->setChecked(false);
CacheMesh_->setChecked
(
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
);
CacheMesh_->setToolTip
(
"Cache the fvMesh in memory."
);
form->addWidget(CacheMesh_, 1, 0, Qt::AlignLeft);
connect
(
CacheMesh_,
@ -79,7 +133,27 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
this,
SLOT(CacheMeshToggled())
);
}
// checkbox for patch names
if ((prop = this->proxy()->GetProperty("UiShowPatchNames")) != 0)
{
// immediate update on the Server Manager side
prop->SetImmediateUpdate(true);
ShowPatchNames_ = new QCheckBox("Patch Names");
ShowPatchNames_->setChecked
(
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
);
ShowPatchNames_->setToolTip
(
"Show patch names in render window."
);
// row/col 0,1
form->addWidget(ShowPatchNames_, 1, 1, Qt::AlignLeft);
connect
(
ShowPatchNames_,
@ -87,20 +161,65 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
this,
SLOT(ShowPatchNamesToggled())
);
sect1->addWidget(CacheMesh_);
sect1->addWidget(ShowPatchNames_);
}
// checkbox for include sets
if ((prop = this->proxy()->GetProperty("UiIncludeSets")) != 0)
{
// immediate update on the Server Manager side
vtkSMIntVectorProperty::SafeDownCast
prop->SetImmediateUpdate(true);
IncludeSets_ = new QCheckBox("Include Sets");
IncludeSets_->setChecked
(
sourceProxy_->GetProperty("UiCacheMesh")
)->SetImmediateUpdate(true);
vtkSMIntVectorProperty::SafeDownCast
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
);
IncludeSets_->setToolTip
(
sourceProxy_->GetProperty("UiShowPatchNames")
)->SetImmediateUpdate(true);
"Search the polyMesh/sets/ directory."
);
// row/col 1,0
form->addWidget(IncludeSets_, 2, 0, Qt::AlignLeft);
connect
(
IncludeSets_,
SIGNAL(stateChanged(int)),
this,
SLOT(IncludeSetsToggled())
);
}
// checkbox for include zones
if ((prop = this->proxy()->GetProperty("UiIncludeZones")) != 0)
{
// immediate update on the Server Manager side
prop->SetImmediateUpdate(true);
IncludeZones_ = new QCheckBox("Include Zones");
IncludeZones_->setChecked
(
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
);
IncludeZones_->setToolTip
(
"ZoneMesh information is used to find {cell,face,point}Zones. "
"The polyMesh/ directory is only checked on startup."
);
// row/col 1,1
form->addWidget(IncludeZones_, 2, 1, Qt::AlignLeft);
connect
(
IncludeZones_,
SIGNAL(stateChanged(int)),
this,
SLOT(IncludeZonesToggled())
);
}
}
@ -110,16 +229,43 @@ void pqPV3FoamReaderPanel::CacheMeshToggled()
{
vtkSMIntVectorProperty::SafeDownCast
(
sourceProxy_->GetProperty("UiCacheMesh")
this->proxy()->GetProperty("UiCacheMesh")
)->SetElement(0, CacheMesh_->isChecked());
}
void pqPV3FoamReaderPanel::RefreshPressed()
{
// update everything
vtkSMIntVectorProperty::SafeDownCast
(
this->proxy()->GetProperty("UiRefresh")
)->Modified();
vtkSMSourceProxy::SafeDownCast(this->proxy())->UpdatePipeline();
// render all views
pqApplicationCore::instance()->render();
}
void pqPV3FoamReaderPanel::ZeroTimeToggled()
{
vtkSMIntVectorProperty::SafeDownCast
(
this->proxy()->GetProperty("UiZeroTime")
)->SetElement(0, ZeroTime_->isChecked());
// update everything
RefreshPressed();
}
void pqPV3FoamReaderPanel::ShowPatchNamesToggled()
{
vtkSMIntVectorProperty::SafeDownCast
(
sourceProxy_->GetProperty("UiShowPatchNames")
this->proxy()->GetProperty("UiShowPatchNames")
)->SetElement(0, ShowPatchNames_->isChecked());
// update the active view
@ -132,4 +278,37 @@ void pqPV3FoamReaderPanel::ShowPatchNamesToggled()
}
void pqPV3FoamReaderPanel::IncludeSetsToggled()
{
vtkSMProperty* prop;
vtkSMIntVectorProperty::SafeDownCast
(
this->proxy()->GetProperty("UiIncludeSets")
)->SetElement(0, IncludeSets_->isChecked());
if ((prop = this->proxy()->GetProperty("PartArrayStatus")) != 0)
{
this->proxy()->UpdatePropertyInformation(prop);
}
}
void pqPV3FoamReaderPanel::IncludeZonesToggled()
{
vtkSMProperty* prop;
vtkSMIntVectorProperty::SafeDownCast
(
this->proxy()->GetProperty("UiIncludeZones")
)->SetElement(0, IncludeZones_->isChecked());
if ((prop = this->proxy()->GetProperty("PartArrayStatus")) != 0)
{
this->proxy()->UpdatePropertyInformation(prop);
}
}
// ************************************************************************* //

View File

@ -37,6 +37,7 @@ SourceFiles
#ifndef pqPV3FoamReaderPanel_h
#define pqPV3FoamReaderPanel_h
#include "pqAutoGeneratedObjectPanel.h"
// Forward declaration of QT classes
@ -62,8 +63,8 @@ class pqPV3FoamReaderPanel
Q_OBJECT;
typedef pqAutoGeneratedObjectPanel Superclass;
//- Server Manager Source Proxy
vtkSMSourceProxy* sourceProxy_;
//- ZeroTime checkbox
QCheckBox* ZeroTime_;
//- CacheMesh checkbox
QCheckBox* CacheMesh_;
@ -71,10 +72,20 @@ class pqPV3FoamReaderPanel
//- Show Patch Names checkbox
QCheckBox* ShowPatchNames_;
//- IncludeSets checkbox
QCheckBox* IncludeSets_;
//- IncludeZones checkbox
QCheckBox* IncludeZones_;
protected slots:
void CacheMeshToggled();
void ZeroTimeToggled();
void RefreshPressed();
void ShowPatchNamesToggled();
void IncludeSetsToggled();
void IncludeZonesToggled();
public:

View File

@ -79,7 +79,9 @@ vtkPV3FoamReader::vtkPV3FoamReader()
TimeStepRange[1] = 0;
CacheMesh = 1;
Refresh = 0;
SkipZeroTime = 0;
ExtrapolatePatches = 0;
IncludeSets = 0;
IncludeZones = 0;
@ -336,7 +338,6 @@ int vtkPV3FoamReader::RequestData
foamData_->setTime(nRequestTime, requestTime);
}
vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast
(
outputVector->GetInformationObject(0)->Get
@ -420,7 +421,39 @@ int vtkPV3FoamReader::RequestData
}
void vtkPV3FoamReader::SetShowPatchNames(const int val)
void vtkPV3FoamReader::SetRefresh(int val)
{
Modified();
}
void vtkPV3FoamReader::SetIncludeSets(int val)
{
if (IncludeSets != val)
{
IncludeSets = val;
if (foamData_)
{
foamData_->updateInfo();
}
}
}
void vtkPV3FoamReader::SetIncludeZones(int val)
{
if (IncludeZones != val)
{
IncludeZones = val;
if (foamData_)
{
foamData_->updateInfo();
}
}
}
void vtkPV3FoamReader::SetShowPatchNames(int val)
{
if (ShowPatchNames != val)
{
@ -430,7 +463,6 @@ void vtkPV3FoamReader::SetShowPatchNames(const int val)
}
void vtkPV3FoamReader::updatePatchNamesView(const bool show)
{
pqApplicationCore* appCore = pqApplicationCore::instance();
@ -452,7 +484,7 @@ void vtkPV3FoamReader::updatePatchNamesView(const bool show)
// Get all the pqRenderView instances
QList<pqRenderView*> renderViews = smModel->findItems<pqRenderView*>();
for (int viewI=0; viewI<renderViews.size(); viewI++)
for (int viewI=0; viewI < renderViews.size(); ++viewI)
{
foamData_->renderPatchNames
(
@ -521,7 +553,8 @@ int vtkPV3FoamReader::GetPartArrayStatus(const char* name)
void vtkPV3FoamReader::SetPartArrayStatus(const char* name, int status)
{
vtkDebugMacro(<<"SetPartArrayStatus");
vtkDebugMacro("Set mesh part \"" << name << "\" status to: " << status);
if (status)
{
PartSelection->EnableArray(name);

View File

@ -83,6 +83,15 @@ public:
vtkSetMacro(CacheMesh, int);
vtkGetMacro(CacheMesh, int);
// Description:
// FOAM refresh times/fields
virtual void SetRefresh(int);
// Description:
// FOAM Skip/include the 0/ time directory
vtkSetMacro(SkipZeroTime, int);
vtkGetMacro(SkipZeroTime, int);
// Description:
// GUI update control
vtkSetMacro(UpdateGUI, int);
@ -93,13 +102,14 @@ public:
vtkSetMacro(ExtrapolatePatches, int);
vtkGetMacro(ExtrapolatePatches, int);
// Description:
// FOAM read sets control
vtkSetMacro(IncludeSets, int);
virtual void SetIncludeSets(int);
vtkGetMacro(IncludeSets, int);
// Description:
// FOAM read zones control
vtkSetMacro(IncludeZones, int);
virtual void SetIncludeZones(int);
vtkGetMacro(IncludeZones, int);
// Description:
@ -113,7 +123,7 @@ public:
// Description:
// Parts selection list control
vtkDataArraySelection* GetPartSelection();
virtual vtkDataArraySelection* GetPartSelection();
int GetNumberOfPartArrays();
int GetPartArrayStatus(const char* name);
void SetPartArrayStatus(const char* name, int status);
@ -121,7 +131,7 @@ public:
// Description:
// volField selection list control
vtkDataArraySelection* GetVolFieldSelection();
virtual vtkDataArraySelection* GetVolFieldSelection();
int GetNumberOfVolFieldArrays();
int GetVolFieldArrayStatus(const char* name);
void SetVolFieldArrayStatus(const char* name, int status);
@ -129,7 +139,7 @@ public:
// Description:
// pointField selection list control
vtkDataArraySelection* GetPointFieldSelection();
virtual vtkDataArraySelection* GetPointFieldSelection();
int GetNumberOfPointFieldArrays();
int GetPointFieldArrayStatus(const char* name);
void SetPointFieldArrayStatus(const char* name, int status);
@ -137,7 +147,7 @@ public:
// Description:
// lagrangianField selection list control
vtkDataArraySelection* GetLagrangianFieldSelection();
virtual vtkDataArraySelection* GetLagrangianFieldSelection();
int GetNumberOfLagrangianFieldArrays();
int GetLagrangianFieldArrayStatus(const char* name);
void SetLagrangianFieldArrayStatus(const char* name, int status);
@ -156,7 +166,6 @@ public:
void SelectionModified();
protected:
//- Construct null
@ -185,9 +194,10 @@ protected:
//- Fill in additional port information
virtual int FillOutputPortInformation(int, vtkInformation*);
// The observer to modify this object when array selections are modified
//- The observer to modify this object when array selections are modified
vtkCallbackCommand* SelectionObserver;
//- The file name for this case
char* FileName;
private:
@ -202,14 +212,16 @@ private:
void updatePatchNamesView(const bool show);
int TimeStepRange[2];
int Refresh;
int CacheMesh;
int SkipZeroTime;
int ExtrapolatePatches;
int IncludeSets;
int IncludeZones;
int ShowPatchNames;
//- Dummy variable/switch for invoke a reader update
//- Dummy variable/switch to invoke a reader update
int UpdateGUI;
vtkDataArraySelection* PartSelection;

View File

@ -50,16 +50,16 @@ defineTypeNameAndDebug(Foam::vtkPV3Foam, 0);
void Foam::vtkPV3Foam::resetCounters()
{
// Reset mesh part ids and sizes
partInfoVolume_.reset();
partInfoPatches_.reset();
partInfoLagrangian_.reset();
partInfoCellZones_.reset();
partInfoFaceZones_.reset();
partInfoPointZones_.reset();
partInfoCellSets_.reset();
partInfoFaceSets_.reset();
partInfoPointSets_.reset();
// Reset array range information (ids and sizes)
arrayRangeVolume_.reset();
arrayRangePatches_.reset();
arrayRangeLagrangian_.reset();
arrayRangeCellZones_.reset();
arrayRangeFaceZones_.reset();
arrayRangePointZones_.reset();
arrayRangeCellSets_.reset();
arrayRangeFaceSets_.reset();
arrayRangePointSets_.reset();
}
@ -92,21 +92,6 @@ void Foam::vtkPV3Foam::reduceMemory()
int Foam::vtkPV3Foam::setTime(int nRequest, const double requestTimes[])
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3Foam::setTime(";
for (int requestI = 0; requestI < nRequest; ++requestI)
{
if (requestI)
{
Info<< ", ";
}
Info<< requestTimes[requestI];
}
Info << ") - previousIndex = " << timeIndex_ << endl;
}
Time& runTime = dbPtr_();
// Get times list
@ -128,6 +113,22 @@ int Foam::vtkPV3Foam::setTime(int nRequest, const double requestTimes[])
nearestIndex = 0;
}
if (debug)
{
Info<< "<beg> Foam::vtkPV3Foam::setTime(";
for (int requestI = 0; requestI < nRequest; ++requestI)
{
if (requestI)
{
Info<< ", ";
}
Info<< requestTimes[requestI];
}
Info<< ") - previousIndex = " << timeIndex_
<< ", nearestIndex = " << nearestIndex << endl;
}
// see what has changed
if (timeIndex_ != nearestIndex)
@ -230,15 +231,15 @@ Foam::vtkPV3Foam::vtkPV3Foam
timeIndex_(-1),
meshChanged_(true),
fieldsChanged_(true),
partInfoVolume_("unzoned"),
partInfoPatches_("patches"),
partInfoLagrangian_("lagrangian"),
partInfoCellZones_("cellZone"),
partInfoFaceZones_("faceZone"),
partInfoPointZones_("pointZone"),
partInfoCellSets_("cellSet"),
partInfoFaceSets_("faceSet"),
partInfoPointSets_("pointSet")
arrayRangeVolume_("unzoned"),
arrayRangePatches_("patches"),
arrayRangeLagrangian_("lagrangian"),
arrayRangeCellZones_("cellZone"),
arrayRangeFaceZones_("faceZone"),
arrayRangePointZones_("pointZone"),
arrayRangeCellSets_("cellSet"),
arrayRangeFaceSets_("faceSet"),
arrayRangePointSets_("pointSet")
{
if (debug)
{
@ -288,7 +289,7 @@ Foam::vtkPV3Foam::vtkPV3Foam
meshRegion_ = caseName.substr(beg+1, end-beg-1);
// some safety
if (!meshRegion_.size())
if (meshRegion_.empty())
{
meshRegion_ = polyMesh::defaultRegion;
}
@ -352,6 +353,14 @@ void Foam::vtkPV3Foam::updateInfo()
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
// there are two ways to ensure we have the correct list of parts:
// 1. remove everything and then set particular entries 'on'
// 2. build a 'char **' list and call SetArraysWithDefault()
//
// Nr. 2 has the potential advantage of not touching the modification
// time of the vtkDataArraySelection, but the qt/paraview proxy
// layer doesn't care about that anyhow.
// enable 'internalMesh' on the first call
// or preserve the enabled selections
stringList enabledEntries;
@ -369,11 +378,11 @@ void Foam::vtkPV3Foam::updateInfo()
partSelection->RemoveAllArrays();
// Update mesh parts list - add Lagrangian at the bottom
updateInfoInternalMesh();
updateInfoPatches();
updateInfoSets();
updateInfoZones();
updateInfoLagrangian();
updateInfoInternalMesh(partSelection);
updateInfoPatches(partSelection);
updateInfoSets(partSelection);
updateInfoZones(partSelection);
updateInfoLagrangian(partSelection);
// restore the enabled selections
setSelectedArrayEntries(partSelection, enabledEntries);
@ -396,6 +405,8 @@ void Foam::vtkPV3Foam::updateInfo()
if (debug)
{
// just for debug info
getSelectedArrayEntries(partSelection);
Info<< "<end> Foam::vtkPV3Foam::updateInfo" << endl;
}
@ -559,12 +570,26 @@ double* Foam::vtkPV3Foam::findTimes(int& nTimeSteps)
nTimes = timeLst.size() - timeI;
// always skip "constant" time if possible
// skip "constant" time whenever possible
if (timeI == 0 && nTimes > 1)
{
timeI = 1;
if (timeLst[timeI].name() == "constant")
{
++timeI;
--nTimes;
}
}
// skip "0/" time if requested and possible
if (nTimes > 1 && reader_->GetSkipZeroTime())
{
if (mag(timeLst[timeI].value()) < SMALL)
{
++timeI;
--nTimes;
}
}
if (nTimes)
{
@ -607,10 +632,10 @@ void Foam::vtkPV3Foam::renderPatchNames(vtkRenderer* renderer, const bool show)
wordHashSet selectedPatches = getSelected
(
reader_->GetPartSelection(),
partInfoPatches_
arrayRangePatches_
);
if (!selectedPatches.size())
if (selectedPatches.empty())
{
return;
}

View File

@ -111,7 +111,7 @@ class vtkPV3Foam
// Private classes
//- Bookkeeping for GUI checklists and the multi-block organization
class partInfo
class arrayRange
{
const char *name_;
int block_;
@ -120,11 +120,11 @@ class vtkPV3Foam
public:
partInfo(const char *name, const int blockNo=0)
arrayRange(const char *name, const int blockNo=0)
:
name_(name),
block_(blockNo),
start_(-1),
start_(0),
size_(0)
{}
@ -142,21 +142,25 @@ class vtkPV3Foam
return prev;
}
//- Return block name
const char* name() const
{
return name_;
}
//- Return array start index
int start() const
{
return start_;
}
//- Return array end index
int end() const
{
return start_ + size_;
}
//- Return sublist size
int size() const
{
return size_;
@ -167,16 +171,10 @@ class vtkPV3Foam
return !size_;
}
void reset()
//- Reset the size to zero and optionally assign a new start
void reset(const int startAt = 0)
{
start_ = -1;
size_ = 0;
}
//- Assign new start and reset the size
void operator=(const int i)
{
start_ = i;
start_ = startAt;
size_ = 0;
}
@ -282,15 +280,15 @@ class vtkPV3Foam
//- First instance and size of various mesh parts
// used to index into partStatus_ and partDataset_
partInfo partInfoVolume_;
partInfo partInfoPatches_;
partInfo partInfoLagrangian_;
partInfo partInfoCellZones_;
partInfo partInfoFaceZones_;
partInfo partInfoPointZones_;
partInfo partInfoCellSets_;
partInfo partInfoFaceSets_;
partInfo partInfoPointSets_;
arrayRange arrayRangeVolume_;
arrayRange arrayRangePatches_;
arrayRange arrayRangeLagrangian_;
arrayRange arrayRangeCellZones_;
arrayRange arrayRangeFaceZones_;
arrayRange arrayRangePointZones_;
arrayRange arrayRangeCellSets_;
arrayRange arrayRangeFaceSets_;
arrayRange arrayRangePointSets_;
//- Decomposed cells information (mesh regions)
// TODO: regions
@ -313,7 +311,7 @@ class vtkPV3Foam
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
const partInfo&,
const arrayRange&,
const label datasetNo,
const std::string& datasetName
);
@ -323,7 +321,7 @@ class vtkPV3Foam
static vtkDataSet* GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo
);
@ -332,7 +330,7 @@ class vtkPV3Foam
static label GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
const partInfo&
const arrayRange&
);
//- Reset data counters
@ -344,19 +342,19 @@ class vtkPV3Foam
void updateMeshPartsStatus();
//- Internal mesh info
void updateInfoInternalMesh();
void updateInfoInternalMesh(vtkDataArraySelection*);
//- Lagrangian info
void updateInfoLagrangian();
void updateInfoLagrangian(vtkDataArraySelection*);
//- Patch info
void updateInfoPatches();
void updateInfoPatches(vtkDataArraySelection*);
//- Set info
void updateInfoSets();
void updateInfoSets(vtkDataArraySelection*);
//- Zone info
void updateInfoZones();
void updateInfoZones(vtkDataArraySelection*);
//- Read zone names for zoneType from file
wordList readZoneNames(const word& zoneType);
@ -511,7 +509,7 @@ class vtkPV3Foam
const GeometricField<Type, fvPatchField, volMesh>&,
autoPtr<GeometricField<Type, pointPatchField, pointMesh> >&,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange&,
const List<polyDecomp>& decompLst
);
@ -521,7 +519,7 @@ class vtkPV3Foam
(
const GeometricField<Type, fvPatchField, volMesh>&,
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo,
const polyDecomp&
);
@ -533,7 +531,7 @@ class vtkPV3Foam
const word& name,
const Field<Type>&,
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo
);
@ -543,7 +541,7 @@ class vtkPV3Foam
(
const GeometricField<Type, fvPatchField, volMesh>&,
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo,
const fvMesh&,
const labelList& faceLabels
@ -555,7 +553,7 @@ class vtkPV3Foam
(
const GeometricField<Type, fvPatchField, volMesh>&,
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo,
const fvMesh&,
const faceSet&
@ -576,7 +574,7 @@ class vtkPV3Foam
(
const IOField<Type>&,
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo
);
@ -596,7 +594,7 @@ class vtkPV3Foam
(
const GeometricField<Type, pointPatchField, pointMesh>&,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange&,
const List<polyDecomp>&
);
@ -607,7 +605,7 @@ class vtkPV3Foam
const GeometricField<Type, pointPatchField, pointMesh>&,
const GeometricField<Type, fvPatchField, volMesh>&,
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo,
const polyDecomp&
);
@ -619,7 +617,7 @@ class vtkPV3Foam
const word& name,
const Field<Type>&,
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo
);
@ -640,7 +638,7 @@ class vtkPV3Foam
static wordHashSet getSelected
(
vtkDataArraySelection*,
const partInfo&
const arrayRange&
);
//- Retrieve the current selections
@ -650,7 +648,7 @@ class vtkPV3Foam
static stringList getSelectedArrayEntries
(
vtkDataArraySelection*,
const partInfo&
const arrayRange&
);
//- Set selection(s)
@ -661,7 +659,7 @@ class vtkPV3Foam
);
//- Get the first word from the mesh parts selection
word getPartName(int);
word getPartName(const int);
//- Disallow default bitwise copy construct

View File

@ -50,11 +50,17 @@ Foam::label Foam::vtkPV3Foam::addToSelection
{
if (suffix.size())
{
select->AddArray((names[nameI] + suffix).c_str());
select->AddArray
(
(names[nameI] + suffix).c_str()
);
}
else
{
select->AddArray(names[nameI].c_str());
select->AddArray
(
(names[nameI]).c_str()
);
}
}

View File

@ -43,7 +43,7 @@ void Foam::vtkPV3Foam::convertFaceField
(
const GeometricField<Type, fvPatchField, volMesh>& tf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo,
const fvMesh& mesh,
const labelList& faceLabels
@ -100,7 +100,7 @@ void Foam::vtkPV3Foam::convertFaceField
vtkPolyData::SafeDownCast
(
GetDataSetFromBlock(output, selector, datasetNo)
GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(cellData);
@ -113,7 +113,7 @@ void Foam::vtkPV3Foam::convertFaceField
(
const GeometricField<Type, fvPatchField, volMesh>& tf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo,
const fvMesh& mesh,
const faceSet& fSet
@ -173,7 +173,7 @@ void Foam::vtkPV3Foam::convertFaceField
vtkPolyData::SafeDownCast
(
GetDataSetFromBlock(output, selector, datasetNo)
GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(cellData);

View File

@ -51,7 +51,7 @@ void Foam::vtkPV3Foam::pruneObjectList
)
{
// hash all the selected field names
if (!selected.size())
if (selected.empty())
{
objects.clear();
}
@ -79,7 +79,7 @@ void Foam::vtkPV3Foam::convertVolFields
reader_->GetVolFieldSelection()
);
if (!selectedFields.size())
if (selectedFields.empty())
{
return;
}
@ -89,7 +89,7 @@ void Foam::vtkPV3Foam::convertVolFields
IOobjectList objects(mesh, dbPtr_().timeName());
pruneObjectList(objects, selectedFields);
if (!objects.size())
if (objects.empty())
{
return;
}
@ -164,7 +164,7 @@ void Foam::vtkPV3Foam::convertPointFields
reader_->GetPointFieldSelection()
);
if (!selectedFields.size())
if (selectedFields.empty())
{
return;
}
@ -174,7 +174,7 @@ void Foam::vtkPV3Foam::convertPointFields
IOobjectList objects(mesh, dbPtr_().timeName());
pruneObjectList(objects, selectedFields);
if (!objects.size())
if (objects.empty())
{
return;
}
@ -229,7 +229,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
vtkMultiBlockDataSet* output
)
{
partInfo& selector = partInfoLagrangian_;
arrayRange& range = arrayRangeLagrangian_;
const fvMesh& mesh = *meshPtr_;
wordHashSet selectedFields = getSelected
@ -237,7 +237,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
reader_->GetLagrangianFieldSelection()
);
if (!selectedFields.size())
if (selectedFields.empty())
{
return;
}
@ -248,7 +248,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
printMemory();
}
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word cloudName = getPartName(partId);
const label datasetNo = partDataset_[partId];
@ -270,7 +270,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
);
pruneObjectList(objects, selectedFields);
if (!objects.size())
if (objects.empty())
{
continue;
}

View File

@ -42,7 +42,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
const label datasetNo
)
{
const partInfo& selector = partInfoLagrangian_;
const arrayRange& range = arrayRangeLagrangian_;
forAllConstIter(IOobjectList, objects, iter)
{
@ -50,7 +50,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
if (iter()->headerClassName() == IOField<Type>::typeName)
{
IOField<Type> tf(*iter());
convertLagrangianField(tf, output, selector, datasetNo);
convertLagrangianField(tf, output, range, datasetNo);
}
}
}
@ -61,7 +61,7 @@ void Foam::vtkPV3Foam::convertLagrangianField
(
const IOField<Type>& tf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo
)
{
@ -97,7 +97,7 @@ void Foam::vtkPV3Foam::convertLagrangianField
vtkPolyData::SafeDownCast
(
GetDataSetFromBlock(output, selector, datasetNo)
GetDataSetFromBlock(output, range, datasetNo)
) ->GetPointData()
->AddArray(pointData);

View File

@ -49,13 +49,13 @@ void Foam::vtkPV3Foam::convertMeshVolume
int& blockNo
)
{
partInfo& selector = partInfoVolume_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangeVolume_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
// resize for decomposed polyhedra
regionPolyDecomp_.setSize(selector.size());
regionPolyDecomp_.setSize(range.size());
if (debug)
{
@ -65,7 +65,7 @@ void Foam::vtkPV3Foam::convertMeshVolume
// Convert the internalMesh
// this looks like more than one part, but it isn't
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word partName = "internalMesh";
@ -82,7 +82,7 @@ void Foam::vtkPV3Foam::convertMeshVolume
if (vtkmesh)
{
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -109,8 +109,8 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
int& blockNo
)
{
partInfo& selector = partInfoLagrangian_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangeLagrangian_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@ -120,7 +120,7 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
printMemory();
}
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word cloudName = getPartName(partId);
@ -133,7 +133,7 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
if (vtkmesh)
{
AddToBlock(output, vtkmesh, selector, datasetNo, cloudName);
AddToBlock(output, vtkmesh, range, datasetNo, cloudName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -160,8 +160,8 @@ void Foam::vtkPV3Foam::convertMeshPatches
int& blockNo
)
{
partInfo& selector = partInfoPatches_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangePatches_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
const polyBoundaryMesh& patches = mesh.boundaryMesh();
@ -172,7 +172,7 @@ void Foam::vtkPV3Foam::convertMeshPatches
printMemory();
}
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word patchName = getPartName(partId);
const label patchId = patches.findPatchID(patchName);
@ -192,7 +192,7 @@ void Foam::vtkPV3Foam::convertMeshPatches
if (vtkmesh)
{
AddToBlock(output, vtkmesh, selector, datasetNo, patchName);
AddToBlock(output, vtkmesh, range, datasetNo, patchName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -219,15 +219,15 @@ void Foam::vtkPV3Foam::convertMeshCellZones
int& blockNo
)
{
partInfo& selector = partInfoCellZones_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangeCellZones_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
// resize for decomposed polyhedra
zonePolyDecomp_.setSize(selector.size());
zonePolyDecomp_.setSize(range.size());
if (!selector.size())
if (range.empty())
{
return;
}
@ -239,7 +239,7 @@ void Foam::vtkPV3Foam::convertMeshCellZones
}
const cellZoneMesh& zMesh = mesh.cellZones();
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word zoneName = getPartName(partId);
const label zoneId = zMesh.findZoneID(zoneName);
@ -281,7 +281,7 @@ void Foam::vtkPV3Foam::convertMeshCellZones
// copy pointMap as well, otherwise pointFields fail
zonePolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -308,13 +308,13 @@ void Foam::vtkPV3Foam::convertMeshCellSets
int& blockNo
)
{
partInfo& selector = partInfoCellSets_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangeCellSets_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
// resize for decomposed polyhedra
csetPolyDecomp_.setSize(selector.size());
csetPolyDecomp_.setSize(range.size());
if (debug)
{
@ -322,7 +322,7 @@ void Foam::vtkPV3Foam::convertMeshCellSets
printMemory();
}
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word partName = getPartName(partId);
@ -363,7 +363,7 @@ void Foam::vtkPV3Foam::convertMeshCellSets
// copy pointMap as well, otherwise pointFields fail
csetPolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -390,12 +390,12 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
int& blockNo
)
{
partInfo& selector = partInfoFaceZones_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangeFaceZones_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
if (!selector.size())
if (range.empty())
{
return;
}
@ -407,7 +407,7 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
}
const faceZoneMesh& zMesh = mesh.faceZones();
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word zoneName = getPartName(partId);
const label zoneId = zMesh.findZoneID(zoneName);
@ -426,7 +426,7 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
vtkPolyData* vtkmesh = faceZoneVTKMesh(mesh, zMesh[zoneId]);
if (vtkmesh)
{
AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -453,8 +453,8 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
int& blockNo
)
{
partInfo& selector = partInfoFaceSets_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangeFaceSets_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@ -464,7 +464,7 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
printMemory();
}
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const word partName = getPartName(partId);
@ -483,7 +483,7 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
vtkPolyData* vtkmesh = faceSetVTKMesh(mesh, fSet);
if (vtkmesh)
{
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -510,8 +510,8 @@ void Foam::vtkPV3Foam::convertMeshPointZones
int& blockNo
)
{
partInfo& selector = partInfoPointZones_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangePointZones_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@ -521,10 +521,10 @@ void Foam::vtkPV3Foam::convertMeshPointZones
printMemory();
}
if (selector.size())
if (range.size())
{
const pointZoneMesh& zMesh = mesh.pointZones();
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
word zoneName = getPartName(partId);
label zoneId = zMesh.findZoneID(zoneName);
@ -537,7 +537,7 @@ void Foam::vtkPV3Foam::convertMeshPointZones
vtkPolyData* vtkmesh = pointZoneVTKMesh(mesh, zMesh[zoneId]);
if (vtkmesh)
{
AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -566,8 +566,8 @@ void Foam::vtkPV3Foam::convertMeshPointSets
int& blockNo
)
{
partInfo& selector = partInfoPointSets_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangePointSets_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@ -577,7 +577,7 @@ void Foam::vtkPV3Foam::convertMeshPointSets
printMemory();
}
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
word partName = getPartName(partId);
@ -596,7 +596,7 @@ void Foam::vtkPV3Foam::convertMeshPointSets
vtkPolyData* vtkmesh = pointSetVTKMesh(mesh, pSet);
if (vtkmesh)
{
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@ -616,4 +616,5 @@ void Foam::vtkPV3Foam::convertMeshPointSets
}
}
// ************************************************************************* //

View File

@ -45,7 +45,7 @@ void Foam::vtkPV3Foam::convertPatchField
const word& name,
const Field<Type>& ptf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo
)
{
@ -70,7 +70,7 @@ void Foam::vtkPV3Foam::convertPatchField
vtkPolyData::SafeDownCast
(
GetDataSetFromBlock(output, selector, datasetNo)
GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(cellData);
@ -85,7 +85,7 @@ void Foam::vtkPV3Foam::convertPatchPointField
const word& name,
const Field<Type>& pptf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo
)
{
@ -111,7 +111,7 @@ void Foam::vtkPV3Foam::convertPatchPointField
vtkPolyData::SafeDownCast
(
GetDataSetFromBlock(output, selector, datasetNo)
GetDataSetFromBlock(output, range, datasetNo)
) ->GetPointData()
->AddArray(pointData);

View File

@ -77,7 +77,7 @@ void Foam::vtkPV3Foam::convertPointFields
(
ptf,
output,
partInfoVolume_,
arrayRangeVolume_,
regionPolyDecomp_
);
@ -86,7 +86,7 @@ void Foam::vtkPV3Foam::convertPointFields
(
ptf,
output,
partInfoCellZones_,
arrayRangeCellZones_,
zonePolyDecomp_
);
@ -95,7 +95,7 @@ void Foam::vtkPV3Foam::convertPointFields
(
ptf,
output,
partInfoCellSets_,
arrayRangeCellSets_,
csetPolyDecomp_
);
@ -105,8 +105,8 @@ void Foam::vtkPV3Foam::convertPointFields
//
for
(
int partId = partInfoPatches_.start();
partId < partInfoPatches_.end();
int partId = arrayRangePatches_.start();
partId < arrayRangePatches_.end();
++partId
)
{
@ -124,7 +124,7 @@ void Foam::vtkPV3Foam::convertPointFields
fieldName,
ptf.boundaryField()[patchId].patchInternalField()(),
output,
partInfoPatches_,
arrayRangePatches_,
datasetNo
);
}
@ -137,11 +137,11 @@ void Foam::vtkPV3Foam::convertPointFieldBlock
(
const GeometricField<Type, pointPatchField, pointMesh>& ptf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const List<polyDecomp>& decompLst
)
{
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const label datasetNo = partDataset_[partId];
@ -152,7 +152,7 @@ void Foam::vtkPV3Foam::convertPointFieldBlock
ptf,
GeometricField<Type, fvPatchField, volMesh>::null(),
output,
selector,
range,
datasetNo,
decompLst[datasetNo]
);
@ -167,7 +167,7 @@ void Foam::vtkPV3Foam::convertPointField
const GeometricField<Type, pointPatchField, pointMesh>& ptf,
const GeometricField<Type, fvPatchField, volMesh>& tf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo,
const polyDecomp& decomp
)
@ -260,7 +260,7 @@ void Foam::vtkPV3Foam::convertPointField
vtkUnstructuredGrid::SafeDownCast
(
GetDataSetFromBlock(output, selector, datasetNo)
GetDataSetFromBlock(output, range, datasetNo)
) ->GetPointData()
->AddArray(pointData);

View File

@ -118,32 +118,39 @@ Foam::wordList Foam::vtkPV3Foam::readZoneNames(const word& zoneType)
}
void Foam::vtkPV3Foam::updateInfoInternalMesh()
void Foam::vtkPV3Foam::updateInfoInternalMesh
(
vtkDataArraySelection* arraySelection
)
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
}
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
// Determine mesh parts (internalMesh, patches...)
//- Add internal mesh as first entry
partInfoVolume_ = partSelection->GetNumberOfArrays();
partSelection->AddArray("internalMesh");
partInfoVolume_ += 1;
arrayRangeVolume_.reset( arraySelection->GetNumberOfArrays() );
arraySelection->AddArray
(
"internalMesh"
);
arrayRangeVolume_ += 1;
if (debug)
{
// just for debug info
getSelectedArrayEntries(partSelection);
getSelectedArrayEntries(arraySelection);
Info<< "<end> Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
}
}
void Foam::vtkPV3Foam::updateInfoLagrangian()
void Foam::vtkPV3Foam::updateInfoLagrangian
(
vtkDataArraySelection* arraySelection
)
{
if (debug)
{
@ -166,34 +173,35 @@ void Foam::vtkPV3Foam::updateInfoLagrangian()
readDir(dbPtr_->timePath()/lagrangianPrefix, fileName::DIRECTORY)
);
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
partInfoLagrangian_ = partSelection->GetNumberOfArrays();
arrayRangeLagrangian_.reset( arraySelection->GetNumberOfArrays() );
int nClouds = 0;
forAll(cloudDirs, cloudI)
{
// Add cloud to GUI list
partSelection->AddArray
arraySelection->AddArray
(
(cloudDirs[cloudI] + " - lagrangian").c_str()
);
++nClouds;
}
partInfoLagrangian_ += nClouds;
arrayRangeLagrangian_ += nClouds;
if (debug)
{
// just for debug info
getSelectedArrayEntries(partSelection);
getSelectedArrayEntries(arraySelection);
Info<< "<end> Foam::vtkPV3Foam::updateInfoLagrangian" << endl;
}
}
void Foam::vtkPV3Foam::updateInfoPatches()
void Foam::vtkPV3Foam::updateInfoPatches
(
vtkDataArraySelection* arraySelection
)
{
if (debug)
{
@ -201,8 +209,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
partInfoPatches_ = partSelection->GetNumberOfArrays();
arrayRangePatches_.reset( arraySelection->GetNumberOfArrays() );
int nPatches = 0;
if (meshPtr_)
@ -215,7 +222,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
if (pp.size())
{
// Add patch to GUI list
partSelection->AddArray
arraySelection->AddArray
(
(pp.name() + " - patch").c_str()
);
@ -260,7 +267,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
// Valid patch if nFace > 0 - add patch to GUI list
if (nFaces)
{
partSelection->AddArray
arraySelection->AddArray
(
(patchEntries[entryI].keyword() + " - patch").c_str()
);
@ -270,19 +277,22 @@ void Foam::vtkPV3Foam::updateInfoPatches()
}
}
}
partInfoPatches_ += nPatches;
arrayRangePatches_ += nPatches;
if (debug)
{
// just for debug info
getSelectedArrayEntries(partSelection);
getSelectedArrayEntries(arraySelection);
Info<< "<end> Foam::vtkPV3Foam::updateInfoPatches" << endl;
}
}
void Foam::vtkPV3Foam::updateInfoZones()
void Foam::vtkPV3Foam::updateInfoZones
(
vtkDataArraySelection* arraySelection
)
{
if (!reader_->GetIncludeZones())
{
@ -295,7 +305,6 @@ void Foam::vtkPV3Foam::updateInfoZones()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
wordList namesLst;
//
@ -310,12 +319,15 @@ void Foam::vtkPV3Foam::updateInfoZones()
namesLst = readZoneNames("cellZones");
}
partInfoCellZones_ = partSelection->GetNumberOfArrays();
arrayRangeCellZones_.reset( arraySelection->GetNumberOfArrays() );
forAll(namesLst, elemI)
{
partSelection->AddArray((namesLst[elemI] + " - cellZone").c_str());
arraySelection->AddArray
(
(namesLst[elemI] + " - cellZone").c_str()
);
}
partInfoCellZones_ += namesLst.size();
arrayRangeCellZones_ += namesLst.size();
//
@ -330,15 +342,15 @@ void Foam::vtkPV3Foam::updateInfoZones()
namesLst = readZoneNames("faceZones");
}
partInfoFaceZones_ = partSelection->GetNumberOfArrays();
arrayRangeFaceZones_.reset( arraySelection->GetNumberOfArrays() );
forAll(namesLst, elemI)
{
partSelection->AddArray
arraySelection->AddArray
(
(namesLst[elemI] + " - faceZone").c_str()
);
}
partInfoFaceZones_ += namesLst.size();
arrayRangeFaceZones_ += namesLst.size();
//
@ -353,28 +365,30 @@ void Foam::vtkPV3Foam::updateInfoZones()
namesLst = readZoneNames("pointZones");
}
partInfoPointZones_ = partSelection->GetNumberOfArrays();
arrayRangePointZones_.reset( arraySelection->GetNumberOfArrays() );
forAll(namesLst, elemI)
{
partSelection->AddArray
arraySelection->AddArray
(
(namesLst[elemI] + " - pointZone").c_str()
);
}
partInfoPointZones_ += namesLst.size();
arrayRangePointZones_ += namesLst.size();
if (debug)
{
// just for debug info
getSelectedArrayEntries(partSelection);
getSelectedArrayEntries(arraySelection);
Info<< "<end> Foam::vtkPV3Foam::updateInfoZones" << endl;
}
}
void Foam::vtkPV3Foam::updateInfoSets()
void Foam::vtkPV3Foam::updateInfoSets
(
vtkDataArraySelection* arraySelection
)
{
if (!reader_->GetIncludeSets())
{
@ -386,8 +400,6 @@ void Foam::vtkPV3Foam::updateInfoSets()
Info<< "<beg> Foam::vtkPV3Foam::updateInfoSets" << endl;
}
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
// Add names of sets
IOobjectList objects
(
@ -397,26 +409,26 @@ void Foam::vtkPV3Foam::updateInfoSets()
);
partInfoCellSets_ = partSelection->GetNumberOfArrays();
partInfoCellSets_ += addToSelection<cellSet>
arrayRangeCellSets_.reset( arraySelection->GetNumberOfArrays() );
arrayRangeCellSets_ += addToSelection<cellSet>
(
partSelection,
arraySelection,
objects,
" - cellSet"
);
partInfoFaceSets_ = partSelection->GetNumberOfArrays();
partInfoFaceSets_ += addToSelection<faceSet>
arrayRangeFaceSets_.reset( arraySelection->GetNumberOfArrays() );
arrayRangeFaceSets_ += addToSelection<faceSet>
(
partSelection,
arraySelection,
objects,
" - faceSet"
);
partInfoPointSets_ = partSelection->GetNumberOfArrays();
partInfoPointSets_ += addToSelection<pointSet>
arrayRangePointSets_.reset( arraySelection->GetNumberOfArrays() );
arrayRangePointSets_ += addToSelection<pointSet>
(
partSelection,
arraySelection,
objects,
" - pointSet"
);
@ -424,7 +436,7 @@ void Foam::vtkPV3Foam::updateInfoSets()
if (debug)
{
// just for debug info
getSelectedArrayEntries(partSelection);
getSelectedArrayEntries(arraySelection);
Info<< "<end> Foam::vtkPV3Foam::updateInfoSets" << endl;
}
@ -450,14 +462,13 @@ void Foam::vtkPV3Foam::updateInfoLagrangianFields()
// have to decide if the second set of fields get mixed in
// or dealt with separately
const partInfo& selector = partInfoLagrangian_;
int partId = selector.start();
if (!selector.size() || partId < 0)
const arrayRange& range = arrayRangeLagrangian_;
if (range.empty())
{
return;
}
int partId = range.start();
word cloudName = getPartName(partId);
// use the db directly since this might be called without a mesh,

View File

@ -76,12 +76,12 @@ void Foam::vtkPV3Foam::AddToBlock
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
const partInfo& selector,
const arrayRange& range,
const label datasetNo,
const std::string& datasetName
)
{
const int blockNo = selector.block();
const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@ -117,7 +117,7 @@ void Foam::vtkPV3Foam::AddToBlock
output->GetMetaData(blockNo)->Set
(
vtkCompositeDataSet::NAME(),
selector.name()
range.name()
);
}
@ -135,11 +135,11 @@ void Foam::vtkPV3Foam::AddToBlock
vtkDataSet* Foam::vtkPV3Foam::GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo
)
{
const int blockNo = selector.block();
const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@ -157,10 +157,10 @@ vtkDataSet* Foam::vtkPV3Foam::GetDataSetFromBlock
Foam::label Foam::vtkPV3Foam::GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
const partInfo& selector
const arrayRange& range
)
{
const int blockNo = selector.block();
const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@ -173,7 +173,7 @@ Foam::label Foam::vtkPV3Foam::GetNumberOfDataSets
}
Foam::word Foam::vtkPV3Foam::getPartName(int partId)
Foam::word Foam::vtkPV3Foam::getPartName(const int partId)
{
return getFirstWord(reader_->GetPartArrayName(partId));
}
@ -202,13 +202,13 @@ Foam::wordHashSet Foam::vtkPV3Foam::getSelected
Foam::wordHashSet Foam::vtkPV3Foam::getSelected
(
vtkDataArraySelection* select,
const partInfo& selector
const arrayRange& range
)
{
int nElem = select->GetNumberOfArrays();
wordHashSet selections(2*nElem);
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@ -262,13 +262,13 @@ Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
(
vtkDataArraySelection* select,
const partInfo& selector
const arrayRange& range
)
{
stringList selections(selector.size());
stringList selections(range.size());
label nElem = 0;
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@ -281,7 +281,7 @@ Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
if (debug)
{
Info<< "available(";
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
Info<< " \"" << select->GetArrayName(elemI) << "\"";
}

View File

@ -81,7 +81,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf,
ptfPtr,
output,
partInfoVolume_,
arrayRangeVolume_,
regionPolyDecomp_
);
@ -91,7 +91,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf,
ptfPtr,
output,
partInfoCellZones_,
arrayRangeCellZones_,
zonePolyDecomp_
);
@ -101,7 +101,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf,
ptfPtr,
output,
partInfoCellSets_,
arrayRangeCellSets_,
csetPolyDecomp_
);
@ -117,8 +117,8 @@ void Foam::vtkPV3Foam::convertVolFields
for
(
int partId = partInfoPatches_.start();
partId < partInfoPatches_.end();
int partId = arrayRangePatches_.start();
partId < arrayRangePatches_.end();
++partId
)
{
@ -155,7 +155,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf.name(),
tpptf(),
output,
partInfoPatches_,
arrayRangePatches_,
datasetNo
);
@ -164,7 +164,7 @@ void Foam::vtkPV3Foam::convertVolFields
pointFldName,
ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
output,
partInfoPatches_,
arrayRangePatches_,
datasetNo
);
}
@ -175,7 +175,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf.name(),
ptf,
output,
partInfoPatches_,
arrayRangePatches_,
datasetNo
);
@ -184,7 +184,7 @@ void Foam::vtkPV3Foam::convertVolFields
pointFldName,
ppInterpList[patchId].faceToPointInterpolate(ptf)(),
output,
partInfoPatches_,
arrayRangePatches_,
datasetNo
);
}
@ -195,8 +195,8 @@ void Foam::vtkPV3Foam::convertVolFields
//
for
(
int partId = partInfoFaceZones_.start();
partId < partInfoFaceZones_.end();
int partId = arrayRangeFaceZones_.start();
partId < arrayRangeFaceZones_.end();
++partId
)
{
@ -220,7 +220,7 @@ void Foam::vtkPV3Foam::convertVolFields
(
tf,
output,
partInfoFaceZones_,
arrayRangeFaceZones_,
datasetNo,
mesh,
zMesh[zoneId]
@ -234,8 +234,8 @@ void Foam::vtkPV3Foam::convertVolFields
//
for
(
int partId = partInfoFaceSets_.start();
partId < partInfoFaceSets_.end();
int partId = arrayRangeFaceSets_.start();
partId < arrayRangeFaceSets_.end();
++partId
)
{
@ -253,7 +253,7 @@ void Foam::vtkPV3Foam::convertVolFields
(
tf,
output,
partInfoFaceSets_,
arrayRangeFaceSets_,
datasetNo,
mesh,
fSet
@ -271,11 +271,11 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
const GeometricField<Type, fvPatchField, volMesh>& tf,
autoPtr<GeometricField<Type, pointPatchField, pointMesh> >& ptfPtr,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const List<polyDecomp>& decompLst
)
{
for (int partId = selector.start(); partId < selector.end(); ++partId)
for (int partId = range.start(); partId < range.end(); ++partId)
{
const label datasetNo = partDataset_[partId];
@ -285,7 +285,7 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
(
tf,
output,
selector,
range,
datasetNo,
decompLst[datasetNo]
);
@ -309,7 +309,7 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
ptfPtr(),
tf,
output,
selector,
range,
datasetNo,
decompLst[datasetNo]
);
@ -323,7 +323,7 @@ void Foam::vtkPV3Foam::convertVolField
(
const GeometricField<Type, fvPatchField, volMesh>& tf,
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo,
const polyDecomp& decompInfo
)
@ -359,7 +359,7 @@ void Foam::vtkPV3Foam::convertVolField
vtkUnstructuredGrid::SafeDownCast
(
GetDataSetFromBlock(output, selector, datasetNo)
GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(celldata);

View File

@ -43,34 +43,40 @@
</Documentation>
</IntVectorProperty>
<!-- Selections -->
<!-- Available Parts (blocks) array -->
<!--
| Selections
-->
<!-- Available Blocks array -->
<StringVectorProperty
name="PartArrayInfo"
name="BlockArrayStatus"
information_only="1">
<ArraySelectionInformationHelper attribute_name="Part"/>
<ArraySelectionInformationHelper attribute_name="Block"/>
</StringVectorProperty>
<StringVectorProperty
name="PartStatus"
name="BlockStatus"
label="Blocks"
command="SetPartArrayStatus"
command="SetBlockArrayStatus"
number_of_elements="0"
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
information_property="PartArrayInfo"
information_property="BlockArrayStatus"
animateable="0">
<ArraySelectionDomain name="array_list">
<RequiredProperties>
<Property name="PartArrayInfo" function="ArrayList"/>
<Property name="BlockArrayStatus" function="ArrayList"/>
</RequiredProperties>
</ArraySelectionDomain>
<Documentation>
This property contains a list of the blocks
</Documentation>
</StringVectorProperty>
<!-- Available Parts (blocks) array -->
<!-- Available CurvedEdges array -->
<StringVectorProperty
name="CurvedEdgesArrayInfo"
name="CurvedEdgesArrayStatus"
information_only="1">
<ArraySelectionInformationHelper attribute_name="CurvedEdges"/>
</StringVectorProperty>
@ -82,13 +88,16 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
information_property="CurvedEdgesArrayInfo"
information_property="CurvedEdgesArrayStatus"
animateable="0">
<ArraySelectionDomain name="array_list">
<RequiredProperties>
<Property name="CurvedEdgesArrayInfo" function="ArrayList"/>
<Property name="CurvedEdgesArrayStatus" function="ArrayList"/>
</RequiredProperties>
</ArraySelectionDomain>
<Documentation>
This property contains a list of the curved edges
</Documentation>
</StringVectorProperty>
<Hints>

View File

@ -32,6 +32,7 @@ License
#include <QLabel>
#include <QLayout>
#include <QString>
#include <QPushButton>
#include <QtDebug>
// Paraview <-> QT UI
@ -56,17 +57,26 @@ pqPV3blockMeshReaderPanel::pqPV3blockMeshReaderPanel
QWidget *p
)
:
pqAutoGeneratedObjectPanel(proxy, p),
sourceProxy_(vtkSMSourceProxy::SafeDownCast(this->proxy()))
pqAutoGeneratedObjectPanel(proxy, p)
{
// create first sublayout (at top of the panel)
QGridLayout *sect1 = new QGridLayout();
this->PanelLayout->addLayout(sect1, 0, 0, 1, -1);
QGridLayout *form = new QGridLayout();
this->PanelLayout->addLayout(form, 0, 0, 1, -1);
vtkSMProperty* prop = 0;
// checkbox for showing point numbers
if ((prop = this->proxy()->GetProperty("UiShowPointNumbers")) != 0)
{
prop->SetImmediateUpdate(true);
ShowPointNumbers_ = new QCheckBox("Show Point Numbers");
ShowPointNumbers_->setChecked(true);
ShowPointNumbers_->setToolTip("Show point numbers in render window.");
ShowPointNumbers_->setChecked
(
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
);
form->addWidget(ShowPointNumbers_);
connect
(
@ -75,15 +85,7 @@ pqPV3blockMeshReaderPanel::pqPV3blockMeshReaderPanel
this,
SLOT(ShowPointNumbersToggled())
);
sect1->addWidget(ShowPointNumbers_);
// immediate update on the Server Manager side
vtkSMIntVectorProperty::SafeDownCast
(
sourceProxy_->GetProperty("UiShowPointNumbers")
)->SetImmediateUpdate(true);
}
}
@ -93,7 +95,7 @@ void pqPV3blockMeshReaderPanel::ShowPointNumbersToggled()
{
vtkSMIntVectorProperty::SafeDownCast
(
sourceProxy_->GetProperty("UiShowPointNumbers")
this->proxy()->GetProperty("UiShowPointNumbers")
)->SetElement(0, ShowPointNumbers_->isChecked());
// update the active view

View File

@ -62,9 +62,6 @@ class pqPV3blockMeshReaderPanel
Q_OBJECT;
typedef pqAutoGeneratedObjectPanel Superclass;
//- Server Manager Source Proxy
vtkSMSourceProxy* sourceProxy_;
//- Show Point Numbers checkbox
QCheckBox* ShowPointNumbers_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -64,7 +64,7 @@ vtkPV3blockMeshReader::vtkPV3blockMeshReader()
ShowPointNumbers = 1;
UpdateGUI = 0;
PartSelection = vtkDataArraySelection::New();
BlockSelection = vtkDataArraySelection::New();
CurvedEdgesSelection = vtkDataArraySelection::New();
// Setup the selection callback to modify this object when an array
@ -77,7 +77,7 @@ vtkPV3blockMeshReader::vtkPV3blockMeshReader()
SelectionObserver->SetClientData(this);
PartSelection->AddObserver
BlockSelection->AddObserver
(
vtkCommand::ModifiedEvent,
this->SelectionObserver
@ -109,11 +109,11 @@ vtkPV3blockMeshReader::~vtkPV3blockMeshReader()
delete [] FileName;
}
PartSelection->RemoveObserver(this->SelectionObserver);
BlockSelection->RemoveObserver(this->SelectionObserver);
CurvedEdgesSelection->RemoveObserver(this->SelectionObserver);
SelectionObserver->Delete();
PartSelection->Delete();
BlockSelection->Delete();
}
@ -292,50 +292,50 @@ void vtkPV3blockMeshReader::PrintSelf(ostream& os, vtkIndent indent)
// ----------------------------------------------------------------------
// Parts selection list control
// Block selection list control
vtkDataArraySelection* vtkPV3blockMeshReader::GetPartSelection()
vtkDataArraySelection* vtkPV3blockMeshReader::GetBlockSelection()
{
vtkDebugMacro(<<"GetPartSelection");
return PartSelection;
vtkDebugMacro(<<"GetBlockSelection");
return BlockSelection;
}
int vtkPV3blockMeshReader::GetNumberOfPartArrays()
int vtkPV3blockMeshReader::GetNumberOfBlockArrays()
{
vtkDebugMacro(<<"GetNumberOfPartArrays");
return PartSelection->GetNumberOfArrays();
vtkDebugMacro(<<"GetNumberOfBlockArrays");
return BlockSelection->GetNumberOfArrays();
}
const char* vtkPV3blockMeshReader::GetPartArrayName(int index)
const char* vtkPV3blockMeshReader::GetBlockArrayName(int index)
{
vtkDebugMacro(<<"GetPartArrayName");
return PartSelection->GetArrayName(index);
vtkDebugMacro(<<"GetBlockArrayName");
return BlockSelection->GetArrayName(index);
}
int vtkPV3blockMeshReader::GetPartArrayStatus(const char* name)
int vtkPV3blockMeshReader::GetBlockArrayStatus(const char* name)
{
vtkDebugMacro(<<"GetPartArrayStatus");
return PartSelection->ArrayIsEnabled(name);
vtkDebugMacro(<<"GetBlockArrayStatus");
return BlockSelection->ArrayIsEnabled(name);
}
void vtkPV3blockMeshReader::SetPartArrayStatus
void vtkPV3blockMeshReader::SetBlockArrayStatus
(
const char* name,
int status
)
{
vtkDebugMacro(<<"SetPartArrayStatus");
vtkDebugMacro(<<"SetBlockArrayStatus");
if (status)
{
PartSelection->EnableArray(name);
BlockSelection->EnableArray(name);
}
else
{
PartSelection->DisableArray(name);
BlockSelection->DisableArray(name);
}
}
@ -399,14 +399,7 @@ void vtkPV3blockMeshReader::SelectionModifiedCallback
void*
)
{
static_cast<vtkPV3blockMeshReader*>(clientdata)->SelectionModified();
}
void vtkPV3blockMeshReader::SelectionModified()
{
vtkDebugMacro(<<"SelectionModified");
Modified();
static_cast<vtkPV3blockMeshReader*>(clientdata)->Modified();
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -84,15 +84,15 @@ public:
// Description:
// Parts (blocks) selection list control
vtkDataArraySelection* GetPartSelection();
int GetNumberOfPartArrays();
int GetPartArrayStatus(const char*);
void SetPartArrayStatus(const char*, int status);
const char* GetPartArrayName(int index);
// Blocks selection list control
vtkDataArraySelection* GetBlockSelection();
int GetNumberOfBlockArrays();
int GetBlockArrayStatus(const char*);
void SetBlockArrayStatus(const char*, int status);
const char* GetBlockArrayName(int index);
// Description:
// Parts (blocks) selection list control
// CurvedEdges selection list control
vtkDataArraySelection* GetCurvedEdgesSelection();
int GetNumberOfCurvedEdgesArrays();
int GetCurvedEdgesArrayStatus(const char*);
@ -110,8 +110,6 @@ public:
void* calldata
);
void SelectionModified();
protected:
@ -164,7 +162,7 @@ private:
//- Dummy variable/switch to invoke a reader update
int UpdateGUI;
vtkDataArraySelection* PartSelection;
vtkDataArraySelection* BlockSelection;
vtkDataArraySelection* CurvedEdgesSelection;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -49,13 +49,16 @@ defineTypeNameAndDebug(Foam::vtkPV3blockMesh, 0);
void Foam::vtkPV3blockMesh::resetCounters()
{
// Reset mesh part ids and sizes
partInfoBlocks_.reset();
partInfoEdges_.reset();
partInfoCorners_.reset();
arrayRangeBlocks_.reset();
arrayRangeEdges_.reset();
arrayRangeCorners_.reset();
}
void Foam::vtkPV3blockMesh::updateInfoBlocks()
void Foam::vtkPV3blockMesh::updateInfoBlocks
(
vtkDataArraySelection* arraySelection
)
{
if (debug)
{
@ -63,8 +66,7 @@ void Foam::vtkPV3blockMesh::updateInfoBlocks()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
vtkDataArraySelection* selection = reader_->GetPartSelection();
partInfoBlocks_ = selection->GetNumberOfArrays();
arrayRangeBlocks_.reset( arraySelection->GetNumberOfArrays() );
const blockMesh& blkMesh = *meshPtr_;
const int nBlocks = blkMesh.size();
@ -81,22 +83,25 @@ void Foam::vtkPV3blockMesh::updateInfoBlocks()
}
// Add blockId and zoneName to GUI list
selection->AddArray(partName.c_str());
arraySelection->AddArray(partName.c_str());
}
partInfoBlocks_ += nBlocks;
arrayRangeBlocks_ += nBlocks;
if (debug)
{
// just for debug info
getSelectedArrayEntries(selection);
getSelectedArrayEntries(arraySelection);
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoBlocks" << endl;
}
}
void Foam::vtkPV3blockMesh::updateInfoEdges()
void Foam::vtkPV3blockMesh::updateInfoEdges
(
vtkDataArraySelection* arraySelection
)
{
if (debug)
{
@ -104,8 +109,7 @@ void Foam::vtkPV3blockMesh::updateInfoEdges()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
partInfoEdges_ = selection->GetNumberOfArrays();
arrayRangeEdges_.reset( arraySelection->GetNumberOfArrays() );
const blockMesh& blkMesh = *meshPtr_;
const curvedEdgeList& edges = blkMesh.edges();
@ -119,15 +123,15 @@ void Foam::vtkPV3blockMesh::updateInfoEdges()
<< edges[edgeI].type();
// Add "beg:end - type" to GUI list
selection->AddArray(ostr.str().c_str());
arraySelection->AddArray(ostr.str().c_str());
}
partInfoEdges_ += nEdges;
arrayRangeEdges_ += nEdges;
if (debug)
{
// just for debug info
getSelectedArrayEntries(selection);
getSelectedArrayEntries(arraySelection);
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoEdges" << endl;
}
@ -145,9 +149,9 @@ Foam::vtkPV3blockMesh::vtkPV3blockMesh
reader_(reader),
dbPtr_(NULL),
meshPtr_(NULL),
partInfoBlocks_("block"),
partInfoEdges_("edges"),
partInfoCorners_("corners")
arrayRangeBlocks_("block"),
arrayRangeEdges_("edges"),
arrayRangeCorners_("corners")
{
if (debug)
{
@ -243,7 +247,7 @@ void Foam::vtkPV3blockMesh::updateInfo()
resetCounters();
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
vtkDataArraySelection* blockSelection = reader_->GetBlockSelection();
vtkDataArraySelection* edgeSelection = reader_->GetCurvedEdgesSelection();
// enable 'internalMesh' on the first call
@ -251,33 +255,33 @@ void Foam::vtkPV3blockMesh::updateInfo()
stringList enabledParts;
stringList enabledEdges;
bool firstTime = false;
if (!partSelection->GetNumberOfArrays() && !meshPtr_)
if (!blockSelection->GetNumberOfArrays() && !meshPtr_)
{
firstTime = true;
}
else
{
enabledParts = getSelectedArrayEntries(partSelection);
enabledParts = getSelectedArrayEntries(blockSelection);
enabledEdges = getSelectedArrayEntries(edgeSelection);
}
// Clear current mesh parts list
partSelection->RemoveAllArrays();
blockSelection->RemoveAllArrays();
edgeSelection->RemoveAllArrays();
// need a blockMesh
updateFoamMesh();
// Update mesh parts list
updateInfoBlocks();
updateInfoBlocks( blockSelection );
// Update curved edges list
updateInfoEdges();
updateInfoEdges( edgeSelection );
// restore the enabled selections
if (!firstTime)
{
setSelectedArrayEntries(partSelection, enabledParts);
setSelectedArrayEntries(blockSelection, enabledParts);
setSelectedArrayEntries(edgeSelection, enabledEdges);
}
@ -337,7 +341,7 @@ void Foam::vtkPV3blockMesh::Update
reader_->UpdateProgress(0.1);
// Set up mesh parts selection(s)
updateBoolListStatus(partStatus_, reader_->GetPartSelection());
updateBoolListStatus(blockStatus_, reader_->GetBlockSelection());
// Set up curved edges selection(s)
updateBoolListStatus(edgeStatus_, reader_->GetCurvedEdgesSelection());

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -88,7 +88,7 @@ class vtkPV3blockMesh
// Private classes
//- Bookkeeping for GUI checklists and the multi-block organization
class partInfo
class arrayRange
{
const char *name_;
int block_;
@ -97,11 +97,11 @@ class vtkPV3blockMesh
public:
partInfo(const char *name, const int blockNo=0)
arrayRange(const char *name, const int blockNo=0)
:
name_(name),
block_(blockNo),
start_(-1),
start_(0),
size_(0)
{}
@ -119,21 +119,25 @@ class vtkPV3blockMesh
return prev;
}
//- Return block name
const char* name() const
{
return name_;
}
//- Return array start index
int start() const
{
return start_;
}
//- Return array end index
int end() const
{
return start_ + size_;
}
//- Return sublist size
int size() const
{
return size_;
@ -144,16 +148,10 @@ class vtkPV3blockMesh
return !size_;
}
void reset()
//- Reset the size to zero and optionally assign a new start
void reset(const int startAt = 0)
{
start_ = -1;
size_ = 0;
}
//- Assign new start and reset the size
void operator=(const int i)
{
start_ = i;
start_ = startAt;
size_ = 0;
}
@ -177,22 +175,20 @@ class vtkPV3blockMesh
blockMesh* meshPtr_;
//- Selected geometrical parts
boolList partStatus_;
boolList blockStatus_;
//- Selected curved edges
boolList edgeStatus_;
//- First instance and size of bleckMesh blocks
// used to index into partStatus_
partInfo partInfoBlocks_;
// used to index into blockStatus_
arrayRange arrayRangeBlocks_;
//- First instance and size of CurvedEdges
// only partially used
partInfo partInfoEdges_;
//- First instance and size of CurvedEdges (only partially used)
arrayRange arrayRangeEdges_;
//- First instance and size of block corners
// only partially used
partInfo partInfoCorners_;
//- First instance and size of block corners (only partially used)
arrayRange arrayRangeCorners_;
//- List of point numbers for rendering to window
List<vtkTextActor*> pointNumberTextActorsPtrs_;
@ -205,7 +201,7 @@ class vtkPV3blockMesh
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
const partInfo&,
const arrayRange&,
const label datasetNo,
const std::string& datasetName
);
@ -215,7 +211,7 @@ class vtkPV3blockMesh
static vtkDataSet* GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
const partInfo&,
const arrayRange&,
const label datasetNo
);
@ -224,7 +220,7 @@ class vtkPV3blockMesh
static label GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
const partInfo&
const arrayRange&
);
//- Update boolList from GUI selection
@ -240,10 +236,10 @@ class vtkPV3blockMesh
// Update information helper functions
//- Internal block info
void updateInfoBlocks();
void updateInfoBlocks(vtkDataArraySelection*);
//- block curved edges info
void updateInfoEdges();
void updateInfoEdges(vtkDataArraySelection*);
// Update helper functions
@ -271,7 +267,7 @@ class vtkPV3blockMesh
static wordHashSet getSelected
(
vtkDataArraySelection*,
const partInfo&
const arrayRange&
);
//- Retrieve the current selections
@ -281,7 +277,7 @@ class vtkPV3blockMesh
static stringList getSelectedArrayEntries
(
vtkDataArraySelection*,
const partInfo&
const arrayRange&
);
//- Set selection(s)

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -52,9 +52,9 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
int& blockNo
)
{
vtkDataArraySelection* selection = reader_->GetPartSelection();
partInfo& selector = partInfoBlocks_;
selector.block(blockNo); // set output block
vtkDataArraySelection* selection = reader_->GetBlockSelection();
arrayRange& range = arrayRangeBlocks_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const blockMesh& blkMesh = *meshPtr_;
@ -70,25 +70,18 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
for
(
int partId = selector.start();
partId < selector.end();
int partId = range.start();
partId < range.end();
++partId, ++blockI
)
{
if (!partStatus_[partId])
if (!blockStatus_[partId])
{
continue;
}
const blockDescriptor& blockDef = blkMesh[blockI].blockDef();
word partName("block");
// // append the (optional) zone name
// if (!blockDef.zoneName().empty())
// {
// partName += " - " + blockDef.zoneName();
// }
//
vtkUnstructuredGrid* vtkmesh = vtkUnstructuredGrid::New();
// Convert Foam mesh vertices to VTK
@ -123,7 +116,7 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
AddToBlock
(
output, vtkmesh, selector, datasetNo,
output, vtkmesh, range, datasetNo,
selection->GetArrayName(partId)
);
@ -152,9 +145,9 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
)
{
vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
partInfo& selector = partInfoEdges_;
arrayRange& range = arrayRangeEdges_;
selector.block(blockNo); // set output block
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const blockMesh& blkMesh = *meshPtr_;
@ -165,8 +158,8 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
for
(
int partId = selector.start();
partId < selector.end();
int partId = range.start();
partId < range.end();
++partId, ++edgeI
)
{
@ -187,9 +180,7 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
edgeList blkEdges = blockDef.blockShape().edges();
// find the corresponding edge within the block
label foundEdgeI = -1;
forAll(blkEdges, blkEdgeI)
{
@ -236,7 +227,7 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
AddToBlock
(
output, vtkmesh, selector, datasetNo,
output, vtkmesh, range, datasetNo,
selection->GetArrayName(partId)
);
@ -269,8 +260,8 @@ void Foam::vtkPV3blockMesh::convertMeshCorners
int& blockNo
)
{
partInfo& selector = partInfoCorners_;
selector.block(blockNo); // set output block
arrayRange& range = arrayRangeCorners_;
range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const pointField& blockPoints = meshPtr_->blockPointField();
@ -310,7 +301,11 @@ void Foam::vtkPV3blockMesh::convertMeshCorners
vtkmesh->SetVerts(vtkcells);
vtkcells->Delete();
AddToBlock(output, vtkmesh, selector, datasetNo, partInfoCorners_.name());
AddToBlock
(
output, vtkmesh, range, datasetNo,
arrayRangeCorners_.name()
);
vtkmesh->Delete();
datasetNo++;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2008-2009 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -71,12 +71,12 @@ void Foam::vtkPV3blockMesh::AddToBlock
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
const partInfo& selector,
const arrayRange& range,
const label datasetNo,
const std::string& datasetName
)
{
const int blockNo = selector.block();
const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@ -112,7 +112,7 @@ void Foam::vtkPV3blockMesh::AddToBlock
output->GetMetaData(blockNo)->Set
(
vtkCompositeDataSet::NAME(),
selector.name()
range.name()
);
}
@ -130,11 +130,11 @@ void Foam::vtkPV3blockMesh::AddToBlock
vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
const partInfo& selector,
const arrayRange& range,
const label datasetNo
)
{
const int blockNo = selector.block();
const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@ -152,10 +152,10 @@ vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
Foam::label Foam::vtkPV3blockMesh::GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
const partInfo& selector
const arrayRange& range
)
{
const int blockNo = selector.block();
const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@ -191,13 +191,13 @@ Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
(
vtkDataArraySelection* select,
const partInfo& selector
const arrayRange& range
)
{
int nElem = select->GetNumberOfArrays();
wordHashSet selections(2*nElem);
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@ -251,13 +251,13 @@ Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
(
vtkDataArraySelection* select,
const partInfo& selector
const arrayRange& range
)
{
stringList selections(selector.size());
stringList selections(range.size());
label nElem = 0;
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@ -270,7 +270,7 @@ Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
if (debug)
{
Info<< "available(";
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
Info<< " \"" << select->GetArrayName(elemI) << "\"";
}

View File

@ -87,7 +87,7 @@ int USERD_set_filenames
// set the number of fields and store their names
// a valid field must exist for all time-steps
runTime.setTime(timeDirs[timeDirs.size()-1], timeDirs.size()-1);
runTime.setTime(timeDirs.last(), timeDirs.size()-1);
IOobjectList objects(*meshPtr, runTime.timeName());
fieldNames = objects.names();

View File

@ -6,3 +6,5 @@
# then
# wmake fieldview9Reader
# fi
# ----------------------------------------------------------------- end-of-file

View File

@ -103,7 +103,7 @@ int main(int argc, char *argv[])
{
startIds[i+1] += startIds[i] + numIds[i];
}
label nParticle = startIds[startIds.size()-1] + numIds[startIds.size()-1];
label nParticle = startIds.last() + numIds[startIds.size()-1];

View File

@ -83,7 +83,7 @@ int main(int argc, char *argv[])
Info<< "\nVmax = " << Vmax;
Info<< ", Vmin = " << Vmin << endl;
Info<< "Vmax/Vmin = " << Vmax/Vmin << endl;
Info<< "\nEnd" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -90,7 +90,7 @@ int main(int argc, char *argv[])
# include "collapse.H"
}
Info<< "\nEnd" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -101,7 +101,7 @@ int main(int argc, char *argv[])
}
}
Info<< "\nEnd" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -47,7 +47,7 @@ int main(int argc, char *argv[])
# include "createMesh.H"
runTime.setTime(timeDirs[timeDirs.size()-1], timeDirs.size()-1);
runTime.setTime(timeDirs.last(), timeDirs.size()-1);
volScalarField pMean
(

View File

@ -89,7 +89,7 @@ int main(int argc, char *argv[])
Info<< nl << "ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
Info << nl << "End\n" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -235,7 +235,7 @@ int main(int argc, char *argv[])
);
}
Info<< "\nEnd" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -1,5 +1,8 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
set -x
wmake libso tabulatedWallFunction
wmake
# ----------------------------------------------------------------- end-of-file

View File

@ -93,13 +93,13 @@ Foam::scalar Foam::tabulatedWallFunctions::general::interpolate
{
case itLinear:
{
if (xi < x[0])
if (xi <= x[0])
{
return fx[0];
}
else if (xi > x[x.size()-1])
else if (xi >= x.last())
{
return fx[x.size()-1];
return fx.last();
}
else
{

View File

@ -128,7 +128,7 @@ static void splitTri
labelledTri
(
f[fp2],
splitPoints[splitPoints.size()-1],
splitPoints.last(),
f[fp1],
f.region()
)
@ -144,7 +144,7 @@ static void splitTri
(
f[fp1],
f[fp2],
splitPoints[splitPoints.size()-1],
splitPoints.last(),
f.region()
)
);

View File

@ -130,18 +130,7 @@ OpenFOAM)
esac
case "$ParaView_VERSION" in
2*)
trap "rm -f paraFoam.pvs $caseFile 2>/dev/null; exit 0" EXIT TERM INT
touch "$caseFile"
# since we are now in the cwd, %CASE% is '$PWD/$caseFile'
sed -e s@%CASE%@$PWD/$caseFile@g \
$WM_PROJECT_DIR/bin/tools/paraFoam.pvs > paraFoam.pvs
paraview paraFoam.pvs
;;
*)
3*)
# only create/remove caseFile if it didn't already exist
[ -e $caseFile ] || {
trap "rm -f $caseFile 2>/dev/null; exit 0" EXIT TERM INT

View File

@ -41,8 +41,7 @@ int main(int argc, char *argv[])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info << "End\n" << endl;
Info<< "\nEnd\n" << endl;
return 0;
}

View File

@ -1,12 +0,0 @@
# ParaView State Version 2.2
set kw(vtkTemp2) [$Application GetMainWindow]
set kw(vtkTemp29) [$kw(vtkTemp2) GetMainView]
set kw(vtkTemp980) [$kw(vtkTemp2) GetAnimationManager]
[$kw(vtkTemp2) GetRotateCameraButton] SetState 1
$kw(vtkTemp2) ChangeInteractorStyle 1
set kw(vtkTemp840) [$kw(vtkTemp2) InitializeReadCustom "FoamReader" "%CASE%"]
$kw(vtkTemp2) ReadFileInformation $kw(vtkTemp840) "%CASE%"
$kw(vtkTemp2) FinalizeRead $kw(vtkTemp840) "%CASE%"
set kw(vtkTemp868) [$kw(vtkTemp840) GetPVWidget {Filename}]
$kw(vtkTemp868) SetValue "%CASE%"

View File

@ -689,13 +689,13 @@ HTML_FILE_EXTENSION = .html
# each generated HTML page. If it is left blank doxygen will generate a
# standard header.
HTML_HEADER = FoamHeader.html
HTML_HEADER = $(WM_PROJECT_DIR)/doc/Doxygen/FoamHeader.html
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
HTML_FOOTER = FoamFooter.html
HTML_FOOTER = $(WM_PROJECT_DIR)/doc/Doxygen/FoamFooter.html
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to

View File

@ -222,4 +222,4 @@ The doc/Doxygen/tools directory contains miscellaneous scripts for finding
and possibly repairing documentation issues.
Updated: 2008-03-17
Updated: 2009-11-27

View File

@ -10,239 +10,252 @@
*** General
+ 80 character lines max
+ The normal indentation is 4 spaces per logical level.
+ Use spaces for indentation, not tab characters.
+ Avoid trailing whitespace.
+ The body of control statements (eg, if, else, while, etc).
always delineated with brace brackets
always delineated with brace brackets. A possible exception can be
made with 'break' or 'continue' as part of a control structure.
+ stream output
<< is always four characters after the start of the stream, so that the <<
symbols align, i.e.
Info<<
os <<
=<<= is always four characters after the start of the stream,
so that the =<<= symbols align, i.e.
:Info<< ...
:os << ...
so
WarningIn("className::functionName()")
<< "Warning message"
:WarningIn("className::functionName()")
: << "Warning message"
NOT
WarningIn("className::functionName()")
<< "Warning message"
:WarningIn("className::functionName()")
:<< "Warning message"
+ no unnecessary class section headers, i.e. remove
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// Check
// Edit
// Write
:// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
:
:// Check
:
:// Edit
:
:// Write
if they contain nothing, even if planned for 'future use'
+ class titles are centred
/*---------------------------------------------------------------------------*\
Class exampleClass Declaration
\*---------------------------------------------------------------------------*/
:/*---------------------------------------------------------------------------*\
: Class exampleClass Declaration
:\*---------------------------------------------------------------------------*/
NOT
/*---------------------------------------------------------------------------*\
Class exampleClass Declaration
\*---------------------------------------------------------------------------*/
:/*---------------------------------------------------------------------------*\
: Class exampleClass Declaration
:\*---------------------------------------------------------------------------*/
*** .H Files
*** The =.H= Files
+ header file spacing
Leave two empty lines between sections (as per functions in the .C file etc)
Leave two empty lines between sections (as per functions in the =.C= file etc)
+ use "//- Comment" comments in header file
+ add descriptions to class data and functions
+ destructor
If adding a comment to the destructor - use //- and code as a normal function:
//- Destructor
~className();
://- Destructor
:~className();
+ inline functions
Use inline functions where appropriate in a separate classNameI.H file.
Do not clutter up the header file with function bodies
Avoid cluttering the header file with function bodies.
*** .C Files
+ Do not open/close namespaces in a .C file
*** The =.C= Files
+ Do not open/close namespaces in a =.C= file
Fully scope the function name, i.e.
Foam::returnType Foam::className::functionName()
:Foam::returnType Foam::className::functionName()
NOT
namespace Foam
{
...
returnType className::functionName()
...
}
:namespace Foam
:{
: ...
:
: returnType className::functionName()
:
: ...
:}
EXCEPTION
When there are multiple levels of namespace, they may be used in the .C
When there are multiple levels of namespace, they may be used in the =.C=
file, i.e.
namespace Foam
{
namespace compressible
{
namespace RASModels
{
...
} // End namespace RASModels
} // End namespace compressible
} // End namespace Foam
:namespace Foam
:{
:namespace compressible
:{
:namespace RASModels
:{
:
: ...
:
:} // End namespace RASModels
:} // End namespace compressible
:} // End namespace Foam
+ Use two empty lines between functions
*** Coding Practise
*** Coding Practice
+ passing data as arguments or return
Pass label and scalar as copy, anything bigger by reference
Pass bool, label and scalar as copy, anything larger by reference.
+ const
Use everywhere it is applicable.
+ variable initialisation using "="
const className& variableName = otherClass.data();
: const className& variableName = otherClass.data();
NOT
const className& variableName(otherClass.data());
: const className& variableName(otherClass.data());
+ virtual functions
If a class is virtual - make all derived classes virtual.
*** Conditional Statements
if (condition)
{
code;
}
:if (condition)
:{
: code;
:}
OR
if
(
long condition
)
{
code;
}
:if
:(
: long condition
:)
:{
: code;
:}
NOT (no space between "if" and "(")
if(condition)
{
code;
}
:if(condition)
:{
: code;
:}
*** `for' Loops
for (i = 0; i < maxI; i++)
{
code;
}
*** =for= and =while= Loops
:for (i = 0; i < maxI; i++)
:{
: code;
:}
OR
for
(
i = 0;
i < maxI;
i++
)
{
code;
}
:for
:(
: i = 0;
: i < maxI;
: i++
:)
:{
: code;
:}
NOT (no space between "for" and "(")
for(i = 0; i < maxI; i++)
{
code;
}
:for(i = 0; i < maxI; i++)
:{
: code;
:}
*** `forAll' loops
like for loops, but
Note that when indexing through iterators, it is often slightly more
efficient to use the pre-increment form. Eg, =++iter= instead of =iter++=
forAll(
*** =forAll= , =forAllIter=, etc. loops
like =for= loops, but
:forAll(
NOT
forAll (
:forAll (
*** Splitting Over Multiple Lines
+ splitting return type and function name
**** Splitting return type and function name
+ split initially after the function return type and left align
+ do not put "const" onto it's own line - use a split to keep it with the
function name and arguments.
+ do not put "const" onto its own line - use a split to keep it with
the function name and arguments.
so:
const Foam::longReturnTypeName&
Foam::longClassName::longFunctionName const
:const Foam::longReturnTypeName&
:Foam::longClassName::longFunctionName const
NOT
const Foam::longReturnTypeName&
Foam::longClassName::longFunctionName const
:const Foam::longReturnTypeName&
: Foam::longClassName::longFunctionName const
NOR
const Foam::longReturnTypeName& Foam::longClassName::longFunctionName
const
:const Foam::longReturnTypeName& Foam::longClassName::longFunctionName
:const
NOR
const Foam::longReturnTypeName& Foam::longClassName::
longFunctionName const
:const Foam::longReturnTypeName& Foam::longClassName::
:longFunctionName const
+ if need to split again, split at the function name (leaving behind the
preceding scoping "::"'s), and again, left align, i.e.
+ if it needs to be split again, split at the function name (leaving
behind the preceding scoping "::"s), and again, left align, i.e.
const Foam::longReturnTypeName&
Foam::veryveryveryverylongClassName::
veryveryveryverylongFunctionName const
For example,
+ splitting long lines at an "="
:const Foam::longReturnTypeName&
:Foam::veryveryveryverylongClassName::
:veryveryveryverylongFunctionName const
**** Splitting long lines at an "="
Indent after split
variableName =
longClassName.longFunctionName(longArgument);
:variableName =
: longClassName.longFunctionName(longArgument);
OR (where necessary)
variableName =
longClassName.longFunctionName
(
longArgument1,
longArgument2
);
:variableName =
: longClassName.longFunctionName
: (
: longArgument1,
: longArgument2
: );
NOT
variableName =
longClassName.longFunctionName(longArgument);
:variableName =
:longClassName.longFunctionName(longArgument);
NOR
variableName = longClassName.longFunctionName
(
longArgument1,
longArgument2
);
:variableName = longClassName.longFunctionName
:(
: longArgument1,
: longArgument2
:);
*** Maths and Logic
+ operator spacing
@ -258,18 +271,201 @@
with the operator on the lower line. Align operator so that first
variable, function or bracket on the next line is 4 spaces indented i.e.
variableName =
a*(a + b)
- exp(c/d)
*(k + t)
:variableName =
: a * (a + b)
: - exp(c/d)
: * (k + t);
This is sometime more legible when surrounded by extra parentheses:
:variableName =
:(
: a * (a + b)
: - exp(c/d)
: * (k + t)
:);
+ splitting logical tests over several lines
indent operator so that the next variable to test is aligned with the
four space indentation, i.e.
outdent the operator so that the next variable to test is aligned with
the four space indentation, i.e.
:if
:(
: a == true
: && b == c
:)
** Documentation
*** General
+ For readability in the comment blocks, certain tags are used that are
translated by pre-filtering the file before sending it to Doxygen.
+ The tags start in column 1, the contents follow on the next lines and
indented by 4 spaces. The filter removes the leading 4 spaces from the
following lines until the next tag that starts in column 1.
+ The 'Class' and 'Description' tags are the most important ones.
+ The first paragraph following the 'Description' will be used for the
brief description, the remaining paragraphs become the detailed
description.
For example,
:Class
: Foam::myClass
:
:Description
: A class for specifying the documentation style.
:
: The class is implemented as a set of recommendations that may
: sometimes be useful.
+ The class name must be qualified by its namespace, otherwise Doxygen
will think you are documenting some other class.
+ If you don't have anything to say about the class (at the moment), use
the namespace-qualified class name for the description. This aids with
finding these under-documented classes later.
:Class
: Foam::myUnderDocumentedClass
:
:Description
: Foam::myUnderDocumentedClass
+ Use 'Class' and 'Namespace' tags in the header files.
The Description block then applies to documenting the class.
+ Use 'InClass' and 'InNamespace' in the source files.
The Description block then applies to documenting the file itself.
:InClass
: Foam::myClass
:
:Description
: Implements the read and writing of files.
*** Doxygen Special Commands
Doxygen has a large number of special commands with a '\' prefix or a
(alternatively) an '@' prefix.
The '@' prefix form is recommended for most Doxygen specials, since it
has the advantage of standing out. It also happens to be what projects
like gcc and VTK are using.
The '\' prefix form, however, looks a bit better for the '\n' newline
command and when escaping single characters - eg, '\@', '\<', '\>', etc.
Since the filtering removes the leading 4 spaces within the blocks, the
Doxygen commmands can be inserted within the block without problems.
:InClass
: Foam::myClass
:
:Description
: Implements the read and writing of files.
:
: An example input file:
: @verbatim
: patchName
: {
: type myPatchType;
: refValue 100;
: value uniform 1;
: }
: @endverbatim
:
: Within the implementation, a loop over all patches is done:
: @code
: forAll(patches, patchI)
: {
: ... // some operation
: }
: @endcode
*** HTML Special Commands
Since Doxygen also handles HTML tags to a certain extent, the angle
brackets need quoting in the documentation blocks. Non-HTML tags cause
Doxygen to complain, but seem to work anyhow.
eg,
+ The template with type <HR> is a bad example.
+ The template with type \<HR\> is a better example.
+ The template with type <Type> causes Doxygen to complain about an
unknown html type, but it seems to work okay anyhow.
*** Documenting Namespaces
+ If namespaces are explictly declared with the Namespace() macro,
they should be documented there.
+ If the namespaces is used to hold sub-models, the namespace can be
documented in the same file as the class with the model selector.
eg,
:documented namespace 'Foam::functionEntries' within the
:class 'Foam::functionEntry'
+ If nothing else helps, find some sensible header.
eg,
:namespace 'Foam' is documented in the foamVersion.H file
*** Documenting Typedefs and classes defined via macros
... not yet properly resolved
*** Documenting Applications
Any number of classes might be defined by a particular application, but
these classes will not, however, be available to other parts of
OpenFOAM. At the moment, the sole purpuse for running Doxygen on the
applications is to extract program usage information for the '-doc'
option.
The documentation for a particular application is normally contained
within the first comment block in a =.C= source file. The solution is this
to invoke a special filter for the "applications/{solver,utilities}"
directories that only allows the initial comment block for the =.C= files
through.
The layout of the application documentation has not yet been finalized,
but foamToVTK shows an initial attempt.
*** Orthography (an opinion)
Given the origins of OpenFOAM, the British spellings (eg, neighbour and
not neighbor) are generally favoured. For code sections that interact
with external libraries, it can be useful to adopt American spellings,
especially for names that constitute a significant part of the external
library - eg, 'color' within graphics sub-systems.
Both '-ize' and the '-ise' variant are found in the code comments. If
used as a variable or class method name, it is probably better to use
'-ize', which is considered the main form by the Oxford University
Press.
Eg,
:myClass.initialize()
The word "its" (possesive) vs. "it's" (colloquial for "it is" or "it has")
seems to confuse non-native (and some native) English speakers.
It is better to donate the extra keystrokes and write "it is" or "it has".
Any remaining "it's" are likely an incorrect spelling of "its".
if
(
a == true
&& b == c
)

View File

@ -27,7 +27,7 @@ wmake libso edgeMesh
wmake libso surfMesh
# Decomposition methods needed by meshTools
decompositionMethods/Allwmake
wmake libso parallel/decompositionMethods
wmake libso meshTools
wmake libso finiteVolume
@ -46,6 +46,7 @@ thermophysicalModels/Allwmake
transportModels/Allwmake
turbulenceModels/Allwmake
lagrangian/Allwmake
parallel/Allwmake
postProcessing/Allwmake
conversion/Allwmake
mesh/Allwmake

View File

@ -144,7 +144,7 @@ public:
void clear();
//- Transfer the contents of the argument into this DictionaryBase
// and annull the argument.
// and annul the argument.
void transfer(DictionaryBase<IDLListType, T>&);
// Member operators

View File

@ -287,7 +287,7 @@ public:
void shrink();
//- Transfer the contents of the argument table into this table
// and annull the argument table.
// and annul the argument table.
void transfer(HashTable<T, Key, Hash>&);
//- Transfer contents to the Xfer container
@ -463,7 +463,7 @@ public:
inline iterator operator++(int);
};
//- iterator set to the begining of the HashTable
//- iterator set to the beginning of the HashTable
inline iterator begin();

View File

@ -180,7 +180,7 @@ inline Foam::HashTable<T, Key, Hash>::iteratorBase::iteratorBase
entryPtr_(0),
hashIndex_(0)
{
if (hashTable_->nElmts_ && hashTable_->table_)
if (hashTable_->nElmts_)
{
// find first non-NULL table entry
while

View File

@ -247,7 +247,7 @@ public:
void clearStorage();
//- Transfer the contents of the argument table into this table
// and annull the argument table.
// and annul the argument table.
void transfer(StaticHashTable<T, Key, Hash>&);
//- Transfer contents to the Xfer container

View File

@ -140,7 +140,7 @@ public:
void clear();
//- Transfer the contents of the argument into this List
// and annull the argument list.
// and annul the argument list.
void transfer(ILList<LListBase, T>&);

View File

@ -202,7 +202,7 @@ public:
void clear();
//- Transfer the contents of the argument into this List
// and annull the argument list.
// and annul the argument list.
void transfer(LList<LListBase, T>&);
// Member operators

View File

@ -156,7 +156,7 @@ public:
void clear();
//- Transfer the contents of the argument into this List
// and annull the argument list.
// and annul the argument list.
void transfer(LPtrList<LListBase, T>&);

View File

@ -172,7 +172,7 @@ public:
inline void clear();
//- Transfer the contents of the argument into this List
// and annull the argument list.
// and annul the argument list.
inline void transfer(DLListBase&);
// STL iterator

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