Sari la conținut

Translation status

This page has not yet been translated into Romanian, or its translation is out of date. The current Japanese version is shown as a fallback.

FrontISTR バージョン 6.0 リリースノート

リリース日

2026/10/05

ハイライト

本リリースでは、接触解析、シェル要素、動解析を中心に解析機能を大きく拡張し、線形ソルバーとGPU・HPC環境への対応を強化した。Newton反復の収束判定の統一、キーワードの改名と廃止、既定値の変更など、既存の入力や結果に影響する変更を含むため、アップグレードの際は「互換性に関わる変更」を確認されたい。

  • 接触解析の拡張: 面-面(mortar)接触、接触面の平滑化、接触ダンピングを追加し、拡張Lagrange法を刷新した。並列接触では、解が領域分割数に依存しないスレーブ所有方式を選べる。(→ 接触解析)
  • シェル要素の大変形対応: シェル要素のMITC4とMITC3が、有限回転を伴う大変形解析に対応した。ソリッド要素と混在するモデルも、通常のシェル・梁要素の入力のまま解ける。(→ シェル・梁要素)
  • 動解析のマルチステップ・自動増分・カットバック: 動解析で、ステップごとに境界条件と荷重を切り替えられるようになり、非線形の陰解法では自動増分とカットバックが使える。(→ 動解析)
  • Newton反復の収束判定の統一: 解析の種類と接触の有無によって異なっていた収束判定を統一し、自由度成分の最大値による判定も選べるようにした。(→ 解析の制御と収束判定)
  • MUMPS・MLなしで使える直接法とAMG前処理: マルチフロンタル直接法ソルバーとSA-AMG前処理を組み込み、MUMPSやMLをリンクしないビルドでも使えるようにした。(→ 線形ソルバー・前処理)
  • GPU対応とアーキテクチャ別チューニングの統合: 線形ソルバーの反復法と一部の前処理が、OpenACCによるNVIDIA GPUでの計算に対応し、富岳(A64FX)向けのチューニングをビルドオプションで組み込めるようになった。(→ GPU・HPC環境への対応)
  • 周波数応答解析の並列化と応力・ひずみの出力: 周波数応答解析が、MPI並列での実行と、応力・ひずみの出力に対応した。(→ 固有値解析・周波数応答解析)
  • ドキュメントの再構成: ドキュメントを新しいサイトへ移し、機能リファレンスと理論マニュアルを新設した。(→ ドキュメント)

互換性に関わる変更

v5.9 の入力ファイル、ビルド手順、後処理に影響する変更は、次のとおりである。

入力ファイルの修正が必要なもの

  • メッシュ入力の TYPE=ABAQUS の改名: inp形式のメッシュを読むときの指定が TYPE=INP に変わり、TYPE=ABAQUS は受け付けられない。全体制御ファイルの !MESH と、メッシュファイルの !CONNECTIVITY を書き換える。inp形式のメッシュで ALL という名前のセットを定義したときに付く別名も、ABAQUS_ESET_ALL・ABAQUS_NSET_ALL から INP_ESET_ALL・INP_NSET_ALL に変わったため、制御ファイルでこれらの名前を参照している場合は書き換える。(→ 入出力・プリポスト)
  • 拡張Lagrange法の摩擦接触の線形ソルバー: 摩擦錐の扱いを変えたため、摩擦のある拡張Lagrange法の接触解析では、接線剛性が非対称になる。線形ソルバーにCG法を指定している入力は、BiCGSTAB法などに変えるか、!CONTACT_ALGO に FRICTION_CONE=FROZEN を指定して従来の扱いに戻す。(→ 接触解析)
  • 拡張Lagrange法の接触のペナルティ: !CONTACT の NPENALTY・TPENALTY とデータ行の摩擦のペナルティ剛性は、拡張Lagrange法では、接触ペアごとの基準剛性に掛ける係数として扱われるようになった(v5.9 では、NPENALTY は全体の剛性行列の対角成分の最大値に掛ける係数、TPENALTY は絶対値であり、データ行の摩擦のペナルティ剛性は使われていなかった)。これらに値を書いている入力は、値を削除して既定値を使うか、ログに出力される基準剛性(refStiff)をもとに係数に直す。(→ 接触解析)
  • 接触ペアを含むメッシュの要素ベース分割: !CONTACT PAIR を含むメッシュを、パーティショナーの !PARTITION に TYPE=ELEMENT-BASED を指定して分割すると、エラーで停止するようになった。TYPE=NODE-BASED で分割する。(→ 接触解析)
  • !ZERO 省略時の既定値: メッシュファイルの !ZERO を省略したときの絶対零度が、0.0から-273.15に変わった。温度をケルビンで入力している輻射境界条件のモデルは、!ZERO に0.0を明記する。(→ 材料・要素・境界条件)
  • 周波数応答解析の !FLOAD の面荷重: 面グループ名を指定した !FLOAD の値が、単位面積あたりの面荷重として扱われるようになった。面グループ名を指定している入力は、荷重値を見直す。(→ 固有値解析・周波数応答解析)
  • 動解析の !STEP: !VERSION を書いた動解析の入力では、!STEP がステップとして扱われ、SUBSTEPS とステップ時間幅、BOUNDARY・LOAD の行に挙げたグループが使われるようになった(v5.9 では、!STEP からは収束判定などのパラメータだけが使われていた)。v5.9 と同じ解析にするには、SUBSTEPS と2行目(時間増分とステップ時間幅)を省き、使っている境界条件と荷重のグループをすべて BOUNDARY・LOAD の行に挙げる。(→ 動解析)
  • 自由度混在用の要素への熱荷重: 761・781を含むモデル(動解析では641を含むモデルも)に !TEMPERATURE で温度を与えると、停止するようになった(v5.9 では、これらの要素の熱荷重が正しく計算されないまま解析が進んでいた)。これらの要素は熱荷重に対応していないため、温度を与えるモデルには含めない。(→ シェル・梁要素)
  • リスタートファイルの形式: !RESTART の VERSION の既定値が5から6に変わり、構造解析のリスタートファイルの形式が変わった。v5.9 で書き出した静解析のリスタートファイルから再開するには、!RESTART に VERSION=5 を指定する(有限回転を扱うシェル要素を含むモデルは再開できない)。動解析は v5.9 のリスタートファイルから再開できないため、v6.0 で最初から解析し直す。(→ 入出力・プリポスト)

出力が変わるもの(後処理の見直しが必要)

  • ELEMACT の出力値: 活性の要素で1、非活性の要素で0に反転した。ELEMACT の値を使う後処理は、条件を反転させる。(→ 入出力・プリポスト)
  • 動解析のモニタ出力の列: dyna_disp_*.txt などのモニタ出力ファイルと dyna_energy.txt の先頭に、ステップ番号の列が加わった。列の位置を決めて読んでいる後処理を修正する。(→ 動解析)
  • 周波数応答解析の結果ファイルの項目名: 項目名が、静解析と同じ名前の末尾に _real・_imag を付けた形に変わり、従来の小文字の項目名は廃止された。項目名を指定して読んでいる後処理を修正する。(→ 固有値解析・周波数応答解析)
  • 固有ベクトルの正規化: 固有ベクトルを、絶対値が最大の成分が+1になるように正規化するようになった(v5.9 では、符号付きの最大値で割っていた)。絶対値が最大の成分が負だったモードでは、固有ベクトルと刺激係数の符号と大きさが変わる(固有値と有効質量は変わらない)。固有モードの値や刺激係数を使う後処理は、結果を見直す。(→ 固有値解析・周波数応答解析)
  • 平面要素の可視化出力の変位: VTK・BIN_VTK 形式で、平面要素の変位が3成分で出力されるようになった。変位を2成分として読んでいる後処理を修正する。(→ 入出力・プリポスト)
  • 要素チェックの出力ファイル名: 要素チェックの結果ファイルと可視化ファイルの名前に、_precheck が付くようになった。ファイル名を指定して読んでいる後処理を修正する。(→ 入出力・プリポスト)
  • 終了コード: fistr1 の終了コードが、失敗の種別ごとの値(1、2、3、4、10、20)になった。終了コードの値で処理を分けているスクリプトを見直す。(→ 解析の制御と収束判定)

同じ入力で結果や計算の経過が変わるもの

  • Newton反復の収束判定: 判定式を統一したため、接触解析と動解析では、同じ CONVERG の値でも反復回数と収束時の解が変わる。v5.9 の結果と比べるときは、収束判定値を小さくして、十分に収束した解どうしで比べる。(→ 解析の制御と収束判定)
  • 線形ソルバーの失敗の扱い: 静解析で反復法の線形ソルバーが収束しないと、Newton反復の失敗として扱われ、カットバックまたは打ち切りになる。打ち切りになる場合は、線形ソルバーの反復回数の上限や前処理を見直す。(→ 解析の制御と収束判定)
  • !AMPLITUDE の VALUE=ABSOLUTE: VALUE=ABSOLUTE は、v5.9 では受け付けたうえで無視され、VALUE=RELATIVE と同じに扱われていた。v6.0 では、静解析の !CLOAD・!DLOAD と動解析の境界条件・荷重で、振幅の値がそのまま荷重や境界条件の値として使われる。v5.9 と同じ結果にするには、VALUE=ABSOLUTE を削除する。(→ 解析の制御と収束判定)
  • 拡張Lagrange法の接触解析: 実装を刷新したため、反復の経過と結果が変わる。ペナルティを指定していない入力では、入力の修正は不要である。(→ 接触解析)
  • BOX_EXP_RATE の廃止: !CONTACT_PARAM の BOX_EXP_RATE は読み飛ばされ、四面体・三角形の面を含む接触・埋め込みでは、これまで検出されなかった接触が検出されて結果が変わる。入力の修正は不要である。(→ 接触解析)
  • 接触探索で採用するマスター面: 最も近いマスター面を採用するようになり、稜線や角の近くで結果がわずかに変わる場合がある。入力の修正は不要である。(→ 接触解析)
  • 接触と判定する貫入深さの上限: 既定値を広げたため、1増分で深い貫入が生じる解析の結果が変わる。従来の上限に合わせるには、!CONTACT_PARAM の3番目のデータ行に DISTCLR_C2F の既定値1.0e-3を書いたうえで、4番目のデータ行で PENCLR_FREE と PENCLR_NOCHECK に0.5を指定する(4番目のデータ行は、3番目のデータ行があるときだけ読み込まれる)。(→ 接触解析)
  • MPCCG法の廃止: !SOLVER に MPCMETHOD=2 を指定した入力は、警告のうえ、反復法では消去法、直接法ではペナルティ法で実行される。警告を消すには、MPCMETHOD を1または3に書き換える。(→ 材料・要素・境界条件)
  • !SPRING の AMP と動解析の !SPRING: v5.9 では受け付けたうえで無視されていた、静解析の !SPRING の AMP と、陰解法の動解析の !SPRING が使われるようになった。v5.9 と同じ結果にするには、静解析では AMP を、陰解法の動解析では !SPRING を削除する。(→ 材料・要素・境界条件、動解析)
  • !SOLVER の3行目の3番目の値: 使われていなかった SIGMA が、SSOR前処理の緩和パラメータ OMEGA に変わった。ここに0より大きく2より小さい1.0以外の値を書いている入力は、1.0に直すと従来と同じ前処理になる。(→ 線形ソルバー・前処理)
  • 積層シェルと直交異方性シェル: 積層シェルの質量、直交異方性の剛性、繊維角度の単位の扱いを修正したため、これらを使う解析の結果が変わる。繊維角度をラジアンで入力していたモデルは、度に直す。(→ シェル・梁要素)
  • 直交異方性シェルの横せん断剛性: 横せん断剛性(G23・G31)に、せん断補正係数5/6が掛かるようになった。補正済みの値を入力していたモデルは、補正前の値に直す。(→ シェル・梁要素)
  • 移動硬化・複合硬化の背応力: 背応力がサブステップをまたいで累積されるように修正したため、移動硬化または複合硬化を使い、サブステップを2以上にした解析の結果が変わる。入力の修正は不要である。(→ 材料・要素・境界条件)

ビルド・実行環境に関するもの

  • METIS v4: METIS v4 には対応しなくなった。METIS 5系を使ってビルドする。(→ ビルド・CI・テスト)
  • Ubuntu 20.04向けのパッケージ: debパッケージの対象がUbuntu 22.04と24.04になり、Ubuntu 20.04向けの提供を終了した。Ubuntu 20.04では、ソースコードからビルドする。(→ ビルド・CI・テスト)

このほか、各カテゴリの「不具合修正」に挙げた修正により、該当する条件の解析では結果が変わる。v5.9 と結果を比べる場合は、利用している機能のカテゴリの不具合修正を確認されたい。

更新内容

凡例: # はissue、! はFrontISTR本体のマージリクエスト、doc ! はドキュメント(frontistr_documents)のマージリクエストを表す。【互換性】 は「互換性に関わる変更」に挙げた項目である。

接触解析

接触解析のコードを全面的に再構成し、面-面接触、接触面の平滑化、接触ダンピングを追加した。あわせて拡張Lagrange法と接触探索を見直しており、同じ入力でも結果が変わる場合がある。

  • 面-面(mortar)接触の追加: スレーブ面の積分点でギャップを評価する面-面接触を追加した。点-面接触に比べ、粗いメッシュでも接触力の分布が滑らかになる。!CONTACT に MORTAR=YES を指定すると有効になり、静解析、拡張Lagrange法(!CONTACT_ALGO, TYPE=ALAGRANGE)、有限すべり(INTERACTION=FSLID)、面グループ同士の接触ペア(!CONTACT PAIR, TYPE=SURF-SURF)、1次要素の面の組み合わせで使える(SMOOTHING=NAGATA とは併用できず、MPI並列では !PARTITION, CONTACT_OWNER=SLAVE が必要で、リスタートには対応していない)。面-面接触の設定として、!CONTACT の EXPANSION(近傍のマスター面の非ゼロ構造の事前確保)、!CONTACT_PARAM の DISTCLR_C2F(非接触に戻す判定のクリアランス)、!CONTACT_ALGO の EPS_FRIC_BAND(固着・すべり判定のヒステリシス)も追加した。(#268, !593, doc !80)
  • 接触面の平滑化(Nagataパッチ)の追加: マスター面を要素面ごとの2次曲面(Nagataパッチ)で補間し、要素の境界で法線の向きが不連続に変わることによる接触力の振動や収束性の悪化を緩和する。!CONTACT に SMOOTHING=NAGATA を指定すると有効になる。マスター面が三角形1次・四角形1次の要素面である接触に対応し、静解析ではLagrange乗数法と拡張Lagrange法、陰解法の動解析ではLagrange乗数法と組み合わせられる。(#747, #808, !538, !583, doc !83)
  • 接触ダンピングの追加: 接触と非接触が反復ごとに入れ替わって収束しない解析に対し、スレーブ節点がマスター面に接近した段階から法線方向の減衰力を与えて、接触状態の振動を抑える。!CONTACT の DAMP_ALPHA(減衰係数)と DAMP_GACT(減衰が働く距離)の両方に正の値を指定すると有効になる。(#748, #842, #843, !538, !614, !679, doc !68)
  • 並列接触のスレーブ所有方式の追加: 各スレーブ節点を所有する領域が接触ペアのマスター面全体を保持する領域分割を追加した。有限すべりでスレーブ節点がマスター面の領域境界をまたいでも、Lagrange乗数と摩擦の履歴が失われず、解が領域分割数に依存しなくなる。パーティショナーの !PARTITION に CONTACT_OWNER=SLAVE を指定する(省略時は従来の MASTER。TYPE=NODE-BASED のときだけ指定できる)。(#16, #104, !586, doc !51)
  • 接触ペアを含むメッシュの要素ベース分割の禁止 【互換性】: !CONTACT PAIR を含むメッシュを、パーティショナーの !PARTITION に TYPE=ELEMENT-BASED を指定して分割すると、エラーで停止するようにした。要素ベースの分割は接触ペアに対応しておらず、v5.9 では、領域境界をまたぐ接触が扱われないまま分割されていた。接触解析のメッシュは TYPE=NODE-BASED で分割する。(!593, doc !80)
  • 陽解法動解析の接触の拡張: 陽解法の動解析の接触がMPI並列で実行できるようになり、Coulomb摩擦にも対応した。これまで常に0だった接触法線力 CONTACT_NFORCE が出力されるようになり、摩擦力 CONTACT_FRICTION も出力される。(#138, #566, !617, !632)
  • 接触コードの再構成と拡張Lagrange法の刷新 【互換性】: 接触・埋め込みの処理を再構成し、拡張Lagrange法の実装を刷新した。拡張Lagrange法は、静解析でLagrange乗数法と同等の解が得られるようになり、MPI並列でも動作する。接触状態の探索1回あたりにLagrange乗数を更新する回数は、!CONTACT_ALGO の AUGITER(既定値は2)で指定できる。!CONTACT の NPENALTY・TPENALTY とデータ行の摩擦のペナルティ剛性は、拡張Lagrange法では、接触ペアごとの基準剛性(ログに refStiff として出力される)に掛ける係数として扱うようにした(既定値は、NPENALTY が5、摩擦のペナルティ剛性が0.5)。拡張Lagrange法の接触解析は、v5.9 と反復の経過および結果が変わる。(#85, #419, #522, !523, !669, doc !83)
  • 拡張Lagrange法の摩擦の接線剛性の整合化: 拡張Lagrange法の摩擦の接線剛性を、摩擦力の計算と整合するように改め、Newton反復の収束性を改善した。テスト例題では、Newton反復の合計回数が62回から34回、109回から76回などに減った。(#745, !537)
  • 摩擦錐の半径を現在の法線力に追従 【互換性】: 拡張Lagrange法の摩擦で、摩擦力の上限(摩擦錐の半径)を現在の法線力から決めるようにした(従来は直前に確定したLagrange乗数から決めており、条件によっては誤った解のまま正常終了することがあった)。!CONTACT_ALGO の FRICTION_CONE で切り替えられ、既定値は FOLLOW(追従)、従来の扱いは FROZEN である。FOLLOW では接線剛性が非対称になるため、摩擦のある拡張Lagrange法の接触解析では、CG法に代えてBiCGSTAB法などの非対称行列に対応した解法を指定する。(#859, #872, !615, !652, doc !79)
  • BOX_EXP_RATE の廃止 【互換性】: !CONTACT_PARAM の BOX_EXP_RATE による接触候補の絞り込みを廃止した。この絞り込みは、四面体・三角形のマスター面で正しい候補を取りこぼしており、接触や埋め込みが検出されない節点があった。BOX_EXP_RATE を書いた入力はそのまま読み込めるが値は使われず、四面体・三角形の面を含む接触・埋め込みの結果が変わる。(#715, !604, doc !64)
  • 接触探索で最近傍のマスター面を採用 【互換性】: 非接触の節点の接触探索で、判定を通った候補のうち最も近いマスター面を採用するようにした。従来は候補を調べた順で最初に判定を通った面を採用しており、稜線や角の近くでは、接触する面が探索の内部的な順序で決まっていた。稜線や角の近くの節点で接触する面が変わり、結果がわずかに変わる場合がある。(#832, !609)
  • 接触と判定する貫入深さの上限の指定 【互換性】: 接触探索が受け付ける貫入深さの上限(マスター面の代表長さに対する比)を、!CONTACT_PARAM の4番目のデータ行(省略可。3番目のデータ行があるときだけ読み込まれる)の PENCLR_FREE(非接触の節点の探索に使う。既定値は1.0)と PENCLR_NOCHECK(接触中の節点の追跡に使う。既定値は1e10)で指定できるようにした。従来は0.5に固定されており、1増分でこれより深く貫入した節点は、接触が検出されないままマスター面を突き抜けていた。既定値を広げたため、深い貫入が生じる解析では結果が変わる。(!660)
  • 接触ログの整理: スレーブ節点ごとに出力していた接触状態の変化のログをやめ、接触探索のたびに、状態が変化した数と接触中の節点数を1行(Contact change: の行)にまとめて出力するようにした。大規模モデルでログが膨大になる問題が解消する。(#753, #900, !549, !550, !667)
  • 不具合修正
    • !SOLUTION に NONLINEAR を指定しない陰解法の動解析の接触で、CONTACT_NFORCE と CONTACT_FRICTION が常に0で出力される不具合を修正した。(#778, !562)
    • 動解析の接触で、単位面積あたりの接触力 CONTACT_NTRACTION・CONTACT_FTRACTION が0で出力される不具合を修正した。(#805, !580)
    • 陰解法の動解析の摩擦接触で、摩擦力の履歴が次の増分に引き継がれず、固着状態でも摩擦力が過小になる不具合を修正した。(#777, !561)
    • 摩擦接触のリスタートで、摩擦力の履歴が復元されず、結果が連続実行と一致しない不具合を修正した。(#550, #792, !566)
    • 有限すべりで、スレーブ節点が隣のマスター面へ移ると、すべり状態が固着状態に戻る不具合を修正した。(#809, !584)
    • 摩擦接触を、接触自由度の消去(!SOLVER の CONTACT_ELIM=1)と直接法の組み合わせで解くと、非対称な行列が対称として分解され、線形解の精度が落ちる不具合を修正した。(#836, !610)
    • 拡張Lagrange法の接触解析で、カットバックの後に行列の構造が更新されず、発散する不具合を修正した。(#845, !635)

シェル・梁要素

シェル要素のMITC4とMITC3が有限回転を伴う大変形解析に対応し、ソリッド要素と混在するモデルを通常のシェル・梁要素の入力のまま解けるようになった。積層シェルと直交異方性シェルには、結果が変わる不具合修正がある。

  • MITC4シェル要素の有限回転対応: 四角形1次のシェル要素(741)が、非線形静解析で有限回転を伴う大変形を扱えるようになった。材料が弾性(!ELASTIC)の場合に使え、既定ではTotal Lagrange法、!ELASTIC に CAUCHY を指定するとUpdated Lagrange法で定式化される。Updated Lagrange法は直交異方性の材料には対応していない。(#762, #774, #788, #904, !552, !558, !565, !576, !671, doc !85)
  • MITC3シェル要素の有限回転対応: 三角形1次のシェル要素(731)も、MITC4と同じく、弾性材料の非線形静解析でTotal Lagrange法とUpdated Lagrange法による有限回転を扱えるようになった。自由度混在用のシェル要素(761・781)も、それぞれ731・741と同じ条件で有限回転を扱える。(#860, !672, doc !92)
  • 混在モデルでのシェル・梁要素の自動変換: ソリッド要素などの3自由度の要素と同じメッシュにあるシェル要素(731・741)と梁要素(611)を、読み込み時に自由度混在用の要素(761・781・641)へ自動的に変換するようにした。回転自由度用のダミー節点を利用者がメッシュに書く必要がなくなり、!BOUNDARY と !CLOAD の回転自由度(4〜6)の指定もダミー節点へ自動的に移される(!SPRING、!VELOCITY、!ACCELERATION、!FLOAD、!EQUATION による回転自由度の指定には対応しておらず、指定すると停止する)。あわせて、761・781を含むモデルを熱伝導解析で解けるようにした。(#59, #768, !665, doc !107)
  • Timoshenko梁の追加: 梁要素(611)で、せん断変形を考慮するTimoshenko梁を選べるようにした。!SECTION に FORM611=TIMOSHENKO を指定する(既定値は従来のBernoulli-Euler梁の EULER)。ソリッド要素と同じメッシュで641に変換された梁にも、この指定が適用される。(#77, !626, doc !85, doc !107)
  • 不具合修正
    • 梁要素(611)の応力、ひずみ、断面力がすべて0で出力される不具合を修正した。(#477, !557, doc !101)
    • 【互換性】 積層シェルと直交異方性シェルで、積層シェルの質量行列が層数倍になる、直交異方性の剛性の成分の一部が0のまま残る、繊維角度が度ではなくラジアンとして扱われる、という不具合を修正した。(#763, #764, #765, #766, !559)
    • 【互換性】 直交異方性シェルの横せん断剛性(G23・G31)に、せん断補正係数5/6が掛かっていない不具合を修正した(補正済みの値を入力していたモデルでは、補正が二重になる)。(#903, !670)
    • 6自由度のシェル要素の固有値解析で、固有モードが6成分の変位として出力され、可視化ソフトで変形を表示できない不具合を修正した(並進の DISPLACEMENT と回転の ROTATION に分けて出力する)。(#773, !559)
    • 板厚の異なる複数の !SECTION が同じ材料を参照すると、固有値解析の質量が誤った板厚で計算される不具合を修正した。(#760, !620)
    • シェル要素(761・781)とソリッド要素が混在するモデルで、静解析と固有値解析が異常終了する不具合を修正した。(#476, #725, !536)
    • 【互換性】 自由度混在用の要素(761・781、動解析では641も)を含むモデルに !TEMPERATURE で温度を与えると、これらの要素の熱荷重が計算されず、直前に処理した要素の荷重が加えられる不具合を修正した(これらの要素は熱荷重に対応していないため、停止するようにした)。(!665, doc !107)

動解析

動解析の時間増分の制御を静解析と統合し、マルチステップ、自動増分、カットバックが使えるようになった。材料ごとの減衰、整合質量行列、回転の境界条件も追加した。

  • 動解析のマルチステップ・自動増分・カットバック 【互換性】: 動解析で複数の !STEP を定義し、ステップごとに境界条件と荷重を切り替えられるようにした。非線形の陰解法では !STEP, INC_TYPE=AUTO による自動増分とカットバックが使え、リスタートもマルチステップの途中から再開できる。あわせて、!VELOCITY と !ACCELERATION に GRPID を追加し、陰解法で !SPRING を使えるようにした(v5.9 では、動解析の !SPRING は無視されていた)。!VERSION を書いた入力の !STEP は、静解析と同じくステップとして扱われる。SUBSTEPS(省略時は !DYNAMIC の増分数)に達してもステップ時間幅に届かなければ解析は打ち切られ、BOUNDARY・LOAD の行に挙げていないグループの境界条件と荷重は適用されない。!STEP を書かない入力は、従来どおり !DYNAMIC の指定で実行される。(#62, !544, doc !35, doc !41)
  • 動解析のモニタ出力の列の追加 【互換性】: モニタ節点の出力ファイル(dyna_disp_*.txt、dyna_velo_*.txt、dyna_acce_*.txt、dyna_force_*.txt、dyna_strain_*.txt、dyna_stress_*.txt)と dyna_energy.txt の先頭に、ステップ番号の列を追加した。各行は、ステップ番号、サブステップ番号、時刻の順に始まる。列の位置を決めてこれらのファイルを読んでいる後処理は、修正が必要である。(!544)
  • 材料ごとのRayleigh減衰: Rayleigh減衰の係数を材料ごとに指定できるようにした。!MATERIAL に続けて !DAMPING, TYPE=RAYLEIGH を書き、データ行に質量比例の係数と剛性比例の係数を与える。指定した材料では !DYNAMIC の係数に代えてこの値が使われ、陰解法の動解析でのみ有効である。(#66, #761, !504, !577, doc !36)
  • 整合質量行列への対応: 陰解法の時刻歴動解析で、整合質量行列を使えるようにした。!DYNAMIC の idx_mas に2を指定する(既定値は従来の集中質量の1)。トラス要素(301)、梁要素(611・641)、自由度混在用のシェル要素(761・781)は整合質量に対応しておらず、集中質量で計算される。(#70, !678, doc !95)
  • 動解析での回転速度の境界条件: 動解析で、回転中心まわりの角速度を速度境界条件として与えられるようにした。!VELOCITY に ROT_CENTER(回転中心の節点番号または節点グループ名)を指定する。(#804, !579, doc !55)
  • 陽解法動解析での回転変位への対応: 陽解法の動解析で、!BOUNDARY の ROT_CENTER による回転変位を与えられるようにした。!CLOAD の ROT_CENTER によるトルクには回帰テストを追加した。回転自由度を持つ梁・シェル要素の節点への回転変位とトルクには対応していない。(#452, !578, !618)
  • 不具合修正
    • 非線形の陰解法の動解析で、!EQUATION を含むモデルが収束しない不具合を修正した。(#601, !654)

固有値解析・周波数応答解析

周波数応答解析が、MPI並列での実行と、応力・ひずみの出力に対応した。固有値解析では、固有ベクトルの正規化を改め、収束判定の誤りと、MPCを含むモデルでの不具合を修正した。

  • Lanczos法のシフト量の指定: 固有値解析のLanczos法のシフト量を、!EIGEN のデータ行の4番目の値 SIGMA で指定できるようにした(既定値は従来と同じ0.01)。拘束条件のないモデルで収束しにくい場合に調整する。(#799, !570, !571, doc !48)
  • 周波数応答解析のMPI並列対応: 周波数応答解析を領域分割(MPI並列)で実行できるようにした。制御ファイルの書き方は変わらないが、固有値解析も、周波数応答解析と同じ分散メッシュを用いて同じプロセス数で実行しておく。(#834, !607, doc !105)
  • 周波数応答解析の応力・ひずみの出力 【互換性】: 周波数応答解析で、ひずみ、応力、主応力、Mises応力を出力できるようにした。出力する項目は静解析と同じく !OUTPUT_RES と !OUTPUT_VIS で指定し、複素応答の実部と虚部を、項目名の末尾に _real と _imag を付けた2組で出力する。変位・速度・加速度の項目名も静解析と同じ名前にそろえたため、結果ファイルの従来の小文字の項目名(displacement など)を読んでいる後処理は、修正が必要である。(#801, !608, doc !65)
  • 周波数応答解析の !FLOAD の面荷重の定義 【互換性】: !FLOAD に面グループ名を指定したときの荷重値を、単位面積あたりの面荷重と定めた。従来は面の実面積が考慮されず、同じ値でも要素の形状によって合力が変わっていた。面グループ名を指定した既存の入力は、同じ値でも応答が変わるため、荷重値の見直しが必要である(節点番号・節点グループ名を指定した場合は、従来どおり集中荷重である)。(#835, !611, doc !66)
  • 固有ベクトルの正規化の変更 【互換性】: 固有値解析で、固有ベクトルを、絶対値が最大の成分が+1になるように正規化するようにした。従来は符号付きの最大値で割っていたため、MPCを消去法で処理するモデルでは、固有ベクトルが極端に大きな値になることがあった。絶対値が最大の成分が負だったモードでは、固有ベクトルと刺激係数の符号と大きさが変わる(固有値と有効質量は変わらない)。(#861, !644, doc !110)
  • 不具合修正
    • 周波数応答解析の結果ファイルで、加速度の値が誤っている、値が単精度に切り詰められる、という不具合を修正した。(#833, !608)
    • 周波数応答解析で、!EIGENREAD の開始モードが1以外のとき、固有ベクトルが誤った位置に読み込まれる不具合を修正した。(!607)
    • 固有値解析のLanczos法の収束判定が、要求した低次のモードではないモードを見ており、反復回数が3〜12倍に増え、最大反復数に達すると0の固有値が警告なしに出力される不具合を修正した。(#775, #786, !568, !571, !600, doc !97)
    • MPCを消去法(!SOLVER の MPCMETHOD=3)で処理する固有値解析で、集中質量の縮約が剛性と対応しない、並列実行で配列の範囲外を参照する、という不具合を修正した。(#699, #742, !638, !644, doc !73)
    • 固有値解析のログに出力する残差が正しく計算されず、解の精度の指標にならない不具合を修正した(MPCを消去法で処理するモデルでは拘束力が残り、拘束のあるモデルでは、行列に加えていないシフト量が差し引かれていた)。(#862, !644)
    • 固有値解析で、線形ソルバーが収束しなかった解がそのまま使われ、固有値が0や異常に大きな値になる不具合を修正した(MPCをペナルティ法(MPCMETHOD=1)で処理するモデルなどで起きていた。相対残差が1.0e-2以上のときは停止し、それ未満のときは到達した残差を警告する)。(#865, !656, doc !88)

解析の制御と収束判定

Newton反復の収束判定を解析の種類によらず統一し、線形ソルバーの失敗を検出して時間増分の縮小につなげるようにした。終了コードは失敗の種別を表すようになった。

  • Newton反復の収束判定の統一 【互換性】: 静解析(接触なし・接触あり)と陰解法の動解析で異なっていたNewton反復の収束判定を、1つの判定式に統一した。残差は内力と慣性力・粘性力のうち大きいほうで割って評価し、並進、回転、Lagrange乗数を分けて判定する。接触のない3自由度の静解析の判定は変わらないが、接触解析と動解析では、同じ CONVERG の値でも反復回数と収束時の解が変わる。(#65, #96, !553, !659, doc !89)
  • 最大値による収束判定: 残差、変位修正量、Lagrange乗数の修正量について、L2ノルムに加えて、自由度成分の絶対値の最大値でも収束を判定できるようにした。判定量とノルムの組ごとに、判定に使うかどうかとしきい値を !CONVERG_PARAM で定義し、!STEP の CONVERGPARAM で参照する。最大値による判定を使うと、最大値が生じた節点番号と自由度番号がログに出力されるため、一部の節点だけに残る残差を見つけられる。(#885, !659, doc !89)
  • 線形ソルバーの失敗の検出 【互換性】: 静解析のNewton反復で、反復法の線形ソルバーが収束しなかった場合や計算が破綻した場合に、その解を使わず、Newton反復の失敗として扱うようにした。自動増分ではカットバックが行われ、失敗の理由(MatNotConv、MatDiverged など)がログに出力される。従来は収束していない解のまま計算を続けていたため、これまで最後まで進んでいた解析が、カットバックや打ち切りになる場合がある。(#813, #814, #816, !589, !590, doc !88)
  • !AMPLITUDE の評価の統一 【互換性】: 静解析と動解析で別々だった !AMPLITUDE の評価を統一した。!AMPLITUDE の VALUE=ABSOLUTE(振幅の値をそのまま荷重値として使う)と TIME=TOTAL TIME(解析開始からの時刻で評価する)が使えるようになった(VALUE=ABSOLUTE は、v5.9 では受け付けたうえで無視されていた)。あわせて、強制変位をサブステップにどう配分するかを !STEP の AMPLITUDE=RAMP|STEP で指定できるようにした。(#803, !578, !588, doc !84)
  • 終了コードの分類 【互換性】: fistr1 の終了コードが、失敗の種別を表すようになった。0は正常終了、1は使用法の誤り、2は入力の読み込みエラー、3はモデル定義のエラー、4はソルバー設定の不整合、10は非収束による打ち切り、20は内部エラーである。終了コードの値で処理を分けているスクリプトは、見直しが必要である。(#750, !623, doc !71)
  • 不具合修正
    • 制御ファイルで !AMPLITUDE を2行以上のデータ行で定義すると表が正しく読み込まれない不具合と、!ELEMENT_ACTIVATION, MODE=AMPLITUDE で要素の活性・非活性が振幅の表に従わない不具合を修正した。(#824, !602)
    • ステップの時間幅が終了時刻に比べて極端に小さいと、丸め誤差でステップの終了判定に失敗する不具合を修正した。(#805, !580)
    • 複数ステップの静解析で、前のステップから続けて有効な !CLOAD・!DLOAD の AMP が2ステップ目以降で無視され、荷重が公称値のまま与えられる不具合を修正した。(!578)

材料・要素・境界条件

U-P混合要素、要素ごとの材料方向の定義、増分変位に抵抗するばねを追加した。!ZERO の既定値の変更、MPCCG法の廃止、!SPRING の AMP の適用は、既存の入力に影響する。

  • U-P混合要素の追加: 六面体1次要素(361)に、非圧縮に近い材料の体積ロッキングを避けるU-P混合定式化を追加した。!SECTION に FORM361=UP を指定する。微小変形、Total Lagrange法、Updated Lagrange法に対応する。(#51, !551, doc !37)
  • !ORIENTATION の要素ごとの定義: 要素ごとに向きの異なる局所座標系を、各要素自身の節点から定義できるようにした。!ORIENTATION に DEFINITION=LOCAL_NODES を指定し、データ行に要素内の局所節点番号を3つ与える。ソリッド要素の異方性材料の材料方向に使え、定義した材料方向は出力項目 ORIENTATION で確認できる。(!582, doc !50)
  • !SPRING の INCREMENTAL と AMP 【互換性】: !SPRING に INCREMENTAL=YES を指定すると、増分の変位にだけ抵抗するばねになり、接触が成立する前の剛体運動を抑える用途などに使える(既定値の NO は、従来どおり全変位に抵抗する)。また、AMP で指定した !AMPLITUDE に従って、ばね定数を時間変化させられるようにした(v5.9 では、AMP は受け付けたうえで無視されていた)。(!581, doc !49, doc !50)
  • !ZERO 省略時の既定値の変更 【互換性】: メッシュファイルの !ZERO(絶対零度)を省略したときの既定値を、0.0から、セ氏での入力を前提とした-273.15に変更し、省略時には警告を出すようにした。輻射境界条件(!RADIATE、!SRADIATE)を含む熱伝導解析で、温度をケルビンで入力して !ZERO を省略していたモデルは、!ZERO に0.0を明記しないと結果が変わる。(#723, #744, !627, doc !69)
  • 細分したメッシュでの !CLOAD: メッシュを細分するモデルで !CLOAD を節点グループに与えると、エラーで停止していたのを、警告を出して解析を続けるようにした。細分で増えた節点のそれぞれに同じ荷重値が与えられるため、警告に示される節点数から合計の荷重を確認する。(#117, !655, doc !78)
  • MPCCG法の廃止 【互換性】: 多点拘束の処理方式のうち、MPCCG法(!SOLVER の MPCMETHOD=2)を廃止した。MPCMETHOD=2 を指定した入力は、警告を出したうえで、反復法では消去法(MPCMETHOD=3)、直接法ではペナルティ法(MPCMETHOD=1)で実行される。(#611, !637, doc !72)
  • 不具合修正
    • 【互換性】 von Mises塑性の移動硬化(HARDEN=KINEMATIC)と複合硬化(HARDEN=COMBINED)で、背応力がサブステップをまたいで累積されず、サブステップ数を増やすほど完全塑性に近い結果になる不具合を修正した。(!556)
    • Mohr-CoulombとDrucker-Pragerの非関連流れ則で生じる非対称な行列が、直接法で対称として分解される不具合を修正した。(#841, !613)
    • 線形静解析で熱荷重を与え、!STEP の SUBSTEPS を2以上にすると、サブステップが進むにつれて変位と応力が過大になる不具合を修正した。(#908, !673)
    • ソリッド要素の大変形解析で、出力用の対数ひずみを計算できない積分点があると、計算が停止する不具合を修正した。(!544)
    • !EQUATION と !BOUNDARY が同じ自由度に掛かると、境界条件の値が守られない不具合を修正した。(#697, #718, !646, doc !75)
    • MPCまたは接触と、梁要素(641)・シェル要素(761・781)を含むモデルで、AMG前処理を使うと異常終了する不具合を修正した。(#698, !651)

線形ソルバー・前処理

MUMPSやMLを使わない直接法ソルバーとAMG前処理を追加し、反復法と前処理の選択肢を広げた。

  • マルチフロンタル直接法の追加: 外部ライブラリ(MUMPS、Intel MKL)に依存しないマルチフロンタル直接法ソルバーを追加した。!SOLVER に METHOD=DIRECTmf を指定する。OpenMPのスレッド並列とMPI並列に対応し、摩擦接触や非関連流れ則で生じる非対称な行列も解ける(Lagrange乗数法の接触解析をMPI並列で解く場合は、CONTACT_ELIM=1 の指定が必要である)。オプション行(4行目・5行目)で、因子のBLR圧縮(LAPACKを有効にしたビルドで使える)と反復改良を指定できる。(#910, !674, doc !91, doc !106)
  • 反復法の追加: 反復法の解法に、CR法(共役残差法)、PipeCG法、GroppCG法を追加した。!SOLVER の METHOD に CR、PipeCG、GroppCG を指定する。PipeCG法とGroppCG法は、大規模並列での内積の通信待ちを減らすCG法の変種である。(#139, #684, !486, !621, !641, doc !8, doc !81)
  • CG法の打ち切り条件の緩和: CG法が、前処理行列が正定値でないことを検出して反復を打ち切る条件を、通算3回の検出から、連続10回の検出に改めた。前処理が一時的に不定になるだけの問題で、反復が打ち切られにくくなる。(!676)
  • 残差の再計算の周期の指定: CG法、BiCGSTAB法、GPBiCG法、PipeCG法が、漸化式で更新している残差を定義どおりに計算し直す周期を、!SOLVER の RECOMPUTE_RESIDUAL で指定できるようにした。正の整数は周期、0または省略は解法ごとの従来の値、負の値は周期的な再計算をしないことを表す。(#61, !633, doc !70)
  • SA-AMG前処理の追加: MLを使わない、組み込みのSmoothed Aggregation型のAMG前処理を追加した。!SOLVER に PRECOND=22 を指定する(LAPACKを有効にしたビルドで使える)。オプション行の並びは PRECOND=5(ML)と共通である。(#708, #895, !573, !662, doc !59, doc !106)
  • SSOR前処理の緩和パラメータの追加 【互換性】: SSOR前処理に緩和パラメータを導入し、!SOLVER の3行目の3番目の値 OMEGA で指定できるようにした(既定値の1.0で従来のSSOR前処理と一致する)。この位置は従来、使われていない SIGMA であり、ここに0より大きく2より小さい1.0以外の値を書いていた入力は、SSOR前処理による収束の経過が変わる。あわせて、行列ベクトル積とSSOR前処理の実装を全自由度でそろえ、1自由度の行列ベクトル積をスレッド並列化した。(#615, #616, #617, !653, doc !76)
  • ILU前処理のスレッド並列化: フィルインを含むILU前処理(ILU(0)、ILU(1)、ILU(2))を、3自由度の問題でOpenMPによりスレッド並列化した。(#846, !636)
  • 不具合修正
    • CG法以外の反復法(BiCGSTAB法、GMRES法、GPBiCG法など)で USEJAD=YES が無視され、6自由度では異常終了する不具合を修正した。(#820, !594)

GPU・HPC環境への対応

線形ソルバーの反復法と一部の前処理が、OpenACCによるNVIDIA GPUでの計算に対応した。富岳(A64FX)向けのチューニングも、ビルドオプションで組み込めるようになった。

  • OpenACCによるGPU対応: 線形ソルバーの反復法と一部の前処理の計算を、OpenACCによりNVIDIA GPUで実行できるようにした(要素の計算や行列の組み立てなど、線形ソルバー以外の処理はCPUで実行される)。反復法のうちCR法は、GPUビルドに対応していない。NVIDIA HPC SDKのコンパイラでビルドするとGPU向けのバイナリになり、cmake に -DNVHPC_NO_ACC=ON を指定するとOpenACCを使わないCPU向けのバイナリになる。METIS、MUMPS、Intel MKLなどのオプションライブラリは、GPUに対応していない。(#701, #755, #770, #771, !543, !545, !548, !554, doc !38, doc !82, doc !106)
  • アーキテクチャ別チューニングの統合: 別のブランチで保守していたアーキテクチャ別のチューニングを、ビルドオプションで選ぶ形で取り込んだ。cmake に -DARCH=FX64 を指定すると、富岳(A64FX)向けの実装(3自由度の行列ベクトル積とSSOR前処理のCSR形式化、節点の重みを考慮した領域分割)が組み込まれる。行列の格納形式は、!SOLVER の MATRIXFORMAT で解析ごとに選べる(BSR と JAD はすべてのビルドで、CSR は -DARCH=FX64 でビルドした場合に3自由度の問題で使える。-DARCH=SXAT と MATRIXFORMAT=SBLAS は名前だけが定義されており、対応する実装は含まれていない)。(!596, !597, !676, doc !93, doc !109)
  • パーティショナーの64bit整数化の完了: v5.9 で着手したパーティショナーの64bit整数化を、要素ベースの分割とグラフ処理にも広げ、未対応の箇所をなくした。(#818, !591)
  • 不具合修正
    • 要素節点のインデックス(64bit整数)を32bit整数として扱う箇所が、可視化、メッシュの細分、連成などの処理に残っており、大規模なメッシュでデータが壊れるおそれがある不具合を修正した。(#741, #751, !535, !541)
    • 富士通コンパイラ(A64FX)で、未定義の値の参照や、並列領域の内側からの出力により、テストが実行時エラーになる不具合を修正した。(#567, #896, #897, !664)

入出力・プリポスト

メッシュ入力のキーワード名、一部の出力の定義、リスタートファイルの形式を変更した。要素チェックを整備し、制御ファイルに書く名前の大文字・小文字の扱いを統一した。

  • メッシュ入力の TYPE=INP への改名 【互換性】: 商標を含む表現をコードから除くため、inp形式のメッシュを読むときの指定を、TYPE=ABAQUS から TYPE=INP に改めた。対象は、全体制御ファイルの !MESH と、メッシュファイルの !CONNECTIVITY である。あわせて、inp形式のメッシュで ALL という名前のセットを定義したときに付く別名を、ABAQUS_ESET_ALL・ABAQUS_NSET_ALL から INP_ESET_ALL・INP_NSET_ALL に改めた。TYPE=ABAQUS は受け付けられず、別名も変わったため、入力の書き換えが必要である。(#757, !555, doc !39)
  • 要素チェックの整備 【互換性】: 要素チェック(!SOLUTION, TYPE=ELEMCHECK)で、節点グループ、要素グループ、面グループへの所属を結果ファイルと可視化ファイルに出力し、可視化ソフトでグループの定義を確認できるようにした。MPI並列での集計も正しく行われる。出力ファイル名には _precheck が付くようになり(例: model_precheck.res.0.0)、通常の解析の出力と重ならない。(#749, !539, !546, doc !86)
  • ELEMACT の出力値の反転 【互換性】: 要素の活性・非活性を表す出力項目 ELEMACT の値を、活性の要素で1、非活性の要素で0に改めた(従来は逆であった)。ELEMACT の値で非活性の要素を非表示にするなどの後処理は、条件を反転させる必要がある。(#787, #791, !567, doc !43, doc !44, doc !87)
  • 制御ファイルの名前の大文字・小文字の統一: 解析制御ファイルに書いたグループ名、振幅名、項目名などの名前を、読み込み時に大文字にそろえるようにした。!STEP のデータ行の項目名や、!OUTPUT_RES・!OUTPUT_VIS の項目名と GROUP を小文字で書くと、エラーにならないまま無視されていた問題が解消する。ファイル名は、大文字・小文字をそのまま保つ。(#828, #840, !628)
  • 平面要素の変形表示への対応 【互換性】: 平面要素のモデルの VTK・BIN_VTK 形式の可視化出力で、変位 DISPLACEMENT を3成分(3番目は0)で出力するようにし、可視化ソフトで変形を表示できるようにした。変位を2成分として読んでいる後処理は、修正が必要である。(#670, !560)
  • リスタートファイルの形式の変更 【互換性】: 有限回転を扱うシェル要素の状態を保存するため、構造解析のリスタートファイルの形式を改め、!RESTART の VERSION で形式を指定できるようにした(既定値は新しい形式の6)。v5.9 で書き出した静解析のリスタートファイルは、VERSION=5 を指定すると読み込める(有限回転を扱うシェル要素を含むモデルを除く)。動解析のリスタートファイルは、マルチステップへの対応で形式が変わったため、v5.9 のものからは再開できない。熱伝導解析のリスタートファイルは変わっていない。(#62, !544, !575, doc !96)
  • 不具合修正
    • 領域分割して実行すると、領域境界の節点の応力とひずみ(Mises応力と主応力を含む)が逐次実行と一致しない不具合を修正した(領域ごとに出力する VTK・BIN_VTK 形式の可視化で、領域境界に沿った縞として現れていた)。(#819, !592)
    • !EQUATION の数が !SECTION の数より多いモデルで、可視化出力の MATERIAL_ID と ORIENTATION が配列の範囲外を参照して異常終了する不具合を修正した。(#869, !650)
    • 要素チェックで、積層シェルの板厚の検査が、正常な入力に対して警告を出す不具合を修正した。(#600, !539)
    • エラーメッセージの誤記を修正した。(!564, !606)

開発者向けAPI・コード整備

メッシュと結果データを外部のプログラムから扱うためのAPIを整備し、グローバル変数の除去や未使用コードの削除などのコード整備を進めた。

  • メッシュと結果データを外部から扱うAPIの整備: メッシュ構造体 hecmwST_local_mesh に節点、要素、セクション、グループを追加するAPIと、結果構造体 hecmwST_result_data から大域データ、節点データ、要素データを取り出すAPIを、hecmw1/src/api に追加した。あわせて、全体制御ファイル hecmw_ctrl.dat なしで初期化する経路と、メッシュファイル名を直接指定して読み込む経路を用意し、固有値解析と熱伝導解析の結果データの生成を出力処理から独立させた。メッシュの読み込みから結果の取得までを、外部のプログラムから制御できるようにするための準備である。(#817, #825, #831, #837, #839, !595, !601, !630, !631, !640, !658)
  • グローバル変数の除去と処理の整理: グローバル変数のように使われていた fstrPR を m_fstr モジュールから除き、引数の fstrPARAM を参照するように改めた。fstr_setup_util のうちHEC-MWだけに依存する処理をHEC-MW側へ移し、名前を比較する hecmw_streqr が引数を書き換えないようにした。シェル要素の実装は、ソリッド要素と同じ構成にそろえた(約2,000行の削減)。(#826, #838, #909, !575, !598, !612, !675)
  • 使われていないコードの削除: 行列構造体の未使用のメンバ hecMAT%ALU と、呼ばれていない関数を削除した。(#325, #743, !540, !622, !645)
  • 堅牢性の向上: 静的解析とコードレビューで見つかった、バッファオーバーフロー、NULLポインタの参照、二重解放、リソースの解放漏れなどを修正した。sprintf などの文字列操作は、バッファの大きさを指定する snprintf に置き換えた。(#740, #754, !530, !547)

ビルド・CI・テスト

METIS v4 とUbuntu 20.04への対応を終了し、Ubuntu 26.04に対応した。CIでは、性能低下の自動検出と、直接法ソルバーのテストの拡充を行った。

  • METIS v4 への対応の終了 【互換性】: METIS v4 向けの処理を削除し、METIS 5系だけに対応するようにした。METIS v4 を使ってビルドしていた環境は、METIS 5系に切り替える必要がある。(#571, !625, doc !82)
  • Ubuntu 26.04への対応: CIにUbuntu 26.04を追加し、ビルドとテストを行うようにした。Ubuntu 26.04のOpen MPI 5系で、テストの実行時に起きる問題にも対処した。(#790, !542)
  • リリースパッケージの生成方法の変更 【互換性】: リリースパッケージ(Windows版とdebパッケージ)を、タグの作成をきっかけに専用のプロジェクトで自動的に生成する方式に改めた。debパッケージの対象はUbuntu 22.04と24.04であり、サポートが終了したUbuntu 20.04向けのパッケージの提供を終了した。(#658, #800, !585)
  • 逐次版MUMPSとCluster PARDISO: MPIを使わないビルドで逐次版のMUMPSを、MPIビルドでIntel MKLのCluster PARDISOを使えるように、ビルド設定と配布・CI用のコンテナを整備し、CIでテストするようにした。MPIビルドでは、CMakeがMPIの実装を判定して、Cluster PARDISO用のBLACSを選ぶ(MPIのプログラムを実行できない環境では、-DMPI_DETERMINE_LIBRARY_VERSION=OFF と -DMKLBLACS_LIBRARY で指定する)。(#867, #887, !647, !661, doc !98)
  • ベンチマークによる性能低下の検出: チュートリアルの例題の実行時間を、比較対象のリビジョンと比べるベンチマークを追加した。make -C build benchmark で実行でき、CIでも速度の低下を自動的に検出する。(#152, !624)
  • リポジトリの整理: 使われていなかった FrontISTR_manual サブモジュールとマニュアル向けのファイルを削除し、doc/ の中を用途ごと(doc/doxygen/、doc/images/ など)に分けた。(#811, #812, !587, !616)
  • メモリ検査の手順の追加: valgrindによるメモリ検査で、Open MPIなどに由来する報告を抑止するsuppressionファイルと、検査の手順を、doc/valgrind/ に追加した。(#871, !657)
  • Makefileによるビルドの整備: setup.sh が生成するMakefileによるビルドを、ソースファイルの追加・移動・削除に追従させ、最後まで通るようにした。あわせて、neu2fstr のビルド時間を短縮した。(#868, !605, !649)
  • テストの追加と修正: NAFEMSの接触パッチテスト(CGS-4)を追加した。固有値解析のテストでは、参照解との比較が無効になっていた問題を直し、反復法の収束に左右されていたテスト(exK)を直接法に改めた。そのほか、摩擦係数が0になっていた接触のテストと、収束判定値が厳しすぎた熱伝導解析のテストを見直した。(#796, #797, #798, #902, #922, !569, !599, !603, !668, !680)
  • 不具合修正
    • Trilinos(ML)を有効にしたMPIビルドで、選択したBLAS/LAPACK(Intel MKLなど)ではなく、参照実装がリンクされる不具合を修正した。(#926, !682)
    • ばねの固有値解析のチュートリアル(15_eigen_spring)の物性値の誤りを修正した。(#277, !629, doc !74)

ドキュメント

ドキュメントを新しいサイトへ移し、機能リファレンスと理論マニュアルを新設するなど、全体を再構成した。

  • ドキュメントサイトの移行: 公式ドキュメントを https://frontistr-commons.gitlab.io/frontistr_documents/ に移し、READMEの案内を更新した。リリースのタグごとに、その版のドキュメントを固定して公開する。マージリクエストの画面からは、変更後のページをプレビューできるようにした。(#793, !572, doc !25, doc !45, doc !62, doc !111)
  • リリースノートの追加: ドキュメントにリリースノートのセクションを新設し、v6.0 と過去の版(v4.2c〜v5.9)のリリースノートを載せた。v6.0 からは、版ごとのHTML・PDFを作らず、このセクションで公開する。(doc !100)
  • 機能リファレンスと理論マニュアルの新設: 解析機能ごとに使い方と適用範囲を説明する機能リファレンスと、定式化を説明する理論マニュアルを新設した。キーワードリファレンスは構成と見出しを整理し、文書の書式をCIで検査するようにした。(doc !26, doc !27, doc !34)
  • 導入・インストール・ビルドのガイドの追加: FrontISTRの概要、バイナリのインストール、ソースコードからのビルド(依存ライブラリのビルドを含む)、GPU向けのビルド、富岳(A64FX)向けのビルドのガイドを追加した。ソースコードからのビルドには、NetCDFを含めたビルドの手順、MPIビルドでIntel MKLを用いる場合のBLACSの指定、ARCH の指定、LAPACKを有効にしたビルドが必要な機能も加えた。(#752, doc !38, doc !40, doc !82, doc !93, doc !98, doc !102, doc !106, doc !109)
  • 事例集の追加: 実機規模のモデルを紹介する事例集を新設し、金型モデルの事例と、その解析データの配布リンクを掲載した。(#830, doc !67)
  • 出力例の更新: 例題集と実行ガイドに載せている出力例を、v6.0 で実行した出力に差し替えた。(doc !110)
  • 既存の記述の拡充と修正: 旧マニュアルに寄せられていた指摘(!HEAT の BETA、BEAM_NQM の出力など)を反映し、誤記、文字化け、リンク切れを修正した。プリポストと実行環境の案内も更新した。あわせて、機能一覧のソルバーと前処理、出力項目、可視化の出力形式、周波数応答解析の手順の説明を v6.0 の実装に合わせ、!EIGEN の既定値の記載の誤りを直し、何も出力しない !WRITE の FEMAP の記載を削除した。非線形静解析に続けて固有値解析を行う解析(TYPE=STATICEIGEN)の結果ファイルの説明も加えた。(doc !28, doc !30, doc !31, doc !33, doc !46, doc !47, doc !52, doc !53, doc !54, doc !56, doc !57, doc !58, doc !63, doc !77, doc !90, doc !94, doc !97, doc !101, doc !103, doc !104, doc !105, doc !108)
  • CONTRIBUTING.md の刷新: FrontISTR本体の CONTRIBUTING.md を、現在の開発の進め方(マージリクエスト、ctest によるテスト、リポジトリとドキュメントの所在)に合わせて書き直した。(#739, !563)

謝辞

本リリースに対して以下のコントリビューターから貢献をいただいた。ここに感謝を申し上げる。

  • inagaki: 全カテゴリ
  • Kanato Kono: 全カテゴリ
  • Kazuya Goto: 接触解析、シェル・梁要素、動解析、固有値解析・周波数応答解析、材料・要素・境界条件、線形ソルバー・前処理、GPU・HPC環境への対応、ビルド・CI・テスト
  • morita: 接触解析、シェル・梁要素、動解析、固有値解析・周波数応答解析、解析の制御と収束判定、材料・要素・境界条件、線形ソルバー・前処理、開発者向けAPI・コード整備、ビルド・CI・テスト
  • TOKUNAGA Ken-ichi: シェル・梁要素、動解析、解析の制御と収束判定、材料・要素・境界条件、入出力・プリポスト、開発者向けAPI・コード整備、ビルド・CI・テスト、ドキュメント
  • Hiroaki Amakawa: シェル・梁要素、固有値解析・周波数応答解析、材料・要素・境界条件、GPU・HPC環境への対応、ビルド・CI・テスト、ドキュメント
  • Toru Ando: 接触解析、動解析、解析の制御と収束判定、材料・要素・境界条件、入出力・プリポスト、ドキュメント
  • Yu IHARA: 接触解析、ビルド・CI・テスト、ドキュメント
  • S.Nishioka: シェル・梁要素
  • hayashi masae: 材料・要素・境界条件、線形ソルバー・前処理、GPU・HPC環境への対応、ドキュメント
  • Michio Ogawa: GPU・HPC環境への対応、ビルド・CI・テスト
  • hillyuan: 動解析、入出力・プリポスト
  • TOMOYUKI YARA: 接触解析
  • baichenhan: 接触解析
  • HighlandValley: 線形ソルバー・前処理
  • liang: 材料・要素・境界条件
  • Risa Saito: 接触解析