diff --git a/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C b/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C index 41af87d4fa..a561d86f79 100644 --- a/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C +++ b/applications/utilities/mesh/manipulation/subsetMesh/subsetMesh.C @@ -208,6 +208,12 @@ int main(int argc, char *argv[]) "time", "specify a time for the resulting mesh" ); + argList::addBoolOption + ( + "noFields", + "do not update fields" + ); + #include "setRootCase.H" #include "createTime.H" runTime.functionObjects().off(); @@ -234,6 +240,7 @@ int main(int argc, char *argv[]) // Set both mesh and field to this time meshInstance = fieldsInstance; } + const bool fields = !args.optionFound("noFields"); Info<< "Reading cell set from " << setName << endl << endl; @@ -268,296 +275,325 @@ int main(int argc, char *argv[]) cellSet currentSet(mesh, setName); - subsetter.setLargeCellSubset(currentSet, patchi, true); - IOobjectList objects(mesh, runTime.timeName()); - - // Read vol fields and subset - // ~~~~~~~~~~~~~~~~~~~~~~~~~~ - - wordList scalarNames(objects.names(volScalarField::typeName)); - PtrList scalarFlds(scalarNames.size()); - subsetVolFields(subsetter, scalarNames, scalarFlds); - - wordList vectorNames(objects.names(volVectorField::typeName)); - PtrList vectorFlds(vectorNames.size()); - subsetVolFields(subsetter, vectorNames, vectorFlds); - - wordList sphericalTensorNames - ( - objects.names(volSphericalTensorField::typeName) - ); - PtrList sphericalTensorFlds - ( - sphericalTensorNames.size() - ); - subsetVolFields(subsetter, sphericalTensorNames, sphericalTensorFlds); - - wordList symmTensorNames(objects.names(volSymmTensorField::typeName)); - PtrList symmTensorFlds(symmTensorNames.size()); - subsetVolFields(subsetter, symmTensorNames, symmTensorFlds); - - wordList tensorNames(objects.names(volTensorField::typeName)); - PtrList tensorFlds(tensorNames.size()); - subsetVolFields(subsetter, tensorNames, tensorFlds); - - - // Read surface fields and subset - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - wordList surfScalarNames(objects.names(surfaceScalarField::typeName)); - PtrList surfScalarFlds(surfScalarNames.size()); - subsetSurfaceFields(subsetter, surfScalarNames, surfScalarFlds); - - wordList surfVectorNames(objects.names(surfaceVectorField::typeName)); - PtrList surfVectorFlds(surfVectorNames.size()); - subsetSurfaceFields(subsetter, surfVectorNames, surfVectorFlds); - - wordList surfSphericalTensorNames - ( - objects.names(surfaceSphericalTensorField::typeName) - ); - PtrList surfSphericalTensorFlds - ( - surfSphericalTensorNames.size() - ); - subsetSurfaceFields - ( - subsetter, - surfSphericalTensorNames, - surfSphericalTensorFlds - ); - - wordList surfSymmTensorNames - ( - objects.names(surfaceSymmTensorField::typeName) - ); - PtrList surfSymmTensorFlds - ( - surfSymmTensorNames.size() - ); - subsetSurfaceFields(subsetter, surfSymmTensorNames, surfSymmTensorFlds); - - wordList surfTensorNames(objects.names(surfaceTensorField::typeName)); - PtrList surfTensorFlds(surfTensorNames.size()); - subsetSurfaceFields(subsetter, surfTensorNames, surfTensorFlds); - - - // Read point fields and subset - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - const pointMesh& pMesh = pointMesh::New(mesh); - - wordList pointScalarNames(objects.names(pointScalarField::typeName)); - PtrList pointScalarFlds(pointScalarNames.size()); - subsetPointFields(subsetter, pMesh, pointScalarNames, pointScalarFlds); - - wordList pointVectorNames(objects.names(pointVectorField::typeName)); - PtrList pointVectorFlds(pointVectorNames.size()); - subsetPointFields(subsetter, pMesh, pointVectorNames, pointVectorFlds); - - wordList pointSphericalTensorNames - ( - objects.names(pointSphericalTensorField::typeName) - ); - PtrList pointSphericalTensorFlds - ( - pointSphericalTensorNames.size() - ); - subsetPointFields - ( - subsetter, - pMesh, - pointSphericalTensorNames, - pointSphericalTensorFlds - ); - - wordList pointSymmTensorNames - ( - objects.names(pointSymmTensorField::typeName) - ); - PtrList pointSymmTensorFlds - ( - pointSymmTensorNames.size() - ); - subsetPointFields - ( - subsetter, - pMesh, - pointSymmTensorNames, - pointSymmTensorFlds - ); - - wordList pointTensorNames(objects.names(pointTensorField::typeName)); - PtrList pointTensorFlds(pointTensorNames.size()); - subsetPointFields(subsetter, pMesh, pointTensorNames, pointTensorFlds); - - - // Read dimensioned fields and subset - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - typedef volScalarField::Internal dimScalType; - wordList scalarDimNames(objects.names(dimScalType::typeName)); - PtrList scalarDimFlds(scalarDimNames.size()); - subsetDimensionedFields(subsetter, scalarDimNames, scalarDimFlds); - - typedef volVectorField::Internal dimVecType; - wordList vectorDimNames(objects.names(dimVecType::typeName)); - PtrList vectorDimFlds(vectorDimNames.size()); - subsetDimensionedFields(subsetter, vectorDimNames, vectorDimFlds); - - typedef volSphericalTensorField::Internal dimSphereType; - wordList sphericalTensorDimNames(objects.names(dimSphereType::typeName)); - PtrList sphericalTensorDimFlds - ( - sphericalTensorDimNames.size() - ); - subsetDimensionedFields - ( - subsetter, - sphericalTensorDimNames, - sphericalTensorDimFlds - ); - - typedef volSymmTensorField::Internal dimSymmTensorType; - wordList symmTensorDimNames(objects.names(dimSymmTensorType::typeName)); - PtrList symmTensorDimFlds(symmTensorDimNames.size()); - subsetDimensionedFields(subsetter, symmTensorDimNames, symmTensorDimFlds); - - typedef volTensorField::Internal dimTensorType; - wordList tensorDimNames(objects.names(dimTensorType::typeName)); - PtrList tensorDimFlds(tensorDimNames.size()); - subsetDimensionedFields(subsetter, tensorDimNames, tensorDimFlds); - - - // Write mesh and fields to new time - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - if (overwrite || specifiedInstance) + if (fields) { - runTime.setTime(instant(fieldsInstance), 0); - subsetter.subMesh().setInstance(meshInstance); + IOobjectList objects(mesh, runTime.timeName()); + + // Read vol fields and subset + // ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + wordList scalarNames(objects.names(volScalarField::typeName)); + PtrList scalarFlds(scalarNames.size()); + subsetVolFields(subsetter, scalarNames, scalarFlds); + + wordList vectorNames(objects.names(volVectorField::typeName)); + PtrList vectorFlds(vectorNames.size()); + subsetVolFields(subsetter, vectorNames, vectorFlds); + + wordList sphericalTensorNames + ( + objects.names(volSphericalTensorField::typeName) + ); + PtrList sphericalTensorFlds + ( + sphericalTensorNames.size() + ); + subsetVolFields(subsetter, sphericalTensorNames, sphericalTensorFlds); + + wordList symmTensorNames(objects.names(volSymmTensorField::typeName)); + PtrList symmTensorFlds(symmTensorNames.size()); + subsetVolFields(subsetter, symmTensorNames, symmTensorFlds); + + wordList tensorNames(objects.names(volTensorField::typeName)); + PtrList tensorFlds(tensorNames.size()); + subsetVolFields(subsetter, tensorNames, tensorFlds); + + + // Read surface fields and subset + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + wordList surfScalarNames(objects.names(surfaceScalarField::typeName)); + PtrList surfScalarFlds(surfScalarNames.size()); + subsetSurfaceFields(subsetter, surfScalarNames, surfScalarFlds); + + wordList surfVectorNames(objects.names(surfaceVectorField::typeName)); + PtrList surfVectorFlds(surfVectorNames.size()); + subsetSurfaceFields(subsetter, surfVectorNames, surfVectorFlds); + + wordList surfSphericalTensorNames + ( + objects.names(surfaceSphericalTensorField::typeName) + ); + PtrList surfSphericalTensorFlds + ( + surfSphericalTensorNames.size() + ); + subsetSurfaceFields + ( + subsetter, + surfSphericalTensorNames, + surfSphericalTensorFlds + ); + + wordList surfSymmTensorNames + ( + objects.names(surfaceSymmTensorField::typeName) + ); + PtrList surfSymmTensorFlds + ( + surfSymmTensorNames.size() + ); + subsetSurfaceFields(subsetter, surfSymmTensorNames, surfSymmTensorFlds); + + wordList surfTensorNames(objects.names(surfaceTensorField::typeName)); + PtrList surfTensorFlds(surfTensorNames.size()); + subsetSurfaceFields(subsetter, surfTensorNames, surfTensorFlds); + + + // Read point fields and subset + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + const pointMesh& pMesh = pointMesh::New(mesh); + + wordList pointScalarNames(objects.names(pointScalarField::typeName)); + PtrList pointScalarFlds(pointScalarNames.size()); + subsetPointFields(subsetter, pMesh, pointScalarNames, pointScalarFlds); + + wordList pointVectorNames(objects.names(pointVectorField::typeName)); + PtrList pointVectorFlds(pointVectorNames.size()); + subsetPointFields(subsetter, pMesh, pointVectorNames, pointVectorFlds); + + wordList pointSphericalTensorNames + ( + objects.names(pointSphericalTensorField::typeName) + ); + PtrList pointSphericalTensorFlds + ( + pointSphericalTensorNames.size() + ); + subsetPointFields + ( + subsetter, + pMesh, + pointSphericalTensorNames, + pointSphericalTensorFlds + ); + + wordList pointSymmTensorNames + ( + objects.names(pointSymmTensorField::typeName) + ); + PtrList pointSymmTensorFlds + ( + pointSymmTensorNames.size() + ); + subsetPointFields + ( + subsetter, + pMesh, + pointSymmTensorNames, + pointSymmTensorFlds + ); + + wordList pointTensorNames(objects.names(pointTensorField::typeName)); + PtrList pointTensorFlds(pointTensorNames.size()); + subsetPointFields(subsetter, pMesh, pointTensorNames, pointTensorFlds); + + + // Read dimensioned fields and subset + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef volScalarField::Internal dimScalType; + wordList scalarDimNames(objects.names(dimScalType::typeName)); + PtrList scalarDimFlds(scalarDimNames.size()); + subsetDimensionedFields(subsetter, scalarDimNames, scalarDimFlds); + + typedef volVectorField::Internal dimVecType; + wordList vectorDimNames(objects.names(dimVecType::typeName)); + PtrList vectorDimFlds(vectorDimNames.size()); + subsetDimensionedFields(subsetter, vectorDimNames, vectorDimFlds); + + typedef volSphericalTensorField::Internal dimSphereType; + wordList sphericalTensorDimNames + ( + objects.names(dimSphereType::typeName) + ); + PtrList sphericalTensorDimFlds + ( + sphericalTensorDimNames.size() + ); + subsetDimensionedFields + ( + subsetter, + sphericalTensorDimNames, + sphericalTensorDimFlds + ); + + typedef volSymmTensorField::Internal dimSymmTensorType; + wordList symmTensorDimNames(objects.names(dimSymmTensorType::typeName)); + PtrList symmTensorDimFlds(symmTensorDimNames.size()); + subsetDimensionedFields + ( + subsetter, + symmTensorDimNames, + symmTensorDimFlds + ); + + typedef volTensorField::Internal dimTensorType; + wordList tensorDimNames(objects.names(dimTensorType::typeName)); + PtrList tensorDimFlds(tensorDimNames.size()); + subsetDimensionedFields(subsetter, tensorDimNames, tensorDimFlds); + + + // Write mesh and fields to new time + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + if (overwrite || specifiedInstance) + { + runTime.setTime(instant(fieldsInstance), 0); + subsetter.subMesh().setInstance(meshInstance); + } + else + { + runTime++; + } + + Info<< "Writing subsetted mesh and fields to time " + << runTime.timeName() << endl; + + subsetter.subMesh().write(); + + // Subsetting adds 'subset' prefix. Rename field to be like original. + forAll(scalarFlds, i) + { + scalarFlds[i].rename(scalarNames[i]); + scalarFlds[i].write(); + } + forAll(vectorFlds, i) + { + vectorFlds[i].rename(vectorNames[i]); + vectorFlds[i].write(); + } + forAll(sphericalTensorFlds, i) + { + sphericalTensorFlds[i].rename(sphericalTensorNames[i]); + sphericalTensorFlds[i].write(); + } + forAll(symmTensorFlds, i) + { + symmTensorFlds[i].rename(symmTensorNames[i]); + symmTensorFlds[i].write(); + } + forAll(tensorFlds, i) + { + tensorFlds[i].rename(tensorNames[i]); + tensorFlds[i].write(); + } + + // Surface ones. + forAll(surfScalarFlds, i) + { + surfScalarFlds[i].rename(surfScalarNames[i]); + surfScalarFlds[i].write(); + } + forAll(surfVectorFlds, i) + { + surfVectorFlds[i].rename(surfVectorNames[i]); + surfVectorFlds[i].write(); + } + forAll(surfSphericalTensorFlds, i) + { + surfSphericalTensorFlds[i].rename(surfSphericalTensorNames[i]); + surfSphericalTensorFlds[i].write(); + } + forAll(surfSymmTensorFlds, i) + { + surfSymmTensorFlds[i].rename(surfSymmTensorNames[i]); + surfSymmTensorFlds[i].write(); + } + forAll(surfTensorNames, i) + { + surfTensorFlds[i].rename(surfTensorNames[i]); + surfTensorFlds[i].write(); + } + + // Point ones + forAll(pointScalarFlds, i) + { + pointScalarFlds[i].rename(pointScalarNames[i]); + pointScalarFlds[i].write(); + } + forAll(pointVectorFlds, i) + { + pointVectorFlds[i].rename(pointVectorNames[i]); + pointVectorFlds[i].write(); + } + forAll(pointSphericalTensorFlds, i) + { + pointSphericalTensorFlds[i].rename(pointSphericalTensorNames[i]); + pointSphericalTensorFlds[i].write(); + } + forAll(pointSymmTensorFlds, i) + { + pointSymmTensorFlds[i].rename(pointSymmTensorNames[i]); + pointSymmTensorFlds[i].write(); + } + forAll(pointTensorNames, i) + { + pointTensorFlds[i].rename(pointTensorNames[i]); + pointTensorFlds[i].write(); + } + + // DimensionedFields + forAll(scalarDimFlds, i) + { + scalarDimFlds[i].rename(scalarDimNames[i]); + scalarDimFlds[i].write(); + } + forAll(vectorDimFlds, i) + { + vectorDimFlds[i].rename(vectorDimNames[i]); + vectorDimFlds[i].write(); + } + forAll(sphericalTensorDimFlds, i) + { + sphericalTensorDimFlds[i].rename(sphericalTensorDimNames[i]); + sphericalTensorDimFlds[i].write(); + } + forAll(symmTensorDimFlds, i) + { + symmTensorDimFlds[i].rename(symmTensorDimNames[i]); + symmTensorDimFlds[i].write(); + } + forAll(tensorDimFlds, i) + { + tensorDimFlds[i].rename(tensorDimNames[i]); + tensorDimFlds[i].write(); + } } else { - runTime++; - } + // Write mesh to new time + // ~~~~~~~~~~~~~~~~~~~~~~ - Info<< "Writing subsetted mesh and fields to time " << runTime.timeName() - << endl; - subsetter.subMesh().write(); + if (overwrite || specifiedInstance) + { + runTime.setTime(instant(fieldsInstance), 0); + subsetter.subMesh().setInstance(meshInstance); + } + else + { + runTime++; + } + Info<< "Writing subsetted mesh to time " + << runTime.timeName() << endl; - // Subsetting adds 'subset' prefix. Rename field to be like original. - forAll(scalarFlds, i) - { - scalarFlds[i].rename(scalarNames[i]); - scalarFlds[i].write(); + subsetter.subMesh().write(); } - forAll(vectorFlds, i) - { - vectorFlds[i].rename(vectorNames[i]); - vectorFlds[i].write(); - } - forAll(sphericalTensorFlds, i) - { - sphericalTensorFlds[i].rename(sphericalTensorNames[i]); - sphericalTensorFlds[i].write(); - } - forAll(symmTensorFlds, i) - { - symmTensorFlds[i].rename(symmTensorNames[i]); - symmTensorFlds[i].write(); - } - forAll(tensorFlds, i) - { - tensorFlds[i].rename(tensorNames[i]); - tensorFlds[i].write(); - } - - // Surface ones. - forAll(surfScalarFlds, i) - { - surfScalarFlds[i].rename(surfScalarNames[i]); - surfScalarFlds[i].write(); - } - forAll(surfVectorFlds, i) - { - surfVectorFlds[i].rename(surfVectorNames[i]); - surfVectorFlds[i].write(); - } - forAll(surfSphericalTensorFlds, i) - { - surfSphericalTensorFlds[i].rename(surfSphericalTensorNames[i]); - surfSphericalTensorFlds[i].write(); - } - forAll(surfSymmTensorFlds, i) - { - surfSymmTensorFlds[i].rename(surfSymmTensorNames[i]); - surfSymmTensorFlds[i].write(); - } - forAll(surfTensorNames, i) - { - surfTensorFlds[i].rename(surfTensorNames[i]); - surfTensorFlds[i].write(); - } - - // Point ones - forAll(pointScalarFlds, i) - { - pointScalarFlds[i].rename(pointScalarNames[i]); - pointScalarFlds[i].write(); - } - forAll(pointVectorFlds, i) - { - pointVectorFlds[i].rename(pointVectorNames[i]); - pointVectorFlds[i].write(); - } - forAll(pointSphericalTensorFlds, i) - { - pointSphericalTensorFlds[i].rename(pointSphericalTensorNames[i]); - pointSphericalTensorFlds[i].write(); - } - forAll(pointSymmTensorFlds, i) - { - pointSymmTensorFlds[i].rename(pointSymmTensorNames[i]); - pointSymmTensorFlds[i].write(); - } - forAll(pointTensorNames, i) - { - pointTensorFlds[i].rename(pointTensorNames[i]); - pointTensorFlds[i].write(); - } - - // DimensionedFields - forAll(scalarDimFlds, i) - { - scalarDimFlds[i].rename(scalarDimNames[i]); - scalarDimFlds[i].write(); - } - forAll(vectorDimFlds, i) - { - vectorDimFlds[i].rename(vectorDimNames[i]); - vectorDimFlds[i].write(); - } - forAll(sphericalTensorDimFlds, i) - { - sphericalTensorDimFlds[i].rename(sphericalTensorDimNames[i]); - sphericalTensorDimFlds[i].write(); - } - forAll(symmTensorDimFlds, i) - { - symmTensorDimFlds[i].rename(symmTensorDimNames[i]); - symmTensorDimFlds[i].write(); - } - forAll(tensorDimFlds, i) - { - tensorDimFlds[i].rename(tensorDimNames[i]); - tensorDimFlds[i].write(); - } - Info<< "End\n" << endl; diff --git a/tutorials/lagrangian/reactingParcelFoam/hotBoxes/Allmesh b/tutorials/lagrangian/reactingParcelFoam/hotBoxes/Allmesh index c8d4217fcb..c969f6fdbf 100755 --- a/tutorials/lagrangian/reactingParcelFoam/hotBoxes/Allmesh +++ b/tutorials/lagrangian/reactingParcelFoam/hotBoxes/Allmesh @@ -6,16 +6,16 @@ cd ${0%/*} || exit 1 # Run from this directory rm -rf 0 -# create the underlying block mesh +# Create the underlying block mesh runApplication blockMesh -# create the set for the obstacles +# Create the set for the obstacles runApplication topoSet -# create the obstacles - add obstacle patches to wallFilm patch -runApplication subsetMesh c0 -patch wallFilm -overwrite +# Create the obstacles - add obstacle patches to wallFilm patch +runApplication subsetMesh c0 -patch wallFilm -overwrite -noFields -# split the obstacle patches into cube[1-6]_patch[1-6] +# Split the obstacle patches into cube[1-6]_patch[1-6] runApplication ./patchifyObstacles # Create the wall film region via extrusion @@ -25,9 +25,6 @@ runApplication extrudeToRegionMesh -overwrite rm -rf system/wallFilmRegion cp -r system/wallFilmRegion.orig system/wallFilmRegion -find ./0 -maxdepth 1 -type f -exec \ - sed -i -e "s/wallFilm/\"(region0_to.*)\"/g" {} \; - paraFoam -touch paraFoam -touch -region wallFilmRegion diff --git a/tutorials/multiphase/interFoam/RAS/floatingObject/Allrun b/tutorials/multiphase/interFoam/RAS/floatingObject/Allrun index 71fa754942..4c6b10300f 100755 --- a/tutorials/multiphase/interFoam/RAS/floatingObject/Allrun +++ b/tutorials/multiphase/interFoam/RAS/floatingObject/Allrun @@ -9,7 +9,7 @@ application=$(getApplication) runApplication blockMesh runApplication topoSet -runApplication subsetMesh -overwrite c0 -patch floatingObject +runApplication subsetMesh -overwrite c0 -patch floatingObject -noFields runApplication setFields runApplication $application diff --git a/tutorials/multiphase/interFoam/laminar/damBreakWithObstacle/Allrun b/tutorials/multiphase/interFoam/laminar/damBreakWithObstacle/Allrun index f295fe7b61..391257f62a 100755 --- a/tutorials/multiphase/interFoam/laminar/damBreakWithObstacle/Allrun +++ b/tutorials/multiphase/interFoam/laminar/damBreakWithObstacle/Allrun @@ -6,7 +6,7 @@ cd ${0%/*} || exit 1 # Run from this directory runApplication blockMesh runApplication topoSet -runApplication subsetMesh -overwrite c0 -patch walls +runApplication subsetMesh -overwrite c0 -patch walls -noFields runApplication setFields runApplication $(getApplication) diff --git a/tutorials/multiphase/potentialFreeSurfaceFoam/movingOscillatingBox/Allrun b/tutorials/multiphase/potentialFreeSurfaceFoam/movingOscillatingBox/Allrun index b1521f28ca..60dfb7c558 100755 --- a/tutorials/multiphase/potentialFreeSurfaceFoam/movingOscillatingBox/Allrun +++ b/tutorials/multiphase/potentialFreeSurfaceFoam/movingOscillatingBox/Allrun @@ -11,7 +11,7 @@ runApplication blockMesh runApplication -s 1 topoSet -runApplication subsetMesh -overwrite c0 -patch floatingObject +runApplication subsetMesh -overwrite c0 -patch floatingObject -noFields runApplication -s selectBottom \ topoSet -dict system/topoSetDict-selectBottom diff --git a/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/Allrun b/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/Allrun index 01c979094a..210edc86fd 100755 --- a/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/Allrun +++ b/tutorials/multiphase/potentialFreeSurfaceFoam/oscillatingBox/Allrun @@ -9,7 +9,7 @@ application=$(getApplication) runApplication blockMesh runApplication topoSet -runApplication subsetMesh -overwrite c0 -patch floatingObject +runApplication subsetMesh -overwrite c0 -patch floatingObject -noFields runApplication $application