次へ 上へ 前へ 目次へ
次へ:Simple example problems 上へ:CalculiX CrunchiX USER'S MANUAL 前へ:Units 目次へ

黄金律

実際の問題に対する有限要素法の適用は必ずしも簡単ではありません。とりわけ非線形な問題で収束解を得るのは非常に大変な場合があります。とはいえ、いくつかの単純なルールに忠実に従えば人生はずっと簡単になるでしょう。私の経験から言うと以下のガイドラインはとても有益です。

  1. CalculiX GraphiX やその他の良いプリプロセッサーを使用してメッシュの質をチェックしましょう。

  2. 非線形問題を扱う場合はまず最初に線形化したものを実行しましょう。大変形を取り除き(NLGEOM をオフにする)、線形弾性材料を使用し、接触といったような非線形性は全て取り除きましょう。もし線形化した問題が実行できなければ、非線形問題も実行できないものです。線形化した問題は境界条件が正しいか(非拘束の剛体モードがないか)、荷重は意図したとおりかといったことのチェックを簡単にしてくれます。さらに言えば、解がどのようなものになるかのおおよその感じをつかむことができます。

  3. 2次要素(C3D10、C3D15、C3D20(R)、S8、CPE8、CPS8、CAX8、B32)を使いましょう。2次要素のための標準形状関数は非常に高品質です。ほとんどの有限要素プログラムはこれらの標準関数を使用しています。1次要素ではそうはいきません。1次要素はせん断ロッキング、体積ロッキングを始めとしてあらゆる種類の不可解な挙動を示します。従ってほとんどの有限要素プログラムはこれらの問題を緩和するために1次要素のための標準形状関数に変更を加えています。しかしこの変更の仕方には標準的な方法がありません。そのため各ベンダーは独自の変更を加えた上で、必ずしもそれを公表していません。つまり1次要素を使った場合には結果に対して大変な量の検証が必要になるのです。CalculiX では1次要素のための形状関数として標準のものを使用しているので、結果には十分注意する必要があります。

  4. シェル要素やビーム要素を使う場合には CalculiX の *NODE FILE カードでオプション OUTPUT=3D を使用してください(これはデフォルトです)。こうすると .frd ファイルでこれらの要素の拡充形状を得ることができます。指定した厚みが正しいかどうか簡単に確かめることが可能です。さらには 3D の応力分布を得ることができます。この分布は 1D/2D の応力分布と内部のビームにかかる力に基いて計算されます。もし前者が正しくなければ、後者も正しくないということになります。

  5. 計算に接触が含まれ、なおかつ2次要素を使用している場合には面対面ペナルティ接触法を使用してください。一般的に言って面の間での接触では、面対面ペナルティ法は点対面法よりもずっとよく収束します。接触のタイプは *CONTACT PAIR カードで宣言する必要があります。

  6. 問題を実行するための十分なメモリーがない場合は番号付けをチェックしてください。問題を実行するためのメモリーは最大の節点番号、要素番号に依存します(ただし計算時間はそうではありません)。従って番号付けに大きな飛びがある場合、それを取り除くことで必要なメモリーを減らせます。問題によっては反復解法を選択することでメモリーを節約できます。反復スケーリング法(参照:*STATIC)はコレスキー法よりも必要とするメモリーが少なく、後者は SPOOLES や PARDISO よりも必要とするメモリーが少ないです。

問題が起きた場合には:

  1. 画面出力を確かめてください。特に非線形計算での収束情報は問題の原因を教えてくれるでしょう。

  2. .staファイルを確かめてください。このファイルには各反復で収束に到るまでに必要とした反復回数の情報が記載されています。

  3. .cvgファイルを確かめてください。このファイルは画面出力の概要です。このファイルで各反復での接触要素の数、残留力、解の最大変化について(それが収束しているかどうかにかかわりなく)をすばやく確認することができます。

  4. *NODE FILE や類似のカードで"最終反復"オプションを使用してください。このオプションを使用すると ResultsForLastIterations.frd という名前のファイルが生成され、このファイルには最後の収束イテレーション後に始まった全ての非収束イテレーションでの変形(力学計算の場合)と温度(熱計算の場合)が記載されています。

  5. 接触定義を入力デッキで行なっている場合、*NODE FILE や類似のカードで"接触要素"オプションを使用した方がいいでしょう。このオプションを使用すると contactelements.inp という名前のファイルが生成され、このファイルにはこのオプションが有効化された後の全てのイテレーションでの全接触要素が記載されます。このファイルを CalculiX GraphiX で読み込むことで各イテレーションでの全ての接触要素を可視化でき、恐らく問題の原因を見つけることができるでしょう。

  6. セグメンテーション違反が起きた場合には端末ウィンドウで "export CCX_LOG_ALLOC=1" と入力して環境変数 CCX_LOG_ALLOC に1を設定するといいでしょう。CalculiX が実行されている間、どのフィールドがコードのどの行で確保、再確保、解放されているについての情報を得られます(デフォルトは0です)。


次へ 上へ 前へ 目次へ
次へ:Simple example problems 上へ:CalculiX CrunchiX USER'S MANUAL 前へ:Units 目次へ
guido dhondt 2016-03-08