Leading Project for Biosimulation > Cell/Biodynamics Simulation > simBio
 

Conductorでの処理

Conductorが機能要素のツリーを管理し、積分計算を行う仕組みを解説します

処理順序

  1. conductorはRunnableをimplementsしている。
  2. Runnable.run()ではまずVisitorを使って、NodeList, ReactorList, AnalyzerListを作成する。

    instance treeが以下のようになる場合、

    		external
    			cell
    				NaChannel
    					4sGate
    					2sGate
    				/NaChannel
    				K1Channel
    			/cell
    		/external

    全てのNodeをNodeListに登録する順序は、

    	external
    		cell
    			NaChannel
    				4sGate
    				2sGate
    			K1Channel

    ReactorをReactorListに登録する順序は、

    				4sGate
    				2sGate
    			NaChannel
    			K1Channel
    		cell
    	external

    AnalyzerをAnalyzerListに登録する順序はReactorListと同じ。

  3. 次いで、NodeList.setLinks()を呼ぶ。
  4. start()が呼ばれると、計算中のflagを立て、integrate()を呼び出す。
    1. integrate()の最初にNodeList.prepare()を呼び出す。
    2. 各time step毎に、analyzers.analyze(double t), Reactors.calculate(double t), Variables.update(double t)を呼び出す。 (注: xml上でVariableに特定のクラスを指定すると、計算方式を変更できる。)
    3. Variablesでは、dy/yの設定を満たすtime stepを用いて、全てのVariableを更新する。time stepをConductorに返す。
    4. durationに設定された時間分だけ、計算をする。
    5. 最後に、NodeList.end()を呼び出す。
  5. conductorでは、Thread終了時にNodeList.quit()を呼び出す。