スクリプト言語を用いたPHITSの連続実行

Slides:



Advertisements
Similar presentations
情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
Advertisements

システムプログラミング 情報工学科 篠埜 功 情報工学科 3 年生対象 専門科目 第5回 シェルスクリプトの続 き レポート課題 main 関数の引数 usage メッセージ.
Faculty of Computer and Information Sciences, Hosei University Resource Administration Team CIS RAT 1 Linux リテラシ 2006 第 3 回 エディタ、シェル.
1 繰り返し処理 while 文 と do 文 所定回反復(特定回数の繰り返し)には for 文を用いた while( 式 ) 文 式が真であるかぎり、文を繰り返し実行する 繰り返す回数が不定の場合に用いる 繰り返し回数が明示的に決まらない場合には while 文、 do 文を用いる ある手順を、例えば.
P HI T S PSFC4PHITS の使い方 Multi-Purpose Particle and Heavy Ion Transport code System Title 年 2 月改訂.
P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title 年 2 月改訂.
BBT大学 Ruby on Rails開発環境セットアップマニュアル
実習1:コマンドシェルの使い方.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
Macユーザーの方:データ転送 ターミナル使用.
JavaScript プログラミング入門 2006/11/10 神津.
Fortran と有限差分法の 入門の入門の…
シェル シェルスクリプト 最低限vi 山下 達也 (北大理・宇宙理学専攻) INEX 第4回/最低限 UNIX(Linux) その3
シェル シェルスクリプト 最低限vi 山下 達也 (北大理・宇宙理学専攻) INEX 第4回/最低限 UNIX(Linux) その3
強度変調回転放射線治療(VMAT)の シミュレーション
Multi-Purpose Particle and Heavy Ion Transport code System
京都大学情報学研究科 通信情報システム専攻 湯淺研究室 M2 平石 拓
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
IO - 入出力 小西 亨.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
JavaによるCAI学習ソフトウェアの開発
数値計算及び実習 第3回 プログラミングの基礎(1).
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
山田 由貴子 (北大理・地球惑星科学専攻) 2004年10月29日
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
C言語 配列 2016年 吉田研究室.
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
第6章 2重ループ&配列 2重ループと配列をやります.
アルゴリズムとデータ構造 補足資料6-3 「サンプルプログラムcat3.c」
実習1:コマンドシェルの使い方.
2017/4/9 情報処理 第5回.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
初年次セミナー 第2回 文字の出力.
EGS5のWindows PC へのインストール
第7回 条件による繰り返し.
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
情報処理概論Ⅰ 2007 第4回 2018/11/30 情報処理概論Ⅰ 第4回.
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
Multi-Purpose Particle and Heavy Ion Transport code System
KEK 波戸 、平山 最終変更 テキスト:installation_guide.pdf
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
EGS5のWindows PC へのインストール
コンピュータに計算させる命令を確かめよう!
IAEA phase space fileを用いた X線治療シミュレーション
第7回 条件による繰り返し.
2016年度 植物バイオサイエンス情報処理演習 第6回 情報処理(4) データを加工する・2
Multi-Purpose Particle and Heavy Ion Transport code System
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
Multi-Purpose Particle and Heavy Ion Transport code System
コーパス言語学 ~バッチ処理~ 2013.10. 28.
プログラムの基本構造と 構造化チャート(PAD)
Multi-Purpose Particle and Heavy Ion Transport code System
基礎プログラミング演習 第12回.
情報工学科 3年生対象 専門科目 システムプログラミング 第4回 シェルスクリプト 情報工学科 篠埜 功.
C言語 はじめに 2016年 吉田研究室.
UNIX演習 情報ネットワーク特論資料.
統計ソフトウエアRの基礎.
UNIX演習 情報ネットワーク特論資料.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
基礎プログラミング演習 第3回.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第3回Bashゼミ for文処理について 発表者 直江 宗紀.
Presentation transcript:

スクリプト言語を用いたPHITSの連続実行 Multi-Purpose Particle and Heavy Ion Transport code System スクリプト言語を用いたPHITSの連続実行 2017年1月改訂 title 1

本実習の目標 スクリプト言語の基本的な使用方法を習得し、複数回のPHITSの実行を自動的にできるようにする。 @echo off SET PHITSEXE=“C:\phits\bin\phits274_win.exe“ for /l %%i in (1, 1, 3) do ( %PHITSEXE% < lec0%%i.inp copy phits.out phits%%i.out ) pause exit Lec01.inp, lec02.inp, lec03.inpを連続で実行するスクリプト Purpose 2

スクリプト言語とは ソフトウェアの動作内容を記述し制御するための、簡易的なプログラミング言語 コマンドプロンプト(Windowsの場合)で実行できるコマンドを書き並べたファイルを作ることで、様々なソフトウェアの動作を自動的に実行することができる テキストエディタで編集でき、拡張子がbatであれば使用可能(Windowsの場合) ファイルのコピーや移動、ファイルの内容の読み込みや書き出しが可能 あるソフトウェアを実行するコマンドを複数書くことでその回数分の実行が可能 Script 3

実習内容 Windows版 Mac版 Table of contents 4

課題1 “Hello PHITS world”と出力されるスクリプトファイルを作成してみましょう テキストエディタでtest.batを開く Echoコマンドを使う Echo *** と書くことで***の部分が書き出される test.batをダブルクリックして実行 Test-1.bat おまじない1 不必要な情報が 出力されなくなる @echo off pause exit ここにコマンドを書く おまじない2 スクリプト終了時に一旦停止 Script 5

課題1の答え合わせ “Hello PHITS world”と出力されるスクリプトファイルを作成してみましょう Script 6 Test-1.bat @echo off echo Hello PHITS world pause exit 実行すると、 Script 6

課題2 “Hello PHITS world”を新規ファイルfile.txtに書き出すスクリプトファイルを作成してみましょう テキストエディタでtest-2.batを開く Echoコマンドを使う Echo *** > file.txt と>(リダイレクト)を使って書くことで***の部分がfile.txtに書き出される Test-2.batをダブルクリックして実行 Test-2.bat >(リダイレクト)を使う @echo off echo Hello PHITS world pause exit Script 7

課題2の答え合わせ “Hello PHITS world”を新規ファイルfile.txtに書き出すスクリプトファイルを作成してみましょう Test-2.bat @echo off echo Hello PHITS world > file.txt pause exit 実行すると、file.txtというファイルが作られる file.txt Hello PHITS world Script 8

課題3 変数に“Hello PHITS world”を代入してfile.txtに書き出してみましょう Setコマンドを使う Set aaa= *** と書くことで*** (文字列)の部分が変数aaaに代入される 書き出しはechoコマンドを使う 変数を使う場合は%aaa%のように%記号で囲む Test-3.bat 変数aaaに代入しましょう @echo off Set Hello PHITS world echo > file.txt pause exit 変数aaaを書き出しましょう Script 9

課題3の答え合わせ 変数に“Hello PHITS world”を代入してfile.txtに書き出してみましょう Script 10 Test-3.bat =の前後に空白を入れないように注意しましょう @echo off set aaa=Hello PHITS world echo %aaa% > file.txt pause exit 実行すると、file.txtの内容は file.txt Hello PHITS world Script 10

課題4 数字を代入した変数を使って定義したfile2.txtに“Hello PHITS world”を書き出してみましょう Setコマンドを使う Set /a iii= *** と書くことで***(数字)の部分が変数iiiに数値として代入される Set /a iii=iii+1 と書くことで演算が可能 文字列の一部として変数を使うことができる file%iii%.txt のように%記号で囲んだものを差し込む Test-4.bat @echo off set aaa=Hello PHITS world set /a iii=1 set /a echo %aaa% > file.txt pause exit 1が入っている変数iiiを 2にするには? File2.txtとなるように 書きかえましょう Script 11

課題4の答え合わせ 数字を代入した変数を使って定義したfile2.txtに“Hello PHITS world”を書き出してみましょう Test-4.bat @echo off set aaa=Hello PHITS world set /a iii=1 set /a iii=iii+1 echo %aaa% > file%iii%.txt pause exit 実行すると、file2.txtが新しく作成され file2.txt Hello PHITS world Script 12

課題5 File.txtの内容を読み込んでfile2.txtに追記しましょう forコマンドを使う Echoコマンドを使う Script for /f "tokens=1-3" %%a in (file.txt) do ( コマンド ) と書くことでfile.txtから読み込んだ情報を使って括弧()で囲まれたコマンドを実行する 読み込みは1行ずつ行い、読み込んだ情報は変数%%a, %%b, %%cに代入される “tokens=1-3“をオプションとして書くことにより、空白を区切りとして左から3つの情報が変数として代入される Echoコマンドを使う Echo %%a >> file2.txt と書くことで変数%%aの内容がfile2.txtに追記される (読み込んだ変数は%で挟む必要はない) Script 13

課題5 File.txtの内容を読み込んでfile2.txtに追記しましょう Script 14 Test-5.bat @echo off set /a iii=2 for /f "tokens=1-3" %%a in (file.txt) do ( ) pause exit 読み込んだ“Hello PHITS world” がfile2.txtに追記されるように しましょう Script 14

課題5の答え合わせ File.txtの内容を読み込んでfile2.txtに追記しましょう Script 15 Test-5.bat @echo off set /a iii=2 for /f "tokens=1-3" %%a in (file.txt) do ( echo %%a %%b %%c >> file%iii%.txt ) pause exit 変数%%aに”Hello” %%bに” PHITS” %%cに”world” が代入されているので、 これらを並べて文章を作成する 実行すると、file2.txtの内容は file2.txt Hello PHITS world Script 15

課題6 File.txtをコピーしてfile1.txt, file2.txt, file3.txtを作成しましょう copyコマンドを使う Copy file.txt file1.txt と書くことでfile.txtの内容がfile1.txtにコピーされる forコマンドを使う for /l %%i in (1, 1, 3) do ( コマンド ) と書くことで、変数%%iの数字を1→2→3と変えながら括弧()で囲まれたコマンドを実行する Test-6.bat @echo off for /l %%i in (1, 1, 3) do ( ) pause exit 変数%%iを使って、File.txtを File%%i.txtにコピーしましょう Script 16

課題6の答え合わせ File.txtをコピーしてfile1.txt, file2.txt, file3.txtを作成しましょう Script Test-6.bat @echo off for /l %%i in (1, 1, 3) do ( copy file.txt file%%i.txt ) pause exit 実行すると、file1.txt, file2.txt, file3.txtが作成され File1(2,3).txt Hello PHITS world Script 17

課題7 If文を使って、file2.txtにだけfile.txtの内容をコピーするようなスクリプトを作成しましょう ifコマンドを使う If %%i == *** ( コマンド ) と書くことで変数%%iの数字が***の場合のみ括弧()で囲まれたコマンドを実行する Test-7.bat @echo off for /l %%i in (1, 1, 3) do ( copy file.txt file%%i.txt ) pause exit Ifコマンドを使って、変数%%iが2の場合のみコピーするようにしましょう Script 18

課題7の答え合わせ If文を使って、file2.txtにだけfile.txtの内容をコピーするようなスクリプトを作成しましょう Script Test-7.bat @echo off for /l %%i in (1, 1, 3) do ( if %%i == 2 ( copy file.txt file%%i.txt ) pause exit 実行すると、file2.txtのみ作成される Script 19

課題8 PHITSを実行するスクリプトを作成し、自動でlec01.inpとlec02.inp, lec03.inpを計算してみましょう SET PHITSEXE=“C:\phits\bin\phits289_win.exe“ と書くことでPHITSの実行コマンドがセットされる PHITSの実行形式は < の後にインプットファイルを書く %PHITSEXE% < lec01.inp と書くことでlec01.inpを入力ファイルとした計算が実行 される Test-8.bat 変数%%iを使って、3つのインプットファイルが動作するようにしましょう Phits.outに番号を付けてコピーしましょう @echo off SET PHITSEXE=“C:\phits\bin\phits289_win.exe“ for /l %%i in (1, 1, 3) do ( ) pause exit Script 20

課題8の答え合わせ PHITSを実行するスクリプトを作成し、自動でlec01.inpとlec02.inp, lec03.inpを計算してみましょう Test-8.bat @echo off SET PHITSEXE=“C:\phits\bin\phits274_win.exe“ for /l %%i in (1, 1, 3) do ( %PHITSEXE% < lec0%%i.inp copy phits.out phits%%i.out ) pause exit 実行すると、phits1.out, phits2.out, phits3.outが作成される Script 21

実習内容 Windows版 Mac版 Table of contents 22

課題1 “Hello PHITS world”と出力されるスクリプトファイルを作成してみましょう Script 23 テキストエディタでTest_mac-1.command を開く Echoコマンドを使う Echo "***" と書くことでダブルクォーテーションで囲まれた***の部分が書き出される Test_mac-1.commandをダブルクリックして実行 Test_mac-1.command おまじない1 Shift+@ #!/bin/sh cd `dirname $0` echo "- push ENTER key to end -" read WAIT exit ここにコマンドを書く おまじない2 スクリプト終了時に一旦停止 Script 23

課題1の答え合わせ “Hello PHITS world”と出力されるスクリプトファイルを作成してみましょう Script 24 Test_mac-1.command #!/bin/sh cd `dirname $0` Echo " Hello PHITS world" echo "- push ENTER key to end -" read WAIT exit 実行して表示されれば成功! Script 24

課題2 “Hello PHITS world”を新規ファイルfile.txtに書き出すスクリプトファイルを作成してみましょう テキストエディタでTest_mac-2.commandを開く Echoコマンドを使う Echo *** > file.txt と>(リダイレクト)を使って書くことで***の部分がfile.txtに書き出される est_mac-2.commandをダブルクリックして実行 Test_mac-2.command >(リダイレクト)を使う #!/bin/sh cd `dirname $0` Echo " Hello PHITS world" echo "- push ENTER key to end -" read WAIT exit Script 25

課題2の答え合わせ “Hello PHITS world”を新規ファイルfile.txtに書き出すスクリプトファイルを作成してみましょう Test_mac-2.command #!/bin/sh cd `dirname $0` Echo " Hello PHITS world“ > file.txt echo "- push ENTER key to end -" read WAIT exit 実行すると、file.txtというファイルが作られる file.txt Hello PHITS world Script 26

($aaaのように{}を省略できる場合もある) 課題3 変数に“Hello PHITS world”を代入してfile.txtに書き出してみましょう 代入式を使う aaa= "***" と書くことで*** (文字列)の部分が変数aaaに代入される 書き出しはechoコマンドを使う 変数を使う場合は${aaa}のように$記号を先頭につける ($aaaのように{}を省略できる場合もある) Test_mac-3.command 変数aaaに代入しましょう #!/bin/sh cd `dirname $0`     "Hello PHITS world " echo > file.txt echo "- push ENTER key to end -" read WAIT exit 変数aaaを書き出しましょう Script 27

課題3の答え合わせ 変数に“Hello PHITS world”を代入してfile.txtに書き出してみましょう Script 28 Test_mac-3.command =の前後に空白を入れないように注意しましょう #!/bin/sh cd `dirname $0` aaa="Hello PHITS world " echo $aaa > file.txt echo "- push ENTER key to end -" read WAIT exit 実行すると、file.txtの内容は file.txt Hello PHITS world Script 28

課題4 数字を代入した変数を使って定義したfile2.txtに“Hello PHITS world”を書き出してみましょう 数字の演算を行う iii=$(( $*** + 1 )) と書くことで***(文字)の部分が数値として認識して 演算した後、変数iiiに文字として代入される 文字列の一部として変数を使うことができる File${iii}.txt のように${}記号で囲んだものを差し込む Test_mac-4.command #!/bin/sh cd `dirname $0` aaa="Hello PHITS world" echo $aaa > file.txt echo "- push ENTER key to end -" read WAIT exit 変数iiiに1を代入しましょう iii=iii+1の演算をさせiii=2 としましょう File2.txtとなるように 書きかえましょう Script 29

課題4の答え合わせ 数字を代入した変数を使って定義したfile2.txtに“Hello PHITS world”を書き出してみましょう Test_mac-4.command #!/bin/sh cd `dirname $0` aaa="Hello PHITS world" iii=1 iii=$(( $iii+1 )) echo $aaa > file${iii}.txt echo "- push ENTER key to end -" read WAIT exit file1.txt 実行すると、file2.txtが新しく作成され Hello PHITS world Script 30

課題5 File.txtの内容を読み込んでfile2.txtに追記しましょう do whileコマンドを使う Echoコマンドを使う cat file.txt | while read a b c do コマンド done と書くことでfile.txtから読み込んだ情報を使って括弧do doneで囲まれたコマンドを実行する 読み込みは1行ずつ行い、読み込んだ情報は変数a, b, cに代入される 空白を区切りとして左から3つの情報を変数a,b,cに代入される Echoコマンドを使う Echo $a >> file2.txt と書くことで変数aの内容がfile2.txtに追記される それと同時に以下を実行 ファイルを読み込むコマンド Script 31

課題5 File.txtの内容を読み込んでfile2.txtに追記しましょう Script 32 Test_mac-5.command #!/bin/sh cd `dirname $0` iii=2 cat file.txt | while read a b c do done echo "- push ENTER key to end -" read WAIT exit 読み込んだ“Hello PHITS world” がfile2.txtに追記されるように しましょう Script 32

課題5の答え合わせ File.txtの内容を読み込んでfile2.txtに追記しましょう Script 33 Test_mac-5.command 変数aに”Hello” bに” PHITS” cに”world” が代入されているので、 これらを並べて文章を作成する #!/bin/sh cd `dirname $0` iii=2 cat file.txt | while read a b c do echo $a $b $c >> file${iii}.txt done echo "- push ENTER key to end -" read WAIT exit 実行すると、file2.txtの内容は file2.txt Hello PHITS world Script 33

課題6 File.txtをコピーしてfile1.txt, file2.txt, file3.txtを作成しましょう cpコマンドを使う cp file.txt file1.txt と書くことでfile.txtの内容がfile1.txtにコピーされる Forコマンドを使う for i in (seq 1 3) do コマンド done と書くことで、変数iの数字を1→2→3と変えながらdo doneで囲まれたコマンドを実行する Test_mac-6.command #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do done echo "- push ENTER key to end -" read WAIT exit 変数iを使って、file.txtを file${i}.txtにコピーしましょう Script 34

課題6の答え合わせ File.txtをコピーしてfile1.txt, file2.txt, file3.txtを作成しましょう Script Test_mac-6.command #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do cp file.txt file${i}.txt done echo "- push ENTER key to end -" read WAIT exit 実行すると、file1.txt, file2.txt, file3.txtが作成され File1(2,3).txt Hello PHITS world Script 35

課題7 If文を使って、file2.txtにだけfile.txtの内容をコピーするようなスクリプトを作成しましょう ifコマンドを使う if [ i = *** ] then コマンド fi と書くことで変数iの数字が***の場合のみthen fiで囲まれたコマンドを実行する [, =, ]のそれぞれの前後にスペースが必要 #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do cp file.txt file${i}.txt done echo "- push ENTER key to end -" read WAIT exit Test_mac-7.command Ifコマンドを使って、変数iが2の場合のみコピーするようにしましょう Script 36

課題7の答え合わせ If文を使って、file2.txtにだけfile.txtの内容をコピーするようなスクリプトを作成しましょう Script Test_mac-7.command #!/bin/sh cd `dirname $0` for i in $(seq 1 3) do if [ $i = 2 ] then cp file.txt file${i}.txt fi done echo "- push ENTER key to end -" read WAIT exit [, =, ]のそれぞれの前後にスペースが必要 実行すると、file2.txtのみ作成される Script 37

課題8 PHITSを実行するスクリプトを作成し、自動でlec01.inpとlec02.inp, lec03.inpを計算してみましょう PHITSEXE=“/Users/***/phits/bin/phits289_mac.exe" と書くことでPHITSの実行コマンドがセットされる PHITSの実行形式は < の後にインプットファイルを書く $PHITSEXE < lec01.inp と書くことでlec01.inpを入力ファイルとした計算が実行 される 自身の環境に合わせてPATHを変える Test_mac-8.command #!/bin/sh cd `dirname $0` PHITSEXE=“/Users/***/phits/bin/phits289_mac.exe" for i in $(seq 1 3) do done echo "- push ENTER key to end -" read WAIT exit 変数${i}を使って、3つのインプットファイルが動作するようにしましょう Phits.outに番号を付けてコピーしましょう Script 38

課題8の答え合わせ PHITSを実行するスクリプトを作成し、自動でlec01.inpとlec02.inp, lec03.inpを計算してみましょう Test_mac-8.command #!/bin/sh cd `dirname $0` PHITSEXE=“/Users/***/phits/bin/phits289_mac.exe" for i in $(seq 1 3) do $PHITSEXE < lec0${i}.inp cp phits.out phits${i}.out done echo "- push ENTER key to end -" read WAIT exit 実行すると、phits1.out, phits2.out, phits3.outが作成される Script 39

まとめ スクリプト言語の基本的なコマンドの使い方を学んだ PHITSを自動で複数回実行するスクリプトを作成した 基本的なコマンドを組み合わせて、使い勝手の良いスクリプトを作成しましょう! 《休憩はさむ》 まとめ Summary 40