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