集中講義 秋村 資料

前期集中 R12420 物理学特論Ⅰ
20130812-4
2013 年 8 月 28 日, 29 日
原子核科学研究のための数値シミュレーション
事前配布資料
学籍番号
氏名
目次
1. Fortran プログラム(gfortran)のインストール .........................................................................................1
2. Fortran プログラムの作成..............................................................................................................................2
2.1. プログラムファイルの作成 ..................................................................................................................2
2.2. プログラムの編集..................................................................................................................................3
2.3. fortran プログラムの作成.......................................................................................................................4
3. Fortran プログラムの実行方法......................................................................................................................6
3.1. コマンドプロンプトの起動 ..................................................................................................................6
3.2. コマンドプロンプト上のコマンド.......................................................................................................7
4. Fortran プログラムの基本............................................................................................................................12
4.1. 型の宣言 ...............................................................................................................................................12
4.2. do 文.......................................................................................................................................................13
4.3. if 文 .........................................................................................................................................................13
4.4. Read 文、Write 文................................................................................................................................14
4.5. フォーマット文....................................................................................................................................15
5. 参考資料........................................................................................................................................................16
6. 課題 ...............................................................................................................................................................17
i
1. Fortran プログラム(gfortran)のインストール
下記ページを参考にして、GFortran プログラムをインストールしてください。
参考ページ http://d.hatena.ne.jp/arakik10/20120214/1329167074
①http://tdm-gcc.tdragon.net/ に入る
②Download のページの Bundle Installer (The easiest install) から、インストールする PC の
OS にあった exe をダウンロードする。
1.OS が 32bit なら tdm-gcc-4.6.1
2.OS が 64bit なら tdm64-gcc-4.6.1
Windows7 は 64bit, それ以外は 32bit であることに注意。
図 1-1 gfortran のダウンロードページ
③参考ページに従ってインストールを行う。
1
2. Fortran プログラムの作成
ここでは初心者向けの方法を解説します。
2.1. プログラムファイルの作成
①デスクトップにfortran という名前のフォルダを作成します。
②fortran というフォルダの中でテキストドキュメントを作成します。
③名前の変更から「test.f95」という名前にします。
拡張子を変更するため、メッセージが出ますが気にせずに「はい」を選択します。
これが fortran のプログラムになります。
2
2.2. プログラムの編集
①アクセサリからメモ帳を開きます。
図 2-1 メモ帳の起動
②メモ帳に test.f95 をドラッグすると、メモ帳上で test.f95 を編集できます。
図 2-2 メモ帳上でのフォートランファイルの編集
3
2.3. fortran プログラムの作成
①半角英数しか使ってはいけないルールになっていますので、入力モードが「ひらがな」などの場合、
「半角英数」に変更します。
図 2-3 入力モード
②プログラムの開始と終了の指示
メモ帳上で test.f95 を編集します。
図 2-4 の一行目はプログラムの開始を指示しています。
このプログラムの名前は「test」ですという意味です。
図 2-4 の一番下の行はプログラムの終了を指示しています。
図 2-4 プログラムの開始と終了の指示
4
③文字列の出力
何かを画面に出力させたいとき、write(6,*)と指示します。
文字列を出力させたいときは ‘ ‘ で文字列を囲います。
図 2-5 文字列出力の指示
④メモ帳上でのプログラムファイルの保存
メモ帳で編集したプログラムファイルを保存するには、右上のバツ印をクリックします。
保存しますか?と聞かれるため、
「保存する」を選択します。
図 2-6 メモ帳上での保存
5
3. Fortran プログラムの実行方法
3.1. コマンドプロンプトの起動
①スタートメニューをクリックします。
図 3-1 スタートメニュー
②アクセサリの中のコマンドプロンプトをクリックします。
図 3-2 アクセサリ―コマンドプロンプト
③コマンドプロンプト画面が立ち上がります。
図 3-3 アクセサリ―コマンドプロンプト
6
3.2. コマンドプロンプト上のコマンド
コマンドを打ち、エンターキーを押すとコマンドが実行されます。
表 3-1 に最低限必要なコマンドをまとめます。
表 3-1 コマンドと意味
コマンド
dir
cd [移動先のディレクトリパス]
gfortran [プログラムファイル名]
プログラム実行モジュール(標準は a.exe)
exit
意味
ディレクトリを表示する
カレントディレクトリの変更(移動)
fortran プログラムを gfortran でコンパイルします
プログラムを実行する
コマンドプロンプトの終了
① ディレクトリ中のファイル確認コマンド dir
“dir” というコマンドを打ったときの例を以下に示します。
ここでは、C ドライブの Users というディレクトリの akimura というディレクトリの中のディレクト
リを表示しています。
また、自分がいるディレクトリ(カレントディレクトリと呼ぶ)が C:¥Users¥akimura という場所
であることを示しています。
図 3-4 コマンドプロンプト‐dir コマンドとカレントディレクトリ
7
② ディレクトリ移動コマンド cd
“cd” というコマンドを打ったときの例を以下に示します。
図 3-5 コマンドプロンプト‐cd コマンド
cd [移動先のディレクトリパス]とコマンドを打ち、エンターキーを押します。
[移動先のディレクトリパス]を打つのが面倒なときは、図 3-6 のようにアドレスバーからコピーし、
コマンドプロンプト上で右クリックから貼り付けができます。
図 3-6 ディレクトリパスのコピー
図 3-7 コマンドプロンプトでの貼り付け
8
以上のコマンドにより、カレントディレクトリが変更され、
C:¥Users¥akimura という場所から
C:¥Users¥akimura¥Desktop¥fortran という場所に移動しました。
図 3-8 cd コマンド
dir コマンドにより、この中に先ほど作成した test.f95 が存在することが分かります。
図 3-9 dir コマンド
9
③ コンパイルコマンド gfortran
プログラムを機械語(コンピュータが作動する命令)に翻訳することをコンパイルといいます。
gfortran のコマンドを使ってコンパイルを行います。
図 3-10 のように、gfortran test.f90 と打ち、エンターキーを押します。
図 3-10 gfortran コマンド
dir コマンドを打つと、プログラムの実行モジュール「a.exe」が作られていることが分かります。
図 3-11 dir コマンド
10
④プログラム実行コマンド a.exe
できたフォートランプログラムの実行モジュールを実行します。
a.exe と打ち、エンターキーを押します。
フォートランプログラム中で画面に Hello World!と表示させるように指示したので、それが表示され
ています。プログラムが正しく実行できていることが確認できました。
図 3-12 プログラムの実行
⑤コマンドプロンプトの終了
exit と打ち、エンターキーを押すとコマンドプロンプトが終了します。
図 3-13 コマンドプロンプトの終了
11
4. Fortran プログラムの基本
ここでは最も基本的な fortran プログラムのルールについて説明します。
詳細は専門書を参照してください。
4.1. 型の宣言
fortran では、プログラム冒頭に変数名の定義と共に、変数の型の定義をする必要があります。
整数型は integer で宣言します。以下のような整数を格納できます。
[例] 1 -15 9805 0
実数型は real*8 で宣言します。以下のような実数を格納できます。
[例] 0 8.78 -1.78 .83d-03 ( = 0.83×10-3) 1.8d6 ( =1.8×106)
1.3d+1 ( =1.3 ×101) -1.78d-1 ( = 1.78×10-1)
文字列型は character*数字で宣言します。文字列が 5 文字の場合は数字は 5 になります。
図 4-1 に例を示します。
program test
integer :: i, j, k
real*8 :: a, b, c(100)
character*5 :: char1, char2
i=1
j=10
k=100
a=1.d0
b=10.d0
c(1)=1.d6
c(2)=2.d6
c(3)=5.d6
char1 = ‘abcde’
char2 = ’step1’
end program test
図 4-1 変数の型の宣言
ここで、C(100)は C(1)から C(100)まで 100 種類の数値が定義できるもので配列と呼ばれます。
12
4.2. do 文
条件を満たすまで繰り返す命令を do 文といいます。
do 文は、do から始まり enddo で終了します。図 4-2 の例では 7~9 行目が do 文になります。
7 行目は整数型の変数 i が 1 から 10 まで a に 1 を足しなさいという命令です。
do 文の中では 2 文字分「字下げ」を行うのが礼儀です。
i が 10 を超えるまでは、プログラムは do 文の中をぐるぐるとループ(繰り返し処理)します。
i が 10 を超えると do 文を抜けてプログラムが終了します。
program test2
integer :: i, j, k
real*8 :: a, b, c
character*5 :: char1, char2
a=0.d0
do i=1,10
a=a+1.d0
enddo
end program test2
図 4-2 do 文
4.3. if 文
もしも条件通りであればこれをしなさいという条件文を if 文で表します。
図 4-3 の例では do 文の中でもしも i が 3 より小さいのであれば a に 1.0 を足しなさい、それ以外で
あれば、a に 2.0 を足しなさいという意味の条件文です。
if 文の中でも 2 文字分「字下げ」を行うのが礼儀です。
program test3
integer :: i
real*8 :: a
a=0.d0
do i=1,10
if( i <3)then
a=a+1.d0
else
a=a+2.d0
endif
enddo
end program test3
図 4-3 if 文
13
4.4. Read 文、Write 文
write(6,*)は書き出し文で、画面に出力します。
read(5,*)は読み込み文で、キーボードから打ち込まれた数値を読み込みます。
program test4
integer :: i, imax
real*8 :: a
write(6,*) ‘ a, imax ? ’
read(5,*) a, imax
do i=1, imax
if( i <4)then
a=a+1.d0
else
a=a+2.d0
endif
enddo
write(6,*)a
end program test4
このプログラムを実行すると、’ a, imax ?’の状態でコンピュータが入力待ち状態になるので、例えば、
0.0 10 と入力し Enter キーを押すと、a に 0.0 imax に 10 が入力され、引き続き 6 行目からのプロ
グラムが実行されます。
a, imax ?
0.0 10 [Enter キーを押す]
せっかく計算をしても、それを出力しないと何がどうなっているか分かりません。
15 行目のwrite 文により、a の値を画面に出力することができます。
ここで、write 文中の 6 の数字は 6 番出力(標準出力:画面)という意味です。この 6 は出力の番号
で既に決まっているものですが、read 文中の 5 番は入力の番号として既に決まっているものです。
それ以外の数字を書くと、その名前のファイルが作られそこに出力されます。
例えば、write(666,*)とすると、fort666 というファイルに出力されます。
14
4.5. フォーマット文
出力のフォーマットを指定することができます。
program test5
integer :: i
real*8 :: a, b
a=0.d0
b=0.d0
do i=1,10
if( i <4)then
a=a+1.d0
b=b+0.1d0
else
a=a+2.d0
b=b*2.d0
endif
enddo
write(6,’(f14.3, 1x, 1pe14.6)’)a,b
end program test5
ここで、write 文中の’(f14.3, a, 1pe14.6)’はフォーマットを指定しています。
f14.6 は全部で 14 桁、小数点以下 6 桁の意味です。
1x は 1 文字分空けるの意味です。
1pe14.6 は実数を 14 文字表示とし、小数点以下 6 桁、小数点上 1 桁で指数表示する、の意味です。
詳細は専門書を参考としてください。
15
5. 参考資料
①演習と応用 FORTRAN77、戸川隼人著、サイエンス社
fortran77 も 90 も基本は変わりません。
この本のf90 版が出ているかも知れませんが、こちらを使って分かりやすかったのでおすすめします。
②Fotran90 入門、新井親夫、森北出版
文法の解説書として参照するのにおすすめ。
16
6. 課題
①Fortran でプログラムを作成して実行し、ファイルに
‘Hello! World!’
と出力させなさい。
②Fortran でプログラムを作成して実行し、
1 から 10 までの整数の足し算を実行しなさい。
ファイルには、1 から 2 までの和、1, 2, 3 の和、1, 2, ,3 ,4 の和…、1, 2, …, 10 の和を出力させなさい。
17