この実習では以下の要領で成績を評価します.
この授業では,プログラミング言語の習得を目標とします.習得すると何ができるようになるのでしょうか? 大きくわけると二つのことができるようになります.
私が最近行った数値シミュレーションの例と研究の背景を下に示します.
研究の背景:地球に落下してくる隕石のうち8割はコンドライト隕石と呼ばれるタイプです.この隕石の中にはコンドリュールとよばれる大きさ0.1-2mm程度の球状の粒子が多数含まれています.形状が球であることから,何らかの加熱イベントによって鉱物が溶融し,表面張力によって球状になったと考えられています.体積の8割以上がコンドリュールである隕石も多く,また形成年代は太陽系形成以後100-300万年程度と測定されています.これらのことから,太陽系形成時において発生した加熱イベントによってコンドリュールは形成されたはずです.しかしその加熱イベントが何であったかは未だに謎です.
太陽系の形成時は,微惑星とよばれる小天体の相互衝突が頻繁におこっていました.衝突すると温度が上昇するので,シリケイトが溶融する可能性があります.そこで微惑星の相互衝突を数値シミュレーションし,どの程度溶融するのかを調べました.それが上の動画です.
衝突のシミュレーション結果を元に,溶融したシリケイトがどの大きさまで分裂するかを流体力学シミュレーションにより求めました.同時に温度低下の速度も算出しました.実験室ではそれぞれ0.1-2mm および 10 - 1000 度/時 と求められています.シミュレーションの結果は上図に示されており,幅広くパラメータを変化させても計測値とちょうどおさまる結果となりました.
プログラムは「エディタ」とよばれるアプリケーションで作成します。エディタとは、文字列のみ作成できるもので、ワード等のワープロとは根本的に異なります。メモ帳(windows),テキストエディット(Mac)が標準で付属しているエディタです.さまざまなフリーのエディタがありますので好みに応じて使ってください.標準のものでも十分です.以下の解説は,サテライトラボのiMacにインストールされている emacs エディタの解説です.
画面下のアイコンが並んでいる中に,バックがうすむらさき色の上にペンの絵があるアイコンがあります.一度クリックすると起動します.
以下で C-x とは CTRLキーを押しながら「x」キーを押すことを意味します. 次の3つは最低限覚えましょう!
ここで練習をしてみましょう. test.txtというファイルを開いてください. 今の場合, test.txtはまだ存在しません. その場合は新たにファイルが作成されます. 開くことができたら, ローマ字,かな漢字を入力してみましょう. 一通り書いたらセーブしてみましょう.
作成したプログラムは,「コンパイル」という作業をすることで実際に動くようになります.この作業は「ターミナル」という画面で行います.この画面での操作は,マウスでクリックといった直感的なものではなく,コマンドを入力することで実行します.windowsの方は gfortran を起動してください.macの方は「ターミナル」を起動してください.
cd | いま自分がいるフォルダ名の表示 |
---|
cd フォルダ名 | フォルダ間の移動 |
---|---|
cd Mail | Mail フォルダに移動 |
cd ../ | 一つ上の階層のフォルダに移動 |
mkdir フォルダ名 | フォルダの作成 |
---|---|
mkdir hoge | hogeフォルダを作成 |
del ファイル名 | ファイルの削除 |
---|---|
del hogehoge | ファイルhogehogeを削除 |
dir | ファイルのリスト表示 |
---|
pwd | いま自分がいるフォルダ名の表示 |
---|
cd フォルダ名 | フォルダ間の移動 |
---|---|
cd Mail | Mail フォルダに移動 |
cd ../ | 一つ上の階層のフォルダに移動 |
mkdir フォルダ名 | フォルダの作成 |
---|---|
mkdir hoge | hogeフォルダを作成 |
rm ファイル名 | ファイルの削除 |
---|---|
rm hogehoge | ファイルhogehogeを削除 |
ls | ファイルのリスト表示 |
---|
毎週必ず行なう手順を示します.
こうしておくと後で見返すことが容易にできます.
次のプログラムを書いてみましょう.example1.f90という名前でさきほど作成したフォルダの中に保存してください. もし間違えたら再度 211014 ディレクトリに保存してください.保存したら,dir (ls:今後,特記しなかぎりwindowsのコマンドをかっこ無しで明記し,かっこの中にmac でのコマンドを書きます) コマンドでファイルが存在していることを確認してください.
program example1 ! プログラムの開始 implicit none ! 暗黙の型宣言を使わない double precision a,b,c ! 倍精度型実数a,b,cを宣言 a = 1.D0 ! aに倍精度の1を代入 b = 2.D0 ! bに倍精度の2を代入 c = a + b ! cにaとbの和を代入 write(*,*) a,b,c ! a,b,cに格納されている数値をモニタに出力 end program example1 ! プログラム修了
まず覚えてほしいフォートランのきまり:
さて作成したプログラムはこのままでは計算機は理解できません. 実行形式(バイナリ)に変換する必要があります. この操作をコンパイルと呼びます. コンパイルはエディタ上ではできません. ターミナル上で入力します.
gfortran example1.f90で行われます.すると a.exe (a.out) と言うファイルが作成されます.以下のコマンドで実行してみましょう.
a.exe (./a.out)
program example2 implicit none double precision a,b real c integer n a = 2.1D0 b = 2.1 c = 2.1 n = 2.1 write(*,'(D24.16,1x,D24.16,1x,D24.16)') a,b,c write(*,'(I3)') n end program example2モニタ上の表示はどうなったでしょうか? 何桁目まで正しく表示されていますか? nの表示はどうなっていますか? 再度注意点をまとめると:
program example2 implicit none double precision a,b,c,d a = 1.D0 b = 2.D0 c = a + b read(*,*) d write(*,*) d write(*,*) a,b,c end program example2と変更して実行してみよう.
open(1,FILE='test.dat')を追加してください. こうするとその後write(1,*)とすることによりtest.datに結果が出力されます.
レポートは毎回とも城野,濵本,田村にメール で送ること.二人以上に同時にメールを送るときは sirono@eps.nagoya-u.ac.jp,hamamoto.miki@k.mbox.nagoya-u.ac.jp,tamura.misaki@c.mbox.nagoya-u.ac.jpとコンマをつけて並べれば良い.
日程表へ戻る <<