!####################################################################### ! ### ! SUBROUTINE --- sub_read_initial_data --- ### ! ### ! 初期粒子データを読み込むサブルーチン ### ! ### ! データを入力する変数 ### ! np ! 総粒子数 ### ! imat(i) ! 各粒子の物質の種類 ### ! m(i) ! 各粒子の質量 ### ! x(3,i) ! 各粒子の位置3成分 ### ! v(3,i) ! 各粒子の速度3成分 ### ! h(i) ! 各粒子のSomoothing Length ### ! e(i) ! 各粒子の内部エネルギー ### ! ### ! 2009/07/24 ### ! 2009/08/27 ### !####################################################################### subroutine sub_read_initial_data use mod_parameter use mod_variable implicit none !---- このサブルーチンだけで使う変数 ----------------------------------- integer i ! 粒子番号 integer i_tmp ! 粒子番号のダミーデータ real*8 d_tmp ! 密度のダミーデータ real*8 p_tmp ! 圧力のダミーデータ real*8 t_tmp ! 温度のダミーデータ !----------------------------------------------------------------------- !==== 初期条件をすべてファイルで与える場合 ============================= ! ---- 初期データファイルを開く ---- open(50,file='initial.dat') ! ---- 粒子数の読み込み ---- read(50,'(i8)') np ! ---- 読み込んだ粒子数(NP0) > 設定した粒子数(NPM)の時の対応 ---- if (np .gt. NPM) then write(*,*) '*****************************************' write(*,*) '***** np > NPM : Program stops. *****' write(*,*) '*****************************************' stop end if ! ---- 各粒子の初期データの読み込み ---- do i=1,np read(50,'(i8,i2,11e12.4)') & i_tmp,imat(i),m(i),x(1,i),x(2,i),x(3,i), & v(1,i),v(2,i),v(3,i), & h(i),d_tmp,p_tmp,e(i) end do ! ---- 初期データファイルを閉じる ---- close(50) return end