HECMW_LONG_LONG データ型の追加とビジュアライザの elem_node_index 型不整合修正

Closes #741 (closed)

概要

ビジュアライザの各関数で、hecmwST_local_mesh::elem_node_index (long long *) を int * として扱っていた型不整合を修正する。あわせて、修正に必要な HECMW_LONG_LONG データ型識別子をHEC-MW通信ラッパーに追加する。

変更の動機

hecmw_fstr_output_femap.c 内の femap_write_elem、avs_write_elem_conn 等の関数は、elem_node_index の引数を int * で宣言しており、long long * 型の構造体メンバとの間で型不整合が生じていた。受信バッファも int * として確保されており、MPI通信も HECMW_INT で行われていたため、大規模メッシュでのデータ破壊リスクがあった。

これを正しく修正するには、通信レイヤーで long long を直接扱えるようにする必要がある。

変更内容

1. 通信レイヤーへの HECMW_LONG_LONG 追加

hecmw1/src/common/hecmw_config.h:

  • HECMW_LONG_LONG を ((HECMW_Datatype)10004) として定義

hecmw1/src/common/hecmw_comm.c:

  • 全ラッパー関数 (HECMW_Bcast, HECMW_Send, HECMW_Recv, HECMW_Isend, HECMW_Irecv, HECMW_Allreduce, HECMW_Allgather) に HECMW_LONG_LONG → MPI_LONG_LONG の分岐を追加

hecmw1/src/couple/hecmw_couple_comm.c:

  • HECMW_couple_inter_send_recv、HECMW_couple_intra_send_recv、HECMW_couple_bcast に HECMW_LONG_LONG 分岐を追加

2. ビジュアライザの型不整合修正

hecmw1/src/visualizer/hecmw_fstr_output_femap.c:

  • 関数引数の型修正: femap_write_elem、avs_write_elem_conn の elem_node_index を int * → long long *
  • ローカル変数の型修正: HECMW_fstr_output_femap、avs_output、HECMW_bin_avs_output 内の tmp_elem_node_index を int * → long long *
  • メモリ確保の修正: HECMW_calloc の sizeof(int) → sizeof(long long)
  • MPI通信の修正: HECMW_Send / HECMW_Recv のデータ型を HECMW_INT → HECMW_LONG_LONG

変更ファイル一覧

ファイル 変更行数 概要
hecmw1/src/common/hecmw_config.h +2 HECMW_LONG_LONG 定義追加
hecmw1/src/common/hecmw_comm.c +52 全ラッパー関数に long long 分岐追加
hecmw1/src/couple/hecmw_couple_comm.c +56 カプラ通信関数に long long 分岐追加
hecmw1/src/visualizer/hecmw_fstr_output_femap.c +16/-14 関数引数・変数・通信の型修正

Merge request reports

Loading
Loading