- 追加された行はこの色です。
- 削除された行はこの色です。
* SALOME [#g0290f71]
この資料は公開されている英文資料を柴田が学術目的のために非公式に和訳しているものです
SALOME:オープンソースの数値解析シミュレーションのための統合化プラットホーム
公式サイト:http://salome-platform.org
開発:CEA・フランス原子力庁、EDF・フランス電力公社、OpenCASCADE・オープンソース3次元モデリングツール
** SALOME.5 [#s2c3e929]
これまでの10年ほどで、コンピュータのハードウエアやソフトウエアの性能向上は、原子力利用技術の分野におけるシミュレーションソフトウエアに対して、著しく大きな変化をもたらしてきました。
新しいコンピュータの解析能力は、以下に示す画期的なシミュレーションを可能にしてきました。~
より現実に(これまでの簡略化した2次元モデルではなく、複雑な3次元形状をそのまま扱う)~
より複雑に(複合した物理現象やモデル規模のオーダーが異なる場合も考慮できるように)~
より有効に(未確認な現象の関連などを分析する)
2001年より、これらの展開を効果的に促進し活用するために、CEA:フランス原子力庁とEDF:フランス電力公社は、SALOMEと名付けたソフトウエアプラットホーム(解析システムの基盤)を開発してきました。
このSALOMEは、様々な複雑なCAEアプリケーションを統合化するためのツールとして活用されます。
このツールは、CADモジュール、モデルのメッシュ生成、入力ファイルの定義、解析プログラム連携、結果の可視化、などの機能を実現するプログラムとして構築されています。
このプラットホームは、コミュニティでの共同開発を念頭に置いて構築が進められています。そのため、LGPLライセンスに従うことでこれを実現しています。
SALOMEが提供するソフトウエアのモジュールやサービスにより、様々なCAEアプリケーションを可能にしています。
このことは、学術的な解析コードを容易に利用できるようにし、利用者の環境に適合させることにもつながっています。
SALOMEは、EURIWAREとOpenCASCADEの支援を受けながら、とても積極的な開発チームの10年にわたる努力の積み重ねにより開発が続けられています。SALOMEは、CEAとEDFにおける原子力の学術研究や工学的開発に関する以下の領域において活用されています。:原子炉物理学、構造解析学、熱流体力学、核燃料物理学、材料科学、地質学や放射性廃棄物シミュレーション、電磁気学や放射線防御
*** 開発状況 [#n017fe43]
プロジェクト開始:2001年 開発チーム:20名・これまでの合計で200人年 解析検証:3700種のテスト バグの対応:年間で500件を集約し確認 ソフトウエア規模:120万行(9割がC++・1割がPython) 配布計画:2年毎にメジャーバージョン公開・半年毎に修正版の公開
*** 利用者数 [#be316b8f]
EDF・フランス電力公社とCEA・フランス原子力庁:300名利用 外部:4000名利用 ウエブからのダウンロード:年間に12000件
*** SALOMEの重要な特徴 [#t7e9e8b3]
・CAEの標準的な手順に対応した学術的なソフトウエアを開発する(データ変換の形式、技術的な選択)~
・CAEによる形状データと解析ソフトウエアとの間を統合する(CAD=CAE連携)~
・最新の様々な学術的解析ソフトウエアを統合するためのモジュール構造を提供する~
・各種の解析プログラム間の連携可能性を高める~
・標準的で効率的な利用者が使いやすいユーザーインターフェイスを提供する(それにより研究遂行での遅延や手間を低減できる)~
・CEAやEDFでの研究開発や学術研究においてその品質が検証されている~
・共同開発を推進するためにオープンソースの戦略を採用しながら高度な機能を持つアプリケーションを構築している
*** CEAとDEFにおける全体的な目的 [#k449617b]
CEAやEDFにおける多くのプロジェクトが、現在、SALOMEを活用しています。それは以下の目的を実現するために、各種のツールを統合して統合的なシステムを構築するためです。
・物理現象の数値解析を目的とした統合的な開発環境を提供する~
・民間での原子力活用における設計品質を維持する要求に対応する~
・解析システムにおいて過去の蓄積と最先端の成果を連携させる(開発手順やシステム連携)~
・高性能計算機システムや可視化技術の成果を応用する
*** 主要機能と技術的選択 [#d00e5173]
■ユーザーインターフェイス
SALOMEのプラットホームは、解析に関する全ての作業をカバーするような作業環境を提供します。具体的には、CADで定義される形状データの作成から結果の可視化までに対応しており、これを実現するために、共通データ形式や管理ツールや連携ツールなどにより各種のプログラムが統合されています。
・SALOMEの利用にあたっては、2種類の方法が組み込まれ提供されています。~
3次元表示を用いてグラフィカルな利用方法(Qt4,VTKなどを利用)~
キーボードによるコマンド入力による利用方法(Python言語を利用)
SALOMEでは、両方の利用方法では同じ解析機能が利用でき、この切り替えのために簡単な方法が提供されています。
■各種機能の統合と解析ツールの連携
・数値解析のプラットホームとして、SALOMEは非常に多機能で、改良を容易にするためにモジュール化された構成となっています。これより、PythonやC++言語で開発された解析ツールやモジュールを追加することで、容易に機能拡張が可能です。~
・解析プログラムについては、PythonやC++言語やFortranで作られたものであれば、これまで活用されたプログラムの蓄積から最新技術で開発されたものまで、統合することが可能です。~
・各種のプログラムの機能を統合化するために、連携用ツールが利用されています。
■解析手順の管理
・プラットホームの管理機能を用いることで、利用者は、並列処理クラスタを活用して連携はしてはいるものの利用手順が複雑な解析プログラムの実行を、容易に設定し管理することができます。この機能は、対話的に進めることもバッチジョブとして利用することも出来ます。
■メッシュと領域データ管理
・SALOMEでは、解析モデルのメッシュや領域の情報を内部データとして記述するために、HDF5と言う形式を用いています。ここでは、並列処理用の分割したメッシュを考慮することもできます。~
・各種のシミュレーションで利用するための様々なメッシュ情報などを管理するために、変換や補間の機能を持っています。
*** ダウンロード [#yc4ff8f9]
SALOMEは、http://www.salome-platform.org より、いくつかのLinux用とWindows用のソフトウエアをダウンロードすることができます。このサイトでは、利用手順書や質疑応答などが提供されており、また利用者用解説文書も提供しています。
*** サービスとサポート [#ff76accd]
EURIWAREとOpenCASCADEでは、技術的なサポートやトレーニングを含めたSALOMEに関する全般的な利用者支援のサービスを提供しています。さらにサポートサービスは、大学などの学術的組織や大小の企業において、特別に必要とする内容に限定したものも提供されています。具体的には、以下のようなものです。
・ヘルプデスクへの質問と回答:技術的問題点に関する専門家の支援を受けることができます。これはサポートの契約期間において、電子メールや電話を持ちいて質疑応答を行います。~
・技術的な支援:複雑な問題を解決するためには、専門的な技術を持つ担当者による支援を受けることができます。~
・専門家による導入支援:SALOMEの専門技術者が作成した利用者の手引きが提供されます。~
・カスタマイズ:SALOMEの機能を拡張するモジュールや解析プログラムの統合などを支援します。~
・修正情報の提供:開発チームに対して、直接に不具合の修正を依頼したり、修正版のシステムを入手することができます。
より詳しい内容は、ウエブを参考にしてください。
さらにSALOMEのトレーニング部門では、定期的に講習会を実施しています。ここでは、初心者がSALOMEの利用技術を自主的に修得するための支援を行い、さらに複雑な検討を行うための高度な利用技術を開発しています。~
他には、CAE解析技術のトレーニング部門では、プラットホームのSALOMEに、構造解析ソルバーCode_Asterや流体解析ソルバーCode_Saturneを統合する支援を行っています。この成果は、SALOMEの連携チームに対して提供されています。~
今後の講習会や解説資料については、ウエブを参照してください。
*** SALOMEを取り巻く連携 [#a80b22e1]
SALOMEは、高機能なCADデータ変換ツールや商用のメッシュ生成ツールなどと連携して利用することができます。
これらのツールの提供会社など
・CAE Linux:工学解析用Linuxシステム~
・DISTENE:商用の高機能で可用性の高いメッシュ生成アルゴリズムであるBL-SURFやTetmesh-GHS3Dを提供~
・CS:SALOMEのソフトウエアの一部を開発~
・DATAKIT:データ変換技術を提供~
・DELTACAD:SALOMEにおけるCode_Aster統合、Code_AsterはEDFの開発した構造解析用の数値解析ソフトウエアです。~
・INCKA:SALOMEにおけるCode_Satrune統合、Code_SaturnはEDFの開発した汎用の流体解析ソフトウエアです。~
・LOGILAB:SALOMEのソフトウエアの一部を開発
*** SALOME 6 とさらなる展開 [#mb3c8d83]
現在のSALOMEの開発チームは、今後の展開として、以下の項目を目標としています。
・並列可視化(Paraviewとの連携)~
・六面体メッシュ生成機能の改良~
・メッシュや領域情報のデータ形式(MED)の機能の提供~
・高性能計算機HPCとの連携機能の拡張~
・既存の解析コードとの連携ツールの提供
*** 謝辞 [#qa320299]
最近のSALOMEの並列解析機能の開発においては、IOLS, EHPOC, OpenHPCなどのプロジェクトにおけるクラスターを活用しており、System@ticの支援を受けています。
** 形状生成:Geometry module [#hce8d571]
SALOMEの形状生成モジュールでは、シミュレーションで用いる3次元形状を定義しています。ここでは、複雑な3次元形状に対して生成・編集・転用・修正などを可能にする豊富な機能を提供しています。
このモジュールは、Open CASCADE で開発された形状処理システムにより機能を実現しており、形状の表面を定義し(BRep)、次のメッシュ生成で必要となるモデルの形状特性の情報を含んでいます。
大きく分けて、形状生成モジュールには2つの目的があります。~
まずはこのツールを使って独自に形状モデルを生成すること、
つぎは既存のCADシステムで事前に設計された形状をSALOMEに取り込んで編集することです。
一般的な形状は、円柱・球・円環などの幾何学的形状や自由曲面などを組み合わせて、空間内に配置されます。より複雑な形状を構成するためには、これらの基本的な形状に対して、「cut:切り取り,fuse:結合,intersect:交差」などの形状操作を利用します。形状の端部に対しては、「fillet:連続化,chamfer:面取り」などの操作が適用できます。
SALOMEは、BREPやACISフォーマットによる、IGESやSTEPによる形状データを読み込むことができます。さらに強力な形状修正機能も備えているため、過剰に複雑なモデルを単純化したり、流用したモデルの形状定義が不十分な場合に修復することも可能です。
形状生成モジュールが持つ機能は、マウスによる直接的な画面操作により容易に利用できます。またこの機能は、SALOMEが持つPythonスクリプト実行機能により、プログラムとして自動的に利用できます。
さらにSALOMEは、利用者の操作手順を、コマンドスクリプトとして記録することができます。この機能は、複雑な形状を自動的に生成するときに非常に有用ですし、SALOMEの形状生成モジュールを利用者が使いこなすための補助になります。
*** 主要機能 [#oc60522e]
■CADモデルの読み込み
・標準的には次のCADデータのフォーマットに対応します。:ACIS, BREP, STEP, IGES~
・他のフォーマットは商用の変換ツールを用いて必要に応じて次の形式に対応します。:CATIA V4 / Pro Engineer / Soli dWorks / Soli dEdge / Parasolid / Nx
■形状モデルの生成と修正
・基本要素:点、線、円、楕円、弧、曲線、矢印、面~
・自由作図:2次元作図、3次元作図~
・立体要素:箱、円柱、球、円錐、円環、直方体、円盤~
・形状要素:エッジ、ワイヤ、フェイス、シェル、ソリッド、複合体や部分形状への分割形状~
・変換:移動、回転、反転、拡大~
・形状演算:fuse, common, cut~
・拡張操作:押出、回転、面取り、連続化、パイプ~
・要素の複合~
■形状の補正
・不要面の整理、不完全な輪郭の調整、要素内部の線分の削除、欠けた面の除去、面の結合、面の貼付け、自由境界の確認、自由表面の確認、面の法線の変更、点や線の追加
■形状の計測
・点の座標軸、形状の中心、断面の慣性、包含する領域、最短の距離、許容誤差、角度
■CAEモデルの書き出し
・対応するCADフォーマット:ACIS, BREP, STEP, IFES~
・外部CADデータの読み書き機能の統合
■可視化
・表示と削除、配色の変更、透明度の設定、表示モード(面表示・線表示)、等測線の本数、など
** メッシュ:Meshing module [#ed373e1a]
このモジュールでは、形状生成モジュールで定義された3次元形状を用いて、4面体や6面体などの有限要素に変換します。
メッシュモジュールは、1次元・2次元・3次元のメッシュデータを生成し編集するために用いられ、この処理には様々なオープンソースで公開されたメッシュ生成手法を用いています。
さらにSALOMEは、外部で開発されたより高度なメッシュ生成手法との連携機能も持っています。
サブメッシュの概念は、形状モデルの特徴を考慮するために活用されます。それぞれのサブメッシュに対して、異なったメッシュ生成条件を設定できます。
メッシュの最適化のために、パターンマッピング手法が利用されています。メッシュの品質を確認し、局所的な修正や調整を行うために、有用なツールが提供されています。
メッシュの変換操作としては、移動、回転、対称、押出、回転などがあり、これらを用いて複雑なメッシュや複合したメッシュを生成することができます。
メッシュは、グラフィック表示に対する操作で容易にグループ化することができ、これより初期の境界条件の設定を容易にしています。
またメッシュのフィルター機能は、効率的にグループを作るために有用です。
メッシュのデータは、様々なフォーマットに従って外部出力することができて、このフォーマットとしては、例えば MED, DAT, UNV などの既存の数値解析ソフトウエア用の形式に対応しています。
全てのメッシュ生成のコマンドは、自動処理のために、Pythonのプログラムを用いて利用することもできます。これによって、複雑な形状生成に対応し、またメッシュ生成における繰り返しの手動作業を整理して単純化することも可能です。
様々な機能を持つSALOMEは、改良されたメッシュ生成手法を、プラグイン形式で容易に導入することができます。
*** 主要機能 [#nbe47e43]
■オープンソースメッシュ生成手法
・ワイヤー離散化~
・三角形分割(MEFISTO 2D アルゴリズム)~
・四角形分割(マッピング)~
・六面体分割(i-j-k アルゴリズム)~
・四面体分割(Netgen)~
・3次元押出
■対応する商用メッシュ生成手法
・Distene BR-SURF~
・Distene Tetmesh-GHS3D~
・Distene Hexotic
■メッシュ修正機能
・節点や要素の追加や修正~
・対角線の交換~
・四角形の三角形への分割~
・三角形の四角形への結合~
・変形:移動、回転、対称、縫合、結合、拡大縮小~
・パターン投影
■外部とのメッシュデータの入力と出力
・対応フォーマット:MED, UNV, DAT
■メッシュのグループ化の管理と可視化
・メッシュの表示/非表示、サブメッシュ:可視化状態、陰影表示、線分表示、収縮省略、表示特性の変更:色、線幅、省略程度、透明度
■メッシュデータの制御と管理
・計測:端部の長さ、面積、体積、確認:不要節点、端部の線、面、境界、ゆがみ:極端な角度、角度のねじれ、2次元や3次元での形状のアスペクト比、要素の最小角度など
** 可視化:Post-processor module [#z1b78e12]
CAEのソルバーより得られた数値解析の結果は、SALOMEの可視化モジュールに読み込まれ、分析された結果が可視化されます。分布する値が変化する様子を可視化するために、様々な機能が利用されています。可視化では、スカラーの結果とベクトルの結果の両方が対象とされ、様々な表現形式が用いられます。(スカラーマップ、等高値曲面、切断面、切断線、3次元プロット、ベクトル表示、変形図、流れ線、ガウス点(要素内の積分点)
隠れた領域内部での詳細な分析を進めるためには、様々な方法で解析データの抜出し作業が必要となります。
非線形で非定常の状態では、動画モジュールににおいて異なった速度で表現することができます。
画像や動画は、より簡単に外部データとして表現すべきであり、解析結果の可視化や容易に容易に利用されます。
*** 主要機能 [#h407ebcb]
■領域に関するメッシュデータの外部との入力と出力:MED、表形式データの入力と出力
・対応フォーマット:特定形式のアスキーファイル、CSV
■数値解析結果の3次元でのグラフィック表示
・メッシュ~
・スカラーデータ領域:スカラーマップ、等高値面、切断面、切断線、3次元プロット、ガウス点(要素内の積分点)~
・ベクトルデータ領域:スカラーマップ、等高値面、切断面、切断線、3次元プロット、
ベクトル表示、変形図、流れ線、ガウス点(要素内の積分点)
■数値解析結果の2次元でのグラフィック表示
解析結果データの一覧から作られた2次元のグラフ表示
■解析結果の動画表示:時間スケールに沿った表現
** データ処理と関連ツール:Mesh and field data model and associated tools [#oa7f125e]
SALOMEにおいては、メッシュや領域情報の表現に関して MED データモデルが、重要な役割を担っています。この MED フォーマットは、EDFの研究開発でのオープンソースプロジェクトとして、SALOEMより先に取り組まれてきた成果に基づいています。
このデータ形式は、メッシュ情報やサブメッシュや領域データ表現などの持つ特徴を、共通化したものとして定義されています。
さらにこの共通化では、標準化された HDF5 形式を基本にして、MED-file のライブラリが提供されています。
SALOMEのメッシュ生成や可視化のモジュールでは、データの入力や出力に MED 形式を用いることを提案しています。
そのためSALOMEのプログラムにおいては、プリポストの処理では入力や出力のファイル形式として、MED-fileが推奨されています。
MED ファイル形式は、非常に汎用性があるので、様々な解析プログラムに対応したメッシュ形式として利用することができます。
このメッシュは、構造格子でも非構造格子でも利用でき、線形要素も2次要素も含めることができます。
要素内の節点の結合は、節点の順序による表現と逆の順序による表現に対応しています。
領域の情報は、ガウス点を含むことができ、メッシュのサブゾーンに対して延長しています。そしてここでの値としては、整数も実数を利用できます。
MED ライブラリは、以前に利用された旧式の MED ファイルに対しても完全な互換性を持っています。
これによって、異なったバージョンのSALOMEを利用する場合にも、変換などの手間をかける必要がありません。
*** 提供されるツール [#vf7d974c]
MEDファイルライブラリを利用するうえで、SALOME では、MEDメモリライブラリを提供しており、これはメッシュや領域情報に対して計算処理を実行するために、MED形式のファイル内容をメモリに展開することを可能にしています。
この計算処理では、メッシュやサブゾーンに対して領域情報操作や論理演算操作などが行われ、異なったメッシュ形式の間を変換することも可能になっています。
これは解析プログラムの統合において、重要な役割をもつ機能であり、あるプログラムで利用されたデータを別のプログラムに対して引き渡すとき、若干の調整が必要な場合もありますが、ほとんどの場合に直接に行うことが可能です。
■MEDメモリライブラリに関連して提供されるツール
・メッシュ形式で表現されたデータを異なったプログラムで利用するために、並列処理で変換することができます。~
・MEDSPLITTERは、METISやSCOTCHグラフライブラリを基盤にしたツールであり、並列プログラムで利用するための領域分割されたメッシュを生成できます。~
・RENUMBERは、メッシュの数値計算の実行において、計算効率を改善するために要素の再構成を可能にするものです。~
・メッシュや領域情報は、VTK, UNV, SAUV などのメッシュ形式に変換できます。
** ジョブの監視と管理:Supervision & job manager module [#wa37bdf2]
CAEに関する様々な研究や開発の課題において、多くの領域に関連するパラメトリックなシミュレーションの必要性が増してきています。
代表的な2つの例としては、流体構造連携解析や熱応力構造解析などがあります。
それぞれのシミュレーションツールは、各問題領域においてとても高度化複雑化しており、そのため複合領域のシミュレーションにおいては、完成された各領域でもプログラムを統合することが必要になります。
YACSは、複合解析システムの実現において、複合問題のシミュレーションを管理するためのツールです。
複合解析システムでは、SALOMEや計算モジュールやPythonスクリプトなど、それぞれの計算を連結し統合させます。
*** YACSの基本機能 [#p7112e8d]
YACSモジュールは、実行しようとする計算手順を構築し編集する機能をもっています。
■このモジュールの基本機能
・解析手順を定義する~
・xml形式のファイルに解析手順を入力や出力する~
・解析操作のカタログを読み込む~
・解析手順の編集~
計算操作の追加や削除、操作の連結、操作の設定変更、編集の取消~
・解析手順の表現~
計算操作の自動配置、計算操作の連結の再構成、解析の圧縮と展開~
・解析手順の実行管理~
解析手順の実行、実行の中断と再開、手順ごとの実行と停止設定、実行状態の保存と読込~
・計算操作の様々な種類~
サービス操作(連結サービス)、Python操作(記述または連結)、連続する反復操作(for,while)、並列する反復操作(パラメータ解析)、切替操作(switch,case)、最適化操作(最適化アルゴリズム)
*** YACSと連携させるためのSALOMEの構築方法 [#g88ece13]
YACSを用いて解析プログラムを連携するためには、それらをSALOEMのコンポーネントとして変換することが必要です。
この操作は、SALOMEの基本設計などについて十分な知識が必要とされます。しかしほとんどの場合に、支援ツールを用いて行うことができます。
・hxx2salomeツールは、C++解析プログラムを大きく拡張する編集を自動的に行うもので、includeファイルのから変更します。~
・YACSGENツールは、選択された統合インターフェイスの記述形式に従って、SALOMEで必要となるプログラムの修正を自動的に生成することができます。ここでは、CALCIUM形式の統合を利用しているFortranやC++やPythonなどの解析プログラムを対象としています)
*** ジョブ管理モジュール [#pa272632]
ジョブ管理モジュールでは、様々な形式の計算機システムを利用して下記の解析ジョブを、登録し実行し管理しています。
*** ジョブ管理の基本機能 [#z92eba93]
■ジョブ管理モジュールでは以下の3形式のジョブを定義する
・利用者作成スクリプト~
・SALOME内部で実行するPhtyonスクリプト~
・YACSの処理手順
■ジョブ管理モジュールでは以下の2つの構成のコンピュータを利用できる
・直接操作するコンピュータ(rsh,ssh)~
・PBS, LSF, SGE などのジョブ管理システムを利用するクラスタ
[[SALOME-Meca紹介]]