next up previous
Next: クーラン条件 Up: Lax-Wendroffスキーム 第2版 Previous: Lax-Wendroffスキーム

Fortranプログラム

これをFortranプログラムで書くと、第1段は

        do j=1,jm
          rho_h(j)=0.5d0*(rho(j)+rho(j+1))
     *            -0.5d0*dt/dx*(px(j+1)-px(j))
          px_h(j)=0.5d0*(px(j)+px(j+1))
     *           -0.5d0*dt/dx*(p(j+1)-p(j)+px(j+1)*v(j+1)-px(j)*v(j))
          e_h(j)=0.5d0*(e(j)+e(j+1))
     *          -0.5d0*dt/dx*((e(j+1)+p(j+1))*v(j+1)
     *                       -(e(j)+p(j))*v(j))
        end do
ここでhのついた量はに関するものを表す。 また変数名は、普通に使われているものにしてあるが、pxはx方向の 運動量でpx= vをあらわす。 これから、に必要な他の量は次のようにして求められる。
        do j=1,jm
          v(j)=px_h(j)/rho_h(j)
          p(j)=(gamma-1)*(e_h(j)-0.5d0*px_h(j)**2/rho_h(j))
        end do
これらの量は、もうの値は必要ないので、第1段のhつきの変数ではなく、 同じ変数に代入している。

第2段は、

        do j=2,jm
          rho(j)=rho(j)-dt/dx*(px_h(j)-px_h(j-1))
          px(j)=px(j)-dt/dx*(p(j)-p(j-1)+px_h(j)*v(j)-px_h(j-1)*v(j-1))
          e(j)=e(j)-dt/dx*((e_h(j)+p(j))*v(j)-(e_h(j-1)+p(j-1))*v(j-1))
        end do
の様にして計算される。 これから、に必要な他の量は次のようにして求められる。
        do j=2,jm
          v(j)=px(j)/rho(j)
          p(j)=(gamma-1)*(e(j)-0.5d0*px(j)**2/rho(j))
        end do
これを必要な回数繰り返すことによって時間経過が計算される。



Kohji Tomisaka
1998年07月07日 13時56分39秒