Fortran 1 program test 1 implicit none write

  • Slides: 22
Download presentation

Fortran 入門 1 • 表示 -------------------program test 1 implicit none write( 6, * )

Fortran 入門 1 • 表示 -------------------program test 1 implicit none write( 6, * ) “Hello world!” end program test 1 ------------------- “おまじない” 画面に出力

Fortran 入門 2 • 計算 -------------------program test 2 implicit none real(8) : : num

Fortran 入門 2 • 計算 -------------------program test 2 implicit none real(8) : : num 1, num 2, num 3, num 4 num 1 = 3. 0 num 2 = 5. 0 num 3 = 6. 0 num 4 = num 3 * (num 1 + num 2) write( 6, * ) num 4 end program test 2 ------------------- “おまじない” 変数宣言 値の設定 計算 ( 6×( 3 + 5 ) ) 画面に出力

Fortran 入門 3 • 繰り返し -------------------program test 3 implicit none “おまじない” real(8) : :

Fortran 入門 3 • 繰り返し -------------------program test 3 implicit none “おまじない” real(8) : : num integer : : i 変数宣言 num = 0 do i = 1, 10 num = num + i end do (繰り返し)計算 write( 6, * ) num 画面に出力 end program test 3 ------------------- ( 1 + 2 + 3 + … + 10 )

Fortran 入門 4 • 配列 -------------------program test 4 implicit none real(8) : : num(5)

Fortran 入門 4 • 配列 -------------------program test 4 implicit none real(8) : : num(5) integer : : i “おまじない” 変数(配列)宣言 do i = 1, 5 num( i ) = i * 5 end do 配列に値の設定 do i = 1, 5 write( 6, * ) i, num( i ) end do 画面に出力 end program test 4 -------------------

Fortran 入門 5 • 条件分岐(と入力) -------------------program test 5 implicit none “おまじない” real(8) : :

Fortran 入門 5 • 条件分岐(と入力) -------------------program test 5 implicit none “おまじない” real(8) : : num 変数宣言 write( 6, * ) ‘Input number’ read( 5, * ) num キーボードから読み込み if( num > 10 ) then write( 6, * ) ‘input number is greater than 10’ else write( 6, * ) ‘input number is less than or equal to 10’ end if 条件分岐(画面に出力) end program test 5 -------------------

偏微分方程式の数値解法 1 プログラム例 program partdiff 1 implicit none real(8) : : pi, x(100), dx,

偏微分方程式の数値解法 1 プログラム例 program partdiff 1 implicit none real(8) : : pi, x(100), dx, dt, psi(100), psi_n(100) integer : : t, i pi = acos( -1. 0 d 0 ) dt = 0. 2 dx = 2. 0 * pi / 100 do i = 1, 100 x( i ) = -pi + dx * ( i – 1 ) end do do i = 1, 100 psi( i ) = 5. 0 + 2. 0 * sin( x( i ) ) end do do i = 1, 100 write( 6, * ) 0, x( i ), psi( i ) end do write( 6, * ) 演算はどうすれば良いでしょう? end program partdiff 1 πの設定 座標の設定 初期値の出力

偏微分方程式の数値解法 1 プログラム例 program partdiff 1 implicit none real(8) : : pi, x(100), dx,

偏微分方程式の数値解法 1 プログラム例 program partdiff 1 implicit none real(8) : : pi, x(100), dx, dt, psi(100), psi_n(100) integer : : t, i pi = acos( -1. 0 d 0 ) dt = 0. 2 dx = 2. 0 * pi / 100 do i = 1, 100 x( i ) = -pi + dx * ( i – 1 ) end do do i = 1, 100 psi( i ) = 5. 0 + 2. 0 * sin( x( i ) ) end do do i = 1, 100 write( 6, * ) 0, x( i ), psi( i ) end do write( 6, *) 演算はどうすれば良いでしょう? end program partdiff 1 do t = 1, 10 do i = 1, 100 psi_n( i ) = psi( i ) - 2 * x(i) * dt end do 計算 do i = 1, 100 psi( i ) = psi_n( i ) end do 変数の入れ替え do i = 1, 100 write( 6, * ) t, x( i ), psi( i ) end do write( 6, * ) end do 結果の出力

偏微分方程式の数値解法 1 gnuplot を用いた描画方法の例 % gnuplot 起動 GNUPLOT Version 4. 0 patchlevel 0 last

偏微分方程式の数値解法 1 gnuplot を用いた描画方法の例 % gnuplot 起動 GNUPLOT Version 4. 0 patchlevel 0 last modified Thu Apr 15 14: 44: 22 CEST 2004 System: Linux 2. 6. 18 -5 -686 Copyright (C) 1986 - 1993, 1998, 2004 Thomas Williams, Colin Kelley and many others (省略) Terminal type set to 'x 11' gnuplot> plot “result. txt” index 0 u 2: 3 w l gnuplot> replot “result. txt” index 1 u 2: 3 w l 0 番目の時間の 2, 3 カラムのデータを描画 1 番目の時間の 2, 3 カラムのデータを重ね描き