Java による実践的科学技術プログラミング()―数値計算，グラフの描画，およびデータの入出力―
小山

敏

幸

Java に限った話ではないが，基本的に通常の Windows ソ. は じめにフトウェアを作成することを目的としてしまうと，イベントドリブン型の部分，すなわち，ボタンやツールーバー，テキ本連載講座は通常の Java の解説ではない点を，あらかじストボックス，クリック，ドラッグ，･･･など，本来の数値めお断りしておく．従来， Java 関連の書籍では，文字列を計算部分とは全く無関係な部分を作りこまなくてはならなく``Hello World'' と表示するところから始まり，クラスの概なるために， Windows プログラミングは非常に複雑になる念，インスタンスの生成，継承，･･･等，オブジェクト指向(コンポーネントウェアの概念にてプログラミングの手間はのプログラミングの考え方が展開される場合が多い． Java

かなり削減されてはいるが，根本的に数値計算以外の部分がを用いてソフトウェア(ごく簡単なものも含めて)を作成する多く煩雑である点にかわりはない)．数値計算をしたいだけことを目的とするならば，このような教科書は有用である．

であるならば，ボタンやツールーバー，クリック，ドラッグ

しかし，技術者・研究者で，ソフトウェア作成ではなく，単などのイベントドリブン型の部分の知識は全く必要ないの

純に数値計算がしたいだけであるならば，上記のテキストので，この部分の学習は後回しでかまわない(後々，きちんと大部分は必要のない知識である．なぜならば，通常，技術した Windows ソフトウェアを作成したくなった時にあらた者・研究者が計算において必要とする操作の大部分は，以下めて勉強すれば良い)．の 3 種類のみであるからである．

もう 1 つ最近のパソコンの高性能化をあらためて考えて

手続き的な数値の計算みていただきたい．現在のパソコンは， 10 年前の通常の大

結果の可視化(グラフや画像)型計算機並みの能力がある． 10 年前，数千万単位であった

数値データの保存と読み出しマシンが，現在は数万円で個人的で購入できるのである(実きちんとしたソフトウェア作成自体を目的としなければ，プ験機器でたとえるならば， 10 年前の最新鋭の電子顕微鏡ログラムにおいて，ボタン等のコンポーネントの作成や過度が，現在，個人で買えるようになったようなものである)．の例外処理などは必要ない．単にソースプログラムが書け

これを研究・教育に使わないのは，明らかにもったいない．て，それをコンパイルし，上記 3 つの操作に対して，プロもちろん，既存のソフトウェアは豊富であり，文書作成や研グラムを実行し，結果さえ得られれば良い(計算結果の数値究発表などでパソコンは大いに活用されている．しかし，みデータさえ保存できれば，それを綺麗にグラフ化・可視化すずからソースコードを書いて数値計算する用途には，あまりるソフトは巷にあふれている)．プログラムに入力値が必要使用されていないのではないだろうか．本当は誰でも簡単にな場合には，極論すれば，ソースコードに毎回直接書き込プログラミングして数値計算できるのである．

み，その都度コンパイルして実行しても，ほとんどの場合，そこで，本解説では，上記の 3 つの操作に限定して，非日常必要とする数値計算に支障は起きない．さらにプログラ

常に簡単に Java アプリケーションを作成する手法を解説すムも，実行するたびにその都度強制終了するものであってもる．なお Java アプレットについては言及しない．Java アプ

かまわないのである．

レットには，インターネット上で稼動するソフトウェアを簡

独 物質・材料研究機構 新構造材料センター，組織・特性計算グループ 主幹研究員(〒3050047 つくば市千現 121)
Practical Java Programming in Materials Science and Engineering (I) ―Numerical Calculation, Graph Drawing and Data Input/Output―;
Toshiyuki Koyama (National Institute for Materials Science, Structural Metals Center, Tsukuba)
Keywords: Java application, Windows software, scientific calculation, programming, personal computer
2009年 4 月17日受理

入 門 講 座

単に作成できる利点があるが，セキュリティーの関係で，デさて，ソースコードのコンパイルおよび実行方法についてータのディスクへの保存機能がない．これでは数値計算して説明しよう．ソースコードの名前をたとえば， ``F _ curve.

 の操作を実行できず，もデータを保存できないので，上記

java'' とする．F_curve.java の形式は通常のテキストファイ

技術者・研究者における日常の数値計算の目的からはふさわルである( MS Windows の“メモ帳”などで読み書きできしくないからである．ちなみに， Java アプリケーションをる形式)．ソースコードをコンパイルするために，バッチフJava アプレットに書き直すことは，それほど難しくはな

ァイルを作成しておくと良い．著者は，図のようなバッチ

く，また Java アプレットに関しては多くの入門書が出版さファイルを使用している．ファイル名は ``vjc.bat'' で(ファれているので，興味のある読者はトライされることを薦め

イル形式はテキストファイル)，内容を図 1 に示す( Java 本る．言語として Java を選んだ理由は， Java は OS に非依存体は C:¥jdk1.6.0 _ 13 にインストールされている場合を想定であるので， MS Windows でも MAC でも Linux でも，同している)．このバッチファイル vjc.bat とソースコード F_一のソースプログラムにて計算が可能となるからである．特curve.java は， C:¥tmp_program にあるものとする．コマンにグラフィックスに関するライブラリーが OS に依存しないドプロンプト(通称 DOS 窓とも呼ばれ， MSWindows のア点も重要である．さらにインターネットを通じて無料でプロ

ク セ サ リ ー 内 に あ る ． も し 見 当 た ら な け れ ば ， C:¥WIN-

グラミング環境が入手できる点も重要であろう．

DOWS¥system32¥cmd.exe のショートカットを作成して，さて，3 回にわたる本講座にて説明するプログラムについては，以下を計画している．
第 1 回自由エネルギーを例題とした数値計算，グラフの描画，およびデータの入出力
第 2 回拡散相分離の Phasefield シミュレーションプロ
グラム
第 3 回無拡散変態の Phasefield シミュレーションプロ
グラム

スクリーン上に持ってくると良い)を起動し，カレントディ
レクトリを C:¥tmp _ program に移動して， C:¥tmp _program＞vjc F_curve.java と入力しリターンすることによって，F_curve.java がコンパイルされる．エラーがなければクラスフ

ァイル F _ curve.class が生成される．エラーがある場合には，エラ－メッセージとそのエラーが存在するソースコード上の行番号がコマンドプロンプト画面に示されるので，エラ－メッセージに従いソースコードを修正する．

著者が相変態のシミュレーションを専門としているので，プログラムの実行(得られた F_curve.class の実行)には，題材として，相変態・組織形成に関連する例を取り上げる．

図の バ ッ チ フ ァ イ ル を 使 用 す る と 良 い ( フ ァ イ ル 名 を

相変態・組織形成では，濃度プロファイル等のグラフだけで``vj.bat'' と す る ) ． 具 体 的 に は ， C:¥tmp _ program ＞ vj F _なく，2 次元や 3 次元計算における組織形態変化も計算対象

curve と入力(拡張子の class は必要ない)しリターンすることするので，画像・動画としての面白さも満喫していただけとによって，プログラム( F _ curve.class )を実行することがると嬉しい限りである．なお本稿では， Java 言語自体につできる(なおプログラムを停止するには，画面右上の×をクいての説明は省略させていただく． Java 全体に関しては文リックして，強制終了する)．上記のバッチファイルでは，献(1)(2)，画像関連では文献(3)(5)，工学的な数値計算に毎回，現行の path を書き換えて，処理を行った後，再びついては文献(6)(9)などが参考になると思う．

path を元に戻す操作を行っており，あまりスマートではな

い． OS の path 設定にあらかじめ Java 関連の path を追加

. Java 本体の入手先およびソースコードの実行方法しておけば，この部分の操作は不要となる．

Java 本体のインストールの詳細については， Sun マイクロシステムズのホームページ( http: // java.sun.com / javase /downloads/index.jsp)等を参照していただきたい．また以下，OS は MS Windows XP 以降として話を進める． Java のバージョンに関しては，本計算では JDK 5 以降とし(執筆時における最新バージョンは，JDK 6 Update 13 である)， Javaの イ ン ス ト ー ル 先 に つ い て は ， 上 記 URL か ら Java 本 体

図1

vjc.bat の内容．

図2

vj.bat の内容．

( JDK 6 Update 13 の場合には， jdk 6u13 windows i586 p.exe )をダウンロードして， C ドライブの C:¥jdk1.6.0 _ 13にインストールしていただきたい(ディレクトリは新規に作成)．なお，Java の古いバージョンでは，環境変数 CLASSPATH の設定が必要な場合がある．これについても，本稿では具体的な説明はしないが，インターネットの探索サイトにおいて，キーワード(Java CLASSPATH)などで簡単に調べることができる(基本的にインターネットで簡単に検索できる内容については，本稿では説明を省略させていただく)．

ま て り あ 第48巻 第 9 号(2009)Materia Japan. プログラムの説明
以下では，実際の研究に役に立つ代表的な例題プログラム
F _ curve.java について説明する． F _ curve.java は，以下の一連の操作を行っている．


濃度 c の自由エネルギー関数 G ( c )を計算し， c と G
図3(c)の離散数値データを配列に入力

F_curve.java の構成．


c と G(c)の配列を描画(自由エネルギー曲線)

c と G(c)の配列をディスクに保存数(や配列)が，「グローバル変数」である．コンストラクタ

 で保存された c と G (c )の配列を読み出し，別の配は，このクラスの実体(この場合は画面)を作成する部分であ列に入力る(厳密ではないが，グラフを書くための下地の Window の

 の配列データを再描画

設定と考えても良い)．メインプログラムが実際の計算処理したがって，データの数値計算，グラフ化，保存，および読および描画を行っているプログラム部分である．その後の 4出しの一連の操作が，このコードに含まれている．通常の技

行がサブルーチンで，それぞれ，自由エネルギーの値を計算

術系の計算では，以上が出来れば，ほとんどの作業が可能とする部分，自由エネルギーのグラフの描画，数値データのハなる．なお自由エネルギーの数値データを計算したいだけな

ードディスクへの保存，およびハードディスクからの数値デ と
 は必要ない．
 と
 はデータの読み出し
らば，上記のータの読み出しに対応している(プログラムの実行は，コマ部分の説明のために加えたものである．また上記の関数 G

ンドプロンプトから行うので，標準入出力画面はコマンドプ

は，相互作用パラメータ 25 ( kJ / mol )の正則溶体近似(10) のロンプト画面となる)．

自由エネルギー曲線である．

さてソースコードの中身について具体的に見ていこう．

さて，プログラム F _ curve.java の全体構成は，図のよJava では，ソースプログラムにおいて，ダブルスラッシュうになっている． Java のプログラムの基本はクラス(1)(2) で“//”以降の 1 行がコメント文として扱われるので(C＋＋であり，このプログラムは，F_curve という名前のクラスであも同様)，以下において，プログラムの内容を，ソースプロる(このプログラムには，グラフ表記が含まれるので，グラム内にコメント文として，直接，書き込んで説明する．

Frame クラスを継承して定義している)．図 3 の最初の im-

したがって，このソースコード(以下の文)は，そのままコンport 文は C 言語における include 文に相当する．続いてクラパイルすることができる．さて，説明に入ろう．以下，図 3スの中身について説明する．クラス全体で共通に使用する変と対応させながら見て行っていただきたい．

↓//[プログラム(F_curve.java)] //[インポート文] 
import java.awt.
;import java.awt.event.
;import java.io.
;//[メインプログラム] 
public static void main(String[]args)throws Exception{//例外処理は行わない
F_curve prog＝new F_curve();//F_curve のインスタンス prog を生成//整数
int i;
double temp, c; //温度，組成
public class F_curve extends Frame{//[グローバル変数] 
//濃度軸の分割数＋1
static int ND＝201;//濃度軸の分割数
static int ndm＝ND-1;//Window 全体の幅
static int width;//Window 全体の高さ
static int height;//描画領域の幅
static int xwidth;//描画領域の高さ
static int yheight;//Window の枠の幅(左右および下)
static int insetx;//Window の枠の幅(上)static int insety;//円周率
static double PI＝3.141592;//ガス定数
static double RR＝8.3145;
static double[]ch＝new double[ND]; //濃度
static double[]Fh＝new double[ND]; //自由エネルギー
static double[]c2h＝new double[ND]; //濃度(あらためてデータを読み出した時に使用)
static double[]F2h＝new double[ND];//自由エネルギー(あらためてデータを読み出した時に使用)//(ch,Fh)を描くか，(c2h,F2h)を描くかを区別するフラグ
static int color_flg;//自由エネルギー曲線画面のグラフィックスオブジェクト
static Graphics g;//[コンストラクタ] 
public F_curve(){//描画画面の横と縦の長さ(ピクセル単位)
xwidth＝600; yheight＝400;//描画画面の枠の長さ
insetx＝4; insety＝30;//描画
width＝xwidth＋insetx
2;
Window 全体の横の長さ
height＝yheight＋insetx＋insety; //描画 Window 全体の縦の長さ//描画 Window をセット
setSize(width, height);//描画 Window の描画部の色を白に設定
setBackground(Color.white);//描画 Window を見えるようにする
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}//Window を閉じる時の設定(Window の右上×の設定)});}//---- 温度を設定----------------------------------------------------------------------------------------------//[K]temp＝1000.0;//---- 標準入出力(コマンドプロンプト)より，温度を入力する場合-----------------------------------------------//
Java の場合，標準入出力からの数値データ入力は，下記のように面倒であるので，//
ここでは，参考までに定番の書式を示しておく//////温度(文字列)
String s_temp;//
BufferedReader input＝new BufferedReader(new InputStreamReader(System.in));//s_temp＝``1000.0''; //標準値を設定//try{System.out.print(``temp(1000.0)/K＝ ''); s_temp＝input.readLine();}//catch(IOException e){System.out.println(``Exception''＋e);}////文字列を数値に変換
temp＝new Double(s_temp).doubleValue();//---

自由エネルギーの計算--------------------------------------------------------------------------------for(i＝0; i＜＝ndm; i＋＋){c＝ch[i]＝(double)i/(double)ndm;
if(c＝＝0.0){c＝1.0e－6;}if(c＝＝1.0){c＝1.0－1.0e－6;}//c＝1 と c＝0 の log 関数エラーの回避//自由エネルギーのサブルーチンを呼んでいる
Fh[i]＝prog.G(c,temp);
System.out.printf(``f e ¥n'',c,Fh[i]);//標準入出力へ，濃度と自由エネルギー値を表示
}

//---

自由エネルギーの描画-------------------------------------------------------------color_flg＝0; prog.repaint();//---

データの保存--------------------------------------------------------------------------prog.datsave();//---

描画が速すぎるので，強制的に 5 秒スリーブ---------------------------Thread.sleep(5000);

入 門 講 座

igy1＝(int)((double)iymin＋(double)iymax－(((double)iymax－(double)iymin)/(ymax－ymin)
(gy1－ymin)＋(double)iymin));(gx2－xmin)/(xmax－xmin)
igx2＝(int)(((double)ixmax－(double)ixmin)
＋(double)ixmin);igy2＝(int)((double)iymin＋(double)iymax－(((double)iymax－(double)iymin)/(ymax－ymin)
(gy2－ymin)＋(double)iymin));//濃度と自由エネルギーの値をスクリーン上のピクセル値に変換
g.drawLine(insetx＋igx1, insety＋igy1, insetx＋igx2, insety＋igy2);//2 点を直線で結ぶ//--- 上記で保存したデータを別の配列に読み込み---------------------------prog.datin();//--- 新しく読み込んだ配列の自由エネルギーを再描画--------------------color_flg＝1; prog.repaint();//---------------------------------------------------------------------------------------------------System.out.printf(``¥n 終了しました．グラフの右上×をクリックして終了してください．¥n'');}//main}}else{//再描画の場合(color_flg＝1 の場合)//色を青に指定
g.setColor(Color.blue);//個々の点に小さな青丸を描く
for(i＝0; i＜＝ndm; i＋＋){//濃度と自由エネルギーの値
gx1＝c2h[i]; gy1＝F2h[i];(gx1－xmin)/(xmax－xmin)
igx1＝(int)(((double)ixmax－(double)ixmin)
＋(double)ixmin);igy1＝(int)((double)iymin＋(double)iymax－(((double)iymax－(double)iymin)/(ymax－ymin)
(gy1－ymin)＋(double)iymin));//濃度と自由エネルギーの値をスクリーン上のピクセル値に変換//青丸の描画g.fillOval(insetx＋igx1－ir, insety＋igy1－ir, 2
ir, 2ir);}}//以下はサブルーチン//[自由エネルギー関数(AB2 成分系の正則溶体近似)] 
double G(double c, double temp){
double c1, c2;
double L0, gc;
if(c＝＝0.0){c＝1.0e－10;}if(c＝＝1.0){c＝1.0－1.0e－10;}//c＝1 と c＝0 の log 関数エラーの回避//組成
c1＝1.0－c; c2＝c;//相互作用パラメータ 25[kJ/mol]
L0＝2.5e＋04;(c1
gc＝L0
c1
c2＋RR
temp
Math.log(c1)＋c2
Math.log(c2)); //自由エネルギー式
return(gc);}//[自由エネルギーのグラフ描画] public void paint(Graphics g){g.clearRect(0, 0, width, height); //Window をクリア
int i, i1, i2; //整数
double xmax, xmin, dx, ymax, ymin, dy;
double gx1, gy1, gx2, gy2;
int ixmax, iymax, ixmin, iymin, igx1, igy1, igx2, igy2;int idx, idy, ir;//横軸の最小値，最大値，分割間隔(実際の値)
xmin＝0.0; xmax＝1.0; dx＝0.1;
ymin＝－1000.0; ymax＝1000.0; dy＝100.0;//縦軸の最小値，最大値，分割間隔(実際の値)
ixmin＝0; iymin＝0; ixmax＝xwidth; iymax＝yheight; //ピクセル単位の場合//青丸の半径ir＝4;(dx/(xmax－xmin))＋0.5);
idx＝(int)(ixmax
(dy/(ymax－ymin))＋0.5);
idy＝(int)(iymax
g.setColor(Color.white);g.fillRect(insetx, insety, xwidth, yheight);//ピクセル単位における横方向の分割間隔//ピクセル単位における縦方向の分割間隔//色を白に指定//画面を上で指定した色で塗る//色を灰色に指定
g.setColor(Color.lightGray);g.drawRect(insetx, insety, xwidth, yheight); //グラフの外周を上で指定した色で描く
for(i＝0; i＜＝ixmax; i＋＝idx){g.drawLine(insetx＋i, insety＋iymin, insetx＋i, insety＋iymax);}for(i＝0; i＜＝iymax; i＋＝idy){g.drawLine(insetx＋ixmin, insety＋i, insetx＋ixmax, insety＋i);}//グラフ内の縦横の線を等間隔に描く//---------------------------------------------------------------------------------------------------if(color_flg＝＝0){ //最初の描画(color_fig＝0の場合)//色を赤に指定
g.setColor(Color.red);for(i＝0; i＜ndm; i＋＋){//個々の隣り合う 2 点を直線で連続的に結ぶ
i1＝i; i2＝i＋1;
gx1＝ch[i1]; gy1＝Fh[i1]; gx2＝ch[i2]; gy2＝Fh[i2]; //濃度と自由エネルギーの値}//
[データの保存] private void datsave()throws Exception{
int i;//保存先ファイル名を ini000.dat とする
PrintWriter outfile＝new PrintWriter(new BufferedWriter(new FileWriter(``ini000.dat'')));//ファイルのオープン(上書きの場合)//PrintWriter outfile＝new PrintWriter(new BufferedWriter//(new FileWriter(``ini000.dat'', true)));//ファイルのオープン(追記の場合)
for(i＝0; i＜＝ndm; i＋＋){
outfile.println(ch[i]); //データの書き込み
outfile.println(Fh[i]); //データの書き込み}//ファイルのクローズ
outfile.close();}//[データの読み出し] 
private void datin()throws Exception{
int i;
String s_data;//入力ファイル名を ini000.dat とする
BufferedReader infile＝new BufferedReader(new FileReader(``ini000.dat'');//ファイルのオープン
for(i＝0; i＜＝ndm; i＋＋){//文字列として読み込み
s_data＝infile.readLine();c2h[i]＝new Double(s_data).doubleValue(); //文字を数値へ変換//文字列として読み込み
s_data＝infile.readLine();F2h[i]＝new Double(s_data).doubleValue(); //文字を数値へ変換}//ファイルのクローズinfile.close();}(gx1－xmin)/(xmax－xmin)
igx1＝(int)(((double)ixmax－(double)ixmin)
＋(double)ixmin);

図は上記プログラムを実行した時の自由エネルギー曲線// }//F_curve// プログラム終了 . おわりにである．縦軸が自由エネルギーで，横軸が組成，始めに図4 ( a )の曲線が表示され， 5 秒ほどしてから，図 4 ( b )のようF _ curve.java は 1 例題に過ぎないが，これを修正・改良に曲線が上書きされる．ここでのグラフ表示は，計算時の結することによって，様々な技術系の数値計算に対応したプロ果確認を意図しており，キレイなグラフ作成を目的としていグラムを自由に作成することができる．実際，次回以降の組ない．したがって，単に曲線の描画のみにとどめ，縦軸や横織形成シミュレーションでは， F _ curve.java を修正してプ軸の説明などの表示は全て省略している．曲線の数値データログラミングしている．また本プログラムは各種の実験デーはハードディスクに保存されているので，たとえば論文用なタの解析などにも役立つ．筆者の経験から， Java は勉強す

どの図を描きたい時には，この数値データを各種のグラフ作るのに少しバリヤーがあると思う．本稿でそのバリヤーを幾成ソフト等に読み込んで綺麗に清書すればよい．最近では，分でも下げることができたならば望外の喜びである．特に本非常に優れたグラフ作成ソフトや可視化ソフトが簡単に入手

稿を読まれた学生さんに申し上げたい．本コードを書き直しできるようになった．多くのグラフ作成ソフトには，関数をて自在に使いこなせるようになったならば，これは間違いな定義して曲線を描く機能は内蔵されている．関数が初等的でく，あなたの一生の財産になります．

簡単な式ならば問題はないが，数値積分や収束計算などが含

なお本入門講座にて説明するソースコードやバッチファイまれる場合には役にたたない．ここで説明した手法ならば，

ル は ， 全 て 著 者 の ホ ー ム ペ ー ジ ( http: // www.nims.go.jp /もともとソースコードを自分で書いているのであるから，いmpsg/PhaseField_Modeling.htm )よりダウンロードできるかなる計算にも対処でき，ソフトの制約を受けない．

ので，ご自由にお使いいただきたい(ただし本プログラム等
に関して不具合・トラブルがあっても，著者および社団法人

ま て り あ 第48巻 第 9 号(2009)Materia Japan


文

献

( 1 ) 宮坂雅輝エッセンシャル Java ( 2nd edition)，ソフトバンククリエイティブ，(2003)．
( 2 ) 桑原恒夫 3 日で解る Java ―例題学習方式(第 2 版版)，共立出版，(2000)．
( 3 ) 中山 茂Java2 グラフィックスプログラミング入門，技報堂
出版，(1999)．
( 4 ) 山本芳人Java による図形処理入門，工学図書，(1998)．
( 5 ) 赤間世紀 Java による画像処理プログラミング，工学社，(2007)．
( 6 ) 峯村吉泰 Java で学ぶシミュレーションの基礎，森北出版，(2006)．
( 7 ) 峯村吉泰 Java によるコンピュータグラフィックス―基礎からシミュレーションの可視化まで，森北出版，(2003)．
( 8 ) 峯村吉泰 Java による流体・熱流動の数値シミュレーショ
ン，森北出版，(2001)．
( 9 ) 矢部 孝，尾形陽一，滝沢研二CIP 法と Java による CG シミュレーション，森北出版，(2007)．
(10) たとえば，阿部秀夫金属組織学序論，コロナ社，(1967)．
★★★★★★★★★★★★★★★★★★★★★

図4

自由エネルギー曲線の計算結果．
(a) 1 回目の描画，(b) 2 回目の描画．
小山敏幸

日本金属学会は責任を負いませんのでご了承ください)．
次回は，拡散相分離における 1 次元濃度プロファイルの時間発展，および 2 次元濃度場の時間発展のプログラムについて解説する．また今回省略した画像関連の事項についても若干説明する予定である．

1988年 3 月 名古屋工業大学大学院 工学研究科 博士前期課程修了
1990年 4 月 名古屋工業大学大学院 工学研究科 博士後期課程単位取得後退学
1990年 4 月 名古屋工業大学 工学部 材料工学科
助手
独 物質・材料研究機構 計算材料科学研
2002年 4 月 究センター 主任研究員
独 物質・材料研究機構 計算材料科学研
2005年 4 月 究センター 主幹研究員
独 物質・材料研究機構 計算科学センタ
2006年 4 月 ー 主幹研究員
独 物質・材料研究機構 新構造材料セ2009 年 4 月 ンター 主幹研究員
現在に至る．
博士(工学)

専門分野材料工学
主に材料組織形成の計算機シミュレーション研究に従事．

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★



入 門 講 座