スライド 1

2006年度
計算力学
第11回
プログラミング実習(3)
2006.06.19
■ 風上差分法のプログラム
n:時間ステップ, j:空間刻み, v:クーラン数 として,
do 10 n=1, nmax
do 20 j=1, jmax
f(j)=f(j)-v*(f(j)-f(j-1))
20
continue
10 continue
このプログラムで正しく計算できるか?
■ 風上差分法のプログラム(改良版)
n:時間ステップ, j:空間刻み, v:クーラン数 として,
do 10 n=1, nmax
do 20 j=2, jmax
f(j,n+1)=f(j,n)-v*(f(j,n)-f(j-1,n))
20
continue
10 continue
※ 2次元の配列を利用する.
※ 境界条件( j = 1)を考慮する
■ 境界条件について
ex. 風上差分
j=1
j=1
j=1
j=0
計算領域の左端(x軸上の最初の格子点)における f の値
は計算しない. → 境界条件として与えてしまう.
※初期分布として設定した f1 の値を使えばよい.
■ ファイル出力の例
2次元の配列 : f(j,n),j=1~5,n=1~3
について,その値をファイル出力する場合
open(1,file=’out.dat’,status=’new’)
do 10 n=1, 3
write(1,100)( f(j,n),j=1,5 )
10 continue
close(1)
100 format( 5(f6.2) )
■ ファイル出力の例
j=1
n=1
n=2
n=3
j=2
j=3
j=4
j=5
f(1,1) f(2,1) f(3,1) f(4,1) f(5,1)
f(1,2) f(2,2) f(3,2) f(4,2) f(5,2)
f(1,3) f(2,3) f(3,3) f(4,3) f(5,3)
format( 5(f6.2) )
f6.2 : xxx.xx
5f6.2 : xxx.xxxxx.xxxxx.xxxxx.xxxxx.xx