東京大学本郷キャンパス 工学部8号館 85講義室 (地下1階)

関連ソフトウェア：
FrontISTRベース高度溶接シミュレータのプリポスト

2018年7月9日
第44回FrontISTR研究会＜FrontISTR関連プロジェクトの研究成果紹介＞

ポスト「京」重点課題⑧サブ課題Eのホームページ http://www.multi.k.u-tokyo.ac.jp/PostK-8E/

2

本研究開発は，文部科学省ポスト「京」重点課題⑧「近未来型ものづくりを先導する革新的設計・製造プロセスの開発」の一環として実施したものです31. プリポストの概要
2. ユーザ向けの紹介
3. ディベロッパー向けの紹介

4サブ課題E 新材料に対応した高度成形・溶接シミュレータの研究開発

 溶接による収縮を高精度に予測するためには、母材の接触状態を詳細に計算する必要がある
 数m規模の解析領域に存在する数mmの溶融部を数μmで解像することが可能なソルバーを開発する
数千億～数兆要素 (メッシュの粗密あり、溶融部に詳細メッシュ)

溶融部(溶接金属)

25mm

超大規模・高精度連成解析ソルバー

熱影響部

遷移部

 アセンブリ／接触問題の大規模解析が可能な並列反復法(従来の溶接シミュレータは直接法ベースであったが，直接法では解けない，十分な並列性能を発揮できない規模を対象とする)- 「京」：1日で十億要素の静解析が限界である- ポスト「京」：大型機械フレーム全体 (自動車や重機械など) に存在する溶融部での接触状態を詳細に解析可能にする 大規模双方向連成解析 (熱伝導・弾塑性変形)(材料非線形性，幾何学的非線形性，接触非線形性が大きい問題である)- 「京」：1日で数億要素規模の片方向連成解析でも不可能である- ポスト「京」：支配方程式系を一括して，双方向連成解析を可能にする プレス成形時のスプリングバックの影響を考慮した溶接解析(他のソフトウェアでは，プレス成形時のスプリングバックを考慮していない)- 従来解析：プレス成形時のスプリングバックによる残留応力を無視- 本解析：プレス成形／溶接の一連の工程を解析可能なプリポストによって，プレス成形のスプリングバックによる残留応力を溶接の初期条件に考慮する5

プリポストの研究開発 (1/2)
溶接条件の設定達成済みの成果
 開発環境Electronを使用してウェブブラウザで動作する
プリポストの開発- Windows、Mac、Linuxなどの様々なOSでプリポストが動作- Electronでは、プログラマブルなブラウザが提供されるため、ブラウザ上で動作するデスクトップアプリをHTML、JavaScript、CSSで比較的容易に開発可能

 数千万自由度の問題に対して動作確認済み
 溶接解析の機能 (溶接線，溶接条件の設定機能など)を拡張し、動作検証を実施

ソルバー
呼び出し

- マウスのクリックによる溶接線の設定機能の実装

溶接解析の結果表示- 溶接条件の設定機能 (電流・電圧，入熱効率，溶接トーチの移動速度，溶接源の幅，溶接開始時間の入力)の実装- ソルバー呼び出し機能の実装

プリポストのプロトタイププログラムの完成

6

プリポストの研究開発 (2/2)
プリポストのプロトタイププログラムの特徴- 要素タイプの追加が容易- イベント (解析制御ファイル設定) の追加が容易- 多言語へ対応が容易※ 作業手順をマニュアルとして整備済み

平成30年度達成⽬標
 溶接解析の機能 (複数パスの設定機能など) を拡張し、動作検証の実施
 プレス成形解析機能 (補助的なツール) からのデータ渡しについて検討

最終達成⽬標 プレス成形のスプリングバックによる残留応力を溶接の初期条件として渡す機能を実装し、動作検証の実施

7

1. プリポストの概要
2. ユーザ向けの紹介
3. ディベロッパー向けの紹介

8

No.
1

領域名
Navigation領域

2Property領域

345673D領域
Message領域
Menu領域
Title領域
Footer領域

説明
３D領域に表示されるモデルの構造を表示する。
構造的操作の対象となるオブジェクト等の選定を支援する。
３D領域に表示されるモデルの属性を表示する。
属性の状態やその変更操作を支援する。
モデルを３D表示する。
各種操作等の履歴を表示する。
コマンドのメニューを表示する。
タイトルを表示する。
システムの状態を表示する。（Ready）
9

操作手順 (プリ)
座標と要素-節点コネクティビティの情報が入ったメッシュファイル (.msh) を準備

10

操作手順 (ソルバー)
FrontISTR実行ファイル (fistr1) が置かれたフォルダのパスを設定

メッシュファイル，解析制御ファイル，全体制御ファイルを生成し，FrontISTRプログラムを実行

11

操作手順 (ポスト)使用したメッシュファイル (.msh) と計算結果ファイル (.res) を準備

nodeの場合(グラデーション)

elementの場合 12(クライテリア)

試験片の溶接シミュレーションのデモ
1. 熱伝導解析
2. 弾塑性解析

13読み込むファイル
No.

操作

1

メニュー
ファイル

2

ファイル

ファイル種類Item
メッシュファイルを開く
結果ファイルを開く

説明

メッシュデータ
メッシュデータ
結果データ

メッシュ→結果の順でファイルを指定する。

メッシュ読み込み機能にて対応する要素タイプ
No.
1234

要素種類
ソリッド要素ソリッド要素ソリッド要素ソリッド要素

要素番号
341
342
361
362

対応Version
1.1.X以降
1.1.X以降
1.0.X以降
1.1.X以降

説明
4節点四面体一次要素
10節点四面体二次要素
8節点六面体一次要素
20節点六面体二次要素※ ソルバーの呼び出しでは，メッシュファイル，解析制御ファイル，全体制御ファイルを読み込む
14

No.
1

ファイル種類
解析制御データ

拡張子cnt対応Version
1.1.X以降対応レコード
溶接線
!WELD_LINE
熱伝導解析用制御データ
!SFILM!SRADIATE



!STEP


!HEAT
変位境界条件!BOUNDARY
静解析用制御データ

2

全体制御データ
hecmw_ctrl.dat

dat

1.1.X以降

!MATERIAL!EXPANSION_COEFF

!REFTEMP!TEMPERATURE

!STEP
メッシュファイルのリンク
!MESH, NAME=fstrMSH

!MESH, NAME=mesh
解析制御ファイルのリンク
!CONTROL,NAME=fstrCNT
その他のリンク!RESTART,NAME=restart_out

!RESULT,NAME=fstrRES

!RESULT,NAME=result

!RESULT,NAME=vis_out
15

No.
3

ファイル種類
メッシュデータ

拡張子msh

対応Version
1.0.X

1.1.X以降対応レコード要素361
!NODE!ELEMENT

要素341、342、361、362


!NODE



!ELEMENT

要素・面・節点グループ
!EGROUP!SGROUP!NGROUP

材料
!MATERIAL!SECTION

境界条件

4

結果データ

res(.*(.*))

1.0.X
1.1.X以降

!ZERO

!INITIAL CONDITION

要素361
DISPLACEMENT（絶対値）
要素341、342、361、362
DISPLACEMENT（変位、絶対値）
NodalSTRESS（節点応力）
NodalMISES（Mises応力）
NodalSTRAIN（節点ひずみ）
ElementalSTRESS（要素応力）
ElementalMISES （ 要 素 Mises 応 力 ）ElementalSTRAIN（要素ひずみ）16

1. プリポストの概要
2. ユーザ向けの紹介
3. ディベロッパー向けの紹介

17• 開発アプリケーションがウェブブラウザ上で動作• Windows／Mac OS X／Linux上で動作する
クロスプラットホームアプリケーションを開発可能• HTML，JavaScript，CSSのWeb技術を用いて開発できるフレームワーク

開発環境の構築手順
1. Node.jsのインストール
2. Electronのインストール
3. アプリケーションのデバッグ実行(アプリケーションのパッケージ作成)
18

ウェブサイト（https://nodejs.org/ja/）からNode.jsをダウンロード

Windows OSから前述のウェブサイトにアクセスするとインストーラがダウンロード可能19

1. Windows OSの場合，スタートメニューから[Node.js]→[Node.js command prompt]を選択し，コマンドプロンプトを起動
2. Electronのインストールには次のコマンドを実行> npm -g install electron-prebuilt※ npm (node package manager) : Node.jsのパッケージ管理ツール

20

1. Windows OSの場合，コマンドプロンプト上から，ソースコード一式の「fistrprepost-project」フォルダの中にある，「fistrprepost」フォルダに移動
2. 「electron」コマンドを実行> cd <path_to_project>¥fistrprepost-project¥fistrprepost(ソースコードのフォルダへ移動）> electron .
(引数に"."を指定)

21

Rendererプロセス

Browserプロセス

プロセス間通信

Renderer側：クライアントプログラム関連
ブラウザの中の描画処理：ブラウザ表示用のHTML (main.html) 及びそのActionを記述するJS (index.js)
Browser側：サーバープログラム関連
サーバーが行うGUIのパーツ処理のJS(controller.js，floader.js，graph3d.js，model.js，view.js)

22

第1階層

fistrprepost

ディレクトリ
第3階層

第2階層

js

etc

wel

node_modules
css
ext

第4階層

winvm

ファイル
build.js
ConvexGeometry.js
jquery.exresize.0.1.0.js
jquery-1.7.1.min.js
OrbitControls.js
Projector.js
three.min.js
floader.js
graph3d.js
model.js
view.jss.cnt.template

説明
ビルド用JS

jQueryカメラ制御ライブラリ
JavaScript 3D library
ファイル読み込み処理
３Dグラフ描画処理
モデル処理
ブラウザ表示処理
解析制御データ雛形ファイル（sa）

t.cnt.template

解析制御データ雛形ファイル（ta）

s.hecmw_ctrl.dat.template

全体制御データ雛形ファイル（sa）

t.hecmw_ctrl.dat.template

全体制御データ雛形ファイル（ta）

controller.js
electron-tree-viewstyle.css
libgcc_s_seh-1.dll
libstdc++-6.dll
libwinpthread-1.dll
msh2data.exe
index.js
main.html
welding ico

コントローラelectron-tree-view一式
デザイン（スタイルシート）
要素圧縮プログラム依存ライブラリ

要素圧縮プログラム本体
ブラウザ連携処理
ブラウザ表示HTMLプログラムアイコン

23

model.js• 本システムのモデルの動作が集約• Modelという基底クラス (モデルを抽象化した動作を定義している) が用意
本システムに新たなモデル (要素タイプ) を追加する手順
1. Model基底クラスを派生させた具象クラスを定義する(「Model抽象化クラス抽象関数」を新たなモデル用にオーバライドする)
2. プログラムイベント「create-model」要求時にそのインスタンスを返す
24

part
Renderer part
Browser part

送受
送信
受信方向
Ri⇒Bc
Ri⇒Bc

送信
受信

Bc⇒Bx
Bx⇒Bx

送信

Bx⇒Bx

実装例
mw.webContents.send('action', {message: "close", arg: null});
ipcRenderer.on('action',function(event, action) {dispachEevent(action.message, action.arg);});
event.emit(message, args);
event.on('init-resource',function(arg) {resource = arg.res;});dispachEvent('set-cursor', "wait");

Ri：ブラウザ連携処理 (index.js)
Bc：コントローラ (controller.js)
Bx：機能モジュール (floader.js,graph3d.js, model.js, view.js)

mw：BrowserWindow
event：機能モジュールのEventEmitter
25

No.
12

名称
ブラウザ表示HTML
言語リソースファイル
main_(*).html
resource_(*).js

ディレクトリfistrprepost
fistrprepost

localejpjp

説明U/Iデザイン格納
言語リソース格納(*)：ロケール (言語名)

別言語への変更• 別の言語依存リソースを用意 (ファイル名の一部を別のロケールで置き換えたもの) を準備する• 別のロケールをプログラム実行時の引数として指定する> simwelding.exe --lang=(*)(--lang=(*)なしならば，(*)はjpとなる)

26