目次

5.8 バッチ処理

5.8.1 Windows環境

計算するデータファイル(ofdファイル)が少ないときは、 リスト5-8-1のようにコマンドを直接並べる方法が簡単です。

リスト5-8-1 batファイル例(1)


@echo off

rem case1
ofd.exe -n 4 data\batch\case1.ofd
copy ofd.log data\batch\case1.log
copy ofd.out data\batch\case1.out

rem case2
ofd.exe -n 4 data\batch\case2.ofd
copy ofd.log data\batch\case2.log
copy ofd.out data\batch\case2.out

rem case3
ofd.exe -n 4 data\batch\case3.ofd
copy ofd.log data\batch\case3.log
copy ofd.out data\batch\case3.out

データファイルの数が多いときはfor分で繰り返し処理します。
例えば OpenFDTD\data\batch\ に case1.ofd~case3.ofd があるとき、 コマンドプロンプトでOpenFDTD\でリスト5-8-2を実行します。
ただし、入力データファイル名が番号で並んでいることが必要です。
また、計算コマンド行は必要に応じて修正してください。

リスト5-8-2 batファイル例(2) (run.bat)


@echo off
rem OpenFDTDバッチ処理プログラム
rem 計算
rem コマンドプロンプトを起動して以下を実行する
rem > run.bat

rem 以下を適当に編集する
set command=ofd.exe -n 4
set common=data\batch\case
set start=1
set stop=3

for /L %%i in (%start% 1 %stop%) do (
	rem 入力データ確認
	echo %common%%%i.ofd
	time /T

	rem 計算実行
	%command% %common%%%i.ofd >nul

	rem 出力ファイルコピー
	copy ofd.log %common%%%i.log >nul
	copy ofd.out %common%%%i.out >nul
)

バッチ処理が終了すると、 OpenFDTD\data\batch\ に ofd.log のコピー case1.log~case3.log と、 ofd.out のコピー case1.out~case3.out が出力されます。 logファイルはエディタで内容を確認し、 outファイルはOpenFDTD\にofd.outという名前でコピーしてポスト処理を行います。

計算に加えてポスト処理を連続して行うには、 入力データの[ポスト処理制御]も編集したのち、リスト5-8-3を実行します。

リスト5-8-3 batファイル例(3) (run2.bat)


@echo off
rem OpenFDTDバッチ処理プログラム
rem 計算 + ポスト処理
rem コマンドプロンプトを起動して以下を実行する
rem > run2.bat

rem 以下を適当に編集する
set command=ofd.exe -n 4
set common=data\batch\case
set start=1
set stop=3

rem 出力ファイルを削除する
del all.log all.ev2

for /L %%i in (%start% 1 %stop%) do (
	rem 入力データ確認
	echo %common%%%i.ofd
	time /T

	rem 計算実行
	%command% %common%%%i.ofd >nul

	rem log追加
	type ofd.log >> all.log

	rem ポスト処理
	ofd_post.exe %common%%%i.ofd
	type ev.ev2 >> all.ev2
)

バッチ処理が終了すると、ofd.logを連結したall.logと、 図形データを連結したall.ev2が出力されます。
図形データは以下のコマンドで表示してください。

> ev2d.exe all.ev2

5.8.2 Linux環境

指定したディレクトリにあるすべてのofdファイルを計算するには、 スクリプトファイル5-8-4をOpenFDTDディレクトリーに置いて実行してください。
引数でofdファイルがあるディレクトリを指定します。
また、計算コマンド行は必要に応じて修正してください。

リスト5-8-4 shファイル例 (run.sh)


#/bin/sh
# ./run.sh data/batch
n=1
for file in `ls $1/*.ofd`; do
	# monitor
	echo $n. $file `date`
	n=`expr $n + 1`

	# command
	./ofd -n 8 $file > /dev/null

	# copy
	cp ofd.log `ls $file | sed -e "s/.ofd/.log/g"`
	cp ofd.out `ls $file | sed -e "s/.ofd/.out/g"`
done

バッチ処理が終了すると、ofd.logとofd.outのコピーが出力されます。 logファイルはエディタで内容を確認し、 outファイルはOpenFDTD/にofd.outという名前でコピーしてポスト処理を行います。