From 076bcc25c92bad5b7a667262c35c064cfc9a87b5 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Tue, 9 Jun 2020 12:15:11 +0200 Subject: [PATCH] ENH: relocate externalFileCoupler from finiteVolume to meshTools --- .../test/externalFileCoupler/Allclean | 10 ++++++ applications/test/externalFileCoupler/Allrun | 20 +++++++++++ .../test/externalFileCoupler/Make/options | 4 +-- .../Test-externalFileCoupler.C | 36 +++++++++++++++---- src/finiteVolume/Make/files | 3 -- src/meshTools/Make/files | 2 ++ .../coupling/externalFileCoupler.C | 0 .../coupling/externalFileCoupler.H | 1 - .../coupling/externalFileCouplerI.H | 0 9 files changed, 64 insertions(+), 12 deletions(-) create mode 100755 applications/test/externalFileCoupler/Allclean create mode 100755 applications/test/externalFileCoupler/Allrun rename src/{finiteVolume/cfdTools/general => meshTools}/coupling/externalFileCoupler.C (100%) rename src/{finiteVolume/cfdTools/general => meshTools}/coupling/externalFileCoupler.H (99%) rename src/{finiteVolume/cfdTools/general => meshTools}/coupling/externalFileCouplerI.H (100%) diff --git a/applications/test/externalFileCoupler/Allclean b/applications/test/externalFileCoupler/Allclean new file mode 100755 index 00000000000..ad4e6f33013 --- /dev/null +++ b/applications/test/externalFileCoupler/Allclean @@ -0,0 +1,10 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +#------------------------------------------------------------------------------ + +# Remove old junk +rm -f comms/OpenFOAM.lock + +rmdir comms + +#------------------------------------------------------------------------------ diff --git a/applications/test/externalFileCoupler/Allrun b/applications/test/externalFileCoupler/Allrun new file mode 100755 index 00000000000..e5557cc1581 --- /dev/null +++ b/applications/test/externalFileCoupler/Allrun @@ -0,0 +1,20 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +#------------------------------------------------------------------------------ + +# Cleanup old junk that may prevent things from starting +rm -f comms/OpenFOAM.lock + +# If this exits prematurely, trigger the external solver to stop +trap '[ -e comms/OpenFOAM.lock ] && echo "status=done" > comms/OpenFOAM.lock' EXIT TERM INT + +Test-externalFileCoupler -slave -max 50 & + +Test-externalFileCoupler -max 25 + +# Give some time for the slave to find updated file +sleep 2 + +[ -d comms ] && echo "status=done" > comms/OpenFOAM.lock + +#------------------------------------------------------------------------------ diff --git a/applications/test/externalFileCoupler/Make/options b/applications/test/externalFileCoupler/Make/options index fa15f124528..54c035b8f55 100644 --- a/applications/test/externalFileCoupler/Make/options +++ b/applications/test/externalFileCoupler/Make/options @@ -1,5 +1,5 @@ EXE_INC = \ - -I$(LIB_SRC)/finiteVolume/lnInclude + -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ - -lfiniteVolume + -lmeshTools diff --git a/applications/test/externalFileCoupler/Test-externalFileCoupler.C b/applications/test/externalFileCoupler/Test-externalFileCoupler.C index c90e766aacb..65edbddeb09 100644 --- a/applications/test/externalFileCoupler/Test-externalFileCoupler.C +++ b/applications/test/externalFileCoupler/Test-externalFileCoupler.C @@ -28,6 +28,7 @@ Application Description Test of master/slave communication etc. + \*---------------------------------------------------------------------------*/ #include "argList.H" @@ -41,55 +42,78 @@ using namespace Foam; int main(int argc, char *argv[]) { + argList::noBanner(); argList::noParallel(); + argList::addOption("sleep", "N", "sleep to add between calls"); argList::addOption("max", "N", "max number of calls (default: 1000)"); argList::addBoolOption("slave", "run as slave"); #include "setRootCase.H" const label maxCount = args.getOrDefault<label>("max", 1000); + const label sleeping = args.getOrDefault<label>("sleep", 0); externalFileCoupler coupler; if (args.found("slave")) { const word role = "slave"; - Info<< "Running as " << role << " max=" << maxCount << endl; + const word other = "master"; + Info<< "Running as " << role << " max=" << maxCount + << " (sleep " << sleeping << ')' << endl; for (label count = 0; count < maxCount; ++count) { // Wait for master, but stop if status=done was seen + Info<< role << '[' << count << "] wait for " << other << endl; - Info<< role << ": waiting for master" << endl; if (!coupler.waitForMaster()) { Info<< role << ": stopping. status=done was detected" << endl; break; } - Info<< role << ": switch to master" << endl; + if (sleeping) + { + sleep(sleeping); + } + + // Info<< role << ": switch to " << other << endl; coupler.useMaster(); } + + Info<< role << ": exiting" << endl; } else { const word role = "master"; - Info<< "Running as " << role << " max=" << maxCount << endl; + const word other = "slave"; + Info<< "Running as " << role << " max=" << maxCount + << " (sleep " << sleeping << ')' << endl; for (label count = 0; count < maxCount; ++count) { // Wait for slave, but stop if status=done was seen - Info<< role << ": waiting for slave" << endl; + Info<< role << '[' << count << "] wait for " << other << endl; + if (!coupler.waitForSlave()) { Info<< role << ": stopping. status=done was detected" << endl; break; } - Info<< role << ": switch to slave" << endl; + if (sleeping) + { + sleep(sleeping); + } + + // Info<< role << ": switch to " << other << endl; coupler.useSlave(); } + + // shudown - slave should notice and terminate + Info<< role << ": exiting" << endl; } return 0; diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 6a0bf5c8fa7..7ef61600d63 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -471,9 +471,6 @@ $(general)/pressureControl/pressureControl.C $(general)/levelSet/levelSet.C $(general)/meshObjects/gravity/gravityMeshObject.C -coupling = $(general)/coupling -$(coupling)/externalFileCoupler.C - solutionControl = $(general)/solutionControl $(solutionControl)/solutionControl/solutionControl.C $(solutionControl)/loopControl/loopControl.C diff --git a/src/meshTools/Make/files b/src/meshTools/Make/files index 1203f2e448f..a5f1aa4cd39 100644 --- a/src/meshTools/Make/files +++ b/src/meshTools/Make/files @@ -301,6 +301,8 @@ PatchFunction1/CodedField/makeCodedFields.C meshStructure/meshStructure.C +coupling/externalFileCoupler.C + output/foamVtkIndPatchWriter.C output/foamVtkInternalMeshWriter.C output/foamVtkPatchMeshWriter.C diff --git a/src/finiteVolume/cfdTools/general/coupling/externalFileCoupler.C b/src/meshTools/coupling/externalFileCoupler.C similarity index 100% rename from src/finiteVolume/cfdTools/general/coupling/externalFileCoupler.C rename to src/meshTools/coupling/externalFileCoupler.C diff --git a/src/finiteVolume/cfdTools/general/coupling/externalFileCoupler.H b/src/meshTools/coupling/externalFileCoupler.H similarity index 99% rename from src/finiteVolume/cfdTools/general/coupling/externalFileCoupler.H rename to src/meshTools/coupling/externalFileCoupler.H index c6008105f7b..599c0804b2d 100644 --- a/src/finiteVolume/cfdTools/general/coupling/externalFileCoupler.H +++ b/src/meshTools/coupling/externalFileCoupler.H @@ -290,7 +290,6 @@ public: //- Remove files written by OpenFOAM void removeDirectory() const; - }; diff --git a/src/finiteVolume/cfdTools/general/coupling/externalFileCouplerI.H b/src/meshTools/coupling/externalFileCouplerI.H similarity index 100% rename from src/finiteVolume/cfdTools/general/coupling/externalFileCouplerI.H rename to src/meshTools/coupling/externalFileCouplerI.H -- GitLab