diff --git a/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C b/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C index 3de11eec4d49b41408727d2e5f1cdb78d847a36b..e374e1969af43866dabf296f442576c5fb773a60 100644 --- a/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C +++ b/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C @@ -457,8 +457,9 @@ int main(int argc, char *argv[]) } } - // Collect remote Cf and Sf on coarse mesh - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Distribute local coarse Cf and Sf for shooting rays + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ List<pointField> remoteCoarseCf(Pstream::nProcs()); List<pointField> remoteCoarseSf(Pstream::nProcs()); @@ -468,19 +469,6 @@ int main(int argc, char *argv[]) remoteCoarseSf[Pstream::myProcNo()] = localCoarseSf; remoteCoarseAgg[Pstream::myProcNo()] = localAgg; - - // Collect remote Cf and Sf on fine mesh - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - List<pointField> remoteFineCf(Pstream::nProcs()); - List<pointField> remoteFineSf(Pstream::nProcs()); - - remoteCoarseCf[Pstream::myProcNo()] = localCoarseCf; - remoteCoarseSf[Pstream::myProcNo()] = localCoarseSf; - - // Distribute local coarse Cf and Sf for shooting rays - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Pstream::gatherList(remoteCoarseCf); Pstream::scatterList(remoteCoarseCf); Pstream::gatherList(remoteCoarseSf); diff --git a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C index 95d0e887b67ed54f3647dfa87294c574f76ff462..1a636b1caddc40a88165ce552cf226824b975d07 100644 --- a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C +++ b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -74,26 +74,6 @@ const Foam::NamedEnum<Foam::distributedTriSurfaceMesh::distributionType, 3> // Read my additional data from the dictionary bool Foam::distributedTriSurfaceMesh::read() { - - if - ( - Pstream::parRun() - && - ( - regIOobject::fileModificationChecking == timeStampMaster - || regIOobject::fileModificationChecking == inotifyMaster - ) - ) - { - FatalErrorIn("Foam::distributedTriSurfaceMesh::read()") - << " distributedTriSurfaceMesh is being constructed\n" - << " using 'timeStampMaster' or 'inotifyMaster.'\n" - << " Modify the entry fileModificationChecking\n" - << " in the etc/controlDict.\n" - << " Use 'timeStamp' instead." - << exit(FatalError); - } - // Get bb of all domains. procBb_.setSize(Pstream::nProcs()); @@ -1388,6 +1368,28 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh(const IOobject& io) ) ) { + if + ( + Pstream::parRun() + && ( + dict_.readOpt() == IOobject::MUST_READ + || dict_.readOpt() == IOobject::MUST_READ_IF_MODIFIED + ) + && ( + regIOobject::fileModificationChecking == timeStampMaster + || regIOobject::fileModificationChecking == inotifyMaster + ) + ) + { + FatalErrorIn("Foam::distributedTriSurfaceMesh::read()") + << " distributedTriSurfaceMesh is being constructed\n" + << " using 'timeStampMaster' or 'inotifyMaster.'\n" + << " Modify the entry fileModificationChecking\n" + << " in the etc/controlDict.\n" + << " Use 'timeStamp' instead." + << exit(FatalError); + } + read(); reduce(bounds().min(), minOp<point>()); @@ -1450,6 +1452,28 @@ Foam::distributedTriSurfaceMesh::distributedTriSurfaceMesh ) ) { + if + ( + Pstream::parRun() + && ( + dict_.readOpt() == IOobject::MUST_READ + || dict_.readOpt() == IOobject::MUST_READ_IF_MODIFIED + ) + && ( + regIOobject::fileModificationChecking == timeStampMaster + || regIOobject::fileModificationChecking == inotifyMaster + ) + ) + { + FatalErrorIn("Foam::distributedTriSurfaceMesh::read()") + << " distributedTriSurfaceMesh is being constructed\n" + << " using 'timeStampMaster' or 'inotifyMaster.'\n" + << " Modify the entry fileModificationChecking\n" + << " in the etc/controlDict.\n" + << " Use 'timeStamp' instead." + << exit(FatalError); + } + read(); reduce(bounds().min(), minOp<point>()); diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun index ecc9459467659daa24afa9c8c32d84ed8a0d4169..11d0d952ac23777da366ac89f23f14be9c4fb89b 100755 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun @@ -5,56 +5,27 @@ cd ${0%/*} || exit 1 # run from this directory # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions -runApplication blockMesh -runApplication topoSet -runApplication splitMeshRegions -cellZones -overwrite -# remove fluid fields from solid regions (important for post-processing) -for i in heater leftSolid rightSolid -do - rm -f 0*/$i/{rho,mut,alphat,epsilon,k,U,p_rgh,Qr,G,IDefault} -done +# Setup case +./Allrun.pre -for i in bottomAir topAir heater leftSolid rightSolid -do - changeDictionary -region $i > log.changeDictionary.$i 2>&1 -done +#-- Run on single processor +# Agglomerate patch faces for i in bottomAir topAir do faceAgglomerate -region $i -dict constant/viewFactorsDict > log.faceAgglomerate.$i 2>&1 done +# Generate view factors for i in bottomAir topAir do viewFactorsGen -region $i > log.viewFactorsGen.$i 2>&1 done - - -#-- Run on single processor runApplication `getApplication` -## Run in parallel -## Decompose -#runApplication decomposePar -allRegions -# -#for i in bottomAir topAir -#do -# mpirun -np 4 faceAgglomerate -region $i -dict constant/viewFactorsDict -parallel> log.faceAgglomerate.$i 2>&1 -#done - -#for i in bottomAir topAir -#do -# mpirun -np 4 viewFactorsGen -region $i -parallel > log.viewFactorsGen.$i 2>&1 -#done - -## Run -#runParallel `getApplication` 4 -# -## Reconstruct -#runApplication reconstructPar -allRegions echo diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun-parallel b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun-parallel new file mode 100755 index 0000000000000000000000000000000000000000..aa7672816257f850784fc9c4650444de345c34cb --- /dev/null +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun-parallel @@ -0,0 +1,43 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + + +# Setup case +./Allrun.pre + + +#-- Run in parallel + +# Decompose +runApplication decomposePar -allRegions + +# Agglomerate patch faces +for i in bottomAir topAir +do + mpirun -np 4 faceAgglomerate -region $i -dict constant/viewFactorsDict -parallel> log.faceAgglomerate.$i 2>&1 +done + +# Generate view factors +for i in bottomAir topAir +do + mpirun -np 4 viewFactorsGen -region $i -parallel > log.viewFactorsGen.$i 2>&1 +done + +# Run +runParallel `getApplication` 4 + +# Reconstruct +runApplication reconstructPar -allRegions + + + +echo +echo "creating files for paraview post-processing" +echo +paraFoam -touchAll + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun.pre b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun.pre new file mode 100755 index 0000000000000000000000000000000000000000..2e0b7cc880316c1e3373726e0448f303338477d3 --- /dev/null +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/Allrun.pre @@ -0,0 +1,24 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication topoSet +runApplication splitMeshRegions -cellZones -overwrite + +# remove fluid fields from solid regions (important for post-processing) +for i in heater leftSolid rightSolid +do + rm -f 0*/$i/{rho,mut,alphat,epsilon,k,U,p_rgh,Qr,G,IDefault} +done + +for i in bottomAir topAir heater leftSolid rightSolid +do + changeDictionary -region $i > log.changeDictionary.$i 2>&1 +done + + +# ----------------------------------------------------------------- end-of-file