From b426c65d31870597452893fb9e24e6f1785b4e2a Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 15 Jul 2026 10:47:02 +0200 Subject: [PATCH 1/5] Make openfoam-remove-empty-dirs.sh handle any `processor*` directory --- tools/openfoam-remove-empty-dirs.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/openfoam-remove-empty-dirs.sh b/tools/openfoam-remove-empty-dirs.sh index 3d0dcd436..35120f3f3 100755 --- a/tools/openfoam-remove-empty-dirs.sh +++ b/tools/openfoam-remove-empty-dirs.sh @@ -1,9 +1,9 @@ -#! /bin/sh +#!/usr/bin/env bash # Cleaning up stray functionObjectProperties files, see https://github.com/precice/openfoam-adapter/issues/26 openfoam_remove_empty_dirs() { ( - set -e -u + set -e -u -pipefail echo "Cleaning up any time directories without results" for f in [0-9]* [0-9]*.[0-9]*; do @@ -11,7 +11,7 @@ openfoam_remove_empty_dirs() { rm -rf "${f}" fi done - if [ -d processor0 ]; then + if [[ $(("ls | grep processor | wc -l")) -gt 0 ]]; then for d in processor*; do cd "${d}" for f in [0-9]* [0-9]*.[0-9]*; do From 288cb98af97da77db38c020359d4d3df0ec28997 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 15 Jul 2026 10:49:08 +0200 Subject: [PATCH 2/5] Rename variables to more clearly refer to directories --- tools/openfoam-remove-empty-dirs.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/openfoam-remove-empty-dirs.sh b/tools/openfoam-remove-empty-dirs.sh index 35120f3f3..fef89d72e 100755 --- a/tools/openfoam-remove-empty-dirs.sh +++ b/tools/openfoam-remove-empty-dirs.sh @@ -6,17 +6,17 @@ openfoam_remove_empty_dirs() { set -e -u -pipefail echo "Cleaning up any time directories without results" - for f in [0-9]* [0-9]*.[0-9]*; do - if ! [ -f "${f}/U" ] && ! [ -f "${f}/T" ] && ! [ -f "${f}/U.gz" ] && ! [ -f "${f}/T.gz" ] && ! [ -f "${f}/D" ] && ! [ -f "${f}/pointD" ] && ! [ -f "${f}/DD" ] && ! [ -f "${f}/pointDD" ] && ! [ -f "${f}/D.gz" ] && ! [ -f "${f}/pointD.gz" ] && ! [ -f "${f}/DD.gz" ] && ! [ -f "${f}/pointDD.gz" ]; then - rm -rf "${f}" + for d in [0-9]* [0-9]*.[0-9]*; do + if ! [ -f "${d}/U" ] && ! [ -f "${d}/T" ] && ! [ -f "${d}/U.gz" ] && ! [ -f "${d}/T.gz" ] && ! [ -f "${d}/D" ] && ! [ -f "${d}/pointD" ] && ! [ -f "${d}/DD" ] && ! [ -f "${d}/pointDD" ] && ! [ -f "${d}/D.gz" ] && ! [ -f "${d}/pointD.gz" ] && ! [ -f "${d}/DD.gz" ] && ! [ -f "${d}/pointDD.gz" ]; then + rm -rf "${d}" fi done if [[ $(("ls | grep processor | wc -l")) -gt 0 ]]; then - for d in processor*; do - cd "${d}" - for f in [0-9]* [0-9]*.[0-9]*; do - if ! [ -f "${f}/U" ] && ! [ -f "${f}/T" ] && ! [ -f "${f}/U.gz" ] && ! [ -f "${f}/T.gz" ] && ! [ -f "${f}/D" ] && ! [ -f "${f}/pointD" ] && ! [ -f "${f}/DD" ] && ! [ -f "${f}/pointDD" ] && ! [ -f "${f}/D.gz" ] && ! [ -f "${f}/pointD.gz" ] && ! [ -f "${f}/DD.gz" ] && ! [ -f "${f}/pointDD.gz" ]; then - rm -rf "${f}" + for pd in processor*; do + cd "${pd}" + for d in [0-9]* [0-9]*.[0-9]*; do + if ! [ -f "${d}/U" ] && ! [ -f "${d}/T" ] && ! [ -f "${d}/U.gz" ] && ! [ -f "${d}/T.gz" ] && ! [ -f "${d}/D" ] && ! [ -f "${d}/pointD" ] && ! [ -f "${d}/DD" ] && ! [ -f "${d}/pointDD" ] && ! [ -f "${d}/D.gz" ] && ! [ -f "${d}/pointD.gz" ] && ! [ -f "${d}/DD.gz" ] && ! [ -f "${d}/pointDD.gz" ]; then + rm -rf "${d}" fi done cd .. From cafa40e70536fccaeefe7a6be8d291f6684a7fdf Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 15 Jul 2026 12:46:31 +0200 Subject: [PATCH 3/5] Simplify script --- tools/openfoam-remove-empty-dirs.sh | 42 ++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/tools/openfoam-remove-empty-dirs.sh b/tools/openfoam-remove-empty-dirs.sh index fef89d72e..f30f81e4d 100755 --- a/tools/openfoam-remove-empty-dirs.sh +++ b/tools/openfoam-remove-empty-dirs.sh @@ -1,27 +1,33 @@ #!/usr/bin/env bash -# Cleaning up stray functionObjectProperties files, see https://github.com/precice/openfoam-adapter/issues/26 +# Cleaning up stray functionObjectProperties files to not polute the post-processed time steps, +# see https://github.com/precice/openfoam-adapter/issues/26 openfoam_remove_empty_dirs() { ( - set -e -u -pipefail - echo "Cleaning up any time directories without results" + set -e -u + echo "Cleaning up any time directories without results to make post-processing easier..." - for d in [0-9]* [0-9]*.[0-9]*; do - if ! [ -f "${d}/U" ] && ! [ -f "${d}/T" ] && ! [ -f "${d}/U.gz" ] && ! [ -f "${d}/T.gz" ] && ! [ -f "${d}/D" ] && ! [ -f "${d}/pointD" ] && ! [ -f "${d}/DD" ] && ! [ -f "${d}/pointDD" ] && ! [ -f "${d}/D.gz" ] && ! [ -f "${d}/pointD.gz" ] && ! [ -f "${d}/DD.gz" ] && ! [ -f "${d}/pointDD.gz" ]; then - rm -rf "${d}" - fi - done - if [[ $(("ls | grep processor | wc -l")) -gt 0 ]]; then - for pd in processor*; do - cd "${pd}" - for d in [0-9]* [0-9]*.[0-9]*; do - if ! [ -f "${d}/U" ] && ! [ -f "${d}/T" ] && ! [ -f "${d}/U.gz" ] && ! [ -f "${d}/T.gz" ] && ! [ -f "${d}/D" ] && ! [ -f "${d}/pointD" ] && ! [ -f "${d}/DD" ] && ! [ -f "${d}/pointDD" ] && ! [ -f "${d}/D.gz" ] && ! [ -f "${d}/pointD.gz" ] && ! [ -f "${d}/DD.gz" ] && ! [ -f "${d}/pointDD.gz" ]; then - rm -rf "${d}" + DIRECTORIES_TO_CHECK=("." "processor"*) + OPENFOAM_RESULT_FILES=("p" "U" "T" "D" "pointD" "DD" "pointDD") + + # Search the current and every processor* directory for common results files. + # If there are none, remove the directory. + for pd in "${DIRECTORIES_TO_CHECK[@]}"; do + for d in "${pd}"/[0-9]* "${pd}"/[0-9]*.[0-9]*; do + KEEP_DIRECTORY=false + for r in "${OPENFOAM_RESULT_FILES[@]}"; do + # OpenFOAM can be configured to store files either as compressed or uncompressed + if [[ -f "${d}/${r}" ]] || [[ -f "${d}/${r}.gz" ]]; then + KEEP_DIRECTORY=true + break; + fi + done + if ! [[ ${KEEP_DIRECTORY} == true ]]; then + # None of the expected result files found - delete the directory + rm -rfv "${d}" fi done - cd .. - done - fi - echo "Done." + done + echo "Done." ) } From 74213f907c81ec381eb43da15e1e5206465e22b4 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 15 Jul 2026 12:57:51 +0200 Subject: [PATCH 4/5] Improve logging --- tools/openfoam-remove-empty-dirs.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/openfoam-remove-empty-dirs.sh b/tools/openfoam-remove-empty-dirs.sh index f30f81e4d..8843f231d 100755 --- a/tools/openfoam-remove-empty-dirs.sh +++ b/tools/openfoam-remove-empty-dirs.sh @@ -5,11 +5,15 @@ openfoam_remove_empty_dirs() { ( set -e -u - echo "Cleaning up any time directories without results to make post-processing easier..." DIRECTORIES_TO_CHECK=("." "processor"*) OPENFOAM_RESULT_FILES=("p" "U" "T" "D" "pointD" "DD" "pointDD") + echo "Cleaning up any time directories without results to make post-processing easier." + echo "Searching in the following directories: " "${DIRECTORIES_TO_CHECK[@]}" + echo "Keeping all time directories that include any of the following files: " "${OPENFOAM_RESULT_FILES[@]}" + echo "and removing the rest..." + # Search the current and every processor* directory for common results files. # If there are none, remove the directory. for pd in "${DIRECTORIES_TO_CHECK[@]}"; do From e8e323fab355596a82a8418ff632d3de0ff1d3d7 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 15 Jul 2026 13:39:15 +0200 Subject: [PATCH 5/5] Add changelog entry --- changelog-entries/879.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog-entries/879.md diff --git a/changelog-entries/879.md b/changelog-entries/879.md new file mode 100644 index 000000000..ba7c81cff --- /dev/null +++ b/changelog-entries/879.md @@ -0,0 +1 @@ +- Rewrote the openfoam_remove_empty_dirs.sh script to make it simpler, more general, and to allow it to work with collated output. [#879](https://github.com/precice/tutorials/pull/879) \ No newline at end of file