From 4c91d068fabfc4f3b1bf8c531311c32914350f22 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Fri, 2 Aug 2019 12:44:47 +0200 Subject: [PATCH] ENH: added Time::New factory method - creates a dummy time, which is useful when a local object registry is needed --- src/OpenFOAM/db/Time/Time.C | 32 +++++++++++++++++++ src/OpenFOAM/db/Time/Time.H | 9 ++++++ .../edgeMeshFormats/edgeMesh/edgeMeshFormat.C | 26 ++++----------- .../edgeMeshFormats/vtk/VTKedgeFormat.C | 19 +++-------- .../extendedEdgeMeshFormat.C | 13 ++------ .../surfaceFormats/vtk/VTKsurfaceFormat.C | 19 +++-------- .../boundaryData/boundaryDataSurfaceWriter.C | 32 ++++--------------- 7 files changed, 66 insertions(+), 84 deletions(-) diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C index 7c0bc062e1c..c215eb6956c 100644 --- a/src/OpenFOAM/db/Time/Time.C +++ b/src/OpenFOAM/db/Time/Time.C @@ -711,6 +711,38 @@ Foam::Time::Time } +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::Time> Foam::Time::New() +{ + return + autoPtr<Time>::New + ( + ".", // root-path + ".", // case-name + "system", + "constant", + false, // No enableFunctionObjects + false // No enableLibs + ); +} + + +Foam::autoPtr<Foam::Time> Foam::Time::New(const fileName& caseDir) +{ + return + autoPtr<Time>::New + ( + caseDir.path(), // root-path + caseDir.name(), // case-name + "system", + "constant", + false, // No enableFunctionObjects + false // No enableLibs + ); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::Time::~Time() diff --git a/src/OpenFOAM/db/Time/Time.H b/src/OpenFOAM/db/Time/Time.H index 9b8f37e2526..0f1147519e7 100644 --- a/src/OpenFOAM/db/Time/Time.H +++ b/src/OpenFOAM/db/Time/Time.H @@ -271,6 +271,15 @@ public: ); + // Selectors + + //- Construct dummy time, without functionObjects or libraries + static autoPtr<Time> New(); + + //- Construct dummy time, without functionObjects or libraries + static autoPtr<Time> New(const fileName& caseDir); + + //- Destructor virtual ~Time(); diff --git a/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C index a5982d63890..f5eddc4139c 100644 --- a/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/edgeMesh/edgeMeshFormat.C @@ -52,22 +52,15 @@ bool Foam::fileFormats::edgeMeshFormat::read { clear(); - // Construct dummy time to use as an objectRegistry - Time dummyTime - ( - ".", //rootPath, - ".", //caseName, - "system", //systemName, - "constant", //constantName, - false //enableFunctionObjects - ); + // Use dummy Time for objectRegistry + autoPtr<Time> dummyTimePtr(Time::New()); // Construct IOobject to re-use the headerOk & readHeader // (so we can read ascii and binary) IOobject io ( filename, - dummyTime, + *dummyTimePtr, IOobject::NO_READ, IOobject::NO_WRITE, false @@ -150,21 +143,14 @@ void Foam::fileFormats::edgeMeshFormat::write const edgeMesh& mesh ) { - // Construct dummy time to use as an objectRegistry - Time dummyTime - ( - ".", //rootPath, - ".", //caseName, - "system", //systemName, - "constant", //constantName, - false //enableFunctionObjects - ); + // Use dummy Time for objectRegistry + autoPtr<Time> dummyTimePtr(Time::New()); // Construct IOobject to re-use the writeHeader IOobject io ( filename, - dummyTime, + *dummyTimePtr, IOobject::NO_READ, IOobject::NO_WRITE, false diff --git a/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C index 7e6ab903a72..b24c62216ee 100644 --- a/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C +++ b/src/meshTools/edgeMesh/edgeMeshFormats/vtk/VTKedgeFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -98,24 +98,15 @@ bool Foam::fileFormats::VTKedgeFormat::read << exit(FatalError); } - // Construct dummy time so we have something to create an objectRegistry - // from - Time dummyTime - ( - "dummyRoot", - "dummyCase", - "system", - "constant", - false // enableFunctionObjects - ); + // Use dummy Time for objectRegistry + autoPtr<Time> dummyTimePtr(Time::New()); - // Make dummy object registry objectRegistry obr ( IOobject ( - "dummy", - dummyTime, + "vtk::edgeFormat", + *dummyTimePtr, IOobject::NO_READ, IOobject::NO_WRITE, false diff --git a/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C index 9070943bc23..0e4c9e5ab36 100644 --- a/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C +++ b/src/meshTools/edgeMesh/extendedEdgeMesh/extendedEdgeMeshFormats/extendedEdgeMeshFormat/extendedEdgeMeshFormat.C @@ -50,22 +50,15 @@ bool Foam::fileFormats::extendedEdgeMeshFormat::read { clear(); - // Construct dummy time to use as an objectRegistry - Time dummyTime - ( - ".", //rootPath, - ".", //caseName, - "system", //systemName, - "constant", //constantName, - false //enableFunctionObjects - ); + // Use dummy Time for objectRegistry + autoPtr<Time> dummyTimePtr(Time::New()); // Construct IOobject to re-use the headerOk & readHeader // (so we can read ascii and binary) IOobject io ( filename, - dummyTime, + *dummyTimePtr, IOobject::NO_READ, IOobject::NO_WRITE, false diff --git a/src/surfMesh/surfaceFormats/vtk/VTKsurfaceFormat.C b/src/surfMesh/surfaceFormats/vtk/VTKsurfaceFormat.C index 6d5a5f7eaf3..ca4dadfbc26 100644 --- a/src/surfMesh/surfaceFormats/vtk/VTKsurfaceFormat.C +++ b/src/surfMesh/surfaceFormats/vtk/VTKsurfaceFormat.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -102,24 +102,15 @@ bool Foam::fileFormats::VTKsurfaceFormat<Face>::read bool sorted = true; - // Construct dummy time so we have something to create an objectRegistry - // from - Time dummyTime - ( - "dummyRoot", - "dummyCase", - "system", - "constant", - false // enableFunctionObjects - ); + // Use dummy Time for objectRegistry + autoPtr<Time> dummyTimePtr(Time::New()); - // Make dummy object registry objectRegistry obr ( IOobject ( - "dummy", - dummyTime, + "vtk::surfaceFormat", + *dummyTimePtr, IOobject::NO_READ, IOobject::NO_WRITE, false diff --git a/src/surfMesh/writers/boundaryData/boundaryDataSurfaceWriter.C b/src/surfMesh/writers/boundaryData/boundaryDataSurfaceWriter.C index fc8482b8141..756e1043ea0 100644 --- a/src/surfMesh/writers/boundaryData/boundaryDataSurfaceWriter.C +++ b/src/surfMesh/writers/boundaryData/boundaryDataSurfaceWriter.C @@ -112,18 +112,8 @@ Foam::fileName Foam::surfaceWriters::boundaryDataWriter::write() } - // Dummy time to use as an objectRegistry - const fileName caseDir(argList::envGlobalPath()); - - Time dummyTime - ( - caseDir.path(), // root-path, - caseDir.name(), // case-name, - "system", // - "constant", // - false, // no function objects - false // no libs - ); + // Dummy Time to use as objectRegistry + autoPtr<Time> dummyTimePtr(Time::New(argList::envGlobalPath())); const meshedSurf& surf = surface(); @@ -140,7 +130,7 @@ Foam::fileName Foam::surfaceWriters::boundaryDataWriter::write() IOobject ( surfaceDir/"points", - dummyTime, + *dummyTimePtr, IOobject::NO_READ, IOobject::NO_WRITE, false @@ -183,18 +173,8 @@ Foam::fileName Foam::surfaceWriters::boundaryDataWriter::writeTemplate const fileName outputFile(surfaceDir/timeName()/fieldName); - // Dummy time to use as an objectRegistry - const fileName caseDir(argList::envGlobalPath()); - - Time dummyTime - ( - caseDir.path(), // root-path, - caseDir.name(), // case-name, - "system", // - "constant", // - false, // no function objects - false // no libs - ); + // Dummy Time to use as objectRegistry + autoPtr<Time> dummyTimePtr(Time::New(argList::envGlobalPath())); // Geometry merge() implicit @@ -217,7 +197,7 @@ Foam::fileName Foam::surfaceWriters::boundaryDataWriter::writeTemplate IOobject ( surfaceDir/"points", - dummyTime, + *dummyTimePtr, IOobject::NO_READ, IOobject::NO_WRITE, false -- GitLab