ここではsalome-meca 接触解析メモ のページ以外でわかったとこを書いていく。
・モデルの作成時に一体になっているモデルの中で接触を用意したいとき、そのまま通常の作り方で問題ない。ただ、接触が発生する箇所の付近のメッシュを細かく設定してあげる領域を作成する必要がある(以降これを詳細メッシュと呼ぶ)。この詳細メッシュを用意する作業を行わないと、接触面の応力分布を正確に評価できなかったり、接触判定の制度が下がってしまったりと、解析がうまく回らない原因になってしまう。この詳細メッシュは範囲分のモデルを作成した後、パーテーションで領域の指定ができるようにしてあげればいい。
・グループ名の作成時に接触面の設定を行うと思われるが、このとき接触面の定義は1面ずつ行う必要がある(エラーが出ます)。詳しくは構造研の部屋にある接触解析に関する本に書いてある。
・解析の負担を減らすために半解析を行うという方法があるが、その場合は切断面を選択して、変形がない想定の1軸方向のみ固定条件を加えられるようにしておく必要がある。そうしないと変形を加えたとき全体のモデルで変形を行ったときと違う挙動を示してしまう。
パーツが分離していたり、一体となっていないモデルの場合は各パーツごとジオメトリで作成して、メッシュを切りその後コンパウンドを行うが、一体となっている場合は1つのみで作成する。サブメッシュを利用することで詳細メッシュの箇所のメッシュサイズの指定や応力が集中するであろう箇所、細かいパーツのメッシュサイズを全体に比べて小さいもので設定を行う。
使用していたものについて参考程度に。
NB_INCR_SEUIL は、Code_Aster の DEFI_LIST_INST(..., ADAPTATION=...) における時間刻み自動調整のためのパラメータで、非線形解析において非常に重要な役割を果たす.
「しきい値(SEUIL)」イベントが検出された場合に、いくつの増分に分割してそのイベント直前までを細分化するかを指定する値。
・イベント(例:力や変位の急変、塑性発生など)が発生しそうなとき
・そのタイミングの直前を何回の小さいステップに分けるか?
Code_Aster は、STAT_NON_LINE 等で構造物の非線形応答を逐次解く際に、事前に決めたステップ(DEFI_LIST_INST)に沿って解析する。
しかし途中で急激な非線形挙動(塑性化、接触、損傷など)が出ると、ステップ幅が大きいと収束しなくなる。
そのため、「この辺にイベントがある」と察知すると、自動でステップを分割して再実行する。
NB_INCR_SEUIL=2 → 「イベントの手前を2つのステップに細かく分け直してトライし直す」
○推奨値
通常 NB_INCR_SEUIL = 2〜5
高度に非線形(接触/損傷) 5〜10
非常に頑固なケース 10〜20(と同時に INCREMENT も調整)
○まとめ
NB_INCR_SEUIL イベント手前での時間ステップ再分割数を指定。非線形イベントに備える。
増やすと? 解析が安定するが遅くなる(ステップ数が増える)
減らすと? 高速化できるが、収束エラーが出やすくなる
収束反復の上限回数(グローバルニュートン反復) を指定する重要なパラメータ
・各時間ステップでの 非線形方程式系の反復解法(通常は Newton-Raphson 法)の最大反復回数を指定。
・この回数内に解が収束しなければ、そのステップは失敗し、ステップの再分割または解析停止が発生する。
○値を設定する際の目安として
問題タイプ 推奨値(目安)
線形に近い問題 5〜10
弾塑性(非線形) 15〜20
接触/損傷/大変形 20〜30 以上でも可
高度に不安定な場合 50〜100(ただし並行して ARRET 条件を付ける)
○まとめ
目的 非線形反復の最大許容回数
達成できないと? ステップ失敗 or 解析停止
適切な値 問題の非線形性に応じて調整(10〜50程度)
高すぎる設定のリスク 収束しない計算に時間を浪費する可能性あり
非線形解析や大規模な問題において 収束基準 を設定するために使用
収束残差(残差が収束するかどうか)を制御するための基準値を設定。このパラメータは、解析の途中で解法が収束しているか、さらに計算を続けるべきかを判定するために使用される
収束条件:RESI_GLOB_MAXI に設定した値より小さな残差になると、計算は終了する。数値解法においては、この収束条件が精度に大きく影響する。
数値精度:もし収束基準を厳しく設定すると、解の精度は向上するが、計算に時間がかかる可能性が高くなる。一方、緩やかな基準にすると計算は早く終わるが、解が不十分である可能性もある。
一般的な目安: 1E-5 ~ 1E-8
厳密な解析: 1E-8 ~ 1E-10 など、精度を高める場合
粗い解析: 1E-3 ~ 1E-4 など、計算時間を短縮する目的の場合 材料の構成則(物理挙動)モデルを定義
ELAS:線形弾性モデル
特徴:
・応力–ひずみがフックの法則に従う(σ = Eε) ・材料は塑性変形や破壊をしない ・線形問題 or 非線形解析でも弾性挙動のみを扱うときに使う
用途:
・構造の初期解析・予備設計 ・他の非線形要素(接触、大変形など)との組み合わせ ・線形比較用モデル
VMIS_ISOT_TRAC:等方硬化・破断付き von Mises 弾塑性モデル
特徴:
・弾性 → 弾塑性 → 損傷・破壊までの材料挙動を表現可能 ・von Mises 降伏条件をベースに、等方硬化則(isotropic hardening)を導入 ・TRAC → 損傷・破断挙動(破断に向けたダメージ進展)も考慮
用途:
・材料の塑性化や破壊過程を扱いたい場合 ・ダクタイル材料(金属など)の非線形構造解析 ・応力集中部での降伏・破断の評価
構成則の応力更新ループの最大回数
一般には 10 ~ 50 を使用
解の精度に関する値で,この値が大きいほど制度がゆるくなる
よって非線形解析には10とかにしている場合は適さず、逆に不安定な振る舞いを誘発することがある
通常は 1e-6 ~ 1e-8 の範囲を使用
時間刻みがそれ以下に絶対に分割されない
非線形性が強い場面でも対応できるようにするためには、PAS_MINI を小さく設定(例:0.01 または 0.001)する必要がある
Code_Aster 内で解法メソッドを設定、調整するためのサブルーチン
解法の選択やメソッドのパラメータ調整を行う役割を担っている
解析設定や問題に応じて動作するが、直接的に利用者が操作することは少なく、システム側で自動的に呼ばれる
個人的に接触箇所が大量にあってかつ弾塑性解析をおこなうってなったとき、すべての箇所で接触の定義を行って解析を回すのはかなり難しいのではないかなと思ったので仮想材料との併用がいいのではないかなと感じました。今後接触を大量に使っても問題ないようにできる方が出てきたら更新してくれると嬉しいです。
║ <EXCEPTION> <FACTOR_55> ║ ║ ║ ║ Solveur MUMPS : ║ ║ Problème ou alarme dans le solveur MUMPS. ║ ║ Le code retour de MUMPS est : -53 ║ ║ ║ ║ Conseils : ║ ║ Consulter le manuel d'utilisation de MUMPS. ║ ║ Prévenir l'équipe de développement de Code_Aster. ║
ソルバ(連立1次方程式)側で落ちているエラー
つまり組み上がった全体剛性マトリクスが数学的におかしい(解けない)
原因は ・剛性モードが残っている(拘束不足) ・接触が一気に切り替わった ・材料剛性が異常 など
そのため解決のために固定条件の追加を検討するのは1つの対策
また接触解析においてモデルを接触のみで保持することはできないためどこかしらに固定条件を入れるか固定条件の入っているパーツと一体化させる必要がある
║ <ConvergenceError> <MECANONLINE9_7> ║ ║ ║ ║ Arrêt pour cause d'absence de convergence avec le nombre d'itérations requis dans l'algorithme ║ ║ non-linéaire de Newton. ║ ║ La base globale est sauvegardée. Elle contient les pas archivés avant l'arrêt. ║ ║ ║ ║ Conseils : ║ ║ - Augmentez ITER_GLOB_MAXI. ║ ║ - Réactualisez plus souvent la matrice tangente. ║ ║ - Raffinez votre discrétisation temporelle. ║ ║ - Essayez d'activer la gestion des événements (découpe du pas de temps par exemple) dans la ║ ║ commande DEFI_LIST_INST. ║
Newton反復が指定回数以内に収束しなかったときに出るエラー
・荷重が一気に大きくかかっている
・接触(contact)が不安定
・材料非線形(塑性など)が強い
・時間ステップが大きすぎる
・メッシュが粗い or 歪んでる などが原因のときに出る
このエラーは接触解析がというよりはモデルが複雑でモデルの変形が大きく応力集中が特定の細かいパーツにかかっているときに出ているのが多い印象
解決方法として反復回数を増やすという方法があるがあまり期待しないほうがいい(少し複雑なモデルではうまく行ったことがない) NEWTONのITER_GLOB_MAXIで反復回数の指定ができる
他の方法としては時間ステップを細かくするのも有効
ただこれはDEFI_LIST_INST時間ステップ幅の自動調整機能 を使っている場合は勝手にサロメのほうで調整しているからこれを使っていないときの解決方法
接線マトリクスの更新頻度を上げるのも対策の1つ NEWTONのREAC_ITERで設定できる
Newton法では毎回こういう
1.剛性(=接線マトリクス)を作る
2.解を更新
3.収束判定
4.ダメならもう一回
という流れを行っているけれどこのとき剛性マトリクスを何回ごとに作り直すかを指定するのがREAC_ITER
ここの値が1のとき毎回更新していることになるから一番安定で収束しやすいがその分計算が重くなる。 2とか3とかにするとその分数回に1回だけ更新みたいな感じになる
使い分けの目安は
線形に近い 2〜5でもOK
軽い非線形 1〜2
強い非線形(接触など) 1一択
みたいな感じ
でもよっぽどの理由がないなら基本的には1を使うで問題ないと思う
この辺の変更をして解決しないならモデルの形状を変更したり、応力集中のある箇所のメッシュを細かくしたり仮想材料を使う方が現実的だと感じた(時間かかるし) 私はこのエラーが一番解決できなかったので もしかしたらこれ以外にも解決方法があるかもしれないから見つけた人がいたら皆さんに共有するなりページの更新をお願いしたいです
║ <EXCEPTION> <CALCUL_20> ║ ║ ║ ║ Erreur utilisateur dans un calcul élémentaire : ║ ║ Le matériau est nécessaire sur la maille : M37784 ║ ║ - option de calcul élémentaire : RIGI_MECA_TANG ║ ║ - type_élément : MECA_TETRA4 ║ ║ ║ ║ Conseils : ║ ║ * Peut-être avez-vous oublié de renseigner le mot clé CHAM_MATER dans la commande courante. ║ ║ * Dans la commande AFFE_MATERIAU, avez-vous affecté un matériau sur la maille incriminée ? ║ ║ ║ ║ -------------------------------------------- ║ ║ Contexte du message : ║ ║ Option : RIGI_MECA_TANG ║ ║ Type d'élément : MECA_TETRA4 ║ ║ Maillage : 00000001 ║ ║ Maille : M37784 ║ ║ Type de maille : TETRA4 ║ ║ Cette maille appartient aux groupes de mailles suivants : ║ ║ syousai2 ║ ║ Position du centre de gravité de la maille : ║ ║ x=142.984247 y=112.374111 z=179.464892 ║
特定の四面体要素に材料が割り当てられていないためのエラー(接触に関するものではない)
affe_materiauの中で
・cham_materの指定がない
・当該メッシュグループに材料が割り当てていない
要するにジオメトリでモデルを作ったのにどのメッシュグループにも属していない(名前をつけれていない)パーツが存在していないというエラー
一度ジオメトリでグループを作成するのところで割り当てられていないパーツを確認するといいかも
║ <ContactError> <MECANONLINE9_9> ║ ║ ║ ║ Arrêt par échec dans la boucle de point fixe sur la géométrie. ║ ║ La base globale est sauvegardée. Elle contient les pas archivés avant l'arrêt. ║
このエラーは完全に接触が発生したときにそれが原因で止まっているときに出るエラー 原因はいくつかあるが ・初期状態でめり込んでいる ・接触が硬すぎる ペナルティ係数が大きすぎる 剛体っぽくなって振動してしまう ・時間ステップが大きすぎる 一気に接触することで不安定に ・メッシュが粗い / 悪い 接触面がガタガタでもだめ ・摩擦あり そもそも摩擦を考慮させると収束しにくいらしい などがある
解決方法としては
・時間ステップを細かくして接触がゆっくり発生するように
・メッシュの詳細メッシュ領域の細分化
・NEWTONを安定寄りにする
などがある。
注意点としてはNewton以前に接触が壊れてるため、TER_GLOB_MAXI増やすだけでは効果が薄いため、接触が発生する箇所の見直しを優先させる必要がある。例えば曲線のパーツが接触発生する場合、メッシュも四面体要素でやっているならそれを直線で接触が発生するようにしたり(多角形にする)するのはありだった。
これも解決しにくいエラーでした
║ <EXCEPTION> <ADAPTATION_11> ║ ║ ║ ║ La valeur du pas de temps retenu < 5.046241202677e-13> est inférieure à PAS_MINI. ║
これは自動で時間ステップをどんどん小さくしたけど、最小ステップ(PAS_MINI)より小さくなってしまったので停止したときに出るエラー 流れとしては
1.収束しない(接触が不安定)
2.Code_Asterが時間ステップを小さくする
3.それでも収束しない
4.どんどん細かくなる
5.限界(PAS_MINI)を突破 → 強制停止
という流れでこのエラーが出る
そのためこのエラーの解決のためには接触箇所の修正が必要 これを最優先で解決しないと計算が無限ループしてしまう
初期状態のめり込みがあるならなくして
摩擦があるなら一旦オフにしたり
ペナルティ係数を設定しているなら値を下げる
他には自動でステップを細かくしているなら一度これを消して自分で設定を行い、最初からステップを細かくしてみるとか
PAS_MINIを小さくするという方法もあるがこれはあまり取りたくない選択肢ではある
これは根本的解決ではないため応急処置でしかないが、解決することもある。解析時間が多くなるため注意
║<EXCEPTION> <DVP_1> ║ ║ ║ ║ Erreur de programmation. ║ ║ ║ ║ Condition non respectée: ║ ║ nbno.eq.nbpt ║ ║ Fichier ║ ║ /home/salome/workspace/SALOME-MECA_V2021_PLATFORM/3/salome/V2021/tools/src/Code_aster_stable-1 ║ ║ 540/bibfor/calculel/cescns.F90, ligne 163 ║ ║ ║ ║ ║ ║ Il y a probablement une erreur dans la programmation. ║ ║ Veuillez contacter votre assistance technique. ║
このエラーを要約すると
プログラム内部の前提条件が壊れている(節点数と点数が一致していない)
とあるがモデル定義、つまりジオメトリで作成したグループ名がaster_studyで一致しているものがないときに出る。
例えば接触面をジオメトリ上で作成してグループ名をつけたけどaster_studyのcontactとかで設定した名前と違うものが入ってしまっていているとか接触を起こしたい箇所の面が選択できていないとかのときに出る。
このときcontactの接触面の定義に存在していないグループ名があるならそれは消しておく必要がある。
モデルを作成したあとaster_studyで過去に使った.commファイルとかを使うとき気づいていないとこのエラーが出るかも。
他にこのエラーが出るのは材料や特性の割当ミスでもこのエラーが出る。本当は体積なのに面として設定してしまっていたり。
など
║ <EXCEPTION> <JEVEUX_62> ║ ║ ║ ║ Erreur lors de l'allocation dynamique. Il n'a pas été possible d'allouer ║ ║ une zone mémoire de longueur 2337 Mo, on dépasse la limite maximum ║ ║ fixée à 2218 Mo et on occupe déjà 75 Mo. ║ ║ La dernière opération de libération mémoire a permis de récupérer 1722 Mo. ║ ║ ║
このエラーはメモリが不足したときのエラー
解析を回す前に使用するメモリの量を指定すると思うが、ここの値が作成したメッシュサイズに対して少なすぎるとこのエラーが出る
対処法はシンプルで使用するメモリの量を増やすか作成するモデルのメッシュサイズをおさえれば解決する
注意点は使用するメモリを大きくしすぎると接触解析は重い解析だからパソコンがフリーズしてしまって最悪パソコンが壊れることがあるから、使うパソコンのスペックを確認してからメモリの量を指定することを気をつける
║ <A> <JEVEUX1_24> ║ ║ ║ ║ L'impression du contenu détaillé des objets en mémoire est désactivée. ║ ║ Il faut définir 'dbg = .true.' dans 'jeimpm.F90' pour l'activer. ║ ║ ║ ║ ║ ║ Ceci est une alarme. Si vous ne comprenez pas le sens de cette ║ ║ alarme, vous pouvez obtenir des résultats inattendus ! ║
このエラーはデバック用の詳細ログがoffのときに出るエラーらしい
計算自体には問題がなく、code_aster内部デバック機能の話のため基本は無視して問題ない
複雑な解析のときに出るため、このエラーの裏に本当の原因である他のエラーがある可能性のほうが高い
例 変形がへん 応力が異常値 収束していない など
║ <EXCEPTION> <JEVEUX1_55> ║ ║ ║ ║ Un écrasement aval est détecté, la zone mémoire (adresse -453477942) a été utilisée ║ ║ au-delà de la longueur autorisée. ║ ║ Ce message est un message d'erreur développeur. ║ ║ Contactez le support technique. ║
このエラーは少し深刻で
メモリ破壊(異常なメモリアクセス)エラーで本来出るはずのないエラー
出る原因としては条件が悪くてcode_asterが壊れたパターンが多い
・モデルがおもすぎる
・メッシュが壊れている
・接触、非線形の設定が厳しい
・材料や境界条件が異常
・バグ など
そのため対策はモデルの見直しとしてメッシュサイズの確認だったり、解析自体を軽くしたりするべき
うまく行かないならメッシュは新しく作り直すほうが確実