私は最近、この学術論文をモデル化する 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);
}
}