分布型流出モデル OHDIS の使い方 立川 Nov. 20, 2008 ver 1.0 分布型流出モデルを実現するプログラムの利用方法を解説する。 参考文献[1][2][3]などで用いられているプログラムである。 流域地形(河道、斜面)の表現手法は[4][5]による。分布型流出 モデルの骨子である部分流域斜面に対する分布型流出モデル のクラスは ksedgefc2devp-1.cc ksedgefc2devp-1.h で実現されている。詳しい解説は ksedgefc2d.txt にある。 河道追跡モデルのクラスは kinem.cc kinem.h で実現されている。詳しい解説は kinem.txt にある。 以下の解説では Cygwin, Linux などの Unix 環境でプログラムを実行する ことを想定している。 ======================= 0. このパッケージの構成 ======================= ./doc ドキュメント類。サンプルの地形情報を表示した例が catchment.ppt にある。 ./EC5 サンプルの地形データ。エッジノード ver 5 形式のデータ。 ./ist サンプルの初期状態設定ファイル。 ./pmt サンプルのパラメータファイル。 ./raindata サンプルの入力降雨データ ./output 計算結果が格納されるディレクトリ。 ./tksedge 構造定義ファイルを使わないプログラム。旧版で、ここでは使わない。 =========================================== 1. このパッケージ以外に必要となるパッケージ =========================================== - OHyMos-3.4.3: OHyMoS のプログラム - mkPmtIstFc2: 部分流域の個々の斜面のパラメタファイルと初期状態設定ファイル を作成するプログラム 京都大学大学院 工学研究科 都市環境工学専攻 水文・水資源分野のホームページ からダウンロードすることができる。 =========================== 2. 必要となるデータファイル =========================== ---------------------------------------- (1) 地形データファイル (NodeEdge ver. 5) ---------------------------------------- ./EC5 の下にサンプルの地形データを置いている。 サンプルのパラメータファイル samplePMT_IST.pmt の中で、地形データを置く ディレクトリを記述する。 -------------------- (2) 構造定義ファイル -------------------- Connect2SCF を用いて生成することができる。テキストファイルなにで自分で 作成・編集してもよい。 ./sampleSCF.dat がサンプルの構造定義ファイルである。 ---------------------- (3) パラメータファイル ---------------------- ./samplePMT_IST.pmt がサンプルのパラメータファイルである。このパラメータファイル は Connect2SCF を用いて生成することができる。自身で作成してもよい。パラメータファ イルでは、サブ流域の流出モデルごとに以下のようにパラメータを指定する。 KsEdgeFc2dEvp ksedgefc2devp 586 600 ./EC5/EC5_250_586.dat ./pmt/pmt_586.dat -2970.91 -3007.17 125000 175000 パラメータの意味は左から以下の通りである。 (1行目) # 構成要素のクラス名 # オブジェクト名 # オブジェクト番号 (2行目) # 差分間隔 (sec) # 地形データ(EC5形式) # 部分流域の個々の斜面におけるパラメータの値を記したファイル # 2次元雨量データの原点の x, y 座標, # 2次元雨量データのx方向の格子サイズ(m), y方向の格子サイズ(m) このパラメータファイルの中で、個々の部分流域の流れのパラメータの値を記述する ファイルを指定する。この個々の部分流域のファイルは mkPmtIst-2 を用いて生成す るとよい。個々の部分流域のパラメータファイルのサンプルは ./pmt の下にある。 また、サブ流域の河道追跡モデルごとに以下のようにパラメータを指定する。 Kinem kinem 586 2610.51 1 0.0126412 0.03 20 20 0.65 0.0517005 0.0517005 ...... 0.0517005 <-- この場合、20断面なので20個のデータが並ぶ。 1.0 1.0 1.0 1.0 1.0 ....... 1.0 <-- この場合、20断面なので20個のデータが並ぶ。 パラメータの意味は左から以下の通りである。 (1行目) # 構成要素のクラス名 # オブジェクト名 # オブジェクト番号 (2行目) mL : 河道長 (m) mB : 河道幅 (m)。ダミーデータ。流れのモデルには使われない。断面形は下の mK[i]、mZ[i] で設定する。 mG : 河道勾配 (-) mMan : Manning の粗度係数 (m-s) mDiv : 空間差分分割数 (-) mDt : 計算時間間隔 (s) mTheta : 差分計算で用いる重み係数 (0.5 〜 1.0, 0.65 が標準的な値) (2行目) mK[i] : 各計算断面における K (R = K * pow(A, Z) の K) の値 (2行目) mZ[i] : 各計算断面における Z (R = K * pow(A, Z) の Z) の値 ------------------------ (4) 初期状態設定ファイル ------------------------ ./samplePMT_IST.ist がサンプルの全体の初期状態設定ファイルである。 この初期状態設定ファイルは Connect2SCF を用いて生成することができる。 自身で作成してもよい。 この初期状態設定ファイルの中で、個々の部分流域の流出モデルの初期状態 を記述するファイルを指定する。この個々の部分流域の初期状態ファイル は mkPmtIst-2 を用いて生成するとよい。個々の部分流域の初期状態ファイル のサンプルは ./ist の下にある。 ------------------ (5) 入力降雨データ ------------------ サンプルの降雨データが ./raindata の下にある。降雨データのフォーマットは以下の通りである。 降雨強度データは左上隅から順に並べる。 3600 15 15 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 4 4 1 1 1 1 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 第1行:時刻(計算開始時からの時刻)、x方向の降雨グリッドの個数、y方向の降雨グリッドの個数 第2行以降:降雨強度データ(mm/hr) を座標の左上から順に並べる。 (注意) 1.任意の時刻を指定できるが、整数でなければならない。また秒でなければ ならない 2.降雨強度は設定した時刻の強度を元に線形内挿される。 3.降雨データの原点(地形データ座標の原点からの相対的な位置)と降雨グリッドの 間隔(m)はパラメータファイル(ここでは samplePMT_IST.dat で指定する)。 ============= 3.コンパイル ============= g++ ver. 3.4.4 でコンパイルできる。他のコンパイラーでは試していません。 また、OHyMoS ver. 3.4.3 を用いた。 % make Makefile の 3 行目から 9 行目辺りを自身の環境に合わせて修正すること。以下では /home/tachikawa/ohymos/lib/ohymos-3.4.3 に OHyMoS のライブラリ libohymos.a があることを指定している。libohymos.a は 事前にダウンローとしてコンパイルしておかねばならない。 ----ここから--------------------------------------- # user name USER = tachikawa # directories OHYMOSDIR = /home/$(USER)/ohymos/lib/ohymos-3.4.3 HEADERDIR = -I$(OHYMOSDIR) LIBDIR = -L$(OHYMOSDIR) ----ここまで--------------------------------------- ===================== 4.流出計算の実行方法 ===================== % ./ohymos sampleSCF.dat samplePMT_IST とする。ohymos は実行ファイル名、sampleSCF.dat は構造定義ファイル名、 samplePMT_IST は samplePMT_IST.pmt と samplePMT_IST.ist の . より前の 名前を指定する。パラメータファイルと初期状態設定ファイル は同じ名前で、その名前に .pmt, .ist を付ける約束としている。 実行すると以下のようなメッセージが現れて入力待ちとなる。 File: ./raindata/sample_rainfall.dat newest data time : 40000000 File: ./raindata/sample_evporation.dat newest data time : 40000000 # Key in time_step for 'total_system'. # current_time = 0 : time_step = 1行目、2行目これは 降雨データとして sample_rainfall.dat を読み込み、その最終時刻 が 40000000 であること、また蒸発データとして sample_evaporation.dat を読み込み、 その最終時刻が 40000000 であることを示している。 4行目は計算開始時刻(現在時刻)が 0 でることが示され、計算終了時刻(いつまで計算 するか)が入力待ちとなっている。 例えば 36000 sec まで流出計算を実行する場合 # current_time = 0 : time_step = 36000 と入力すればよい。再度 # Medium_term_target_time_increment = と入力を促される。これは、要素モデルの進行の歩調を揃えたい場合、例えばすべての 要素モデルを 3600 sec 毎に計算を進めて、全体の計算を進めたい場合には # Medium_term_target_time_increment = 3600 と入力する。通常の利用では、両方とも計算終了時刻を指定すればよい。そうすると 上流側のモデルから順次、計算終了時刻まで計算を進めて、最下流のモデルまで計算 を進める。 計算結果は out/ の下に部分流域毎に出力される。 SCF_???.dis: 各河道区分下端の河川流量 SCF_???.out: 各河道区分に流入する斜面流出量 SCF_???.sat: 各河道区分に接続する部分流域の飽和面積率 SCF_???.stg: 各河道区分に接続する部分流域の斜面貯留量 ======== 参考文献 ======== [1] 市川温、村上将道、立川康人、椎葉充晴、流域地形の新たな数理表現形式に基づく 流域流出系 シミュレーションシステムの開発、土木学会論文集、no. 691/II-57, pp. 43-52, 2001. [2] 佐山敬洋・立川康人・寶 馨・市川温 : 広域分布型流出予測システムの開発と ダム群治水効果の評価, 土木学会論文集, No. 803/II-73, pp. 13-27, 2005.11. [3] 立川康人・永谷 言・寶 馨 : 飽和不飽和流れの機構を導入した流量流積関係式 の開発, 水工学論文集, pp. 7-12, vol. 48, 2004. [4] 椎葉 充晴,立川康人,市川 温,流域地形の新しい表現形式とその流域モデリング システムとの 結合、京都大学水文研究グループ研究資料,no. 1, 131p. [5] 椎葉 充晴, 市川 温, 榊原 哲由, 立川 康人, 河川流域地形の新しい数理表現形式, 土木学会論文集, pp. 1-9, 1999, No. 621/II-47.