構造研 | 後藤班 | 野田班 |

Salomeメモ - *Salomeの基本的な使い方

目次

Salomeの基本的な使い方

卒論の4年生、創造工房の3年生は、ここにSalomeの基本的な使い方を どんどんメモしていって下さい。

Salome-Mecaチュートリアル

Salome-Mecaを単体でインストール

 新しいPCにCAELinuxをインストールすると、SalomeのGeometryで線や点がちゃんと表示されない。なので、Salome-Mecaを試しに単体でインストールしてみた。

インストール

Salome-Meca2017について

unicode decode error

日本語環境のUbuntuで計算を実行しようとするとこの人(オープンCAE勉強会の人)と同じエラーが発生する。どうやら自動でlogの名前に実行日時が書き込まれるのだが、グルー言語としてPython2.7(Python2系はデフォルトではutf-8に対応していない)が使われているため、実行日時の曜日が日本語であることによってエラーが出るらしい。

Salome-Meca2016について

Salome-Meca2015.2について

Salomeの日本語化

sudo rsync -auv modules /opt/SALOME-MECA-2013.1/SALOME-MECA-2013.1-LGPL/
sudo rsync -auv tools /opt/SALOME-MECA-2013.1/SALOME-MECA-2013.1-LGPL/
で、modulesの中身とtoolsの中身を、Salomeがインストールされている同名のディレクトリ内にコピー

DEXCSのSalomeについて

インポート

 FreeCADとSalomeを使って、調査してみる。

STEPおよびBREP

 充実立体として、そのままSalomeにインポートして、計算にかけられるので一番取り扱いしやすそうな形式。しかし、AUTOCADからはエクスポートできない。

IGES

 AUTOCADからエクスポートできる形式。ほとんどの場合、表面の情報しか持っていないようなので、そのままでは数値計算できない。Salomeにインポートした後に、次の作業が必要。

stl

 3Dプリンター関係で使用する形式。表面の情報しか持っていないし、そのままSalomeのGeometryにインポートすることはできない(Meshにはインポートできるけど、ShellにもSolidにもなっていないので、全く役に立たない)。Salomeにインポートするには以下のようにFreeCADを経由する必要がある。

FreeCAD

Salome

stl(追記)

Salome-Meca2016になってから、FreeCADを経由しなくても、次のようにすれば充実立体に変換して、メッシュを切って、計算できるようになった。

とはいえ、stlはすべての面を三角形で形作っているので、面の選択が非常に大変(一つの面を選択したいだけなのに、沢山の細かな三角形を一個一個選択しなければならない)なため、今までどおりFreeCADを経由した方が楽そう。

salome user's guide

salomeの3Dモデル作成手順

salomeの基本操作

モデル作成に関して(特に複雑なモデルを作成する方へ)

点から(中身が詰まっていない)直方体を作る

面から(中身が詰まっている)直方体を作る

中身が詰まった三角錐を作る

体積を求める

後藤メモ(2014/11/6)

直方体は割と正確に(有効数字10桁以上)出るけど、球や円錐は有効数字1桁しか出ない(メッシュを細かくしても)。曲面のない角柱や角錐はどうでしょう? 誰か、調査して下さい。

後藤メモ(2014/11/7) 昨夜、自宅のマシンで計算してみたら、精度が悪かったのだが、大学のマシンでメッシュを細かくしてみたら、球でも有効数字3桁ぐらいの精度が出た。 昨晩、家で計算したときは円錐の体積が$\pi$になるようにと思って、 半径を100, 高さを333.3333とかと入れたのだけど、3で割るんだから高さは300にすべきですね。それで精度が悪いと思い込んでおりました。 昨夜は、酒もあんまり飲んでなかったはずなので(ビール200$\sim$300m$\ell$)、 ちょっとぼけてきたのかもしれません。

追記(2014/12/16) SalomeのGeometry操作中に求めたいオブジェクトを選択してMeasuresからBasicProperties?をクリックすれば体積が求まりました。球の体積も有効数字8桁ぐらいの精度が出ました。 追記(2016/10/21) メッシュの体積も求めることができます

物体の色を変更する

物体を木材などの色に変更したいとき

Colorが出ない人は……

色を物体ごとに変えたい時

2つの画面で物体を見比べるには

例えば、Mesh_1とMesh_2を見比べたり、Post-Proの結果を見比べたいとき

2材料を解くためsalomeでグルーピングするには

材料が2つのとき

メッシュをC3D4で切り、2つにグループ分けしたものなら、ccxc3d4unv2.f90で解く。 ccxc3d4unv2s.f90

salomeで.unvをつくり、プログラムで.inpにする方法

四面体要素C3D4

メッシュを切る手順

直方体要素C3D8で切る手順

salomeでダイヤカットを作る

c3d4or3dプリンタ用

s6用

Salomeモデリング上の注意

計算結果をcsvファイルで出力

手順

$cp linear-static.rmed linear-static.med
とかで拡張子を.medに変更する

メモ

New Entity

Primitive

basic

SALOMEで形状生成 → Netgenでメッシュ切り → cgxで境界条件設定 → CalculiXで計算

手順

SALOME

Netgen

cgx

$cgx -c hoge.inp
を実行でさっきつくったhoge.inpを開く

以下のcgxコマンドは全部「CalculiX Graphix」ウィンドウ(以下cgxウィンドウ)が手前にある状態で入力

plot n all
で全節点を表示
qadd hage
を実行
mode:a
と表示される
plot n hage
で確認
plot f all
で全面を表示後、同じくqadd→mode:a→r,r→fキーで面を選択(ピンク色に変わる)
plot f hige
qrem hige
を実行後、r,r→削りたい領域を矩形の中に入れる→fキー→qキー→
plot e all
plus n hage
plus f hige
で最終確認後、
send hage abq nam
で拘束点をhage.namというabaqus形式で出力、次に
send hige abq pres 10000
で載荷面をhige.dlo(面載荷の場合は拡張子が.dloみたい)というabaqus形式で出力(presは面載荷、数字は荷重)
*Node
という行に
*Node, NSET=Nall
と追加して
*Element, type=C3D4, ELSET=PART1
という行の「PART1」を「Eall」に変更する
$ccx_2.3 hoge
$cgx -v hoge.frd
で確認、.datファイルも作られている

荷重のかけ方

send hige abq force 1. 2. 3.

直方体に直方体メッシュを切って、拘束、載荷する手順

SalomeからCalculiXのinpファイルを生成

SalomeのunvファイルをCalculiXのinpに変換


$/opt/caelinux/unv2x.py hoge.unv
を実行すると、
/opt/caelinux/unv2x.py: line 17: class: コマンドが見つかりません
/opt/caelinux/unv2x.py: line 18:  a simple FEM object structure: コマンドが見つかりません
/opt/caelinux/unv2x.py: line 19: 期待してない token `(' のあたりにシンタックスエラー
/opt/caelinux/unv2x.py: line 19: `    def __init__(self):'
のエラー。 unv2x.pyはバグがあるとのことで、CAELinuxのサイトのどこかにあるアップデート版を 使うとうまくいくのかもしれないが、教室会議...

SalomeのmedファイルをCalculiXのinpに変換

$/opt/Calculix/MEDABA/medaba10-64bit hoge.med
すると、
argc=2
Lecture du fichier hoge.med.med
>> ERREUR : les fichier hoge.med.med n'est pas au format HDF V5 
みたいなエラー。

例題

マニュアル和訳

計算サーバーのsalomeを使う手順

ユーザー名   3721  0.1  0.2 143332  7308 ?        Sl   16:31   0:00 notifd -c /usr/local/bin/SALOME5/V5_1_3/KERNEL_V5_1_3/share/salome/resources/kernel/channel.cfg -DFactoryIORFileName /tmp/gakusei_rdifact.ior -DChannelIORFileName /tmp/gakusei_rdichan.ior -DReportLogFile /tmp/gakusei_notifd.report -DDebugLogFile /tmp/gakusei_notifd.debug
ユーザー名   3887  0.0  0.0   2800   804 pts/2    S+   16:32   0:00 grep --color=auto salome
みたいに表示されて、salome関係で走っているプロセスが表示されるので、 殺すべきプロセス番号を
kill -KILL 3721
みたいにして殺していったら、また ps ux|grep salomeをやって、grep だけのプロセスに なったら、logoutまたはexitでlogoutする。

動作状況等

Salome5.1.3のバイナリー版は、 Vine5.1上では、起動はするが、Geometryなどの新規作成をして、ちょっと動作させようとすると、
SIGSEGV 'segmentation vilolation' detected. Address 4
のエラーが出てハングアップする。 まだ、調査中だが、Ubuntu9.10では、上記のエラーは出ずに走っているようだ。 Salome専用サーバーをUbuntuで立ち上げようか。 日本語TeX環境の快適さを考えると、学生用の(後藤用のも)端末は、 Vineの方がいいだろうが。

練習

ここ と同じ事をやろうとするとメッシュを切るまでは問題なく進むが、 そのあとAsterに切り替えた瞬間に
Fatal error
SIGSEGV 'segmentation violation'detected Address 18
と表示され動かなくなる(Address 0 も確認)。Terminalでどんなエラーが出力されるかよく見る必要がある。

追記

salomeを再起動後、再度計算を試みた。 Linear elastic -> 3D までは問題ない。 次のselect a mesh from the salome object browser で、 作ったMesh_1を選択しても
The selected entry is not a mesh or the SMESH component must be activated
と言われてしまう。 salomeのフォーラム(古いけど)を見る限り、有効な解決策はないみたい。

code-asterの基本的な使い方(線形弾性)

 code-asterにはかなりたくさんの機能がある。詳しい使い方はここに載っている。

code-asterコマンドリスト

http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?plugin=attach&refer=SALOME-Meca%A4%CE%BB%C8%CD%D1%CB%A1%B2%F2%C0%E2&openfile=00-00.pdf

「geometry」で固定や載荷をするところをつくる

「mesh」でメッシュ分割

「aster」で条件を入力

「commファイル」で各条件を編集

長さ応力(集中)荷重線荷重面荷重
mPaNN/mN/m$^2$
mmMPaNN/mmN/mm$^2$

MA=DEFI_MATERIAU(ELAS=_F(E=206000000000.0,
                         NU=0.3,),);
 ヤング率E,ポアソン比NUなどの材料定数の値をここで書き直せる。
MA1=DEFI_MATERIAU(ELAS=_F(E=206000000000.0,
                         NU=0.3,),);
MA2=DEFI_MATERIAU(ELAS=_F(E=69000000000.0,
                         NU=0.33,),);

MATE=AFFE_MATERIAU(MAILLAGE=MAIL,
                   AFFE=_F(TOUT='OUI',
                           MATER=MA,),);
MATE=AFFE_MATERIAU(MAILLAGE=MAIL,
                   AFFE=_F(GROUP_MA='part1',
                           MATER=MA1,),
                        _F(GROUP_MA='part2',
                           MATER=MA2,),);

CHAR=AFFE_CHAR_MECA(MODELE=MODE,
                    DDL_IMPO=
                        _F(GROUP_MA='fix',
                           DX=0.0,
                           DY=0.0,
                           DZ=0.0,),
                    FORCE_FACE=
                        _F(GROUP_MA='load_f',
                           FX=3183098.862,),
                    );
                    FORCE_NODALE=_F(GROUP_NO='load_n',
                           FX=1000.0,),);
        は点載荷だが、これを断面積A=0.01$^2$πで割ったものが、先ほどの面載荷で、実際にたわみはほぼ同じになる。

要素数が多くて計算が出来なかったときの対処方法

「post-pro」で結果の表示

「paravis」で結果の表示

rmedファイル(結果)をテキストファイルにするには

commファイルの編集(unvファイル)

 初期状態では、commファイルの一番下が、
IMPR_RESU(FORMAT='MED',
          UNITE=80,
          RESU=_F(MAILLAGE=MAIL,
                  RESULTAT=RESU,
                  NOM_CHAM=('SIGM_NOEU','SIEQ_NOEU','DEPL',),),);
 と、なっているので、この1行目を
IMPR_RESU(FORMAT='IDEAS',

に変えて、asterをrunすると、いつも通り同ディレクトリにlinear-static.rmedができている。名前は、med形式になっているが、viで中身を開いてみると、ちゃんとunv形式になっている。デフォルトでは、viでunvファイルを開いて、次のように打てば節点情報が見れる。

ちなみに、載荷線or面などのグループの節点番号を調べたい場合は、

Gmsh経由(posファイル)

 ぱっと見、節点番号が表示されていない気がしますが……。

直方体要素での解析方法

https://sites.google.com/site/codeastersalomemeca/home/salome-meca-chutoriaru1/meshmojuru#TOC-6-Geometry-を参照した

(解決したらここに方法を書く)

熱関係

asterで熱を解くやり方(材料一つ)

シェル要素

接触解析(摩擦あり)

座屈解析

直交異方性材料

ポアソン比

Code_Asterでの直交異方性材料のポアソン比がよく分からない(梁の変位にほとんど影響しないので確かめていない,とか)とのことだったので,構造解析関係のプログラム置き場にあるccxonsaito.f90の異方性材料の設定をもとに,CalculiXとCode_Asterで同じ計算をして確かめてみた(計算に使ったものはこちら).
MA=DEFI_MATERIAU(ELAS_ORTH=_F(E_L=3.0e8,   #$E_{x}$
                              E_T=3.0e8,   #$E_{y}$
                              E_N=7.5e9,   #$E_{z}$
                              NU_LT=0.016, #$nu_{xy}
                              NU_LN=0.016, #$nu_{xz}
                              NU_TN=0.016, #$nu_{yz}
                              G_LT=5.0e8,  #$G_{xy}$
                              G_LN=5.0e8,  #$G_{xz}$
                              G_TN=5.0e8,  #$G_{yz}$
                              ),
                  );

局所座標系

Code_Asterで斜めになっている物体を直交異方性材料として計算するのが難しいという問題が(トラス橋や屋根付橋などで)あったが,部材の向きごとに局所座標系を決めれば比較的簡単に計算できる.
CARA_EL=AFFE_CARA_ELEM(MODELE=MODE,  #"CARA_EL"は好きな名前でいい
                       MASSIF=(_F(GROUP_MA='moto',               #例えば,全体座標系と一致している物体
                                  ANGL_EULER=(0.0,0.0,0.0,),     #(\psi,\theta,\phi)
                                  ),
                               _F(GROUP_MA='alp330',       #例えば,$\theta_{x}=330$度傾いている物体
                                  ANGL_EULER=(0.0,330.0,270.0,), #(\psi,\theta,\phi)
                                  ),
                               _F(GROUP_MA='bt30',               #例えば,$\theta_{y}=30$度傾いている物体
                                  ANGL_EULER=(90.0,30.0,270.0,), #(\psi,\theta,\phi)
                                  ),
                               ),
                       );
RESU=MECA_STATIQUE(MODELE=MODE,
                   CHAM_MATER=MATE,
                   CARA_ELEM=CARA_EL,  #<--ここだけ追加."CARA_ELEM="は自分でつけた名前に合わせる.
                   EXCIT=_F(CHARGE=CHAR,),);

弾塑性解析

   20mmの角棒の片端を固定して引っ張ったときの先端の伸び      20mmの角棒を片持ち梁として曲げたときの先端のたわみ

ひずみの出力(v12)

commファイルの一番下のところを以下の(1),(2)のように修正する.
    ・
    ・
    ・
resu=CALC_CHAMP(reuse =resu,
                RESULTAT=resu,
                CONTRAINTE='SIGM_NOEU',
                DEFORMATION='EPSI_NOEU',      #----(1)
                CRITERES='SIEQ_NOEU',);

IMPR_RESU(FORMAT='MED',
          UNITE=80,
          RESU=_F(MAILLAGE=MAIL,
                  RESULTAT=resu,
                  NOM_CHAM=('SIGM_NOEU','SIEQ_NOEU','DEPL','EPSI_NOEU',),),);    #----(2)