Commit 076bcc25 authored by Mark Olesen's avatar Mark Olesen
Browse files

ENH: relocate externalFileCoupler from finiteVolume to meshTools

parent e2ad9f08
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
#------------------------------------------------------------------------------
# Remove old junk
rm -f comms/OpenFOAM.lock
rmdir comms
#------------------------------------------------------------------------------
#!/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
#------------------------------------------------------------------------------
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude
-I$(LIB_SRC)/meshTools/lnInclude
EXE_LIBS = \
-lfiniteVolume
-lmeshTools
......@@ -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;
......
......@@ -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
......
......@@ -301,6 +301,8 @@ PatchFunction1/CodedField/makeCodedFields.C
meshStructure/meshStructure.C
coupling/externalFileCoupler.C
output/foamVtkIndPatchWriter.C
output/foamVtkInternalMeshWriter.C
output/foamVtkPatchMeshWriter.C
......
......@@ -290,7 +290,6 @@ public:
//- Remove files written by OpenFOAM
void removeDirectory() const;
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment