スライド 1

2006年度
計算力学
第10回
プログラミング実習(2)
2006.06.12
■ レポート提出について
提出するもの
• プログラムリスト
• 結果のグラフ(Excelを使うとラク)
• 課題に対する解答
Wordなどで一つのファイルにまとめ,以下のWebサイト
から提出する(6月30日締め切り)
https://www.e-skillup.jp/shibaura-it/
■ プログラムの流れ
変数の設定,型宣言
必要な変数は書き出しておく
クーラン数の設定
初期条件の設定
クーラン数は変更できるように
差分法による計算
配列を使って繰り返し計算
計算結果の出力
まずは最終結果を!
■ 繰り返し処理(DO 文)のプログラム例
【問題】 S=1+2+3+ ・・・ +50 を計算せよ
program goukei
integer sum, i
sum=0
do 10 i=1,50,1
sum=sum+i
10 continue
write(*,*) ’S=‘,sum
stop
end
do N i=i1,i2,i3
文1
文2
・
・
N continue
i を i1 から i2 まで
i3 ずつ増やしながら
do と continue に
はさまれた文を繰り返
し実行する
■ 配列を使ったプログラムの例
【問題】 3個のデータ a1,a2,a3 を読み込んで,
その平均値を求めよ.
a1,a2,a3 はいずれも実数とする.
■ 配列を使ったプログラムの例
配列を使うと・・・
▲
平均値を求めるプログラム
■ 配列について(補足1)
添え字が1つの変数 a1, a2, a3, ・・ , ai , ・・ に対して
a(i), i=1,2,3, ・・・・
1次元配列
添え字が2つの変数 f11, f21, f31, ・・ , fi j, ・・ に対して
f(i,j), i=1,2,3, ・・・・
j=1,2,3, ・・・・
2次元配列
■ 配列について(補足2)
配列の番号を0から使いたければ,
a(0:100), f(0:100,0:200)
のように,上限と下限を指定する.
■ 風上差分法のプログラム
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
このプログラムで正しく計算できるか?
■ 境界条件について
ex. 風上差分
j=1
j=1
j=1
j=0
計算領域の左端(x軸上の最初の格子点)における f の値
は計算しない. → 境界条件として与えてしまう.
※初期分布として設定した f1 の値を使えばよい.
■ 差分スキームの補足
▼ Friedrichs-Lax 法
▼ Fromm 法