ケースのクリア

2015年10月9日

はじめに

ケースのクリアについて。

使用バージョン

OpenFOAM 2.4.0

ケースのクリア

計算結果の削除

計算の設定を行っている段階では、試計算を幾度か実施することになるが、そのたびにいくつかできる時刻ディレクトリを削除する必要がある。時刻ディレクトリのリストは、foamListTimes で得ることができる。

$ foamListTimes

これを利用すると、つぎのようにして計算結果を削除できる。

$ foamListTimes -noZero | xargs rm -rf

オプションの "-noZero" は "0" ディレクトリは除くという意味で、これを付け忘れると境界条件データも消えてしまって大変なことになる。最後の結果を残したい場合は、つぎのようにすればよい。

$ foamListTimes -noZero | sed -e '$d' | xargs rm -rf

手でいちいちコマンドを打つと、必要なものも消してしまいそうで危ないので、スクリプトにしておいたほうがよいかもしれない。

OpenFOAM 2.4.0 から、"-noZero" なしでも "0" を含めないようになったようだが (その代りに "-withZero" があって、"-noZero" はこのオプションを打ち消す)、だからといって "-noZero" を使わないようにすると、古いバージョンを使ったときにうっかり間違えて "0" ディレクトリを消してしまう危険性がある。OpenFOAM 2.4.0 の foamListTimes には時刻ディレクトリを削除するオプション "-rm" が追加されているので、こちらを用いたほうがよい。以下のように実行するだけである。

$ foamListTimes -rm

並列計算結果を削除したければ、オプション "-processor" をつければよい。

$ foamListTimes -rm -processor

削除する時間範囲を指定するには、たとえば 0.26 秒以降を削除するのであれば、次のようにする。

$ foamListTimes -rm -time 0.26:

以下では、OpenFOAM 2.4.0 以前でも使える各方法を示している。

スクリプトの作成

スクリプトを作るのであれば、つぎのようなものでもよい。

clean

#!/bin/sh
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanTimeDirectories

実行権限を設定する。

$ chmod +x clean

これをケースディレクトリの中に置いておけば、つぎのようにして結果データを削除できる。

$ ./clean

このスクリプトは log ファイルなども削除する。

並列計算結果の削除

並列計算の結果も併せて削除するには、スクリプトをつぎのようにする。

clean

#!/bin/sh
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanTimeDirectories

for DIR in processor* ; do
    if [ -d $DIR ] ; then
        cd $DIR
        cleanTimeDirectories
        cd ..
    fi
done

計算結果を消すだけであれば "processor0" などのディレクトリを直接削除したほうが速いが、計算を実行しなおすときに領域分割に時間がかかる場合は、計算結果だけを削除したほうがよい。

時間範囲を指定

削除する時間の範囲を指定できるようにするには、つぎのようなスクリプトを用意する。

clearRange

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo "usage: cleanRange <time>"
    exit 0
fi

foamListTimes -time $1 | xargs rm -rf

for DIR in processor* ; do
    if [ -d $DIR ] ; then
        cd $DIR
        foamListTimes -time $1 | xargs rm -rf
        cd ..
    fi
done

たとえば、0.26 秒以降を削除するのであれば、つぎのようにする。

$ ./clearRange 0.26:

メッシュデータの削除

メッシュを作り直すときなど、メッシュデータを削除したい場合は、つぎのように実行する。

$ foamClearPolyMesh