2. 第 4 回 ADVENTURE 定期セミナー ADVENTURE_Solid の関数 資料1
Bcnd
定義: hddm_types.h
機能: ある節点の境界条件を格納する.
メンバ:
int node; Subdomain 内ローカル節点番号
int co; 軸方向(0=x, 1=y, 2=z)
double val; 境界条件値
SpringSupport
定義: hddm_types.h
機能: ある節点の弾性ばね支持条件を格納する.
メンバ:
int node; Subdomain 内ローカル節点番号
int spring_id; グローバルばね ID
double direction[3]; 各軸方向の係数
Inbc
定義: hddm_types.h
機能: ある Subdomain が他 Subdomain と共有する,ある Interface 自由度情報を格納する.
メンバ:
int aspart; この自由度を担当する Part の ID
int mypart_ibid; この Subdomain が属する Part 内でのローカル Interface 自由度番号
int node; Subdomain 内ローカル節点番号
int co; 軸方向(0=x, 1=y, 2=z)
Sharenode
定義: hddm_types.h
機能: ある Subdomain が他 Subdomain と共有する,ある Interface 節点情報を格納する.
メンバ:
int aspart; この節点を担当する Part の ID
int asdom; この節点を担当する Subdomain の ID
int asgdom; ”asdom"のグローバル ID
int n_share_dom; この節点を共有する Subdomain 数
int* share_gdom; この節点を共有する Subdomain のグローバル ID を格納する int 配列
int mypart_snid; この Subdomain が属する Part 内でのローカル Interface 節点番号
int node; Subdomain 内ローカル節点番号
2 / 16
3. 第 4 回 ADVENTURE 定期セミナー ADVENTURE_Solid の関数 資料1
BCset
定義: hddm_types.h
機能: ある Subdomain が持つ境界条件の集合体.
メンバ:
int id; 境界条件の ID
int ndisp; 節点強制変位境界条件の数
int nload; 節点荷重境界条件の数
int num_elmfaceload[ELMFACELOAD_NUM_TYPE]; 次期バージョンで使用予定
int efl_onedatasize[ELMFACELOAD_NUM_TYPE]; 次期バージョンで使用予定
int num_spring_support; 弾性ばね条件の数
Bcnd* bcdisp; 節点強制変位境界条件を格納する Bcnd 配列
Bcnd* bcload; 節点荷重境界条件を格納する Bcnd 配列
ElmFaceLoad* elmfaceload[ELMFACELOAD_NUM_TYPE]; 次期バージョンで使用予定
SpringSupport* spring_support; 弾性ばね条件を格納する SpringSupport 配列
DomMesh
定義: hddm_types.h
機能: 1 つの Subdomain のメッシュデータや境界条件を格納する.
メンバ:
int partid; Subdomain が属する Part の ID
int domid; Subdomain の属する Part 内でのローカル ID
int gdomid; Subdomain のグローバル ID
int elmtype; 有限要素の種類
int elm_dim; 要素の次元数
int nd_elm; 要素を構成する節点数
int elms; Subdomain 内の要素数
int nodes; Subdomain 内の節点数
int node_dim; 節点の次元数
int ndisp; 基本境界条件数
int nload; 自然境界条件数
int ninbd; 他 Subdomain と共有する Interface 自由度数
int ifn_dim; Interface 節点の自由度数
int nsharenode; 他 Subdomain と共有する Interface 節点数
int* nop; Subdomain 内の要素コネクティビティを格納する int 配列
int* ndindex; Subdomain 内節点の Part ローカル節点番号を格納する int 配列
Bcnd* bcdisp; 基本境界条件を格納する Bcnd 配列
Bcnd* bcload; 自然境界条件を格納する Bcnd 配列
Inbc* inbd; 他 Subdomain との共有 Interface 自由度情報を格納する Inbc 配列
Sharenode* sharenode; 他 Subdomain との共有節点情報を格納する Sharenode 配列
Slist* bclist; Subdomain の境界条件を格納する Slist ポインタ
double* crd; Subdomain 内の節点座標値を格納する double 配列
int with_temperature; この Subdomain 内節点の温度情報を持つかどうか
double* temperature; Subdomain 内節点の温度を格納する double 配列
3 / 16
4. 第 4 回 ADVENTURE 定期セミナー ADVENTURE_Solid の関数 資料1
int with_matid; 材料物性値 ID を持つかどうか(複数材料モデルかどうか)
int* matid; Subdomain 内要素の材料物性値 ID を格納する int 配列
int num_spring_support; 弾性ばね条件数
SpringSupport* spring_support; 弾性ばね条件を格納する SpringSupport 配列
OPinfo
定義: hddm_types.h
機能: ある Part がある他 Part と共有する Interface 自由度情報を格納する.
メンバ:
int n_mofree; ある他 Part と共有する Interface 自由度数
int* mof_ibid; ある他 Part と共有する Part 内での
ローカル Interface 自由度番号を格納する int 配列
OPSinfo
定義: hddm_types.h
機能: ある Part がある他 Part と共有する Interface 節点情報を格納する.
メンバ:
int n_moshare; ある他 Part と共有する Interface 節点数
int* mo_snnid; ある他 Part と共有する Part 内での
ローカル Interface 節点番号を格納する int 配列
PartMesh
定義: hddm_types.h
機能: 1 つの Part のメッシュデータや境界条件を格納する.
メンバ:
int n_part; 総 Part 数
int partid; Part の ID
int n_domain; Part 内の Subdomain 数
int t_nodes; Part 内の節点数
int node_dim; 節点自由度数
int t_infree; Part 内 Interface 自由度の中でこの Part が担当する Interface 自由度数
int t_outfree; Part 内 Interface 自由度の中で他 Part が担当する Interface 自由度数
int t_insnode; Part 内 Interface 節点の中でこの Part が担当する Interface 節点数
int t_outsnode; Part 内 Interface 節点の中で他 Part が担当する Interface 節点数
OPinfo* op; 他 Part との共有 Interface 自由度情報を格納する OPinfo 配列
OPSinfo* opsn; 他 Part との共有 Interface 節点情報を格納する OPSinfo 配列
double* crd; Part 内の節点座標値を格納する double 配列
double* crd2; Part 内の節点座標値(大変形解析 ULF に使用)を格納する double 配列
int* pndindex; Part 内節点の領域分割前グローバル節点番号を格納する int 配列
int global_t_nodes; 領域分割前の総節点数
int global_t_elms; 領域分割前の総要素数
4 / 16
5. 第 4 回 ADVENTURE 定期セミナー ADVENTURE_Solid の関数 資料1
int global_t_domains; 全 Part の総計 Subdomain 数
DomMesh* dom; Part 内の各 Subdomain のメッシュデータを格納する DomMesh 配列
int* off_gdom; 各 Part の Subdomain のグローバル ID スタート番号を格納する int 配列
DomField
定義: hddm_types.h
機能: 1 つの Subdomain の物理量を格納する.
メンバ:
int partid; Subdomain の属する Part の ID
int domid; Subdomain の属する Part 内でのローカル ID
int nd_elm; 要素を構成する節点数
int ninteg; 要素の積分点数
int elms; Subdomain 内の要素数
int elm_dim; 要素の次元数
int nodes; Subdomain 内の節点数
int node_dim; 節点の自由度数
int str_dim; 応力の次元数
int have_cgdisp; 現バージョンでは特に使用しない
double* disp; 節点変位ベクトル
double* reac; 節点反力ベクトル
double* stress; 積分点応力テンソル
double* cgdisp; 現バージョンでは特に使用しない
double* ddisp; 増分型節点変位ベクトル
double* strain; 積分点歪みテンソル
double* pl_strain; 積分点塑性歪みテンソル
double* eq_pl_strain; 積分点相当塑性歪み
double* stress2; 前の増分ステップにおける積分点応力テンソル
double* force; 節点外力ベクトル
double* force2; 前の増分ステップにおける節点外力ベクトル
double* dforce; 増分型節点外力ベクトル
double* ystr; 積分点降伏応力
double* ystr2; 前の増分ステップにおける積分点降伏応力
int* elpl; 積分点降伏領域(弾性: ELASTIC, 塑性: PLASTIC, 塑性→弾性: PL_TO_EL)
PartField
定義: hddm_types.h
機能: 1 つの Part 内の Subdomain 毎の物理量を格納する.
メンバ:
int n_part; 総 Part 数
int partid; Part の ID
int n_domain; Part 内の Subdomain 数
DomField* dom; Part 内の各 Subdomain の物理量を格納する DomField 配列
5 / 16
6. 第 4 回 ADVENTURE 定期セミナー ADVENTURE_Solid の関数 資料1
OptSolv
定義: hddm_types.h
機能: 有限要素法ソルバとしての各種オプションを格納する.
メンバ:
fe_Options feopt; 有限要素法解析タイプ
int solver_type; 線形方程式ソルバタイプ
SOLVER_ALLCG: 全自由度を CG 法で解く
SOLVER_HDDM: 静的縮約した Interface 自由度を CG 法で解く
int nonlinear; 1: 非線形問題, 0:線形問題
int total_nl_step; 本実行における総増分ステップ数
int first_nl_step; 本実行における初期増分ステップ番号(リスタート時に非零)
int max_newton; Newton-Raphson 法の反復回数上限(未収束判定値)
int cur_nl_step; 本実行における現在の増分ステップ番号
int cur_newton_step; 現在の Newton-Raphson 法の反復回数
double tol_newton; Newton-Raphson 法の収束判定値
int sw_gravity; 1:重力による自重を考慮する, 0:考慮しない
int have_intg_stra; 1:出力タイプに積分点歪みデータがある, 0: ない
int have_intg_pl_stra; 1:出力タイプに積分点塑性歪みデータがある, 0:ない
int have_intg_eq_pl_stra; 1:出力タイプに積分点相当塑性歪みデータがある, 0:ない
int use_tet10_5; 1:4 面体 2 次要素の要素積分は 5 点積分を用いる, 0:4 点積分
Slist* nlstep_set; 増分法をコントロールするオプションリスト
int unload_reset; 1:除荷発生時に非線形計算をリセットする, 0:リセットしない
int sw_thermal; 1:熱応力を考慮する, 0:考慮しない
int sw_penalty; デバッグ用,特に使用しない
OutputSW
定義: hddm_types.h
機能: 出力する解析結果タイプを格納する.出力する物理量のタイプはビットで管理し,節点デー
タは 1,要素データは 2,要素積分点データは 4 のビットをオン/オフする.
メンバ:
int disp; 節点変位
int reac; 節点反力
int force; 節点外力(増分解析リスタートデータ出力時にオン)
int str; (節点/要素/積分点)応力
int estr; (節点/要素/積分点)相当応力
int ystr; (節点/要素/積分点)降伏応力
int elpl; (要素/積分点)降伏領域
int stra; (節点/要素/積分点)歪み
int pl_stra; (節点/要素/積分点)塑性歪み
int eq_pl_stra; (節点/要素/積分点)相当塑性歪み
int prstr; (節点/要素/積分点)主応力 3 成分とその固有値ベクトル
6 / 16
7. 第 4 回 ADVENTURE 定期セミナー ADVENTURE_Solid の関数 資料1
int prstra; (節点/要素/積分点)主歪み 3 成分とその固有値ベクトル
char* data_dir; 出力する結果ファイルの置かれる親ディレクトリ名
char* subdir; 出力する結果ファイルの置かれるサブディレクトリ名
char* filename; 出力する結果ファイルの Part ID や拡張子を除いたファイル名
int filename_have_step; 1:出力結果ファイル名に増分ステップ番号をつける, 0:つけない
InputSW
定義: hddm_types.h
機能: 入力するデータファイルの情報を格納する.
メンバ:
char* data_dir; 入力するモデルファイルが置かれている親ディレクトリ名
char* indata_subdir; 入力するモデルファイルが置かれているサブディレクトリ名
char* indata_filename; 入力するモデルファイルの Part ID や拡張子を除いたファイル名
char* nl_resin_subdir; 入力する非線形反復リスタートファイルの置かれている
サブディレクトリ名
char* nl_resin_filename; 非線形反復リスタートファイルの Part ID,増分ステップ番号や
拡張子を除いたファイル名
int use_nl_resin; 正数 n:非線形反復リスタートファイルとして増分ステップ番号 n の
データを読み込む,0:読み込まない
int indata_filename_have_step; 現バージョンでは特に使用しない
int nl_resin_filename_have_step; 1:入力する非線形反復リスタートファイル名に
増分ステップ番号をつける,0:つけない
CGOpts
定義: hddm_types.h
機能: Interface 問題を前処理つき CG 法で解くための各種オプションを格納する.
メンバ:
double tol; CG 法のための収束判定値
int loop_max; CG 法の反復回数上限(未収束判定値)
int resout_interval; CG 法リスタートファイルを出力する CG 反復回数の間隔
int resout_last; 1:CG 法終了時にリスタートファイルを出力する,0:出力しない
int use_resin; 1:CG 法リスタートファイルを読み込む,0:読み込まない
int sw_mat_keep; 1:CG 法反復間で線形方程式の係数行列を保持する,0:保持しない
int sw_precon; CG 法のための前処理タイプ
int watch_cg_history; 1:CG 法の収束履歴を出力する,0:出力しない
char* data_dir; 入出力する CG 法リスタートファイルの置かれる親ディレクトリ名
char* resin_subdir; 入力する CG 法リスタートファイルが置かれているサブディレクトリ名
char* resin_filename; 入力 CG 法リスタートファイルの Part ID や拡張子を除いたファイル名
char* resout_subdir; 出力する CG 法リスタートファイルの置かれるサブディレクトリ名
char* resout_filename;出力 CG 法リスタートファイルの Part ID や拡張子を除いたファイル名
int resin_filename_have_step; 現バージョンでは特に使用しない
int resout_filename_have_step; 現バージョンでは特に使用しない
7 / 16