📘

plantfem/sim/ReactorClass.f90

に公開

Reactor_クラス ドキュメント(自動生成につき要編集)

概要

Reactor_クラスは化学反応器をシミュレーションするためのデータ構造を提供します。このクラスは複数の化学物質と複数の反応を管理し、反応速度論に基づいたシミュレーションを実行することができます。

依存モジュール

  • MathClass: 数学的操作のためのユーティリティ

定数

定数 説明
PF_MAX_REACTION_NUM integer(int32) 20 サポートされる最大反応数
PF_MAX_INPUT_NUM integer(int32) 5 一つの反応あたりの最大入力物質数
PF_MAX_OUTPUT_NUM integer(int32) 5 一つの反応あたりの最大出力物質数

プロパティ

物質関連

プロパティ デフォルト値 説明
substances type(Real64Ptr_), allocatable(:) - 物質の濃度や量を保持するポインタ配列
substance_names type(String_), allocatable(:) - 物質の名前を保持する配列
n_substances integer 0 システム内の物質数

反応関連

プロパティ デフォルト値 説明
n_reaction integer 0 定義された反応の数
input_list integer(int32)(PF_MAX_REACTION_NUM, PF_MAX_INPUT_NUM) 0 各反応の入力物質のID
output_list integer(int32)(PF_MAX_REACTION_NUM, PF_MAX_OUTPUT_NUM) 0 各反応の出力物質のID
reaction_order real(real64)(PF_MAX_REACTION_NUM, PF_MAX_INPUT_NUM + PF_MAX_OUTPUT_NUM) 0 各反応における物質の反応次数
mol_rate real(real64)(PF_MAX_REACTION_NUM, PF_MAX_INPUT_NUM + PF_MAX_OUTPUT_NUM) 0 各反応における物質のモル比率
constants real(real64)(PF_MAX_REACTION_NUM) 0 各反応の速度定数

メソッド

Init

subroutine Init(obj)

説明

反応器オブジェクトを初期化します。

パラメータ

パラメータ 必須/オプション 説明
obj class(Reactor_) 必須 初期化する反応器オブジェクト

put

subroutine put(obj, substance_name, value_ptr)

説明

反応器に新しい物質を追加し、その濃度または量へのポインタを設定します。

パラメータ

パラメータ 必須/オプション 説明
obj class(Reactor_) 必須 反応器オブジェクト
substance_name 不明(おそらく文字列) 必須 追加する物質の名前
value_ptr 不明(おそらくreal(real64)へのポインタ) 必須 物質の濃度または量へのポインタ

define

subroutine define(obj, inputs, outputs, reaction_orders, mol_rates, constant)

説明

反応器内の化学反応を定義します。反応物、生成物、反応次数、モル比、および速度定数を指定します。

パラメータ

パラメータ 必須/オプション 説明
obj class(Reactor_) 必須 反応器オブジェクト
inputs 不明(おそらく物質名や物質IDの配列) 必須 反応物のリスト
outputs 不明(おそらく物質名や物質IDの配列) 必須 生成物のリスト
reaction_orders 不明(おそらくreal(real64)の配列) 必須 各物質の反応次数
mol_rates 不明(おそらくreal(real64)の配列) 必須 各物質のモル比率
constant 不明(おそらくreal(real64) 必須 反応速度定数

SearchSubstanceID

function SearchSubstanceID(obj, substance_name) result(id)

説明

指定された名前の物質のIDを検索します。

パラメータ

パラメータ 必須/オプション 説明
obj class(Reactor_) 必須 反応器オブジェクト
substance_name 不明(おそらく文字列) 必須 検索する物質の名前

戻り値

名前 説明
id integer 物質のID、見つからない場合は0または負の値

run

subroutine run(obj, dt)

説明

指定された時間ステップで反応器のシミュレーションを実行します。

パラメータ

パラメータ 必須/オプション 説明
obj class(Reactor_) 必須 反応器オブジェクト
dt 不明(おそらくreal(real64) 必須 シミュレーションの時間ステップ

使用例

program reactor_simulation
    use ReactorClass
    implicit none
    
    type(Reactor_) :: reactor
    real(real64) :: A_conc = 1.0d0, B_conc = 0.0d0
    real(real64) :: dt = 0.01d0
    integer :: i
    
    ! 反応器の初期化
    call reactor%Init()
    
    ! 物質の追加
    call reactor%put("A", A_conc)
    call reactor%put("B", B_conc)
    
    ! 反応の定義: A -> B (一次反応)
    ! 注: 具体的なパラメータはコード内の実装に依存します
    ! call reactor%define(["A"], ["B"], [1.0d0, 1.0d0], [1.0d0, 1.0d0], 0.5d0)
    
    ! シミュレーションの実行
    do i = 1, 100
        call reactor%run(dt)
        print *, "Time:", i*dt, "A:", A_conc, "B:", B_conc
    end do
    
end program reactor_simulation

備考

  • この反応器クラスは化学反応シミュレーションのための基本的なフレームワークを提供します。
  • 最大で20の異なる反応と、各反応につき最大5つの入力物質と5つの出力物質をサポートします。
  • 反応速度論は反応次数と速度定数に基づいて計算されます。
  • 物質の濃度や量へのポインタを使用することで、外部システムと連携した動的なシミュレーションが可能です。

Discussion