5

2D動的非構造格子を使用して破壊伝播をモデル化しています。破壊が時間の経過とともに伝播すると、要素はそれに応じて移動します。与えられた時間ステップについて、非構造化グリッドzi = f(xi、yi)(ここで、(xi、yi)は非構造化三角形のノード)のデータを補間して、デカルトグリッド(xとyは一定の間隔で配置されています)。私のグリッドサイズは約100x100ノードです。この補間スキームを実行する方法はたくさんありますが、どのスキームが堅牢で十分に単純であるかを判断するためのトピックについては十分にわかりません。私はFortran90を使用しています(理由は聞かないでください...)。利用可能なオープンソースアルゴリズムはありますか?私は車輪の再発明をしたくありません。

どうもありがとう!

4

2 に答える 2

3

Earth System Modeling Framework(ESMF)は、次のようなものです。

http://www.earthsystemmodeling.org/

これには、Fortran、C、そして最近ではPython(機能が制限された)APIと優れたドキュメントが付属しています。地球物理学モデルのデータ抽象化オブジェクトとその結合に一般的に使用されますが、オフライン(スタンドアロンコマンドラインユーティリティ)またはオンライン(サブルーチン呼び出しを介して)の内挿ウェイトに使用できる構造化グリッドと非構造化グリッド間の再グリッド化のルーチンも提供します。世代。

前回調べたとき、ESMFは双一次、双三次、および量を節約するリグリッド方法を提供しました。

于 2012-12-07T23:38:31.367 に答える
1

いくつかの参考文献(たとえばESMF)は素晴らしいものでしたが、簡単に利用できる簡単なアルゴリズムを見つけることができませんでした。そのため、ホイールを「再発明」する方が簡単な場合があります。興味のある方のために、私が導き出した簡単な方法を次に示します。

  1. 背景デカルトグリッドを生成します。ノードPは、i = 1:Nbxおよびj = 1:Nbyの場合、l = j + Nbx(i-1)にあります。
  2. 各背景の正方形のノード番号を設定します。Nbx * Nbyノードと(Nbx-1)(Nby-1)の正方形があります。正方形は、i = 1:Nbx-1およびj = 1:Nby-1の場合、s = j +(i-1) (Nby-1)とラベル付けされます。正方形Sは、j + Nby(i-1)、j + 1 + Nby(i-1)、j + 1 + Nby * i、およびj + Nby*iの4つのノードで構成されています。
  3. 構造化されていないメッシュの三角形ごとに、最小値と最大値のxとyを見つけて、三角形を含むボックスを記述します。次に、対応するimin、imax、jmin、jmaxを決定します。
  4. 指定されたボックスについて、そのボックスに含まれているデカルトノード(i = imin:imax、j = jmin:jmax)を調べ、「Point_Inclusion_in_Triangle」テスト(重心法を使用)を実行して、ノードが対象の三角形の内側にあるかどうかを確認します。 。その際、追加のテストを実行して、ノードがいずれかの頂点にあるかどうかを確認します。
  5. テストが陽性の場合、背景デカルトメッシュの対応するノードが潜在的なノードのリストから削除されます(ノードを複数の三角形の一部にすることはできません)。これにより、三角形のリストを調べるプロセスが速くなります。
  6. 次に、三角形の双一次内挿法を使用して(重心法を使用)、背景メッシュの各ノードで内挿を実行できます。

この方法は正常に機能し、非常に高速です(エンジニアリング目的の場合)。

于 2012-12-12T17:23:08.787 に答える