mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'feature-shared-file' into 'develop'
Feature shared file This contains the functionality from dev to do with (processor-)global/local file marking. global files are those that are the same on all processors (e.g. dictionaries) and so can be read on the master processor only. 'local' files are specific to the processor (e.g. fields). See merge request !30
This commit is contained in:
@ -15,8 +15,8 @@ OpenCFD Limited, owner of the OpenFOAM Trademark, has granted the use of the Tra
|
|||||||
# Useful Links
|
# Useful Links
|
||||||
- [Download and installation instructions](http://www.openfoam.com/releases)
|
- [Download and installation instructions](http://www.openfoam.com/releases)
|
||||||
- [Documentation](http://www.openfoam.com/documentation)
|
- [Documentation](http://www.openfoam.com/documentation)
|
||||||
- [Reporting bugs/issues (including bugs/suggestions/feature requests) in OpenFOAM+](http://www.openfoam.com/???)
|
- [Reporting bugs/issues (including bugs/suggestions/feature requests) in OpenFOAM+](http://www.openfoam.com/code/bug-reporting.php)
|
||||||
- [Collaborative and Community-based Developments](http://www.openfoam.com/development/community-projects.php)
|
- [Collaborative and Community-based Developments](http://www.openfoam.com/services/community-projects.php)
|
||||||
- [Contacting OpenCFD](http://www.openfoam.com/contact)
|
- [Contacting OpenCFD](http://www.openfoam.com/contact)
|
||||||
|
|
||||||
Copyright 2016 OpenCFD Ltd
|
Copyright 2016 OpenCFD Ltd
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
surfaceScalarField* phiBPtr;
|
surfaceScalarField* phiBPtr;
|
||||||
|
|
||||||
if (phiBHeader.headerOk())
|
if (phiBHeader.typeHeaderOk<surfaceScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading field phiB\n" << endl;
|
Info<< "Reading field phiB\n" << endl;
|
||||||
|
|
||||||
|
|||||||
@ -76,7 +76,7 @@
|
|||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (betavSolidIO.headerOk())
|
if (betavSolidIO.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
betavSolid.set
|
betavSolid.set
|
||||||
(
|
(
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (turbulenceHeader.headerOk())
|
if (turbulenceHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
autoPtr<compressible::turbulenceModel> turbulence
|
autoPtr<compressible::turbulenceModel> turbulence
|
||||||
(
|
(
|
||||||
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
talphaEff = turbulence->alphaEff();
|
talphaEff = turbulence->alphaEff();
|
||||||
}
|
}
|
||||||
else if (RASHeader.headerOk())
|
else if (RASHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
autoPtr<compressible::RASModel> turbulence
|
autoPtr<compressible::RASModel> turbulence
|
||||||
(
|
(
|
||||||
@ -55,7 +55,7 @@
|
|||||||
|
|
||||||
talphaEff = turbulence->alphaEff();
|
talphaEff = turbulence->alphaEff();
|
||||||
}
|
}
|
||||||
else if (LESHeader.headerOk())
|
else if (LESHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
autoPtr<compressible::LESModel> turbulence
|
autoPtr<compressible::LESModel> turbulence
|
||||||
(
|
(
|
||||||
|
|||||||
@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
autoPtr<volVectorField> HPtr;
|
autoPtr<volVectorField> HPtr;
|
||||||
|
|
||||||
if (Hheader.headerOk())
|
if (Hheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< "\nReading field H\n" << endl;
|
Info<< "\nReading field H\n" << endl;
|
||||||
|
|
||||||
@ -97,7 +97,7 @@
|
|||||||
|
|
||||||
autoPtr<volVectorField> HdotGradHPtr;
|
autoPtr<volVectorField> HdotGradHPtr;
|
||||||
|
|
||||||
if (HdotGradHheader.headerOk())
|
if (HdotGradHheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading field HdotGradH" << endl;
|
Info<< "Reading field HdotGradH" << endl;
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,13 @@
|
|||||||
|
|
||||||
autoPtr<uniformDimensionedVectorField> linearAccelerationPtr;
|
autoPtr<uniformDimensionedVectorField> linearAccelerationPtr;
|
||||||
|
|
||||||
if (linearAccelerationHeader.headerOk())
|
if
|
||||||
|
(
|
||||||
|
linearAccelerationHeader.typeHeaderOk<uniformDimensionedVectorField>
|
||||||
|
(
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Info<< " Reading " << linearAccelerationHeader.name() << endl;
|
Info<< " Reading " << linearAccelerationHeader.name() << endl;
|
||||||
|
|
||||||
@ -33,7 +39,7 @@
|
|||||||
|
|
||||||
autoPtr<uniformDimensionedVectorField> angularVelocityPtr;
|
autoPtr<uniformDimensionedVectorField> angularVelocityPtr;
|
||||||
|
|
||||||
if (angularVelocityHeader.headerOk())
|
if (angularVelocityHeader.typeHeaderOk<uniformDimensionedVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading " << angularVelocityHeader.name() << endl;
|
Info<< " Reading " << angularVelocityHeader.name() << endl;
|
||||||
|
|
||||||
@ -55,7 +61,13 @@
|
|||||||
|
|
||||||
autoPtr<uniformDimensionedVectorField> angularAccelerationPtr;
|
autoPtr<uniformDimensionedVectorField> angularAccelerationPtr;
|
||||||
|
|
||||||
if (angularAccelerationHeader.headerOk())
|
if
|
||||||
|
(
|
||||||
|
angularAccelerationHeader.typeHeaderOk<uniformDimensionedVectorField>
|
||||||
|
(
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Info<< " Reading " << angularAccelerationHeader.name() << endl;
|
Info<< " Reading " << angularAccelerationHeader.name() << endl;
|
||||||
|
|
||||||
@ -77,7 +89,13 @@
|
|||||||
|
|
||||||
autoPtr<uniformDimensionedVectorField> centreOfRotationPtr;
|
autoPtr<uniformDimensionedVectorField> centreOfRotationPtr;
|
||||||
|
|
||||||
if (centreOfRotationHeader.headerOk())
|
if
|
||||||
|
(
|
||||||
|
centreOfRotationHeader.typeHeaderOk<uniformDimensionedVectorField>
|
||||||
|
(
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Info<< " Reading " << centreOfRotationHeader.name() << endl;
|
Info<< " Reading " << centreOfRotationHeader.name() << endl;
|
||||||
|
|
||||||
|
|||||||
@ -122,7 +122,7 @@ Foam::phaseModel::phaseModel
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (phiHeader.headerOk())
|
if (phiHeader.typeHeaderOk<surfaceScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading face flux field " << phiName << endl;
|
Info<< "Reading face flux field " << phiName << endl;
|
||||||
|
|
||||||
|
|||||||
@ -54,7 +54,7 @@ Foam::MovingPhaseModel<BasePhaseModel>::phi(const volVectorField& U) const
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (phiHeader.headerOk())
|
if (phiHeader.typeHeaderOk<surfaceScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading face flux field " << phiName << endl;
|
Info<< "Reading face flux field " << phiName << endl;
|
||||||
|
|
||||||
|
|||||||
@ -120,7 +120,7 @@ Foam::phaseModel::phaseModel
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (phiHeader.headerOk())
|
if (phiHeader.typeHeaderOk<surfaceScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading face flux field " << phiName << endl;
|
Info<< "Reading face flux field " << phiName << endl;
|
||||||
|
|
||||||
|
|||||||
@ -1174,7 +1174,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Info << nl << "End" << endl;
|
Info<< "\nEnd\n" << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -650,7 +650,7 @@ int main(int argc, char *argv[])
|
|||||||
// corrector for mesh motion
|
// corrector for mesh motion
|
||||||
twoDPointCorrector* correct2DPtr = NULL;
|
twoDPointCorrector* correct2DPtr = NULL;
|
||||||
|
|
||||||
if (motionObj.headerOk())
|
if (motionObj.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading " << runTime.constant() / "motionProperties"
|
Info<< "Reading " << runTime.constant() / "motionProperties"
|
||||||
<< endl << endl;
|
<< endl << endl;
|
||||||
|
|||||||
@ -238,7 +238,7 @@ int main(int argc, char *argv[])
|
|||||||
runTime
|
runTime
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!readLevel && refHeader.headerOk())
|
if (!readLevel && refHeader.typeHeaderOk<labelIOList>(true))
|
||||||
{
|
{
|
||||||
WarningInFunction
|
WarningInFunction
|
||||||
<< "Detected " << refHeader.name() << " file in "
|
<< "Detected " << refHeader.name() << " file in "
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -82,7 +82,7 @@ Foam::edgeStats::edgeStats(const polyMesh& mesh)
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (motionObj.headerOk())
|
if (motionObj.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading " << mesh.time().constant() / "motionProperties"
|
Info<< "Reading " << mesh.time().constant() / "motionProperties"
|
||||||
<< endl << endl;
|
<< endl << endl;
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
IOdictionary timeObject
|
IOdictionary timeObject
|
||||||
(
|
(
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
IOdictionary timeObject
|
IOdictionary timeObject
|
||||||
(
|
(
|
||||||
|
|||||||
@ -144,7 +144,7 @@ int main(int argc, char *argv[])
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!meshDictIO.headerOk())
|
if (!meshDictIO.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< meshDictIO.objectPath()
|
<< meshDictIO.objectPath()
|
||||||
|
|||||||
@ -96,7 +96,7 @@ void createDummyFvMeshFiles(const polyMesh& mesh, const word& regionName)
|
|||||||
|
|
||||||
Info<< "Testing:" << io.objectPath() << endl;
|
Info<< "Testing:" << io.objectPath() << endl;
|
||||||
|
|
||||||
if (!io.headerOk())
|
if (!io.typeHeaderOk<IOdictionary>(false))
|
||||||
{
|
{
|
||||||
Info<< "Writing dummy " << regionName/io.name() << endl;
|
Info<< "Writing dummy " << regionName/io.name() << endl;
|
||||||
dictionary dummyDict;
|
dictionary dummyDict;
|
||||||
@ -122,7 +122,7 @@ void createDummyFvMeshFiles(const polyMesh& mesh, const word& regionName)
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!io.headerOk())
|
if (!io.typeHeaderOk<IOdictionary>(false))
|
||||||
{
|
{
|
||||||
Info<< "Writing dummy " << regionName/io.name() << endl;
|
Info<< "Writing dummy " << regionName/io.name() << endl;
|
||||||
dictionary dummyDict;
|
dictionary dummyDict;
|
||||||
|
|||||||
@ -366,7 +366,7 @@ void createDummyFvMeshFiles(const polyMesh& mesh, const word& regionName)
|
|||||||
|
|
||||||
Info<< "Testing:" << io.objectPath() << endl;
|
Info<< "Testing:" << io.objectPath() << endl;
|
||||||
|
|
||||||
if (!io.headerOk())
|
if (!io.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
Info<< "Writing dummy " << regionName/io.name() << endl;
|
Info<< "Writing dummy " << regionName/io.name() << endl;
|
||||||
dictionary dummyDict;
|
dictionary dummyDict;
|
||||||
@ -392,7 +392,7 @@ void createDummyFvMeshFiles(const polyMesh& mesh, const word& regionName)
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!io.headerOk())
|
if (!io.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
Info<< "Writing dummy " << regionName/io.name() << endl;
|
Info<< "Writing dummy " << regionName/io.name() << endl;
|
||||||
dictionary dummyDict;
|
dictionary dummyDict;
|
||||||
@ -2655,7 +2655,7 @@ int main(int argc, char *argv[])
|
|||||||
mesh,
|
mesh,
|
||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<pointIOField>(true))
|
||||||
{
|
{
|
||||||
// Read patchFaceCentres and patchEdgeCentres
|
// Read patchFaceCentres and patchEdgeCentres
|
||||||
Info<< "Reading patch face,edge centres : "
|
Info<< "Reading patch face,edge centres : "
|
||||||
|
|||||||
@ -70,7 +70,7 @@ Foam::DelaunayMesh<Triangulation>::DelaunayMesh
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (pts.headerOk())
|
if (pts.typeHeaderOk<pointIOField>(true))
|
||||||
{
|
{
|
||||||
labelIOField types
|
labelIOField types
|
||||||
(
|
(
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -394,7 +394,7 @@ Foam::cellShapeControlMesh::cellShapeControlMesh(const Time& runTime)
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<pointScalarField>(true))
|
||||||
{
|
{
|
||||||
pointScalarField sizes(io, pointMesh::New(mesh));
|
pointScalarField sizes(io, pointMesh::New(mesh));
|
||||||
|
|
||||||
|
|||||||
@ -75,43 +75,65 @@ pointFile::pointFile
|
|||||||
|
|
||||||
List<Vb::Point> pointFile::initialPoints() const
|
List<Vb::Point> pointFile::initialPoints() const
|
||||||
{
|
{
|
||||||
pointIOField points
|
pointField points;
|
||||||
(
|
{
|
||||||
IOobject
|
// Look for points
|
||||||
|
IOobject pointsIO
|
||||||
(
|
(
|
||||||
pointFileName_.name(),
|
pointFileName_.name(),
|
||||||
time().timeName(),
|
time().timeName(),
|
||||||
time(),
|
time(),
|
||||||
IOobject::MUST_READ,
|
IOobject::MUST_READ,
|
||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
)
|
);
|
||||||
);
|
|
||||||
|
|
||||||
Info<< " Inserting points from file " << pointFileName_ << endl;
|
Info<< " Inserting points from file " << pointFileName_ << endl;
|
||||||
|
|
||||||
if (points.empty())
|
// See if processor local file
|
||||||
{
|
if (pointsIO.typeHeaderOk<pointIOField>(true))
|
||||||
FatalErrorInFunction
|
|
||||||
<< "Point file contain no points"
|
|
||||||
<< exit(FatalError) << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Pstream::parRun())
|
|
||||||
{
|
|
||||||
// Testing filePath to see if the file originated in a processor
|
|
||||||
// directory, if so, assume that the points in each processor file
|
|
||||||
// are unique. They are unlikely to belong on the current
|
|
||||||
// processor as the background mesh is unlikely to be the same.
|
|
||||||
|
|
||||||
const bool isParentFile = (points.objectPath() != points.filePath());
|
|
||||||
|
|
||||||
if (!isParentFile)
|
|
||||||
{
|
{
|
||||||
decomposition().distributePoints(points);
|
// Found it (processor local)
|
||||||
|
points = pointIOField(pointsIO);
|
||||||
|
|
||||||
|
if (points.empty())
|
||||||
|
{
|
||||||
|
FatalErrorIn("List<Vb::Point> pointFile::initialPoints() const")
|
||||||
|
<< "Point file contain no points"
|
||||||
|
<< exit(FatalError) << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Pstream::parRun())
|
||||||
|
{
|
||||||
|
// assume that the points in each processor file
|
||||||
|
// are unique. They are unlikely to belong on the current
|
||||||
|
// processor as the background mesh is unlikely to be the same.
|
||||||
|
decomposition().distributePoints(points);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (Pstream::parRun())
|
||||||
{
|
{
|
||||||
// Otherwise, this is assumed to be points covering the whole
|
// See if points can be found in parent directory
|
||||||
|
// (only if timeName = constant)
|
||||||
|
points = pointIOField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
pointFileName_.name(),
|
||||||
|
time().caseConstant(),
|
||||||
|
time(),
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (points.empty())
|
||||||
|
{
|
||||||
|
FatalErrorIn("List<Vb::Point> pointFile::initialPoints() const")
|
||||||
|
<< "Point file contain no points"
|
||||||
|
<< exit(FatalError) << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Points are assumed to be covering the whole
|
||||||
// domain, so filter the points to be only those on this processor
|
// domain, so filter the points to be only those on this processor
|
||||||
boolList procPt(decomposition().positionOnThisProcessor(points));
|
boolList procPt(decomposition().positionOnThisProcessor(points));
|
||||||
|
|
||||||
@ -146,6 +168,12 @@ List<Vb::Point> pointFile::initialPoints() const
|
|||||||
|
|
||||||
inplaceSubset(procPt, points);
|
inplaceSubset(procPt, points);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn("List<Vb::Point> pointFile::initialPoints() const")
|
||||||
|
<< "Cannot find points file " << pointsIO.objectPath()
|
||||||
|
<< exit(FatalError) << endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Field<bool> insidePoints(points.size(), true);
|
Field<bool> insidePoints(points.size(), true);
|
||||||
|
|||||||
@ -74,7 +74,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check U exists
|
// Check U exists
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading U" << endl;
|
Info<< " Reading U" << endl;
|
||||||
volVectorField U(Uheader, mesh);
|
volVectorField U(Uheader, mesh);
|
||||||
|
|||||||
@ -187,7 +187,7 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!dictIO.headerOk())
|
if (!dictIO.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< "Cannot open specified refinement dictionary "
|
<< "Cannot open specified refinement dictionary "
|
||||||
@ -209,7 +209,7 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (dictIO.headerOk())
|
if (dictIO.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
Info<< "Refining according to " << dictName << nl << endl;
|
Info<< "Refining according to " << dictName << nl << endl;
|
||||||
|
|
||||||
|
|||||||
@ -599,7 +599,7 @@ autoPtr<mapPolyMesh> createRegionMesh
|
|||||||
|
|
||||||
Info<< "Testing:" << io.objectPath() << endl;
|
Info<< "Testing:" << io.objectPath() << endl;
|
||||||
|
|
||||||
if (!io.headerOk())
|
if (!io.typeHeaderOk<IOdictionary>(true))
|
||||||
// if (!exists(io.objectPath()))
|
// if (!exists(io.objectPath()))
|
||||||
{
|
{
|
||||||
Info<< "Writing dummy " << regionName/io.name() << endl;
|
Info<< "Writing dummy " << regionName/io.name() << endl;
|
||||||
@ -626,7 +626,7 @@ autoPtr<mapPolyMesh> createRegionMesh
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!io.headerOk())
|
if (!io.typeHeaderOk<IOdictionary>(true))
|
||||||
//if (!exists(io.objectPath()))
|
//if (!exists(io.objectPath()))
|
||||||
{
|
{
|
||||||
Info<< "Writing dummy " << regionName/io.name() << endl;
|
Info<< "Writing dummy " << regionName/io.name() << endl;
|
||||||
|
|||||||
@ -89,7 +89,7 @@ bool writeZones(const word& name, const fileName& meshDir, Time& runTime)
|
|||||||
|
|
||||||
bool writeOk = false;
|
bool writeOk = false;
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<cellZoneMesh>(false))
|
||||||
{
|
{
|
||||||
Info<< " Reading " << io.headerClassName()
|
Info<< " Reading " << io.headerClassName()
|
||||||
<< " : " << name << endl;
|
<< " : " << name << endl;
|
||||||
|
|||||||
@ -61,7 +61,7 @@ inline bool writeMeshObject
|
|||||||
|
|
||||||
bool writeOk = false;
|
bool writeOk = false;
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<T>(false))
|
||||||
{
|
{
|
||||||
Info<< " Reading " << io.headerClassName()
|
Info<< " Reading " << io.headerClassName()
|
||||||
<< " : " << name << endl;
|
<< " : " << name << endl;
|
||||||
|
|||||||
@ -122,7 +122,7 @@ void Foam::helpTypes::helpBoundary::execute
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check for any type of volField
|
// Check for any type of volField
|
||||||
if (fieldHeader.headerOk())
|
if (fieldHeader.typeHeaderOk<volScalarField>(false))
|
||||||
{
|
{
|
||||||
if (args.optionFound("fixedValue"))
|
if (args.optionFound("fixedValue"))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -106,7 +106,7 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (obj.headerOk())
|
if (obj.typeHeaderOk<volScalarField>(false))
|
||||||
{
|
{
|
||||||
addToFieldList(vsf, obj, objI, mesh);
|
addToFieldList(vsf, obj, objI, mesh);
|
||||||
addToFieldList(vvf, obj, objI, mesh);
|
addToFieldList(vvf, obj, objI, mesh);
|
||||||
|
|||||||
@ -293,27 +293,9 @@ Foam::parLagrangianRedistributor::redistributeLagrangianPositions
|
|||||||
const word& cloudName
|
const word& cloudName
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
(void)srcMesh_.tetBasePtIs();
|
|
||||||
(void)tgtMesh_.tetBasePtIs();
|
|
||||||
|
|
||||||
// Temporarily: override master-only checking
|
|
||||||
regIOobject::fileCheckTypes oldCheckType =
|
|
||||||
regIOobject::fileModificationChecking;
|
|
||||||
|
|
||||||
if (oldCheckType == regIOobject::timeStampMaster)
|
|
||||||
{
|
|
||||||
regIOobject::fileModificationChecking = regIOobject::timeStamp;
|
|
||||||
}
|
|
||||||
else if (oldCheckType == regIOobject::inotifyMaster)
|
|
||||||
{
|
|
||||||
regIOobject::fileModificationChecking = regIOobject::inotify;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load cloud and send particle
|
// Load cloud and send particle
|
||||||
passiveParticleCloud lpi(srcMesh_, cloudName, false);
|
passiveParticleCloud lpi(srcMesh_, cloudName, false);
|
||||||
|
|
||||||
regIOobject::fileModificationChecking = oldCheckType;
|
|
||||||
|
|
||||||
return redistributeLagrangianPositions(lpi);
|
return redistributeLagrangianPositions(lpi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1436,7 +1436,7 @@ void readProcAddressing
|
|||||||
// mesh,
|
// mesh,
|
||||||
// IOobject::MUST_READ
|
// IOobject::MUST_READ
|
||||||
//);
|
//);
|
||||||
//if (io.headerOk())
|
//if (io.typeHeaderOk<labelIOList>(true))
|
||||||
//{
|
//{
|
||||||
// Pout<< "Reading addressing from " << io.name() << " at "
|
// Pout<< "Reading addressing from " << io.name() << " at "
|
||||||
// << mesh.facesInstance() << nl << endl;
|
// << mesh.facesInstance() << nl << endl;
|
||||||
@ -1786,28 +1786,12 @@ void readLagrangian
|
|||||||
|
|
||||||
forAll(cloudNames, i)
|
forAll(cloudNames, i)
|
||||||
{
|
{
|
||||||
{
|
//Pout<< "Loading cloud " << cloudNames[i] << endl;
|
||||||
// Note: disable master-only reading of uniform/cloudProperties
|
clouds.set
|
||||||
regIOobject::fileCheckTypes oldCheckType =
|
(
|
||||||
regIOobject::fileModificationChecking;
|
i,
|
||||||
|
new unmappedPassiveParticleCloud(mesh, cloudNames[i], false)
|
||||||
if (oldCheckType == regIOobject::timeStampMaster)
|
);
|
||||||
{
|
|
||||||
regIOobject::fileModificationChecking = regIOobject::timeStamp;
|
|
||||||
}
|
|
||||||
else if (oldCheckType == regIOobject::inotifyMaster)
|
|
||||||
{
|
|
||||||
regIOobject::fileModificationChecking = regIOobject::inotify;
|
|
||||||
}
|
|
||||||
|
|
||||||
clouds.set
|
|
||||||
(
|
|
||||||
i,
|
|
||||||
new unmappedPassiveParticleCloud(mesh, cloudNames[i], false)
|
|
||||||
);
|
|
||||||
|
|
||||||
regIOobject::fileModificationChecking = oldCheckType;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//forAllConstIter
|
//forAllConstIter
|
||||||
@ -2434,7 +2418,7 @@ int main(int argc, char *argv[])
|
|||||||
meshSubDir,
|
meshSubDir,
|
||||||
runTime,
|
runTime,
|
||||||
IOobject::READ_IF_PRESENT
|
IOobject::READ_IF_PRESENT
|
||||||
).headerOk();
|
).typeHeaderOk<labelIOList>(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -16,6 +16,6 @@ for (label n1=0; n1<Times.size() && variableGood; ++n1)
|
|||||||
Times[n1].name(),
|
Times[n1].name(),
|
||||||
mesh,
|
mesh,
|
||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
).headerOk();
|
).typeHeaderOk<volScalarField>(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,7 @@ if (Times.size() > 1)
|
|||||||
mesh,
|
mesh,
|
||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<pointIOField>(true))
|
||||||
{
|
{
|
||||||
meshMoving = true;
|
meshMoving = true;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -706,7 +706,10 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
bool fieldExists = fieldObject.headerOk();
|
bool fieldExists = fieldObject.typeHeaderOk<IOField<scalar> >
|
||||||
|
(
|
||||||
|
false
|
||||||
|
);
|
||||||
if (fieldType == scalarIOField::typeName)
|
if (fieldType == scalarIOField::typeName)
|
||||||
{
|
{
|
||||||
ensightCloudField<scalar>
|
ensightCloudField<scalar>
|
||||||
|
|||||||
@ -13,6 +13,6 @@ if (timeDirs.size() > 1)
|
|||||||
polyMesh::meshSubDir,
|
polyMesh::meshSubDir,
|
||||||
mesh,
|
mesh,
|
||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
).headerOk();
|
).typeHeaderOk<pointIOField>(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
io.readOpt() = IOobject::MUST_READ_IF_MODIFIED;
|
io.readOpt() = IOobject::MUST_READ_IF_MODIFIED;
|
||||||
IOdictionary timeObject(io);
|
IOdictionary timeObject(io);
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
mesh
|
mesh
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<pointIOField>(true))
|
||||||
{
|
{
|
||||||
// Read new points
|
// Read new points
|
||||||
io.readOpt() = IOobject::MUST_READ;
|
io.readOpt() = IOobject::MUST_READ;
|
||||||
|
|||||||
@ -71,7 +71,13 @@ for (label i=0; i < nTypes; i++)
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (lagrangianHeader.headerOk())
|
if
|
||||||
|
(
|
||||||
|
lagrangianHeader.typeHeaderOk<IOPosition<Cloud<passiveParticle> > >
|
||||||
|
(
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Cloud<passiveParticle> particles(mesh);
|
Cloud<passiveParticle> particles(mesh);
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ IOobject ioPoints
|
|||||||
mesh
|
mesh
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ioPoints.headerOk())
|
if (ioPoints.typeHeaderOk<pointIOField>(true))
|
||||||
{
|
{
|
||||||
Info<< "new points available" << endl;
|
Info<< "new points available" << endl;
|
||||||
// Reading new points
|
// Reading new points
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -567,7 +567,13 @@ double* Foam::vtkPV3Foam::findTimes(int& nTimeSteps)
|
|||||||
if
|
if
|
||||||
(
|
(
|
||||||
isFile(runTime.path()/timeName/meshDir_/"points")
|
isFile(runTime.path()/timeName/meshDir_/"points")
|
||||||
&& IOobject("points", timeName, meshDir_, runTime).headerOk()
|
&& IOobject
|
||||||
|
(
|
||||||
|
"points",
|
||||||
|
timeName,
|
||||||
|
meshDir_,
|
||||||
|
runTime
|
||||||
|
).typeHeaderOk<pointIOField>(true)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -124,7 +124,7 @@ Foam::wordList Foam::vtkPV3Foam::getZoneNames(const word& zoneType) const
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ioObj.headerOk())
|
if (ioObj.typeHeaderOk<cellZoneMesh>(false))
|
||||||
{
|
{
|
||||||
zonesEntries zones(ioObj);
|
zonesEntries zones(ioObj);
|
||||||
|
|
||||||
@ -333,7 +333,7 @@ void Foam::vtkPV3Foam::updateInfoPatches
|
|||||||
);
|
);
|
||||||
|
|
||||||
// this should only ever fail if the mesh region doesn't exist
|
// this should only ever fail if the mesh region doesn't exist
|
||||||
if (ioObj.headerOk())
|
if (ioObj.typeHeaderOk<polyBoundaryMesh>(true))
|
||||||
{
|
{
|
||||||
polyBoundaryMeshEntries patchEntries(ioObj);
|
polyBoundaryMeshEntries patchEntries(ioObj);
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -567,7 +567,13 @@ double* Foam::vtkPV4Foam::findTimes(int& nTimeSteps)
|
|||||||
if
|
if
|
||||||
(
|
(
|
||||||
isFile(runTime.path()/timeName/meshDir_/"points")
|
isFile(runTime.path()/timeName/meshDir_/"points")
|
||||||
&& IOobject("points", timeName, meshDir_, runTime).headerOk()
|
&& IOobject
|
||||||
|
(
|
||||||
|
"points",
|
||||||
|
timeName,
|
||||||
|
meshDir_,
|
||||||
|
runTime
|
||||||
|
).typeHeaderOk<pointIOField>(true)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -124,7 +124,7 @@ Foam::wordList Foam::vtkPV4Foam::getZoneNames(const word& zoneType) const
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ioObj.headerOk())
|
if (ioObj.typeHeaderOk<cellZoneMesh>(false))
|
||||||
{
|
{
|
||||||
zonesEntries zones(ioObj);
|
zonesEntries zones(ioObj);
|
||||||
|
|
||||||
@ -333,7 +333,7 @@ void Foam::vtkPV4Foam::updateInfoPatches
|
|||||||
);
|
);
|
||||||
|
|
||||||
// this should only ever fail if the mesh region doesn't exist
|
// this should only ever fail if the mesh region doesn't exist
|
||||||
if (ioObj.headerOk())
|
if (ioObj.typeHeaderOk<polyBoundaryMesh>(true))
|
||||||
{
|
{
|
||||||
polyBoundaryMeshEntries patchEntries(ioObj);
|
polyBoundaryMeshEntries patchEntries(ioObj);
|
||||||
|
|
||||||
|
|||||||
@ -171,7 +171,7 @@ int USERD_set_filenames
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (sprayHeader.headerOk())
|
if (sprayHeader.typeHeaderOk<Cloud<passiveParticle> >(false))
|
||||||
{
|
{
|
||||||
Info<< "[Found lagrangian]" << endl;
|
Info<< "[Found lagrangian]" << endl;
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@ IOobject fieldObjectPtr
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!fieldObjectPtr.headerOk())
|
if (!fieldObjectPtr.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
return Z_UNDEF;
|
return Z_UNDEF;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ IOobject fieldObjectPtr
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!fieldObjectPtr.headerOk())
|
if (!fieldObjectPtr.typeHeaderOk<volTensorField>(true))
|
||||||
{
|
{
|
||||||
return Z_UNDEF;
|
return Z_UNDEF;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ IOobject fieldObjectPtr
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!fieldObjectPtr.headerOk())
|
if (!fieldObjectPtr.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
return Z_UNDEF;
|
return Z_UNDEF;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ IOobject fieldObjectPtr
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!fieldObjectPtr.headerOk())
|
if (!fieldObjectPtr.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
return Z_UNDEF;
|
return Z_UNDEF;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ IOobject fieldObjectPtr
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!fieldObjectPtr.headerOk())
|
if (!fieldObjectPtr.typeHeaderOk<volTensorField>(true))
|
||||||
{
|
{
|
||||||
return Z_UNDEF;
|
return Z_UNDEF;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ IOobject fieldObjectPtr
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!fieldObjectPtr.headerOk())
|
if (!fieldObjectPtr.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
return Z_UNDEF;
|
return Z_UNDEF;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -62,7 +62,11 @@ namespace Foam
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (obj.headerOk() && obj.headerClassName() == fieldType::typeName)
|
if
|
||||||
|
(
|
||||||
|
obj.typeHeaderOk<fieldType>(false)
|
||||||
|
&& obj.headerClassName() == fieldType::typeName
|
||||||
|
)
|
||||||
{
|
{
|
||||||
list.set(index++, new fieldType(obj, mesh));
|
list.set(index++, new fieldType(obj, mesh));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -306,7 +306,7 @@ void calc
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (turbulencePropertiesHeader.headerOk())
|
if (turbulencePropertiesHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
singlePhaseTransportModel laminarTransport(U, phi);
|
singlePhaseTransportModel laminarTransport(U, phi);
|
||||||
|
|
||||||
@ -364,7 +364,7 @@ void calc
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (turbulencePropertiesHeader.headerOk())
|
if (turbulencePropertiesHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
autoPtr<compressible::turbulenceModel> turbulenceModel
|
autoPtr<compressible::turbulenceModel> turbulenceModel
|
||||||
(
|
(
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!UMeanHeader.headerOk())
|
if (!UMeanHeader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " No UMean field" << endl;
|
Info<< " No UMean field" << endl;
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@ -69,7 +69,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
|
|
||||||
// Check p and U exist
|
// Check p and U exist
|
||||||
if (pheader.headerOk() && Uheader.headerOk())
|
if
|
||||||
|
(
|
||||||
|
pheader.typeHeaderOk<volScalarField>(true)
|
||||||
|
&& Uheader.typeHeaderOk<volVectorField>(true)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
@ -106,7 +110,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check rho exists
|
// Check rho exists
|
||||||
if (rhoheader.headerOk())
|
if (rhoheader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading rho" << endl;
|
Info<< " Reading rho" << endl;
|
||||||
volScalarField rho(rhoheader, mesh);
|
volScalarField rho(rhoheader, mesh);
|
||||||
|
|||||||
@ -102,7 +102,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check field exists
|
// Check field exists
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<volScalarField>(false))
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -132,7 +132,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check field exists
|
// Check field exists
|
||||||
if (fieldHeader.headerOk())
|
if (fieldHeader.typeHeaderOk<volScalarField>(false))
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
|
|||||||
@ -76,7 +76,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check p exists
|
// Check p exists
|
||||||
if (pheader.headerOk())
|
if (pheader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check U exists
|
// Check U exists
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
|
|||||||
@ -78,7 +78,7 @@ void calcCompressibleR
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!rhoHeader.headerOk())
|
if (!rhoHeader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< " no " << rhoHeader.name() <<" field" << endl;
|
Info<< " no " << rhoHeader.name() <<" field" << endl;
|
||||||
return;
|
return;
|
||||||
@ -132,7 +132,7 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (UHeader.headerOk())
|
if (UHeader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading field " << UHeader.name() << nl << endl;
|
Info<< "Reading field " << UHeader.name() << nl << endl;
|
||||||
volVectorField U(UHeader, mesh);
|
volVectorField U(UHeader, mesh);
|
||||||
@ -144,7 +144,7 @@ int main(int argc, char *argv[])
|
|||||||
basicThermo::dictName,
|
basicThermo::dictName,
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
mesh
|
mesh
|
||||||
).headerOk()
|
).typeHeaderOk<IOdictionary>(true)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
calcCompressibleR(mesh, runTime, U);
|
calcCompressibleR(mesh, runTime, U);
|
||||||
|
|||||||
@ -76,7 +76,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (findStrings(fieldPatterns, "k"))
|
if (findStrings(fieldPatterns, "k"))
|
||||||
{
|
{
|
||||||
if (!IOobject("k", runTime.timeName(), mesh).headerOk())
|
if
|
||||||
|
(
|
||||||
|
!IOobject("k", runTime.timeName(), mesh).
|
||||||
|
typeHeaderOk<volScalarField>(true)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Info<< " Writing turbulence field k" << endl;
|
Info<< " Writing turbulence field k" << endl;
|
||||||
const volScalarField k(RASModel->k());
|
const volScalarField k(RASModel->k());
|
||||||
@ -90,7 +94,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (findStrings(fieldPatterns, "epsilon"))
|
if (findStrings(fieldPatterns, "epsilon"))
|
||||||
{
|
{
|
||||||
if (!IOobject("epsilon", runTime.timeName(), mesh).headerOk())
|
if
|
||||||
|
(
|
||||||
|
!IOobject("epsilon", runTime.timeName(), mesh).
|
||||||
|
typeHeaderOk<volScalarField>(true)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Info<< " Writing turbulence field epsilon" << endl;
|
Info<< " Writing turbulence field epsilon" << endl;
|
||||||
const volScalarField epsilon(RASModel->epsilon());
|
const volScalarField epsilon(RASModel->epsilon());
|
||||||
@ -104,7 +112,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (findStrings(fieldPatterns, "R"))
|
if (findStrings(fieldPatterns, "R"))
|
||||||
{
|
{
|
||||||
if (!IOobject("R", runTime.timeName(), mesh).headerOk())
|
if
|
||||||
|
(
|
||||||
|
!IOobject("R", runTime.timeName(), mesh).
|
||||||
|
typeHeaderOk<volSymmTensorField>(true)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Info<< " Writing turbulence field R" << endl;
|
Info<< " Writing turbulence field R" << endl;
|
||||||
const volSymmTensorField R(RASModel->R());
|
const volSymmTensorField R(RASModel->R());
|
||||||
@ -118,7 +130,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (findStrings(fieldPatterns, "omega"))
|
if (findStrings(fieldPatterns, "omega"))
|
||||||
{
|
{
|
||||||
if (!IOobject("omega", runTime.timeName(), mesh).headerOk())
|
if
|
||||||
|
(
|
||||||
|
!IOobject("omega", runTime.timeName(), mesh).
|
||||||
|
typeHeaderOk<volScalarField>(true)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
const scalar Cmu = 0.09;
|
const scalar Cmu = 0.09;
|
||||||
|
|
||||||
|
|||||||
@ -50,7 +50,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (phiHeader.headerOk())
|
if (phiHeader.typeHeaderOk<surfaceScalarField>(true))
|
||||||
{
|
{
|
||||||
volScalarField Co
|
volScalarField Co
|
||||||
(
|
(
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -48,7 +48,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading U" << endl;
|
Info<< " Reading U" << endl;
|
||||||
volVectorField U(Uheader, mesh);
|
volVectorField U(Uheader, mesh);
|
||||||
|
|||||||
@ -58,7 +58,11 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check U and T exists
|
// Check U and T exists
|
||||||
if (Uheader.headerOk() && Theader.headerOk())
|
if
|
||||||
|
(
|
||||||
|
Uheader.typeHeaderOk<volVectorField>(true)
|
||||||
|
&& Theader.typeHeaderOk<volScalarField>(true)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
autoPtr<volScalarField> MachPtr;
|
autoPtr<volScalarField> MachPtr;
|
||||||
|
|
||||||
@ -71,7 +75,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
basicThermo::dictName,
|
basicThermo::dictName,
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
mesh
|
mesh
|
||||||
).headerOk()
|
).typeHeaderOk<IOdictionary>(false)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// thermophysical Mach
|
// thermophysical Mach
|
||||||
|
|||||||
@ -24,7 +24,11 @@
|
|||||||
|
|
||||||
|
|
||||||
// Check U exists
|
// Check U exists
|
||||||
if (Uheader.headerOk() && Theader.headerOk())
|
if
|
||||||
|
(
|
||||||
|
Uheader.typeHeaderOk<volVectorField>(true)
|
||||||
|
&& Theader.typeHeaderOk<volScalarField>(true)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
volVectorField U(Uheader, mesh);
|
volVectorField U(Uheader, mesh);
|
||||||
|
|
||||||
|
|||||||
@ -55,7 +55,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (phiHeader.headerOk())
|
if (phiHeader.typeHeaderOk<surfaceScalarField>(true))
|
||||||
{
|
{
|
||||||
autoPtr<surfaceScalarField> PePtr;
|
autoPtr<surfaceScalarField> PePtr;
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
|
|
||||||
if (phi.dimensions() == dimensionSet(0, 3, -1, 0, 0))
|
if (phi.dimensions() == dimensionSet(0, 3, -1, 0, 0))
|
||||||
{
|
{
|
||||||
if (turbulencePropertiesHeader.headerOk())
|
if (turbulencePropertiesHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
singlePhaseTransportModel laminarTransport(U, phi);
|
singlePhaseTransportModel laminarTransport(U, phi);
|
||||||
|
|
||||||
@ -144,7 +144,8 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
(
|
(
|
||||||
"Pef",
|
"Pef",
|
||||||
runTime.timeName(),
|
runTime.timeName(),
|
||||||
mesh
|
mesh,
|
||||||
|
IOobject::NO_READ
|
||||||
),
|
),
|
||||||
mag(phi)
|
mag(phi)
|
||||||
/(
|
/(
|
||||||
@ -158,7 +159,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
}
|
}
|
||||||
else if (phi.dimensions() == dimensionSet(1, 0, -1, 0, 0))
|
else if (phi.dimensions() == dimensionSet(1, 0, -1, 0, 0))
|
||||||
{
|
{
|
||||||
if (turbulencePropertiesHeader.headerOk())
|
if (turbulencePropertiesHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
autoPtr<fluidThermo> thermo(fluidThermo::New(mesh));
|
autoPtr<fluidThermo> thermo(fluidThermo::New(mesh));
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -51,7 +51,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading U" << endl;
|
Info<< " Reading U" << endl;
|
||||||
volVectorField U(Uheader, mesh);
|
volVectorField U(Uheader, mesh);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -49,7 +49,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading U" << endl;
|
Info<< " Reading U" << endl;
|
||||||
volVectorField U(Uheader, mesh);
|
volVectorField U(Uheader, mesh);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -57,7 +57,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading U" << endl;
|
Info<< " Reading U" << endl;
|
||||||
volVectorField U(Uheader, mesh);
|
volVectorField U(Uheader, mesh);
|
||||||
|
|||||||
@ -86,7 +86,7 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::NO_READ
|
IOobject::NO_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (phiHeader.headerOk())
|
if (phiHeader.typeHeaderOk<surfaceScalarField>(true))
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -49,7 +49,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (kheader.headerOk())
|
if (kheader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading k" << endl;
|
Info<< " Reading k" << endl;
|
||||||
volScalarField k(kheader, mesh);
|
volScalarField k(kheader, mesh);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -49,7 +49,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< " Reading U" << endl;
|
Info<< " Reading U" << endl;
|
||||||
volVectorField U(Uheader, mesh);
|
volVectorField U(Uheader, mesh);
|
||||||
|
|||||||
@ -60,7 +60,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check U exists
|
// Check U exists
|
||||||
if (Uheader.headerOk())
|
if (Uheader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
mesh.readUpdate();
|
mesh.readUpdate();
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Info<< "End" << endl;
|
Info<< "End\n" << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,7 +88,7 @@ void calcCompressible
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!rhoHeader.headerOk())
|
if (!rhoHeader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< " no rho field" << endl;
|
Info<< " no rho field" << endl;
|
||||||
return;
|
return;
|
||||||
@ -169,7 +169,7 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (UHeader.headerOk())
|
if (UHeader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading field U\n" << endl;
|
Info<< "Reading field U\n" << endl;
|
||||||
volVectorField U(UHeader, mesh);
|
volVectorField U(UHeader, mesh);
|
||||||
@ -181,7 +181,7 @@ int main(int argc, char *argv[])
|
|||||||
basicThermo::dictName,
|
basicThermo::dictName,
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
mesh
|
mesh
|
||||||
).headerOk()
|
).typeHeaderOk<IOdictionary>(true)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
calcCompressible(mesh, runTime, U, wallShearStress);
|
calcCompressible(mesh, runTime, U, wallShearStress);
|
||||||
|
|||||||
@ -149,7 +149,7 @@ void calcCompressibleYPlus
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!rhoHeader.headerOk())
|
if (!rhoHeader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
Info<< " no rho field" << endl;
|
Info<< " no rho field" << endl;
|
||||||
return;
|
return;
|
||||||
@ -216,7 +216,7 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (UHeader.headerOk())
|
if (UHeader.typeHeaderOk<volVectorField>(true))
|
||||||
{
|
{
|
||||||
Info<< "Reading field U\n" << endl;
|
Info<< "Reading field U\n" << endl;
|
||||||
volVectorField U(UHeader, mesh);
|
volVectorField U(UHeader, mesh);
|
||||||
@ -228,7 +228,7 @@ int main(int argc, char *argv[])
|
|||||||
basicThermo::dictName,
|
basicThermo::dictName,
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
mesh
|
mesh
|
||||||
).headerOk()
|
).typeHeaderOk<IOdictionary>(true)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
calcCompressibleYPlus(mesh, runTime, U, yPlus);
|
calcCompressibleYPlus(mesh, runTime, U, yPlus);
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -163,7 +163,7 @@ void calcOmega
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (omegaHeader.headerOk())
|
if (omegaHeader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
volScalarField omega(omegaHeader, mesh);
|
volScalarField omega(omegaHeader, mesh);
|
||||||
dimensionedScalar k0("SMALL", k.dimensions(), SMALL);
|
dimensionedScalar k0("SMALL", k.dimensions(), SMALL);
|
||||||
@ -200,7 +200,7 @@ void setField
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fldHeader.headerOk())
|
if (fldHeader.typeHeaderOk<volScalarField>(true))
|
||||||
{
|
{
|
||||||
volScalarField fld(fldHeader, mesh);
|
volScalarField fld(fldHeader, mesh);
|
||||||
fld = value;
|
fld = value;
|
||||||
@ -388,7 +388,7 @@ int main(int argc, char *argv[])
|
|||||||
basicThermo::dictName,
|
basicThermo::dictName,
|
||||||
runTime.constant(),
|
runTime.constant(),
|
||||||
mesh
|
mesh
|
||||||
).headerOk()
|
).typeHeaderOk<IOdictionary>(true)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
calcCompressible(mesh, mask, U, y, ybl);
|
calcCompressible(mesh, mask, U, y, ybl);
|
||||||
|
|||||||
@ -628,7 +628,7 @@ int main(int argc, char *argv[])
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fieldHeader.headerOk())
|
if (fieldHeader.typeHeaderOk<IOdictionary>(false))
|
||||||
{
|
{
|
||||||
IOdictionary fieldDict(fieldHeader);
|
IOdictionary fieldDict(fieldHeader);
|
||||||
|
|
||||||
|
|||||||
@ -90,7 +90,7 @@ Foam::boundaryTemplates::boundaryTemplates
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
IOdictionary dict(io);
|
IOdictionary dict(io);
|
||||||
regionTemplate.subDict(patchTypes[i]).merge(dict);
|
regionTemplate.subDict(patchTypes[i]).merge(dict);
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -57,7 +57,7 @@ Foam::word Foam::solverTemplate::readFromDict
|
|||||||
const word& entryName
|
const word& entryName
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
if (!dictHeader.headerOk())
|
if (!dictHeader.typeHeaderOk<IOdictionary>(true))
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< "Unable to open file "
|
<< "Unable to open file "
|
||||||
|
|||||||
@ -74,7 +74,8 @@ void rewriteBoundary
|
|||||||
HashTable<word>& nbrNames
|
HashTable<word>& nbrNames
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Info<< "Reading boundary from " << io.filePath() << endl;
|
Info<< "Reading boundary from " << typeFilePath<IOPtrList<entry> >(io)
|
||||||
|
<< endl;
|
||||||
|
|
||||||
// Read PtrList of dictionary.
|
// Read PtrList of dictionary.
|
||||||
const word oldTypeName = IOPtrList<entry>::typeName;
|
const word oldTypeName = IOPtrList<entry>::typeName;
|
||||||
@ -446,7 +447,7 @@ int main(int argc, char *argv[])
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<IOPtrList<entry> >(false))
|
||||||
{
|
{
|
||||||
rewriteBoundary
|
rewriteBoundary
|
||||||
(
|
(
|
||||||
@ -480,7 +481,7 @@ int main(int argc, char *argv[])
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (io.headerOk())
|
if (io.typeHeaderOk<IOPtrList<entry> >(false))
|
||||||
{
|
{
|
||||||
rewriteBoundary
|
rewriteBoundary
|
||||||
(
|
(
|
||||||
|
|||||||
@ -44,13 +44,12 @@ void MapConsistentVolFields
|
|||||||
const CombineOp& cop
|
const CombineOp& cop
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
|
||||||
|
|
||||||
const fvMesh& meshSource = meshToMesh0Interp.fromMesh();
|
const fvMesh& meshSource = meshToMesh0Interp.fromMesh();
|
||||||
const fvMesh& meshTarget = meshToMesh0Interp.toMesh();
|
const fvMesh& meshTarget = meshToMesh0Interp.toMesh();
|
||||||
|
|
||||||
word fieldClassName
|
word fieldClassName(fieldType::typeName);
|
||||||
(
|
|
||||||
GeometricField<Type, fvPatchField, volMesh>::typeName
|
|
||||||
);
|
|
||||||
|
|
||||||
IOobjectList fields = objects.lookupClass(fieldClassName);
|
IOobjectList fields = objects.lookupClass(fieldClassName);
|
||||||
|
|
||||||
@ -60,11 +59,7 @@ void MapConsistentVolFields
|
|||||||
<< endl;
|
<< endl;
|
||||||
|
|
||||||
// Read field
|
// Read field
|
||||||
GeometricField<Type, fvPatchField, volMesh> fieldSource
|
fieldType fieldSource(*fieldIter(), meshSource);
|
||||||
(
|
|
||||||
*fieldIter(),
|
|
||||||
meshSource
|
|
||||||
);
|
|
||||||
|
|
||||||
IOobject fieldTargetIOobject
|
IOobject fieldTargetIOobject
|
||||||
(
|
(
|
||||||
@ -75,14 +70,10 @@ void MapConsistentVolFields
|
|||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fieldTargetIOobject.headerOk())
|
if (fieldTargetIOobject.typeHeaderOk<fieldType>(true))
|
||||||
{
|
{
|
||||||
// Read fieldTarget
|
// Read fieldTarget
|
||||||
GeometricField<Type, fvPatchField, volMesh> fieldTarget
|
fieldType fieldTarget(fieldTargetIOobject, meshTarget);
|
||||||
(
|
|
||||||
fieldTargetIOobject,
|
|
||||||
meshTarget
|
|
||||||
);
|
|
||||||
|
|
||||||
// Interpolate field
|
// Interpolate field
|
||||||
meshToMesh0Interp.interpolate
|
meshToMesh0Interp.interpolate
|
||||||
@ -101,7 +92,7 @@ void MapConsistentVolFields
|
|||||||
fieldTargetIOobject.readOpt() = IOobject::NO_READ;
|
fieldTargetIOobject.readOpt() = IOobject::NO_READ;
|
||||||
|
|
||||||
// Interpolate field
|
// Interpolate field
|
||||||
GeometricField<Type, fvPatchField, volMesh> fieldTarget
|
fieldType fieldTarget
|
||||||
(
|
(
|
||||||
fieldTargetIOobject,
|
fieldTargetIOobject,
|
||||||
meshToMesh0Interp.interpolate
|
meshToMesh0Interp.interpolate
|
||||||
|
|||||||
@ -44,13 +44,12 @@ void MapVolFields
|
|||||||
const CombineOp& cop
|
const CombineOp& cop
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
|
||||||
|
|
||||||
const fvMesh& meshSource = meshToMesh0Interp.fromMesh();
|
const fvMesh& meshSource = meshToMesh0Interp.fromMesh();
|
||||||
const fvMesh& meshTarget = meshToMesh0Interp.toMesh();
|
const fvMesh& meshTarget = meshToMesh0Interp.toMesh();
|
||||||
|
|
||||||
word fieldClassName
|
word fieldClassName(fieldType::typeName);
|
||||||
(
|
|
||||||
GeometricField<Type, fvPatchField, volMesh>::typeName
|
|
||||||
);
|
|
||||||
|
|
||||||
IOobjectList fields = objects.lookupClass(fieldClassName);
|
IOobjectList fields = objects.lookupClass(fieldClassName);
|
||||||
|
|
||||||
@ -65,20 +64,20 @@ void MapVolFields
|
|||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fieldTargetIOobject.headerOk())
|
if (fieldTargetIOobject.typeHeaderOk<fieldType>(true))
|
||||||
{
|
{
|
||||||
Info<< " interpolating " << fieldIter()->name()
|
Info<< " interpolating " << fieldIter()->name()
|
||||||
<< endl;
|
<< endl;
|
||||||
|
|
||||||
// Read field fieldSource
|
// Read field fieldSource
|
||||||
GeometricField<Type, fvPatchField, volMesh> fieldSource
|
fieldType fieldSource
|
||||||
(
|
(
|
||||||
*fieldIter(),
|
*fieldIter(),
|
||||||
meshSource
|
meshSource
|
||||||
);
|
);
|
||||||
|
|
||||||
// Read fieldTarget
|
// Read fieldTarget
|
||||||
GeometricField<Type, fvPatchField, volMesh> fieldTarget
|
fieldType fieldTarget
|
||||||
(
|
(
|
||||||
fieldTargetIOobject,
|
fieldTargetIOobject,
|
||||||
meshTarget
|
meshTarget
|
||||||
|
|||||||
@ -69,7 +69,7 @@ void MapVolFields
|
|||||||
IOobject::MUST_READ
|
IOobject::MUST_READ
|
||||||
);
|
);
|
||||||
|
|
||||||
if (targetIO.headerOk())
|
if (targetIO.typeHeaderOk<fieldType>(true))
|
||||||
{
|
{
|
||||||
fieldType fieldTarget(targetIO, meshTarget);
|
fieldType fieldTarget(targetIO, meshTarget);
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,7 @@ bool setCellFieldType
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check the "constant" directory
|
// Check the "constant" directory
|
||||||
if (!fieldHeader.headerOk())
|
if (!fieldHeader.typeHeaderOk<fieldType>(true))
|
||||||
{
|
{
|
||||||
fieldHeader = IOobject
|
fieldHeader = IOobject
|
||||||
(
|
(
|
||||||
@ -76,7 +76,7 @@ bool setCellFieldType
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check field exists
|
// Check field exists
|
||||||
if (fieldHeader.headerOk())
|
if (fieldHeader.typeHeaderOk<fieldType>(true))
|
||||||
{
|
{
|
||||||
Info<< " Setting internal values of "
|
Info<< " Setting internal values of "
|
||||||
<< fieldHeader.headerClassName()
|
<< fieldHeader.headerClassName()
|
||||||
@ -208,7 +208,7 @@ bool setFaceFieldType
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Check the "constant" directory
|
// Check the "constant" directory
|
||||||
if (!fieldHeader.headerOk())
|
if (!fieldHeader.typeHeaderOk<fieldType>(true))
|
||||||
{
|
{
|
||||||
fieldHeader = IOobject
|
fieldHeader = IOobject
|
||||||
(
|
(
|
||||||
@ -220,7 +220,7 @@ bool setFaceFieldType
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check field exists
|
// Check field exists
|
||||||
if (fieldHeader.headerOk())
|
if (fieldHeader.typeHeaderOk<fieldType>(true))
|
||||||
{
|
{
|
||||||
Info<< " Setting patchField values of "
|
Info<< " Setting patchField values of "
|
||||||
<< fieldHeader.headerClassName()
|
<< fieldHeader.headerClassName()
|
||||||
|
|||||||
@ -194,7 +194,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!csDictIoPtr->headerOk())
|
if (!csDictIoPtr->typeHeaderOk<coordinateSystems>(false))
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< csDictIoPtr->objectPath() << nl
|
<< csDictIoPtr->objectPath() << nl
|
||||||
|
|||||||
@ -174,7 +174,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!ioPtr->headerOk())
|
if (!ioPtr->typeHeaderOk<coordinateSystems>(false))
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< ioPtr->objectPath() << nl
|
<< ioPtr->objectPath() << nl
|
||||||
|
|||||||
@ -187,7 +187,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!ioPtr->headerOk())
|
if (!ioPtr->typeHeaderOk<coordinateSystems>(false))
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< ioPtr->objectPath() << nl
|
<< ioPtr->objectPath() << nl
|
||||||
|
|||||||
@ -42,6 +42,7 @@ Note
|
|||||||
#include "polyMesh.H"
|
#include "polyMesh.H"
|
||||||
#include "distributedTriSurfaceMesh.H"
|
#include "distributedTriSurfaceMesh.H"
|
||||||
#include "mapDistribute.H"
|
#include "mapDistribute.H"
|
||||||
|
#include "localIOdictionary.H"
|
||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
@ -165,23 +166,6 @@ int main(int argc, char *argv[])
|
|||||||
Pstream::scatterList(meshBb);
|
Pstream::scatterList(meshBb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Temporarily: override master-only checking
|
|
||||||
regIOobject::fileCheckTypes oldCheckType =
|
|
||||||
regIOobject::fileModificationChecking;
|
|
||||||
|
|
||||||
if (oldCheckType == regIOobject::timeStampMaster)
|
|
||||||
{
|
|
||||||
regIOobject::fileModificationChecking = regIOobject::timeStamp;
|
|
||||||
}
|
|
||||||
else if (oldCheckType == regIOobject::inotifyMaster)
|
|
||||||
{
|
|
||||||
regIOobject::fileModificationChecking = regIOobject::inotify;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IOobject io
|
IOobject io
|
||||||
(
|
(
|
||||||
surfFileName, // name
|
surfFileName, // name
|
||||||
@ -193,7 +177,8 @@ int main(int argc, char *argv[])
|
|||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
);
|
);
|
||||||
|
|
||||||
const fileName actualPath(io.filePath());
|
// Look for file (using searchableSurface rules)
|
||||||
|
const fileName actualPath(typeFilePath<searchableSurface>(io));
|
||||||
fileName localPath(actualPath);
|
fileName localPath(actualPath);
|
||||||
localPath.replace(runTime.rootPath() + '/', "");
|
localPath.replace(runTime.rootPath() + '/', "");
|
||||||
|
|
||||||
@ -271,10 +256,6 @@ int main(int argc, char *argv[])
|
|||||||
Info<< "Writing surface." << nl << endl;
|
Info<< "Writing surface." << nl << endl;
|
||||||
surfMesh.objectRegistry::write();
|
surfMesh.objectRegistry::write();
|
||||||
|
|
||||||
|
|
||||||
regIOobject::fileModificationChecking = oldCheckType;
|
|
||||||
|
|
||||||
|
|
||||||
Info<< "End\n" << endl;
|
Info<< "End\n" << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -183,11 +183,17 @@ $(functionEntries)/inputModeEntry/inputModeEntry.C
|
|||||||
$(functionEntries)/removeEntry/removeEntry.C
|
$(functionEntries)/removeEntry/removeEntry.C
|
||||||
|
|
||||||
IOdictionary = db/IOobjects/IOdictionary
|
IOdictionary = db/IOobjects/IOdictionary
|
||||||
|
$(IOdictionary)/baseIOdictionary.C
|
||||||
|
$(IOdictionary)/baseIOdictionaryIO.C
|
||||||
$(IOdictionary)/IOdictionary.C
|
$(IOdictionary)/IOdictionary.C
|
||||||
$(IOdictionary)/IOdictionaryIO.C
|
$(IOdictionary)/localIOdictionary.C
|
||||||
|
$(IOdictionary)/unwatchedIOdictionary.C
|
||||||
|
|
||||||
db/IOobjects/IOMap/IOMapName.C
|
db/IOobjects/IOMap/IOMapName.C
|
||||||
|
|
||||||
|
db/IOobjects/GlobalIOList/globalIOLists.C
|
||||||
|
|
||||||
|
|
||||||
IOobject = db/IOobject
|
IOobject = db/IOobject
|
||||||
$(IOobject)/IOobject.C
|
$(IOobject)/IOobject.C
|
||||||
$(IOobject)/IOobjectIO.C
|
$(IOobject)/IOobjectIO.C
|
||||||
@ -592,6 +598,9 @@ $(Fields)/quaternionField/quaternionIOField.C
|
|||||||
$(Fields)/triadField/triadIOField.C
|
$(Fields)/triadField/triadIOField.C
|
||||||
$(Fields)/transformField/transformField.C
|
$(Fields)/transformField/transformField.C
|
||||||
|
|
||||||
|
$(Fields)/globalFields/globalIOFields.C
|
||||||
|
|
||||||
|
|
||||||
pointPatchFields = fields/pointPatchFields
|
pointPatchFields = fields/pointPatchFields
|
||||||
$(pointPatchFields)/pointPatchField/pointPatchFields.C
|
$(pointPatchFields)/pointPatchField/pointPatchFields.C
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -32,11 +32,87 @@ License
|
|||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
defineTypeNameAndDebug(IOobject, 0);
|
defineTypeNameAndDebug(IOobject, 0);
|
||||||
|
|
||||||
|
template<>
|
||||||
|
const char* NamedEnum
|
||||||
|
<
|
||||||
|
IOobject::fileCheckTypes,
|
||||||
|
4
|
||||||
|
>::names[] =
|
||||||
|
{
|
||||||
|
"timeStamp",
|
||||||
|
"timeStampMaster",
|
||||||
|
"inotify",
|
||||||
|
"inotifyMaster"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Foam::NamedEnum<Foam::IOobject::fileCheckTypes, 4>
|
||||||
|
Foam::IOobject::fileCheckTypesNames;
|
||||||
|
|
||||||
|
// Default fileCheck type
|
||||||
|
Foam::IOobject::fileCheckTypes Foam::IOobject::fileModificationChecking
|
||||||
|
(
|
||||||
|
fileCheckTypesNames.read
|
||||||
|
(
|
||||||
|
debug::optimisationSwitches().lookup
|
||||||
|
(
|
||||||
|
"fileModificationChecking"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
// Register re-reader
|
||||||
|
class addfileModificationCheckingToOpt
|
||||||
|
:
|
||||||
|
public ::Foam::simpleRegIOobject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
addfileModificationCheckingToOpt(const char* name)
|
||||||
|
:
|
||||||
|
::Foam::simpleRegIOobject(Foam::debug::addOptimisationObject, name)
|
||||||
|
{}
|
||||||
|
|
||||||
|
virtual ~addfileModificationCheckingToOpt()
|
||||||
|
{}
|
||||||
|
|
||||||
|
virtual void readData(Foam::Istream& is)
|
||||||
|
{
|
||||||
|
IOobject::fileModificationChecking =
|
||||||
|
IOobject::fileCheckTypesNames.read(is);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void writeData(Foam::Ostream& os) const
|
||||||
|
{
|
||||||
|
os << IOobject::fileCheckTypesNames
|
||||||
|
[IOobject::fileModificationChecking];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
addfileModificationCheckingToOpt addfileModificationCheckingToOpt_
|
||||||
|
(
|
||||||
|
"fileModificationChecking"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
// Return components following the IOobject requirements
|
||||||
|
//
|
||||||
|
// behaviour
|
||||||
|
// input IOobject(instance, local, name)
|
||||||
|
// ----- ------
|
||||||
|
// "foo" ("", "", "foo")
|
||||||
|
// "foo/bar" ("foo", "", "bar")
|
||||||
|
// "/XXX/bar" ("/XXX", "", "bar")
|
||||||
|
// "foo/bar/" ERROR - no name
|
||||||
|
// "foo/xxx/bar" ("foo", "xxx", "bar")
|
||||||
|
// "foo/xxx/yyy/bar" ("foo", "xxx/yyy", "bar")
|
||||||
bool Foam::IOobject::fileNameComponents
|
bool Foam::IOobject::fileNameComponents
|
||||||
(
|
(
|
||||||
const fileName& path,
|
const fileName& path,
|
||||||
@ -129,6 +205,7 @@ Foam::IOobject::IOobject
|
|||||||
rOpt_(ro),
|
rOpt_(ro),
|
||||||
wOpt_(wo),
|
wOpt_(wo),
|
||||||
registerObject_(registerObject),
|
registerObject_(registerObject),
|
||||||
|
globalObject_(false),
|
||||||
objState_(GOOD)
|
objState_(GOOD)
|
||||||
{
|
{
|
||||||
if (objectRegistry::debug)
|
if (objectRegistry::debug)
|
||||||
@ -148,7 +225,8 @@ Foam::IOobject::IOobject
|
|||||||
const objectRegistry& registry,
|
const objectRegistry& registry,
|
||||||
readOption ro,
|
readOption ro,
|
||||||
writeOption wo,
|
writeOption wo,
|
||||||
bool registerObject
|
bool registerObject,
|
||||||
|
bool globalObject
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
name_(name),
|
name_(name),
|
||||||
@ -160,6 +238,7 @@ Foam::IOobject::IOobject
|
|||||||
rOpt_(ro),
|
rOpt_(ro),
|
||||||
wOpt_(wo),
|
wOpt_(wo),
|
||||||
registerObject_(registerObject),
|
registerObject_(registerObject),
|
||||||
|
globalObject_(globalObject),
|
||||||
objState_(GOOD)
|
objState_(GOOD)
|
||||||
{
|
{
|
||||||
if (objectRegistry::debug)
|
if (objectRegistry::debug)
|
||||||
@ -177,7 +256,8 @@ Foam::IOobject::IOobject
|
|||||||
const objectRegistry& registry,
|
const objectRegistry& registry,
|
||||||
readOption ro,
|
readOption ro,
|
||||||
writeOption wo,
|
writeOption wo,
|
||||||
bool registerObject
|
bool registerObject,
|
||||||
|
bool globalObject
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
name_(),
|
name_(),
|
||||||
@ -189,6 +269,7 @@ Foam::IOobject::IOobject
|
|||||||
rOpt_(ro),
|
rOpt_(ro),
|
||||||
wOpt_(wo),
|
wOpt_(wo),
|
||||||
registerObject_(registerObject),
|
registerObject_(registerObject),
|
||||||
|
globalObject_(globalObject),
|
||||||
objState_(GOOD)
|
objState_(GOOD)
|
||||||
{
|
{
|
||||||
if (!fileNameComponents(path, instance_, local_, name_))
|
if (!fileNameComponents(path, instance_, local_, name_))
|
||||||
@ -207,6 +288,26 @@ Foam::IOobject::IOobject
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::IOobject::IOobject
|
||||||
|
(
|
||||||
|
const IOobject& io,
|
||||||
|
const objectRegistry& registry
|
||||||
|
)
|
||||||
|
:
|
||||||
|
name_(io.name_),
|
||||||
|
headerClassName_(io.headerClassName_),
|
||||||
|
note_(io.note_),
|
||||||
|
instance_(io.instance_),
|
||||||
|
local_(io.local_),
|
||||||
|
db_(registry),
|
||||||
|
rOpt_(io.rOpt_),
|
||||||
|
wOpt_(io.wOpt_),
|
||||||
|
registerObject_(io.registerObject_),
|
||||||
|
globalObject_(io.globalObject_),
|
||||||
|
objState_(io.objState_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
Foam::IOobject::IOobject
|
Foam::IOobject::IOobject
|
||||||
(
|
(
|
||||||
const IOobject& io,
|
const IOobject& io,
|
||||||
@ -222,6 +323,7 @@ Foam::IOobject::IOobject
|
|||||||
rOpt_(io.rOpt_),
|
rOpt_(io.rOpt_),
|
||||||
wOpt_(io.wOpt_),
|
wOpt_(io.wOpt_),
|
||||||
registerObject_(io.registerObject_),
|
registerObject_(io.registerObject_),
|
||||||
|
globalObject_(io.globalObject_),
|
||||||
objState_(io.objState_)
|
objState_(io.objState_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -312,11 +414,12 @@ Foam::fileName Foam::IOobject::path
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::fileName Foam::IOobject::filePath() const
|
Foam::fileName Foam::IOobject::localFilePath() const
|
||||||
{
|
{
|
||||||
if (instance().isAbsolute())
|
if (instance().isAbsolute())
|
||||||
{
|
{
|
||||||
fileName objectPath = instance()/name();
|
fileName objectPath = instance()/name();
|
||||||
|
|
||||||
if (isFile(objectPath))
|
if (isFile(objectPath))
|
||||||
{
|
{
|
||||||
return objectPath;
|
return objectPath;
|
||||||
@ -337,25 +440,6 @@ Foam::fileName Foam::IOobject::filePath() const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if
|
|
||||||
(
|
|
||||||
time().processorCase()
|
|
||||||
&& (
|
|
||||||
instance() == time().system()
|
|
||||||
|| instance() == time().constant()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
fileName parentObjectPath =
|
|
||||||
rootPath()/time().globalCaseName()
|
|
||||||
/instance()/db_.dbDir()/local()/name();
|
|
||||||
|
|
||||||
if (isFile(parentObjectPath))
|
|
||||||
{
|
|
||||||
return parentObjectPath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isDir(path))
|
if (!isDir(path))
|
||||||
{
|
{
|
||||||
word newInstancePath = time().findInstancePath
|
word newInstancePath = time().findInstancePath
|
||||||
@ -384,9 +468,107 @@ Foam::fileName Foam::IOobject::filePath() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::Istream* Foam::IOobject::objectStream()
|
Foam::fileName Foam::IOobject::globalFilePath() const
|
||||||
{
|
{
|
||||||
return objectStream(filePath());
|
if (instance().isAbsolute())
|
||||||
|
{
|
||||||
|
fileName objectPath = instance()/name();
|
||||||
|
if (isFile(objectPath))
|
||||||
|
{
|
||||||
|
if (objectRegistry::debug)
|
||||||
|
{
|
||||||
|
Pout<< "globalFilePath : returning absolute:" << objectPath
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
return objectPath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (objectRegistry::debug)
|
||||||
|
{
|
||||||
|
Pout<< "globalFilePath : absolute not found:" << objectPath
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
return fileName::null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileName path = this->path();
|
||||||
|
fileName objectPath = path/name();
|
||||||
|
|
||||||
|
if (isFile(objectPath))
|
||||||
|
{
|
||||||
|
if (objectRegistry::debug)
|
||||||
|
{
|
||||||
|
Pout<< "globalFilePath : returning time:" << objectPath << endl;
|
||||||
|
}
|
||||||
|
return objectPath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if
|
||||||
|
(
|
||||||
|
time().processorCase()
|
||||||
|
&& (
|
||||||
|
instance() == time().system()
|
||||||
|
|| instance() == time().constant()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Constant & system can come from global case
|
||||||
|
|
||||||
|
fileName parentObjectPath =
|
||||||
|
rootPath()/time().globalCaseName()
|
||||||
|
/instance()/db().dbDir()/local()/name();
|
||||||
|
|
||||||
|
if (isFile(parentObjectPath))
|
||||||
|
{
|
||||||
|
if (objectRegistry::debug)
|
||||||
|
{
|
||||||
|
Pout<< "globalFilePath : returning parent:"
|
||||||
|
<< parentObjectPath << endl;
|
||||||
|
}
|
||||||
|
return parentObjectPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for approximately same time
|
||||||
|
if (!isDir(path))
|
||||||
|
{
|
||||||
|
word newInstancePath = time().findInstancePath
|
||||||
|
(
|
||||||
|
instant(instance())
|
||||||
|
);
|
||||||
|
|
||||||
|
if (newInstancePath.size())
|
||||||
|
{
|
||||||
|
fileName fName
|
||||||
|
(
|
||||||
|
rootPath()/caseName()
|
||||||
|
/newInstancePath/db().dbDir()/local()/name()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (isFile(fName))
|
||||||
|
{
|
||||||
|
if (objectRegistry::debug)
|
||||||
|
{
|
||||||
|
Pout<< "globalFilePath : returning similar time:"
|
||||||
|
<< fName << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (objectRegistry::debug)
|
||||||
|
{
|
||||||
|
Pout<< "globalFilePath : time not found:" << objectPath << endl;
|
||||||
|
}
|
||||||
|
return fileName::null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -413,47 +595,6 @@ Foam::Istream* Foam::IOobject::objectStream(const fileName& fName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Foam::IOobject::headerOk()
|
|
||||||
{
|
|
||||||
bool ok = true;
|
|
||||||
|
|
||||||
Istream* isPtr = objectStream();
|
|
||||||
|
|
||||||
// If the stream has failed return
|
|
||||||
if (!isPtr)
|
|
||||||
{
|
|
||||||
if (objectRegistry::debug)
|
|
||||||
{
|
|
||||||
Info
|
|
||||||
<< "IOobject::headerOk() : "
|
|
||||||
<< "file " << objectPath() << " could not be opened"
|
|
||||||
<< endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Try reading header
|
|
||||||
if (!readHeader(*isPtr))
|
|
||||||
{
|
|
||||||
if (objectRegistry::debug)
|
|
||||||
{
|
|
||||||
IOWarningInFunction((*isPtr))
|
|
||||||
<< "failed to read header of file " << objectPath()
|
|
||||||
<< endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ok = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delete isPtr;
|
|
||||||
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Foam::IOobject::setBad(const string& s)
|
void Foam::IOobject::setBad(const string& s)
|
||||||
{
|
{
|
||||||
if (objState_ != GOOD)
|
if (objState_ != GOOD)
|
||||||
@ -482,6 +623,7 @@ void Foam::IOobject::operator=(const IOobject& io)
|
|||||||
local_ = io.local_;
|
local_ = io.local_;
|
||||||
rOpt_ = io.rOpt_;
|
rOpt_ = io.rOpt_;
|
||||||
wOpt_ = io.wOpt_;
|
wOpt_ = io.wOpt_;
|
||||||
|
globalObject_ = io.globalObject_;
|
||||||
objState_ = io.objState_;
|
objState_ = io.objState_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -76,6 +76,7 @@ SourceFiles
|
|||||||
#include "typeInfo.H"
|
#include "typeInfo.H"
|
||||||
#include "autoPtr.H"
|
#include "autoPtr.H"
|
||||||
#include "InfoProxy.H"
|
#include "InfoProxy.H"
|
||||||
|
#include "NamedEnum.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -119,6 +120,16 @@ public:
|
|||||||
NO_WRITE = 1
|
NO_WRITE = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//- Enumeration defining the file checking options
|
||||||
|
enum fileCheckTypes
|
||||||
|
{
|
||||||
|
timeStamp,
|
||||||
|
timeStampMaster,
|
||||||
|
inotify,
|
||||||
|
inotifyMaster
|
||||||
|
};
|
||||||
|
|
||||||
|
static const NamedEnum<fileCheckTypes, 4> fileCheckTypesNames;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -151,6 +162,9 @@ private:
|
|||||||
//- Register object created from this IOobject with registry if true
|
//- Register object created from this IOobject with registry if true
|
||||||
bool registerObject_;
|
bool registerObject_;
|
||||||
|
|
||||||
|
//- Is object same for all processors
|
||||||
|
bool globalObject_;
|
||||||
|
|
||||||
//- IOobject state
|
//- IOobject state
|
||||||
objectState objState_;
|
objectState objState_;
|
||||||
|
|
||||||
@ -159,10 +173,6 @@ protected:
|
|||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Construct and return an IFstream for the object.
|
|
||||||
// The results is NULL if the stream construction failed
|
|
||||||
Istream* objectStream();
|
|
||||||
|
|
||||||
//- Construct and return an IFstream for the object given the
|
//- Construct and return an IFstream for the object given the
|
||||||
// exact file. The results is NULL if the stream construction failed
|
// exact file. The results is NULL if the stream construction failed
|
||||||
Istream* objectStream(const fileName&);
|
Istream* objectStream(const fileName&);
|
||||||
@ -180,14 +190,6 @@ public:
|
|||||||
// Static Member Functions
|
// Static Member Functions
|
||||||
|
|
||||||
//- Split path into instance, local, name components
|
//- Split path into instance, local, name components
|
||||||
// input IOobject(instance, local, name)
|
|
||||||
// ----- ------
|
|
||||||
// "foo" ("", "", "foo")
|
|
||||||
// "foo/bar" ("foo", "", "bar")
|
|
||||||
// "/XXX/bar" ("/XXX", "", "bar")
|
|
||||||
// "foo/bar/" ERROR - no name
|
|
||||||
// "foo/xxx/bar" ("foo", "xxx", "bar")
|
|
||||||
// "foo/xxx/yyy/bar" ("foo", "xxx/yyy", "bar")
|
|
||||||
static bool fileNameComponents
|
static bool fileNameComponents
|
||||||
(
|
(
|
||||||
const fileName& path,
|
const fileName& path,
|
||||||
@ -199,6 +201,9 @@ public:
|
|||||||
template<class Name>
|
template<class Name>
|
||||||
static inline word groupName(Name name, const word& group);
|
static inline word groupName(Name name, const word& group);
|
||||||
|
|
||||||
|
//- Type of file modification checking
|
||||||
|
static fileCheckTypes fileModificationChecking;
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
@ -222,7 +227,8 @@ public:
|
|||||||
const objectRegistry& registry,
|
const objectRegistry& registry,
|
||||||
readOption r=NO_READ,
|
readOption r=NO_READ,
|
||||||
writeOption w=NO_WRITE,
|
writeOption w=NO_WRITE,
|
||||||
bool registerObject=true
|
bool registerObject=true,
|
||||||
|
bool globalObject = false
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct from path, registry, io options
|
//- Construct from path, registry, io options
|
||||||
@ -233,7 +239,15 @@ public:
|
|||||||
const objectRegistry& registry,
|
const objectRegistry& registry,
|
||||||
readOption r=NO_READ,
|
readOption r=NO_READ,
|
||||||
writeOption w=NO_WRITE,
|
writeOption w=NO_WRITE,
|
||||||
bool registerObject=true
|
bool registerObject=true,
|
||||||
|
bool globalObject = false
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy resetting registry
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
const IOobject& io,
|
||||||
|
const objectRegistry& registry
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct as copy resetting name
|
//- Construct as copy resetting name
|
||||||
@ -244,11 +258,17 @@ public:
|
|||||||
);
|
);
|
||||||
|
|
||||||
//- Clone
|
//- Clone
|
||||||
Foam::autoPtr<IOobject> clone() const
|
autoPtr<IOobject> clone() const
|
||||||
{
|
{
|
||||||
return autoPtr<IOobject>(new IOobject(*this));
|
return autoPtr<IOobject>(new IOobject(*this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Clone resetting registry
|
||||||
|
autoPtr<IOobject> clone(const objectRegistry& registry) const
|
||||||
|
{
|
||||||
|
return autoPtr<IOobject>(new IOobject(*this, registry));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
virtual ~IOobject();
|
virtual ~IOobject();
|
||||||
@ -306,6 +326,18 @@ public:
|
|||||||
return registerObject_;
|
return registerObject_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Is object same for all processors
|
||||||
|
bool& globalObject()
|
||||||
|
{
|
||||||
|
return globalObject_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Is object same for all processors
|
||||||
|
bool globalObject() const
|
||||||
|
{
|
||||||
|
return globalObject_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Read/write options
|
// Read/write options
|
||||||
|
|
||||||
@ -373,9 +405,11 @@ public:
|
|||||||
return path()/name();
|
return path()/name();
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return complete path + object name if the file exists
|
//- Helper for filePath that searches locally
|
||||||
// either in the case/processor or case otherwise null
|
fileName localFilePath() const;
|
||||||
fileName filePath() const;
|
|
||||||
|
//- Helper for filePath that searches up if in parallel
|
||||||
|
fileName globalFilePath() const;
|
||||||
|
|
||||||
|
|
||||||
// Reading
|
// Reading
|
||||||
@ -383,9 +417,14 @@ public:
|
|||||||
//- Read header
|
//- Read header
|
||||||
bool readHeader(Istream&);
|
bool readHeader(Istream&);
|
||||||
|
|
||||||
//- Read and check header info
|
//- Read header (uses typeFilePath to find file) and check header
|
||||||
bool headerOk();
|
// info. Optionally checks headerClassName against type
|
||||||
|
template<class Type>
|
||||||
|
bool typeHeaderOk(const bool checkType = true);
|
||||||
|
|
||||||
|
//- Helper: warn that type does not support re-reading
|
||||||
|
template<class Type>
|
||||||
|
void warnNoRereading() const;
|
||||||
|
|
||||||
// Writing
|
// Writing
|
||||||
|
|
||||||
@ -442,6 +481,21 @@ template<>
|
|||||||
Ostream& operator<<(Ostream& os, const InfoProxy<IOobject>& ip);
|
Ostream& operator<<(Ostream& os, const InfoProxy<IOobject>& ip);
|
||||||
|
|
||||||
|
|
||||||
|
//- Template function for obtaining global status
|
||||||
|
template<class T>
|
||||||
|
inline bool typeGlobal()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Template function for obtaining filePath
|
||||||
|
template<class T>
|
||||||
|
inline fileName typeFilePath(const IOobject& io)
|
||||||
|
{
|
||||||
|
return (typeGlobal<T>() ? io.globalFilePath() : io.localFilePath());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
} // End namespace Foam
|
} // End namespace Foam
|
||||||
@ -452,6 +506,12 @@ Ostream& operator<<(Ostream& os, const InfoProxy<IOobject>& ip);
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "IOobjectTemplates.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -36,6 +36,9 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const InfoProxy<IOobject>& ip)
|
|||||||
os << "IOobject: "
|
os << "IOobject: "
|
||||||
<< io.type() << token::SPACE
|
<< io.type() << token::SPACE
|
||||||
<< io.name() << token::SPACE
|
<< io.name() << token::SPACE
|
||||||
|
<< "readOpt:" << token::SPACE << io.readOpt() << token::SPACE
|
||||||
|
<< "writeOpt:" << token::SPACE << io.writeOpt() << token::SPACE
|
||||||
|
<< "globalObject:" << token::SPACE << io.globalObject() << token::SPACE
|
||||||
<< io.path() << endl;
|
<< io.path() << endl;
|
||||||
|
|
||||||
return os;
|
return os;
|
||||||
|
|||||||
120
src/OpenFOAM/db/IOobject/IOobjectTemplates.C
Normal file
120
src/OpenFOAM/db/IOobject/IOobjectTemplates.C
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "IOobject.H"
|
||||||
|
#include "Istream.H"
|
||||||
|
|
||||||
|
#include "IOstreams.H"
|
||||||
|
#include "Pstream.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
bool Foam::IOobject::typeHeaderOk(const bool checkType)
|
||||||
|
{
|
||||||
|
bool ok = true;
|
||||||
|
|
||||||
|
// Everyone check or just master
|
||||||
|
bool masterOnly =
|
||||||
|
typeGlobal<Type>()
|
||||||
|
&& (
|
||||||
|
IOobject::fileModificationChecking == timeStampMaster
|
||||||
|
|| IOobject::fileModificationChecking == inotifyMaster
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Determine local status
|
||||||
|
if (!masterOnly || Pstream::master())
|
||||||
|
{
|
||||||
|
Istream* isPtr = objectStream(typeFilePath<Type>(*this));
|
||||||
|
|
||||||
|
// If the stream has failed return
|
||||||
|
if (!isPtr)
|
||||||
|
{
|
||||||
|
if (IOobject::debug)
|
||||||
|
{
|
||||||
|
InfoInFunction
|
||||||
|
<< "file " << objectPath() << " could not be opened"
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Try reading header
|
||||||
|
if (readHeader(*isPtr))
|
||||||
|
{
|
||||||
|
if (checkType && headerClassName_ != Type::typeName)
|
||||||
|
{
|
||||||
|
IOWarningInFunction(*isPtr)
|
||||||
|
<< "unexpected class name " << headerClassName_
|
||||||
|
<< " expected " << Type::typeName << endl;
|
||||||
|
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (IOobject::debug)
|
||||||
|
{
|
||||||
|
IOWarningInFunction(*isPtr)
|
||||||
|
<< "failed to read header of file " << objectPath()
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete isPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If masterOnly make sure all processors know about it
|
||||||
|
if (masterOnly)
|
||||||
|
{
|
||||||
|
Pstream::scatter(ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void Foam::IOobject::warnNoRereading() const
|
||||||
|
{
|
||||||
|
if (readOpt() == IOobject::MUST_READ_IF_MODIFIED)
|
||||||
|
{
|
||||||
|
WarningInFunction
|
||||||
|
<< Type::typeName << ' ' << name()
|
||||||
|
<< " constructed with IOobject::MUST_READ_IF_MODIFIED"
|
||||||
|
" but " << Type::typeName
|
||||||
|
<< " does not support automatic rereading."
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -26,7 +26,7 @@ License
|
|||||||
#include "IOobjectList.H"
|
#include "IOobjectList.H"
|
||||||
#include "Time.H"
|
#include "Time.H"
|
||||||
#include "OSspecific.H"
|
#include "OSspecific.H"
|
||||||
|
#include "IOList.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -77,7 +77,8 @@ Foam::IOobjectList::IOobjectList
|
|||||||
registerObject
|
registerObject
|
||||||
);
|
);
|
||||||
|
|
||||||
if (objectPtr->headerOk())
|
// Use object with local scope
|
||||||
|
if (objectPtr->typeHeaderOk<IOList<label> >(false))
|
||||||
{
|
{
|
||||||
insert(ObjectNames[i], objectPtr);
|
insert(ObjectNames[i], objectPtr);
|
||||||
}
|
}
|
||||||
|
|||||||
134
src/OpenFOAM/db/IOobjects/GlobalIOField/GlobalIOField.C
Normal file
134
src/OpenFOAM/db/IOobjects/GlobalIOField/GlobalIOField.C
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "GlobalIOField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOField<Type>::GlobalIOField(const IOobject& io)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOField<Type> >();
|
||||||
|
|
||||||
|
readHeaderOk(IOstream::BINARY, typeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOField<Type>::GlobalIOField(const IOobject& io, const label size)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOField<Type> >();
|
||||||
|
|
||||||
|
if (!readHeaderOk(IOstream::BINARY, typeName))
|
||||||
|
{
|
||||||
|
Field<Type>::setSize(size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOField<Type>::GlobalIOField
|
||||||
|
(
|
||||||
|
const IOobject& io,
|
||||||
|
const Field<Type>& f
|
||||||
|
)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOField<Type> >();
|
||||||
|
|
||||||
|
if (!readHeaderOk(IOstream::BINARY, typeName))
|
||||||
|
{
|
||||||
|
Field<Type>::operator=(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOField<Type>::GlobalIOField
|
||||||
|
(
|
||||||
|
const IOobject& io,
|
||||||
|
const Xfer<Field<Type> >& f
|
||||||
|
)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOField<Type> >();
|
||||||
|
|
||||||
|
Field<Type>::transfer(f());
|
||||||
|
|
||||||
|
readHeaderOk(IOstream::BINARY, typeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOField<Type>::~GlobalIOField()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
bool Foam::GlobalIOField<Type>::readData(Istream& is)
|
||||||
|
{
|
||||||
|
is >> *this;
|
||||||
|
return is.good();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
bool Foam::GlobalIOField<Type>::writeData(Ostream& os) const
|
||||||
|
{
|
||||||
|
return (os << static_cast<const Field<Type>&>(*this)).good();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void Foam::GlobalIOField<Type>::operator=(const GlobalIOField<Type>& rhs)
|
||||||
|
{
|
||||||
|
Field<Type>::operator=(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void Foam::GlobalIOField<Type>::operator=(const Field<Type>& rhs)
|
||||||
|
{
|
||||||
|
Field<Type>::operator=(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
125
src/OpenFOAM/db/IOobjects/GlobalIOField/GlobalIOField.H
Normal file
125
src/OpenFOAM/db/IOobjects/GlobalIOField/GlobalIOField.H
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::GlobalIOField
|
||||||
|
|
||||||
|
Description
|
||||||
|
IOField with global data (so optionally read from master)
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
GlobalIOField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef GlobalIOField_H
|
||||||
|
#define GlobalIOField_H
|
||||||
|
|
||||||
|
#include "regIOobject.H"
|
||||||
|
#include "Field.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class GlobalIOField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
class GlobalIOField
|
||||||
|
:
|
||||||
|
public regIOobject,
|
||||||
|
public Field<Type>
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
TypeName("Field");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from IOobject
|
||||||
|
GlobalIOField(const IOobject&);
|
||||||
|
|
||||||
|
//- Construct from IOobject and size (does not set values)
|
||||||
|
GlobalIOField(const IOobject&, const label size);
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
GlobalIOField(const IOobject&, const Field<Type>&);
|
||||||
|
|
||||||
|
//- Construct by transferring the Field contents
|
||||||
|
GlobalIOField(const IOobject&, const Xfer<Field<Type> >&);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~GlobalIOField();
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
//- Is object global
|
||||||
|
virtual bool global() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return complete path + object name if the file exists
|
||||||
|
// either in the case/processor or case otherwise null
|
||||||
|
virtual fileName filePath() const
|
||||||
|
{
|
||||||
|
return globalFilePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
//- ReadData function required for regIOobject read operation
|
||||||
|
virtual bool readData(Istream&);
|
||||||
|
|
||||||
|
//- WriteData function required for regIOobject write operation
|
||||||
|
bool writeData(Ostream&) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Member operators
|
||||||
|
|
||||||
|
void operator=(const GlobalIOField<Type>&);
|
||||||
|
|
||||||
|
void operator=(const Field<Type>&);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "GlobalIOField.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
130
src/OpenFOAM/db/IOobjects/GlobalIOList/GlobalIOList.C
Normal file
130
src/OpenFOAM/db/IOobjects/GlobalIOList/GlobalIOList.C
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "GlobalIOList.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOList<Type>::GlobalIOList(const IOobject& io)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOList<Type> >();
|
||||||
|
|
||||||
|
readHeaderOk(IOstream::BINARY, typeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOList<Type>::GlobalIOList(const IOobject& io, const label size)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOList<Type> >();
|
||||||
|
|
||||||
|
if (!readHeaderOk(IOstream::BINARY, typeName))
|
||||||
|
{
|
||||||
|
List<Type>::setSize(size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOList<Type>::GlobalIOList(const IOobject& io, const List<Type>& f)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOList<Type> >();
|
||||||
|
|
||||||
|
if (!readHeaderOk(IOstream::BINARY, typeName))
|
||||||
|
{
|
||||||
|
List<Type>::operator=(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOList<Type>::GlobalIOList
|
||||||
|
(
|
||||||
|
const IOobject& io,
|
||||||
|
const Xfer<List<Type> >& f
|
||||||
|
)
|
||||||
|
:
|
||||||
|
regIOobject(io)
|
||||||
|
{
|
||||||
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
|
warnNoRereading<GlobalIOList<Type> >();
|
||||||
|
|
||||||
|
List<Type>::transfer(f());
|
||||||
|
|
||||||
|
readHeaderOk(IOstream::BINARY, typeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::GlobalIOList<Type>::~GlobalIOList()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
bool Foam::GlobalIOList<Type>::readData(Istream& is)
|
||||||
|
{
|
||||||
|
is >> *this;
|
||||||
|
return is.good();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
bool Foam::GlobalIOList<Type>::writeData(Ostream& os) const
|
||||||
|
{
|
||||||
|
return (os << *this).good();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void Foam::GlobalIOList<Type>::operator=(const GlobalIOList<Type>& rhs)
|
||||||
|
{
|
||||||
|
List<Type>::operator=(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void Foam::GlobalIOList<Type>::operator=(const List<Type>& rhs)
|
||||||
|
{
|
||||||
|
List<Type>::operator=(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
125
src/OpenFOAM/db/IOobjects/GlobalIOList/GlobalIOList.H
Normal file
125
src/OpenFOAM/db/IOobjects/GlobalIOList/GlobalIOList.H
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::GlobalIOList
|
||||||
|
|
||||||
|
Description
|
||||||
|
IOList with global data (so optionally read from master)
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
GlobalIOList.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef GlobalIOList_H
|
||||||
|
#define GlobalIOList_H
|
||||||
|
|
||||||
|
#include "List.H"
|
||||||
|
#include "regIOobject.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class GlobalIOList Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
class GlobalIOList
|
||||||
|
:
|
||||||
|
public regIOobject,
|
||||||
|
public List<Type>
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
TypeName("List");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from IOobject
|
||||||
|
GlobalIOList(const IOobject&);
|
||||||
|
|
||||||
|
//- Construct from IOobject
|
||||||
|
GlobalIOList(const IOobject&, const label size);
|
||||||
|
|
||||||
|
//- Construct from IOobject and a List
|
||||||
|
GlobalIOList(const IOobject&, const List<Type>&);
|
||||||
|
|
||||||
|
//- Construct by transferring the List contents
|
||||||
|
GlobalIOList(const IOobject&, const Xfer<List<Type> >&);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~GlobalIOList();
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
//- Is object global
|
||||||
|
virtual bool global() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return complete path + object name if the file exists
|
||||||
|
// either in the case/processor or case otherwise null
|
||||||
|
virtual fileName filePath() const
|
||||||
|
{
|
||||||
|
return globalFilePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
//- ReadData function required for regIOobject read operation
|
||||||
|
virtual bool readData(Istream&);
|
||||||
|
|
||||||
|
//- WriteData function required for regIOobject write operation
|
||||||
|
bool writeData(Ostream&) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Member operators
|
||||||
|
|
||||||
|
void operator=(const GlobalIOList<Type>&);
|
||||||
|
|
||||||
|
void operator=(const List<Type>&);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "GlobalIOList.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
44
src/OpenFOAM/db/IOobjects/GlobalIOList/globalIOLists.C
Normal file
44
src/OpenFOAM/db/IOobjects/GlobalIOList/globalIOLists.C
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "globalIOLists.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTemplateTypeNameWithName(labelGlobalIOList, "labelList");
|
||||||
|
defineTemplateTypeNameWithName(scalarGlobalIOList, "scalarList");
|
||||||
|
defineTemplateTypeNameWithName(vectorGlobalIOList, "vectorList");
|
||||||
|
defineTemplateTypeNameWithName
|
||||||
|
(
|
||||||
|
sphericalTensorGlobalIOList,
|
||||||
|
"sphericalTensorList"
|
||||||
|
);
|
||||||
|
defineTemplateTypeNameWithName(symmTensorGlobalIOList, "symmTensorList");
|
||||||
|
defineTemplateTypeNameWithName(tensorGlobalIOList, "tensorList");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
88
src/OpenFOAM/db/IOobjects/GlobalIOList/globalIOLists.H
Normal file
88
src/OpenFOAM/db/IOobjects/GlobalIOList/globalIOLists.H
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Typedef
|
||||||
|
Foam::globalIOLists
|
||||||
|
|
||||||
|
Description
|
||||||
|
Typedefs for globalIOLists of primitive types. These are fully compatible
|
||||||
|
with 'normal' IOLists except have global filePath() scope.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef globalIOLists_H
|
||||||
|
#define globalIOLists_H
|
||||||
|
|
||||||
|
#include "primitiveFields.H"
|
||||||
|
#include "GlobalIOList.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
typedef GlobalIOList<label> labelGlobalIOList;
|
||||||
|
typedef GlobalIOList<scalar> scalarGlobalIOList;
|
||||||
|
typedef GlobalIOList<vector> vectorGlobalIOList;
|
||||||
|
typedef GlobalIOList<sphericalTensor> sphericalTensorGlobalIOList;
|
||||||
|
typedef GlobalIOList<symmTensor> symmTensorGlobalIOList;
|
||||||
|
typedef GlobalIOList<tensor> tensorGlobalIOList;
|
||||||
|
|
||||||
|
//- Template function for obtaining global status
|
||||||
|
template<>
|
||||||
|
inline bool typeGlobal<labelGlobalIOList>()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
inline bool typeGlobal<scalarGlobalIOList>()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
inline bool typeGlobal<vectorGlobalIOList>()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
inline bool typeGlobal<sphericalTensorGlobalIOList>()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
inline bool typeGlobal<symmTensorGlobalIOList>()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
template<>
|
||||||
|
inline bool typeGlobal<tensorGlobalIOList>()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -32,15 +32,8 @@ Foam::IOField<Type>::IOField(const IOobject& io)
|
|||||||
:
|
:
|
||||||
regIOobject(io)
|
regIOobject(io)
|
||||||
{
|
{
|
||||||
// Temporary warning
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
if (io.readOpt() == IOobject::MUST_READ_IF_MODIFIED)
|
warnNoRereading<IOField<Type> >();
|
||||||
{
|
|
||||||
WarningInFunction
|
|
||||||
<< "IOField " << name()
|
|
||||||
<< " constructed with IOobject::MUST_READ_IF_MODIFIED"
|
|
||||||
" but IOField does not support automatic rereading."
|
|
||||||
<< endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
@ -62,15 +55,8 @@ Foam::IOField<Type>::IOField(const IOobject& io, const label size)
|
|||||||
:
|
:
|
||||||
regIOobject(io)
|
regIOobject(io)
|
||||||
{
|
{
|
||||||
// Temporary warning
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
if (io.readOpt() == IOobject::MUST_READ_IF_MODIFIED)
|
warnNoRereading<IOField<Type> >();
|
||||||
{
|
|
||||||
WarningInFunction
|
|
||||||
<< "IOField " << name()
|
|
||||||
<< " constructed with IOobject::MUST_READ_IF_MODIFIED"
|
|
||||||
" but IOField does not support automatic rereading."
|
|
||||||
<< endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
@ -96,15 +82,8 @@ Foam::IOField<Type>::IOField(const IOobject& io, const Field<Type>& f)
|
|||||||
:
|
:
|
||||||
regIOobject(io)
|
regIOobject(io)
|
||||||
{
|
{
|
||||||
// Temporary warning
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
if (io.readOpt() == IOobject::MUST_READ_IF_MODIFIED)
|
warnNoRereading<IOField<Type> >();
|
||||||
{
|
|
||||||
WarningInFunction
|
|
||||||
<< "IOField " << name()
|
|
||||||
<< " constructed with IOobject::MUST_READ_IF_MODIFIED"
|
|
||||||
" but IOField does not support automatic rereading."
|
|
||||||
<< endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
@ -130,15 +109,8 @@ Foam::IOField<Type>::IOField(const IOobject& io, const Xfer<Field<Type> >& f)
|
|||||||
:
|
:
|
||||||
regIOobject(io)
|
regIOobject(io)
|
||||||
{
|
{
|
||||||
// Temporary warning
|
// Check for MUST_READ_IF_MODIFIED
|
||||||
if (io.readOpt() == IOobject::MUST_READ_IF_MODIFIED)
|
warnNoRereading<IOField<Type> >();
|
||||||
{
|
|
||||||
WarningInFunction
|
|
||||||
<< "IOField " << name()
|
|
||||||
<< " constructed with IOobject::MUST_READ_IF_MODIFIED"
|
|
||||||
" but IOField does not support automatic rereading."
|
|
||||||
<< endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
Field<Type>::transfer(f());
|
Field<Type>::transfer(f());
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user