ケースのクリア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 | |
| PENGUINITIS | |