接触は強い非線形性を持つ境界条件で、それぞれの物体が互いを突き抜けることを防ぐためのものです。CalculiXに実装されている接触定義は節点・面ペナルティー法と面・面ペナルティー法で、どちらも表面の対相互作用に基づいています。これらの接触定義をひとつの入力デッキ内で混ぜて使うことはできません。このセクションでは節点・面ペナルティー法について説明を行ないます。ペナルティー法の詳細については [75]、[40]を参照してください。
相互作用する表面の各ペアは従属面と独立面で構成されます。従属面(=スレーブ)は節点または要素面に基づいて定義され、独立面(=マスター)は要素面から構成されている必要があります(図109)。ひとつの独立面内の要素面は、その任意面の任意エッジが最大でひとつの隣接面を持っていなければなりません。通常、従属側のメッシュは最低でも独立側と同じ程度の粗さを持つ必要があります。また必要なだけのペアを定義することが可能です。接触ペアはキーワード・カード *CONTACT PAIR で定義されます。
スレーブ面に隣接した要素が2次要素(例えばC3D20、C3D10、C3D15)の場合、収束が遅くなることがあります。これはスレーブ面内で、四辺形面を持つ要素について特に顕著です。2次(8節点)四辺形面に一様な圧力がかかると中間節点に圧縮力が、頂点節点に引張力が働きます[18](それぞれ荷重の1/3と1/12の大きさ)。端節点にかかる引張力は、その節点が節点・面接触要素に属している場合には通常、発散を発生させます。従ってCalculiXではその荷重はそれぞれ24/100、1/100に変更されます。一般的に言って2次要素に対して節点・面接触を使用することはお勧めできません。代わりに面・面接触を使うべきでしょう。
CalculiXではペナルティー接触は(非)線形なバネ要素を生成することでモデル化されています。このため従属面上の各節点に対して、独立面上の面はその節点の正射影を含むような位置に設定されます。もしそのような面が見つかると、独立面に属する全ての頂点節点と従属節点から非線形バネ要素が生成されます(図110)。面の種類に従って接触バネ要素は4、5、7、9のいずれかの数の節点を含みます。バネの性質は *SURFACE INTERACTION 定義で定義され、その名前を *CONTACT PAIR カードで指定する必要があります。
ユーザーは計算中にどれくらいの頻度で従属節点と独立面のペアリングを行なうかを設定することができます。*CONTACT PAIR カードでSMALL SLIDINGパラメーターを指定すると、各イテレーションごとにペアリングが行なわれます。このパラメーターが指定されていない場合、イテレーション数が9未満の時には各イテレーションでペアリングがチェックされ、9以上の時には接触要素は収束が改善されるように固定されます。滑りが非常に大きい場合にはSMALL SLIDINGの無効化が便利な場合があります。
*SURFACE INTERACTION キーワード・カードは *MATERIAL カードととてもよく似ています。*MATERIAL カードが材料特性定義から始まるのと同じように相互作用特性定義から始まるのです。材料特性が *DENSITY や *ELASTIC といったカードで特徴づけられるように相互作用特性は *SURFACE BEHAVIOR と *FRICTION カードで記述されます。表面相互作用を記述するカードではないものが現れるまで、*SURFACE INTERACTION カードの下にあるカードは全てその表面相互作用定義に所属するものとして解釈されます。表面相互作用を記述するカードでないものが現れた時点で表面相互作用の記述が終わったものと見なされます。つまり図3に示す材料記述と同じやり方で相互作用記述のブロックは終了するのです。
*SURFACE BEHAVIOR カードは線形(実際は図112に示すような疑似双線形)、指数、あるいは区分線形で正規化された(マスター面上に区分的に垂直に交わる)作用のバネ要素を定義します。指数的作用の接触バネ要素の独立面に働く圧力 p は以下の様になります。
(58) |
ここで p0 は間隔ゼロでの圧力、β は係数、d は垂直距離重複度(スレーブ節点のマスター側への侵入度。負の値の場合は間隔があいていることを意味します)です。β は直接な物理的な意味を持たないので、これを指定する代わりにユーザーは圧力が p0 の1%になる時の間隔 c0 を指定します。ここから β は以下のように計算されます。
(59) |
p0=1 、c0=0.5 での圧力曲線は図111の様になります。c0 が大きな値ではソフトな接触、つまり大きな侵入が起き、c0 が小さな値ではハードな接触が模擬されます。ハードな接触ではソフトな接触よりも収束が遅くなります。スレーブ節点とマスター面の距離が c0 を超えると接触バネ要素は生成されません。指数的作用の場合、ユーザーは *SURFACE BEHAVIOR カードの下で c0 と p0 を指定する必要があります。
線形接触バネの場合、圧力と距離重複度の関係は以下の様になります。
ここで ε は小さな数です。四角かっこの中の項は d≤0 でpの値が非常に小さくなることを保証します。一般的には線形接触バネの式は指数的作用の場合よりも容易に収束します。K=103、ε=10-2 の場合の圧力曲線は図112の様になります。K の値が大きい場合は接触はハードなものになります。精度の良い結果を得るためには K は隣接材質の係数Eの5倍から50倍にする必要があります。もし接触面の粗さが隆起距離 dpv と予期される最大圧力 pmax の形でわかっている場合にはバネ定数は K=pmax/dpv で見積もることができます。Kの単位は[力]/[長さ]3です。
大きな負の値の距離重複では引張力 σ∞(d→-∞)は Kε/π に等しいことに注意してください。σ∞ の値はユーザーによって指定される必要があります。モデルの最大予測応力の約0.25%が適切な値です。CalculiXは σ∞ と K から ε を計算します。
線形接触バネでは接触バネ要素が生成されなくなる距離は、バネ領域がゼロ以上の場合はで定義され、それ以外の場合は10-10になります。c0 のデフォルト値は10-3(無次元)ですが、ユーザーはこれを変更することができます。圧力と距離重複の関係が線形の場合、*SURFACE BEHAVIOR カードの下で K と σ∞ を指定する必要があります。c0 はオプションで、入力する場合は同じ行の3つ目の値として入力します。
圧力と距離重複の特性として区分線形関数を定義することも可能です(PRESSURE-OVERCLOSURE=TABULAR)。この場合には曲線を定義するために実験データを使うことができます。表形式で定義されたバネでは接触バネ要素が生成されなくなる距離は、バネ領域がゼロ以上の場合はで定義され、それ以外の場合は10-10になります。表形式で定義された特性の場合には圧力と距離重複のペアを1つ1行で入力します。
法線方向のバネ力は圧力にバネ領域面積をかけて定義されます。バネ領域はスレーブ節点に設定され、スレーブ節点が属するスレーブ面の1/4(線形4辺形面)または1/3(線形3角形面)で定義されます。2次4変形面では中間節点での荷重は24/100、端節点での荷重は1/100になります。2次3角形面ではこれら荷重はそれぞれ1/3、0となります。
接戦方向のバネ力はせん断応力にバネ領域面積をかけることで定義されます。せん断応力はスレーブ節点とマスター面の間の相対変位の関数で、この関数は図113に示す通りです。関数はせん断応力が接線方向相対変位の線形関数である接着範囲とローカルな圧力のみの関数であるスリップ領域から構成されます。ユーザー入力は無次元で通常0.1から0.5の間の値をとる摩擦係数 μ と力を単位体積で割った次元を持ちバネ定数より約100倍程度小さい接着勾配 λ から構成されます。
摩擦は *CHANGE FRICTION キーワード・カードを使うことで、ひとつ目を除く全てのステップで定義可能です。同様に *MODEL CHANGE カードを使うことで、ひとつ目を除く全てのステップで接触ペアの有効・無効を切り替えることができます。
CalculiXがひとつ目のステップで接触面の重なりを検知すると、非定常計算(*DYNAMICまたは*MODAL DYNAMIC)ではその重なりはステップの開始から完全に考慮されます。一方で定常計算(*STATIC)ではその効果は線形に積算されます。
最後に収束性が悪い場合に場合に有効な対処方法を挙げておきます。
「contactelements.inp」ファイルで*NODE FILE、*EL FILE、NODE OUTPUT、*ELEMENT OUTPUTの各カードのCONTACT ELEMENTSパラメーターには各イテレーションで生成された接触要素が保持され、その要素セットにはcontactelements_stα_inβ_at γ _itδという名前がつけられます(α はステップの番号、β はインクリメントの番号、γ は試行の番号、δ はイテレーションの番号)。CalculiX GraphiXでfrdファイルを開くと、「read contactelements.inp」といコマンドでこのファイルを読み込んで適切なセットに要素をプロットすることで可視化できます。これらの要素はスレーブ節点を対応するマスター面とつなぐ接触バネ要素です。接触時にはこれら要素は非常にひらべったくなります。(平行移動によって)各部品を引き離すと見やすくなるでしょう。Screen Upキー、Screen Downキーを使うと計算中にどれくらいの接触が発生するかを確認することができます。接触要素が生成される場所を確認すると発散が起きた場合に問題個所を特定する助けになります。
生成される接触要素の番号は各イテレーションごと、接触が確立されるごとにスクリーン出力にもリスト表示されます。つまり *CONTACT PAIR カードで SMALL SLIDING パラメーターが使用されていない場合には ≤8 の各イテレーションごと、それ以外の場合は各インクリメントの最初のイテレーションでだけ出力されます。