#author("2021-01-29T20:11:23+09:00","default:kouzouken","kouzouken")
#author("2021-01-30T15:56:56+09:00","default:kouzouken","kouzouken")
#contents
*Salomeの基本的な使い方 [#ab7d3c86]
卒論の4年生、創造工房の3年生は、ここにSalomeの基本的な使い方を
どんどんメモしていって下さい。
*Salome-Mecaチュートリアル [#t488b1d7]
-https://sites.google.com/site/codeastersalomemeca/home/salome-meca-chutoriaru1
-http://penguinitis.g1.xrea.com/
-[[AsterStudyで設定するcommファイル内のコマンドの解説:https://www.code-aster.org/V2/doc/default/en/index.php?man=commande]]




-なるべく新しい情報↓がおすすめ
--https://qiita.com/Jun_Tatsuno
--https://twitter.com/Jun_Tatsuno
---固有振動数(2019) : https://qiita.com/Jun_Tatsuno/items/a9def3216f230e794fc7
---弾塑性(2018) 
: https://qiita.com/Jun_Tatsuno/items/ff7bb3afa2466c0962db
---熱応力(2018) : https://qiita.com/Jun_Tatsuno/items/7c604ac8759fbbb6cc96
--https://qiita.com/femlabo-toyo
--https://twitter.com/structmecha
---梁+平板+立体要素(2019) : https://qiita.com/femlabo-toyo/items/b1b3f1c33660ea6eddb4
---ねじり(2019) : https://qiita.com/femlabo-toyo/items/b28ef117ef003ad652f0
--【余談】ネットの情報のほとんどのもの([[例えばこことか:http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?SALOME-Meca%A4%CE%BB%C8%CD%D1%CB%A1%B2%F2%C0%E2]])は古いので、そのままでは使えない。古いページを参考にするときは自力かcode_aster translator(Tools → Plugins → code_aster → syntax translator)でcommファイルを新しいバージョンに翻訳する必要がある。


**公式ページの検証問題をトレースする [#v727bc89]
Code_Asterは非常に多くの問題を検証し、[[公開:https://www.code-aster.org/V2/doc/default/en/index.php?man=V]]していますが、
これを再現するのにこの説明ではあまりに不親切では……
と思っていたら、Aster Study -> Operations -> Import a testcase で[[ここ:https://www.code-aster.org/V2/doc/default/en/index.php?man=cas-test]]にある)難しい問題でも簡単に再現できるようです(確認済み)。
-https://code-aster-windows.com/2017/12/10/beginning-with-asterstudy-and-salome-meca-on-windows/

*Salome-Mecaを単体でインストール [#o3225f4e]
 新しいPCにCAELinuxをインストールすると、SalomeのGeometryで線や点がちゃんと表示されない。なので、Salome-Mecaを試しに単体でインストールしてみた。
**インストール [#xaa2f98f]
-[[Code_Asterのページ:http://code-aster.org/V2/spip.php?article303]]から、"~/kouzou/.Salome-Meca"あたりにダウンロード。
-"$ tar xvzf SALOME-MECA-2015.2-LGPL-2.tgz"で、展開。
-"$ ./SALOME-MECA-2015.2-LGPL.run"で、インストール開始、
-"Enter the salome_meca install directory [default=/home/kouzou/salome_meca] :"は、後でディレクトリごと動かせばいい(?)ので、とりあえず"Enter". 
-"salome_meca is in English, do you want to be in French ? [y/N] :"は、英語がいいので"N".
-インストールが終わってから、"/home/kouzou/salome_meca/appli_V2015_2/salome"をドラッグ&ドロップでパネルに追加。アイコンはわかりやすく、"/home/kouzou/salome_meca/V2015_2/icon.png"あたりにする。

**Windows版 [#g26ba4e2]
[[Windows版:https://code-aster-windows.com/]]が出ていたようです。
面白いことにAbaqusやNastranの形式も読み込めるとか。
-インストール方法
--&link(ここ,https://code-aster-windows.com/download/)からダウンロードする(例えば、一番上にある緑の Download Salome-Meca 2019 win64 とか)。
--[[ここ:https://code-aster-windows.com/download/]]からダウンロードする(例えば、一番上にある緑の Download Salome-Meca 2019 win64 とか)。
--右クリック → 解凍(適当なところに解凍する)
--sm-2019-w64-0.3 にある run_salome.bat をクリックすれば、salome-mecaが起動する。
--(Salome-Meca 2018をダウンロードした場合は、sm-2018-w64-0-3 → WORK → run_salome.bat で起動。)
---初めて起動するときだけ、許可を求められる。


**Salome-Meca2019 [#na8564ee]
-ダウンロード
--https://www.code-aster.org/V2/spip.php?article303

-Ver1は2019/09にアップロードされたが、(Ubuntu18.04ではg++のバージョンの問題で)インストールがすんなりできなかった。2019/12にアップロードされたVer3だとUbuntu18.04にも問題なくインストールできる。
-Geometryの他にShaperなるものができています!

**Salome-Meca2018 [#b7be8150]
2018/07/13リリース。アイコンが一新されたが、操作方法は2017と比べてそれほど変わらないみたい。

***起動時のエラー [#m54ee645]
グラフィックカードとlibstdc++の相性によって起動しないことがあるらしい。この時、
 LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 ~/salome_meca/appli_V2018/salome

というふうにして毎回端末から起動するか、あるいはそれが手間であれば

 cd ~/salome_meca/V2018/prerequisites/debianForSalome/lib
 mkdir kari
 mv libstdc++* kari

として、原因のファイルをどけてやれば、アイコンからでも問題なく起動する[[Salomeメモ:http://www.str.ce.akita-u.ac.jp/kako/gwiki/salome-meca.html]]の片持ち梁で動作確認済み)。

-参考URL
--https://www.code-aster.org/forum2/viewtopic.php?id=23552

**Salome-Meca2017について [#m4a11a0b]
-&link(9/1リリース,http://www.code-aster.org/spip.php?article303)。インストール方法は&link(こちら,http://www.code-aster.org/spip.php?article1018)。
-[[9/1リリース:http://www.code-aster.org/spip.php?article303]]。インストール方法は[[こちら:http://www.code-aster.org/spip.php?article1018]]。
-試しに「許可番号:工資15-6049」のPCにインストールしたので使ってみて。アプリケーション->教育・教養->salome_meca V2017
-Asterがなくなり、commファイルの編集も同じウィンドウでできる&link(AsterStudy,http://www.code-aster.org/spip.php?article1001)というものに変わった。Eficasとどちらがいいだろうか?実際の使っている様子は、&link(この辺の動画,https://www.youtube.com/channel/UCSakQDC186EfbO726te12PQ)を参照。何となく市販のソフトっぽいインターフェース。
-Asterがなくなり、commファイルの編集も同じウィンドウでできる[[AsterStudy:http://www.code-aster.org/spip.php?article1001]]というものに変わった。Eficasとどちらがいいだろうか?実際の使っている様子は、[[この辺の動画:https://www.youtube.com/channel/UCSakQDC186EfbO726te12PQ]]を参照。何となく市販のソフトっぽいインターフェース。
--というか、Eficas自体のインターフェースもまるっきり変わってしまったので、テキストエディターでcommファイルを編集するのでなければ、いずれにせよ新しく操作方法を覚えなければならない。
-この辺も参考になる:http://ofbkansai.sakura.ne.jp/archives/124352

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

-解決方法:&link(オープンCAE勉強会の方々のやり取り,https://mobile.twitter.com/freekaos/status/905068369237336066)を参考に、~/salome_meca/appli_V2017/lib/python2.7/site-packages/salome に&link(sitecustomize.py,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2017/kondo/tyousa/salome17/sitecustomize.py)を置いてみると問題なく計算できる。


**Salome-Meca2016について [#ef2c6c12]
-7/12リリース
-サイズが1Gbくらいある
-2015と同様Post-ProはなくなりParaVisを使う
-パッチを使わなくても日本語化可能

**Salome-Meca2015.2について [#v05ffc49]
-点とか線はちゃんと表示される。
-File→Preferencesで日本語化できる。
-&link(ここ,https://sites.google.com/site/codeastersalomemeca/home/code_aster-1/eficas-shi-you#TOC--2)によると、Code_Asterのcommファイルをいじれば、messファイルも英語化できるらしい。
-Code_AsterのSTA10で使っていたcommファイルで計算したい時、STA11とか12用に書き換えないといけないが、EficasのTraductionを使へば翻訳できる。
-Post-Proが無くなったので、ParaViSをポストプロセッサに使う。
-計算結果(rmedファイル)の読み込みが自動でなく、手動でやらなければいけなくなった。以前はそのために、計算が上手く行っていない時でも、勝手に前に計算したrmedファイルを勝手に読み込んでしまうことがあったが、そういった間違えが減りそう。

*Salomeの日本語化 [#m13678d3]
-&link(Salome-Meca日本語化分科会開発パッチパック,http://cae21.info/jswg/index.php/home_ja/japanese_localization/description/japanese_localization_download/)から、日本語化パッチ Salome-Meca 2013.2用をダウンロードして、~/.salome(なければ作って)に保存。
--CAELinux2013のSalomeは2013.1だけど、まあ大丈夫でしょう。
-tar xvzf translate_salome_meca_2013_2_to_japanese_patch_a015a_cr.tgz で展開
-cd SALOME-MECA-2013.2-LGPL で、SALOME-MECA-2013.2-LGPLの中に入る
--(
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がインストールされている同名のディレクトリ内にコピー
-Salomeを起動し、File→Preferences→Current LanguagesをjaにしてOKして一旦 終了。

-新しい(?)バージョンのcode-asterは、エラーメッセージも英語化できるらしい。
--https://sites.google.com/site/codeastersalomemeca/home/code_aster-1/eficas-shi-you#TOC--2

*DEXCSのSalomeについて [#q6e2a9f3]
-http://dexcs.gifu-nct.ac.jp/pukiwiki/index.php?%A4%C9%A4%A6%C6%B0%A4%AB%A4%B9%A4%CE
-http://dexcs.gifu-nct.ac.jp/download/
-LinuxなりWindowsなりの仮想環境VMWare上に、UbuntuベースのDEXCSをインストールするという利用方法のようなので、Ubuntuパソコン上で直接Salomeを起動するよりも、動作の快適性は落ちるのでは。我々みたいに細かいメッシュで自由度が膨大な解析をするには、厳しいのでは。
-DEXCSを仮想環境上ではなく、パソコンに直接インストールして利用できればいいのだが、そういう利用例が見当たらない(実験してみてもいいが)。
--DEXCSのベースOSとなっているUbuntuのバージョンが、現行サポート中の新しいUbuntuなのか、サポート終了したUbuntuなのか、微妙。
--DEXCS2007/2008-VMwareのときが、Ubuntu-7.10-Desktop.vmxとなっているので、サポート終了した古いUbuntuがベースになっている可能性もあるかと思ったら、
--DEXCS2012がUbuntu12.04なので、Ubuntuのバージョン的には大丈夫だが、日本語とかTeXとかの環境は、インストールし直す必要はある。
-オープンソースと言いながら、非営利限定とか、氏名や所属やメールを登録しないと利用できないのは、あまりいい感じはしない。
--研究目的なら非営利かもしれないが、例えば県発注の木橋の設計チェックの目的で解析したりしたら営利目的になるのでは。やはり、何にでも無条件で使えるツールでないと困る。
--2016/1/20時点でDEXCSのダウンロードページを見ても、営利目的ダメとうい記述は見当たらない。この辺、要調査。
---柴田良一『「Salome-Meca」ではじめる構造解析』のp.29,30の図中には「非営利目的の使用のみ」と書かれていますが、VMWare Playerのことを指しているのだと思います。ちなみに、code-asterのエラーメッセージはフランス語のままでした。(2016/1/21近藤)

-Salomeの日本語化であれば、パッチのインストールとかで、既にできたりするのでは?
--http://cae21.info/jswg/index.php/home_ja/japanese_localization/description/japanese_localization_download/

*インポート [#u4f25d24]
 FreeCADとSalomeを使って、調査してみる。
**STEPおよびBREP [#y5c237f9]
 充実立体として、そのままSalomeにインポートして、計算にかけられるので一番取り扱いしやすそうな形式。しかし、AUTOCADからはエクスポートできない。
**IGES [#m04864ee]
 &link(AUTOCADからエクスポートできる形式,http://docs.autodesk.com/ACD/2014/JPN/index.html?url=files/GUID-81A5EE76-39A7-40A4-A5C5-E4921C03B33A.htm,topicNumber=d30e317617)。ほとんどの場合、表面の情報しか持っていないようなので、そのままでは数値計算できない。Salomeにインポートした後に、次の作業が必要。
-Geometry-->New Entity-->Build-->Shell :面からシェルを作る。
-Geometry-->New Entity-->Build-->Solid :シェルからソリッドを作る。
-Geometry-->New Entity-->Group-->Create:充実立体・面・線・点のグループを作る。
--あとは、いつも通りにメッシュを切ればよい。
**stl [#b0297e05]
 3Dプリンター関係で使用する形式。表面の情報しか持っていないし、そのままSalomeのGeometryにインポートすることはできない(Meshにはインポートできるけど、ShellにもSolidにもなっていないので、全く役に立たない)。Salomeにインポートするには以下のようにFreeCADを経由する必要がある。
***FreeCAD [#jb5971b2]
-stlファイルを開く
-partにて
--部品→メッシュから形状を作成する
--部品→シェイプビルダー→シェルからソリッドを作成
-ソリッドを選択したまま……ファイル→エクスポート→BREP format(*.brep *.brp)でsave
***Salome [#g4f593e8]
-geometoryにて
--ファイル→インポート→先ほどのbrepファイルをインポート
--measures→basic propertiesで、volumeを確認して、値が正になっていればOK
--volumeが負の値の時は、もう一度freecadに戻って、
---ソリッドを選択したまま……部品→図形を反転
---反転したソリッドを選択したまま……ファイル→エクスポート→BREP format(*.brep *.brp)でsave
--これをインポートすると、多分volumeが正の値になっている。
-あとは、普通にcreate groupして、meshに切れば、asterで解ける。
**stl(追記) [#uf8d07e8]
Salome-Meca2016になってから、FreeCADを経由しなくても、次のようにすれば充実立体に変換して、メッシュを切って、計算できるようになった。
-geometry-->File-->Import-->STL
-インポートしたstlの物体を選択-->New Entity-->Build-->Shell
-シェルにした物体を選択-->New Entity-->Build-->Solid

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

*salome-mecaにスプリクトを使って節点座標をインポートする。 [#sb4c5367]
-まずはインポートしたい店の座標をLbre ofice でx,y,zで座標をインポートする。
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/suku1.png

 インポートしたらダミー文字を座標の前や後に入れてあげる。それは写真で示している感じ。
ダミー文字列は
,",AA,", →, P
,",BB,", →, =geomepy.Maevertex(
,",CC,", →,","
,",DD,", →,","
,",EE,", →, )
になる
上記の文字列を写真のように入れたら、csvファイルで保存する。
csvファイルで保存したら今度はテキストエディターで開く。その後ダミー文字列を置換する。
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/suku2.png
**表示スクリプトの作成 [#vd1c1563]
Lbre ofice等の表計算ツールで作成する。以下の写真のようになる。
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/suku3.png
B列には座標の通し番号を記述する。Cにはそれに関連した番号を記述する。基本は写真のようになるのではと。。。
そしたらダミー文字を写真のように入れてあげる。今回は点のみであるため全ては使っていない。
ダミー文字列は
,",AA,", →, geomepy.addTostudy(p
,",BB,", →, ", 'p 
,",CC,", →, geomepy.addTostudy(line
,",DD,", →,",'line"
,",EE,", →, ",)"
上記の文字列を写真のように入れたら、csvファイルで保存する。
csvファイルで保存したら今度はテキストエディターで開く。その後ダミー文字列を置換する。
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/suku5.png

**スクリプトを統括する [#nd142cef]
-適当な.pyのファイルを作る 例えばtamesi.pyみたいな. 
-ヘッダーに以下のものを入れる
import sys
import salome

salome.salome_init()
theStudy = salome.myStudy

import GEOM
import geompy
import math
import SALOMEDS


geompy.init_geom(theStudy)

それであとは作ったものを貼り付ければ良い。
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/suku4.png

**salome-meca にスクリプトでインポート [#qf0375fd]
salome-meca を開いてファイルからスプリクトを読み込むを選択 > あとはファイルを選択すればいい。


*salome user's guide [#u26c4d94]
-&link(ここ,http://docs.salome-platform.org/7/gui/GEOM/index.html)にいろいろ載ってます、暇な人は翻訳してください
-[[ここ:http://docs.salome-platform.org/7/gui/GEOM/index.html]]にいろいろ載ってます、暇な人は翻訳してください

*salomeの3Dモデル作成手順 [#l86648d5]
-①アプリケーション→グラフィック→salome
-②モードのSalome-MecaをGeometryに変更
-③新しく作成する場合はnewを選択、既存のモデルを読み込む場合はopenを選択

*salomeの基本操作 [#we4d4997]
-①座標の拡大・縮小→スクロールでできる
-②基準の座標移動→ctrl+スクロールを押しながらマウスで移動もしくは上の方にあるマウスボタンをクリック(左クリック)
-③基準の座標回転→ctrl+右クリックしながらマウスで移動もしくは上の方にあるマウスボタンをクリック(左クリック)
*モデル作成に関して(特に複雑なモデルを作成する方へ) [#e02cb55e]
-現在(2017/01/18)多分殆どの人がsalome-meca2013を使っていると思うけど、モデル作成に関しては2015以降のバージョンが格段に作業しやすいので難しいモデルを作る人は新しいバージョンを使うことをお勧めします。また使用しているAsterが古く、対応していない(2013だとver10か11だったかな。最新は13.~)場合、新しいバージョンのSalomeでモデルを作成し、brepファイルにして移動させて(少なくとも2016と2013の互換性あり)計算させましょう。そのほうが早い
*点から(中身が詰まっていない)直方体を作る [#qf348e28]
--プルダウンメニューでGeometryを選択
-New entity→basic→pointで四角形の元となるように4箇所点を打つ。
-New entity→basic→lineで点と点を繋ぎ、四角形の枠を作る。
--図の中で点を選択しようとすると、既に作られたlineの方が選択されてしまうような場合は、Object Browser内の該当する点(Vertex_4とか)を選択する。
-New entity→build→faceで4つのlineを選択し、面を作る。
-operations→transformation→transrationで面を複製、
-operations→transformation→rotationで面を立ち上げる、等により直方体を完成させる。

*Salome-Meca2019で4点から面を作る。 [#fe72e55b]
-新しいエンティティ→ブロック→四角形フェースで4点を選択する


*面から(中身が詰まっている)直方体を作る [#a3a26f02]
-New entity→Build→Shellであらかじめ作った直方体を構成する面をObject BrowserからSHFT+CNTLで6面選択する。
-New entity→Build→Solidで先程作ったShellを選択し、中身を詰める。


*中身が詰まった三角錐を作る [#of7e602c]
-New entity→basic→pointで頂点の座標を打つ。
-New entity→basic→lineで点と点を繋ぎ、三角錐の枠を作る。
-New entity→build→faceで3つのlineを選択し、面を作る。1面ずつしか作れない
-あとは直方体の作り方と同じ


*物体を切り抜いて孔を空ける [#j9318336]
-大きめのボックスから小さめのボックスを切り抜くとする
-まず、ボックスBox_1を作る
-次に切り抜く小さめのボックスBox_2を作る
-操作→変形→変換で「オブジェクトの移動」
--オブジェクトにBox_2を選び、孔を空ける位置までDx,Dy,Dzで移動→適用して閉じる
--translation_1ができる
-操作→ブーリアン→カットで「オブジェクトの切り抜き」
--メインオブジェクトにBox_1を、ツールオブジェクトにtranslation_1を選び、適用して閉じる


*体積を求める [#k0f507b2]
後藤メモ(2014/11/6)
-Salomeで作ったモデルを四面体でメッシュ分割し、unvをエクスポート。
-Mesh_1.unvができてるのを確認したら、
-滝田さんのプログラムを修正した&link(unvc3d4.f90,http://www.str.ce.akita-u.ac.jp/~gotou/programoj/ccx/unvc3d4.f90)を走らせる。たぶんこれでちゃんと体積が求まる。
-&link(四面体の体積の求め方,http://keisan.casio.jp/has10/SpecExec.cgi?path=04000000.%90%94%8Aw%8C%F6%8E%AE%8FW%2F01000600.%8B%F3%8A%D4%8A%F4%89%BD%2F10000100.%82S%93_%82%C5%8C%60%90%AC%82%B3%82%EA%82%E9%8El%96%CA%91%CC%82%CC%91%CC%90%CF%2Fdefault.xml)

直方体は割と正確に(有効数字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)
メッシュの体積も求めることができます
*物体の色を変更する [#l242466d]
物体を木材などの色に変更したいとき
-変更したい物体(例:box_1)をshowしておく。
-box_1のところで右クリックして、colorを選択して変更する。
***Colorが出ない人は…… [#c8d2df82]
-右クリックで Material Properties → Physical のチェックを外す。
-設定は↓これくらいだと、見た目に反映される。
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/kondo/hoka/color.jpg
**色を物体ごとに変えたい時 [#f122d510]
-変えたい物体(box_1,box2)ごとにcreate groupしておく。
-全体(fuse_1)の色をbox_1の色に変更する。
-create groupのツリーの中のbox_2のみをshow onlyする。
-create groupのツリーの中のbox_2で右クリックcolorを選択し、変更したい色を選ぶ。
-fuse_1をshowしてから、ツリーのbox_2をshowすると2色になる。

*2つの画面で物体を見比べるには [#h9ec54a9]
例えば、Mesh_1とMesh_2を見比べたり、Post-Proの結果を見比べたいとき

-Window→New Window→VTK 3D view
-viewer:1とviewer:2で見比べたいものをshowにする
-Window→Split Vertically(横に並ぶ)
-Window→Split Horizontally(縦に並ぶ)


*2材料の場合(Aster Study) [#j7852999]
-Material -> DEFI_MATERIAUを2つ作成し,それぞれヤング率とポアソン比を入力
--名前は自分で分かるように適当に決める(鋼材=kou, 木材=mokuとか)
---以下,kouとmokuで説明
-Material -> AFFE_MATERIAUは1つだけ
--Material assignementの+をクリック -> edit -> 「Exactly One」 -> Group of elementで鋼材の材料定数を割り当てるグループを全て選択
---Material -> さっき作成したDEFI_MATERIAUのうち,kouを選択 -> OK
--Material assignementをもうひとつ増やしクリック -> 「Exactly One」 -> Group of elementで木材の材料定数を割り当てるグループを全て選択
---Material -> さっき作成したDEFI_MATERIAUのうち,mokuを選択 -> OK -> OK
*2材料を解くためsalomeでグルーピングするには [#t7e30868]
材料が2つのとき

-例えば部材がbox_1の上にbox_2が乗っかっているモデルだとする。
-SALOME↓のプルダウンメニューからGeometryを選択→New
上部タスクバーのNew Entity→Primitive→Boxを選択。
-寸法は好きなようにする。Box_1ができる。
-operations-transformation-translationで、Box_1を動かし、Box_1の上にちょうど乗っかるようにする。Create a copyのチェックはつけたままにする。(チェックボタンは他も弄らなくてよい)
-Box_2ができる。
-box_1とbox_2の境界面をpartitionで区切らなければいけないため、create groupを行う。
-ツリーのbox_1を右クリックし、Create Groupを選ぶ。
-ラジオボタンで、□(面)を選び、Main Shapeに面を指定する物体を選ぶ。(box_1とする)
-Geometryにbox_1だけを表示させて、box_2と接している面をクリックして、Add-Apply and Close 。ツリーのbox_1の下に、Group_1ができる。
-これでpartitionのための設定が終わる。
-box_1とbox_2を一体化させてメッシュを切るので、Fuseする。
-Operations-Boolean-fuse で、object 1 - box_1 、object 2 - box_2 と選び、apply and Close。Fuse1ができる。
-Fuse1をpartitionで区切る。Operations-Partition を選び、Objects - Fuse1 と指定し、
Tool Objectsには、ツリーのbox_1の下できているGroup_1を選び、Apply and Close。
-Partition_1ができる。

-Mesh画面にいき、Partition_1を選択してメッシュを切る。(ここでMesh_1ができるとする)
-メッシュを切ったら、グルーピングを行う。Fuseしたモデルを切ったMesh_1を右クリックしてCreate Groupをクリック。
-Mesh - Mesh_1、Element Type - Volume、Name は(かぶらなければ)好きなようにつける。まあ、Group_1mとする。(Groupの名前はGeometryにあるものとかぶっても問題はなさそうだけど。)
-Group type ではGroup on filterにチェックを入れる。すると、Set Filterボタンが現れるので、クリックする。
-Filterの設定画面が出るので、Add 。
-今回は、Geometry のモデルでフィルターをかけるので、Criterion - Belong to Geom 、Compare - Equal to を選ぶ。
-そして、Threshold の中の空白をクリックしたら、ツリーの中からbox_1を選択。良ければApply&closeしてGroup設定画面もApply&close。
-これで、box_1の部分のメッシュがすべてGroup_1mに入れられたことになる。

-もう一度Create Groupする。今度はbox_2の部分のメッシュをグルーピングする。
-MeshにMesh_1、Element Type にVolume、NameはGroup_2mとかにする。
-Group type ではGroup on filterにチェックを入れる。すると、Set Filterボタンが現れるので、クリックする。
-Filterの設定画面が出るので、とりあえずAdd をクリック。
-Criterion - Belong to Geom 、Compare - Equal to を選ぶ。
-Threshold の中の空白をクリック、ツリーの中からbox_2を選択。Apply&closeしてGroup設定画面もApply&close。
-これで、box_2の部分のメッシュがすべてGroup_2mに入れられたことになる。
-unvファイルを保存したい場合は、Mesh_1を右クリックして、unvファイルを保存する。

-要素数が多ければ多いほど、グルーピングにかかる時間が増える(ものすごく重くなる)
ので、性能のいいPCを使ったほうがいい。当然、Salome以外の余計なものを開いているならグルーピングの前に消しとく(大事なデータは保存しとく)ほうがいい。


-メッシュをC3D4で切り、2つにグループ分けしたものを、ccxc3d4unv2.f90で解く場合:
&link(ccxc3d4unv2s.f90,http://www.str.ce.akita-u.ac.jp/~gotouhan/prog/ccxc3d4unv2s.f90)
-http://www.salome-platform.org/user-section/salome-tutorials/example-of-group


-以下のModel Definitionの設定を2材料の場合に書き換えていきましょう
http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s30meshrm.png

-Model Definition -> Assign finite element

-メッシュ : mesh(LIRE_MAILLAGE) (Read a mesh で付けた名前)が自動的に選ばれる(ちなみに、LIRE MAILLAGEはRead a meshのフランス語)

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s30a_model.png

--At Least One -> Finite element にチェック

--"0 items +"の+をクリックすると、"1 item"に変わり、

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s31edit.png

--Editが現れるのでクリックする。

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s32pheno.png

---Exactly One : Everywhere : Yes (1材料なら)
---(2材料以上なら):Group of element -> Edit -> …
---Phenomenon -> Mechanicを選択すると、

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s33items.png

---"0 items +"が現れるので、"+"のところをクリックすると、"1 item +"に変わり、その下に空欄と▽プルダウンが現れるので、▽プルダウンをクリックすると、

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s34item.png

---プルダウンメニューが現れるので3D (立体要素なら)を選択

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s35_3d.png

--OKをクリックすると、プルダウンが消えて"At Least One"の画面に戻るので、もう1回OKをクリックすると

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s36mesh.png

--左側のData Settingsに"model"が追加される。

http://www.str.ce.akita-u.ac.jp/~gotouhan/salome/gazou/s37model.png




*salomeで.unvをつくり、プログラムで.inpにする方法 [#b45d6208]
-メッシュを切るときは、事前に、SalomeのMesh画面で、
File-Preferences-Mesh-General-のSize limit(elements)の数を、
50000からNo limitにするか99999999とかにして、
Mesh InformationのAutomatic nodes compute limitも同様にしておくと、
computeした時のメッシュが多くなりすぎるよ、というエラーが出なくなる。

**四面体要素C3D4 [#x70c8bc8]
***メッシュを切る手順 [#qa0603a8]
-SALOME↓のプルダウンメニューからGeometryを選択→New
--上部タスクバーのNew Entity→Primitive→Boxを選択
--DX:100, DY:200, DZ:1000とかにしてApply and close(梁は軸がz, たわみ方向がy)
-Geometry↓のプルダウンメニューからMeshを選択
--MeshのCreate Meshを選択。C3D4でメッシュを切るので
Assign a set of hypothesesから3D Automatic tetrahedralization(tetrahedron (netgen) を選択
--Create meshウィンドウで、Geometryの脇の矢印をクリックしてから、
左のObject Browser内のBox_1をクリックするとGeometryにBox_1が選択される。
--Apply and close

--左のObject Browser窓内のMeshを右クリックしてComputeを選択するとメッシュ分割
--Mesh computation succeedウインドウに書かれたNodes, Edges, Faces, Volumesの数は、c3d4unv.f90を使うときに使うので適宜、メモしておく(ウインドウを開いたままにしておく)
--できたMesh_1とかを右クリックしてunvファイル保存


-材料が1つの時は&link(c3d4unv.f90,http://www.str.ce.akita-u.ac.jp/~gotouhan/prog/c3d4unv.f90)をダウンロードして、
--c3d4unv.f90内の、Nodes, Edges, Faces, VolumesをMesh computation succeedウインドウで表示された数値に書き換える。
--ヤング率、梁の長さell、荷重を書き換える
--境界条件(z=0を拘束), 載荷条件(z=ellでy方向)を適宜、書き換える
--実行すると、mesh_1.inpができる。

--ccx_2.5 mesh_1 でmesh_1.inpの入力データをCalculiXで解く
--mesh_1.datに計算された節点変位等が出力されている。

--cgxを使った境界条件の設定をしたい場合にはSalomeメモの&link(このへん,http://www.str.ce.akita-u.ac.jp/cgi-bin/gwiki/wiki.cgi?Salome%a5%e1%a5%e2#i14)が有用
面載荷したい場合は.inpのCLOADをDLOADに変えて、cgxで載荷節点を設定して吐き出した.dloを読み込むように書く。

**直方体要素C3D8で切る手順 [#o339f1eb]
-普通にモデルを作ったあと、Mesh-Create Meshから、
-Assign a set of hypothesesから3D Automatic Hexahedralization を選択。
-Number of Segments で 分割数を決める。
-Type of distrubution-は、Equidistant,Scale,Distribution with table,
Distribution with analitic densityの4つがある。
-Distribution~はf(t)=[]となどの関数指定系。
(このType of distrubution-について有用なことを知っている人は詳しく書いてください。)

-&link(c3d8unv.f90,http://www.str.ce.akita-u.ac.jp/~gotouhan/prog/c3d8unv.f90)
を使い、c3d4unv.f90と同じように、荷重条件、ell,Node,edge,Face,volume,ヤング率・ポアソン比を適宜書き換え、unvをinpにする。
-参考資料&link(メッシュをC3D8要素とかで切っていて、軸方向に多く切りたい,http://www.str.ce.akita-u.ac.jp/cgi-bin/gwiki/wiki.cgi?%c0%c6%c6%a3%b5%b1%a4%ce%bd%a4%cf%c0%c6%fc%bb%ef#i30)


*salomeでダイヤカットを作る [#aa4e7634]
**c3d4or3dプリンタ用 [#m41aed1d]
-new entity-basic-circleで円を作る
-new entity-basic-pointを選択
-真ん中の直方体みたいなのを選んぶ
-by parameterを選ぶ
-Edgeにさっき作ったcircleを選ぶ
-parameterを0~1まで変化させるとそれに対応した点をcircle上に打てる
-1を周方向分割数で割った数ずつ変化させて点を打つ
-もう一個circleを作る
-それをoperations-transformation-translationで
-高さ方向に動かす
-さっきと同じように点を打つが始まりのparameterを
-0ではなく1を周方向分割数の2倍で割った数にしてはじめて
-1を周方向分割数で割った数ずつ増やしていく
-上の作業を半径を小さく下circleを使って同じように行う
-new entity-build-edgeで辺を作る
-上と下の面の辺を new entity-build-wireでつくる
-内側は内側、外側は外側のedgeをつなげるといい
-できたら wireを二つ使って new entity-build-wire
-これを上の面としたの面を作る
-三角形の面のedgeをwireにしていく
-wireにしたらそれをfaceにする。
-fuseして内側と外側の面を作る
-できたものをfuseしていく
-全部fuseしたらnew-entity-build-shellでshellにする
-できたshellをsolidにする new-entity-build-solid
**s6用 [#of6078e9]
-new entity-basic-circleで円を作る
-new entity-basic-pointを選択
-真ん中の直方体みたいなのを選んぶ
-by parameterを選ぶ
-Edgeにさっき作ったcircleを選ぶ
-parameterを0~1まで変化させるとそれに対応した点をcircle上に打てる
-1を周方向分割数で割った数ずつ変化させて点を打つ
-もう一個circleを作る
-それをoperations-transformation-translationで
-高さ方向に動かす
-さっきと同じように点を打つが始まりのparameterを
-0ではなく1を周方向分割数の2倍で割った数にしてはじめて
-1を周方向分割数で割った数ずつ増やしていく
-new entity-build-edgeで辺を作る
-new entity-build-faceで面を作る
-作ったfaceをfuseでくっつける
-くっつけた奴をoperations-transformation-mirror imageで反転させる
-objectにfuseしたモデルを選び
-point mirror x=0 y=0 z=一段分の高さの点をnew entityで作り選ぶ
-それでできた形とfuseしたものとをfuseで合わせる
-これでダイヤカットの基本形ができたので
-あとはこれをoperations-transformation-translationで
-動かしてfuseを繰り返して自分の作りたい形を作る
*Salomeモデリング上の注意 [#l51a9458]
-Salomeでモデリングの際に入力した座標はinpファイルにすると1000倍大きい値になる
-1000倍にならなくなっている
-E-003とかついてるところは文字がおおくて読めないので何文字か消さないと行けない
*計算結果をcsvファイルで出力 [#ke11c7be]
**手順 [#d26be7e5]
--Asterの.commファイル作成まで進める
--Object BrowserのAsterを展開→linear-static展開→Data展開→hoge.commを右クリック
→Run Eficas→OK
--Commandeの下の方IMPR_RESU:を展開→RESU:展開→b_extrac展開→NOM_CHAM選択→Valeur(s) possibles(s)から結果が欲しい項目を選択して左向きの指差しボタンをクリック(デフォルトであるのはSIGM_NOEU(応力テンソル),SIEQ_NOEU(相当応力),DEPL(変位量))→Validerで完了→フロッピーのアイコンをクリックで保存→閉じる
--Asterで計算→計算後フォルダの中に「linear-static.rmed」というファイル作られるので
--(
$cp linear-static.rmed linear-static.med
--)
とかで拡張子を.medに変更する
--SALOMEのプルダウンメニューからParaViSを選択
--メニューバーFile→Open Paraview File...→「linear-static.med」を選択
--真ん中左のApplyをクリック→SurfaceとあるプルダウンメニューからPointsを選択
--画像の位置にある「Select Points Through」を選択→クリック&ドラッグで結果の欲しい節点を選択する(現れる矩形にオブジェクト全部入れてしまえばいいと思う)
http://www.str.ce.akita-u.ac.jp/~gotouhan/emura/salome/spt.png
--メニューバーFilters→Data Analysis→Plot Data→画面左のPipeline BrowserにPlotDataができる→それを選択してすぐ下のApplyをクリック
--現れたグラフの右上の「日」をクリック→出てきたCreate ViewからSpreadsheet Viewを選択→結果の数値が表で出現
--メニューバーFile→Export→名前をつけてOK→完了

*メモ [#d7af1dc1]
**New Entity [#n74f64b4]
***Primitive [#d9f25932]
-syrinder   円缶の作成
-box        直方体の作成
-cone       円柱~円錐の作成
-Disk       円の面
-rectangle  四角の面
-sphere     球
***basic [#p0cbc503]

**Delete all?が出たら [#l0f696f2]
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2019/aoyama/deleteall.png
Salomeを閉じるときにたまに出るやつ.
これが出たら「はい」を押そう.「いいえ」を押すとAster Studyのコマンドファイルが消えてしまう.

*SALOMEで形状生成 → Netgenでメッシュ切り → cgxで境界条件設定 → CalculiXで計算 [#le43dae4]
**手順 [#tcdd7cb5]
***SALOME [#t1b26af3]
--任意の形状を作る
--メニューバーFile→Export→Files of typeをSTEP Filesにして保存
***Netgen [#n18ff250]
--メニューバーFile→Load Geometry→さっきつくったhoge.stepを選択
--メニューバー一段下のGenerate Meshを一回クリック→メッシュが切れる
--メニューバーRefinement→Refine Uniformをクリックしただけ細かくメッシュが切れる
(細かく設定できるみたいだけどひとまずおいておく)
--File→Export Filetype→Abaqus Formatを選択
--File→Export Mesh→hoge.inpで保存
***cgx [#k26b5a52]
--(
$cgx -c hoge.inp
--)
を実行でさっきつくったhoge.inpを開く

以下のcgxコマンドは全部「CalculiX Graphix」ウィンドウ(以下cgxウィンドウ)が手前にある状態で入力
--(
plot n all
--)
で全節点を表示
--cgxウィンドウのオブジェクトが映っている枠の外で左クリック押しっぱなし→Orientation→適当な面で左クリック離す
--hageという名前で拘束する節点を決定していく
--(
qadd hage
--)
を実行
--cgxウィンドウ内でaキーを打つ→
--(
mode:a
--)
と表示される
--cgxウィンドウ内でrキー入力→ポインタを動かしてr入力→節点を選択するための矩形が表示される
http://www.str.ce.akita-u.ac.jp/~gotouhan/emura/cgx.png
--例えばいわゆる片持ち梁にするときは図のようにして拘束したい節点を矩形の中に入れてnキーを入力(奥行き方向の節点が全部選択される)
--qキーで選択終了→
--(
plot n hage
--)
で確認
--次にhigeという名前で載荷面を決定していく
拘束点と同じように
--(
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は面載荷、数字は荷重)
--エディタでhoge.inpをひらく
--(
*Node [#bf08e3d4]
--)
という行に
--(
*Node, NSET=Nall [#kf4caa4e]
--)
と追加して
--(
*Element, type=C3D4, ELSET=PART1 [#ye620a9c]
--)
という行の「PART1」を「Eall」に変更する
--ファイルの最終行からCalculiXの計算に必要な箇所を挿入する。
(上記の方法で進めてきたら&link(これ,http://www.str.ce.akita-u.ac.jp/~gotouhan/emura/salome/inp.inp)をコピペでok
--(
$ccx_2.3 hoge
$cgx -v hoge.frd
--)
で確認、.datファイルも作られている
--参考
http://www.youtube.com/watch?v=l7rEK3JuA0s&list=FLP_VhQB7_mdzDeVCwhp3RKg&index=3&feature=plpp_video
***荷重のかけ方 [#u6f99f0d]
--(
send hige abq force 1. 2. 3.
--)
--節点ごとに荷重を加える場合はforceにする
--最後の値はそれぞれx,y,z方向の荷重を表している
--点荷重の場合はCLOADにする


*直方体に直方体メッシュを切って、拘束、載荷する手順 [#p613a226]
-SALOME↓のプルダウンメニューからGeometryを選択→New
--上部タスクバーのNew Entity→Primitive→Boxを選択
--DX:100, DY:200, DZ:1000とかにしてApply and close
-Geometry↓のプルダウンメニューからMeshを選択
--MeshのCreate Meshを選択
--Assign a set of hypothesis から Hexahedralizationを選択
--Number of segments を10とかに選択
--左のObject Browser窓内のMeshを右クリックしてComputeを選択するとメッシュ分割される
-↓プルダウンメニューをGeometryにしてNew Entity→Group→Create
--まずは拘束面の指定
--Shape of typeで面だったら□のところにチェック
--左のObject Browser窓内のBoxを選択して、Main shapeの更新矢印をクリックして選択(自動的に選ばれている場合は不要)
--マウスを選ぶ面のところに持っていって輪郭線が青になったらクリックすると白くなる
--Add→Apply and close
--左のObject Browser窓内にGroup1ができてる
--次に載荷面の指定:上記のNew Entity→Group→Create以下を繰り返す
--左のObject Browser窓内にGroup2ができてる
-モデルを画面内で上下左右に動かす場合は、Panning(四方矢印)ボタンをクリック
-Geometry↓のプルダウンメニューからAsterを選択
--上部ツールバーのAsterからWizards→Linear elasticを選択
--Model definitionで3Dを選択→Next
--Mesh selectionで左のObject Browser窓内のMesh+をクリックして
--Mesh_1を表示させて選択し、Mesh selection窓内の更新ボタンをクリックして選択しNext
--ヤング率とポアソン比を入れる→Next
--Boundary Conditionで拘束面(Group1)についての拘束条件(u=0,v=0,w=0)を入れてNext
--載荷面(Group2)についての載荷条件(Pressureしか選べない)を設定してNext
-コマンドファイル保存画面が出るのでhoge.commを保存
-左のObject Browser窓内のAster+をクリックしてLinear elasticを出して右クリック
--すると出てくるRUNをクリックすると計算実行
-↓のプルダウンメニューからPost-Proを選択
--左のObject Browser窓内のPost-Proの+を順次展開していって、
--Linear elastic→MAIL→Fieldsの辺りに変位や応力の結果表示?が入っている



*SalomeからCalculiXのinpファイルを生成 [#f382a73d]
**SalomeのunvファイルをCalculiXのinpに変換 [#b1f75e3d]

-まず、Salomeでメッシュ生成まで行ったら、unvファイルにエクスポート
-それをGmshでマージ
-Gmshで、Abaqus inp形式で、例えばsalome.inpと名前をつけて保存。
-直方体要素に関しては、&link(ここ,http://www.str.ce.akita-u.ac.jp/~gotou/programoj/#salome)の
&link(ccxc3d8.f90,http://www.str.ce.akita-u.ac.jp/~gotou/programoj/ccx/ccxc3d8.f90)を使って、inpファイルを以下のように修正する。
--Salomeで生成したメッシュデータをGmshでinpに変換して
--CalculiX用のinpファイルを作るためのプログラム(C3D8直方体要素用)
--まず、Salomeで適当に直方体要素のメッシュを切る
--それをUNV形式でsalome.unvに保存。
--次にGmshのFileのMergeでsalome.unvを読み込んで、
--Abaqus inp形式でsalome.inpに保存。
--salome.inpの冒頭にある節点番号と座標が並んでいる部分を
--setten.inpにコピーし、冒頭に節点数を記入。
--salome.inpの末尾にある要素番号と要素を囲む節点番号が並んでいる部分を
--youso.inpにコピーし、冒頭に要素数を記入。
--ccxc3d8を実行すると、ccxc3d8.inpが生成されているので、
--cgx -c ccxc3d8.inp で読み込んで拘束節点と載荷節点を設定(上に書いてある方法)し、それらを出力。
--出力した拘束節点と載荷節点をccxc3d8.inpに読み込んで
--&link(この辺を参考に,http://www.str.ce.akita-u.ac.jp/cgi-bin/gwiki/wiki.cgi?CalculiX%a5%e1%a5%e2#i8)拘束条件と載荷条件を適切に設定。


----
--(
$/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のサイトのどこかにあるアップデート版を
使うとうまくいくのかもしれないが、教室会議...
-http://www.caelinux.org/wiki/index.php/Proj:UNVConvert
これもだめっぽい。

**SalomeのmedファイルをCalculiXのinpに変換 [#vaf62811]
-http://www.caelinux.org/wiki/index.php/Proj:MedAba
zipファイルをダウンロードして解答してインストールしようとするとうまくいかないが、
バイナリーが最初からCAELinuxに入っているので、
以下のように実行。
--(
$/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 
--)
みたいなエラー。


*例題 [#te1be7f8]
-&link(SalomeとCodeAsterでシェル解析する例?,http://www.caelinux.org/wiki/index.php/Contrib:KeesWouters/shell/static)

*マニュアル和訳 [#j30de5e1]
-&link(こっちに,http://k2.ce.akita-u.ac.jp/cgi-bin/g2wiki/wiki.cgi?SALOME%cf%c2%cc%f5)(アクセス制限あり。学内のみアクセス可)

*計算サーバーのsalomeを使う手順 [#n29edb7a]
-ssh -CX ユーザー名@hogehoge.hoge.jp
として、計算サーバーにログイン(アドレスは柴田さんが知ってる)
-salome& でサロメを起動(同時に何人ぐらいまで使えるかは不明)
-salomeを終了してもちゃんと終了していないことがあるので、
--ps ux|grep salome を実行して、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する。
--コマンドプロンプトがちゃんと戻ってこなかったらcntl+c

*動作状況等 [#y7488ebf]
&link(Salome,http://www.salome-platform.org/)5.1.3のバイナリー版は、
Vine5.1上では、起動はするが、Geometryなどの新規作成をして、ちょっと動作させようとすると、
--(
&link(SIGSEGV 'segmentation vilolation' detected. Address 4,http://www.google.com/search?as_q=SIGSEGV+%27segmentation+vilolation%27+detected.+Address&hl=ja&num=100&btnG=Google+%E6%A4%9C%E7%B4%A2&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images)
--)
のエラーが出てハングアップする。
まだ、調査中だが、Ubuntu9.10では、上記のエラーは出ずに走っているようだ。
Salome専用サーバーをUbuntuで立ち上げようか。
&link(日本語TeX環境の快適さ,http://www.str.ce.akita-u.ac.jp/~gotou/linux/vine.html#vine5)を考えると、学生用の(後藤用のも)端末は、
Vineの方がいいだろうが。

**練習 [#tffa7aa0]
&link(ここ,http://salome-meca.cocolog-nifty.com/blog/2012/02/30-f8fd.html)
と同じ事をやろうとするとメッシュを切るまでは問題なく進むが、
そのあとAsterに切り替えた瞬間に

 Fatal error
 SIGSEGV 'segmentation violation'detected Address 18

と表示され動かなくなる(Address 0 も確認)。Terminalでどんなエラーが出力されるかよく見る必要がある。
***追記 [#r71737a9]
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のフォーラム:http://www.salome-platform.org/forum/forum_9/592183655#698092349]](古いけど)を見る限り、有効な解決策はないみたい。

-NVIDIA no driver wo iretara douka
--https://qiita.com/riv/items/345373398cf30d16b8ad

*code-asterの基本的な使い方(線形弾性) [#m6ab9935]
 code-asterにはかなりたくさんの機能がある。詳しい使い方は&link(ここ,http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?SALOME-Meca%A4%CE%BB%C8%CD%D1%CB%A1%B2%F2%C0%E2)に載っている。

**code-asterコマンドリスト [#i3f8a3c2]
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
-3.設定→荷重の設定 FOACEは間違い 正しくは○FORCE

**「geometry」で固定や載荷をするところをつくる [#xb6480d7]
-目的とする物体(box1とか)を右クリックして、「create group」
-立体・面・線・点のどれかにチェックをいれて、固定や載荷をするところを選択
--後で何度もここを選択するので、fixとかkoteiとかの分かりやすい名前のほうがいい
---超重要:バージョンによるかもしれないが、名前は8文字以下にしないと原因不明のエラーが出る!!
-add→apply(and close)
-一つのツリーにまとまっていればOK

-注:後でひずみのグラフを見るときのため、(軸方向-見たい変位方向)の関係が(x-y)か(y-z)か(z-x)になるように、載荷するところをつくる。
--たとえば、z軸方向に軸をとったとき、x軸方向に荷重をかける

**「mesh」でメッシュ分割 [#j8c14a51]
-(固定面や載荷線などを含んだ)ツリーの元を選択して、create mesh で好きなようにメッシュ分割し、compute
-ちなみに、メッシュ分割後も右クリックで「create group」できる。
--meshを右クリックして、「convert to quadratic」をクリックし、applyすると、(中間節点を設けた)2次要素になるので新井メッシュでも精度がよくなる。

**「aster」で条件を入力 [#p1231c93]
-aster→wizards→linear erastic
-「3D」NEXT
-計算したい物体(メッシュ)を選び、境界条件を
--meshで作ったグループで指定したい場合は、「Use mesh groups」に
--geometryで作ったグループで指定したい場合は、「Use geometrical groups」に
-チェックを入れて、NEXT
-ヤング率とポアソン比(この数値はあとで変えられる)を入力して、NEXT
-支点の選択をして、NEXT
--groupをダブルクリックすると、支点を選択できる。
--「+」、「-」をクリックすると支点を追加したり、消したりすることができる。
--拘束条件は後で変えられるので「DX,DY,DZ」はあまり気にしなくてもいい。
-同様に、載荷箇所と荷重を指定して、NEXT
--これも後で、荷重の種類・大きさ・方向等を変えられる。
-commファイルに分かりやすい名前を付けて保存する。

**「commファイル」で各条件を編集 [#y8526192]
-&link(ここ,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)とかに書かれているコマンドを参考にcommファイルを書き換える。
--注:表の「FORCE」を「FOACE」と書き間違えているので、他にも間違いがあるかも?
-よく書き換えそうなところを以下に記す。

--単位
, 長さ , 応力 , (集中)荷重 , 線荷重 , 面荷重 
, m , Pa , N , N/m , N/m$^2$
, mm , MPa , N , N/mm , N/mm$^2$
---他の単位を使いたいのなら、&link(ここ,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=01-00.pdf)のp.25を参照。でも、MKS単位の密度は、"kg/mm^3"でなくて、"kg/m^3".他にも間違いがあるかも?

--材料定数
--(
MA=DEFI_MATERIAU(ELAS=_F(E=206000000000.0,
                         NU=0.3,),);
--)
 ヤング率E,ポアソン比NUなどの材料定数の値をここで書き直せる。
---複合材料の場合、MAを消してMA1,MA2(名前は何でもいい)とかを書き足せばいい。例えば、
--(
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,),);
--)
---ここの「TOUT」は、全てを材料指定の対象としているので、材料が一つだけの時に使える。
---ここの「MATER=」を先ほどの材料定数の名前と対応させる。
---また、複合材料の場合、例えば次のように書き足せばいい。
--(
MATE=AFFE_MATERIAU(MAILLAGE=MAIL,
                   AFFE=_F(GROUP_MA='part1',
                           MATER=MA1,),
                        _F(GROUP_MA='part2',
                           MATER=MA2,),);
--)
---ここの「GROUP_MA=」では、体積・面・線のグループで材料を指定している。これをsalome-mecaのasterで選んだ物体の名前と対応させる。

--境界条件、荷重条件(片持ち梁を例に)
--(
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,),
                    );
--)
---「DDL_IMPO」は変位の設定で、境界条件を体積・面・線にかける場合「GROUP_MA」でグループを指定する。
---'fix'はgroupで作った固定端の名前。ローラ支持の場合、「DX=0.0」とかを消す。
---ここでは面荷重なので「FORCE_FACE=」(単位面積当たり)になっているが、荷重の種類によって、「FORCE_ARETE」(単位長さあたり)や「FORCE_NODALE」(点に載荷)に変える。例えば、
--(
                    FORCE_NODALE=_F(GROUP_NO='load_n',
                           FX=1000.0,),);
--)
        は点載荷だが、これを断面積A=0.01$^2$πで割ったものが、先ほどの面載荷で、実際にたわみはほぼ同じになる。
---'load_f'と'load_n'はそれぞれgroupで作った載荷面と載荷点の名前。
---ここでは「FX」でX方向に載荷しているが、軸の方向に気を付けて適宜「FY」、「FZ」を使う。

---「MX」、「MY」、「MZ」でモーメント力も入れられるようです。

---ちなみに部品の連結とかの条件をいれたい場合も「CHAR=AFFE_CHAR_MECA(MODELE=MODE,」の中に書き加える。

-salome-mecaのasterに戻って、「linear-static」を右クリックして、RUN
-成功していたら、その下に「post-pro」ができる
-「post-pro」ができていなかったとき、「linear-static.mess」や「linear-static.resu」というファイルを見ると、どこでエラーが起きたかが確認できる。

***要素数が多くて計算が出来なかったときの対処方法 [#e4d4acdb]
-「linear-static.mess」を確認すると一番下にtotalの計算時間が出ているのにも関わらず、「post-pro」が出来ていないとき
--メッシュが細かくて、要素数が多いとcommファイルが適切に書かれていても、計算が途中で終わってこうなる。

-aster→linear-staticを右クリック→edit
-下の方にスクロールすると、「total memory=256MB」と「time=120s」があるので、この値を大きくする
--例えば、榎戸正一 『開発現場で活用できるオープンソースCAE①』では、複雑な構造物に対して、「total memory=500MB,time=500s」に変更している。

**「post-pro」で結果の表示 [#d036fe08]
-*linear-static.rmed→fields

-変位(色と見た目)
--resu___depl→mail→0を右クリックして「deformed shape and scalar map」
--「deformed shape and scalar map」の「scale factor」で変位の見た目の大きさを変更
--「scalar bar」の「scalar mode」を見たい変位方向にチェックを入れて、OK
--OKを押したあとでも、再び「deformed shape and scalar map」を右クリックして、editを押すと諸量を変更することができる。
---ちなみに、「deformed shape and scalar map」を右クリックして、sweepを押すと、変形の動画が見れる。

-変位(各節点の数値)
--resu___depl→mail→0を右クリックして「values laveling」
---メッシュが細かいと文字同士が重なって見えないうえ、salomeの拡大・回転の動作が著しく遅くなるので、予め読み取りたい節点について拡大表示してからするといい。

--見たい断面があるなら、
---resu___depl→mail→0を右クリックして「cut planes」して、
---切りたい平面をorientationで選択し(//Z-X とか)、
---その平面をrotationsで回転させ(普通 0のまま)、
---切りたい面の数をnumber of planesで選択し(普通 1)、
---set defaultのチェックを外し、切りたい箇所の座標(平面がZ-XならY座標)を入力し、
---okをクリックしてから、見る。
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/kondo/hoka/cutlines2.jpg

--見たい線があるときも同様に、
---resu___depl→mail→0を右クリックして「cut segment」
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/kondo/hoka/cutsegment2.jpg

-変位(グラフと表)
--グラフ1(ある断面を複数の線で)
---resu___depl→mail→0を右クリックして「cut lines」
---「plane of lines」の「orientation」が「軸方向-変位方向」になるように選ぶ(例えばz-x)
---「cut planes」の「orientation」を軸方向を含む平面を選ぶ(先にz-xを選んだ場合はy-z)
---「cut planes」の「number planes」を切りたい数に指定しOK
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/kondo/hoka/cutlines.jpg

--グラフ2(座標指定した単一の線で)
---resu___depl→mail→0を右クリックして「cut segment」
---「cut segment」の「segment」を見たい線の始点と終点の座標を入れる
---「scalar bar」の「scalar mode」の方向を指定してOK
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/kondo/hoka/cutsegment.jpg

--表
---「cut lines/cut segment」の左の「+」をクリックすると「table」がでる
---「table」を右クリックして、「show table」
---メッシュが粗いと、変位に空白の欄が多くなる。
---ちなみに、「export table」でcsvファイルにエクスポートできる。
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/kondo/hoka/cutcsv.jpg
---X:切った線の全体を1.0としたときの割合、Y○:切った線ごとの変位とか(4面体要素なので、ほとんど",,"で欠落している)

-応力
--resu___sieq→mail→0を右クリックして「deformed shape and scalar map」→「scalar bar」
--「scalar mode」を出力したい応力
---ミーゼス応力なら、[1]vmis
---引張と圧縮で符号を付けたミーゼス応力(本当はない?)なら、[6]vmis_sg
---最小主応力なら、[3]prin_1
---最大主応力なら、[5]prin_3
--にチェックをいれてOK

-各方向の応力
--resu___sigm→mail→0を右クリックして「deformed shape and scalar map」→「scalar bar」
--「scalar mode」を出力したい応力
---[1]sixx$=\sigma_{xx}$
---[2]sixy$=\tau_{xy}=\tau_{yx}$
---[3]siyy$=\sigma_{yy}$
---[4]sixz$=\tau_{xz}=\tau_{zx}$
---[5]siyz$=\tau_{yz}=\tau_{zy}$
---[6]sizz$=\sigma_{zz}$
--にチェックをいれてOK

**「paravis」で結果の表示 [#p9ece13f]
-rmedファイルを開く
-filterから、任意の箇所のグラフがつくれる。

**rmedファイル(結果)をテキストファイルにするには [#w16f47aa]
***commファイルの編集(unvファイル) [#l586c50b]
 初期状態では、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',
--)
--追記:'IDEAS'よりも、'RESULTAT'にしたほうが、かなり見やすいです。

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

--追記:&link(ASTK,https://sites.google.com/site/codeastersalomemeca/home/code_aster-1/astk-validation)を使うと、拡張子も指定できます。medファイルと他のファイル複数を一括で出力できます。
-変位: "/DEPL" +Enter(+n)  ,さらに節点番号○○で指定する場合 "/N○○" +Enter
--並びは、"DX DY DZ DRX DRY DRZ"の順。
-主応力: "/PRIN" +Enter(+n)  ,さらに節点番号で指定する場合 "/N○○" +Enter
--並びは、"? VMIS ? PRIN_1 PRIN_2 PRIN_3"の順。
-ミーゼス応力: "/VMIS_SG" +Enter(+n)  ,さらに節点番号で指定する場合 "/N○○" +Enter
--1列目のみ。
-応力テンソル: "/SIGM" +Enter(+n)  ,さらに節点番号で指定する場合 "/N○○" +Enter
--並びは、"SIXX SIXY SIYY SIXZ SIYZ SIZZ"の順。

ちなみに、載荷線or面などのグループの節点番号を調べたい場合は、
-1."/  2477"で「グループ情報のヘッダー」へ行くと、
--グループ名の下の行に"8 線or面or要素番号 0 0"が書かれているので、
---astkでunvファイルを出力すると、"7 節点番号 0 0"というように直接節点番号が出るみたい。
-2."/  2412"で「線、面、要素情報のヘッダー」へ行き、
-3."/ 線or面番号"を調べると、
その下に節点番号が書かれている。

***Gmsh経由(posファイル) [#af12a77d]
 ぱっと見、節点番号が表示されていない気がしますが……。
-Gmshでrmedファイルを読み込んで、"Save As..."からGmsh Mesh-based(*.pos)形式でエクスポートすれば中身が見れる模様。

*直方体要素での解析方法 [#bcc0f13a]
https://sites.google.com/site/codeastersalomemeca/home/salome-meca-chutoriaru1/meshmojuru#TOC-6-Geometry-を参照した
-Meshモジュールで[Mesh]を選択
-[Create mesh]
-[Geometry]に作成した図形を選択する
-[Assign a set of hypotheses]を開き、[3D Automatic Hexahedralization]を選択する
-[Number of Segments]のウィンドウでは[Cancel]を押して何もしない
-タブを[1D]に切り替える
-[Hypothesis]の歯車ボタンを押して、[Max Size]を選択する
-[Length]を設定して[OK]を押す
-[Apply and Close]

-[Compute]して、計算させると下図のような「!」がついてしまう。
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/okumura/error.png
-Asterモジュールでこの[!Mesh_2]を選択するとエラーメッセージが出る。「寸法が一致していない」という意味だと思うが・・・
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/okumura/error2.png

**(解決したらここに方法を書く) [#s2ba5893]

*熱関係 [#ic22d8f8]
**asterで熱を解くやり方(材料一つ) [#d14ebda7]
-まず、メッシュの切り方が重要である。試したところ、四面体要素では解析できなかったので、次のように設定して解くことをおすすめする。もしかしたら、四面体でできるかもしれない。
-3Dタグでalgorithmをhexahedron(i,j,k)にする。
-2Dタグでalgorithmをquadrangle(mapping)にする。
-1Dタグでalgorithmをwire discretisation、hypothesisでlocal lengthを設定する。local lengthを設定するとメッシュの細かさを変更できる。たしか、lengthで変更できる。また、precision(精密というのだが)はよくわからないが参考として1e-07で良い。
-add.hypothesisをquadratic meshに設定する。これは解析の精度を上げるための設定なので、設定しなくても問題ない。
-以上でメッシュの設定は終わり。
-つづいて、eficasの設定をする。
-まず、DEFI_MATERIAUの設定をする。
ここでは材料諸元の設定ができる。
ELASでEがヤング率、NUがポアソン比である。
ここで、線膨張率を加える。
ELASをクリックをすると、右側のajouter mot-clefが表示されるので、
ここでALPHAをクリックしてvaliderで追加する。
最後にDEFI_MATERIAUをクリックし、
nommer conceptで材料名を入力して設定する。
-次にAFFE_MODELEをクリックし、nouvelle commandeタブでCREA_CHAMPを追加する。
そして、これによってどの部材をどのくらいの温度まで上昇させるかを設定する。
TYPE_CHAMをNOEU_TEMP_Rに設定する。
CREA_CHAMPをクリックし、OPREATIONを追加してAFFEに設定する。
b_affeをクリックし、MODELEを追加してMODEを設定する。
AFFEでTOUTとあるがこれは対象構造物全体を表す。
今回は材料一つなのでこれを使う。
このTOUTをOUIに設定する。
NOM_CMPではnommer conceptタブでTEMPを入力して設定する。
VALEを追加し、何度まで上昇させるかを設定する。
最後にCREA_CHAMPでクリックし、nommer conceptタブでtempSを入力する。
たぶん、ここの入力何でもいいと思うが参考にした資料はこれを入力していた。
-AFFE_MATERIAUの設定をする。
ここは材料の初期条件にあたる。
AFFEではTOUTをOUI、MATERで材料諸元で設定した材料名を設定する。
次にAFFE_MATERIAUをクリックし、AFFE_VARC追加する。
そして、TOUTをOUI、NOM_VARCをTEMP、CHAMP_GDをtempS、VALE_REFは初期温度を設定する。
-AFFE_CHAR_MECAを設定する。
今回は熱に関して解くだけなので、荷重の部分であるPLES_LEPは削除する。削除する方法は削除したい項目を右クリックして出てきた項目をクリックすれば良い。
-以上で設定は終わり。あとはRUNすればよい。
-eficasの完成形
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2015/takahashi/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0.png

*シェル要素 [#a5a6412d]
-この辺↓が詳しい。
--https://sites.google.com/site/codeastersalomemeca/home/code_aster-1/sheru-youso
--https://sites.google.com/site/codeastersalomemeca/home/salome-meca-chutoriaru2/eficas-shell
--ttp://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=16-00.pdf
--例えば、片持ち梁だと(&link(ita.comm,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/ita/ita.comm))。
-シェルとソリッドの組み合わせは、この辺↓とか。
--ttp://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=16-20.pdf
---これも、シェルとソリッドの連結部分の回転自由度を固定して計算している。
--例えば、上の片持ち梁に箱をくっつけると(&link(ita2.comm,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/ita/ita2.comm))。

*接触解析(摩擦あり) [#b8cf3a71]
-この辺↓が詳しい。
--http://salome-meca.cocolog-nifty.com/blog/2012/03/61-2-0c2a.html
--例えば、&link(JISの摩擦試験,http://www.str.ce.akita-u.ac.jp/~gotou/tebiki/pdf/so14fup.pdf)(&link(JIS K 7125,https://www.djklab.com/service/koubunshibussei/690))のような何か(&link(masatu.comm,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/masatu/masatu.comm))
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/masatu/jis.jpg
---変位と荷重のグラフを描く工夫は特にしていない。とりあえず、v10で計算はできる。
---計算時間を長めに設定しておかないと、途中で計算が終わってしまう。
---どこかしら固定された物体同士でない場合、バネ要素(柴田良一『オープンCAE「Salome‐Meca」構造解析―「弾塑性」「接触」解析編』(I・O BOOKS))でどこかしらを固定する必要がある。

*座屈解析 [#m8182d1b]
-&link(buckv10.comm,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/zakutu/buckv10.comm)
--&link(ここのページ,http://caelinux.org/wiki/index.php/Contrib:KeesWouters/beambuckling)の円柱の座屈をv10用に書き換えてみた。ついでに、立体要素でも確認しやすいように境界条件は片持ち梁(n=1/4)に変えてある。モデルは、pythonスクリプトで読み込んだものに対応。
--オイラー座屈の公式:Pcr=$\frac{1}{4}\frac{\pi^{2}EI}{\ell^{2}}$=10.1739N に対して、Code_Aster:Pcr=10.1829N .
--座屈の次数以外のパラメータは謎.
-&link(buckv12.comm,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2017/kondo/tyousa/buck/buckv12.comm)
--河原さんの座屈解析用commファイルをv12用に翻訳したもの.Warningは出るものの,一応v12で計算できる.
--以前からだが,出力結果は負の値で出力される.同時に正の値も出力されることもあるが,恐らくそれは逆方向に載荷した時の座屈荷重だと思われる.

*直交異方性材料 [#d473dc68]
**Aster Studyの設定方法 [#i0e82a62]
-基本的には等方性の解き方のときと一緒の設定です。
-違うところはDEFI_MATERIAU(材料特性の設定)
***DEFE_MATERIAU(Define a material) [#ze2775c2]
****ELAS_ORTHを選択する。 [#h91ed58c]
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/zairyou.png
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/zairyou3.png
-EN(軸方向のヤング率) -ET,EL(軸直角方向) -NULT(ポアソン比) -Glt(せん断弾性係数)

**ポアソン比 [#da1529d6]
Code_Asterでの直交異方性材料のポアソン比がよく分からない(梁の変位にほとんど影響しないので確かめていない,とか)とのことだったので,構造解析関係のプログラム置き場にある&link(ccxonsaito.f90,http://www.str.ce.akita-u.ac.jp/~gotou/programoj/ccx/ccxonsaito.f90)の異方性材料の設定をもとに,CalculiXとCode_Asterで同じ計算をして確かめてみた(計算に使ったものは&link(こちら,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2017/kondo/tyousa/ortho/)).
-LTNとポアソン比の関係は次のようになる.
--ただし,せん断弾性係数については確認していない.
--下は,木材を例として繊維方向にz軸をとって,$E_{z}$=7.5GPaとしたときの例.
--(
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}$
                              ),
                  );
--)
-ということは,ポアソン比$\nu_{yx}=0.016$や$\nu_{zx}=\nu_{zy}=0.4$は対称条件から勝手に計算されるのかもしれない.
**局所座標系 [#x1991c28]
Code_Asterで斜めになっている物体を直交異方性材料として計算するのが難しいという問題が(トラス橋や屋根付橋などで)あったが,部材の向きごとに局所座標系を決めれば比較的簡単に計算できる.
-1.局所座標(オイラー角)の設定を以下のように追加する.
--(
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)
                                  ),
                               ),
                       );
--)
--オイラー角については,マニュアル↓のp.56を参照.色々あるので別にオイラー角以外の設定でもいいけど.
---ttp://code-aster.org/doc/v12/en/man_u/u4/u4.42.01.pdf
-2.いつもの線形計算の設定のところに先程設定した局所座標系の設定(CARA_EL)を追加する.
--(
RESU=MECA_STATIQUE(MODELE=MODE,
                   CHAM_MATER=MATE,
                   CARA_ELEM=CARA_EL,  #<--ここだけ追加."CARA_ELEM="は自分でつけた名前に合わせる.
                   EXCIT=_F(CHARGE=CHAR,),);
--)
-確認に使ったメッシュファイルとcommファイルは&link(こちら,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2017/kondo/tyousa/naname/).
--全体座標系と同じ向きの片持ち梁・x軸周りに330度傾いた片持ち梁・y軸周りに30度傾いた片持ち梁の3つに同じ大きさの荷重を軸直角方向にかけると,梁先端の変位が同じになる(梁理論とも合う).名前が分かりにくいかもしれませんが.

**シェル要素の異方性 [#j76c3fc9]
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2019/aoyama/defi_composite.png
-シェル要素の異方性はDEFI_COMPOSITEの設定が必要(?)
-DEFI_COMPOSITEのデフォルトの名前だとエラーになることがある(?)
-そのため名前を新たに設定することを推奨.(画像では「aaa」)


*弾塑性解析 [#nbfb03d7]
-[[bou2tu.unv:http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/bou2tu.unv]]をメッシュでインポートして、
-[[bou2tu.comm:http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/bou2tu.comm]]で計算。commファイル中の「時間」やら"time"はstepの意味なので、頭の中で置き換えて下さい。
--[[ここのページ:http://salome-meca.cocolog-nifty.com/blog/2012/09/comp_incrcomp_e.html]]の箱を棒部材の問題に書き換えてみて、計算出来るかどうかを確認してみた。材料定数と断面を変えずに引き延ばしただけなので、何とも想像しずらいモデル。
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/hippari.png 
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/mage.png

   20mmの角棒の片端を固定して引っ張ったときの先端の伸び      20mmの角棒を片持ち梁として曲げたときの先端のたわみ
--荷重-変位の曲線が非線形になり、一方(COMP_ELAS)は同じ曲線を通って元の形状に戻り、他方(COMP_INCR)は塑性化して形状を保つ。
--v10のマニュアル↓がフランス語しかないので、
---ttp://www.code-aster.org/doc/v10/fr/man_u/u4/u4.51.11.pdf
--代わりにv11の英語版マニュアル↓(p.55)を見てみると、
---ttp://www.code-aster.org/doc/v11/en/man_u/u4/u4.51.11.pdf
--COMP_ELASは
---DEFORMATION='PETIT'          : 微小ひずみを使っている。変位・回転・ひずみ(約5%未満)が小さいとき
---DEFORMATION='GROT_GDEP'      : グリーンひずみを使っている。変位・回転が大きいが、ひずみが小さいとき
--の2つが使えて、COMP_INCRはこれらに加えて
---DEFORMATION='PETIT_REAC'     : (同じ条件だと収束せず)
---DEFORMATION='SIMO_MIEHE'     : 大変形のとき(参考:公式マニュアル↓)
---ttp://www.code-aster.org/doc/v11/en/man_r/r5/r5.03.21.pdf
---DEFORMATION='GDEF_HYPO_ELAS' : 超弾性の大変形(名前が超弾性だから試していない)
---DEFORMATION='GDEF_LOG'       : 対数ひずみを使っている。大変形のとき(同じ条件だと収束せず)
--などが使えるようだ。PETIT_REACとGDEF_〇〇については公式マニュアル↓参照。
---ttp://www.code-aster.org/doc/v11/en/man_r/r5/r5.03.24.pdf
--この辺↓も詳しい。
---http://salome-meca.cocolog-nifty.com/blog/2012/09/post-7406.html
---http://salome-meca.cocolog-nifty.com/blog/2012/08/deformation-0eb.html
--比較用にCalculiX(&link(hippari.inp,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/hippari.inp),&link(mage.inp,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/mage.inp))でも同じ要素分割・荷重増分で計算(等方硬化則)してみたところ、値が一番 DEFORMATION='SIMO_MIEHE' と近くなった。ちなみに、CalculiXは弾塑性解析(*PLASTIC)をするときに、自動で幾何学非線形(NLGEOM)になる。

*ひずみの出力(v12) [#w5c18ec1]
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)
--)


*ParaViSで梁要素や板要素の変位図を描く [#s256da47]
立体要素とは違い、回転自由度を持つ梁要素や板要素のDEPLは1節点につき6成分あるため、そのままでは Warp By Vector で変位図を描けない。
このとき、PropertiesのGenerateVectorsにチェックを入れ、Applyすると、DEPLの最初の3成分(DX・DY・DZ)だけ取り出したベクトル(DEPL_Vector)が作られるため、 Warp By Vector で変位図を描けるようになる。
-参考
--https://www.youtube.com/watch?v=gt3Oylnj03M
---↑梁要素の設定の仕方が非常に参考になる。

*ParaViSで板要素の板厚を反映させる(要確認) [#v9e71229]
ParaViSでMEDファイルを読み込んでも、自動では板厚を考慮したモデルとして描画されない。そのため、与えた板厚が正しいかどうかや、厚さ方向の(積分点とかの?)応力やひずみの分布等を視覚的に確認できない。このとき、以下略(そのうちに書く。というか誰か書いて)……
-参考
--https://www.youtube.com/watch?v=7p5mQuJIZdI
---↑板要素の設定の仕方が非常に参考になる。

*部材をブーリアン結合で結合する方法とコンパウンドで一つのモデルにする方法 [#yf523fd6]
-[[https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/ketu1.png]]
-[[ketugou.hdf:https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/ketugou.hdf]]
-2つの部材を結合するにはジオメトリ上で結合する方法とコンパウンドで部材ごとを一つのモデルとしてAster studyで結合を指定する方法がある。
-新しいエンティティ ービルド ーコンパウンドで一つのモデルにする方法はジオメトリで合わせる部材を選択しコンパウンドを選択する。高度なオプションのグループとサブオブジェクトを継承する。にチェックをする。そのまま適用して閉じる。一つのモデルになる。この時点では結合されていないため、メッシュを切ってそのまま計算かけても部材ごとの結果になるか、失敗する。
-ジオメトリの段階で結合する部材の結合面をグループにしておく。
-Aster study BC and load Liaison-Mail で設定を行う。
-group MA は結合されるソリッド group-MA-Eは結合するソリットの結合面 あとは適用して終了

*詳細設定をしてメッシュをきる方法 [#d90e8e48]
-通常通りメッシュを作成するを選択する。ジオメトリは要素分割したいモデル、メッシュタイプはAny、

3DのアルゴリズムをNETGEN3D > 2DのアルゴリズムをNETGEN1D-2Dにする。

-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/mesh/3D.png
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/mesh/2D.png

2Dの画面の詳細設定の右にある歯車マークをクリックしてNETGEN 2D Paranetersを選択する。

-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/mesh/syousai.png


最大サイズと最小サイズを設定する。(ジオメトリを選択して詳細設定を開くと最大最小の数値が表示される、最小サイズは選択したモデルのメッシュを切ることができる最小のサイズなためその数値を超えないようにする。)

その設定が終わったらOKで戻って適用して閉じる。あとはいつも通りメッシュを切る。

*salome-mecaでメモリーが足りないと言われたら [#ua51f03c]
  ! <S> Exception user raised but not interceptee.                               !
   ! The bases are fermees.                                                       !
   ! Type of the exception: error                                                 !
   !                                                                              !
   !  Error during the dynamic allocation. It was not possible to allocate        !
   !  a memory zone length 263 Mo, one exceeds the maximum limit                  !
   !  built-in with 1293 Mo and one occupies already 1059 Mo.                     !
   !  The last operation of memory deallocation made it possible to recover 0 Mo
-このようなエラーメッセージが出てきたら以下のようにしてください。
-https://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/ran.png
ranの画像の部分のメモリーを増やせばいいです。メモリーのMAXsizeはコンピューターのメモリの最大から1G程度引いた数字を入れればいい。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS