Salome-meca メッシュでのエラー

1,129 views
Skip to first unread message

Akira Yamamoto

unread,
Apr 6, 2015, 7:37:52 AM4/6/15
to code_aster-...@googlegroups.com
Yamamotoです。いつも質問させて頂いてお世話になってます。

Salome-mecaで、CADで作成した3Dモデルのstpファイルをメッシュしようとすると、
”Stop meshing since boundary mesh is overlapping”のエラーが出ます。

3Dモデルのstpファイルに問題が有るのだと思いますが、
Salome上でモデルの修正など問題を回避できる方法はありますでしょうか。

GeometryモジュールにRepairという、それらしきメニューはあるのですが、
使い方が良く分からず・・・

添付は、メッシュのエラー画面とメッシュするとエラーの出るstpファイルです。

御教授頂ければ幸いです。
メッシュエラー画面.png
Test.stp

Yoshikatsu Akiyama

unread,
Apr 6, 2015, 9:13:30 AM4/6/15
to code_aster-...@googlegroups.com
Yamamoto様

akiyamaと申します。
添付の通りメッシュ作成できました。
この形状であればAlgorithmを
3D:Tetrahedron(Netgen)
2D:Triangle(Mefisto)
1D:Wire Discretisation
として作成してもメッシュ品質としては問題なさそうです。
ただ、この形状は3つのbox形状が重なり合っているだけでメッシュを見ていただければわかると思いますが、box同士は不連続となりますので解析を行うにはそれなりに設定が必要です。
どのような履歴で作成されたかわかりませんが、一つのパーツを意図しているようでしたら
Operations>Boolean>Fuse
などをしないといけないかと思います。

ちなみにメッシュアルゴリズムをNetgen 1D-2D-3Dとするとご提示のエラーでボリュームメッシュが作成できませんでした。

私はRepair機能を使ったことがありませんのでこの点については他の方からの助言を期待しますが、Repair機能でCADを修正するよりはエラーの起こらないCADを作成したほうがよろしいかと思います。

ご参考になれば幸いです。





2015/04/06 Akira Yamamoto <rebuil...@gmail.com>:
> --
> このメールは Google グループのグループ「Salome-Meca & Code_Aster +
> Code_Saturne」の登録者に送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> code_aster-salome...@googlegroups.com にメールを送信してください。
> その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。
>
test.JPG

kengo

unread,
Apr 6, 2015, 11:32:07 AM4/6/15
to code_aster-...@googlegroups.com
 
Fuse ではなく Compoud でまとめて、モデル同士の面が接している
今回のような形状では、Netgen 1D-2D-3D は相性が悪いようです。
(以前のバージョンでは問題なかったように思いますが)

この場合は、3D タブは、Tetrahedron (Netgen)、2D タブは、Netgen (1D-2D)を選んで、
2D タブで、Hypothesis のパラメータを設定しましょう。
(3Dタブで Hypothesis のパラメータを設定しても問題ないと思います。)

実質的には上記の方法で、Netgen 1D-2D-3D で設定しているのと同じことです。


以上

Akira Yamamoto

unread,
Apr 6, 2015, 10:16:35 PM4/6/15
to code_aster-...@googlegroups.com
Akiyama様、kengo様

ご助言頂き、ありがとうございます。

Akiyama様とkengo様の両方のメッシュアルゴリズムの設定で、
問題なく、メッシュ分割する事が出来ました。

最初に添付したstpモデルは、
CADで、3つのBOXを個別にパーツモデルとして作成し、後でアッセンブリしたものです。

もし、本モデルを、1つのPartitionで分割されたモデルの状態にするには、
CAD側でブーリアン演算で結合させて、1つのパーツモデルにしてから、
Geometryモジュールに読み込み、Partition分割するしかないでしょうか。

CADのアッセンブリモデルのパーツとパーツの境界線をPartitionのラインに
置き換える効率の良い方法は有りますでしょうか。
また、節点数が多い時のメッシュ分割の速度を上げるのに、何か方法は有りますでしょうか。
(メッシュ分割時は、仮想マシンで、CPUを複数個に設定していれば、
 最初から並列計算してくれているのでしょうか)

追加の質問ですみませんが、ご助言頂けば幸いです。


杉本健

unread,
Apr 6, 2015, 11:23:29 PM4/6/15
to code_aster-...@googlegroups.com
Yamamoto様

杉本です。
お世話になります。

横やりで失礼いたします。

下記の件、
いろいろ方法があると思いますので、
私の方法が最良かわかりませんが、
私の場合は、
CAD側から位置関係を保って各部品ごとに
STEPで出力し、
それからSalome側ですべてをインポートしてから
Fuse>>Partitionと設定しますかね。

もちろん、
CADでアセンブリしたものをSTEPで出力して、
それを取り込んでから
各ボリュームのGroup分け>>Fuse>>Partition
でも問題ないし、手間もほとんど変わらないと思います。
(こちらの方が早いかもしれません。)

もっとよい方法があるかもしれません。

CAD側でパーティション分けが出来ないのかという話ですが、
こちらは現状難しいと思います。
理由は中間ファイル側で対応していないからです。

まず、CAD側自体で実現可能かどうかは、
CAD側の仕様にも依存します。

例えばSolidworksのようなCADのカーネルがParasolid系だと
そもそもパーティションという概念はないはずです。
(ボディ分割という概念がありますが、
   Parasorid形式やSTEP形式と同様、
   それぞれのボディに閉じた面が必要なため、
   境界面はどうしても2重に貼られてしまいます。)

一方、I-DEASのようなパーティションという概念のある
CADも存在します。
しかし、こちらも中間ファイル側で対応したものがないので、
例えばParasolidやSTEPに出力したときに
境界面は2重に面が貼られるように変換されてしまいます。
IGESだとひょっとすると実現できるかもしれませんが、
こちらは出力時と入力時の設定を合わせる必要があり、
これが非常に難しいので、現実的ではありません。

I-DEASの後継であるNXでは、
カーネルがParasolidに変更されたので、
解析モデルは別形式のジオメトリに変換したものを持つと
きいたことがあります。

以上より、
Salome側でパーティションを切るのが
現実的(というよりこれしかない?)だと思います。

手前味噌ですが、
私が作成した資料があります。
前半部分にて、複数材料のモデル作成方法について書いております。

外部アプリケーションでパーティション分けができる
いい方法があったらすみません。。。

メッシュ分割の高速化については、
他の方にお任せいたします。。。

全然関係ないですが、
ボリュームをグループ分けしたときに、
グループの名前が付けたはずの名前とは別の名前に。。。
CAD側でパーツ名として付けた名前でしょうか。
業界がバレそうですね。笑

以上、横やり&長文失礼いたしました。


2015年4月7日火曜日、Akira Yamamoto<rebuil...@gmail.com>さんは書きました:
--
このメールは Google グループのグループ「Salome-Meca & Code_Aster + Code_Saturne」に登録しているユーザーに送られています。

kengo

unread,
Apr 7, 2015, 10:30:42 AM4/7/15
to code_aster-...@googlegroups.com

回答します。



もし、本モデルを、1つのPartitionで分割されたモデルの状態にするには、
CAD側でブーリアン演算で結合させて、1つのパーツモデルにしてから、
Geometryモジュールに読み込み、Partition分割するしかないでしょうか。

それぞれのパーツを Salome で読み込んで、ブーリアンで結合させて、Partition 分割しても良いと思います。



CADのアッセンブリモデルのパーツとパーツの境界線をPartitionのラインに
置き換える効率の良い方法は有りますでしょうか。

Partition の Tool Objects にそれぞれの元パーツを指定すれば、新たな形状を作る必要はなく、
元パーツに沿って、Partition が作成されます。


また、節点数が多い時のメッシュ分割の速度を上げるのに、何か方法は有りますでしょうか。
(メッシュ分割時は、仮想マシンで、CPUを複数個に設定していれば、
 最初から並列計算してくれているのでしょうか)

Salome のメッシャーは、並列計算はできません。今後対応する予定はあるようですが。
後は速いアルゴリズムを選ぶしかありません。四面体であれば、Netgen が安定していて一番速いです。

Assign a set of hypothesis でセットされるアルゴリズムは、2Dの Triangle(Mefisto) の品質が悪いため、
時間がかかる上に、メッシュが切れないことも頻繁に起こります。

それに四面体であれば節点数が多くても、メッシュ作成に莫大な時間がかかることはありません。
それ以前に、メッシュ作成後の画面描画速度と、実際の解析段階でのメモリ消費がネックになるので、
長時間かけてメッシュを作るという状況にはならないと思います。


以上
 

Akira Yamamoto

unread,
Apr 8, 2015, 5:09:00 PM4/8/15
to code_aster-...@googlegroups.com
杉本様、kengo様

御回答ありがとうございます。

Parition分割は、Salome-mecaで行う以外に方法は無いのですね。
しかし、今まで、自分で面のGoemetyを作成してからPartition分割をしていたのですが、
Kengo様の「Partition の Tool Objects にそれぞれの元パーツを指定する方法」を使えば、手早く出来そうです。
杉本様の資料に有ります元パーツの面をGroup化して、カット面として使用する方法も使えそうです。

メッシュ分割は並列計算が出来ないのですね。

以前、線形定常熱伝導解析で100万節点メッシュを切って解析していた時に、
計算自体は時間がかからないのに、メッシュ分割に大変時間がかかっていました。
(メッシュ分割1時間程度、計算:数分、だったと思います)
メッシュの描画は、Salome上では重くてとても動かせませんでしたが、
ParaVisでは、問題なく動かす事が出来ていました。

メッシュ分割が少しでも早くなればと思っていたのですが、
適切なアルゴリズムを選択して、メッシュ速度が遅くならないようにしたいと思います。

皆様のご回答、大変勉強になりました。
有難うございます。




杉本健

unread,
Apr 8, 2015, 10:26:06 PM4/8/15
to code_aster-...@googlegroups.com
Yamamoto様

杉本です。
お世話になります。

下記の件、
補足させてください。

Partitionのツールオブジェクトは、
別に面でなくてもよいのです。
ボリュームグループでも分割してれます。

しかも、
Partitionするときに、
グループの継承を行うスイッチ
(高度なオプション内、
  「グループとサブオブジェクトを取得します」)
をONにしておけば、
Partitionで新しくできるオブジェクトの中に
ツールオブジェクトとして指定したボリュームグループが
自動的に作成され、
そのままcommファイルにおける
材料のグループ指定等に利用できます。

まぁ、
私も経験が浅いので、
このオプションを使用したときの安定性はわからないのですが。。。笑
その辺、何か情報があれば、他の方にコメントをいただくとして。。。

Fuseの結合対象オブジェクトも
Partitionのツールオブジェクトも
複数グループ選択可能なので、
例えば以下のような操作ですね。

1. アセンブリ状態で取り込み
  (境界面は2重に面が存在だと思います。)

2. 各部品をボリュームでグループ作成

3. Fuseで対象オブジェクトとして
    2.で作成したグループをまとめて選択指定

4. Partitionで対象オブジェクトとして
    3.で作成したFuseのオブジェクトを指定し、
    ツールオブジェクトとして
    2.で作成したボリュームグループをまとめて選択。
    このときに
  「グループとサブオブジェクトを取得します」を
    ONにして実行

といった感じです。

よろしければ一度お試しください。

にしても、100万節点ですか。
メッシュ作成、メモリ消費が激しそうなんですよね。
1時間かかっているところをみると、
スワップに入っていたのかもしれませんよ。

メッシュ作成中に、コマンドラインから

free -h

と打ってみると、状況が確認できます。

(形状が複雑だったりすると、
   メッシュ作成の方がメモリ消費が激しくなったり
   するかもしれませんね。)

以上、
よろしくお願いいたします。

Takeshi Sugimoto (takeru7584)   

2015年4月9日木曜日、Akira Yamamoto<rebuil...@gmail.com>さんは書きました:

kengo

unread,
Apr 9, 2015, 7:24:25 AM4/9/15
to code_aster-...@googlegroups.com


以前、線形定常熱伝導解析で100万節点メッシュを切って解析していた時に、
計算自体は時間がかからないのに、メッシュ分割に大変時間がかかっていました。
(メッシュ分割1時間程度、計算:数分、だったと思います)


熱伝導解析は、確かに計算のほうが時間が短いですね。
普段は構造ばかり計算しているので失念していました。

Akira Yamamoto

unread,
Apr 9, 2015, 7:40:26 PM4/9/15
to code_aster-...@googlegroups.com
>杉本様

アドバイス有難うございます。
杉本様の方法であれば、余り手間なく、モデル作成の作業が出来そうです。

細かい点なのですが、杉本様の資料で、Group化した元パーツの面をツールオブジェクトとしてPartitionしているのは何故でしょうか。
Mold.step_1とChip.step_1のボリュームをツールオブジェクトとしてPartiton分割するのとは違いが有りますでしょうか。
(同じ面を2回Parition分割すると問題が有るからでしょうか。自分ではまだ試してないで質問してます。すみません)

>kengo様

コメントありがとうございます。
"線形定常"だからというのもあるのですが、100万節点の熱伝導解析は、驚くほど早く終わってしまってびっくりしました。

熱伝導解析(実現象は電位・電流分布)では、全体モデル(mmサイズ)に対して、極薄い層(μmサイズ)の影響を考慮した解析を行い、
実験結果と解析結果の良好な一致を得ました。しかし、層が薄くなればなるほど、節点数が飛躍的に多くなるので、メッシュ分割が早くなればよいなと思ってました。


kengo

unread,
Apr 10, 2015, 11:04:39 AM4/10/15
to code_aster-...@googlegroups.com

板状であればシェル要素を使うのも1つの手だと思います。
シェル要素でも板の表裏で境界条件を与えて熱伝導解析をすることはできますので。

実験結果と解析結果が一致させられたのは素晴らしいですね。
外部に公開できるものであれば、オープンCAEシンポジウムなどで発表されてはどうでしょうか。

杉本健

unread,
Apr 10, 2015, 11:35:38 AM4/10/15
to code_aster-...@googlegroups.com
Yamamoto様

杉本です。

下記の件、
資料はまだボリュームでパーティションを切れることを
知らない頃に作成しました。。。すみません。
直したい気持ち満載です。
講習をしてて2時間で足らなくなるので。笑
紛らわしい情報を与えてしまい、申し訳ありませんでした。

薄膜でのメッシュ、大変ですよね。
よーくわかります。笑

kengo様がシェルメッシュをお勧めされていらっしゃいましたが、
モデル名から察するに、対象物は薄膜の積層構造だったりしませんか?
層方向の温度(電位?)分布を得る場合はシェルメッシュで代用すると効果は大きいですよね。
でも、例えば厚み方向の温度(電位?)分布を得たいときは、
やっぱり厚み方向に押し出したメッシュを作成するのが理想ですよね。。。
(接触熱(電気?)抵抗として与えるという方法もなくはないのでしょうが。。。)

私も多分同じような業界なので、業務では商用ソフトでも苦労しています。
私自身もSalomeでのメッシュ作成についてもう少し研究したいと思います。
(解決策を示せなくてすみません。。。)

Takeshi Sugimoto

> 2015/04/10 8:40、Akira Yamamoto <rebuil...@gmail.com> のメール:

Akira Yamamoto

unread,
Apr 11, 2015, 6:17:40 AM4/11/15
to code_aster-...@googlegroups.com
kengo様>

たびたびアドバイス頂き、ありがとう御座います。

投稿のタイトルと内容が違ってしまいますが、
シェル要素での熱伝導解析について質問してよろしいでしょうか。

ソリッド要素とシェル要素での熱伝導解析にトライしてみました。
1×1×1mmのBox_1の上に、1×1mmのFace_1を、LIAISON_MAILで連結して,
Face_1に500℃の温度を与えてみましたが、解析できず、エラーになってしまいます。
(解析ファイル、添付致します)

薄膜の厚さをシェル要素のパラメータで表現して、上手く解析出来れば良いのですが・・・
また、シェルの表面/裏面を指定して、温度条件を与えるというのは出来るのでしょうか。
また、シェルの表面/裏面を指定して、解析結果を見るというのも出来ますでしょうか。

オープンCAEシンポジウムでの発表は、許可を取らないといけないので分からないのですが、
いつも教えてもらってばかりなので、何らかの機会に、お返しの報告が出来たらいいな、と思っております。
とは言っても、レベルが低いので、皆様の参考になるものを提供するには、もっと勉強しないといけませんが・・・


>杉本様

御回答&コメントありがとうございます。

最初は、ボリュームでPartition分割が出来ると思いづらいですよね。
私も今回皆様に教えて頂いて初めて知りました。
また、杉本様の提示された1~4の手順(4/9投稿)で、アッセンブリモデルのPatition分割をしてみましたが、
手間もかからず、とても簡単に出来ました。御教示有難うございました。

杉本様のご想像通り、薄膜は積層の場合も有ります。
薄膜を3Dで解析すると、節点数が多くなって大変だなあと思います。
もっと厚くしてくれればいいのに・・・と思ったりします。笑。


Study1.hdf
TestCase.comm

kengo

unread,
Apr 11, 2015, 11:53:27 AM4/11/15
to code_aster-...@googlegroups.com

ソリッド要素とシェル要素での熱伝導解析にトライしてみました。
1×1×1mmのBox_1の上に、1×1mmのFace_1を、LIAISON_MAILで連結して,
Face_1に500℃の温度を与えてみましたが、解析できず、エラーになってしまいます。

LIAISON_GROUP で連結させることができます。
ただし LIAISON_GROUP は2つの対称面の節点数が同じでないと受け付けてくれません。
ですので添付しているメッシュは、ソリッド側の対称面に、メッシュモジュールで下記の操作をして、シェルの面を作っています。

 1 Modification > Transformation > Translation
 2 Copy Elements にチェックを入れる
 3 Generate groups にチェックを入れる(コピーした要素にグループ名をつけてくれます)
 4 移動距離は0でも良い


また、シェルの表面/裏面を指定して、温度条件を与えるというのは出来るのでしょうか。

TEMP_IMPO > TEMP_SUP, TEMP_INF を使います。
面グループを表示させた時、黄土色になるのが SUP 面です。INF 面は緑色です。
(VTK view で Orientaion of Faces を表示させた時に矢印が出る面が SUP です。)
 

また、シェルの表面/裏面を指定して、解析結果を見るというのも出来ますでしょうか。

サブプルダウン(Magnitude などがあるプルダウン)に、 TEMP_SUP, TEMP_MIL, TEMP_INF があります。


以上
Mesh_1.med
orie.jpg
TestCase.comm

Akira Yamamoto

unread,
Apr 11, 2015, 2:18:48 PM4/11/15
to code_aster-...@googlegroups.com
kengo様

丁寧に解説して頂いてありがとうございます。

すみませんが、LIAISON_GROUPの関係式について教えて下さい。

kengo様の設定は下記になっています。
・DDL_1=TEMP_INF
・COFE_MULT_1=1
・COFE_MILT_2=-1
・COFE_IMPO=1

もし、シェル下面とソリッド上面が全く同じ温度とすると、下記の設定にならないでしょうか。
・DDL_1=TEMP_INF
・COFE_MULT_1=1
・COFE_MILT_2=-1
・COFE_IMPO=0

"COFE_MULT_1×TEMP_INF+COFE_MULT_2×TEMP_INF=COFE_IMPO" と理解しています。

何度もすみませんが、宜しくお願い致します。


kengo

unread,
Apr 11, 2015, 10:52:45 PM4/11/15
to code_aster-...@googlegroups.com

すみません。ご指摘の通り、COEF_IMPO=0 とするのが正しい設定です。

Akira Yamamoto

unread,
Apr 12, 2015, 5:37:27 AM4/12/15
to code_aster-...@googlegroups.com
kengo様

御回答ありがとうございます。

kengo様のおかげで、シェル要素を使っての熱伝導解析の方法が分かりました。
これまで薄膜をソリッドとして解析した問題を、シェル要素を使って解くとどうなるのか
試してみたいと思います。有難うございました。
Reply all
Reply to author
Forward
0 new messages