hecmwST_local_mesh の API の作成
第96回FrontISTR研究会の懇談会の場で話題にした件です。
やりたいことは「hecmwST_local_mesh の節点配列、要素配列を直接外部から設定、取得できるようなAPIを作成する」です。
これによって期待されることは
- プログラムで作った節点、要素を msh ファイルを経由せずに直に FrontISTR に渡せる
- API を経由すれば、他の入力形式への対応も容易(現在は lex 経由でアスキー形式を読み込むようになっているが、API 経由ならバイナリ形式も容易に対応できる)
- hecmw_ctrl.dat なしで解析を行う
などです。
方針としては
- C言語互換のAPIにする(ほとんどの言語はC言語のAPIを呼び出す仕組みを既に持っている)
- 実装は iso_c_binding を使って Fortran で行う
- メモリの確保、破棄は FrontISTR 側で行う
- API の引数はC言語と互換性を持つ型に限る
- FrontISTR の構造体は type(c_ptr) で隠蔽する
としたい(議論をして方針は追加していく)。
将来的には他のデータ構造についても API を作成したいですが、需要が多いと思われるメッシュのデータ構造についてまず取り掛かりたいと考えています。
【8/17 10:15 追記】現時点の方針
既存の hecmwST_local_mesh および内部処理は変更せず、void* handle と C interoperable な set/get 関数による外部アクセス層を追加する。内部処理のAPI利用への置換やデータ構造整理は本Issueのスコープ外。
Edited by TOKUNAGA Ken-ichi