OHyMoS.NET Class Library

SimpleDam クラス

SimpleDam クラスは、簡単なダム貯水池モデルです。

要素モデルです。

Simple dam model.

この型のすべてのメンバの一覧については、 SimpleDam メンバを参照してください。

System.Object
   OhymosNet.OhObject
      OhymosNet.OhElement
         OhymosNet.SimpleDam

public class SimpleDam : OhElement

解説

受信端子: このダム貯水池モデルは、複数個数の流入量を受けとるための受信 端子を持っています。受信端子の個数 nrp は、任意に変更できます。 受信端子は、

OhReceiveDouble("rp", i), i = 0, ..., nrp-1
です(OhReceiveDouble参照)。 受信端子から受信したデータに乗数 cRp(i) を掛けたものが、流入量となります。cRp(i)*rpi の単位が、m^3/sec であるようにします。ただし、rpi は、i番目の 受信端子から取得した値です。

送信端子: 送信端子は、2つあり、
OhSendDouble("sp", i), i = 0, 1
です(OhSendDouble参照)。 いずれも、 DataConnectionTypeは、brokenline です。 送信端子("sp", 0) から送信するデータはダムからの放流量で、単位は、 m**3/sec です。送信端子 ("sp", 1) から送信するデータは、ダム の貯水量で、単位は、m**3 です。

パラメタ:
qPass
通過流量 (m^3/sec)。ダムへの流入量の総和が、この通過流量より 小さいとそのまま放流します。ダムへの流入量の総和が、qPass よ り大きいと、qPass + ratio * (qsum - qPass) を放流します。た だし、qsum は流入量の総和です。
ratio
0 と 1 の間の無次元の定数。ダムからの放流量を計算するのに使 用されます。
dt
計算時間ステップ (sec)
cRp[i], i=0, ..., nrp-1
受信端子 ("rp", i) から受信するデータへの乗数。
状態量: OhTimePoint型の時刻と貯水池の貯留量 (m**3)

nrp は、 init(String, int, OhStreamReader) で設定 されます。パラメタは、setParameter(OhStreamReader)で読み 込まれます。状態量は、setInitialState(OhStreamReader)で 読み込まれます。

Receiveports:
OhReceiveDouble("rp", i), i = 0, ..., nrp-1. nrp is variable. Inflow from upstream channels into the dam. The dimension of cRp[i]*rpi must be m**3/sec where rpi is the value obtained from the port ("rp", i). See: OhReceiveDouble

Sendports:
OhSendDouble("sp", 0) -- discharge (m**3/sec) from the dam, brokenline.
OhSendDouble("sp", 1) -- storage (m**3) of the dam, brokenline.
See: OhSendDouble

parameters:
qPass
pass discharge (m^3/sec)
ratio
discharge rate to surpass from qPass (-)
dt
time step (sec)
cRp[i], i=0, ..., nrp
multiplier to inflow dischage to port ("rp", i), i = 0, ..., nrp-1.
state variables:
the OhTimePoint variable and the storage in the dam reservoir (m**3)

The init(String, int, OhStreamReader) method looks like:
public void init(String aObjName, int aObjNum, OhStreamReader aSr) 
{
    int nrp;
    try 
    {
        nrp = Integer.parseInt(aSr.readWord());
    }
    catch (IOException e) { ...; }
    catch (Exception e) { ...; }
    ...
}
The setParemeter(OhStreamReader) method used for reading parameters from a file looks like:
public void setParameter(OhStreamReader aSr)
{
    double dt = 0.0;
    try 
    {
        _qPass = Double.Parse(aSr.readWord());
        _ratio = Double.Parse(aSr.readWord());
        dt = Double.Parse(aSr.readWord());
        _dt = new OhTime(dt);
    }
    catch (IOException e) 
    { 
        ...; 
        throw new OhError(str); 
    }
    catch (Exception e) 
    {
        ...; 
        throw new OhError(str); 
    }
    
    if (_qPass < 0.0) 
    { 
        ...; 
        throw new OhError(str); 
    }
    if (_ratio < 0.0 || _ratio > 1.0)  
    { 
        ...; 
        throw new OhError(str); 
    }
    if (_dt.toDouble() < OhTime.NEGLIGIBLY_SMALL_TIME) 
    {
        ...; 
        throw new OhError(str); 
    }
    if (_numberOfRp > 0) 
    {  
           //; Weights for inflow receive ports.
        for (int i = 0; i < _numberOfRp; i++) 
        {
            try 
            {
                _cRp[i] = Double.Parse(aSr.readWord());
            }
            catch (IOException e) 
            { 
                ...; 
                throw new OhError(str); 
            }
            catch (Exception e) 
            {
                ...; 
                throw new OhError(str); 
            }
        }
    }
}
Note: NEGLIGIBLY_SMALL_TIME

The setInitialState(OhStreamReader) method used for reading initial states from a file looks like:

public void setInitialState(OhStreamReader aSr)
{
    int  year = 0; long tsec = 0L; frac = 0.0;
    try 
    {
        year = Int32.Parse(aSr.readWord());
        tsec = Int64.Parse(aSr.readWord());
        frac = Double.Parse(aSr.readWord());
    }
    catch (IOException e) { ...; }
    catch (Exception e) { ...; }
    if (year > 0) 
    {
        _currentTime = new OhTimePoint(year, tsec, frac);
    }
    try 
    {
        _storageCrnt = Double.Parse(aSr.readWord());
    }
    catch (IOException e) { ...; }
    catch (Exception e) { ...; }
}

必要条件

名前空間: OhymosNet

アセンブリ: OhymosNet (OhymosNet.dll 内)

参照

SimpleDam メンバ | OhymosNet 名前空間