|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectohymosj.OhObject
ohymosj.OhElement
ohymosj.OhSubSystem
ohymosj.OhTotalSystem
全体系モデルは、ファイル入出力、ネットワークによる入出力、キーボード入力、CRT 出力など、
種々雑多なデータの入出力に対応します。
全体系モデルは、こうした雑多なデータを系の内部に取り込む時は、全て
OhDataPack 型のデータに変換し、
シミュレーション結果をシミュレーション実行者に提供する時は、
OhDataPack 型で蓄積されているデータを
シミュレーション実行者の望むデータ形式に変換します。
ここで、データの変換に関する具体的処理は、新たに作成した入力端子、出力端子で行ない、
全体系モデルでは、入力端子・出力端子を一定の手続きで操作するものとしました。
また、OhDataPack 型に変換される入力データの他に、
全体系モデルは、全体系内部に含まれる全要素のパラメータ・状態量の初期値を
シミュレーション実行者が用意するデータファイルから読み取る機能を備えています。
また、シミュレーション実行者との対話により、
シミュレーション目標時刻を決定する機能も備えています。
全体系モデルは、要素・部分系により構成され、原則として数理計算を行なわず、
部分系モデルと同様の構造を備えています。
そこで本システムでは、部分系モデルを継承して全体系モデルを作成しました。
しかし、部分系モデルが系に対するインプットデータを部分系外部から受信して得るのに対し、
全体系は、入力端子を用いてインプットデータを自ら生成し、構成要素に送信します。
また、構成要素が生成し、系から外部にアウトプットするデータを、
部分系モデルは単に外部に送信するだけですが、
全体系モデルは出力端子を用いて、例えば、出力ファイルに記録するといった処理を行ないます。
フィールドの概要 | |
protected OhTimePoint |
_mediumTermTargetTime
|
protected java.lang.String |
_newestDataTimeCol
|
protected OhTimePoint |
_terminalTime
|
クラス ohymosj.OhSubSystem から継承したフィールド |
_componentArray, _iteratorArray, _numberOfComponents, _numberOfIterators, _numberOfIteratorSets |
クラス ohymosj.OhElement から継承したフィールド |
_calReqP, _currentTime, _dataString, _fixedTime, _initialWorkDoneP, _numberOfObjects, _numberOfReceivePorts, _numberOfSendPorts, _objectArray, _objectList, _receivePortArray, _sendPortArray, _shareInfoDoneP, _targetTime, _timeStep |
クラス ohymosj.OhObject から継承したフィールド |
_className, _objectName, _objectNumber, _owner, NEWLINE |
コンストラクタの概要 | |
OhTotalSystem()
|
メソッドの概要 | |
void |
addNewestDataTime(java.lang.String aStr)
|
boolean |
calculate()
|
long |
calculateTimeStep()
|
boolean |
canYouInputDataTime(OhTimePoint aInputFrom,
OhTimePoint aInputTo)
|
abstract void |
connectComponents()
|
abstract void |
connectPorts()
|
void |
deliverDataString(java.lang.String aFileName,
DataFileContent aContent)
|
OperationFlag |
doShareInfo()
|
OhTimePoint |
getMediumTermTargetTime()
|
OhTimePoint |
getNecessaryTimeFrom()
|
OhTimePoint |
getNecessaryTimeTo()
|
java.lang.String |
getNewestDataTimeCol()
|
OhTimePoint |
getTerminalTime()
|
boolean |
init()
|
boolean |
init(int aObjNum,
int aNumOfItr)
|
boolean |
init(java.lang.String aObjName)
|
boolean |
init(java.lang.String aObjName,
int aObjNum,
int aNumOfItr)
|
boolean |
initialOutput()
|
boolean |
initialWork()
|
void |
inputData()
|
java.lang.String |
makeDataString(OhBufferedReader aBr)
|
void |
outputData()
|
void |
printInputs(java.io.PrintWriter aPw)
|
void |
printInputs(java.io.PrintWriter aPw,
java.lang.String aHead)
|
void |
printOutputs(java.io.PrintWriter aPw)
|
void |
printOutputs(java.io.PrintWriter aPw,
java.lang.String aHead)
The output of output port information. |
void |
readInitialStateFile(java.lang.String aInitStateFile)
|
void |
readParameterFile(java.lang.String aParamFile)
|
void |
readSendPortFile(java.lang.String aSendFile)
|
abstract void |
registerComponents()
|
abstract void |
registerInputPorts()
|
abstract void |
registerIterators()
|
abstract void |
registerOutputPorts()
|
void |
registerReceivePorts()
|
void |
registerSendPorts()
|
void |
saveTerminalState(java.io.PrintWriter aPw)
|
void |
setInitialState(OhBufferedReader aBr)
|
void |
setOhymosjOption()
|
boolean |
work()
|
void |
writeSendPortStock(java.lang.String aFileName)
|
void |
writeTerminalState(java.lang.String aFileName)
|
クラス ohymosj.OhObject から継承したメソッド |
cPrint, getAbsName, getClassName, getObjectName, getObjectNumber, getOwner, getTopOwner, objCompare, objCompare, objCompare, oPrint, setOwner |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
protected OhTimePoint _terminalTime
protected OhTimePoint _mediumTermTargetTime
Medium term target time.
protected java.lang.String _newestDataTimeCol
Newest data time collection.
コンストラクタの詳細 |
public OhTotalSystem()
デフォルトコンストラクタは初期化メソッド init() を実行しません。 その結果以下の設定となります。
・_className : -1 ・_terminalTime : OhTimePoint.OhTimePointMinそれゆえ、 オブジェクト名、オブジェクト番号などを初期化するため、 ユーザが定義する全体系クラスのコンストラクタのなかで 明示的に初期化メソッド init() を呼ぶようにしてください。
メソッドの詳細 |
public abstract void registerInputPorts() throws OhError
抽象メソッドです。 全体系モデルのプログラマが定義する必要があります。
OhError
- if an error occurspublic abstract void registerOutputPorts() throws OhError
抽象メソッドです。 全体系モデルのプログラマが定義する必要があります。
OhError
- if an error occurspublic abstract void registerComponents() throws OhError
このクラスを継承して全体系を作成するプログラマは、 このメソッドを定義する必要があります。
OhSubSystem
内の registerComponents
OhError
- if an error occurspublic abstract void registerIterators() throws OhError
OhSubSystem
内の registerIterators
OhError
- if an error occurspublic abstract void connectPorts() throws OhError
OhSubSystem
内の connectPorts
OhError
- if an error occurspublic abstract void connectComponents() throws OhError
全体系モデル内部の直接通信接続を OhElement.register(Object, int) を用いて定義します。
抽象メソッドなので派生クラスで必ず定義して下さい。
OhSubSystem
内の connectComponents
OhError
- if an error occurspublic boolean init(java.lang.String aObjName, int aObjNum, int aNumOfItr) throws OhError
OhSubSystem
内の init
aObjName
- a String
valueaObjNum
- an int
valueaNumOfItr
- an int
value
boolean
value
OhError
- if an error occurspublic boolean init(java.lang.String aObjName) throws OhError
aObjName
- a String
value
boolean
value
OhError
- if an error occurspublic boolean init(int aObjNum, int aNumOfItr) throws OhError
aObjNum
- an int
valueaNumOfItr
- an int
value
boolean
value
OhError
- if an error occurspublic boolean init() throws OhError
boolean
value
OhError
- if an error occurspublic java.lang.String getNewestDataTimeCol()
Returns "_newestDataTimeCol".
String
valuepublic void addNewestDataTime(java.lang.String aStr)
Returns "_newestDataTimeCol + aStr (arg)".
aStr
- a String
valuepublic void setOhymosjOption() throws OhError
OhError
- if an error occurspublic void registerSendPorts() throws OhError
OhSubSystem
内の registerSendPorts
OhError
- if an error occurspublic void registerReceivePorts() throws OhError
OhSubSystem
内の registerReceivePorts
OhError
- if an error occurspublic java.lang.String makeDataString(OhBufferedReader aBr)
( (0) (1) (2000) (38600) (2.19956e+07) )のフォーマットで記述されているデータファイルからは、 データ文字列 "0 1 2000 38600 2.19956e+07" が取得できます。
aBr
- an OhBufferedReader
value
String
valuepublic void deliverDataString(java.lang.String aFileName, DataFileContent aContent) throws OhError
データファイルを解析して、各要素に文字列を与えてパラメタを設定するか初期値を設定します。
PARSET などについては、 データファイルの内容を表すクラス DataFileContent を参照してください。
このクラスの OhTotalSystem.readSendPortFile() で使用されています。
aFileName
- a String
valueaContent
- a DataFileContent
value
OhError
- if an error occurspublic void readParameterFile(java.lang.String aParamFile) throws OhError
パラメタは、一括して1つのファイルに書き込まれているとします。
【パラメタファイルの例】
# data for test # TestOfElement totalSystem 0 3 { Mountain ibuki 0 1.5 2 Lake biwa 0 5 { Sky sky 0 foo 2 Outlet outlet 0 3.5 2 3.1 8.0 } }第1行や第2行のように、# で始まる行はコメント行です。
TestOfElement totalSystem 0 Mountain ibuki 0 Lake biwa 0 Sky sky 0 Outlet outlet 0のような行は、部分系モデルや要素モデルを識別するための情報です。 クラス名、オブジェクト名、オブジェクト番号の3つの情報を空白で区切って書きます。
モデルを識別するためのこれらの情報に続いて、空白行を間に置かずに、 そのモデルが読みとるべき情報を書きます。 ここの部分は、setParameter(OhBufferedReader) が読み込む部分です。 何行のデータが必要かは、読み込みプログラム setParameter(OhBufferedReader) によって決まります。 モデルを識別するための情報を書いた行と、読みとるべきデータの間に、 # で始まるコメント行を置くこともできません。
モデルを識別するための情報を書いた行とそれに続いたデータ行を固まりとして考えれば、 その固まりと別の固まりとの間には、空白行や # で始まる行がいくつあっても構いません。
Lake biwa 0 のように、構成要素を持つ部分系モデルは、{ } で囲んで、 その構成要素に関するデータを書きます。 部分系であっても、構成要素のパラメタ設定のためのデータ読み込みが不要なら、 { } の部分をつける必要はありません。
aParamFile
- a String
value
OhError
- if an error occurspublic void readInitialStateFile(java.lang.String aInitStateFile) throws OhError
初期状態量ファイル "aInitStateFile" から初期状態量を読み込みます。
引数で指定された初期値ファイルから初期値を読み取ります。 初期値は、一括して1つのファイルに書き込まれているとします。
aInitStateFile
- a String
value
OhError
- if an error occurspublic void readSendPortFile(java.lang.String aSendFile) throws OhError
Read the data of the sending port recorded on the file.
aSendFile
- a String
value
OhError
public void setInitialState(OhBufferedReader aBr) throws OhError
OhSubSystem
内の setInitialState
aBr
- an OhBufferedReader
value
OhError
- if an error occurspublic OperationFlag doShareInfo() throws OhError
OhSubSystem
内の doShareInfo
OperationFlag
value
OhError
- if an error occurspublic OhTimePoint getTerminalTime()
Returns "_terminalTime".
OhElement
内の getTerminalTime
OhTimePoint
valuepublic OhTimePoint getMediumTermTargetTime()
Returns "_mediumTermTargetTime"
OhElement
内の getMediumTermTargetTime
OhTimePoint
valuepublic boolean canYouInputDataTime(OhTimePoint aInputFrom, OhTimePoint aInputTo)
aInputFrom
- an OhTimePoint
valueaInputTo
- an OhTimePoint
value
boolean
valuepublic void inputData() throws OhError
すべての入力端子にデータを読み込むように指令します。 OhTotalSystem.initialWork(), OhTotalSystem.work() から呼ばれます。
Orders all input ports to read data.
OhError
- if an error occurspublic void outputData() throws java.io.IOException
すべての出力端子にデータを書き出すように指令します。 普通は、ファイルに出力します。 OhTotalSystem.work() から呼ばれます。
Orders all output ports to write out.
java.io.IOException
- if an error occurspublic boolean initialOutput() throws OhError
初期状態量を決めた直後に、_currentTime での出力を定義します。 送信端子に時刻と出力値を書き込みます。 _currnet_time での出力が計算できた場合は true を返します。 必要な入力データが得られていないなどして、 _currentTime の出力が計算できなかった場合は false を返します。
しかしながら、大抵の場合は部分系からの初期の出力はないと思われるので、 ここでは常に true を返すように定義しています。
Usually there is no output from total system.
OhSubSystem
内の initialOutput
boolean
value
OhError
- if an error occurspublic boolean initialWork() throws OhError
初期時刻において、全データを取得します。
OhSubSystem
内の initialWork
boolean
value
OhError
- if an error occurspublic OhTimePoint getNecessaryTimeFrom()
getNecessaryTimeFrom() から getNecessaryTimeTo() までのデータパックが 受信端子 aRp から受信されていなければ、要素は計算を開始することができません。
OhTimePoint
valuepublic OhTimePoint getNecessaryTimeTo()
getNecessaryTimeFrom() から getNecessaryTimeTo() までのデータパックが 受信端子 aRp から受信されていなければ、要素は計算を開始することができません。
OhTimePoint
valuepublic long calculateTimeStep() throws OhError
OhSubSystem
内の calculateTimeStep
long
value
OhError
- if an error occurspublic boolean calculate() throws OhCannotGetDataError, OhError
OhSubSystem
内の calculate
boolean
value
OhCannotGetDataError
- if an error occurs
OhError
- if an error occurspublic boolean work() throws OhCannotGetDataError, OhError
OhSubSystem
内の work
boolean
value
OhCannotGetDataError
- if an error occurs
OhError
- if an error occurspublic void saveTerminalState(java.io.PrintWriter aPw)
ファイルに書き込む場合がほとんどと思われます。 必要なら、継承してつくる全体系モデルで変更してください。
Write "_currentTime".
OhSubSystem
内の saveTerminalState
aPw
- a PrintWriter
valuepublic void writeTerminalState(java.lang.String aFileName) throws OhError
ファイル aFimeName (引数)を新規にオープンして、全体系の最終状態を保存します。 ファイル aFimeName がすでに存在する場合は上書きされます。
内部で、 OhSubSystem.terminalState(PrintWriter) を読んでいます。
Saves to the file of the last state.
aFileName
- a String
value
OhError
- if an error occurspublic void writeSendPortStock(java.lang.String aFileName) throws OhError
ファイル aFileName (引数)を新規にオープンして、 出力端子に残っているデータをファイルに保存します。 ファイル aFilefName がすでに存在する場合は上書きされます。
内部で、 OhElement.saveSendPortStock(PrintWriter), OhSubSystem.saveSendPortStock(PrintWriter) を呼んでいます。
aFileName
- a String
value
OhError
- if an error occurspublic void printInputs(java.io.PrintWriter aPw, java.lang.String aHead)
[ARGUMENT] ・aPw ---> 出力先のファイルストリーム。 ・aHead -> 出力時のヘッダ。
The input of output port information.
aPw
- a PrintWriter
valueaHead
- a String
valuepublic void printInputs(java.io.PrintWriter aPw)
[ARGUMENT] ・aPw ---> 出力先のファイルストリーム。出力時のヘッダは4カラムになります。
The input of output port information.
aPw
- a PrintWriter
valuepublic void printOutputs(java.io.PrintWriter aPw, java.lang.String aHead)
出力端子情報の出力
[ARGUMENT] ・aPw ---> 出力先のファイルストリーム。 ・aHead -> 出力時のヘッダ。
aPw
- a PrintWriter
valueaHead
- a String
valuepublic void printOutputs(java.io.PrintWriter aPw)
出力端子情報の出力
[ARGUMENT] ・aPw ---> 出力先のファイルストリーム。出力時のヘッダは4カラムになります。
aPw
- a PrintWriter
value
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |