0

私は最近、この学術論文をモデル化する JS プログラムに取り組んでいます。私が最近抱えている問題はこれです:

「表面張力は通常、粒子間の引力によって引き起こされます。流体内では、この引力は相殺されますが、表面近くの分子では、隣接分布の非対称性により、流体に向かってゼロではない正味の力が生じます。」

これは倍密度緩和法では自然に起こると思いますが、私のプログラムではその兆候が見られないようです。

以下は、倍密度緩和法からの抜粋です。

function doubleDensityRelaxation() {
  for(var i = 0; i<particles.length; i++) {
  var pi = particles[i];
  var p = 0;
  var pNear = 0;
  for(var j = i+1; j<particles.length; j++) {
    var pj = particles[j];
    var rij = sub(pi.r,pj.r);
    var q = length(rij)/h;
    if(q < 1) {
      p += (1-q)*(1-q);
      pNear += (1-q)*(1-q)*(1-q);
    }
  }
  var P = k*(p-p0);
  var PNear = kNear*pNear;
  var dx = [0,0];
  for(var j = i+1; j<particles.length; j++) {
    var pj = particles[j];
    var rij = sub(pi.r,pj.r);
    var q = length(rij)/h;
    if(q < 1) {

      var D = scale(normalize(rij), dtsq*(P*(1-q)+PNear*(1-q)*(1-q)));

      pj.r = add(pj.r,scale(D,0.5));
      dx = sub(dx,scale(D,0.5));
    }
  }
  pi.r = add(pi.r,dx);

  }
}
4

1 に答える 1

0

これは、認識可能な低粘度流体のように動作するものです. この種のシミュレーションは、フレーム レートが低くなるほど数値的に不安定になるようです。

あなたのコードにいくつか問題があると思います。

  • 私がこの論文を読んだとき、L ijはタイム ステップ全体で保持されるばねの長さの三角行列の要素です。ガンマとアルファは、変化する速度を制御します。このマトリックスは元のコードに保持されていなかったため、粘弾性は機能しませんでした。

  • 粒子間の衝突は不要であり、実際にはシミュレーションをさらに不安定にします。粘性パスのベータは、その反発力を提供します。

  • p 0 /k の比率を低くしすぎると、崩壊したクラスターが急速に振動する形で不安定になります。クラスターが壊れると、制御不能なフラバーボールのように個々のパーティクルが壁から跳ね返ります。

  • 壁にはまだいくつかの問題があります。私が行った微調整を行っても、粒子は壁に沿って列に並ぶ傾向があり、古い粒子が上部から噴水するにつれて新しい粒子が下部に押し込まれ、内部に一種の双子の渦を作成します流体。

  • スプリングの長さの下限を設定して実験していました。これにより、不安定なパラメーター セットが安定する場合があります。それがモデル化する物理的特性に関する私の思いつきの推測は、ダイラタント動作です。

于 2015-04-10T01:27:51.757 に答える