入力
電磁場取り込み
User elemetns
基本事項
Python
|
GPTUser elements :: 基本事項ユーザーエレメントの基本事項GPT のユーザーエレメントの追加に関する基礎的なテクニックのメモです. 目次はじめにユーザーは,GPT に機能 (エレメント) を追加することができます.元々のエレメントで計算ができないとき,ユーザーがプログラミング (C言語) を行い,ユーザーエレメントを追加します. エレメントの追加方法関数実行タイミングユーザーは,様々な関数を作成することができます.また,作成された関数の実行タイミングは,ユーザーが決められます.それは,(1) GPT の実行開始時,(2) 計算ステップ毎,(3) GPT の計算終了時です.ここでは,GPT のユーザーインターフェースを使い,新規にエレメント「UserElement」を作成する場合を例に説明します. 実行開始時GPT のインターフェースを使うと,初期化関数「void UserElement_init(gptinit *init)」が自動的に作成されます.GPTの実行の初期段階で,この関数は 1 度,実行されます.様々な初期化処理に使うことができます.初期化関数には,エレメント名に「_init」が付きます. この関数の引数は gptinit 型の構造体のポインターです.これは,GPTが作成する構造体「UserElement_info」です.gptinit の実態は不明ですが,構造体「UserElement_info」と考えれることができます(?).ユーザーが構造体を含めた変数を使う場合,この構造体に追加します. 計算ステップ毎計算ステップ毎に実行される関数も,GPTが作成します.その関数は「void UserElement_sim(引数)」です.この関数のプロトタイプは,ファイル「UserElement.c」のヘッダー部に記述します. この計算ステップ毎の関数は,初期化関数(UserElement_init)の中で登録します.それには,次の関数
void gptaddEBelement(gptinit *init, simfn simfn, exitfn exitfn, int type, void *info ) ;
を使います.具体的には「gptaddEBelement(init, UserElement_sim, gptfree, GPTELEM_LOCAL, info)」と記述されます.引数は変更可能ですが,これが一般的です.ただし,この登録作業をユーザーがする必要はありません.ユーザーエレメントを作成する GPT のインターフェースを使うと「UserElement.c」に書かれます. メインサイクル中gptaddmainfunction を使うと,メインサイクル内でユーザー関数を実行することができます.
void gptaddmainfunction(int position, void (*func)(void *info), void *info);
実行タイミングは,gptaddmainfunction の第一引数で指定します(表1).第二引数が関数名,第三引数は関数に渡す変数です.この関数を実行開始時に呼び出します.具体的には,実行開始時の処理関数内(UserElement_init)の中に,「gptaddmainfunction(GPTMAINFNC_TER, UserElement_ter, info)」を記述します.
計算終了時計算終了時に実行する関数の指定には,
void gptaddmainfunction(GPTMAINFNC_TER, void (*func)(void *info), void *info) ;
を使います. プログラミングテクニックプログラミングのメモです.
ページ作成情報参考資料
更新履歴
|