— 1 —SENAC Vol. 45, No. 4（2012.10）［共同研究成果］

శߦࠃߞߡᒁ߈⿠ߎߐࠇࠆൻቇ෻ᔕߩ㊂ሶജቇߦၮߠߊℂ⺰⸃ᨆ―

非断熱遷移を引き起こす円錐交差の取り扱いについて―山崎 馨・菅野 学・河野 裕彦
東北大学大学院理学研究科化学専攻

分子に光が照射されて生成する電子が高いエネルギーを持った電子励起状態においては，一般に，複数の電子状態のポテンシャルエネルギー曲面(PES)が接近する．とくに，ポテンシャル面が交差してできる円錐交差の領域では，原子核がある電子状態から別の電子状態のポテンシャル
面上を動くようになる非断熱遷移が起き，化学反応の機構や速度を大きく変化させる．そこで本稿では，電子励起状態を経由する化学反応の理論解析の鍵となる円錐交差の理論的取り扱いについて概説する．特に円錐交差の分子構造が正しく求められているかを，円錐交差における幾何位
相効果に基づいて確認する方法について実際の計算例を交えて議論する．

ᐨ⺰
分子に近赤外から可視・紫外領域の光を照射すると，分子内の電子が高いエネルギーを持った
電子励起状態が生成する．電子励起状態においては，化学反応中の原子核の運動を決定づける断熱ポテンシャルエネルギー曲面(PES)の形状は，電子基底状態とは異なった物となる．このため，適切な波長・波形・強度を持った光を用いて特定の電子励起状態を選択的に生成することで，電子基底状態では起こりにくい化学反応を，別の反応機構によって効率良く進行させることが可能である[1,2]．この様に，分子への光照射が引き金になって起こる反応を光化学反応という．
光化学反応では，分子が電子励起状態において構造変化をする過程で，関連する電子状態間のポテンシャ
ルエネルギー差が非常に狭い領域に到達することがある．この様な領域では，電子と原子核との相互作用（振電相互作用または非断熱相互作用）が他の領域に比べて強い．このため，電子エネルギーと原子核のエネル
ギーの間に交換が起こり，電子状態が光の吸収・発光をともなわないで変化する．この原子核の動きによって誘起される過程を非断熱遷移という（これに対して，原子核がゆっくり動く極限の過程は断熱過程と呼ばれ，
図 1：円錐交差と非断熱遷移の概原子核は同一の断熱電子状態上を動く）[2,3]． 非断熱
念図．断熱ポテンシャルエネルギ
遷移は電子状態間のエネルギー間隔が狭くなるほど起ー曲線 V1 と V2 の値が等しくなる
こりやすくなり，図 1 に示す PES の交差点である円錐
円錐交差 R*において V1 と V2 の間交差の分子構造は最も非断熱遷移が起こる確率が高いの非断熱相互作用が非常に強くな構造であるといえる．円錐交差における非断熱遷移は，り，分子は光を出さずに V2 から
多くの光化学反応においてその反応経路を分岐させ，V1 へと非断熱遷移する．
電子基底状態とは異なった反応機構をとる原因となっている[4]．このため，円錐交差の構造を探索してそのエネルギーや電子状態間の非断熱結合の強さを求めることは，光化学反応の反応機構を理論的に解析する上での中心的な課題の一つとなっている[5]．そこで本稿では，筆者らの最近の研究[6]を例に，非断熱遷移を引き起こす円錐交差の理論的取り扱いおよびその役割について概説する．

— 2 —

SENAC Vol. 45, No. 4（2012.10）

2. ��������������������
円錐交差の構造探索は，MOLPRO[7]などの電子励起状態における量子化学計算を得意とする計算パッケージに実装されている構造最適化ルーチン[8,9]を用いて実行することが可能である．また近年，大野・前田らによって開発された化学反応経路自動探索プログラム GRRM1[10]により，電子励起状態の安定な分子構造を出発点として円錐交差を系統的に自動探索することも可能になってきた[11]．これらのプログラムによって求められた構造が円錐交差の構造に正しく収束しているかどうかは，全電子の確率的空間分布を特徴付ける関数である断熱電子波動関数{Ψn}の円錐交差近傍における符号変化（幾何学的位相あるいはベリー位相効果）に着目することで確認することができる[8,9]．本節では幾何学的位相効果の確認による円錐交差の同定法について概説する．

2.1 ��������������������������
まず，円錐交差が核配置 R*に存在し，2 つの断熱電子波動関数{Ψ1 (r,R), Ψ2 (r,R) }で特徴付けられる 2 準位の M 原子分子系を考える（M は任意の整数）．ここで，r と R はそれぞれ電子と原子核の座標ベクトルである．この時，これらの断熱電子波動関数が，電子がどの分子軌道に収まっているかを示す電子配置を特徴付ける N 個の透熱電子波動関数の組{ψi (r,R); i = 1,2,…N} を用いて[9]NΨn �r, R�= � Cn, i �R�ψi (r, R)
i=1

(1)

と展開できるとする．ここで Cn,i (R) は ψi (r,R)の展開係数であり，|Cn,i (R)|2 が ψi (r,R)の重みを表す．なお，分子が円錐交差 R*で非断熱遷移を起こすとき，その確率は R* 近傍のポテンシャルエ
ネルギー曲面(PES) の形状と 2 つの状態の非断熱結合強度を特徴付ける 2 つの 3 × M 次元(3M 次
元) のベクトル（非断熱結合ベクトル）によって決まる．1 つ目は，円錐交差に関与する 2 つのPES の傾きの差を表す g ベクトルである．2 つ目は，円錐交差に関与する 2 状態の非断熱結合強度を表す h ベクトルである．円錐交差近傍において 2 つの透熱電子波動関数{ψa (r,R), ψb (r,R)} が{Ψ1 (r,R), Ψ2 (r,R) }の主要な成分になっているとき，g ベクトルと h ベクトルはそれぞれ次の様に書くことができる．
1���� = ��ψa � �R H (r,R) �ψa � - �ψb � �R H (r, R) �ψb ��(2)2
� ��� = �ψa � �R H (r,R) �ψb �(3)

ここで，H (r, R)と  R はそれぞれ，系の全エネルギーを表すハミルトニアン演算子と 3M 次元の全ての原子座標についての微分を行う微分演算子である（  R H (r , R) はグラジエント）．また，(2)式と(3)式では全電子座標についての積分を行っているため，g ベクトルと h ベクトルが核座標
R のみに依存する 3M 次元のベクトルになっていることに注意されたい．

さて，円錐交差 R* 近傍で R* を含む閉ループを考え，それに沿って得られる断熱電子波動関数の符号を調べると，閉ループを 1 周した際にその符号が反転することが知られている[5,8,9]．このように，量子力学においては，ハミルトニアンがゆっくり断熱的に変化して元に戻っても，対応する波動関数の位相が元に戻らない場合があり，この効果は幾何学的位相効果とよばれている．
R*が円錐交差の場合もその一例である．R* を含む閉ループを定義する際は，次の様に規格直交基

GRRM に関しては，東北大学サイバーサイエンスセンターで利用可能である．詳細については，
http://www.ss.isc.tohoku.ac.jp/application/grrm11.html を参照のこと．

1

光によって引き起こされる化学反応の量子力学に基づく理論解析— 非断熱遷移を引き起こす円錐交差の取り扱いについて —

— 3 —

ෝ ,࢟
ෝ ） を構造最適化の過程で得られる R* における g ベクトルと h ベクトルから作ると便底 （࢞利である[8,9]．
gxො = ٣
(4)
ฮg ฮ
٣

yො=

h
ԡhԡ

(5)

ここで g� は h ベクトルに垂直になるように変換した g ベクトルであり，以下の式で定義される．
g٣ = g – ሺyෝ· gሻ yොෝ と࢟ෝ を用いることで，円錐交差 R* を中心とする半径 ρ の円状ループ࢞ෝ ρcosθx (ρ, θ) = ࢞

(6)

(7)

ෝ ρsinθy (ρ, θ) = ࢟を定義することができる．このループに沿って断熱電子波動関数{Ψn}の符号を調べると，2π 回転
した際にその符号が反転する，すなわち Ψn (ρ, θ) = −Ψn (ρ, θ + 2π) なる関係が成立する．

2.2 実際に計算するときの注意点
幾何学的位相効果を利用した円錐交差の確認を行う際には，以下の 3 点に気をつける必要がある2．
第 1 に，量子化学計算パッケージで主に使用される単位系は原子単位系と呼ばれるものであり，化学や物性物理の研究において日常的に使われる単位とは異なっていることに注意が必要である．
原子単位系においてはエネルギーの単位は Hartree，長さの単位は Bohr で表され，1 Hartree ~ 27.211
eV, 1 Bohr ~ 0.529 Å である．非断熱結合ベクトルは力の次元を持っているため，その各成分の値
ෝ ,࢟ෝ ）を作るは Hartree/Bohr で出力される．このため，非断熱結合ベクトルから規格直交基底（࢞場合，そのノルムは 1 Hartree/Bohr となる．一方，構造最適化後の構造は量子化学計算パッケー
ジ利用者の便宜を図って Å 単位で出力されることが多いので，ループ上の構造を求める際には適宜単位換算を行う必要がある3．
第 2 に，閉ループ（x, y）に沿って展開係数{Cn,i (R)}の値を調べていく際には，その値が連続的に変化していくことを確認する必要がある．これは，断熱電子波動関数{Ψn}の符号が反転しても分子の総エネルギーは変化しないため， {Cn,i (R)}の値の連続性を考慮しないで多くの量子化学計
算パッケージが{Ψn}の符号を決めていることに起因する． {Cn,i (R)} の符号が角度 θ において急に反転した場合には，次の様な対応をとると良い．なお，符号が反転する前の角度を θ’ とする．
(1) Jmol 等の可視化ソフトウエアを使って電子の確率的な空間分布を特徴付ける関数である分子軌道を角度 θ’と θ において可視化し，その位相（符号）が反転していないか確認する．反転していた場合はその軌道が関与する電子配置の係数{Cn,i (R)}の符号を反転させて補正する．

2

ここでは MOLPRO を使用して計算を行う場合について特に述べるが，他の量子化学計算パッケージ(例えば GAMESS や MOLCAS)を使用する場合でも要点は同じである．
3 閉ループ（x, y）に沿って展開係数{C (R)}の値を調べる場合には, Bash や Perl などのスクリプト言n,i語を使って自動的に閉ループ（x, y）上の分子構造を作成して計算を実行するようにすると効率が良い．
なお，MOLPRO においては，ユーザーが任意のベクトル型配列や do ループをインプットファイル内に作成して計算を自動化させることができるので，この機能を使うのも有効である．

— 4 —

SENAC Vol. 45, No. 4（2012.10）(2) 分子軌道の位相が反転していない場合，{Ψn}全体の符号が反転している可能性が高い．
そこで，{Cn,i (R)} の符号が反転する前後の{Ψn}の重なり積分N�Ψn �ρ, θ'�|Ψn �ρ, θ��� � C*n, i �ρ, θ'�Cn, i (ρ, θ)

(8)

i=1

を計算する．ここで C*n,i は Cn,i の複素共役を表す．重なり積分がほぼ −1 になっていれば θ’から θ で{Ψn}の符号が反転していることが確認される．この場合，全電子配置の係数{Cn,i (R)}の符号を反転させて補正する．
以上の確認作業を円滑に行うためには，すべての電子配置{ψi (r,R)}に関してその展開係数{Cn,i(R)}を出力するように，量子化学計算パッケージの出力オプションを設定するとともに，分子軌
道の出力形式を正準軌道4に指定するとよい．また，計算の際に 1 つ前の θ における断熱電子波動関数を初期値として読み込ませると，{Ψn}の不連続な変化を少なくするとともに，計算効率の向上を図ることができる5．
第 3 に，分子中の 1 つ 1 つの電子の運動がそれぞれ独立ではなく，1 つの電子が他の電子に近づくとお互いに避け合うように相関運動して安定化する「電子相関」の効果をいかに取り込むかである．電子励起状態においては，(1) 式に示すようにいくつもの電子配置が系全体の断熱電子波動関数に寄与している場合が多い．これらの電子配置の中でそのエネルギー準位が近接しているもの同士の相互作用による安定化効果を「静的電子相関」効果[12]，それ以外の安定化効果を「動的電子相関」効果と便宜上呼び分けることにする．
円錐交差においては 2 つの断熱電子状態間のエネルギー差がゼロであるため，これらの断熱電子状態を記述する波動関数{Ψ1 (r,R), Ψ2 (r,R) }に寄与する電子配置{ψi (r,R)}のエネルギー準位も非常に近接したものになる．このため，静的電子相関が非常に大きくなり，その効率の良い取り込みが円錐交差の構造を精度良く計算するための出発点となる．このため，静的電子相関に主要な寄与を示すと考えられる幾つかの電子配置の重ね合わせ(多配置展開)で断熱電子波動関数{Ψn}を近似する多配置 Self consistent field (SCF)法[13,14]が頻繁に用いられる．多配置 SCF 法は静的電子相関を重点的に取り込むため，動的電子相関の考慮は不十分になる傾向がある[12,14]．この動的電子相関の欠如を改善し円錐交差のエネルギーを定量的に算出するために，多配置 SCF 法によって得られた円錐交差の構造における断熱電子波動関数とエネルギーを 0 次近似とするエネルギ
ー補正がしばしば行われる[6,15]．代表的な補正法として，動的電子相関の根源である多配置展開に漏れた電子配置の寄与を摂動展開してその 2 次の項までを考慮する 2 次の多参照摂動法[16-18]などがある．一般に，多配置 SCF 法で求めた円錐交差の構造において多配置摂動法などを用いたエネルギー補正を行うと，円錐交差を構成する 2 つの断熱電子状態のエネルギー差がゼロではな
くなる．これは動的電子相関の効果により円錐交差の分子構造が変化する[19]ことに起因する．
このため，多配置 SCF 法によって得られた円錐交差のエネルギー補正を行う場合には，次の 2 点について最低限確認する必要がある．
(1) 補正後の 2 状態のエネルギーの平均が多配置 SCF 法によって得られた円錐交差のエネルギ
ーと十分に近いこと．
(2) 2 つの断熱電子状態のエネルギー差が十分に小さいこと．
4

正準軌道は幾つかある分子軌道の形式のひとつである．詳細については文献[20]を参照のこと．
MOLPRO や Gaussian などの量子化学計算パッケージは，計算結果をバイナリファイルとして保存しておく機能を備えている場合が多い．それらから波動関数を読み込ませればよい．

5

— 5 —

光によって引き起こされる化学反応の量子力学に基づく理論解析— 非断熱遷移を引き起こす円錐交差の取り扱いについて —3.��������������������������円錐交差�
本節では，グラフェンやカーボンナノチューブなどのナノカーボンにおける主要な構造欠陥生成機構の一つである Stone-Wales 転位(SW 転位)の電子励起状態経由の反応経路に関与する円錐交差[6]を例に，円錐交差の構造最適化と幾何学的位相効果の確認について述べる．
SW 転位とは図 2 に示すようにナノカーボンが持つ 4 つの六員環の中心の C1＝C2 二重結合が段階的に 90 度回転して五員環と七員環を 2 つずつ形成する反応である．この反応を制御することはナノカーボンのバンドギャップ調節につながるので，筆者らは，図 2 に示すように，C-C 結合の開裂と形成が段階的に起きる多段階反応経路について調べた． SW 転位を再現できる最小の分子であるピレン(図 2 左端)をモデルとし，とくに，電子基底(S0) 状態及び第 1・第 2 一重項電子励起（S1・S2）状態における反応経路を探索した．
本研究では，幾つかの電子状態のエネルギーの加重平均を最小化する多状態の多配置 SCF 法である State-averaged complete active space SCF 法(SA-CASSCF 法)[21,22]を用いて反応物（ピレン，
図 2 左端）と生成物（アズピレン，図 2 右端），及び図 3 に示す中間体や 2 つの円錐交差の分子構造を求めた．また，SA-CASSCF 法の波動関数を 0 次近似とする 2 次の多参照摂動法である
multistate complete active space self-consistent field second-order perturbation theory (MS-CASPT2)法[23]を用いて動的電子相関の効果を取り込み，求めた構造における分子のエネルギーを補正した．
SA-CASSCF 法において考慮する電子配置としては，最安定電子配置とこの配置において電子が収容されている分子軌道 (被占有軌道) のうちエネルギーが高い順に 3 個と，電子が収容されていない分子軌道(空軌道)のうちエネルギーが低い者から順に 3 個の計 6 軌道（これが活性空間
active space で あ る ） の 中 に 含 ま れ る 6 つ の 電 子 が 取 り 得 る 全 て の 励 起 配 置 を 考 慮 し た（[6,6]-SA-CASSCF 法）．なお，以上の計算では S0 から S2 までの 3 状態を考慮し，ガウス型関数の線形結合（ガウス型基底関数 6-31G(2d,p)）を用いて分子軌道の形を表現した．以上の計算には
量子化学計算パッケージ MOLPRO2010.1[7]を使用した．
図 4 にピレンにおける多段階 SW 転位(図 2)の反応経路に沿った PES と見いだした円錐交差を示す．この反応機構において，円錐交差が重要な役割を果たしていることがわかる。つまり，図

8

7
3

4

1
2

5

6
10

8
9

7
3

4

1
2

5

6
10

8

7
3

5
8

1

9
4

2

6
10

7
3

5
2

9
4

1
6
10

8
9

7
3
2
4

5
1
6
10

9

図 2: グラフェンやカーボンナノチューブにおける Stone-Wales 転位の反応機構の多段階反応
経路．赤い矢印が原子の動きを表す．なお，反応サイトだけを抜き出していることに注意．

(b) 円錐交差 1(c) 円錐交差 2(a) 中間体
図 3: ピレンにおける非断熱 Stone-Wales 転位に関与する(a)S0 状態の中間体および (b), (c)S1/S0 状態間の 2 つの円錐交差の構造．z = 0 に位置する分子平面からのずれを斜体字で示す．

— 6 —

SENAC Vol. 45, No. 4（2012.10）3b3bに示す円錐交差1 はピレンと図3a 3aに示す中に示す円錐交差1 はピレンと図に示す
間体の間に位置し，図 3c に示す円錐交差
2 は中2中間体の間に位置し，図3c に示す円錐交差
間体とアズピレンの間に位置することがわかる．
は中間体とアズピレンの間に位置することがわ
光励起によりS1 状態から反応が開始した場合，かる．光励起によりS1 状態から反応が開始した
S0 状
場合，
円錐交差
円錐交差
1 で S10 状態に非断熱遷移するとで S0 状態に非断熱遷移するとS
態0 状態から反応が始まった場合と同じ反応障壁から反応が始まった場合と同じ反応障壁(9.54 eV)で反応が進行する．一方，円錐交差 1で非断熱遷移が起きず，S1 状態上で反応が進行した場合，分子は 14.56 eV もの反応障壁を越えなくてはならない．このため，この反応経路はエネルギー的に圧倒的に不利である．また図 5で示された円錐交差 1 の R1* における非断熱結合ベクトル{g(R1*), h(R1*)}を見ると，どちらの非断熱結合ベクトルも SW 転位の反応座標である C1=C2 結合の回転方向に大きな成分を持つ
ことがわかる．これは SW 転位が進行すると，円錐交差 1 における非断熱遷移も起こりやすい
ことを示している．以上より，S1 状態から始まる SW 転位では，円錐交差 1 において S1 状態から S0 状態へ非断熱遷移する反応経路の方が S1状態に分子が留まったまま反応する経路より優勢だと考えられる．
この節の最後に，得られた交差点が真の円
錐交差点か，つまり，幾何学的位相効果の調べ方について説明する．まず，円錐交差 1 のR1* におけるこれら 2 つの非断熱結合ベクトル{g(R1*), h(R1*)}から(4)-(6)式を用いて規格� ,࢟ෝ� ）を作り，円形ループ (ρ = 0.05ෝ
直交基底（࢞（��,��Bohr) を R1*を中心として(7)式にしたがって構築した．円錐交差 1 と 2 において大きく寄与する電子配置(図 6)の SA-CASSCF 法におけに示す．ここでケット|…〉
る係数{Cn,i}を図 7 に示す．ここでケット|…‫ۄ‬
内の数字はすべての電子配置を生み出す活性空間内の 6 つの分子軌道の電子占有数を表している．例えば図 6 に示すように |222000‫ۄ‬|222000〉 は
電子が最高占有軌道 (HOMO)占有軌道以下におさまった電子基底配置を表し，|221100〉におさまった電子基底配置を表し，|221100‫ۄ‬

図 4：ピレンの Stone-Wales 転位における多段階機構のポテンシャルエネルギー曲線．図中に示したエネルギー値はMS-CASPT2 法で求めたものである．なお，
円錐交差におけるエネルギーは S1 状態とS0 状態のエネルギーの平均を示していることに注意．S1 状態から反応が開始した場
合，円錐交差 1 で S0 状態に非断熱遷移す
ると S0 状態から反応が始まった場合と同じ反応障壁(9.54 eV)で反応が進行する．

(a) h ベクトル(b) g ベクトル
R1* における非断熱結合

図 5: 円錐交差のベクトル：(a) h ベクトル，(b) g ベクトル．
どちらの非断熱結合ベクトルもStone-Wales 転位の反応座標である C1=C2結合の回転方向に大きな成分を持つことがわかる．

LUMO + 2
エネルギー

LUMO + 1
LUMO
HOMO
HOMO − 1
HOMO – 2|222000〉|222000‫ۄ‬|221100‫ۄ‬|221100〉|220200〉|220200‫ۄ‬|212100〉|212100‫ۄ‬|221010‫| ۄ‬211110‫ۄ‬|221010〉|211110〉
図 6: 円錐交差 1･2 において大きな寄与を示す電子配置．赤い矢印が電子 1 個を表す.

光によって引き起こされる化学反応の量子力学に基づく理論解析— 非断熱遷移を引き起こす円錐交差の取り扱いについて —— 7 —は HOMO から最低空軌道 (LUMO) への 1 電子励起配置を表す．図 7a の左パネルに示すように，円錐交差 1 を中心とする円形ループを一周することで，S0 状態における|221100〉 の係数が−0.66
から 0.66 に変化していることが分かる．同じように，図 7a の右パネルに示す|222000〉 の係数も−0.94 から 0.94 へ変化している．同様の手続きで，円錐交差 2(図 7b)においても, S0 状態と S1 状態の 4 つの主配置係数の符号反転を確認した．このことから，構造最適化された円錐交差 1・2 はS0 状態と S1 状態の PES が交差して形成される円錐交差であることが確かめられた．
また，SA-CASSCF 法で求めた円錐交差 1 と 2 のエネルギーはそれぞれ 9.51 eV と 8.75 eV であった．一方，MS-CASPT2 法で動的電子相関の効果を取り込んで補正した円錐交差 1 における S0
状態と S1 状態のエネルギーは 9.12 eV と 9.38 eV であり，その平均エネルギーは 9.25 eV (図 4)であった．同様に，円錐交差 2 における MS-CASPT2 法で求めた S0 状態と S1 状態のエネルギーは8.75 eV と 8.92 eV であり，その平均エネルギーは 8.84 eV (図 4)であった．これら 2 つの円錐交差における S1 状態と S0 状態の MS-CASPT2 法によるエネルギーの平均は SA-CASSCF 法によるエネ
ルギーと非常に近い．また MS-CASPT2 法で求められた S1 状態と S0 状態のエネルギー差は円錐交
差 1 で 0.26 eV, 円錐交差 2 で 0.18 eV と十分に小さい．このことから，今回 SA-CASCCF 法で求められた円錐交差 1 と 2 の構造は MS-CASPT2 法で求めた場合の構造と定性的には大きな差が無
いと考えられる．

(a) ෇㗹஺ᕪ 1

0.94
0.66

(b) ෇㗹஺ᕪ 2

図 7：S1/S0 断熱状態間の円錐交差 1・2 における幾何学的位相効果．SA-CASSCF 法の各円錐交差における 4 つの主配置{ψi; i = 1,2,3,4}の係数{Cn,i (R); i = 1,2,3,4}を閉ループの角度 θ の関数として示す．ここで，円錐交差 1 では{ψ1 , ψ2 , ψ3 , ψ4 } = �|222000〉,|221100〉, |221010〉, |211110〉�，円錐交差 2 では{ψ1 , ψ2 , ψ3 , ψ4 } = �|222000〉,|221100〉, |220200〉, |212100〉�である．なお，ρ = 0.05
Bohr を計算に用いた．

— 8 —

SENAC Vol. 45, No. 4（2012.10）

4. ��
本稿では，光化学反応の理論解析の鍵となる円錐交差の役割と理論的取り扱いについて概説した．
円錐交差における非断熱遷移により，電子基底状態とは異なった機構で化学反応を進行させることができる．円錐交差の構造が正しく求められているかは，円錐交差における幾何学的位相効果を確認することとで確認できる．また，動的電子相関によって円錐交差の構造は変化しうるので，慎重な取り扱いが必要である．

��
本稿に掲載した結果の一部はサイバーサイエンスセンターの並列コンピュータを用いて得られた．また，MOLPRO の並列化とその運用に当たっては，山下毅氏（共同利用支援係）から多大な技術的支援をいただきました．これらの支援･協力にこの場を借りて感謝いたします．

����[1] J. E. McMurry “Organic Chemistry” 8th ed., Brooks Cole (2011).
[2] 中村 宏樹「化学反応動力学」朝倉書店 (2004).
[3] H. Nakamura, “Nonadiabatic Transition: Concepts, Basic Theories and Applications”, 2nd ed.;World
Scientific (2012).
[4] B. G. Levine and T. J. Martinez “Isomerization through Conical Intersections” Annu. Rev. Phys. Chem.
58, 613–634 (2007).
[5] W. Domcke, D. R. Yarkony, and H. Köppel Eds. “Conical Intersections: Theory, Computation andExperiment” Advanced Series in Physical Chemistry Vol. 17, World Scientific (2011).
[6] K. Yamazaki, N. Niitsu, K. Nakamura, M. Kanno, and H. Kono “Electronic Excited State Paths ofStone-Wales Rearrangement in Pyrene: Roles of Conical Intersections” J. Phys. Chem. A, in press, doi:
10.1021/jp306894x (2012).
[7] H.-J. Werner et al., MOLPRO, version 2010.1, a package of ab initio programs, see
http://www.molpro.net[8] D. R. Yarkony “Conical Intersections:� Diabolical and Often Misunderstood” Acc. Chem. Res. 31,
511–518 (1998).
[9] D. R Yarkony, “Nonadiabatic Quantum Chemistry—Past, Present, and Future” Chem. Rev. 112,481-498 (2012)．
[10] 最近の日本語総説：前田 理，大野 公一 「化学反応経路の自動探索」Mol. Sci. 5, A0042 (2011).
[11] 最近の総説：S. Maeda, K. Ohno, and K. Morokuma “Exprloring Multiple Potential energy Surfaces:
Photochemistry of Smal Carbonyl Compounds” Adv. Phys. Chem. in press, doi:10.1155/2012/268124(2012).
[12] 常田 貴夫 「密度汎関数法の基礎」講談社 (2012).
[13] 多配置 SCF 法の入門的な解説に関しては，山崎 馨，河野 裕彦 「量子化学計算パッケージ
MOLPRO の電子励起状態計算への応用と並列化」SENAC 44, 2, 33-39 (2011)，及びその参考文献を参照．
[14] B. O. Roos, “Multiconfigurational quantum chemistry” in Theory and Applications of Computational
Chemistry: The First Forty Years, 725-764, Elsevier (2005).
[15] W. M. I. Hassan, W. C. Chung, N. Shimakura, S. Koseki, H. Kono, and Y. Fujimura “Ultrafast
radiationless transition pathways through conical intersections in photo-excited 9H-adenine” Phys. Chem.
Chem. Phys. 12, 5317-5328 (2010).
[16] K. Andersson, P.-Å. Malmqvist, B. O. Roos, A. J. Sadlej, and K. Wolinski. “Second-order perturbation
theory with a CASSCF reference function” J. Phys. Chem. 94, 5483(1990).
[17] K. Andersson, P.-Å. Malmqvist, and B. O. Roos. “Second-order perturbation theory with a complete光によって引き起こされる化学反応の量子力学に基づく理論解析— 非断熱遷移を引き起こす円錐交差の取り扱いについて —— 9 —active space self-consistent field reference function” J. Chem. Phys. 96, 1218 (1992).
[18] K. Hirao “Multireference Møller-Plesset method” Chem. Phys. Lett. 190, 374 (1992).
[19] S.Yamazaki and T. Taketsugu “Nonradiative deactivation mechanisms of uracil, thymine, and5-fluorouracil: a comparative ab initio study” J. Phys. Chem. A 116, 491–503 (2012).
[20] 藤永 茂 「分子軌道法」岩波書店 (1980).
[21] H.-J. Werner and P. J. Knowles “A second order multiconfiguration SCF procedure with optimum
convergence” J. Chem. Phys. 82, 5053 (1985).
[22] P. J. Knowles and H.-J. Werner “An efficient second-order MC SCF method for long configuration
expansions” Chem. Phys. Lett. 115, 259-267 (1985).
[23] H.-J. Werner “Third-order multireference perturbation theory The CASPT3 method” Mol. Phys. 89,
645-661 (1996).

— 10 —

SENAC Vol. 45, No. 4（2012.10）

— 11 —

SENAC Vol. 45, No. 4（2012.10）［共同研究成果］

海底圧力観測データから海底鉛直変位を検出するための海洋モデルの開発
稲津大祐*・日野亮太・藤本博己
東北大学大学院理学研究科*現在

地震・噴火予知研究観測センター

独立行政法人

防災科学技術研究所

東北大学サイバーサイエンスセンターのスーパーコンピュータシステム SX-9 を利用し、現場海底圧力観測データから cm スケールの海底鉛直変位を検出するために有効な全球海洋シミュレー
ションモデルを開発してきた。開発した海洋モデルは、2011 年東北地方太平洋沖地震の発生直前の約２日間にゆっくりと進行した数 cm の海底鉛直変位を、現場海底圧力観測データから明瞭に検出することに奏功した。

１．はじめに印加される圧力によって周波数が変化する水晶振動子を組み込んだセンサーを搭載した自律型
ゲージ[1]を用いることで、海底において圧力を連続的に観測できる。この海底圧力の観測方法は、
海洋物理学および測地学といった地球物理学的観測に用いられてきた[2, 3]。得られた海底圧力観測データ（pB(t)）には、諸々の地球物理学・非地球物理学的シグナルが含まれる。

p B (t ) = p ref + Δp B (t ) ,Δp B (t ) = Δp C (t ) + ΔpT (t ) + ΔpO (t ) + Δp A (t ) + Δp D (t ) + ε (t ) .
ここで ΔpB(t)は水深に相当する圧力 pref からの圧力偏差である。添え字の C、T、O、A、D はそれ
ぞれ、海底鉛直変位、潮汐、非潮汐海洋変動、大気圧、測器ドリフトを表す。ε(t)はそれらからの残差である。我々はこれらのうち地殻変動に関係する海底鉛直変位のシグナルを抽出したい。特に、超巨大地震に関係し得るマグニチュード７クラスの地震を反映する cm スケールの海底鉛直変位を正確に抽出したい[4]。地殻変動は、地震時にほぼ瞬間的に変位するものと、非地震性のゆっくりとしたものに分けられる。特に、ゆっくりとした地殻変動を抽出するためには、変動の時
間スケールが重なる海洋変動を正確に見積もり、除去する必要がある。
我々はこの目的のために、東北大学サイバーサイエンスセンターのスーパーコンピュータシス
テム SX-9 を利用し、海洋起源の海底圧力変動を現実的に表現できる海洋シミュレーションモデル
を開発してきた[5]。本稿では、開発した海洋モデルについて簡単に記述し、そのモデルを現場海
底圧力データの解析に適用することで、2011 年東北地方太平洋沖地震に関係するゆっくりとした数 cm の海底鉛直変位を明瞭に抽出できたことを報告する。海底ケーブル等を利用した海底圧力
リアルタイムモニタリングシステムへの適用についても言及しておく。本稿の技術的詳細については学会誌で公表済である[6]。

— 12 —

SENAC Vol. 45, No. 4（2012.10）

２．海洋モデル開
開発と SX-99 利用
東北大
大学地震・噴噴火予知研究究観測センターでは、これまで想定されてきた宮宮城沖地震[7]に関係する海底底の鉛直変位
位を直接観測測するためにに、宮城沖で現場海底圧力力観測を行っってきた[4]。
。宮城沖に代表さされる日本海海溝だけでな
なく、海溝型型巨大地震がが発生するその他の世界のプレート沈
沈み込み
帯におい
いても同様なな観測を行ううことは重要要であるため
め、それらへへの適用も意識識し、モデル
ル開発は
全球海洋
洋を対象としした。この海海洋モデルはは実海洋を一層海洋で近似似するものでである[8, 9]。
。モデル
海洋は気
気象再解析デデータ（気圧
圧・海上風）によって駆駆動される。モデルの精度
度は、我々のの宮城沖の観測デデータを含む
む、全球の深海
海（水深 10000m 以深）の現場海底圧力力データによよって評価しした[6]。
ベース
スとなるシミミュレーショ
ョン（以下、Control Run と呼ぶ）にについて説明する。計算の
の空間解
像度は東
東西・南北方
方向ともに 1//12°であり、全格子数はは 4320×2160 である。東北大学サイバ
バーサイ
エンスセ
センターの SX-9
Sシステムの利用による、ノード内の 16CP
PU を用いる自動並列処理
理（ジョ
ブクラス
ス p16：1.6TF
FLOPS）によよる計算で、海洋変動のの１年分のラランが約３日で完了できる。これは Intel 社の社 Core2D
Duo プロセッッサ搭載のパパソコン（15G
GFLOPS）ででの計算と比比べ、実性能能で約 200
倍であっった。MPI チューニング
チ
グを施すこととで、自動並並列処理 p16 の場合と比べ、さらに約
約３倍の
計算速度
度が達成可能能となった。ベクトル化
化率は 99.68%%であった。
SX-9 を利用するこことで、空間
間解像度が 1//30°の計算ままで現実的にに行うことがができた。そのの結果、解像度をを向上させれればさせるほほどモデル精精度が向上すするわけではなく、解像度
度が 1/12°のときに最もモデルル精度が高くくなることががわかった。この問題にについて、風風によってモデル一層海洋
洋に入力
されるエ
エネルギーがが、高解像度
度で表現されれる急峻な海海底地形によって非現実的に強く消散
散してし
まう、と
という一層海海洋モデルにによる近似のの限界が要因の一つと考えられる[6]。
。
このよように、本研研究のモデル
ルの枠組みににおいては、Control Run が最も現実的な海底圧力
力変動を
推定・予
予測できるこことがわかっった（図１）。Control Ru
un は気象庁の気象再解析
析データ JR
RA-25[10]で駆動さされている。現在、JRA--25 は現時点
点から約２日後にはデーータ取得可能なシステムに
になって
いる。そ
それに従い、現時点からら約２日遅れれで海洋モデルも更新可能能となっていいる。

図１：Coontrol Run による海底圧力
力変動の RM
MS 振幅。

海底圧力観測データから海底鉛直変位を検出するための海洋モデルの開発

３．現場海底圧力
力データへの適用— 13 —――2011
年東東北地方太平平洋沖地震
震―Controol Run は現場
場海底圧力デデータの非潮潮汐海洋変動動成分を RM
MS 振幅で約 18%減少させ
せること
ができる
る[6]。東北大大学による宮宮城沖の観測データでは、、非潮汐海洋洋変動成分のの RMS 振幅を 2.1hPaから 1.55hPa（海底圧
圧力の 1hPa の変動は、海海底または海海面の 1cm の変位に相当する）にま
まで減少
させるこ
ことができるる[5]。
宮城沖沖の観測を継継続しているる最中、20111 年 3 月 11 日に東日本大大震災を引きき起こした 2011
2
年東
北地方太
太平洋沖地震震（以下、東東北沖地震）が、この観観測網で囲まれる領域を破破壊の開始点点として発生した
た。本震は非非常に巨大（（マグニチュード９）であり、宮城沖
沖を主な破壊壊域として数
数十 m の断層すべ
べりが生じたた[11]。このすすべりは日本本海溝に近いいほど大きくく、鉛直方向向で数 m の海
海底変位となり、この鉛直変変位が災害のの主要因とななる、沿岸域で 10m を優優に超える津波を引き起こしたと考えられれている[12]。東北大学のの海底圧力観観測網でこううした鉛直変
変位が直接観観測された[13]。このm スケーールの海底鉛
鉛直変位は、海洋変動やや測器ドリフフトと比べ桁
桁違いに大きく、何の補正
正もなし
にはっき
きりと認識でできた（図２２）。

図２：宮
宮城沖のあるる観測点（GJT3：図３参参照）の海底底圧力偏差。黒線が生時系列で、赤線線が潮汐だけをを補正した時時系列であるる。434 日目（2011 年 3 月 11 日）に約約 400 hPa の圧力減少（約約 400 cmの海底底隆起）が確確認できる。
一方でで、本震発生
生の２日前にに、東北沖地
地震の前震と考えられているマグニチュード７のの地震が発生し、その後活発発になった地地震活動が本本震につながったと考えらえている[[14, 15]。我々
々は、東
北沖地震
震に関係するる海底鉛直変変位を精密にに検出するたために、宮城城沖の現場海底
底圧力データ
タから、潮汐成分分に加え、本本研究で開発発した海洋モモデルによって推定されれる海洋起源の海底圧力変
変動を差
し引く補
補正を施したた（図３）。そその結果、海海洋変動補正正後の現場海海底圧力デーータ（図３c））では、
特に観測
測点 GJT3 において、に本震
震までの２日日間に約 5 cm
m のゆっくりりとした海底底の隆起（圧力
力減少）
が明瞭と
となった。

— 14 —

SENAC Vol. 45, No. 4（2012.10）

図３：（a）震源位置を含む海底圧力観測点配置と（b, c）本震時（69 日目）を含む 30 日間の海底
圧力偏差時系列。（b）では、潮汐だけを補正した時系列に、モデルで推定される海洋変動成分を重ねたものを表示した。（c）では、潮汐に加え、推定された海洋変動成分を差し引いた時系
列を表示した。（b, c）において、本震時の数百 hPa の変位は枠に入るよう縮めて表示した。
前震や本震といった地震時の瞬間的な変位は、ゆっくりとした海洋変動と変動の時間スケールが異なるため、その特定・検出は比較的容易であるが、前震から本震にかけて見られたゆっくりとした変位は、海洋変動成分の補正無しには明確に指摘することはできない（図３b, c）。このよ
うに、本共同研究で開発してきた海洋モデルの適用によって、海底のゆっくりとした鉛直変位が実際に検出できる一例を示すことができた。現在、東北沖地震の発生に至る過程[15]や発生後進展する余効変動[16]について、精力的に研究が行われてきているが、震源近傍で取得されたデータを用いることで、より詳細な調査が可能となるだろう。

海底圧力観測データから海底鉛直変位を検出するための海洋モデルの開発— 15 —

４．まとめと展望
本稿では、東北大学サイバーサイエンスセンターとの共同研究で開発した海洋モデルとその利用例について報告した。この海洋モデルは、現場海底圧力観測データから cm スケールのゆっく
りとした海底鉛直変位を検出するために開発された。結果として、2011 年東北地方太平洋沖地震の発生２日前から進行した数 cm のゆっくりとした海底鉛直変位を明瞭に検出できた。
巨大地震および津波発生ポテンシャルのある領域は、基本的に陸から遠い海溝に近い海底にある。こうした海底の変動や津波をリアルタイムでモニタリングするための海底観測網は、これまで も 主 に 日 本 沖 合 で 構 築 さ れ て き た [17] が 、 海 洋 研 究 開 発 機 構 の DONET[18, 19] や
NEPTUNE-Canada[20]などの最新の大規模な海底ケーブルシステムでも実用的に運用されるようになった。この他のリアルタイムモニタリングシステムとして、海上ブイを経由し海底圧力デー
タを転送する NOAA の DART[21]、および、港湾空港研究所の NOWPHAS[22]も、より信頼度の高い早期津波警報の観点で重要な役割を果たしている。東日本大震災を受け、今後、防災科学技術研究所が主導となり、日本海構沿いでより広範囲な海底観測網が構築される予定である（図４）[23, 24]。こうした海底圧力観測網は、早期津波警報のための沖合津波観測を主目的とするが、本稿で示したように観測点直下の海底鉛直変位も計測している。我々が開発してきた海洋モデルは
全球海洋をカバーしており、これらのオンラインデータへの利用が可能である。

図４：海底ケーブルによる海底観測網の例。左図は海洋研究開発機構の DONET と DONET2[18]、右図は防災科学技術研究所で設置予定の海底ケーブルシステム[24]をそれぞれ示す。

— 16 —

SENAC Vol. 45, No. 4（2012.10）

前述したように、現在の気象再解析データの公開タイミングの制限で、オンラインモニタリン
グデータに対し、約２日遅れで海洋変動の補正が可能となっている。気象予報データを利用しモデルを駆動すれば、まさに現時点での海洋変動の予測が行われ、リアルタイムデータへの利用まで現実的になる。たとえば、気象庁の全球数値気象予報モデル GPV（GSM）は、最長 192 時間後の予報まで利用可能であり、十分実用的と期待できる[25]。今後、開発してきたモデルをオンライ
ンモニタリングデータに即座に適用できるシステムに組み込む必要がある。将来の海溝型巨大地震に関係し地殻が変形するならば、それをできるだけ早い段階で検知できるようになることを期待する。

謝辞
本研究は文部科学省の委託研究である「東海・東南海・南海地震の連動性評価研究」の一環として行われた。また、東北大学サイバーサイエンスセンターとの共同研究「海海底鉛直地殻変動検出のための数 km スケールを解像する全球海底圧力モデリング」により多くの数値実験を行うことができた。一部の計算は海洋研究開発機構の地球シミュレータの SX-9 によっても行った。シミュレーションコードのチューニングにあたり、同センターのテクニカルアシスタントの沢田雅洋氏と山下毅氏から多大な協力を受けた。ここに謝意を示す。

参考文献[1] Eble, M. C., F. I. González, D. M. Mattens and H. B. Milburn, Instrumentation, field operations, anddata processing for PMEL deep ocean bottom pressure measurements. NOAA Tech. Memo. ERL
PMEL-89, 71 pp., 1989.
[2] Fujimoto, H., M. Mochizuki, K. Mitsuzawa, T. Tamaki and T. Sato, Ocean bottom pressure variationsin the southeastern Pacific following the 1997–98 El Niño event. Geophys. Res. Lett., 30, 1456,
doi:10.1029/2002GL016677, 2003.
[3] Donohue, K. A., D. R.Watts, K. L. Tracey, A. D. Greene and M. Kennelly, Mapping circulation in the
Kuroshio Extension with an array of current and pressure recording inverted echo sounders. J. Atmos.
Oceanic Technol., 27, 507–527, doi:10.1175/2009JTECHO686.1, 2010.
[4] Hino, R, S. Ii, T. Iinuma and H. Fujimoto, Continuous long-term seafloor pressure observation for
detecting slow-slip interpolate events in Miyagi-Oki on the landward Japan Trench slope. J. Disast.
Res., 4, 72–82, 2009.
[5] 稲津大祐・日野亮太・藤本博己，大気擾乱によって駆動される短周期全球順圧海洋モデルの解像度依存性．SENAC，44，41–48，2011．
[6] Inazu, D., R. Hino and H. Fujimoto, A global barotropic ocean model driven by synoptic atmosphericdisturbances for detecting seafloor vertical displacements from in situ ocean bottom pressure
measurements. Mar. Geophys. Res., 33, 127–148, doi:10.1007/s11001-012-9151-7, 2012.

— 17 —

海底圧力観測データから海底鉛直変位を検出するための海洋モデルの開発[7] 地震調査研究推進本部：http://www.jishin.go.jp/main/choukihyoka/ichiran_past/ichiran20110111.pdf[8] Kim, C.-H. and J.-H. Yoon, Modeling of the wind-driven circulation in the Japan Sea using a reduced
gravity model. J. Oceanogr., 52, 359–373, doi:10.1007/BF02235930, 1996.
[9] Hirose, N. and J.-H. Yoon, Barotropic response to the wind in the Japan Sea. Proc. 4th CREAMS
Works., 39–43, 1996.
[10] Onogi, K. and Coauthors, The JRA-25 reanalysis. J. Meteor. Soc. Japan, 85, 369–432,
doi:10.2151/jmsj.85.369, 2007.
[11] 鷺谷威，2011 年東北地方太平洋沖地震―3.11 から 1 年で何が分かったのか―．日本地球惑星

科学連合ニュースレター JGL，8，2，2012．
[12] Fujii, Y., K. Satake, S. Sakai, M. Shinohara and T. Kanazawa, Tsunami source of the 2011 off the
Pacific coast of Tohoku Earthquake. Earth Planets Space, 63, 815–820, doi:10.5047/eps.2011.06.010,
2011.
[13] Ito, Y. and Coauthors, Frontal wedge deformation near the source region of the 2011 Tohoku-Oki
earthquake. Geophys. Res. Lett., 38, L00G05, doi:10.1029/2011GL048355, 2011.
[14] Ando, R. and K. Imanishi, Possibility of Mw 9.0 mainshock triggered by diffusional propagation ofafter-slip from Mw 7.3 foreshock. Earth Planets Space, 63, 767–771, doi:10.5047/eps.2011.05.016,
2011.
[15] Kato, A. and Coauthors, Propagation of slow slip leading up to the 2011 Mw 9.0 Tohoku-Oki
earthquake. Science, 335, 705–708, doi:10.1126/science.1215141, 2012.
[16] Ozawa, S. and Coauthors, Coseismic and postseismic slip of the 2011 magnitude-9 Tohoku-Oki
earthquake. Nature, 475, 373–377, doi:10.1038/nature10227, 2011.
[17] Hirata, K. and Coauthors, Integration of seafloor geodetic observation and offshore tsunami
observation - toward researches on tsunami forecast. Proc. 21st Ocean Eng. Symp., OES21-181, 2009.
[18] DONET: http://www.jamstec.go.jp/donet/e/[19] Lubick, N., Earthquakes from the ocean: Danger zones. Nature, 476, 391–392, doi:10.1038/476391a,
2011.
[20] NEPTUNE-Canada: http://www.neptunecanada.ca/[21] DART: http://nctr.pmel.noaa.gov/Dart/[22] NOWPHAS: http://www.mlit.go.jp/kowan/nowphas/[23] Monastersky, R., Tsunami forecasting: The next wave. Nature, 483, 144–146, doi:10.1038/483144a,2012.
[24] 防 災 科 学 技 術 研 究 所 ， 防 災 科 研 ニ ュ ー ス ， 176 ， pp.

24,2012 ：

http://www.bosai.go.jp/activity_general/pdf/k_news176.pdf[25] 気 象 業 務 支 援 セ ン タ ー ， 全 球 数 値 予 報 モ デ ル
http://www.jmbsc.or.jp/hp/online/f-online0a.html

GPV （ GSM ）：— 18 —

SENAC Vol. 45, No. 4（2012.10）

SENAC Vol. 45, No. 4（2012.10）— 19 —［共同研究成果］

MPI による数値タービンの大規模並列計算手法の開発
笹尾泰洋 1，山本悟 2，三宅哲 2，岡崎健志 2
帝京大学理工学部航空宇宙工学科笹尾研究室
2
東北大学大学院情報科学研究科山本・古澤研究室
1

東北大学大学院情報科学研究科山本・古澤研究室にて開発された，蒸気タービン内部流動解析プロ
グラムである「数値タービン」コードについて，NEC の協力を得て，移動境界問題に対応した MPI による大規模並列計算手法の開発を行った．13 流路-13 並列における並列化率は 99.2%，27 流路-27 並列における並列化率は 97.3%を達成した．並列計算の逐次計算に対する加速率は，13 並列において 11.3，
27 並列において 16.0 となった．

⥴ゝ
蒸気タービンは，高温高圧の水蒸気から運動エネルギーを取り出すためのターボ機械の一種である．
蒸気タービンの多くは，図 1 に示すような翼列と呼ばれる周方向と回転軸方向に配置された翼の集合によって構成されており，特に，周方向には周期性の強い流れ場が形成されることが知られている．そこで，ターボ機械に関する多くの解析的研究においては，翼列全体を解析対象とするのではなく，周期境界条件を活用し，周方向の一部分を対象とした流動解析が行われている．
しかし，現実の蒸気タービンにおいては，入口より供給される蒸気流量は周方向に対して不均一であり，加えて，蒸気タービンの下流に配置される排気室の形状や，失速といった様々な要因によって，周方向に著しく不均一な流れ場が形成されていることが知られている．そこで，蒸気タービンの更なる性能向上を目指し，全周を対象とした大規模流動解析による流れ場の把握に対する関心が高まっている．
蒸気タービンの大まかな流路形状は，周期的に配置された翼列によって決定される．よって，翼列間の1 流路(ブロック)を 1 プロセッサ毎に割り当てて計算することを考えた場合，ほぼ完全な負荷分散が可能であり，MPI による並列計算においては極めて高い台数効果が期待できる．我々の研究グループにおける既往の研究では，周方向 1 流路，軸方向 6 流路から構成される計 6 流路の計算格子に周期境界条件を適用し，MPI による並列計算を行うことで，90%以上の並列化率が達成されている．しかしながら，周方向
複数流路において並列計算を行う場合，動翼(図 1b の赤い翼列)は静翼(同じく青)に対して回転運動しているため，移動境界面におけるデータの送受信先は時々刻々と変化することになる．よって，ターボ機械の大規模並列計算において高い加速率と並列化率を達成するためには，移動境界におけるデータの送受信をいかに高速に行うかが課題となる．
そこで，本研究では NEC の協力を得て，MPI を用いた移動境界に適用できる数値タービンの並列化手法の開発に取り組んだ．移動境界面に属するブロック間においては，MPI_BCAST 関数を用いて，1 流路
対多流路間でのデータ通信アルゴリズムを作成し，その性能と問題点について評価した．

b. 翼列と流路
a. 計算格子の俯瞰図
図 1. 計算格子の全体像と 1 プロセッサが担当する計算領域の比較 ᩘ್ࢱ࣮ࣅࣥࡢィ⟬ᡭἲᇶ♏᪉⛬ᘧ
数値タービンにおいては，凝縮を伴う圧縮性流れの基礎方程式として，蒸気の相変化を考慮した蒸気の質量保存式，運動量保存式，エネルギー保存式，液滴の質量保存式，液滴の数密度保存式，乱流運
動エネルギーおよびその比散逸率からなる式を解く．本研究で取り扱う気液二相流は液滴の質量分率が— 20 —

SENAC Vol. 45, No. 4（2012.10）

十分に小さい均質流を仮定する(< 0.1)．湿り蒸気の状態方程式および音速の式は石坂らにより定式化された式より算出する[1]．凝縮による液滴の質量生成率は古典凝縮論に基づき，凝縮核生成と液滴の成長による質量増加の和で表される．本研究ではさらに，液滴の成長を液滴の数密度を関数にした式で近似する[1]．凝縮核生成率は Frenkel[2]の式より，液滴の成長率は，Gyarmathy[3]のモデルより算出した．数値解法として，空間差分には Roe の流束差分離法[4]および 4 次精度 Compact MUSCL TVD スキーム[5]を用いた．粘性項には 2 次精度中心差分を用い，乱流モデルには SST モデル[6]を用いた．時間積分には LU-SGS 法[7]を用いた．

㻞㻚㻞㻌 ᩘ್䝍䞊䝡䞁䛾䝕䞊䝍ᵓ㐀䛸୪ิ໬䛻䛚䛡䜛㡿ᇦศ๭㻌
ターボ機械の翼列は，回転機械の物理的な制約上，周方向に対して相似性の強い構造を採用している場合が殆どである．数値タービンにおいては，図 2b に示すように，翼と翼に囲まれた空間(流路)を１つの計算領域(ブロック)と定義し，計算対象となる翼枚数に助走区間を加えた数だけブロックを確保する．
表 1 は逐次計算と並列計算における配列構造とループ構造の概要である．逐次計算においては，1 つの3 次元配列(I,J,K)を I 方向にブロック数と等しい数だけ分割し，各ブロックの計算領域として割り当てている．ループ構造からも明らかなように，基礎方程式はブロック毎に閉じており，隣接するブロックとのデータのやり取りは陽的に処理される．よって，並列計算を行う場合においても，計算領域をブロック単位で分割し，各 RANK において個別に管理・計算を行う限りにおいては，逐次計算と並列計算の間に解の不一
致は生じない．なお，並列計算におけるデータ通信は，境界条件に関するサブルーチンが CALL される段階で行う．
過去の数値タービンの並列化に関する研究においては，1 ブロックを複数領域に分割し，OpenMP を用いた並列計算した例について報告している．山本らは，領域分割計算においても陰解法の依存関係を考慮するために，パイプライン法を用いた LU-SGS 法の並列化手法を提案した[8][9]．しかし，本研究においては，移動境界における並列化アルゴリズムの複雑化を避けるために，領域分割計算は行わないものとした．
表 1．逐次計算と並列計算における配列構造の違い

DO L=1, N
DO I=IS(L), IT(L)DO J=JS, JT
DO K=KS, KT
WW(I, J, K) = W(I, J, K)
CONTINUE

a. 逐次計算の場合

LRANK0=MYRANKDO I=IS(LRANK0), IT(LRANK0)
DO J=JS, JT
DO K=KS, KT
WW(I, J, K) = W(I, J, K)
CONTINUE
b. MPI による並列計算の場合

㻞㻚㻟㻌 ᩘ್䝍䞊䝡䞁䛾ቃ⏺᮲௳㻌
表 2 は数値タービンにおいて考慮されている，主な境界条件の一覧である．ターボ機械の形状は様々であり，また考慮する現象や機械的構造も大きく異なるため，表に挙げる境界条件の他にも適宜追加される境界条件が存在するが，ここでは割愛する．
これらの代表的な 5 つの境界条件は，他ブロックとのデータの送受信の有無によって，2 つに大別できる．
先ず，他ブロックとのデータ交換を必要としない種類の境界条件について述べる．流入-流出境界条件は，蒸気タービンの入口と出口に適用される境界条件である．圧縮性流れの数値解析では，計算領域の入口において全温と全圧を，出口において静圧を境界条件として固定する手法が一般的に用いられており，
数値タービンにおいても同様の境界条件が適用されている．図 2a は，静翼面を青，動翼面を赤，翼端壁

MPI による数値タービンの大規模並列計算手法の開発— 21 —

を緑，シーリング部前後のキャビティ入口を黄色と水色に着色した図である．壁面境界条件は，図 2a の赤，
青および緑に着色された境界面に適用され，個体壁面上に展開された計算格子が保有すべき値は，計算条件に基づいた代数的な計算や，ブロック内部の計算格子からの外挿によって与える．壁面境界条件
は，各ブロック内において完結しているため，他ブロックとのデータの送受信は必要としない．一方，蒸気タービンの内部においては，蒸気の一部は翼列を通過せず，翼列と構造体の間に施されたシーリングを通過する．この様な流れは一般に漏れ流れ(Leak Flow)と呼ばれており，図 2a における，吸込境界(水色)や吐出境界(黄色)において近似的に考慮される．シーリングを通過する蒸気は翼に対して仕事をしない
ため，漏れ流れを計算に取り入れることは，蒸気タービンの性能を正しく評価する上で重要である．上流のブロックにおいて発生した漏れ流れは，シーリングを通過し下流のブロックへと流入するため，本来であれば，漏れに関与するブロック間において流量やエンタルピ等に関するデータの送受信が必要となる．
ただし，本研究においては，漏れ量を主流流量の 1.0%と定義し，代数的に漏れ量を算出することで，本境界条件をデータの送受信の対象外とした．漏れ流れを考慮しない解析においては，漏れ流れ境界面には壁面境界条件やすべり境界条件が適用されることが多い．
次に，他ブロックとのデータの交換を必要とする境界条件について述べる．図 2b は，計算格子番号の定義の概略図であり，数値タービンにおいては，軸方向格子番号を I，周方向格子番号を J，半径方向格
子番号を K と定義している．周期境界条件は，図 2c, 2d に示すように，周方向に隣り合うブロックとの間に適用される境界条件であり，周期境界面から流出した蒸気は，隣接する周期境界面に流入するというのが基本原則である．数値タービンにおいては，周期境界面上の計算格子は，隣接するブロックの計算格
子と空間的に重なり合うように作成されている．よって，それぞれのブロックの計算を担当しているプロセッ
サを調べ，MPI_SENDRECV を用いてシフト通信を行うことで，周期境界条件に必要なデータの送受信は完了する．周期境界条件は JK 面に適用される境界条件である．
移動境界条件は，流れ方向に隣接するブロック間に適用される境界条件であり，図 2e において着色された円盤状の領域が適用範囲となる．動翼は常に旋回しているため，隣接するブロックは時々刻々と変化する点が，周期境界条件と大きく異なる点である．また，静翼列と動翼列の翼枚数比(周方向に並んだ翼の数の比)は，蒸気タービン毎に固有の値を持ち，さらに，静動翼列の各段落によっても変化する．すなわち，データ送受信の対象となるブロックを一意に決定できない点が，並列化を行う上で課題となる．
移動境界条件においては，移動境界面上に存在する格子点の情報を配列に列挙し，対面する移動境界
面上の格子点に対して相対位置を評価した上で，情報の交換が行われる．しかしながら，移動境界面上の全ての格子点について検索を行うと演算量が膨大となる．そこで，移動境界面上の計算格子は，回転軸に対して同心円状に配置され，K 方向の格子番号が同じであれば，回転軸からの距離も等しくなるように設計されている．よって，周方向の位置に関してのみ検索を行えば，情報の交換対象となる隣接格子点を容易に知ることができる．
周期境界に適用するデータの送受方法に関しては次節において詳細に述べる．

他ブロックとデータを交換しない境界条件

他ブロックとデータを交換する境界条件

表 2．数値タービンにおいて考慮される主な境界条件
1. 流入-流出境界条件(JK 面)： 蒸気タービンに流入する気体の状態や，入口-出口における圧力比などを設定する．
2. 壁面境界条件(IK 面)： 翼面および内周壁，外周壁など壁面上における流体の状態を決定する．
3. 漏れ流れ境界条件(IJ 面)： 翼端漏れ流れを代数的に近似計算する．
4. 周期境界条件(JK 面)： 周方向に隣り合うブロック間に適用する境界条件．
周方向のブロックの相対位置は変化しないため，常に同じブロックがデータの送受信対象となる．
5. 移動境界条件(JK 面)： 軸方向(流れ方向)に隣り合うブロック間に適用する
境界条件．動翼列は静翼列に対して相対運動しているため，周方向複数流路を考慮する場合には，データの送受信対象が時々刻々と変化する．

— 22 —

SENAC Vol. 45, No. 4（2012.10）

a. 壁面に適用される境界条件

b. 計算格子番号の定義(1 ブロック)d. 周期境界条件(助走区間)
c. 周期境界条件(翼列間)e. 移動境界条件
図 2．数値タービンにおいて考慮される主な境界条件の概略図

㻞㻚㻠㻌 ⛣ືቃ⏺䛻䛚䛡䜛䝕䞊䝍䛾㏦ཷಙ䛻䛴䛔䛶㻌
動翼列は周方向に絶えず移動し，翼枚数比は蒸気タービンや段落毎に固有の値を持つため，移動境界においてデータの送受信対象となるブロックは一意に決定することはできない．そこで，図 3 に示すように，周方向に並ぶブロック(静翼列，動翼列および助走区間)をコミュニケータにおける１グループと定義し，移動境界処理を行うプロセッサ間の通信を限定することを考える．
例えば，上流側のブロックから下流側のブロックに対しデータ通信を行う場合，上流側の 1 プロセスと下流側の全プロセスとを 1 つのコミュニケータグループと定義する(図 3 右図)．次に上流側の 1 プロセスから下流側の他プロセスへ MPI_BCAST(Broad Cast)通信を行う．これによって，任意のプロセスが保有する移動境界面上の情報は，移動境界面を共有する対面側の全プロセスに対して送信される．一方，下流側から上流側へデータ通信を行う場合も，下流側の 1 プロセスから上流側の全プロセスに対し MPI_BCASTを用いた通信を行う．よって，上流側の流路数を M，下流側の流路数を N とした場合，1 つの移動境界面における MPI_BCAST は，M×N 回だけ CALL されることになる．

図 3．移動境界面におけるコミュニケータのグループ分けの概略図

— 23 —MPI による数値タービンの大規模並列計算手法の開発

 ィ⟬⤖ᯝ
数値タービンの MPI による並列化は，逐次計算の場合とバイナリレベルで計算結果が一致することを確認しながら，段階的に行った．図 4 は本研究に用いた計算格子の俯瞰図である．図 4a は，静動翼列 3 段
6 流路と助走区間 7 流路の計 13 ブロックから構成される計算格子であり，図 4b は，初段静翼列のみ周方
向 3 ブロック，他流路は周方向 2 ブロックの計 27 ブロックから構成される計算格子である．翼列間流路における格子点数が 31x31x31 点であるのに対し，助走区間の格子点数は 16x31x31 点であるため，並列計算を行う場合には，RANK 間にロード・インバランスが発生する．本共同研究における計算は，全て東北大学サイバーサイエンスセンターSX-9 上にて行った．13 ブロックを対象とした計算においては 1 node (1,4, 7, 13 CPU)を用い，27 ブロックにおいては，1 node (1, 8, 16CPU)および 2 node (27 CPU)を用いて計算を行った．
表 3 は並列数に対する加速率の比較である．加速率は，逐次計算に必要とされた計算時間を，並列計算に必要とされた計算時間で除した値である．13 流路-13 並列の場合における加速率は 11.9，並列化率
は 99.2%に達したのに対し，27 流路-27 並列の場合においては，加速率は 16.0，並列化率は 97.3%となった．また，13 流路，27 流路ともに，1 プロセッサが複数流路の計算を行った場合には，加速率の著しい悪化が見られた．
表 4 は 27 流路に対して並列計算を行った場合の，各サブルーチンのロードバランスと加速率の比較である．オレンジ色に着色されたサブルーチンは，MPI によるデータ通信を含むサブルーチンである．
Explicit，Implicit2，Result，Viscous といった，計算負荷の高いサブルーチンについては，プロセッサ数に応じた高い加速率が得られたものの，データ通信に関するサブルーチンは，ほとんど加速率の向上が得られていないことがわかる．これは，移動境界における BCAST 通信に多くの時間を要したためである．
図 5 は 27 流路について並列計算した場合における，通信時間が計算時間に占める割合の比較である．
全プロセッサが 2 ブロック以上の計算を行う 8 並列の場合と，各プロセッサが 1 ブロックずつ計算を行う 27
並列においては，データ通信が全計算時間に占める割合は 10%に満たないことがわかる．一方，プロセッサ間のロード・インバランスが顕著に表れる 16 並列においては，データ通信に要した時間が IDLE 時間(データ通信待ち時間)も含めて全体の 6 割以上にも及び，データ通信が処理速度のボトルネックとなっていることがわかる．以上より，BCAST 通信を頻繁に行う本並列化手法においては，プロセッサ間のロードバランスが可能な限り均一になるように，計算領域を分配することが，極めて重要であるといえる．

a. 単流路 13 ブロック

13 流路
27 流路

図 4. 計算格子

b. 複数流路 27 ブロック

表 3. 並列数による加速率の比較
逐次計算(1 並列) 4 並列
7 並列
1.0
3.2
6.3
逐次計算(1 並列) 8 並列
16 並列
1.0
5.8
6.6

13 並列
11.9
27 並列
16.0

— 24 —

SENAC Vol. 45, No. 4（2012.10）

表 4. ランク 0 が要した各サブルーチンの計算時間(CPU-time [sec])と加速率の比較
18

並列数 (27 流路)
16加速率[sec] 加速率
(5.8)
27.76
(6.6)

27

subroutine
MAIN_LOOP[sec]
184.37

(1.0)

[sec]
31.92

explicit

94.29

(1.0)

15.30

(6.2)

6.76

(13.9)

6.67(14.1)

implicit2

49.62

(1.0)

5.27

(9.4)

1.56

(31.7)

1.54(32.2)

result

13.56

(1.0)

1.52

(8.9)

0.51

(26.4)

0.51(26.7)

viscous

9.27

(1.0)

1.06

(8.7)

0.35

(26.6)

0.35(26.6)

tbmdl2

8.32

(1.0)

0.93

(9.0)

0.31

(26.9)

0.31(26.8)

mpisub_read_grid

8.04

(1.0)

5.89

(1.4)

7.35

(1.1)

5.84

(1.4)

mpisub_comm_bundperi

0.00

(0.0)

0.88

(0.0)

16.21

(0.0)

0.03

(0.0)

加速率

[sec]
11.54

加速率

(16.0)

bundslid

7.99

(1.0)

0.64

(12.5)

0.21(37.7)

0.21(38.0)

main

0.59

(1.0)

0.55

(1.1)

0.52

(1.1)

0.54

(1.1)

mpisub_output_restart

0.33

(1.0)

0.34

(1.0)

0.31

(1.1)

0.29

(1.1)

bundwall

0.19

(1.0)

0.02

(8.1)

0.01

(20.7)

0.01(20.7)

bundperi

0.12

(1.0)

0.03

(4.6)

0.01

(9.7)

0.01

(10.5)

init

0.06

(1.0)

0.01

(7.4)

0.00

(14.8)

0.00(14.8)

metric

0.04

(1.0)

0.01

(8.0)

0.00

(20.0)

0.00(20.0)

initmp

0.04

(1.0)

0.03

(1.2)

0.01

(2.6)

0.01

(2.6)

boundlhs

0.04

(1.0)

0.00

(8.8)

0.00

(17.5)

0.00(17.5)

boundrhs

0.04

(1.0)

0.00

(8.8)

0.00

(17.5)

0.00(17.5)

mpisub_read_figure

0.03

(1.0)

0.03

(1.0)

0.02

(1.6)

0.02

(1.7)

bundstrm

0.02

(1.0)

0.01

(1.4)

0.01

(2.9)

0.01

(2.9)

mpisub_final

0.02

(1.0)

0.14

(0.1)

0.24

(0.1)

0.39

(0.1)

mpisub_init

0.02

(1.0)

0.10

(0.2)

0.15

(0.1)

1.11

(0.0)

mpisub_comm_bundslid_theta

0.01

(1.0)

5.08

(0.0)

0.64

(0.0)

0.57

(0.0)

outigs

0.01

(1.0)

0.00

(6.5)

0.00

(13.0)

0.00(13.0)

mpisub_read_init

0.01

(1.0)

0.01

(0.9)

0.01

(0.9)

0.01

(0.9)

mpisub.allocate_distributed_arrays

0.01

(1.0)

0.01

(1.4)

0.01

(0.8)

0.01

(1.1)

mpisub_comm_bundslid

0.01

(1.0)

0.01

(0.8)

0.01

(1.1)

0.01

(0.8)

bundmain

0.01

(1.0)

0.01

(1.0)

0.01

(1.0)

0.01

(1.0)

※オレンジ：データ通信を含むサブルーチン，ピンク：ファイル入出力を含むサブルーチン

図 5. 各並列数において通信時間が計算時間に占める割合(27 流路)

MPI による数値タービンの大規模並列計算手法の開発— 25 —

⤖ゝ
MPI を用いて数値タービンの並列化を行い，加速率と並列化率を評価した．移動境界問題の並列化に関しては，移動境界面に属する１つの RANK から，その他の RANK に対する BCAST を用いて実装した．
13 流路-13 並列の場合における加速率は 11.9，並列化率は 99.2%，27 流路-27 並列の場合においては，加速率は 16.0，並列化率は 97.3%を達成した．

ㅰ㎡
本研究における数値タービンの並列化は，NEC および東北大学サイバーサイエンスセンターの全面的な技術協力の元，行いました．ご協力頂きました団体ならびに皆様に対し，厚く御礼申し上げます．

ཧ⪃ᩥ⊩[1] Ishizaka, K., Ikohagi, T. and Daiguji, H., A High-Resolution Numerical Method for Transonic
Non-Equilibrium Condensation Flow through a Steam Turbine Cascade, Proc. of the 6th ISCFD, 1,
479-484, 1995.
[2] Frenkel, J., Kinetic Theory of Liquids, Dover, 1955.
[3] Gyarmathy, G., Zur Wachstumsgeschwindigkeit kleiner Flussigkeitstropfen in einer ubersattigten
Atmosphare, Zeitschrift fur angewandte Mathematik und Physik, 14-3, 280-293, 1963．
[4] Roe, P.L., Approximate Riemann Solvers, Parameter Vectors, and Difference Schemes, Journal ofComputational Physics, 43, 357-372, 1981.
[5] Yamamoto, S. and Daiguji H., Higher-Order-Accurate Upwind Schemes for Solving the Compressible
Euler and Navier-Stokes Equations, Computers and Fluids, 22-2/3, 259-270, 1993.
[6] Menter, F.R., Two-equation Eddy-viscosity Turbulence Models for Engineering Applications, AIAA
Journal, 32-8, 1598-1605, 1994.
[7] Yoon, S. and Jameson, A. Lower-upper Symmetric-Gauss-Seidel method for the Euler andNavier-Stokes equations, AIAA Journal, 26, 1025-1026, 1988.
[8] Satoru Yamamoto, Yasuhiro Sasao, Shoichiro Sato and Kentaro Sano, Parallel-Implicit Computation ofThree-dimensional Multistage Stator-Rotor Cascade Flows with Condensation, 18th AIAA CFD
Conference-Miami, AIAA Paper 2007-4460, June, 2007.
[9] Satoru Yamamoto, Yasuhiro Sasao, Kentaro Sano, Hiroshi Satsuki, Kouichi Ishizaka and Hiroharu
Ooyama, Parallel Computation of Condensate Flows through 2-D and 3-D Multistage Turbine Cascades,
Int. Gas Turbine Congress 2007(IGTC'07)-Tokyo, Dec.2007, CD-ROM..

— 26 —

SENAC Vol. 45, No. 4（2012.10）

— 27 —

SENAC Vol. 45, No. 4（2012.10）

  3>H8=F0C?G0	
 
?	
  ǳɲĮ

®¾ÃÁiøĀč	
  ?	
 

Ǖĝ	
  ìŢ	
 
ƊĔŀŇǑŗŇɋɠƶɠńŗŇǧ	
 

	
 
	
 
ĉĮn 2575%1 mĸƞǝkƎƻi¼ÃmĀlRJ¯À¼¶mƘPƑleJgȬƓYvYaE
VVvhmǣȮæKbThɯĖǑǝlnj k¯À¼¶åVizğȐh[ɰ¯À¼¶inȤǷƮlÖÐX]aymżɥh[N~ɯ_tj©¼¡nIv] ɰĐåmȊ
ȺYƘRaym (2 Ǝ{ɯƟÝāŖm ,* ƎOæJVk]oɯȤǷƮmȐčmti jæJ
Vk[ViOhPv[ɰ	 YNYɑJ¯À¼¶ƘRiPnɯ·Á¡¥ÁmY{[XȎŷYgƘNkTokv] ɰ¯À¼¶OǤToùâȟkO~ {ïƱOhPv[OɯɑRki lƖɕONNɯȟȖiYl}ïƱµOȰVğȐŰzɬRkv[ɰȟȖiYɗSlnãşzȟǠ[ŭȞOIɯ ƖɕnX~lļŀYv[ɰ	 Vm·Á¡¥ÁōƔl[żƻmÄeO@®¾ÃÁAh[ɰ®¾ÃÁin·Á¯À¼¶iĤZ¿°¾mɓZa¯À¼¶mVihɯŭȞlŮZg×m¯À¼¶N~ĩpĀ
Yg_mƮȐæJv[ɰɑJ¯À¼¶®¾ÃÁlāČYɯ_~«¾¢Á®ÀiYgùâƩŹ[oɯ¯À¼¶åŹ{ïƱmåƦOƨlkv[ɰÔĮnVm®¾
ÃÁmåƑiæJƑȬƓYv[ɰ	 ¯À¼¶nȤǷX]bThnųĨOIv] ɰȄƣĀčYgĄygňȄYv[ɰVvhnɯzdizĕǽk 35,17 ƎhiIL\ǗɢlȚǦ[ƑƻædgPvYaOɯÔĮnłwlŮZgƌòmȚǦťŠĽLƑƻ{ɯ­¾líņ[ƑƻleJgȬƓYv[ɰX~l¢Ãøč[Vih¯À¼¶ĽƗ]\lĐåĽLƑƻleJgzȬƓYv[ɰ	 	  1<DH6G	
 	  1<DH6G"Roqp	
 @¾ÃÁAinɯĐåɔŃǆiȁÎǆOŉȌXgJɓZa¯À¼¶żɥǦ[ǔȫh[ɰ¯À¼¶ȰĐYaiPlƚĄlĐå[mn·Á¯À¼¶h[OɯV@·Á¾ÃÁAizJJv[ɰ@®¾ÃÁAnɯ·Á¯À¼¶iĤƪlĐåɔŃǆiȁÎǆƁdgJv[Oɯ·Á¯À¼¶iǚkɯĕǎhĐå[VinhPv] ɰŭ\ɯ×m¾
ÃÁlĐåɔŃĪÚȥȻYgɯŭȞlŮZgŋșX]ŭȞOIv[ɰÄem¯À¼¶l·Á¯À¼¶nÄeh[Oɯ®¾ÃÁnĥĉOǚkoȝƌņĳYgzNvJv] ɰ
vaɯJReNm¾ÃÁWil­¾åŹYgąFlÁª¾YɯŭȞlŮZgȄģɭ½
ÁɮX]VizğȐh[ɰ	 	 ®¾ÃÁĆǔ[ǟǝnÌiYgɳeIv[ɰ	 	 ȝƌmĺŻhĤZȤǷżɥæǔ[ay	 	 ƑǪŠmȢƻ{șăŠmȤǷkjm}KkŉĵÿǑ[ay	 	 ɑJ¯À¼¶āČYg·Á¡¥ÁōƔl[ay	
 O®¾ÃÁƞƠmæJƑh[ɰIÄɂmżɥȝƌmĺŻhæKiPɯ_`mĺŻlĤZ¯À¼¶ƘRiɯ¯À¼¶OɑRkYɯïƱmɝlãŻzĤZïƱYkT
okv] ɰVmiPɯ_mżɥ®¾ÃÁlȋPƉLoɯ¯À¼¶nǤRkYɯ åƦzǤȉXv[ɰ	 — 28 —

SENAC Vol. 45, No. 4（2012.10）

	 nǛœX]azmh[ɰȝɟkƌŇúŠ{ƸǔŰmIƌòȤǷ¾½¶¯À
¼¶ËlǠƆȥȻ[iPnɯ¯À¼¶ËhŌȣXaĽƌ{ɍăædgƘPv[ɰVmayɯĤZȤǷżɥąm¯À¼¶hæJaRgz_mvvæLinəv] ɰ_VhȤǷżɥ®¾ÃÁlYgɯȤǷlŭȞkƌòÈLɋāiȤǷȄƣmƌòĜTěɋābTOľɋN~ȟL}KlYgMPv[ɰ_K[oɯĜTǂYɋƘPƉLbThɯȝɟkȤǷżɥȔFk¯À¼¶N~Ćǔ[ViOhPv[ɰVm}Kl®¼ ² ĒYa®¾ÃÁnɯ×mÓlƈèYaɯ×mÓN~z~dgĆǔ[VizğȐhɯ_m}KkƸǔŰmI®¾ÃÁɞyazmOɯ@¼®¼½Ah[ɰ	 XgɯȤǷƮµº¿Ã»Ám}KlĿƌmȢƢżɥȝģYa¯À¼¶ƘRĺģlnɯmǟǝOɎȞlkv[ɰƪFkǋǑɅǪmȤǷ{ɯøĀčlɖ[åƦkjɯIǪşvivdaýōWil®¾ÃÁl[mh[ɰƎǱhJLoɯǱ{ǸlāČ[}Kkzmh[ɰVmayɯ·Á¯À¼¶lnɯ_`m®¾ÃÁĩpĀ[ƎiɯŭȞk~_~ȊȺ[aym (2 ƎbTƘJgMPv[ɰµº¿Ã»Á¯À¼¶nɯ®¾ÃÁiJKɋīædgȂwǰgzmbiȎLoJJhY|Kɰ	
 ®¾ÃÁlāČYgMToɯ¯À¼¶m·Á¡¥ÁOƨlkv[ɰVnɯ_`m¾ÃÁOǎǰYgJmhɯ¯À¼¶ïƱYaiPmŦɣ{ɯ¼ÃOǛǓ[ĖįO¾ÃÁýləŉXN~h[ɰ	
 	
 

	
  1<DH6G"_wY#P	 ®¾ÃÁn 68&5287,1) ƎhɔŃŌȣYɯ)1(	 68&5287,1) ƎhȁÎYv[ɰ[kcɯƯm}KkƩɁlYv[ɰ	 68&5287,1)	
 68&5	 	 	 ,03/,',7	 121)	 	 	 5)%/	 % &	 	 	 ,17)+)5	
 ,	
 
	
 	
 	
 	
 
	
 
	
 	
 	
 	
 
	
 
)1(	
 68&5287,1)	
 68&5	 ÷ɧm 68&5287,1) Ǝhɯ68&5287,1) mũlƂŉYaƎŅăɭVmçhn 68&5ɮ@®¾ÃÁĥAiJJv[ɰvaɯƚũm )1(	 68&5287,1)Ǝlz®¾ÃÁĥƂŉYv[ɰȟgN}Klɯ·Á¯À¼¶iĤZƩɁh[ɰ®¾ÃÁýɋm¯À¼¶mƘPƑzĸƞǝ
l·Á¯À¼¶iĤZhɯ68&5287,1) ƎmƯl ,03/,',7	 121)ƘPɯɡŋșƎÅƑlɞǼYgɯ_mũlŋșƎƘPv[ɰ®¾ÃÁn_ȑâhɓZgJmhɯŋșƎËhæ
KĽƌ{ɍănɯĸƞǝl_mýɋhŌȣYkTokv] ɰabYɯǚk¾ÃÁɕhûǔğȐkĽƌąȿǔų[VinğȐh[ɰVleJgnɯ  ǸhȬƓYv[ɰ	 Åmçhnɯ68&5287,1) Ǝl®¾ÃÁĥYNIv] OɯV@šƌkY®¾ÃÁAiJJv[ɰVlŏYgɯ®¾ÃÁĥmũlɯNdVhİ bĽƌ½£ØĎ[ViOhPɯV@šƌI®¾ÃÁAiJJv[ɰÛÆlçǦYv[ɰ	 68&5287,1)	
 68&5; 0 < 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; < % & = 	 	 	 ,17)+)5	
 0 1 , .	
 
	
 	
 	
 	
 
	
 
	
 	
 	
 	
 
	
 
)1(	
 68&5287,1)	
 68&5	 ½£ËmĽƌ@šƌAiJJv[ɰVmçhnɯ; 0 < 1 Ošƌh[ɰšƌnɯ®¾Ã
Ái_m®¾ÃÁæK¾ÃÁmɕhƌòĜTǂ[mlæJv[ɰšƌz®¾ÃÁýɋmĽƌkmhɯŭȞkĵlŮZaŌȣYkTokv] ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 29 —

®¾ÃÁĐåX]g_mƮȐæKiPnɯ'%// Ǝædg_m®¾ÃÁƂĥYv[ɰVmayɯ®¾ÃÁƂĥ[Viɯ@®¾ÃÁĩpĀ[AiN@Ã¾[A
iJJv[ɰ'%// ƎnÛÆm}KkťŠh[ɰ	 '%//	 ®¾ÃÁĥ	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
 	
  	
  	
 šƌkY®¾ÃÁǔ	 '%//	 ®¾ÃÁĥƌòvanĽƌm½£	
 	
 	
 	
 šƌI®¾ÃÁǔ	 çLoɯ÷tjĀgPaɯšƌkYišƌImÑem®¾ÃÁæKiPnɯ_`ɯƯmim}KlÃ¾Yv[ɰ	 	  5)%/	 =	 	  ,17)+)5	
 0	
 	
  '%//	
 68&5	
 	
 	
 	
 	
 	
 	
 	
 	
 
	
  0	
 	
 	
 
	
  '%//	
 68&5
= 0	
 	
 	
 	
 	
 	
 	
 	
 	
 

	
 
	
 	
 

ĉĮȬƓYa}KlɯȤǷŠnȤǷȄƣmƌòĐåĪÚlÈLmhɯ'%// ƎmšƌlnɯmÄǙĠm}KlȤǷŠÈLVizhPv[ɰ	 ®¾ÃÁnĕǎhnĐåhPkJmhɯ·Á¯À¼¶OąȿŭȞh[ɰçLoɯƯm}Kk £ƩŹYgĄygÄem¯À¼¶OňŹYv[ɰ	 352+5%0	
 67)67	 	 	 	 ,03/,',7	 121)	 	 	 	 5)%/	
 ; <	
 
	
 	
 	
 ;	
 	
  	
 
	
 	
 	
 <	
 	
 
	
 
	
 	
 	
 '%//	
 68&5; <  	
 
	
 	
 	
 35,17	  ; <	 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5; < 1	
 
	
 	
 	
 ,03/,',7	 121)	 	 	 	 5)%/	
 ; <	
 
	
 	
 	
 ,17)+)5	
 1	
 
	
 	
 	
 ;	
 	
 1	
 
	
 	
 	
 <	
 	
 <;	
 
)1(	
 68&5287,1)	
 68&5	
 VVhnɯ·Á¯À¼¶÷lɯ®¾ÃÁũlƘPvYaOɯȾhzNvJv] ɰ®¾ÃÁOȝƌņĳ[ĺģzɯ¾ÃÁȥȻ[ɥǙnŋșȄƣinǇɖëh[ɰ®
¾ÃÁmËN~ąm®¾ÃÁÃ¾[VizğȐh[ɰ	 Åȥm¯À¼¶ŋșmƽıɱlǦYv[ɰ	 メインプログラムプログラム領域
program stest1
implicit none
real x,yx = 5.0
y = 100.0
call subr(x,y,10)
print *,x,y
end program stest1

実
行
の
流
れ

サブルーチンプログラム領域
subroutine subr(x,y,n)
implicit none
real x,y
integer nx = ny = y*x
end subroutine subr	 ıɱɰ®¾ÃÁmĩpĀYiŋșmƽ	 — 30 —

SENAC Vol. 45, No. 4（2012.10）

ım}Klɯ·Á¯À¼¶m '%// Ǝh®¾ÃÁƂĥ[iɯ®¾ÃÁmÄǙƚ
ĄmŋșƎlĐåOǩɯ®¾ÃÁýɋmĐåOňÎ[iɯÃ¾Ya·Á¯À¼¶lźdgɯ_m '%// ƎmƯmƎN~ŋșȆȇYv[ɰ	 ƟÝlŮZgɯȿËh®¾ÃÁmÿǑŽcĂdgźiPln 5)7851 ƎǔJv[ɰ	 68&5287,1)	
 68&5; < 0 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 ,17)+)5	
 0 1	
 
	
 	
 	
 	
 
	
 
	
 	
 ,*	
 0 	 5)7851	
 
	
 	
 	
 	
 
	
 
)1(	
 68&5287,1)	
 68&5	
 Vmçhnɯ0ɹ miPl®¾ÃÁmÿǑOȁÎYɯÃ¾Ya¾ÃÁlźv[ɰVVh 5)7851 ƎmÙl 6723 ƎǔJoɯ¯À¼¶ȑâOȁÎYv[ɰ	 	  1<DH6GNz"]eae	 ®¾ÃÁýɋhŌȣYaĽƌ{ɍănɯ·Á¯À¼¶{×m®¾ÃÁN~ǎǰY
gJv[ɰ[kcɯĤZĥĉædgzùRąmĽƌh[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; <	
 
	
 	
 ;	
 	
  	
 
	
 	
 <	
 	
  	
 
	
 	
 '%//	
 68&5	 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5	 	 	
 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 35,17	  ; <	 )1(	
 68&5287,1)	
 68&5	 iƘJgzɯ®¾ÃÁËm 35,17 Ǝl}dgĀčX ; i < n·Á¯À¼¶hÙøYaihnkRɯùRǇɖëkƌŅh[ɰȾlȣLoɯ×m¾ÃÁhmŌȣƶl]\lĽƌ{ɍămĥĉƹyViOhPv[ɰVm¾ÃÁýɋhmwƛďkĽƌ@ÀÃ¾ĽƌAiJJv[ɰ	 Åȥm¯À¼¶ƜŨɀõN]aylɯÃ¾ô¾ÃÁmƌò®¾ÃÁlßLmOšƌh[ɰçLoɯÅȥm¯À¼¶ÛÆm}KlƘPǠ]oɯ®¾ÃÁËm 35,17
ƎhĀčX ; i < nɯ·Á¯À¼¶iĤZ ilkv[ɰ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; <	
 
	
 	
 ;	
 	
  	
 
	
 	
 <	
 	
  	
 
	
 	
 '%//	
 68&5; <	
 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5; <	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 35,17	  ; <	 )1(	
 68&5287,1)	
 68&5	 šƌnɯƌòmĜTǂY[aymǯĝlɅQkJmhɯ	 '%// ômšƌi 68&5287,1) ômFortran スマートプログラミング —第２回

šƌmĽƌĥĤZl[ŭȞnIv]
Yv[ɰ	 サブルーチンと入出力—— 31 —

ɰƯm®¾ÃÁlȋPNLgzùRĤZĐå

68&5287,1)	
 68&5% &	 	 	 ,03/,',7	 121)	 	 	 5)%/	 % &	 	 	 35,17	  % &	 )1(	
 68&5287,1)	
 68&5	 
ľɋN~mŦɣĜTaɯľɋlŦɣÈLɯiJKŰȯƁeViɚToɯšƌzÀÃ¾Ľƌh[ɰ[kcɯÃ¾Ya¾ÃÁN~_mȩǿnȟLv] ɰȟLmnɯšƌiJKǯĝmÊpbTh[ɰVmayɯšƌI®¾ÃÁæKiPlɎȞk³Á£nɯ	 	  	 šƌmƌ	 	 	 	 ŏŮ[šƌmĵ	 O '%// Ǝi 68&5287,1) ƎihÄȒYgJkTok~kJVih[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	 =	 	 	 ,17)+)5	
 1	
 
	
 	
 =	
 	
 
	
 
	
 	
 1	
 	
 	
 
	
 	
 '%//	
 68&5
= 
1	 )1(	
 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5; < 0 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 ,17)+)5	
 0 1	
 
	
 	
 35,17	  ; < 0 1	 )1(	 68&5287,1)	
 68&5	
 iJK¯À¼¶hnɯȚɱm}KkŏŮlkdgJv[ɰ	 Țɱɰ®¾ÃÁmšƌŏŮ	 '%// Ǝ	 68&5287,1) Ǝ	
 
ƌòĵ	
 


	
 

;	
 

ŋƌ	
 

=	
 

<	
 

ŋƌ	
 



0	
 

ƍƌ	
 

	
 

1	
 
1	
 
ƍƌ	
 
	
 
VVhƼų[sPkmnɯǳ  šƌm ; nŋƌĵkmhŋŉƌ ÈLɯǳ  šƌm 0 nƍƌĵkmhƍŉƌ  ÈLgJVih[ɰzYɯǳ  šƌlĤZųĨbKiůdg  iJKƍŉƌÈLiɯŋșƖ¼Ãlkv[ɰ	 ®¾ÃÁýɋmŋșƎhɯšƌlƌòÙø[iɯ'%// ƎmŏŮ[šƌlÈLaĽƌ
l_mƌòOÙøXv[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; < 3	
 
	
 	
 ;	
 	
  	
 
	
 	
 <	
 	
  	
 
	
 	
 '%//	
 68&5;< 	 	 35,17	  ; < 3	
 )1(	
 352+5%0	
 67)67	 3	 — 32 —

SENAC Vol. 45, No. 4（2012.10）

68&5287,1)	
 68&5; < =	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; < =	
 
	
 	
 =	
 	
 ;<	
 
)1(	
 68&5287,1)	
 68&5	 	 iƘRiɯ®¾ÃÁËm ; nÃ¾ôm ;<ɯ[kc hIɯ®¾ÃÁËm < nÃ¾ôm kmhɯ®¾ÃÁËm = ln ;< mȤǷȄƣhI OÙøXv[ɰVmiPɯ= Ošƌkmhɯ'%// ƎmŏŮ[áȋlIĽƌ 3 l OÙøXɯ'%// ƎmƯm 35,17 Ǝhn ;ɯ<ɯ3 iYgɯOĀčXv[ɰ	 Vm}Kl®¾ÃÁmšƌlƌòÙø[Vihɯ'%// ƎmšƌĽƌlÙøXƌò
@źòAiJJv[ɰźòæLoɯ®¾ÃÁmĐåhŪ~aȄƣÃ¾ôhĜ
TěViOhPv[ɰabYɯ'%// ƎmšƌlnŉƌÈLaȤǷŠƘJgz}JɯiȻ
svYaOɯźòƂŉ[šƌnąhɯŭ\ĽƌNɍălYkTokv] ɰǑǖƯǸhȬƓYv[ɰ	 	  DH6G|!(7H5"Vl|d+9E3	
 ¾ÃÁɕmekOzKŒYȩYRȎLgwvY|KɰĢ¾ÃÁnĸƞǝl¯À¼¶ɦķi¢ÃɦķN~ƩŹXgJv[ɰ¯À¼¶ɦķinƎŅɀ¯À¼¶ĪÚOȥɐX
gJɦķmVihIɯ¢ÃɦķinĽƌ{ɍămaylǔųXa·¸½ɦķmVih[ɰ¯À¼¶ǝlnɯĽƌ{ɍămŌȣƎO¢ÃɦķmƂŉųĨYgJv[ɰ	 Ľƌ{ɍăOĢ¾ÃÁWilŌȣXkTok~kJmnɯ¢ÃɦķOĢ¾ÃÁ_`lØŔYgJN~h[ɰVmayɯıɲm}Klǚk¾ÃÁhĤZĥĉmĽƌŌȣYgzɯ_~nąm¢ÃɦķlŻŔYgJv[ɰVOÀÃ¾Ľƌh[ɰÀÃ¾Ľƌnɯ_m¾ÃÁýɋN~YNĘǈ[ViOhPv] ɰ	 メインプログラム

サブルーチンプログラム領域参照program stest1
implicit none
real x,yx = 5.0
y = 100.0
call subr
print *,x,y
end program stest1
データ領域
x

5.0

y

100.0

参
照
で
き
な
い

プログラム領域
subroutine subr
implicit none
real x,yx = 10.0
y = 25.0
end subroutine subr
参
照

データ領域
x

10.0

y

25.0

	
 
ıɲɰ¯À¼¶ɦķi¢Ãɦķ	 VmayɯI¾ÃÁhȤǷYaƌòąm¾ÃÁhæKlnǌąkżȇPOŭȞlkv[ɰVOšƌh[ɰšƌæLoɯÃ¾ôm¾ÃÁi®¾ÃÁmɕh¢Ã{i[ViOhPv[ɰhnɯüâǝljK{dg¢ÃmĜTǂYYgJmhY|Kɰ	 ¢Ã®¾ÃÁlǂ[żƳiYgɯzdizĕǽlȎL~mnɯšƌmƌòǠƆ®¾ÃÁmĽƌlÙø[Vih[ɰıɳȟgÆXJɰım}KlɯÃ¾ômšƌ ; i< mýōɭVmçhn  i ɮOɯ®¾ÃÁmšƌiYgŌȣXaĽƌɯ% i & lÙøXgJv[ɰVmƑŠnɯšƌmòǠƆǂYgĩpĀ[ɯiJKųĨh@'%//	
 &<	
 9%/8)AFortran スマートプログラミング —第２回

サブルーチンと入出力— 33 ——

iĩogJv[ɰ@'%//	
 &<	
 9%/8)AnɯÃ¾ôN~®¾ÃÁôrmòmšǂYleJgnĬɨIv] ɰ ȣȫnVmƑŠƅǔYgJv[ɰ	 メインプログラム

サブルーチンプログラム領域
program stest2
implicit none
real x,yx = 5.0
y = 100.0
call subr(x,y)
print *,x,y
end program stest2

数値を直接代入

データ領域
x

5.0

y

100.0

プログラム領域
subroutine subr(a,b)
implicit none
real a,b
print *,a,bb = a+25.0
end subroutine subr

送
り
返
せ
な
い

こ
ち
ら
へ
代
入

データ領域
a

5.0

b

100.0

	
 

ıɳɰ@'%//	
 &<	
 9%/8)Aæda¢ÃǂYhnɯòȽȺ]kJ	 YNYɯVmƑŠhnɯ®¾ÃÁôhåŹYa¢ÃÃ¾ôlź[VinhPv] ɰ®¾ÃÁnɯÃ¾ôN~Ƚ~gPa@òAnNmh[Oɯ_ÛÅmŲĹOkJmhɯÃ¾ômjVl¢ÃÙø[oJJNN~kJN~h[ɰıɳm}Klɯ®¾Ã
ÁËmÙøƎɯ&% ɯh®¾ÃÁmĽƌ & l iJKòÙøYgzɯ®¾ÃÁm¢Ãɦķm & lÙøXbThɯ·Á¯À¼¶m¢ÃɦķlnŦɣOIv] ɰ	 VmĬɨȢƹ[aylɯ2575%1 n@'%//	
 &<	
 9%/8)AhnkRɯ@'%//	
 &<	 5)*)5)1')AiJKƑŠƅǔYgJv[ɰ@'%//	
 &<	 5)*)5)1')AinɯĽƌmýōhnkRɯĽƌmņĳĺŻ
ɭ·¸½¤¿ɮ®¾ÃÁlßLgĩpĀ[ƑŠh[ɰ	 Á¬ºÃm·¸½lnɯ@ǙĴAiĩoɀYǙġOeJgJv[ɰ·¸½¤¿ɭI
Jnĕl¤¿ɮinVmǙĴmVihɯ¯À¼¶mŋșËlɯI·¸½m¢ÃȭwƘP[iPnɯ_m·¸½m¤¿ƂŉYgșJv[ɰçLoɯǺĕkÙøƎɯ	
 
%	
 	
 
&	
 	
 %	
 

	
 

ȎLgwvY|KɰVmȄƣɯ& m·¸½l iJKòOƘPȸvv[OɯÙøŠ &%
lMJgɯ%ɭ¤¿# $i[ɮiJKĽƌN~¢ÃědgƠg & lÙø[iJKƽnɯ	 % m¤¿Ƃŉ	  B	 	 # $ǙĴm·¸½ým¢Ãɭ
	
 
B	
 	
 & lÙø	 ɮmĩpĀY	 ikv[ɰƽılƇToıɴm}Klkv[ɰVmƑŠ@ǠƆ¤¿AiJJv[ɰ	
 
データ領域
a:103

101:
102:
103:
104:
105:
....

1500.0ıɴɰǠƆ¤¿l}·¸½Ęǈ	
 

b

	
 

— 34 —

SENAC Vol. 45, No. 4（2012.10）

VlŏYɯI¤¿ɭ%((5ɮm·¸½lødgJmOąm·¸½m¤¿ɭ%((5ɮhɯ¤¿ %((5 ƂŉYgɯ¤¿ %((5 m·¸½lødgJ¢ÃȭwƘP[ƑŠ@ɕƆ¤¿AiJJv[ɰ2575%1 hnɯ@'%//	
 &<	 5)*)5)1')Ah®¾ÃÁĩpĀ[mhɯšƌln '%// ô¾ÃÁm·¸½¤¿OødgJv[ɰVmayɯ®¾ÃÁýhmšƌmȭwƘPnɕƆ¤¿ædgșJv[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 %	
 
	
 	
 %	
 	
 
	
 
	
 	
 '%//	
 68&5%	 )1(	
 352+5%0	
 67)67	 	
 68&5287,1)	
 68&56	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 & 6	
 
	
 	
 &	
 	
 6	
 
)1(	
 68&5287,1)	
 68&5	
 iJK¯À¼¶ȎLv[ɰ®¾ÃÁ 68&5 mËmÙøƎ &6 l}dgɯĽƌ & m·¸½m
òn lkv[OɯšƌĽƌ 6 ln % mýōhI 
hnkRɯ·Á¯À¼¶
mĽƌ % m¤¿OødgJv[ɰVmayɯ	 &6 iJKÙøƎhɯĽƌ 6ɭ·¸½¤¿
# $i[ɮN~¢ÃědgPgĽƌ & lÙø[ƽnɯ	
 6 m¤¿Ƃŉ	
  B	
  # $ǙĴlI·¸½¤¿¢Ãɭ ɮmĩpĀY	
 
	
  	
  	
 	
  	
  	
  	
  	
  B	
 	
 # $ǙĴlI¢ÃɭɮmĩpĀY	 	 B	 	 & lÙø	 ikv[ɰıǦ[oıɵm}Klkv[ɰ	
 
データ領域
a:103

s:107

101:
102:
103:
104:
105:
106:
107:
108:
....

b

1500.0103	 ıɵɰɕƆ¤¿l}·¸½Ęǈ	 ɕƆ¤¿l}ȭwƘPnǠƆ¤¿}zƖɕONNv[ɰ}dgɯ&6 mÙøƎlMJgɯÙø[òíƁYgJĠȷmĽƌ 6 OɕƆ¤¿Ƃŉmĺģln·½ £OIv] ɰYNYɯÙøXŘȷmĽƌ & OɕƆ¤¿ƂŉmĺģlnɯVmÖȂwĆǔ[VihɯÃ¾ô¾ÃÁmĽƌl®¾ÃÁôm¢ÃÙø[ViOhPv[ɰ	 çLoɯıɶm}Kk¯À¼¶ȎLv[ɰ®¾ÃÁmšƌĽƌ & l % mȄƣhI
Ùø[iɯ& ln·Á¯À¼¶mĽƌ < m¤¿OødgJmhɯɕƆ¤¿Ƃŉl} < l OÙøXv[ɰ	 źòĆǔ[iPnɯŏŮ[šƌlÃ¾ôĽƌm¤¿ÈLkTokv] ɰVOĽƌvanɍăƂŉYkTok~kJǑǖh[ɰźòƂŉmšƌlŉƌ{ȤǷŠÈLiŋșƖ¼Ãlkv[ɰ	 	 ɍăŋǐ[mlzɕƆ¤¿OægJv[ɰçLoɯ% n %N~ƌLg  Ǚǟm·¸½h[ɰ}dgɯɍăm÷ɧȞǾ %m¤¿·¸½lȥɐYɯ_l ɭoɯ% m·¸½ȭwƘP[Vilkv[ɰ	 ɮĎLgɕƆ¤¿ǔJ

Fortran スマートプログラミング —第２回

サブルーチンと入出力

メインプログラム
program stest3
implicit none
real x,yx = 5.0
変数 x,y のアドレスを送る
call subr(x,y)
print *,x,y
end program stest3
データ領域
y

5.0
30.0

— 35 —

サブルーチンプログラム領域x—

参
照間接アドレスで送るプログラム領域
subroutine subr(a,b)
implicit none
real a,b
print *,a,bb = a+25.0
end subroutine subr

データ領域
a

xのアドレスbyのアドレス	 ıɶɰ2575%1 hn@'%//	
 &<	 5)*)5)1')Al}ɯ¢ÃȽȺ[ViOhP	 	  {Q)ae!(\W	 ɍă '%// Ǝmšƌl[iPnɯɍăĥšƌl[VizɯɍăȞǾšƌl[VizğȐh[ɰɍăĥnɍăm÷ɧȞǾ¤¿Ǧ[mhɯɍăĥšƌl[Viiɯ_mɍă
mǳ  ȞǾšƌl[VinĤZųĨlkv[ɰçLoɯ5)%/	
 % iŌȣYaɱƯöɍălŏYgɯ	 	
  '%//	
 68&%	  i	
  '%//	
 68&%	 nĤZĐåYv[ɰ	 	 VĜT®¾ÃÁhmŌȣnɯ®¾ÃÁýɋh_m¢ÃjKæKNhƹyv
[ɰÄçǦYv[ɰ	 68&5287,1)	
 68&;	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ;	
 
	
 	
 ;	
 	
  	
 
)1(	
 68&5287,1)	
 68&	
 Vmçhnšƌ ; OĕÄĽƌiYgžgJv[ɰVmayɯ'%// ƎhƂŉYa %bTO
®¾ÃÁýɋhĆǔhPɯ×mȞǾnæLv] ɰVnɯ'%//	
 68&%m}KlɯɍăĥÈLaĺģhzĤZh[ɰ	 VlŏYɯ	 68&5287,1)	
 68&;	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; 	 	 	 ,17)+)5	
 ,	
 
	
 	
 (2	
 ,	
 	
  	
  	
 
	
  	
 	
 	
 	
 ;,	
 	
 ,	
 
	
 	
 )1((2	
 )1(	
 68&5287,1)	
 68&	
 m}Klšƌ ; ɍăŌȣ[oɯIaNzÃ¾ô¾ÃÁm % iJKɍăO®¾ÃÁýɋmɍă ; lkdaNm}KlěžKViOhPv[ɰVVh@IaNzAiJKȣȗædamnɯ®¾ÃÁhmŌȣƎmƘPƑl}dgn_Kk~kJViOIN~h[ɰçLoɯ®¾ÃÁhmɍăŌȣ ; mȞǾƌ  nÃ¾ôiĤZƌl[ŭȞnIv] ɰm}KlŀPRgzɯ m}KlőXRgzNvkJmh[ɰVnɯšƌ ; Oɍăm÷ɧȞ

— 36 —

SENAC Vol. 45, No. 4（2012.10）Ǿ¤¿íƁYgJɱðmĽƌl[QkJN~h[ɰ®¾ÃÁhmšƌɍămŌȣnɯɍămťǍɭƯö{ÆəòɮȚǦ[aymµÃl[Qv] ɰ	 VmayɯÃ¾ô¾ÃÁhŌȣYaȞǾƌi®¾ÃÁhŌȣYaȞǾƌÄȒX]
ŭȞnIv] ɰÈL~aɍăjKŌȣ[Nnɯ®¾ÃÁýɋmȤǷmɌģlģ]gɯ®¾ÃÁôhƹyViOhPv[ɰ}dgɯƸǔŰmI®¾ÃÁl[lnɯɍăm¤¿ÛľlɯɍămȞǾƌzšƌlYg®¾ÃÁlßLŭȞOIv[ɰ	 ɍămťǍXLāNoJJmh[N~ɯ®¾ÃÁhšƌɍăŌȣ[iPnɯƌŅmÙl@AƘRViOhPv[ɰçiYgɯȞǾƌ 1 m  Ưöɍă % m¢ÃɯĤZɑXm  Ưöɍă & l¬Ã[¯À¼¶ȎLgwvY|KɰƚzĕǽkǶLnɯÛÆm}Kk
zmh[ɰ	
 68&5287,1)	
 '23<% & 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 % &	 	 	 ,17)+)5	
 1 ,	
 
	
 	
 (2	
 ,	
 	
  	
 1	
 
	
 	
 	
 	
 &,	 	
 %,	 	 	 )1((2	
 )1(	
 68&5287,1)	
 '23<	
 Vm}Klɯ®¾ÃÁmšƌɍă % { & mŌȣ@Al[VihɯȞǾƌOÇŉmɱƯöɍăhIViƓǦYgJv[ɰ	 	 @Al}ŌȣnɲƯöÛÅmɍăhzæKViOhPv[OɯćəOIv[ɰçLoɯ% iJKťmŌȣnhPv] ɰk^k~ɯɲǙǟmȞǾɃymnɱǙǟmȞǾOƚŀòɯ[kcŌȣYaÅəƌlɆYaiPkmhɯɱǙǟmȞǾOÇŉhnŲĹÇȳhɃy~kJN~h[ɰVmayɯ@AOæLmnɯÄǙĠômȞǾƌmwh[ɰçLoɯ5)%/	
 % 
iŌȣ[iɯǳɱȞǾƌO  mɲƯöɍăiYgȤǷXv[ɰ	 YNYɯVhnj kɲƯöɍăhzæL®¾ÃÁåVinhPv] ɰ_Vhɯ@ƍģɍăAiĩoƮȐOǔųXgJv[ɰƍģɍăin 68&5287,1) ƎmšƌmËlIƍƌĵĽƌĆǔYgŌȣYaťmšƌɍămVih[ɰçLoɯÛÆm}KlŌȣ[ViO
hPv[ɰ	
 68&5287,1)	
 '23<(% & 0 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 %0 1 &0 1	 	 	 ,17)+)5	
 0 1 , -	
 
	
 	
 (2	
 -	
 	
  	
 1	
 
	
 	
 	
 	
 (2	
 ,	
 	
  	
 0	
 
	
 	
 	
 	
 	
 	
 &, -	 	
 %, -	
 
	
 	
 	
 	
 )1((2	 	 	 )1((2	
 )1(	
 68&5287,1)	
 '23<(	 Vmçhnɯ0 i 1 OšƌmËlImhɯV~ædgšƌmɍă % i & Ōȣ[ViOhPmh[ɰ%0 1m}KkĕǽkŌȣbThnkRɯ%01 1 m}KlɯȤǷŠædgŌȣ[VizğȐh[ɰ	 Vm®¾ÃÁmæǔçƯlǦYv[ɰ®¾ÃÁmšƌ %ɯ& lj kȞǾƌmɲƯöɍăÈLgzɯÃ¾ô¾ÃÁlMTɍăŌȣiĤZȞǾƌ 0ɯ1 lÈLoɯƱYRĐ	 ȞǾƌbThnkRɯƯöXLÄȒX]ŭȞnIv] ɰÃ¾ôOɲƯöɍăhɯ®¾ÃÁhmŌȣOɱƯöɍăhzĐånğȐh[ɰçLoɯÅȥm®¾ÃÁ '23< nɯɲƯöɍăhzæǔhPv[ɰVnɯɲƯöɍăz·¸½ÅhnɱƯöǝlÊ hJN~h[ɰabYɯȞǾƌÈLšƌ 1 lnùȞǾ
ƌƂŉ[ŭȞOIv[ɰçLoɯ%  iŌȣXaɍăk~oɯ1 ɭ > ɮÈLv[ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 37 —

åYv[ɰ	
 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	 %   &
	
 	
 	
 	
 
	
 
	
 	
 '%//	
 '23<(% & 	 	 '%//	
 '23<(' ( )1(	 352+5%0	
 67)67	   '



 (



	
 

 	
 
 	
 

kMɯɍăŌȣmɝlnɯÀÁØĎYgÆəƂŉ[ViOhPv[OɯV®¾
ÃÁlšPȆSln®¾ÃÁôhzĤZÆəƂŉ[ŭȞOIv[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 %  	 	 	 '%//	
 68&% %  	 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&; < 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; 1 <	 	 	 ,17)+)5	
 1	
 
	
 	
 ; 	
 	
  	
 
	
 	
 < 	
 	
  	
 
)1(	
 68&5287,1)	
 68&	
 iƘJaĺģɯ·Á¯À¼¶iĤZÆəƂŉYaɍă ; hn ; O·Á¯À¼¶m% lŏŮ[mhɯ% l OÙøXv[ɰYNYɯÆəƂŉYgJkJɍă < hnÆəO  h[N~ɯ% N~ƌLg  Ǚǟm %l OÙøXv[ɰÞųmÆəƁeɍălŏYgĐå[¯À¼¶l[lnɯÆəmƌòšƌlYgƍģɍăæJv[ɰ	 	  }eS=F0C@v s%y%}e	 6,1;m}KlɯšƌædgýɋhȤǷYaȄƣȤǷŠËhæKViOhP@ɖƌAȑå[VizhPv[ɰVɖƌĊ¯À¼¶iJJv[ɰɖƌĊ¯À¼¶nɯ®¾Ã
Áiti jĤZƩɁYgJv[OɯÛÆm}KkɇJOIv[ɰ	 	  	
 68&5287,1) mÙl *81'7,21 ƘR	
 
	
 	
 	
 ɖƌĥĽƌiYgŌȣYɯ_lȤǷȄƣɭɖƌòɮÙøYkTok~kJ	 VÛľnɯšƌI®¾ÃÁiĤZh[ɰšƌlɖ[Ƽųz®¾ÃÁiĤZhɯźòÈLšƌħyVizhPv[ɰɖƌĊ¯À¼¶inɯšƌÛľlźòɱðƁe®¾ÃÁmĽǫbiJLv[ɰVmźòOɖƌòlkv[ɰ	 ɖƌĊ¯À¼¶mÄçǦYv[ɰ	 *81'7,21	
 648%5);	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 648%5) ;	
 	 	 648%5)	
 	
 ;;	
 
)1(	
 *81'7,21	
 648%5)	
 Vm}Klɯ*81'7,21 ƎhɔŃYɯ)1(	 *81'7,21 ƎhȁÎYv[ɰvaɯɖƌĥ 648%5) ŋƌĵŌȣYɯšƌ ; mÑÍÙøYgȁÎYgJv[ɰ[kcɯVmçnɯšƌ ; lŋƌĵm
ƌòÈLiɯ; ɖƌòiYgÈLɖƌlkv[ɰ	 	 ɖƌĊ¯À¼¶æKVinɯ@ɖƌĥAiJKĽƌæKVihIiȎLv[ɰVmayɯåŹYaɖƌæǔ[¾ÃÁhzɖƌĥĵŌȣ[ŭȞOIv[ɰçLoɯÅçm
648%5) æKlnɯ	 — 38 —

SENAC Vol. 45, No. 4（2012.10）

352+5%0	
 *7)67	 	 	 	 ,03/,',7	 121)	 	 	 	 5)%/	
 ; < 648%5)	
 
	
 	
 	
 ;	
 	
  	
 
	
 	
 	
 <	
 	
  648%5);
	 	 	
 35,17	  ; <	 )1(	 352+5%0	
 *7)67	
 

	
 	
 

	
 

m}Klɯ648%5) iJKɖƌĥɖƌĊ¯À¼¶hmŌȣiĤZĵhŌȣYgMNkTok
v] ɰɖƌĊ¯À¼¶ËhŌȣYaɖƌĥmĵiɯ_mɖƌæǔ[¾ÃÁhŌȣY
aɖƌĥmĵOǚkĺģlnŋșƖ¼Ãlkv[ɰ	 XgɯĉĮȀÕYa}Klɯ6,1 { 6457 m}KkƌòȤǷh}RæKɖƌnI~NZyǔųX
gJv[ɰV~@ȂwȸwɖƌAiJJv[ɰȂwȸwɖƌnɯÁª¼OĵȪȮYgJmhɯæǔlɝYgmĵŌȣnÇȞh[ɰȚɲlɯĉĮǦYaɖƌÛľhɯ}RæKiů
ȂwȸwɖƌJReNǦYv[ɰ	 Ȃwȸwɖƌ	 ȚɲɰĵĽƉɖƌkjmȂwȸwɖƌ	
 
ĥ	
  Ǩ	
 
šƌmƌòĵ	  ɖƌòmƌòĵ	 ɖƌmųĨ	 5)%/1	
 

ŋƌĒ	
 

ƍƌ	
 

ŋƌ	
 

ŋƌĵrĽƉ[	 ,17;	
 

ƍƌĒ	
 

ŋƌ	
 

ƍƌ	
 

ƍƌĵlĽƉ[	 5)%/=	 ȝǾƌmŋɋ	
 

ȝǾƌ

ŋƌ	
 

= mŋɋ	
 ,0%+=	 ȝǾƌmȘɋ	
 

ȝǾƌ	
 

ŋƌ	
 

= mȘɋ	
 '03/;; <	
 

ȝǾƌĒ	
 

ɲðmŋƌ	
 

ȝǾƌ	
 

;,<	
 

'21-+=	 ûŧȝǾƌ	
 

ȝǾƌ	
 

ȝǾƌ	
 

= mûŧȝǾƌ	 %&6=	
 

ȅŏò	
 

ȝǾƌ	
 

ŋƌ	
 

= mȅŏò	 02(0 1	 ċä	 ɲðmƍƌ	 ƍƌ	
 0  1 hČdaä	 	 ĵĽƉɖƌnɯ®¾ÃÁmšƌlɯƌòĵmǚkĽƌÈLiPlæJv[ɰvaɯƍƌĒnĂƄgǅǷħ hJmhɯ_ǭƧǝlĆǔ[iPlzæJv[ɰçLoɯƱmŋƌ ; mőƌǆÛÆĭƄÒøYaƍƌnɯ,17; hȤǷ[ViOhPv[ɰ	 ƚũmċäȤǷ[ɖƌ 02( nųľl}RæJv[ɰ(2 ƎhȊȺYȤǷ[ĺģɯ	
  	
  	
 
@1 ĮƴlĀč[AiJK}KlɯÄŉɕɜhĐåĽLaJViO}RIv[OɯVVh
02( OæLv[ɰçLoɯȊȺYȤǷmËh  Įl  ĮĀč[k~ɯ	
 
(2	
 0	
 	
  	
 
	
 
	
 	
 
	
 
	
 	
 ,*	
 02(0  	
 	
  	
 35,17	  0 ; <	
 
	
 	
 
	
 
)1((2	 m}KlƘPv[ɰ¯À¼¶iJKmnɯĸƞǝlùgȤǷhIɯƽmÁ£ÀÃ¾zȤǷȄƣædgșkTokv] ɰVm}KkÃh 02( æKmnɯªÃÁmÄe
iYgȡLgMRiȓJhY|Kɰ	 	  A2BHD)K0FH:D]e"Ro	 ÀÃ¾ĽƌmMNUhɯĢ¾ÃÁmǎǰŰníav[OɯšƌhYN¾ÃÁɕm¢ÃĜTǂYOhPkJmnÇêh[ɰšƌnɯNdVædaÊphƂŉ[mhɯĜTǂ[ĽƌOĿJiƘRmOŀĽh[ɰYNzÊpOɎȞkmhɯÄŻɥǙɕɇLabThz¼ÃOǛǓYv[ɰ_z_zšƌl}ĜTǂYn¤¿ŲĹȃǖYazmkmhɯÃ¾ôi
®¾ÃÁôhňùlĤZĽƌhIiJKíȧnIv] ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 39 —

ȤǷƮµº¿Ã»ÁhnɯýōlŮZg®¾ÃÁåŹ[iȻsvYaOɯVmǔȿlMJgnɯ¾ÃÁɕhûǔ[ĽƌOĿƌŭȞh[ɰYNYɯûǔĽƌùgšƌl[mnďǏOűRɯ¼ÃzǛǓY{[Rkv[ɰ	 _Vhɯ¾ÃÁýɋhmwųĨƁe@ÀÃ¾ĽƌAlŏYgɯ@ÀÃ©¾ĽƌAOǔų
XgJv[ɰÀÃ©¾Ľƌinɯjm¾ÃÁN~ĘǈYgzûɀYaòíƁYgJĽƌmVihɯ2575%1 hnɯ¸ºÃ¾i 86) ƎmȂwģ]hĆǔğȐh[ɰ	 ¸ºÃ¾inɯĽƌ{®¾ÃÁkjɞygÄemª ÃlYazmhɯ02(8/) ƎhɔŃYg )1(	 02(8/)ƎhȁÎYv[ɰ®¾ÃÁiĤZƩɁYgJViN~N}Klɯ¸ºÃ¾mȥȻnɯ·Á¯À¼¶{®¾ÃÁiĤ¿°¾h[ɰçLoɯ	 	
 02(8/)	
 (%7%	 	 	 	 ,17)+)5	
 10,1 10%;	
 
	
 	
 	
 5)%/	
 7,1,7,%/ %0%75,;
)1(	 02(8/)	
 (%7%	  	 m}KlƘPv[ɰ÷ɧm 02(8/) Ǝhɯ02(8/) mũlƂŉYaƎŅăɭVmçhn (%7%ɮ@¸ºÃ¾ĥAiJJv[ɰƚũm )1(	 02(8/)Ǝlz¸ºÃ¾ĥƂŉYv[ɰ®¾ÃÁ{ɖƌĊ¯À¼¶iǚkɯ¸ºÃ¾n¯À¼¶lȥȻYabThnĆǔ[ViOhPv] ɰĆǔ[¾ÃÁm÷ɧlɯ86) Ǝædg¸ºÃ¾ĥƂŉYɯ_mĆǔŌȣ[ŭȞOIv[ɰ86) ƎnÛÆm}KkťŠh[ɰ	 86)	
 ¸ºÃ¾ĥ	 86) Ǝn ,03/,',7 Ǝ}zĉlƘNkTokv]ɰ¸ºÃ¾mæǔçÛÆlǦYv[ɰ	 	
 02(8/)	
 +/2&%/	
 	 	 	 5)%/	
 ;%;,6 <%;,6	
 )1(	 02(8/)	
 +/2&%/	 	
 352+5%0	
 67)67	
 
	
 	
 	
 86)	
 +/2&%/	 	 	 	 ,03/,',7	 121)	 	 	 	 ;%;,6	
 	
  	
 
	
 	
 	
 <%;,6	
 	
 
	
 
	
 	
 	
 '%//	
 68&5	 	 	 	
 35,17	  ;%;,6 <%;,6	
 )1(	
 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5	
 
	
 	
 	
 86)	
 +/2&%/	 	 	 	 ,03/,',7	 121)	 	 	 	
 35,17	  	 ;%;,6 <%;,6	
 
	
 	
 	
 <%;,6	
 	
  	
 
)1(	
 68&5287,1)	
 68&5	 ¸ºÃ¾mËhŌȣXaĽƌ{ɍănɯ·Á¯À¼¶{®¾ÃÁinǎǰYgņĳ
Ya¢ÃɦķlIɯ86) ƎhĆǔŌȣ[oɯjm¾ÃÁN~hzĘǈ[ViOhPv[ɰVm¯À¼¶m·¸½·ÃıǦ[oɯıɷm}Klkv[ɰ	 ¸ºÃ¾nɯĥĉOǚkoɯÄem¯À¼¶lȝƌåŹ[VizğȐhIɯÄem¾ÃÁOȝƌm¸ºÃ¾Ćǔ[VizğȐh[ɰabYɯ¸ºÃ¾n 86) ƎhĆǔ
Ōȣ[}ĉhɭ¯À¼¶mÅƑhɮŉȌXgJŭȞOIv[ɰVmayɯɀŚnVmçm}Klùgm¾ÃÁ}ĉlȥȻYgMPv[ɰ	 	 ¸ºÃ¾{ 86) Ǝn 2575%1 N~ƅǔXaƵȶǝƐYJÖƪh[ɰ2575%1 Ûĉhn '20021 ƎhÀ
Ã©¾ĽƌŋǐYgJvYaɰYNYɯ'20021 ƎlnÇêkǆOĿJmhƞǬhnǢǘYv[ɰ	 — 40 —

SENAC Vol. 45, No. 4（2012.10）

module global
データ領域
xaxis

5.0

yaxis

25.0

メインプログラムプログラム領域参照参
照program stest5
use global
implicit none
xaxis = 5.0
yaxis = 100.0
call subr
print *,xaxis,yaxis
end program stest5

サブルーチンプログラム領域
subroutine subruse global
implicit none
print *,xaxis,yaxis
yaxis = 25.0
end subroutine subr	 ıɷɰ¸ºÃ¾hŌȣXgJÀÃ©¾ĽƌmĘǈ	 ¸ºÃ¾hŌȣXgJĽƌnɯ86) ƎƘRbThĆǔhPiJKĆêŰOIv[
Oɯ¾ÃÁýhƓǦǝlŌȣXgJkJmhɯÇǔųlædgYvKğȐŰOIv[ɰ_VhɯƯm}Kk 21/< Ğædgɯ¾ÃÁýhŭȞkĽƌbTƓǦ[ViOhPv[ɰ	
 	
 
86)	
 ¸ºÃ¾ĥ 	
 21/<	 	 ĽƌɱɯĽƌɲɯ	 çLoɯĉmçhɯ	 86)	
 +/2&%/ 	 21/<	 	
 <%;6,6	
 m}KlƘRiɯ<%;6,6 ÛľmĽƌɭ;%;6,6ɮnɯVm¾ÃÁhnŌȣXgJkJmiĤǵh[ɰŌȣXgJkJĽƌnɯÀÃ¾ĽƌiYgąȿŌȣ[VizğȐh[ɰ	 ÀÃ©¾ĽƌnɯĿǔ[i¾ÃÁmǎǰŰOŁgYvJv[ɰĸƞǝlnÀÃ¾
Ľƌh¯À¼¶åɯ¾ÃÁɕhûǔ[ŭȞOIĽƌmwɯÀÃ©¾lYgRbX
JɰvaɯÀÃ©¾ĽƌnŞJǹİhņĳ[ğȐŰOImhɯhPbTųĨmIɑymĥĉØTv[ɰVnɯĉĮĀgPa@ŀķǝlƛďkĽƌĥmØTƑAh[ɰ	 	  7H5PT"xr7H5MT	 	
  7H5PTL"c^	
 VvhzapapǜĺYvYaOɯzdizĕǽkĀčĪÚnɯ35,17 Ǝh[ɰ	 35,17	 ɯ¢Ãɱɯ¢Ãɲ	 	
 35,17 ƎhĀč[iɯǗɢɭƱǥlnƫǄĀčɮl¢ÃOȚǦXv[ɰ nĀčťŠƂŉ[aymzmh[OɯiIL\@AƘJgMToɯ¢ÃmƌòĵlŮZaƫǄťŠ
hĀčYv[ɰçLoɯ	 35,17	 ɯ; 	 <, 	 ; 	 %&'	
 	
  	
  	
 
m}Klɯ¢ÃmáȋlnɯĽƌ{ɍăÈLgzȓJYɯȤǷŠ{ŉƌÈLVizğȐ
h[ɰvaɯƎŅăɈŤløgɯ¢ÃmųĨȚǦ[VizhPv[ɰ	 ǗɢhnkRɯ­¾lĀč[iPn :5,7) ƎǔJv[ɰ35,17 ƎimɇJnɯĀč÷Ƃŉ[ƍƌò  iĀčťŠƂŉm  NdVhȥȻ[Vih[ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力:5,7) 	 ¢Ãɱɯ¢Ãɲ	 — 41 ——	  țȋǙġiJJv[ɰțȋǙġnɯĀč­¾Ȯą[ƌŅhɯÞųlɉqViOhPv[ɰabYɯĖĈiYg  D lYgÆXJɰVnɯ2575%1 Áª¼mÖƪl}dgɯÄƤmƌònÏǼXgJğȐŰOIN~h[ɰçLoɯ  l[o 35,17 ƎiĤZųĨ
lkdgɯǗɢlȚǦXv[ɰ lnɯĽƌ{ɯƍƌòlkȤǷŠÈLVizhPmhɯƟÝlŮZgĀč÷ĽƗ[VizğȐh[ɰ	  lɈŤkƍƌÈLg :5,7) Ǝŋș[iɯ@*257  AiJKĥm­¾lĀčXv[ɰçLoɯ	 :5,7)

	 ; < =	 iƘToɯ; < = mòO@*257  AiJKĥĉm­¾lĀčXv[ɰ35,17 ƎiĤZRɯ l@AÈLoɯƫǄťŠhĀčYv[ɰ	 	  {Q"PT~  [PT	 ĀčƎlMJgɯ¢ÃmáȋlɍăĥƘToɯùȞǾOÊ hĀčXv[ɰçLoɯ	 5)%/	
 %	
 
(2	
 ,	
 	
  	
 	
 
	
 	
 	
 %,	 	 ,	 )1((2	
 35,17	
  %	
 iJK¯À¼¶ŋș[iɯ	
 
	
 	
 	
 	
 	
 

	
 	
 

	
 	
 

	
 	
 

	
 

m}KlɯɍăȞǾO÷ɧN~ɥlÊ hĀčXv[ɰVmiPɯɍăȞǾOĿJiɈŤlƋșøgĀčXv[ɰ}dgɯVmƑƻnɍăȞǾOŒkJiPÛľnIvMđyhPv] ɰçLoɯɲƯöɍăɯ	 5)%/	
 % 	
 
(2	
 -	
 	
  	
 	
 
	
 	
 	
 (2	
 ,	
 	
  	
 	
 
	
 	
 	
 	
 	
 	
 %, -	
 	
 ,-	
 
	
 	
 	
 )1((2	 )1((2	
 35,17	  %	 m}KlĀč[iɯ%  %  %  % % 	 iJKÊph  ðmȞǾOĀč
Xv[ɰ_VhɯƯm}Kl (2 ƎhĀč[ƑOJJhY|Kɰ	
 
(2	
 -	
 	
  	
 	
 
	
 	
 	
 (2	
 ,	
 	
  	
 	
 
	
 	
 	
 	
 	
 	
 35,17	  %, -	
 
	
 	
 	
 )1((2	 )1((2	
 YNYɯ35,17 Ǝ{ :5,7) ƎnɯɱƎWilƋș[mhɯȝƌm 35,17 ƎædgɯƬlȇTgƘRVinhPv] ɰ}dgɯVmçmĀčhnùɋh  șŭȞh[ɰșƌǁ~[aylɯ șlșăm  șĀč[lnɯƯm}KlƘNkTokv] ɰ	
 
(2	
 ,	
 	
  	
 	
 
	
 	
 	
 35,17	  %,  %,  %, 	
 )1((2	 	
 @*257AmɋānÁª¼léņYv[OɯĿRn *257 m}Kh[ɰvaɯÁª¼l}dgnǒĻĽƌ
hƂǦ[Vil}ɯŭȞkțȋǙġlÞųmĥĉm­¾ČŤgVizğȐh[ɰ	 — 42 —

SENAC Vol. 45, No. 4（2012.10）

YNYɯVmçm}KlămƌONdgJiPnȓJmh[OɯăƌOĿJiP{ĽƌhƂŉYaJiPlnÇêh[ɰ_Vh (2 ĵĀčOǔųXgJv[ɰ(2 ĵĀčinɯ	
 
	
 	
 	
 	
 	
 ¢Ãɱ ¢ÃɲƍƌĵĽƌĄƜò ȁÎò	 m}KkɯNdVhİ bťŠh[ɰV¢ÃmáȋlȥȻ[oɯ(2 Ǝm}KlɯƍƌĵĽƌOĄƜòN~ȁÎòvhɱfeļLgJPɯ_mĽƌhƂŉX¢ÃOɥlĀčXv[ɰ(2 ĵĀčȝƌÊsaɯɀŚm¢ÃiÊsgƘRVizhPv[ɰçLoɯ	 35,17	
  %, - - 	 nɯXPtjm@35,17	
  %,  %,  %, AiƘRViiĤǵh[ɰvaɯ	
 35,17	  ; %, &, , 	
 nɯ@35,17	
  ; % & % & % &AiƘRViiĤǵh[ɰ	 (2 ĵĀčnĿɎl[VizhPv[ɰçLoɯ	 35,17	  %, - -  , 	 nɯ
@35,17	  %  %  %  %  %  %  %  %  % AiƘRVi
iĤǵh[ɰVmçm}KlɯĿɎmiPlnýômȊȺYĽƌO÷lɃwv[ɰ	 kMɯ(2 ĵĀčmƍƌĵĽƌnɯ(2 ƎmÁĽƌlǡŤYv[ɰVmayɯ(2 ĵĀčmødgJĀčƎ (2 ®À mËløiPlnɯÁĽƌOɎȝYkJ}KlYkT
okv] ɰ	 	    !'(PTb`"c^	 ƫǄĀčťŠɭ@AƂŉɮhŋƌǗɢlĀč[iɯƛďƌŅ  ƤmƌŅædgȚǦXv[ɰVmayɯIvĿRm¢ÃƬlÊsViOhPkJYɯȄƣȟbTk~ɯ_tjmƛďƌŅnŭȞIv] ɰvaɯƫǄťŠmĀčln  șmĀčƎŅƌlćəOI
ayɯĀčƌOćəȱLiȑĐǝlƋșXgYvJv[ɰVmayɯĤZĀčȊȺ[iɯșWilőƌǆmáȋOɇKVizIɯŀɏlĀč[mlnĦPv] ɰ	
 V~mĬɨnɯĀčťŠɭ*250%7ɮƂŉ[VihȢƹhPv[ɰVvh@AƘJg
Ja  máȋl *250%7 Ƃŉ[oɯőƌǆÛÆmƤƌőXRYaɯŭȞlŮZgƌŅ
iƌŅmɕl±ÃǮTaɯƋșøa[ViOhPv[ɰvaɯȑĐƋșX
ViOkJmhɯśŞRĀč[VizğȐh[ɰ	 *250%7 mƂŉƑƻnɲɀIv[ɰv\ɯ*250%7 Ǝl}Ƃŉh[ɰÄçǦYv[ɰ	
 

	
 	
 

5)%/	
 ; <	
 
,17)+)5	
 1	
 
;	
 	
  	
 
<	
 	
 
	
 
1	
 	
  	
 
35,17	 
; < 1	 	
 *250%7	
 	
 ;	
 	
  *

 	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 ƚũmƎO *250%7 Ǝh[ɰ*250%7 Ǝnɯ®¾ÃÁmšƌm}KlɯĀčťŠmƂŉ½
£lYgNdVhİwɯ÷ɧlƎǙġØTv[ɰVmƎǙġ 35,17 Ǝ{ :5,7) Ǝm lƂŉ[oɯ_m *250%7 lYaOdgĀč¢ÃOƍťXv[ɰVmçhnɯ O Ƃŉh[ɰƎǙġnɎȝhPkJmhɯ¾ÃÁýhn *250%7 WilǚkƌŅeTkTokv] ɰ	 ȝƌm 35,17 Ǝ{ :5,7) ƎOĤZ *250%7 ƎƂŉ[mnğȐh[ɰçLoɯƯm}Klûǔ
[ViOhPv[ɰ	 	 ƎǙġmØTƑlƹvda¾Ã¾nIv] Oɯ
@*250%7 ǔhIAiJKųĨjVNløgMJaƑO
ȓJhY|KɰVmçh  ædgJmnɯ@AOƕmĀčțȋǙġbdaVmȍŶh[ɰ	 	 Fortran スマートプログラミング —

	
 	
 

第２回

サブルーチンと入出力—— 43 —5)%/	
 ; < 8 9	 ,17)+)5	
 1 .	
 
	
 
	
 
35,17	 
; < 1	 :5,7)  	 8 9 .	
 	
 *250%7	
 	
 ;	
 	
  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 *250%7 Ƃŉ[zKÄemƑƻnɯƎŅăædg  máȋlǠƆ *250%7 mýōȥȻ[Vih[ɰçLoɯÅȥm *250%7  35,17 Ǝ{ :5,7) ƎlĶyȸ hɯ	 	
 35,17	
 	
 ;	
 	
  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  ,  ; < 1	 :5,<) 	 ;	 	  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 8 9 .	
 m}KlƘRViOhPv[ɰVmiPɯ
@*250%7AmƎŅnÇȞh[OɯÉǲmNdVnŭȞh
[ɰkMɯ2575%1 hmƎŅănGHhİxmOĸƞh[OɯGHzæLmhɯ*250%7 ýɋlGHOødgJiPlnGHhİwv[ɰ	
 *250%7 ĀčƎËlƘPȸxƑƻnɯƎǙġŭȞiYkJǆnȓJmh[OɯĀčƎOɑRkYɯĤZ *250%7 ãşzæKiPlnÇêh[ɰ_VhɯƎŅăĽƌĆǔYgƘRƑƻO
Iv[ɰƎŅăĽƌmĆǔleJgnƯĮȬƓYv[ɰ	 ĀčťŠmƂŉƑƻÅȥm *250%7 çlYgȬƓYvY|Kɰv\ɯ*250%7 ËmƎŅăn
_mvvĀčXmhɯŭȞlŮZgɈŊƃøYv[ɰVmçhnɯ	
 	
 ;	
 	
 { 	
 	
 	
 <	
 	
 nɯ
±Ãzħyg_mvvĀčXv[ɰ	 ƯlɯĀčƎËm¢ÃòmÊplŏYɯ_`mĀčťŠƂŉ[@ȈɞȥȻńAɉhɯĉN~ɥlȥȻYv[ɰVmçhnɯ* ɯ)6 ɯ, ɯOȈɞȥȻńhɯ35,17 ƎmÊplŏYɯ	 	 	 35,17	
  	
 	
 	
 	
 	
 	
 	
 ;	
 	
 	
 	
 	
 	
 	
 	
  	
 	
 	
 	
 	
 	
 	
 <	
 	
 	
 	
 	
 	
 	
  	
 	
 	
 	
 	
 	
 	
 1	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 C	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 C	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 C	
 
	
 *250%7	
 	
 ;	
 	
  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 iJKŏŮhĀčťŠƂŉYgJv[ɰƎŅăiɯȈɞȥȻńhƂŉYa¢Ãònɯ_mÊpɥlĀčXv[ɰ}dgɯVm 35,17 ƎŋșYaiPmĀčnÛÆm}Klkv[ɰ	
 
;	
 	
 	
 	
 	
  

	
 	
 	
 <	
 	
 	
 

)

	
 	
 	
 1	
 	
 	
 	
 	
 	
 	
 	
 	
 

	
 

ĀčťŠƂŉ[ȈɞȥȻńmÌȞkzmȚɳlǦYv[ɰ¢ÃmƌòĵlŮZaȈɞȥȻńæǔYkJiƱYJòOĀčXkJmhƼųYgÆXJɰkMɯVmȚhƏâƎŅ
ɭw m d rɮnƍŉƌhƂŉYv[ɰ	 ȚɳɰÌȞkȈɞȥȻń	 ȈɞȥȻń	
 

ƌòĵ	
  	
  	
  ȈɞmųĨ	
 

w	
 

ƍƌ	
 

w m	
 

ƍƌ	
 

w d	
 

ŋƌ	
 

w d	
 

ŋƌ	
 

w d	
 

ŋƌ	
 

ś w hƍƌĀč[	 ś w hƍƌĀč[	 ĀčƍƌmƤO m }őXJiPlnɯ÷ɧl ȜKwDm	 ś w hŋƌĲŉőƌǆťŠhĀč[	 d nőƌǆÛÆmƤƌwDd	 ś w hŋƌƾĐőƌǆťŠhĀč[	 d nőƌǆÛÆmƤƌwDd	 ÜƌɋmɱƤǟn lk	 
ś w hŋƌĀč[	 ƂƌɋmŀPXlŮZg  Ȉɞi  ȈɞĂƙL	 	 — 44 —

SENAC Vol. 45, No. 4（2012.10）

ȚɳɭȇPɮɰÌȞkȈɞȥȻń	 ȈɞȥȻń	
 

ƌòĵ	
  	
  	
  ȈɞmųĨ	 !w d	 ŋƌ	 

 w d	 ŋƌ	 

ś w hŋƌƾĐőƌǆťŠhĀč[	 ÛľmƌòĀč[iɯÜƌɋmɱƤǟn  N~  lk	 
ś w hŋƌƾĐőƌǆťŠhĀč[	 ÛľmƌòĀč[iɯÜƌɋmȅŏòn  ÛÅ Ɲǃlkɯ
Ƃƌɋn  hČĂƌlk	
 

	
 

ƎŅă	
  ƎŅă_ȑȵmɑXmśhĀč[	
 

w	
 

ƎŅă	
  ś w hƎŅăĀč[	
 

	
 

kY	
 

Ƌș[	
 

r"	
 
kY	
  r ð±Ãƃø[	 	 ƚũmÑeɭƋși±ÃmƃøɮnɯĀčĐåȥȻ[zmkmhɯƎŅăiĤƪlɯĀčƎËm¢ÃimŏŮnIv] ɰvaɯVVhnȈɞƂŉmƎŅɭ { ! kjɮƂŉƌ
ɭw kjɮiēą[aylŀƎŅhƘPvYaOɯőƎŅhzĤZųĨh[ɰçLoɯ, nƍƌĵòś  ƎŅhĀč[ViųĨYɯ*  nŋƌĵòś  ƎŅɯőƌǆÛÆ  ƤhĀč[ViųĨYgJv[ɰVmayɯ	
 
5)%/	
 ; <	
 
,17)+)5	
 0 1	
 
;	
 	
  	
 
<	
 	
 
	
 
0	
 	
  	
 
1	
 	
  	
 
35,17	
 *  *

 , ,

 ; < 0 1	
 iJK¯À¼¶mĀčnɯ	
 
	
 	
 	
 	
  



	
 	
 	
 





	
 	
 	
 	
 	
 	
 	
  	
 	
 	
 	
 	
 






 	
 
	
 

ikv[ɰɲșǟmǟǞnáȋǥȪ[aylƘJazmh[Oɯ ƎŅmËlɯĠŎhĀčXgJmONv[ɰkMɯĀčƎŅƌOƂŉmś w ȲLiɯ
GHm}KlGHO w ðĀčXv[ɰ	 	  ȈɞædgŋƌƾĐőƌǆťŠhĀč[iɯőƌǆmĉO lkv[ɰçLoɯ	
 
5)%/	
 ; <	
 
;	
 	
  	
 
<	
 	
  ) 	 35,17	 )  )  ; <	 mĀčȄƣnɯ	
 
	
 	
 	
 



) 	
 	
 	
 	
 



)	
 

ikv[ɰVhnŴȡǝlNlRJYɯȚǦŅƌO  ðǇɪlkmhɯ! Ȉɞ{ ȈɞæKƑOȓJhY|KɰçLoɯ	
 
5)%/	
 ;	
 
;	
 	
  ) 	 35,17	 )6  )1  ; ;	 mĀčȄƣnɯ	
 
	
 	
 	
  
ikv[ɰ	
 

) 	
 	
 	
  

) 	
 

Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 45 —

ĢȈɞȥȻńiĀčmƌònɱŏɱŏŮlYkTok~kJmhɯɍăĀč[iPlnĀčȞǾƌbTȈɞȥȻńƘNkTokv] ɰVmiPɯĤZȈɞȥȻńȊȺ[k~oɯȈɞȥȻńmĉlƍƌ r ØĎYgɯr ĮĚŬ[iJKƂŉOhPv[ɰçLoɯ@* An@*  *  * AiƘRViiĤǵh[ɰ	 X~lɯŋƌɯƍƌɯŋƌɯƍƌm}KkȊȺYmiPlnɯNdVhRRdgĚŬƂŉ[ViOhPv[ɰçLoɯƯm}KlƘRViOhPv[ɰ	
 
5)%/	
 ; <	
 
,17)+)5	
 0 1	
 
;	
 	
  	
 
<	
 	
 
	
 
0	
 	
 	
 
1	
 	
  	
 
35,17	 * ; ,  ; 0 < 1	
 Vm 35,17 Ǝm *250%7 nɯ@*  ; , *  ; , AiƘRViiĤǵh[ɰ	 kMɯ*250%7 ËmȈɞȥȻńmƌ}zĀčƎm¢ÃòmƑOĿJĺģlnɯȈɞȥȻńmƌbTĀčYaũhƋșYɯĤZ *250%7 þşædgƲm¢ÃòĀčYv[ɰƎŅăOø
dgJoɯƎŅăzþşĀčXv[ɰ	 Ⱦlɯ*250%7 ËmȈɞȥȻńmƌ}zĀčƎm¢ÃòmƑOŒkJĺģlnɯƂŉYa¢ÃòĀčYaƳɛhȁÎYɯIvdaȈɞȥȻńnǇȠXv[ɰǇȠXaȥȻńÛɘnƎŅăǵOødgJgzùgǇȠXv[ɰɍăĀč[iPkjnɯĚŬƂŉlŀPymƌòÈLgMRViOhPv[ɰ	 	  i`   f	
 :5,7) ƎnɯƯm}Kl  ǢǘYgɯțȋǙġmwmƂŉhĀč[ViOhPv[ɰV@ƘŠkY :5,7) ƎAiJJv[ɰ	 :5,7) 	 ¢Ãɱɯ¢Ãɲ	 	 ƘŠkY :5,7) ƎhĀč[iɯ¢ÃťŠO@©¥½ťŠAlkv[ɰVlŏYɯV
vhȬƓYa  mIĀčƎhĀčYaiPm¢ÃťŠn@¡£ťŠAh[ɰöƠɯȤǷƮýɋmƌòn  Ƀƌ¢ÃhIɯ@ AiNɯ@) AiNmƎŅhnIv] ɰVmayɯǗɢlȚǦ[iPln@ ɃƌB ɃƌƎŅȚǐAiJK¢ÃĽƉșdgȚǦ
YgJv[ɰVmȚǦťŠO¡£ťŠh[ɰ	 YNYɯ ɃB ɃĽƉlnƖɕONNÅlɯƎŅlĽƉ[Vih¢ÃɏOļLv[ɰVnɯƎŅ¢ÃO  ƎŅIa &<7) ŭȞbN~h[ɰçLoɯŋƌƛďƌŅ  ƤhƎŅȚǦ[ln &<7) ÛÅŭȞh[ɰYNYɯñǻşŋƌm  ɃƌȚǐn &<7) h[N~ɯ_mv
vhíņ[o  ƎŅāhǀwv[ɰVmýɋm  Ƀƌ¢ÃO©¥½ťŠh[ɰŀɏm¢Ã¢líņ[iPlnɯ©¥½ťŠl}íņOƛďh[ɰ	 abYɯ2575%1 mƘŠkY :5,7) ƎædgĀčYa©¥½ťŠ­¾nɯ   ǸhȬƓ[ƘŠkY 5)%( ƎhȭvkTok~kJmhɯIRvhz 2575%1 ¯À¼¶N~øčYgĆǔ[mOĸƞh[ɰ×mȣȫhåŹYa¯À¼¶hæKĺģ{ɯ¢ÃȢƢ­£ædgȢƢ[aym­¾åŹ[iPnɯ¡£ťŠhĀčYaƑOȓJiůJv[ɰ	 	  7H5"MTgk	 ¯À¼¶OŋșYgJiPɯ_m¯À¼¶ËmƂŉYaĽƌlľɋN~¢ÃÙø[Vi@øč[AiJJv[ɰȤǷƟÝȦŉ[aymĽƌl¢ÃøčhP}Kl
YgMToɯ¯À¼¶mŋșɔŃYgN~ƟÝȦŉYgɯ_lŮZaȤǷX]Vi
OhPv[ɰVl}ɯ¯À¼¶n_mĐåbTĆǔ[@®¼ ² AlkɯÁª¾Ya¯À¼¶@¯½Ã»ÁAiYg×mÓlƈè[VizğȐh[ɰ	 	 — 46 —

SENAC Vol. 45, No. 4（2012.10）

	
  MTf"Iu[	 ¢Ãøčln 5)%( ƎǔJv[ɰ	 5)%( 	 ĽƌɱɯĽƌɲ	 	  nțȋǙġhɯ lɈŤkƍƌÈLi@*257  AiJKĥm­¾N~øčYv[ɰțȋǙġlɖ[ƟÝ{ƼųÐɤnĀčmĺģiĤZhɯĖĈiYg  D lYgÆXJɰĀč­¾iɇKmn *257  iJKĥm­¾OņĳYgJkTo¼ÃlkmhɯI~NZyǔųYgMNkTok~kJVih[ɰkMɯ@Amáȋlnɯ:5,7) Ǝm}Kl *250%7l}ƘŠƂŉOhPv[OɯIvæKViOkJmhȬƓnǢǘYv[ɰ	 çLoɯ*257  iJKĥĉm­¾lɯ	
 
 	
 	
 	
 	
  	
 	
 	
 	
 	
 
iƘJgíņYgMPɯ¯À¼¶Ëlɯ	 5)%(

	 ; < =	 iƘToɯVm 5)%( Ǝŋșũɯ; ɯ< ɯ= ikdgŋșOȆȇYv[ɰøč­¾
lƋșOødgJgzɯ5)%( ƎmĽƌøčOňÎ[vhȭwȸwȇTmhɯ*257  møčƌònƯm}KlɳșlāTgƘRVizhPv[ɰ	
 
 	
 
 	
 
	
 
5)%( ƎŋșƖlɯ­¾OņĳYkNdaɯ¢ÃOȳ~kJĺģlnɯ¼Ãlkdg¯À¼¶OţćȁÎYv[ɰȾlɯ­¾ËmƌòOĿJĺģlnɯIvdaƌònǇȠX
v[ɰ	 5)%( ƎmĽƌmáȋlnɯɍăĥ{ɯ(2 ĵĀčiĤĵm (2 ĵøčƘRVizhPv[ɰV~nɯĀčiøčiJKƑĦOǚkv[OɯøčȞǾƌ{ȊȺYmųĨnĤZh[ɰ	 ­¾hnkRɯÃ²Ã¤ɭƱǥlnƫǄøčɮædgøčYaJiPlnɯÛÆm}KlƘPv[ɰ	 5)%(	 ɯĽƌɱɯĽƌɲ	 	 VmƎŋș[iɯ¯À¼¶mŋșOÄƖóưYɯÃ²Ã¤N~mƌòøčŨeǍŵlkv[ɰ_VhɯɈĂkƌòÃ²Ã¤N~øč[iɯ_mƌòŻŉmĽƌlÙøY
aũɯŋșOþɔYv[ɰVmayɯ5)%( ƎmµÁȎŷYgƌòøčYkToɯJevhadgzóưYavvh[ɰ	 5)%( ƎhzțȋǙġmwƂŉ[ViOhPv[ɰV@ƘŠkY 5)%( ƎAiJJv[ɰ	 5)%( 	 ĽƌɱɯĽƌɲ	 	 ƘŠkY 5)%( Ǝhøč[ĺģnɯøč¢ÃO@©¥½ťŠAbiÜŉXmhɯƘŠ
kY :5,7) Ǝhåda­¾æKŭȞOIv[ɰvaɯĀčYaiPmƌòiĤZƌòĵ
mĽƌĤZɥǙhÊsŭȞOIv[ɰçLoɯ	
 
5)%/	
 ; <	
 
,17)+)5	
 1	
 
;	
 	
  	
 
<	
 	
 
	
 
1	
 	
  	
 
:5,7) 	
 ; 1 <	 	 Āč­¾iĤƪɯ*257 mɋānÁª¼léņYv[ɰǒĻĽƌh­¾ĥOĽƗhPÁª¼
zIv[ɰckwlɯƫǄĀčmțȋǙġn  hYaOɯƫǄøčmțȋǙġn  h[ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 47 —iJK¯À¼¶håŹXa *257  iJK­¾N~øč[lnɯ	
 
5)%/	
 ; <	
 
,17)+)5	
 1	
 5)%( 	
 ; 1 <	 m}KlƘNkTokv]

ɰVmĺģɯ; z 1 zĤZ  bN~iůdgɯ	 5)%( 	
 1 ; <	 iøč[iɯ1 i ; lnɯƱYJòOÙøXv] ɰ	 ƘŠkY :5,7) ƎɱșhƘPȸva¢Ãƌ}zøč¢ÃOŒkJmnĬɨIv] ɰ
VmiPøčYkNda¢ÃnȭwɩoYaVilǡŤYv[ɰȾlȣLoɯɲĮm 5)%( ƎædgāTgøč[VinhPv] ɰçLoɯÅȥm¢Ãɯ	 5)%( 	 ; 1	
 5)%( 	 <	 m}Klɲșm 5)%( ƎlāTgøčY}KiYaĺģɯ; i 1 lnƱŚkòOÙøXv[Oɯɲșǟm 5)%( ƎŋșƖlɯøč¢ÃOkJiJK¼ÃhţćȁÎYv[ɰ	 	
  MTh"-CHOn	 ­¾N~¢Ãøč[iPɯȞƷYa­¾OņĳYkNdaɯƘPȸva¢Ãƌ}ĿRm¢ÃøčY}Ki[oɯŋșƖ¼Ãlkdgɯ¯À¼¶nţćȁÎ
Yv[ɰVɗSayɯ5)%( ƎËl¼ÃÿǑƂŉøViOhPv[ɰ	 5)%(  )55 	 ĽƌɱɯĽƌɲ	
 

	
 	
 	
 	
 ¡£ťŠøč	 5)%( )55 	 ĽƌɱɯĽƌɲ	
 

	
 	
 	
 	
 	
 	
 ©¥½ťŠøč	 VVhɯ  lnƎǙġÈLv[ɰVm 5)%( ƎŋșYaiPɯøč¼ÃOȰVi  hƂŉYaƎǙġmșr¹Á¯Yv[ɰçLoɯ	
 
(2	
 .	
 	
  	
  	
 
	
 	
 5)%(  )55	
 ; < =	
 
	
 	
 
	
 
)1((2	
 
	
 	
 	
 	
 	
 ;	
 	
  	
 
iƘToɯ¼ÃOȰViƎǙġ  mșl¹Á¯Ygɯ_mșN~ÿǑȆȇYv[ɰ	 zY@­¾mȁÎAɯ[kcɯ¢Ãøč[iPlɯ_ÛÅødgJkNdaɯiJKĺģƥǣ[bTk~ɯ)55  mÙl )1(  iƘRVizhPv[ɰ¢ÃmĀčĮƌOÇƓmiPlnɯ)55 N )1( ƂŉøgMPɯ¢ÃȁÎƖǆhƯmÿǑlɃx}Kk¯À¼¶lYgMRiȓJhY|Kɰ	 	  	    )oMT	 êĆk¡£ťŠøčiYgɯ1%0)/,67 ǔJƑƻOIv[ɰçLoɯ	 5)%(

	 ; < 1	 iJKøčƎhnɯøč­¾ *257  ɯ	
 


	
 	
 	
  ) 	
 	
 	
  	
 

m}KlåŹYv[OɯåŹ[aylnøčĽƌmŏŮŚlŸLgMNkTokv] ɰŭȞk¢ÃùɋƘPȸvkTok~kJYɯɥǙɕɇLVizhPv] ɰ	 VlŏYɯ1%0)/,67 øčƎhnɯøč¢Ã@Ľƌɺ¢ÃAiJKÙøťhȥȻ[mhɯjmĽƌlÙø[Nøč­¾mËhƓǦ[ViOhPv[ɰ	 1%0)/,67 øčƎæKiPnɯv\øč[ğȐŰmIĽƌ{ɍăĥ 1%0)/,67 ƎhǜɐYv[ɰ1%0)/,67 ƎnƯm}KkťŠh[ɰ	 — 48 —

SENAC Vol. 45, No. 4（2012.10）1%0)/,67	  §Ã¶½£ĥ 	 ĽƌɱɯĽƌɲ	 	 1%0)/,67 ƎnɡŋșƎkmhɯùgmŋșƎ}ĉlƘNkTokv]
ɍăĥmǜɐbTkmhɯĵŌȣnąȿŭȞh[ɰçLoɯ	 ɰvaɯĽƌ{5)%/	
 ; < % 	 ,17)+)5	 1	
 1%0)/,67	
  237,21 	
 ; < 1 %	
 iƘPv[ɰÀÃ¾ĽƌbThnkRɯ86) ƎhƂŉXaÀÃ©¾ĽƌzǜɐğȐh[ɰ	 Vm 1%0)/,67 lǜɐXaĽƌlŏYɯøčƎnɯ	 5)%( §Ã¶½£ĥ	 bTh[ɰĽƌmƂŉnŭȞIv]

ɰŭȞk~oɯƎǙġ   ædgɯ	 5)%( §Ã¶½£ĥ )55 	 m}Klɯ)55  { )1(  ȼĎ[Vihɯ¼ÃǛǓ{ȁÎƖmÿǑ[VizğȐh[ɰ	 1%0)/,67 øčlŏ[øč­¾nƯmťŠhǔųYv[ɰĽƌmɥǙnÞųh[ɰ	 §Ã¶½£ĥ	 	 	 Ľƌɱɺ¢Ãɱ 	 Ľƌɲɺ¢Ãɲ 	
 
	
 

	
 

@§Ã¶½£ĥAN~@ AvhO 1%0)/,67 øčƎɱĮhøčX¢Ãh[ɰçLoÅç
m}Kl§Ã¶½£ĥO 237,21 miPlnɯ	 237,21	
 
	
 	
 ;
	
 < )
	 	
 1 	
 m}Kl­¾lƘJgMPv[ɰƯm}KlɱșfeƘRVizhPv[ɰ	 237,21	 	 	 ; 	 	 	
 < ) 	 	 	 1 	 	
 1%0)/,67 øčlnzKÄeĆǆOIv[ɰ_nɯŭ\YzǜɐXaĽƌùɋøč­
¾lȥȻ[ŭȞOkJVih[ɰȥȻYkNdaĽƌlnɯ1%0)/,67 øčƎmŋșĉvhl
ÙøXgJaòO_mvvƲv[ɰVmayɯI~NZyùgmǜɐĽƌl¢­¾£òÙøYgMToɯĽƗYaJĽƌbTøč­¾lȥȻ[ViOhPv[ɰçLoɯ	 5)%/	
 ; < % 	 ,17)+)5	
 1 ,	
 1%0)/,67	
  237,21 	
 ; < 1 %	
 
;	
 	
 
	
 
<	
 	
 
) 	
 
1	
 	
  	
 
(2	
 ,	
 	
  	
  	
 
	
 	
 	
 %,	 	 ,	 )1((2	 5)%( 237,21	 m}Kl¯À¼¶ƘJaiYv[ɰøč­¾iYg *257  iJKĥm­¾lɯ	 237,21	
 	
 ;
iƘPȸ

	
 %

	  	 hMToɯ5)%( Ǝŋșũɯ; nĽƗXv[Oɯ< { 1 n_mvvh[ɰɍă % mĺFortran スマートプログラミング —第２回

サブルーチンと入出力—— 49 —

ģlnɯÙøXaȞǾ %mwOĽƗXv[ɰ	 kMɯ1%0)/,67 lǜɐXaĽƌmýōnɯƯm 1%0)/,67 ĀčƎhĀč[VizhPv[ɰ	 :5,7) §Ã¶½£ĥ	 VmĺģɯùǜɐĽƌO@Ľƌɺ¢ÃòAiJKťhĀčXv[ɰzdizɯ1%0)/,67 ĀčƎŋș[iɯǜɐXaùĽƌm¢ÃOƫǄťŠhĀčXmhɯĽƌOĿJiǉɟh[ɰěIL\òǥȪYaJiPÛľnɯIvækJƑOȓJiůJv[ɰ	 	  ;*,D".H=G/FH4	 :5,7) Ǝ{ 5)%( Ǝædg­¾N~øĀč[ĺģɯãzƂŉOkToɯțȋǙġ  	 ØĎYa@*257  AiJKĥm­¾æǔYv[ɰVlŏYɯÞųm­¾æJ
aJiPlnɯ23)1 ƎædgøĀčƎmŋșĉl­¾ĥƂŉYgMPv[ɰV@­
¾Ã¯Á[AiJJv[ɰ23)1 ƎnÛÆmťŠh[ɰ	 23)1 *,/)	 # *250 $# 67%786

 $# )55 $	 #	
 $mɋānǢǘğȐh[ɰ_`mȥȻɭćūƂŉńɮmųĨȚɴlǦYv[ɰ	 Țɴɰ23)1 ƎmćūƂŉńmųĨ	
 
Ƃŉń	
 

ƂŉŲĹ	
 

ƂŉńmųĨiƼų	 ƍƌÈLɭƍƌĽƌ{ƍƌŠÈLVizğȐɮ	 Ã¯ÁYaũɯ5)%( Ǝ{ :5,7) ƎmțȋǙġiYgæK	 ƎŅăhƂŉ[ɭƎŅĽƌzğȐɮ	 	  ­¾ĥ	 ­¾ĥnŀƎŅÂőƎŅƱYRƂŉ[ŭȞOI	 ƎŅăhƂŉ[	  	  ­¾ťŠ	  Ǣǘ[i¡£ťŠmøĀčOÜŉX	 ©¥½ťŠmøĀčæKiPnG81*250%77)(HƂŉ[	 ƎŅăhƂŉ[	 ƒņm­¾æKiPnG2/(HɯņĳYkJ­¾ 	  ­¾ŲĹ	 æKiPnG1):HƂŉ[	 ƟÝlģkJi¼ÃOǛǓ[	 ¼ÃmiPl¹Á¯[șmƎǙġƂŉ[	
 
 	
 
ƎǙġ	
 
Ǣǘ[iɯ¼ÃOȰPaiPln¯À¼¶OţćȁÎ[	 	 çLoɯțȋǙġ  m¡£ťŠ­¾@7)67 287AiJKĥl[iPnɯ	
 

	
 

țȋǙġ	
 

23)1

*,/)7)67 287	 iƘPv[ɰvaɯțȋǙġ  m©¥½ťŠ­¾@7)67 (%7AiJKĥl[iPnɯ	 23)1

*,/)7)67 (%7 *25081*250%77)(	 iƘPv[ɰkMɯņĳ[­¾ƂŉYg :5,7) ƎhƘPȸxiɯ_vhƘPȸvg
Ja¢ÃOÅƘPXgƿLmhƼųOŭȞh[ɰVĮɊYaJiPlnɯ67%7861):
i )55  ƂŉYgɯ­¾Oņĳ[ĺģmÿǑǔųYgMRŭȞOIv[ɰ	
 67%786  ǢǘYg 23)1 Ǝŋș[iɯƂŉYa­¾OņĳYkToɯ_mĥĉm­¾OƐalåŹXv[ɰVmayɯ5)%( Ǝhøč[aym­¾Ã¯Á[ɝl­¾OņĳYkJiɯÇŭȞkǮm­¾OåŹXgYvJv[ɰVɗSaylɯ­¾OøčǔmiPnɯ67%7862/(ƂŉYgɯ_mņĳ YaƑOȓJh
Y|Kɰ	
 çLoɯ©¥½ťŠ­¾@7)67 ,13Aøč­¾iYgțȋǙġ  lƂŉ[lnɯ	 23)1

*,/)7)67 ,13 *25081*250%77)( 67%7862/( )55	 — 50 —

SENAC Vol. 45, No. 4（2012.10）m}KlƘPv[ɰVm 23)1 Ǝlnɯ)55 iJK¼ÃÿǑOƘNgJmhɯÃ¯ÁYaƖǆh­¾OņĳYkToɯƎǙġ  mșr¹Á¯Yv[ɰ	 ­¾rĀč[ĺģɯŋș¯À¼¶hmĀčĪÚmµÁiŋɝl¢lƘPȸvµÁnŭ\YzÄȒYgJv] ɰVnøĀč¨Ã¤ďǏ}RɄǔ[aylɯÄƖȥŸɦķrmȭwƘPOÕĳ[ayh[ɰVmayɯǥŋlƘPȸwňÎX]aJiPln­¾ÀÃYv[ɰÀÃnɯƯm '/26) ƎhșJv[ɰ	 '/26) 	  nÀÃ[­¾mțȋǙġh[ɰ'/26) Ǝŋș[iɯ_mƖǆvhlțȋǙġ lĀčYaùgm¢ÃO¢lƘPȸvv[ɰzdizɯ¯À¼¶OƱŚlȁÎ[oɯùgm­¾OȑĐǝlÀÃXmhɯɀŚn '/26) ƎƘNkRgzĬɨIv] ɰ	 ­¾ÀÃ[iɯțȋǙġ  i 23)1 ƎhƂŉYa­¾ĥmɖënȿĂv[ɰVmayɯĤZțȋǙġlɯąm­¾ƐalƂŉYgÃ¯Á[VizğȐh[ɰvaɯĤZĥĉm­¾þşÃ¯Á[VizhPv[ɰabYɯþÃ¯ÁYgz_ÛĉmȭwƘPmȆȇlnk~\ɯ­¾m÷ɧlźdgȭwƘPYv[ɰ[kcɯ@řPźYA
[Vilkv[ɰ­¾řPź[iɯ5)%( Ǝl}øčnÄN~{Ǡ[Vilkɯ
:5,7) Ǝl}Āčn­¾m÷ɧN~ƘPǠYv[ɰVmayɯřPźYgN~ :5,7) ƎhĀč[iɯ_ÛĉlƘPȸ b¢ÃnƿėXv[ɰ	 kMɯřPź[mOǟǝhIoɯ5):,1( ƎæKVihɯÀÃ]\iz­¾řP
ź[ViOhPv[ɰ5):,1( ƎinɯƯm}KkƎh[ɰ	 	 5):,1( 	  nþşƚĄN~ȭwƘP[­¾mțȋǙġh[ɰřPźYĆǔ[oɯv\ :5,7)
Ǝædg­¾l¢ÃĀčYgMPɯƯl_řPźYgɯ5)%( Ǝædg_m¢ÃøčYgæKVizğȐh[ɰ	 $&jZ"JX	 ÔĮnɯ¯À¼¶mſŀlàdgŭȞik®¾ÃÁmæJƑiøĀčmȩǿleJg
MȨYYvYaɰƌòȤǷ{ȤǷƮµº¿Ã»ÁlŭȞk 2575%1 mĸƞǝƎƻmȬƓnɯVhtuňÎh[ɰVvhȬƓYaƎƻædgɯj j ¯À¼¶ƘJgÆXJɰaRX ƘJgȃɫǭyoɯjKJKżɥhȤǷƮĐåX]oďǏOÅONONdgR
mhɯX~l´Ã£k¯À¼¶OƘT}Klkv[ɰ	 XgɯVVvhm¯À¼µÁhnƌòðąlȤǷ[mOĸƞhYaɰɍănȝƌm¢ÃÄƀYgěžKViOhPv[Oɯ_ædgȤǷ[iPnɯIRvhzȞǾWi
mȤǷȊȺ[ťhȥȻYvYaɰVlŏYɯƚȹm 2575%1 lnɯƌòmɞģÄem¢ÃĵiYgi~Lɯ_mɞģɕmǅǷȥȻ[VihɯȝɟkÿǑÁ¯¾lȚǐ[ÖȂwOŐøXgJv[ɰ_mÄenɯ@ƎŅăAh[ɰƎŅmɞģ@ƎŅăAiJK¢ÃĵhěžJɯƎŅăekJbɯƵȶYa[iJKǅǷOhPv[ɰzKÄen@ɍăȤǷAh[ɰŋƌ{ƍƌmɍăÄem¢ÃiYgěžJɯ(2 ƎƘNkRgzɯɍăɕmǅǷȥȻhPv[ɰ	 ƚȁĮhIƯĮnɯƎŅă{ɍăiJdaɞģ¢Ãĵi_mǅǷleJgȬƓYv[ɰvaɯƵȶǝƐYJƎƻmËN~ɯǴȏOædgêĆbiůzmJReNȀÕYɯ_~ĆǔYg¯À¼¶m·Á¡¥Áƨl[¡¦ ȬƓYaJiůJv[ɰ	
 

Utfm
#$	
 øɒ 2575%1 ŋȴ¯À¼µÁɯơǕŝƭÂŕƞȕÓÂǊƺęîɯ­£©Áɯ Ŝ	 — 51 —

SENAC Vol. 45, No. 4（2012.10）

������

���������テ�������の更�����
共同研究支援係
共同利用支援係
スーパーコンピューティング研究部

大規模科学計算システムのホームページを初めて利用する人にも、分かりやすいホームページにするために、平成 24 年 6 月からコンテンツ・デザインを、全面的に見直しました。是非、ご覧
いただき今後の利用にご活用ください。
なお、ホームページアドレスは http://www.ss.isc.tohoku.ac.jp/ です。

１．コンテンツの構成
従来のページは、コンテンツタイトルが羅列されている、ページ階層が深すぎる等の理由で目的の情報を探しにくいというご意見がありました。そこで今回は、センターを利用する際に必要な情報をすぐ直観的に探し出せるように、コンテンツ構成を全面的に見直しました。トップペー
ジは、閲覧頻度の高いコンテンツタイトルをグループ分けしたレイアウトとし（図１）、サブペー
ジで詳細な情報を提供する構成にしました。また、各ページにおいてアイコンを活用し、分かりやすく親しみやすいページになるよう心がけました。
「トップページのコンテンツタイトル」○ スーパーコンピュータ（SX-9）○ 並列コンピュータ（Express5800）○ アプリケーションサービス○ 共同研究○ 利用案内・申請方法（学術(一般)利用、民間企業利用、
各種申請用紙）○ 講習会案内○ 利用相談○ 成果報告○ センター施設利用図１トップページのコンテンツアイコン

２．主な変更点・コンテンツタイトルを文字だけでなく、直感的に分かるようにアイコン化し、さらにスマートフォン等でもタッチしやすいサイズに調整しました。
・スーパーコンピュータ、並列コンピュータの利用ガイドを、HTML 形式でも閲覧できるようにしました。従来の PDF ファイルの利用ガイドも、引き続きご利用出来ます。
・学術(一般)利用と民間企業利用で、利用制度が異なりますので、別ページとしました。
・講習会で使用した資料と、サンプルプログラムをダウンロード出来るようにしました。
・利用者の方から頂いたご質問を FAQ 形式で掲載しました。

— 52 —[報

SENAC Vol. 45, No. 4（2012.10）

告]�������������

���������報告

小松 一彦
スーパーコンピューティング研究部

東北大学では，2012年7月30日から31日にかけて，入学を希望・考慮されている皆さんや市民の方々に，日頃の教育・研究活動や大学施設を広く一般に公開し，東北大学への興味・関心を深めてもらえるよう，オープンキャンパスを開催いたしました．当センターでは，全国の研究者の大規模科学技術計算を支えるスーパーコンピュータや並列コンピュータ，東北のネットワークを支えるネットワーク機器，大規模計算機の歴史を辿ることができるコンピュータ博物館を公開しました．また，ネットワーク研究部，スーパーコンピューティング研究部，先端情報技術研究部の研究活動や最新の研究成果の紹介を行いました．
近年のスーパーコンピュータへの関心の高まりもあり，若い学生達だけでなく一般の方も訪れ，
今年度は1000人以上の方々にご来場いただきました．見学者の方達には，スーパーコンピュータの用途や重要性の説明を行い，スーパーコンピュータがどのように科学技術の発展を支えている
か，そして，それらの科学技術がどのように私達の生活に活かされているかを知っていただきました．また，普段なかなか見ることが難しいスーパーコンピュータや並列コンピュータをガラス越しではなく直接見学することで，そのサイズの大きさ，空気を流すためのファンの音の大きさ，コンピュータを冷却するための冷風などを肌身で感じていただきました．スーパーコンピュータ
を少しでも身近に感じていただく良い機会になったと思います．また，博物館の展示では，歴史的な価値のある歴代のスーパーコンピュータや昔のコンピュータの部品など，コンピュータの進化について興味深く見学していただきました．研究開発部の展示では，研究室の研究活動に関する話だけでなく，大学生活や大学での講義，入試対策などについても話をして，大学院生や学生と交流しておりました．来年度のオープンキャンパスも一般に公開する予定ですので，みなさまのお越しをお待ちしております．

— 53 —

スーパーコンピュータ SX シリーズ

[展示室便り⑥]���������� �� ����
今回は、日本電気（株）製のスーパーコンピュータ SX シリーズです。センターで使用したスーパーコンピュータ（以下スパコン）は、このシリーズの SX-1、SX-2、SX-3R、SX-4、
SX-7(1986 年〜2007 年)です。これらの計算機はベクトルマシンといわれ当時のメインフレームのコンピュータの 40〜100 倍の演算性能を有しました。表１「スーパーコンピュータの変遷」は、センターで導入したスパコンの約 20 年間

機種

演算性能 GFLOPS

メモリ容量 GB

SX-1

1986-1988 年

0.6

0.1

SX-2N

1989-1993 年

1.1

0.3

SX-3R

1994-1997 年

25.6

4.0

SX-4

1998-2002 年

256.0

32.0

SX-7

2003-2007 年

2119.01920.0の演算処理能力と主記憶容量を表しス
パコンの驚異的な性能向上がお分かりい

表 1 スーパーコンピュータの変遷

ただけると思います。
利用形態は、SX-1、SX-2N は前回紹介した ACOS システムのバックエンドプロセッサとしてバッチ処理でサービスを行いました。SX-3R からは オペレーティングシステム(OS)が UNIX となり、利用者の方は会話処理で直接スパコンを利用することができるようになりました。展示品 1 は SX-7、 SX-4 筐体の一部分（ふ線筐体）で CPU とメモリが組み込まれているところです。ここでは、スパコン筐体内での CPU、メモリ、各種のケーブルが実装されていた状態を見ることが出来ます。ミニモックアップは 1 台（1 ノード）の全景を現しています。SX-7 は 7 ノード導入され、1 ノードは 32 個の CPU と 256GB のメモリで構成されていました。

展示品 1 SX-7 筐体（左）、SX-4 筐体(中)、ミニモックアップ（右 2 枚）— 54 —

SENAC Vol. 45, No. 4（2012.10）

展示品２ 左から順に SX-2N、SX-3R、SX-4、SX-7 の１CPU
展示品２は各スパコンの 1CPU です。SX-2N、SX-3R、SX-4、SX-7 と大きさを比較し易いよう並べてみました。SX-3R まではバイポーラテクノロジ、SX-4 からは CMOS テクノ
ロジが採用されました。１CPU の演算性能は、1.14GFLOS、6.4GFLOPS、２GFLOPS、8.83GFLOPS です。
展示品３は SX-4、SX-7 のメモリカード（ユニット）です。各ボードの記憶容量は、256MBと２GB です。年代と共に集積度が上がってきます。
展示品 3 SX-4、SX-7 のメモリカード

展示品 4 は「高速化推進研究活動報告」です。
報告書では、プログラムの高速化技法や利用者プ
ログラムの高速化事例が紹介されています。
2001 年から発行され、現在は第 5 号まであります。この報告書作成の経緯は、初号作成時、当時の根元義章センター長が「高速化推進研究活動報

展示品 4 高速化推進活動報告

告の刊行にあたって」の中で以下のように書かれています。

本センターが1998年1月に導入したスーパーコンピュータSX-4/128H4はベクトル型スーパーコンピュータとしては、当時世界最大の演算処理能力を有しており、メモリ共有機構
やベクトル処理機構、コンパイラの自動並列化や自動ベクトル化等で世界的にも優れた特徴を有していた。しかし、大学の利用者は、より規模の大きい3次元シミュレーションを行うことを切望しており、計算方法プログラミングを工夫する必要があった。そこで導入決
定直後の1997年9月より利用者、本センター、日本電気（株）の3者により高速化推進のための研究会を立ち上げ、約3年にわたって共同研究を進めてきた。本報告はその成果をまとめたものである。

SENAC Vol. 45, No. 4（2012.10）— 55 —[Web 版大規模科学計算システムニュース]より
大規模科学計算システムニュースに掲載された記事の一部を転載しています。 http://www.ss.isc.tohoku.ac.jp/tayori/������������ム ������ ��ー�ス��������������
GRRM は、2002 年に東北大学（教授：大野公一、修士１年：前田理、当時）で制作が開始され、その後開発が進められて、2011 年には GRRM11（開発者： 前田理、長田有人、諸熊奎冶、大野公一）として広く利用されるようになりました。GRRM には、以下のような特長があります。
・g09 や g03 プログラムなどを用いた非経験的量子化学計算に基づいて、各化学式で表される構造や反応経路を自動的に探索します。
・平衡構造から出発して、その周囲に存在する反応経路を、ポテンシャルの非調和下方歪みを検出して、系統的に調べ上げる超球面探索アルゴリズムが搭載されており、従来不可能であった５原子以上の反応経路自動探索を行うことができます。
2012 年 8 月 7 日（火）よりサービスを開始しますのでご利用下さい。
サービス開始日：2012 年 8 月 7 日 （火）

ホスト名

：

gen (並列コンピュータ)

バージョン

：

11.01

利用方法についての詳細は開発元 Web ページ、および当センターの GRRM11 紹介 Web ページをご参照下さい。
【開発者 Web ページ】
http://grrm.chem.tohoku.ac.jp/SRPS/GRRM.HTM【当センターGRRM11 紹介 Web ページ】
http://www.ss.isc.tohoku.ac.jp/grrm11.html（共同利用支援係）

— 56 —

SENAC Vol. 45, No. 4（2012.10）

���������������� ��������
■2012 年 8 月 26 日にスーパーコンピュータ用のコンパイラ、ライブラリを下記のバージョンへ
アップデートします。
FORTRAN90/SX

Rev.451

C++/SX

Rev.093

MPI ライブラリ

library 8.0.16■コンパイル方法は下記となります。
なお、コンパイルコマンドに変更はありません。
Fortran コマンド名：sxf90
C/C++コマンド名：sxcc
オプションの説明は、man コマンドでも参照できます。
MPI を利用する場合
Fortran コマンド名:sxmpif90
C/C++コマンド名:sxmpicc
オプションの説明は、man コマンドでも参照できます。
■FORTRAN90/SX
詳細についてはリリースメモをご覧ください。
Rev451 リリースメモ■C++/SX について
C++/SX の新機能等については下記資料をご覧ください。
Rev093 リリースメモ
Rev.093: 新機能のご紹介
互換性留意事項説明
C/C++言語プリプロセッサ利用の手引■MPI/SX について
MPI-2.2 使用をサポートしました。
主な新規機能および機能強化は下記のとおりです。
・集団通信新規手続き
MPI_REDUCE_SCATTER_BLOCK （全プロセス同一サイズの REDUCE_SCATTER）
MPI_REDUCE_LOCAL（自プロセス内リダクション演算実行）

MPI_OP_COMMUTATIVE（リダクション操作の可換性問合せ）

— 57 —

［Web 版大規模科学計算システムニュース］より

・集団通信機能強化
下記手続きで MPI_IN_PLACE 引数をサポート。
MPI_ALLTOALLMPI_ALLTOALLVMPI_ALLTOALLWMPI_EXSCAN・プロセストポロジー新規手続き
Distributed Graph トポロジー生成および問合せ手続きの追加。
MPI_DIST_GRAPH_CREATEMPI_DIST_GRAPH_CREATE_ADJACENTMPI_DIST_GRAPH_NEIGHBORSMPI_DIST_GRAPH_NEIGHBORS_COUNT
・新規データ型
C99 規格の新規データ型および MPI_Aint、MPI_Offset 型に対応した MPI データ型の追加。
・MPI トレース機能強化
詳細につきましては下記のリリースメモをご覧ください。
MPI リリースメモ（共同利用支援係、共同研究支援係）

���������������
������������������������������������������
Marc/Mentat のバージョンを MSC.Marc2012/Mentat2012 として運用を始めましたのでお知らせ致します。Mentat2012 では新 GUI を採用しています。従来の Classic GUI は mentat.classicというコマンドでご利用できます。また旧バージョンは暫定的に run_marc.2010、mentat.2010というコマンドでご利用できます。
2012 年 8 月 27 日（月）よりサービスを開始しておりますのでご利用ください。
サービス開始日：2012 年 8 月 27 日 （月）

ホスト名

：

gen.isc.tohoku.ac.jp (並列コンピュータ)

— 58 —

SENAC Vol. 45, No. 4（2012.10）▼ MSC.Marc2012/Mentat2012バージョン： 2012

起動コマンド： run_marc, mentat, mentat.classic
新機能の概要、機能の詳細、実行方法についてはマニュアル[1-3]、センターHP、および開発元
HP をご覧ください。
マニュアル： PDF 形式マニュアルを gen 上で提供しています。
並列コンピュータ gen.isc.tohoku.ac.jp にログインし、
acroread コマンドでご覧ください。各マニュアルは、
gen.isc.tohoku.ac.jp の以下のディレクトリにあります。

gen: /usr/ap/MSC2012/mentat2012/doc/[1] marc_2012_doc_release.pdf: Release Guide(2012 英語)[2] marc_2012_doc_user.pdf: User's Guide(2012 英語)[3] marc_2012_doc_release_jpn.pdf: リリースガイド(2012 日本語)

英文マニュアル[4] vola.pdf:

Volume A：Theory and User Information[5] volb.pdf:

Volume B：Element Library[6] volc.pdf:

Volume C：Program Input[7] vold.pdf:

Volume D：User Subroutines and Special Routines[8] vole.pdf:

Volume E：Demonstration Problems

和文マニュアル(2003 版)
gen: /usr/ap/MSC2012/mentat2012/doc/japanese/[1] vola.pdf:

A 編 理論およびユーザー情報[2] volb.pdf:

B 編 要素ライブラリ[3] volc.pdf:

C 編 プログラム入力[4] vold.pdf:

D 編 ユーザーサブルーチンおよび特別ルーチン[5] vole.pdf:

E 編 例題集[6] marc_ug.pdf:

ユーザーガイド[7] mt_help_ref.pdf:

Mentat 2003 ヘルプリファレンス[8] xsec_adden.pdf: ドキュメント補足資料

センターHP
http://www.ss.isc.tohoku.ac.jp/application/marc_mentat.html
開発元 HP
http://www.mscsoftware.co.jp/products/marc/index.php(共同利用支援係)

— 59 —

［Web 版大規模科学計算システムニュース］より��������������� ��������

東北大学オープンキャンパスで展示した研究紹介ポスターをホームページでも閲覧できるように掲載致しました。計算機を利用したユーザの研究紹介を大規模科学計算システムトップページの「成果報告」項目、または下記のリンクよりご覧ください。
「成果報告」→「スーパーコンピュータを用いた成果」
http://www.ss.isc.tohoku.ac.jp/report/super.html(共同研究支援係)

������������� ��������

次回の利用負担金請求（平成 24 年 7 月 1 日から 9 月 30 日までの利用分）は 10 月初旬に行います。負担金の支払費目の指定に関して、これまで shiharai コマンドで指定頂いておりま
したが、今年度より廃止いたしました。学内の方については事前に費目の指定は必要ありません（請求金額確定後、センター会計係より各部局の会計担当を通して照会いたします）。
学外の方については、特に支払費目名の入った利用負担金請求書を希望する場合や請求書の適要欄等について不明な点がある場合は会計係（022-795-3405）へご連絡くださるようお
願いいたします。また、その他負担金に関することで不明な点がある場合は、共同利用支援係（022-795-6251）へご連絡くださるようお願いします。
（共同利用支援係，会計係）

���������������� ��������

サイバーサイエンスセンターでは利用者の方のスーパーコンピュータやアプリケーションの利
用をサポートするため、センターの講習会で使用したテキスト・演習資料・サンプルデータを公開しております。

— 60 —

SENAC Vol. 45, No. 4（2012.10）

講習会資料のダウンロードページへは、大規模科学計算システムのトップページの「講習会案内」のリンク、または下記のリンクよりご覧下さい。
http://www.ss.isc.tohoku.ac.jp/guide/archives.html（共同利用支援係，共同研究支援係）

����������� ��� ���������� ��������

サイバーサイエンスセンターでは利用者の方のご質問を元にFAQページを作成いたしました。シ
ステムの利用に関してご不明な点がありましたらこちらのページをご一読下さい。
FAQページへは、大規模科学計算システムのトップページ右上のリンク、または下記のリンクよりご覧下さい。
http://www.ss.isc.tohoku.ac.jp/faq/（スーパーコンピューティング研究部，共同利用支援係，共同研究支援係）

�����������������������������
�������������� ��������

分散コンピュータ博物館に所蔵されている展示品や資料を、ウェブページから閲覧できるWeb
Galley のページを新設いたしました。
分散コンピュータ博物館のホームページへは、サイバーサイエンスセンタートップページのリ
ンク、または下記のリンクよりご覧下さい。
http://www.isc.tohoku.ac.jp/museum/（共同利用支援係）

— 61 —

SENAC Vol. 45, No. 4（2012.10）

� ����� ���� ����������������
次のような内容の投稿のうち、当センターで適当と判定したものを掲載します。その際に原稿の修正をお願いすることもありますのであらかじめご了承ください。
・一般利用者の方々が関心をもたれる事項に関する論説・センターの計算機を利用して行った研究論文の概要
・プログラミングの実例と解説・センターに対する意見、要望
・利用者相互の情報交換������������������
(1)原稿は横書きです。
(2)術語以外は、「常用漢字」を用い、かなは「現代かなづかい」を用いるものとします。
(3)学術あるいは技術に関する原稿の場合、200 字～400 字程度のアブストラクトをつけてください。
(4)参考文献は通し番号を付し末尾に一括記載し、本文中の該当箇所に引用番号を記入ください。
・雑誌：著者,タイトル,雑誌名,巻,号,ページ,発行年
・書籍：著者,書名,ページ,発行所,発行年
���������
原稿のファイル形式は Word を標準としますが、PDF での提出も可能です。サイズ*は以下を参照してください。ファイルは電子メールで提出してください。
－Word の場合－
・用紙サイズ：A4
・余白：上＝30mm 下＝25mm 左右＝25mm 綴じ代＝0
・標準の文字数（45 文字 47 行）＜文字サイズ等の目安＞
・表題＝ゴシック体 14pt 中央 ・副題＝明朝体 12pt 中央
・氏名＝明朝体 10.5pt 中央
・所属＝明朝体 10.5pt 中央
・本文＝明朝体 10.5pt
・章・見出し番号＝ゴシック体 11pt～12pt*余白サイズ、文字数、文字サイズは目安とお考えください。
�����(1)執筆者には、希望があれば別刷 50 部を進呈します。50 部を超える分については、著者の実費負担とします。別刷の希望部数等は投稿の際に申し出てください。
(2)投稿予定の原稿が 15 ページを超す場合は以下まで前もってご連絡ください。
(3)初回の校正は、執筆者が行って、誤植の防止をはかるものとします。
(4)原稿の提出先は次のとおりです。
東北大学サイバーサイエンスセンター内 情報部情報基盤課共同利用支援係
e-mail uketuke@isc.tohoku.ac.jp
TEL 022-795-3406

— 62 —

SENAC Vol. 45, No. 4（2012.10）

編 集 後 記
今回の SENAC では，センターが利用者の先生方と取り組んでいる共同研究の中から３件の成果報告をしていただきました．共同研究では，「ここの部分が計算のボトルネックになっているのでこうするとプログラムがこれくらい速くなりそうだ」といったプログラムを構成する部分的な計算コードを中心に検討を進めることが多いわけですが，SENAC の記事としてその計算全体のもつ意味を拝見させていただくと，改めてスーパーコンピュータシミュレーション技術がもたらす成果の学術的・社会的影響の大きさを感じることができ，センタースタッフとしてほんの少しでも貢献できたことを大変うれしく思います．
9 月 28 日に理研の「京」の共用が開始され，併せて，「京」とサイバーサイエンスセンターを含む９大学の情報基盤センターのスーパーコンピュータ群を統一的な利用者 ID で利用できる HPCIシステムが稼働し始めました．これにより，全国の幅広い分野の研究者や技術者が，我が国の多様なスーパーコンピュータ計算資源を効率よく利用できる環境と支援体制がより強化されました．
HPCI システムによりスーパーコンピュータシミュレーション技術に基づく計算科学がより一層進展し，世界をリードする成果が数多く生み出されることを期待したいと思います．（H.K）

今年の仙台は猛暑が 9 月まで続きましたが，10 月に入ると例年と同じ時期に金木犀が香り始めました．今号が発行される頃には，青葉山の木々も色づいてくると思います.
摂南大学の田口先生に，前号に引き続き Fortran プログラミングに関する資料を執筆いただきました。センター職員にも参考になるとたいへん好評です．Fortran に関する資料の１つとして，お近くのみなさまにも紹介いただければ幸いです.（K.S）

SENAC 編集部会
小林広明 曽根秀昭 水木敬明 後藤英昭
江川隆輔 早坂哲夫 大泉健治 小野 敏
斉藤くみ子

編集・発行

印 刷
サイバーサイエンスセンター前
整備中の青葉山新キャンパス

平成 24 年 10 月発行
東北大学
サイバーサイエンスセンター
仙台市青葉区荒巻字青葉 6-3
郵便番号 980-8578
東北大学生活協同組合
プリントコープ