TramPowerLawStorage

Power-law storage element model with multi inputs andd multi outputs

[ ohymos | Source | Keywords | Summary | Ancestors | All Members | Descendants ]

Quick Index

DESCRIPTION

Class Summary

class TramPowerLawStorage : public Element
{
public:
void Set_parameter(FILE* fp);
void Set_initial_state(FILE* fp);
Boolean Initial_output(void);
time_t Calculate_time_step(void) ;
Boolean Can_you_calculate(void) ;
Boolean Calculate(void);
Boolean Work(void);
void Save_terminal_state(FILE* fp);
protected:
Send<double>* mpSp;
void Register_send_ports(void);
Receive<double>* mpRp;
void Register_receive_ports(void);
ofstream monitor_storage, monitor_deltaT;
}; // TramPowerLawStorage

Back to the top of TramPowerLawStorage


DESCRIPTION

[クラス名] TramPowerLawStorage

[モデル名] 羃関数型貯留モデル

[機能] 羃関数型貯留モデル

基礎式

      O_i = \alhpa_i s^{m_i}
      ds/dt = a_1*I_1 + a_2*I_2 + ... + a_m*I_m - O_1 - O_2 - ... - O_n
  
を TRAM 法によって計算します。ただし、s (m^3) は、貯留要素の貯留量、 a_1*I_1, a_2*I_2, ..., a_m*I_m は流入強度 (m^3/sec)、O_1, O_2, ..., O_n は、流出強度 (m^3/sec) です。流出強度 O_i は、貯留量 s の羃関数 \alhpa_i s^{m_i}で表されるものとします。

[受信端子の仕様]

m 個の受信端子から流入量 I_1, I_2, ... I_mを受けます。

a_i*I_i の次元が m^3/sec になるように注意すれば、受信端子から得られる I_i 自身の次元は、m^3/sec でなくても構いません。

[送信端子の仕様]

n 個の受信端子から流出量 O_1, O_2, ... O_mを送出します。

[Init のための追加情報]

Init のための追加情報では、つぎの値を並べます。

  mNumRp, mNumSp, (Dct[i], mCqup[i], i=0, ..., mNumRp-1),
  (mAlpha[i], mM[i], i=0, ..., mNumSp-1), mSlevel, mEps,
  mFlag
これらの変数の意味はつぎのようです。

Init のための追加情報で指定するデータは、全部で、2*m + 2*n + 5 個です。。

[パラメタ]

パラメタは、つぎの 2*m + 2*n + 3 個です。

  (Dct[i], mCqup[i], i=0, ..., mNumRp-1),
  (mAlpha[i], mM[i], i=0, ..., mNumSp-1), mSlevel, mEps, mFlag

[状態量]

  1. time_t current_time: 現在時刻 (unix time)
  2. double mS_crnt: 貯水量 (m^3)
  3. int mHalvedp: 初回の計算 (1) か継続計算 (0) か (-)
  4. mrPsum_last: 一ステップ前の入力積分値 (m^3)
  5. time_t mDt_next: 計算時間刻みの候補値 (sec)
  6. int mTime: 現在の計算時間間隔で打ち切り誤差評価をクリアした連続回 数 (-)

補足:初回の計算 (継続の計算ではないということ) では、mHalvedp = YES, mTime = 0, mDt_next = 1 (sec), mrPsum_last = 0 としてください。

Back to the top of TramPowerLawStorage


Send<double>* mpSp;

送信端子

流量(m^3/sec)を折れ線データで出力

  Send<double>* mpSp;

Back to the top of TramPowerLawStorage


void Register_send_ports(void);

; 送信端子の登録

  void Register_send_ports(void);

Back to the top of TramPowerLawStorage


Receive<double>* mpRp;

; 受信端子

  Receive<double>* mpRp;

Back to the top of TramPowerLawStorage


void Register_receive_ports(void);

; 受信端子の登録

  void Register_receive_ports(void);

Back to the top of TramPowerLawStorage


ofstream monitor_storage, monitor_deltaT;

  ofstream monitor_storage, monitor_deltaT;

Back to the top of TramPowerLawStorage


void Set_parameter(FILE* fp);

パラメタの設定

データ読み取り部はつぎのようです。

     for(int i = 0; i < mNumRp; i++) {
       int dct;
       fscanf(fp, "%d %lf", &dct, &mCqup[i]);
       mpRp[i].Set_data_connection_type(dct);
     }
     for (int i = 0; i < mNumSp; i++) {
       fscanf(fp, "%lf %d", &mAlpha[i], &mM[i]);
     }
     fscanf(fp, "%lf %lf", &mSlevel, &mEps);
     fscanf(fp, "%d", &mFlag);
     

  void Set_parameter(FILE* fp);

Back to the top of TramPowerLawStorage


void Set_initial_state(FILE* fp);

初期状態を fp から読み取ります。

     fscanf(fp, "%ld %lf %lf %ld", ¤t_time, &mS_crnt,
       &mrPsum_last, &mDt_next);
     

  void Set_initial_state(FILE* fp);

Back to the top of TramPowerLawStorage


Boolean Initial_output(void);

  Boolean Initial_output(void);

Back to the top of TramPowerLawStorage


time_t Calculate_time_step(void) ;

  time_t Calculate_time_step(void)                       //; Work0の場合
;

Function is currently defined inline.


Back to the top of TramPowerLawStorage


Boolean Can_you_calculate(void) ;

  Boolean Can_you_calculate(void)                                
;

Function is currently defined inline.


Back to the top of TramPowerLawStorage


Boolean Calculate(void);

  Boolean Calculate(void);

Back to the top of TramPowerLawStorage


Boolean Work(void);

  Boolean Work(void);

Back to the top of TramPowerLawStorage


void Save_terminal_state(FILE* fp);

  void Save_terminal_state(FILE* fp);

Back to the top of TramPowerLawStorage


All Members

public:
void Set_parameter(FILE* fp);
void Set_initial_state(FILE* fp);
Boolean Initial_output(void);
time_t Calculate_time_step(void) ;
Boolean Can_you_calculate(void) ;
Boolean Calculate(void);
Boolean Work(void);
void Save_terminal_state(FILE* fp);
protected:
Send<double>* mpSp;
void Register_send_ports(void);
Receive<double>* mpRp;
void Register_receive_ports(void);
ofstream monitor_storage, monitor_deltaT;

Back to the top of TramPowerLawStorage


Ancestors

Inheritance chain for TramPowerLawStorage:

Back to the top of TramPowerLawStorage


Descendants

Class is not inherited by any others.

Back to the top of TramPowerLawStorage


Generated from source by the Cocoon utilities on Sun Sep 17 20:23:56 2000 .

Report problems to jkotula@stratasys.com