データを間引く2013年8月30日 | |
はじめに計算結果を間引く方法について。 使用バージョンOpenFOAM 2.2.1 注意計算結果を削除するので、注意して実行してください。下記に従った結果によるいかなる損失に対しても責任は負いません。 データを間引く必要以上に結果を出力してしまったとき、データを間引きたいが、そういう機能は標準では用意されてなさそうなので、下記のようなスクリプトを作ってみた。 使い方 clearCase <interval>
たとえば、データが 0, 0.05, 0.1, 0.15, 0.2, ... とあった場合、interval = 2 とすると、0, 0.1, 0.2, ... が残り、他は削除される。ただし、最後の結果は常に残る。 実行時に確認メッセージが出る。 $ ./clearCase 2 Remaining directories: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Removing directories: 0.05 0.15 0.25 0.35 0.45 0.55 0.65 0.75 0.85 0.95 OK? (y or n): y を入力したら削除が実行される。 clearCase
#!/bin/sh
if [ $# -lt 1 ] ; then
echo "usage: clearCase <interval>"
exit 0
fi
N=$1
if [ $N -le 1 ] ; then
echo "interval must be > 1"
exit 0
fi
if [ -d "processor0" ] ; then
TIMES=`ls processor0 | grep '^[0-9.]*$' | sort -n`
else
TIMES=`ls | grep '^[0-9.]*$' | sort -n`
fi
LATEST=`echo $TIMES | tr " " "\n" | tail -n 1`
echo "Remaining directories:"
PRINT_MAX=20
I=0
J=1
LAST=""
for TIME in $TIMES ; do
if [ `expr $I % $N` -eq 0 ] ; then
echo $TIME
J=`expr $J + 1`
LAST=$TIME
fi
I=`expr $I + 1`
if [ $J -ge $PRINT_MAX ] ; then
echo "..."
break
fi
done
if [ $LAST != $LATEST ] ; then
echo $LATEST
fi
echo "Removing directories:"
I=0
J=1
for TIME in $TIMES ; do
if [ `expr $I % $N` -ne 0 -a $TIME != $LATEST ] ; then
echo $TIME
J=`expr $J + 1`
fi
I=`expr $I + 1`
if [ $J -ge $PRINT_MAX ] ; then
echo "..."
break
fi
done
echo -n "OK? (y or n): "
R="n"
read R
if [ $R = "y" ] ; then
echo "removing..."
I=0
for TIME in $TIMES ; do
if [ `expr $I % $N` -ne 0 -a $TIME != $LATEST ] ; then
rm -rf $TIME
fi
I=`expr $I + 1`
done
if [ -d "processor0" ] ; then
for DIR in processor* ; do
cd $DIR
I=0
for TIME in $TIMES ; do
if [ `expr $I % $N` -ne 0 -a $TIME != $LATEST ] ; then
rm -rf $TIME
fi
I=`expr $I + 1`
done
cd ..
done
fi
echo "done."
else
echo "abort."
fi
| |
| PENGUINITIS | |