汎用的な構築ブリック要素

1つの変数または複数の変数に項を追加することは,セクション 任意の項を計算する - 高水準の汎用的な構築手順 - 弱形式言語 (GWFL) で説明されているGWFL汎用弱形式言語を直接使用することです.より汎用的な方法は次の関数を使用することです.

size_type getfem::add_nonlinear_term(md, mim, expr,
                      region = -1, is_sym = false, is_coercive = false);

これは,メッシュ領域 region に積分法 mim と,構築文字列 expr を使用して,モデル md に要素を追加します.結果が対称であれば,5番目の引数で指定し,6番目の引数で強制的に指定できます.後者の対称性と強制性は,正しい線形ソルバを決定するために使用されます.理解していない場合は,何も示さないことを推奨します.

しかしながら,このブリック要素は,式が非線形であるとみなします.このブリック要素は,特に,いくつかの変数間の非線形結合項を得るために示されています.これは,特に項の構築がモデルの構築の各呼び出しで実行され,Newton法が問題を解決するために使用されることを意味します.項が実際に線形の場合は,代わりに次の関数を使用します.

size_type getfem::add_linear_term(md, mim, expr,
                       region = -1, is_sym = false, is_coercive = false);

同じ議論で.逆に,この要素は常に expr に対応する項は線形であると仮定し,使用されたデータが変更されない場合,構築は1回だけ実行されます.したがって,あなたの表現は実際には各変数に関して線形(アファイン)であることに注意しなければなりません.それ以外の場合,結果は保証されません.表現のソース項は考慮されますが,それでも線形の問題では,次のような理由で単一のソース項を構築することは可能です.

size_type getfem::add_source_term(md, mim, expr, region = -1);

再び対称性と強制性を除いて同じ議論をします.このブリック要素は,対応する次数1項(残差ベクトル)の集合を実行しそれを右辺として問題に追加します.構築は1回だけ実行されるため,この項はモデルの変数に依存してはいけません(ただし定数に当てはまる可能性があります).

例えば,モデルの定義済み変数 u でPoisson問題を解きたい場合は,対応する事前定義された要素を使用するか(下記参照),単純に:

getfem::add_nonlinear_term(md, mim, "Grad_u.Grad_Test_u - F*Test_u", -1, true, true);

ここで F は右辺を表すモデルのあらかじめ定義された定数です.もちろん,そうすることで,Newton法が呼び出されます.そのため,より適切な方法は次のように線形要素を使用することです.

getfem::add_linear_term(md, mim, "Grad_u.Grad_Test_u", -1, true, true);
getfem::add_source_term(md, mim, "F*Test_u");

現時点では,複素変数のある問題に対してGWFLの使用は不可能であることに注意してください.