4.clp法を用いた流体解析 - university of electro...

9
o 講座 パーソナルコンピュータで行うプラズマ解析 4.ClP法を用いた流体解析 矢部 孝, 一, (東京工業大学) 青木尊 Computational Fluid Dynamics by the CIP Meth YABE Takashi,SAKURAI Kouichi and AOKI Takayuki Toκyo lns漉厩6ρヅT6chnoZo9』y,To左yo152-8552,/αPαn (Received.4AprU2000) Abstract The principle of the CIP method ls reviewe(i,and the Fourier analysis is us can successfully descrlbe oなe wavelength by three gridpointswiththe su phase speed.Otherthirdorderschemes,suchasPPM and cubic spline,n oftheCIPhasbeendemonstratedwithrespecttosmallergridpoints, transltion.The relative merit ofJAVA programming is examine(l and the instability is simulated and animated. Keywords= CIP,subcell resolution,JAVA,Rayleigh-Taylor instability 4.1 はじめに 1983年,著者の一人(矢部)は,ミネアポリスにある クレイ・リサーチ社に2週間滞在した.大阪大学レー ザー核融合研究センターに導入すべきスーパーコンピ ュータピュータの一候補としてCraylを実際に使用して 検討するためであった.クレイ社ではその当時からスー パーコンピュータからの三次元画像を立体的に見せるた めの様々な技術を検討中で,米国のこうした可視化に対 する取り組みがうらやましいかぎりであった.日本の スーパーコンピュータメーカにこの話をしても, 「スー パーコンピュータに画像の仕事をやらせるべきではな い,スーパーコンピュータは計算のためのマシンであ る」と相手にされなかったことを覚えている.結局,我々 の調査などとは全然関係のないレベルでマシンが決定さ れたので,何をしに行ったのかわからないことになった のだが,当時のクレイ社の方々とは今でも個人的にお付 き合いさせていただいている(ほとんどは,別会社に移 っているが)のは,大変な財産であると思っている. 突然,解説の話題と関係なさそうな話から始まったよ うだが,実は大いに関係がある.当時スーパーコンピュー タと呼ばれていたマシンCraylの演算速度の実測値は, 100MFLOPS以下であった.このマシンで我々は三次元 流体計算を行い,三次元画像のアニメーションを動かし ていたのである.翻って考えるに,皆さんがお持ちの PentiumIII500MHzの演算速度は100MFLO さて,この読者のどれくらいの方が,このパーソナルコ ンピュータで三次元流体計算をしているでしょうか?こ れはちょうど,マイクロソフト社のワードプロセッサ Wordに似ている.数年前まではこれよりも10倍も遅い パーソナルコンピュータでちゃんとワープロを使ってい たのに,10倍速くなったパーソナルコンピュータでも全 然速くなっていない.これは,計算機の性能よりもワー α厩ho〆5ひη昭∫1’』yαわ6@襯8ch.漉εch.αoゆ 676

Upload: others

Post on 14-Feb-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

  • o 講座 パーソナルコンピュータで行うプラズマ解析4.ClP法を用いた流体解析

    矢部 孝, 桜 井 浩 一,   (東京工業大学)

    青木尊 之

    Computational Fluid Dynamics by the CIP Method

    YABE Takashi,SAKURAI Kouichi and AOKI Takayuki

     Toκyo lns漉厩6ρヅT6chnoZo9』y,To左yo152-8552,/αPαn

           (Received.4AprU2000)

    Abstract

    The principle of the CIP method ls reviewe(i,and the Fourier analysis is used to demonstrate that the CIP

    can successfully descrlbe oなe wavelength by three gridpointswiththe subcell resolution keepingthe correct

    phase speed.Otherthirdorderschemes,suchasPPM and cubic spline,needmore than sixpoints。Themerit

    oftheCIPhasbeendemonstratedwithrespecttosmallergridpoints,robustness,surfacecapturingandphase

    transltion.The relative merit ofJAVA programming is examine(l and the two-dimenslonal Rayleigh-Taylor

    instability is simulated and animated.

    Keywords=

    CIP,subcell resolution,JAVA,Rayleigh-Taylor instability

    4.1 はじめに

     1983年,著者の一人(矢部)は,ミネアポリスにある

    クレイ・リサーチ社に2週間滞在した.大阪大学レー

    ザー核融合研究センターに導入すべきスーパーコンピ

    ュータピュータの一候補としてCraylを実際に使用して

    検討するためであった.クレイ社ではその当時からスー

    パーコンピュータからの三次元画像を立体的に見せるた

    めの様々な技術を検討中で,米国のこうした可視化に対

    する取り組みがうらやましいかぎりであった.日本の

    スーパーコンピュータメーカにこの話をしても, 「スー

    パーコンピュータに画像の仕事をやらせるべきではな

    い,スーパーコンピュータは計算のためのマシンであ

    る」と相手にされなかったことを覚えている.結局,我々

    の調査などとは全然関係のないレベルでマシンが決定さ

    れたので,何をしに行ったのかわからないことになった

    のだが,当時のクレイ社の方々とは今でも個人的にお付

    き合いさせていただいている(ほとんどは,別会社に移

    っているが)のは,大変な財産であると思っている.

     突然,解説の話題と関係なさそうな話から始まったよ

    うだが,実は大いに関係がある.当時スーパーコンピュー

    タと呼ばれていたマシンCraylの演算速度の実測値は,

    100MFLOPS以下であった.このマシンで我々は三次元

    流体計算を行い,三次元画像のアニメーションを動かし

    ていたのである.翻って考えるに,皆さんがお持ちの

    PentiumIII500MHzの演算速度は100MFLOPSです.

    さて,この読者のどれくらいの方が,このパーソナルコ

    ンピュータで三次元流体計算をしているでしょうか?こ

    れはちょうど,マイクロソフト社のワードプロセッサ

    Wordに似ている.数年前まではこれよりも10倍も遅い

    パーソナルコンピュータでちゃんとワープロを使ってい

    たのに,10倍速くなったパーソナルコンピュータでも全

    然速くなっていない.これは,計算機の性能よりもワー

    α厩ho〆5ひη昭∫1’』yαわ6@襯8ch.漉εch.αoゆ

    676

  • 講 座 4。CIP法を用いた流体解析 矢部,桜井,青木

    プロの負荷の方が重くなってきているからだ.実際に使

    用している機能は,ほとんど変わっていないのに,不必

    要なところが増えすぎ,簡単な機能でさえ時間がかかっ

    てしまっている.シミュレーションも同様である.以前

    は,少ないメッシュでうまくやるために計算を工夫して

    いる人がたくさんいたのに,計算資源が増えると工夫を

    せず,やたらメッシュをたくさん使うだけでやろうとし

    ている人が増えてきている.いつも言っているが,三次

    元だと空問と時間で四次元だから,メッシュを一方向3

    倍多く取ると,34ニ81で81倍の計算量が必要となる.こ

    の単純な算術がわかっていないと,いくらコンピュータ

    が速くなっても20年前の計算程度のことさえできない

    [1].あとで出てくる,レイリーテイラー不安定性のシミ

    ュレーションでも,一方向に100程度のメッシュしか(実

    はこれでも多すぎるのだが)取っていないが,これとほ

    とんど同じ計算を600メッシュも使用し,現在最高速のパ

    ラレルコンピュータで行い,スーパーコンピューテイン

    グと称して発表している人もいる.結果はほとんど同じ

    なのに.

     1994年のプラズマ・核融合学会誌に「パーソナルコン

    ピュータでもできるスーパーコンピューティング」とい

    う解説[2]を書いた.このときはlntel486/66MHzのノー

    ト型パーソナルコンピュータを使用している.わずか3

    年で286,386,486と発展してきたパーソナルコンピュー

    タはそれ以降も衰えをしらず,現在のPentium III850

    MHzまで来ている.これは,数百MFLOPSと言われて

    いるから,4年で⑳0倍の能力のコンピュータを手に入れ

    たことになる.でも,はたしてそれだけの能力のコンピ

    ュータを持っただけの仕事をしているだろうかという疑

    問はある.残念ながら否である.1992年の物理学会の解

    説を見ていただければわかるように,すでにこの時点で

    三次元流体のシミュレーションをしているのだ(文献

    [1]). 「パーソナルコンピュータでも…」にも書いてい

    るが,研究は計算量とは関係がないし,スーパーコンピ

    ュータを持っていれば先端の研究ができているわけでも

    ない.独創的な仕事には,小さな計算機で十分である.

    先駆者が二次元程度でやり遂げた仕事を,巨大なコンピ

    ュータで三次元計算をやり,みごとな動画を作ったから

    と言って,科学に貢献したわけではない. 「三次元でや

    る必要がどこにあるの?」と聞かれるのが関の山であ

    る.

     では,こうした計算をパーソナルコンピュータではど

    うやって行うのが一番いいのであろうか?著者の意見は

    「お好きなようにどうぞ」というのが答えである.パー

    ソナルコンピュータの能力はすでに十分なものがあり,

    コンパイラもFortran,CともにWindowsであれ,Llnux

    であれ,十分なものが揃っているし,性能に大した違い

    はない.著者の計算環境はWindowsであるが,計算しな

    がらその結果をワープロに貼り付け,グラフを作った

    り,アニメーションを作ったりするには,Windowsの多

    種類のソフト資源を活用するのが便利であるからであ

    る.著者は,国内国外に出張する機会が多いので,ノー

    ト型コンピュータのモバイル環境で,オフィスと同じ仕

    事が続けられることは必須である.国際会議の前夜に,

    ホテルで計算を実行させ,これを:Powerpointで貼り付け

    てプレゼンテーションに使うという泥縄をよく経験して

    いる.

     次によく聞かれる質問は,「計算はFortranかCか?」

    というのだが,どちらでもかまわない.著者はDigltal

    VisualFortranというのを使用しているが,これはMicro-

    softのFortranPowerstationとDECFortranが合体して

    できたもので,なかなかのできであると思っている.こ

    れ単独でグラフィック機能も備えており,昔ながらのプ

    ロッタ感覚の線引き,塗りつぶし機能などがあり,計算

    途中で簡単な図を出しながら結果をみるのに便利であ

    る.著者はもっと凝っていて,出力,入力ともに,グラ

    フィカルに行えるよう,VisualC++で自作したものを使

    っているが,普通の人がこれを自作するのは相当大変で

    ある.Fig.1に,この画面をお見せしよう.格子間隔を任

    意に設定した後(不等間隔でもOK),Fig.1のように格

    子の上に丸や四角で図を描く.色が違っているのが異な

    る物体の領域である.各領域ごとに,右側の物性入力欄

    に初期密度,圧力,速度などを入力する.ちなみに,Fig.

    1の場合には,弾丸が一定速度で動き,縦長の部分は液

    体で自由に変形できると指定し,残りの部分が空気の背

    景である.これを,Fig.1の右図のように,計算中は結果

    をモニタすることができ,いろいろな量の等高線をカ

    ラーや線図で示したり,速度ベクトルの矢印を付加する

    ことができる.

     こうして,計算をした後は,Fig。2のように,再度自分

    の好きなようにデータを連続して書き出すことができ,

    これをつなげてアニメーションとするわけである.この

    一連の動作がすべてボタン操作でできるようにしてい

    る.昔はいちいち問題ごとにプログラムを修正していっ

    たが,最近はプログラムがほとんどの現象に対応するよ

    うに作られ,グラフィカルに対応するので,最近はプロ

    グラムを触る必要がなく,ボタン操作で大抵のシミュ

    レーションをすることができる.自慢するわけではない

    677

  • プラズマ・核融合学会誌 第76巻第7号  2000年7月

    織舞 、、獅・  販.

    二塑㌃幽翻盤幽憐ゴ訟盛盈塩

    Fig,1 Graphical User Interface(left)Data input module,(right)Real time monitering module.

    Fig.2 Bitmapfiles are madefrom outputdata,andcombined into an animationfile.

    が,こうした汎用コードができるのも,C王P法がすべて物

    質を同時に解き,メッシュもあまり気にせずに計算が可

    能であるからであろう.企業の方も,よく使ってくれて

    いるが,皆さん「StarCD,Fluent,Phoenixなどの有名

    な市販のコードでは,できるとパンフレットには書いて

    ありながらできないことが多く,多相流では結果が信用

    できないが,CIP法は安心して使える」と喜んでもらって

    いる.

    4.2 CIP法

     我々はここ十数年の間,固体・液体・気体を同時に解

    くシミュレーション法を開発してきた.この方法はCIP

    678

  • 講 座 4.CIP法を用いた流体解析 矢部,桜井,青木

    (Cubic{nterpolatedPseudoparticle/Propagation)法と

    呼ばれ,乱流,気泡流,多孔流,MHD発電,生体,衝撃

    波工学,機械工学全般,電力,燃焼・爆発,化学反応,

    結晶化,粘弾性流体,宇宙カプセル,航空,船舶,自動

    車,半導体,レーザー加工・溶接,原子力安全,天文,

    地球惑星,プラズマ,希薄流体,微粒化(Atomization),

    インクジェット,塗装など幅広い分野ですでに使われて

    きている.

     この計算手法CIPに関してはすでに多くのレビュー

    [3-7]があり,昨年にもプラズマ・核融合学会誌の解説を

    おこなった[7]ので,ここでは少し違った観点からこの手

    法のエッセンスを説明しよう.この手法は流体のみなら

    ずすべての方程式に適用できるので,より一般的に考え

    よう.今,物理量∫に対する基本方程式が

    現∫】ニ0

    という形になるものとしよう.

    乙≡∂+%一ユ  ∂オ  ∂劣

    (!)

    (2)

    であれば(1)式は,波の伝播を表す双曲型方程式とな

    る.また,

    L≡互_D」愛  ∂云  ∂冗2

    (3)

    であれば,これは熱伝導などの放物型方程式である.(1)

    式を数値的に解くときには離散化した格子点上の∫の値

    を求めることになる.通常の計算手法では,この格子点

    より細かい情報は信用できないと思われていたが,CIP

    法は,この格子点の間のプロファイルを元の方程式を満

    たすように作る.この格子点内の情報を得るために,

    (1)式の空間微分を取ってみよう.もし,Lが空間の関

    数でなく,∫について線形であるならば,これは単純に

    L[gl=0,9≡∂∫/∂% (4)

    となるだけである.これは(3)式のDが定数の時に相当

    する.また,(2)式の場合でも

    M[91≡∂9+%璽+塵9-o   ∂渉  ∂% ∂冗

    (5)

    という別の方程式を得る.このように,元の方程式とそ

    の空間微分についての方程式とが得られれば,格子点上

    での空間微分の発展をこの方程式を数値的に解くことに

    よって予測することができる.こうすると,Fig。3のよう

    に,すべての格子点上で∫がゼロである場合でも,そこ

    で傾きgが与えられれば,格子点の内部に波の山と谷が

    あることが認識できるようになる.これこそCIP法が用

    いている重要なポイントである.こうすることによる利

    点を見てみよう.Fig.4は(2)式で速度一定の波の伝播

    を計算したものである.数値手法はこれをわざわざ計算

    機を動かして解かなくても,その性能を調べることがで

    きることが多い.例えば,(2)式を一次の風上差分で解

    くことを考えよう.

    畳+.塾。o ∠」オ    』κ

    0.8

    (6)

    Fig,3 A wave can exist even if all the values at grid points are

       zero.SincetheCIP method usescubicpolynomialtode-   scribe the profile between grid points,the time evolution

       of the values and those spatial derivatives on the grid

       points are known and then the existence of the wave can

       be predicted by生hese derivatives.

    0.7

     0.6>

    00.52幽コ0.40幽窪0・3臨

     0.2

    0.1

    0

    一EXACT→←UPWIND一辱』しW

    一←’PPM→藪一SPLINE

    O CIP

    00.511.52      WAVENUMBER

    2.5  3

    Fig,4 Conparison of phase error.UPWIND:first order upwind

       scheme,LW:Lax-Wendroff,PPMl Piece-wise Parabolic

       MethQd,SPUN巳cubic spline.

    679

  • プラズマ・核融合学会誌第76巻第7号  2000年7月

    今,これに∫(冗,y)=expli(肋一ωオ)】の波が伝播するとしよ

    う.写2≡∫(傷あ2),紛二ノ∠夙あ一紹オの定義であることを

    思い出せば,(6)式から簡単に

    exp(一iω」渉)一1+雄[1-exp(一i姻%)1-0

           』%(7)

    という分散関係を得る.」冗,窃→0の極限では,(7)式

    ω

    一=%ゐ

    の解を得る.これは,すべての波が位相速度%で伝播す

    ることを意味する.数値手法が,このような分散のない

    解を与えることができれば,矩形波では無限の波数を含

    んでいるから,矩形波の伝播が正確に解ける.しかし,

    沼%,∠オは有限であるため,これがずれてくる.(7)式

    をFig.4に示した。このように,ゐ』冗傷π/2付近から,波

    が%よりも遅くなっていることがわかる.この遅延波

    は,LaxWendroff法に顕著に表れる.しかし,通常は一

    次風上差分(7)では,Fig.5のようにこの遅延波が観測さ

    れない.これは,(7)式には虚数部分があり,波は減衰

    を受けているのである.一次の風上差分では,

    h』冗霜π/2付近ですでに大きな減衰が起こり,このよう

    な遅延波は観測されず長波長の波だけが生き残っている

    のでFig.5のようななだらかな波形となる.

     では,CIP法ではどうなるであろうか? Fig.4のよ

    うに,すべての波が見事に一定速度%で伝播している.

    これが驚くべきであるのは,図の右端は姻冗二πであ

    り,ここでは,3つの格子点で一波長を表していること

    になる.すなわち,Fig.3のような格子点内の解像度が実

    現し,しかも,正確に方程式の解を再現していることが

    わかる.Fig。5のCIP法の結果を見ていただければ位相速

    度がずれていないことがよくわかる.多少のオーバーシ

    ユートはあるが,これは時間的に成長することはない.

    これをさらに精度よく計算できるように改良したのが

    Fig.5(d)である.これは,方程式の従属変数を正接関数

    に変換し,それを三次関数で補間している.正接関数の

    特性により,シャープでかつ0と1とに値が局在化した

    波が記述できる[8].

     洞察力のある方は,「∫以外にgという別の量を持っ

    ているから,格子点が倍と同じで,CIP法の姻冗=π

    は通常の方法のh∠冗=π/2に相当するだけであろう」と

    思われるであろう.これは当然である.しかし,Fig.4

    のSpline法を見ていただきたい.この手法では,CIP

    法と同様にgという変数を持っている.でも,通常の手

    法と同程度でしかない.これはなぜだろう.Spline法では

    折角,gという変数を持っていながらこのgを微分が連

    続であるという条件の元に決定しているのである.この

    ため,Spline法では,このgを決定するマトリックスを

    解かなければならない.これで決定されたgは元の方程

    式を満足しているわけではなく,単に解は「滑らかで」

    あるべきという条件を課せられたものでしかない.一

    方,CIP法では,このgが従うべき条件を元の方程式に

    従って決定している.このため,格子点内の情報も元の

    方程式の解(この場合は,一定速度で伝播する波の解)

    に従うことができるのである.

    4.3 JAVA4.3.1 JAVAと‘ま

     シミュレーション等でプログラミングをされたことが

    ある方は一度はJAVAという言葉を耳にしたことがある

    だろう.1995年5月にSunMicrosystemsによって開発さ

    れたオブジェクト指向プログラミング言語『JAVA』は,

    さまざまなプラットフオーム(OS,CPU,・・)上で実

    行可能であることから,瞬く間に世界中に広まった.ま

    たJAVAアプレットを用いることで,ネットスケープナ

    (a)Upwind (b〉LW 島

        O

    亀ε

    馨琶

    (c)CIP (d)CIP鱒tan

    Fig.5 Propagatlon of square wave in one dlmension、Symbol二calculation result after1,000steps wlth CFL=O.1(Une)Analytical result、

    680

  • 講 座 4。CIP法を用いた流体解析 矢部,桜井,青木

    ビゲータ等のWWWブラウザ上で実行可能なグラフィ

    カルなプログラムが作成できることから,イントラネッ

    ト(企業内ネットワーク)では積極的に用いられるよう

    になってきている.JAVAの特徴として,オブジェクト

    指向言語である,プラットフォームを選ばない,ネット

    ワーク対応である(アプレット),などがよくあげられて

    いるが,ここではユンピュータシミュレーションという

    視点でJAVAを評価していこうと思う.

     コンピュータシミュレーションでの利用を念頭に置く

    と,何よりもまず計算速度が気になるところだ.最近で

    は,実行時にJAVAプログラムを実行環境ごとのマシン

    コードに変換するJIT(JustlnTime)コンパイラの普及

    により実行速度が大幅に改善されているが,それでも処

    理能力でCやC++言語の20倍程度の遅さになると言わ

    れている.ごく最近の話題では,㈱シマンテックでJAVA

    アプレットの実行速度を高速化するプラグイン技術が開

    発され,通常の2倍程度でアプレットの実行ができるよ

    うになったそうである(http://www.symantec。com/re-

    gion/jp/products/jitspeed/litspeed.html).

     また,富士通からJITを用いずに直接プラットフォー

    ム上で動作可能なコードに変換するコンパイラが提供さ

    れており,これを用いることで現存のC++言語コンパイ

    ラ並の実行速度が得られるようになったと発表されてい

    る (httpl//www。fujitsu.co.jp/hypertext/softinfo/

    product/use/jac/products.html).JAVA言語の普及速

    度,開発速度から考えると,将来的に実行速度に関して

    は他の言語と比較してそれほど間題にはならないように

    なるであろう.

     開発環境は,無償で提供されているものから,ベンダー

    から統合環境として提供されているものまで様々なもの

    があり,ユーザが自由に選択できるようになっている.

    JAVAは,C++をシンプルにした言語であると言われて

    おり,C言語に比べるとポインタや構造体を排除した

    分,習得しやすくなっている.オブジェクト指向言語で

    あるC++を習得されている方は非常にとりかかりやす

    いと思う.また,C言語で用いられていたポインタを排除

    することにより,メモリの不正アクセスが故意にも,偶

    発的にも生じなくなり, 『不正な処理』をしないための

    セキュリティ機能も強化されている.

     そして,数値シミュレーションにとっての最大のメリ

    ットはアプレットを用いたグラフィックスの作成にある

    だろう.他の言語ではコンパイラに付属してくるライブ

    ラリによってはグラフィックスを扱うことができたが,

    概してその使用方法は複雑であり,その利用をためらわ

    せるようなものばかりであった.JAVAを用いると,非

    常に簡単に計算状況をWWWブラウザ上に表示するこ

    とが可能であり,・でンターネット上に様々な場所で公開・

    されているJAVAプログラムを模倣し,アレンジするこ

    とで自分の好みにあったGUI(Graphlcal User Inter-

    face)までもが簡単に作れてしまう.このグラフィクス機

    能に注目して,計算コードはCやFORTRANで書いてお

    き,その制御用GUIをJAVAで作るといった人もいるよ

    うだ.

     JAVA言語は現段階では実用に耐えられるだけの処理

    能力を持ち合わせていないが,プラットフォームを選ば

    ない『移植性』,JAVA利用人口増大にともなう『将来

    性』,プログラミングの簡易さと,標準で利用できるグラ

    フィックスライブラリによる『利便性』を考慮すると,

    『処理能力の解決』がなされた時,コンピュータシミュ

    レーションの開発に新しい選択肢として参入してくるこ

    とであろう.

    4.3.2JAVAによるサンフ。ルプログラム

     JAVAを用いることでGUIを含め,グラフィックスの

    利用が非常に簡単になることを先に述べた.JAVAプロ

    グラムのコアの部分はC++言語の機能を限定したよう

    なものなので,ここではJAVA特有のグラフィックスに

    関する機能を紹介することにしよう.

     JAVAは標準でグラフイックスやウィンドウ,ユーザ

    インターフェースを扱うためのクラスパッケージAWT

     (AbstractWindowToolkit)を持っている.AWTは,

    異なるプラットフォーム上でも同じ機能が提供できるよ

    うに作られてるため,その機能は限定されているが,数

    値計算結果を示すだけであればそれだけでも十分だと思

    う.主なグラフィックスの機能として,

    ・長方形,楕円,直線,多角形を描く.

     それらの図形を塗りつぶす.

    ・文字列を描く.

    といったものが挙げられる.また,AWTにはGU王を作

    るためにボタンやスクロールバーといったコンポーネン

    トが用意されており,機種に依存しないGUIを作成する

    ことが可能である.GUIを作成するに当たって使用でき

    る部品には,

     ラベル,スクロールバー,リスト,選択メニュー,チ

     ェックボックス,ボタン,テキストボックス(テキス

     トの書き込み),キャンバス(絵の描画),フレーム(新

     規ウィンドウの作成),ダイアログボックス(ポップア

     ツプウインドウなど)

    などが用意されている.JAVA2では,これらの機能とと

    681

  • ~~~:7 -

    List 1

    ~^~~~~i~*-~-~~~~ ~~76~~~i~7~~ 2000~~ 7 ~

    An example of JAVA programming.

    public class RTinsta extends java.applet.Applet implements Runnable{

    /* ~~..~'~C~)~~~14~ *l

    Image dBufl; Graphics gl; Thread th = null; public Int Lengthx,Lengthy;

    int sleeptime = 5: int loop = O; double CFL = 0.1;

    CFD 2 D c = new CFD 2 D O ;

    /* JAVA ~~r~f~j~i~;~~y ~~~fl'*~L~~~~('?~;~t~). ;~~y ~l~ * init(),start(),run(),stopO t~:~ ~~)f~~t~:r ~/ h ~:r- *

    * )V ~ ~L~) .

    /* j~T~f~~;~~~/ ~(7)~~~:.~4~ *l public void init () {

    Lengthx = 400; Lengthy = 440;

    c.InitParam (Lengthx,Lengthy-40,CFL) ;

    c.AddPtv (Lengthx,Lengthy) ;

    dBufl = createlmage (Lengthx,Lengthy) ;

    g I = dBuf I . getGraphics O;

    setBackground (new Color (1, 1, 1) ) ; }

    /* j~7~f~ ~;~ l/ y ~(7);~ ~7- h *l public void start O {

    if(th == null) {

    th =new Thread (this) ;

    th.start () ;

    }

    }

    /* j~~~f~~;~l/y~a)~~~4'f *l / * -~/ ~ ;L ~- ~/ ~ ~/ y~l 7~ ~(7))c 4 :/ )V- ~j~ runO ~1~~~~4'?

    * ~~L;~. 7~7;~~~-;l~'- ~~>~)a)~~:/ h ~~~*-~~~t~~~~~-~~ * ~f~ ~L~~)~, f~~i~ Lf._- GUl ~> ~~))~~jl~P~:~~~~R~:~ ~L;~.

    public void run O {

    while (true) {

    try {

    c.AdvectionPhase O ;

    c.Solver () ;

    c.AdvectTime O ;

    c.MirrorBoundary O ;

    repaint () ;

    if(100po/020= = O) {

    th.sleep (1000) ; }

    th.sleep (sleeptime) ;

    loop++; } catch (InterruptedException e) {}

    }

    }

    *

    *l

    * *

    *l

    682

  • ~~~1~ 4. CIP~~~,;~Iv*f._-~,,**f~~~~~

    / * jrl 7~ ~;~ 1/ y ~a)4・.--,**~-lh

    public void stop () {

    if (th!=nulD {

    th.stop () ;

    th = null; }

    }

    *l

    l* l*

    * *

    ;~~y ~+~ ~D~C~~:}~~L~~~~~i~1~l~C *l )~~y hr~~ ~repamt()~ n~~~d~1~~L;~~ ~l~'~pamtOeC * ~I]i'~~~j~~~, 777~ y ~a)~:~=~~:~T1) ~~~iu~li~Graphics 4 / * ;~ ~ :/;~ ~;~)1 ~C'4~'T~)~L~.

    *l public void paint (Graphics g) {

    g.setColor (Color.black) ;

    gl. clearRect (Lengthy, O, Lengthy - 40, Lengthx) ;

    if(100po/020= = O) {

    gl . clearRect (O, O, Lengthx,Lengthy) :

    c.DrawGraphic (gl, Lengthx.Lengthy) ; }

    g.drawlmage (dBufl , O, O, this) ;

    g.setColor (Color.white) ;

    gdrawStrmg("Tlme "+CFL*O 6 50*100p 10 Lengthy~5) ; }

    ~

    }

    ~ ~

    ~~

    ~ ~~~~~ ~ ! d ~ X~~~ ~~~' **.*・,・ ,

    ^~i

    ~; i ~~~~~~

    ~J ~

    ~~"~ ~~~ ~~~;~~ ~ ~~

    ~ ~ ~~ ~~#~; '

    E ~~~ f

    ~~ ~ ~

    Fig.6 Two-dimensional simulation of Rayleigh-Tay]or instability by JAVA programming.

    683

  • プラズマ・核融合学会誌 第76巻第7号  2000年7月

    もにJAVAファンデーションクラス(JFC)を実装する

    ことにより,他のプログラムとの連携や印刷が容易にな

    った.

     今回ここで紹介するサンフ。ルプログラム(Listl)はこ

    れらの機能の一部を使って作成したもので,二次元のレ

    イリーテイラー不安定性を扱ったものである.このプロ

    グラムでは,長方形の塗りつぶしを用いて計算空間中の

    値を色で表現しており,また計算プログラム中の時間を

    リアルタイムで表示するように作成した.

     紙面の関係で一つ一つの命令の詳細は省略するが,

    JAVAプログラミングの雰囲気でもつかんでいただくだ

    けにして,興味のある読者ばJAVAプログラミングのテ

    キストを参照していただきたい.このプログラムを用い

    て計算・表示した結果をFig。6に示す.このアニメーシ

    ョンは実際にホームページ(httpl//www.nr.titech.acjp

    /~ksakurai/CFD/RTinsta/java.html)で動いている.

     結果をリアルタイムで見ることができるメリットとし

    て,デバッグの速さがまず挙げられるであろう.計算領

    域のどの部分から計算がおかしくなっているかがわかれ

    ば比較的プログラム中のバグに見当を付けやすいからで

    ある.プログラミングを行う上で,デバッグ用のコード

    をしばしば用いる.おそらくそれと同等ないし,それ以

    下の行数でJAVA用のグラフィックコードが実装できる

    ので,デバッグのための労力の軽減にもなるであろう.

     JAVAについて簡単な説明を行ってきたが,まず実際

    にJAVAでプログラミングを行ってみることをお勧めす

    る.JAVAに限らずプログラム言語には必ず長所もあれ

    ば短所もある.常に言われていることだが,プログラム

    言語を習得するためには『習うより慣れろ』が基本で,

    簡単なコードでも自分の手で書けるようになってはじめ

    てその言語の良さがわかってくるものだと思う.

    4.4 まとめ

     今までに,多数の雑誌に解説を行ってきたので,今回

    はCIP法の計算例や詳細は省略した.最近の進展をご覧

    になりたい方は,溶接学会誌[9]および日経サイエンス

    [10]をごらんいただきたい.

            参考文献[1]矢部 孝二日本物理学会誌47,18(1992).

    [2]矢部 孝:プラズマ・核融合学会誌70,640(1994).

    [3]矢部 孝:ながれ15,367(1996).

    [4]矢部 孝二機械の研究49,83(1997).

    [5]T.Yabe,CFD Review l98(WorldScientific,1998).

    [6]T.Yabe,(lnvited lecture)16th International Confer-

      ence on Numerical Method in Fluid Dynamics,July

      l998,France.

    [7]矢部 孝:プラズマ・核融合学会誌76,CD-ROM I

      (1999).

    [8]T.Yabe an(1F.Xiao,」.Phys.Soc.Japan,62,2537(1993).

    [9]矢部 孝:溶接学会誌68,452(1999).

    [10]矢部 孝=日経サイエンス7月号,58(2000).

    684