2011年7月9日土曜日
2011年3月11日金曜日
洪水 ver1
簡単な洪水を表す簡単な例。
洪水発生時刻をif文で判定しているので、今後while文等に変更する必要があると思われる。
Scifuncブロック中に以下が書いてある。
//----------------------------------------
y1=0
i=1
S=[3, 10, 11, 12, 19, 20, 30, 45, 66, 80]
V=[2, 8, 9, 8, 9, 11, 12, 9, 11, 8]
for i=1 : 10;
if Time >S(i) then y1=V(i);
if Time > S(i)+0.9 then y1=0;
end;
end;
end;
//----------------------------------------
洪水発生時刻をif文で判定しているので、今後while文等に変更する必要があると思われる。
Scifuncブロック中に以下が書いてある。
//----------------------------------------
y1=0
i=1
S=[3, 10, 11, 12, 19, 20, 30, 45, 66, 80]
V=[2, 8, 9, 8, 9, 11, 12, 9, 11, 8]
for i=1 : 10;
if Time >S(i) then y1=V(i);
if Time > S(i)+0.9 then y1=0;
end;
end;
end;
//----------------------------------------
(1)毎時間、現在の時間が洪水発生時刻かどうか、全ての配列データ//----------------------------------------
(数百あると思われる)と比較しながら計算を進めるのはよくない
と考えられる。
if文をWhile文で置き換えることが考えられるが、複数の判定をしながら
計算を進めることにならないかどうか。
(2) 次の洪水発生時刻を超えたかどうか、それだけを判定しながら計算を進
めるのであれば、より時間が少なくてすむと思われた。
この場合、下のようなフローチャートが考えられた。
----------------------------------------------------
現在が、次(i番目)洪水発生を超えたか?
→NO ・・・ いつもどおり (状態1)
→YES ・・・ フラグ(旗)が立つ (状態2に変わる)
現在が、洪水終了を超えたか?
→NO ・・・ (状態2のまま)
→YES ・・・ フラグ(旗)が降りる(状態1に戻る)
i=i+1
----------------------------------------------------
これを行うために下記のようなプログラム(Scifunc中の記述)を考えたが、現時点ではうまく動いていない。
//----------------------------------------
Time=u1
y1=0
i=1
S=[3, 10, 11, 12, 19, 20, 30, 45, 66, 80]
V=[2, 8, 9, 8, 9, 11, 12, 9, 11, 8]
if Time >S(i) then y1=V(i);
if Time > S(i)+0.9 then y1=0; i=i+1;
end;
end;
2011年3月9日水曜日
タンクモデル(5段直列)
左がScicosプログラム、右が計算結果です。
計算結果は、黒が一番上のタンク、緑が上から2番目、赤が3番目、黄色が4番目、青が5番目のタンクの水の量の増減を、それぞれ表します。
タンクは5つとも同じ(面積と体積が同じ)としています(Scicos中で異なった定数等を与えればタンク毎に違った値を設定できます。)
【∫】マークがそれぞれのタンクを表します。初期値(各タンクの最初の水量)は一番上のタンクが1000、残りは0です。
各タンクからは水深H(地下水では水頭、ここでは各タンクの断面の形が同じなので水量)に比例して水が流出するとし、比例係数は0.01 /日 としています。三角マーク(△)に0.01という数字が入っています。
自分のタンクから水が出てゆく事で水が減り(-)、上のタンクから水が入って来ることで水が増え(+)ます。この2つが同時に起こり、【∑】で合算されます。
あるタンクから出て行く水の値と、下のタンクに入ってゆく水の値が同じです。出て行く水の量はそのタンクに反映され、同じ量が下のタンクに入るように、矢印が結ばれています。
タンクは5段直列ですが、より多くの数、種類のタンクや、直列と並列の混在なども、Scicos中では容易にできます。
2011年3月8日火曜日
2011年3月7日月曜日
2011年3月6日日曜日
2011年2月26日土曜日
2011年2月15日火曜日
緑藻から珪藻への種の変遷
************【補足】**************
使っている式は、最も基本的な藻類の増殖および死滅、底泥からの溶出の2つだけです。
-----------------------------------------------------------
dX/dt = μmax・S/(Km+S)- kd (藻類の増殖と死滅)
dD/dt = f・D (底泥の溶出)
ここで
μmax :最大比増殖速度
S :基質(リン)濃度
Km :基質(リン)飽和定数
kd :藻類の死滅係数
f :底泥の溶出係数
-----------------------------------------------------------
2011年2月14日月曜日
2011年2月4日金曜日
2011年2月2日水曜日
登録:
投稿 (Atom)