これを計算するためのプログラムは以下のようになる。
function minmod0(x,y:real):real;
begin
if (x*y<=0) then
result:=0
else if (abs(x)<abs(y)) then
result:=x
else
result:=y
end;
kappa:=0;
B:=(3-kappa)/(1-kappa);
for j:=1 to jm-1 do // uL only
f[j]:=u[j]+0.25*((1-kappa)*minmod0(u[j]-u[j-1],B*(u[j+1]-u[j]))
+(1+kappa)*minmod0(u[j+1]-u[j],B*(u[j]-u[j-1])));
f[0]:=f[1];
for j:=1 to jm-1 do
u[j]:=u[j]-nu*(f[j]-f[j-1]);
advectionの標準問題をクーラン数
で50ステップ、100ステップ
といて得られる構造を図2.4にしめした。
Figure 2.4: MUSCL法でadvectionの標準問題を解いた結果。
クーラン数
で、50ステップ後と100ステップ後の解を示している。