格子生成条件の読み込み処理の記述¶
格子生成条件の読み込み処理を記述します。
iRIC は、 格子生成プログラム定義ファイルの作成 で作成した 定義ファイルに従って格子生成条件を格子生成データファイルに出力しますので、 それに対応するように格子生成条件の読み込み処理を記述します。
格子生成条件の読み込み処理を追記したソースコードを リスト 21 に示します。追記した部分を太字で示します。格子生成条件を読み込む関数に 渡す引数が、 格子生成条件の定義 で定義ファイルに記述したItem 要素の name 属性と一致していることに 注目してください。
コンパイルしたら、 格子の出力処理の記述 の時と同様の手順で格子を生成し、指定した通りの格子生成条件で 格子が生成することを確認してください。
定義ファイルで定義する格子生成条件と、それを読み込むための iRIClib の関数の対応関係については、計算条件・境界条件・格子生成条件の項目の定義と読み込み処理の例 を参照してください。格子生成条件の読み込みに使う関数の詳細については、 計算条件 (もしくは格子生成条件) の読み込み を参照してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | program SampleProgram use iric implicit none integer:: fin, ier integer:: icount, istatus integer:: imax, jmax integer:: elev_on double precision:: elev_value double precision, dimension(:,:), allocatable::grid_x, grid_y double precision, dimension(:,:), elevation character(200)::condFile icount = nargs() if ( icount.eq.2 ) then call getarg(1, condFile, istatus) else stop "Input File not specified." endif ! 格子生成データファイルを開く call cg_iric_open(condFile, IRIC_MODE_MODIFY, fin, ier) if (ier /=0) stop "*** Open error of CGNS file ***" ! 格子生成条件の読み込み ! 簡潔に記述するため、エラー処理は行っていない call cg_iric_read_integer(fin, "imax", imax, ier) call cg_iric_read_integer(fin, "jmax", jmax, ier) call cg_iric_read_integer(fin, "elev_on", elev_on, ier) call cg_iric_read_real(fin, "elev_value", elev_value, ier) ! 格子生成用のメモリを確保 allocate(grid_x(imax,jmax), grid_y(imax,jmax) allocate(elevation(imax,jmax)) ! 格子を生成 do i = 1, isize do j = 1, jsize grid_x(i, j) = i grid_y(i, j) = j elevation(i, j) = elev_value end do end do ! 格子を出力 cg_iric_write_grid2d_coords(fin, imax, jmax, grid_x, grid_y, ier) if (elev_on == 1) then cg_iric_write_grid_real_node(fin, "Elevation", elevation, ier); end if ! 格子生成データファイルを閉じる call cg_iric_close(fin, ier) end program SampleProgram |