地形データの読み込み

プロジェクトでインポートして格子生成に利用した地形データを読み込みます。 ソルバーで、河川測量データやポリゴンを直接読み込んで解析に使用したい場合に行います。 地形データを読み込む場合の手順は、以下の通りになります。

  1. CGNS ファイルから、プロジェクトで使用した地形データのファイル名などを読み込みます。

  2. 地形データファイルを開き、地形データを読み込みます。

表 72 利用する関数

関数

備考

cg_iric_read_geo_count

地形データの数を返す

cg_iric_read_geo_filename

地形データのファイル名と種類を返す

iric_geo_riversurvey_open

河川測量データを開く

iric_geo_riversurvey_read_count

河川横断線の数を返す

iric_geo_riversurvey_read_position

横断線の中心点の座標を返す

iric_geo_riversurvey_read_direction

横断線の向きを返す

iric_geo_riversurvey_read_name

横断線の名前を文字列として返す

iric_geo_riversurvey_read_realname

横断線の名前を実数値として返す

iric_geo_riversurvey_read_leftshift

横断線の標高データのシフト量を返す

iric_geo_riversurvey_read_altitudecount

横断線の標高データの数を返す

iric_geo_riversurvey_read_altitudes

横断線の標高データを返す

iric_geo_riversurvey_readixedpointl

横断線の左岸延長線のデータを返す

iric_geo_riversurvey_readixedpointr

横断線の右岸延長線のデータを返す

iric_geo_riversurvey_read_watersurfaceelevation

横断線での水面標高のデータを返す

iric_geo_riversurvey_close

河川測量データを閉じる

地形データのうち、河川測量データを読み込む処理の記述例を リスト 165 に示します。

リスト 165 河川測量データを読み込む処理の記述例
 1program TestRiverSurvey
 2  use iric
 3  implicit none
 4
 5  integer:: fin, ier
 6  integer:: icount, istatus
 7
 8  integer:: geoid
 9  integer:: elevation_geo_count
10  character(len=1000):: filename
11  integer:: geotype
12  integer:: rsid
13  integer:: xsec_count
14  integer:: xsec_id
15  character(len=20):: xsec_name
16  double precision:: xsec_x
17  double precision:: xsec_y
18  integer:: xsec_set
19  integer:: xsec_index
20  double precision:: xsec_leftshift
21  integer:: xsec_altid
22  integer:: xsec_altcount
23  double precision, dimension(:), allocatable:: xsec_altpos
24  double precision, dimension(:), allocatable:: xsec_altheight
25  integer, dimension(:), allocatable:: xsec_altactive
26  double precision:: xsec_wse
27
28  ! 計算データファイルを開く
29  call cg_iric_open("test.cgn", IRIC_MODE_MODIFY, fin, ier)
30  if (ier /=0) stop "*** Open error of CGNS file ***"
31
32  ! 地形データの数を取得
33  call cg_iric_read_geo_count(fin, "Elevation", elevation_geo_count, ier)
34
35  do geoid = 1, elevation_geo_count
36    call cg_iric_read_geo_filename(fin, 'Elevation', geoid, &
37      filename, geotype, ier)
38    if (geotype .eq. iRIC_GEO_RIVERSURVEY) then
39      call iric_geo_riversurvey_open(filename, rsid, ier)
40      call iric_geo_riversurvey_read_count(rsid, xsec_count, ier)
41      do xsec_id = 1, xsec_count
42        call iric_geo_riversurvey_read_name(rsid, xsec_id, xsec_name, ier)
43        print *, 'xsec ', xsec_name
44        call iric_geo_riversurvey_read_position(rsid, xsec_id, xsec_x, xsec_y, ier)
45        print *, 'position: ', xsec_x, xsec_y
46        call iric_geo_riversurvey_read_direction(rsid, xsec_id, xsec_x, xsec_y, ier)
47        print *, 'direction: ', xsec_x, xsec_y
48        call iric_geo_riversurvey_read_leftshift(rsid, xsec_id, xsec_leftshift, ier)
49        print *, 'leftshift: ', xsec_leftshift
50        call iric_geo_riversurvey_read_altitudecount(rsid, xsec_id, xsec_altcount, ier)
51        print *, 'altitude count: ', xsec_altcount
52        allocate(xsec_altpos(xsec_altcount))
53        allocate(xsec_altheight(xsec_altcount))
54        allocate(xsec_altactive(xsec_altcount))
55        call iric_geo_riversurvey_read_altitudes( &
56          rsid, xsec_id, xsec_altpos, xsec_altheight, xsec_altactive, ier)
57        do xsec_altid = 1, xsec_altcount
58          print *, 'Altitude ', xsec_altid, ': ', &
59            xsec_altpos(xsec_altid:xsec_altid), ', ', &
60            xsec_altheight(xsec_altid:xsec_altid), ', ', &
61            xsec_altactive(xsec_altid:xsec_altid)
62        end do
63        deallocate(xsec_altpos, xsec_altheight, xsec_altactive)
64        call iric_geo_riversurvey_readixedpointl( &
65          rsid, xsec_id, xsec_set, xsec_x, xsec_y, xsec_index, ier)
66        print *, 'FixedPointL: ', xsec_set, xsec_x, xsec_y, xsec_index
67        call iric_geo_riversurvey_readixedpointr( &
68          rsid, xsec_id, xsec_set, xsec_x, xsec_y, xsec_index, ier)
69        print *, 'FixedPointR: ', xsec_set, xsec_x, xsec_y, xsec_index
70        call iric_geo_riversurvey_read_watersurfaceelevation( &
71          rsid, xsec_id, xsec_set, xsec_wse, ier)
72        print *, 'WaterSurfaceElevation: ', xsec_set, xsec_wse
73      end do
74      call iric_geo_riversurvey_close(rsid, ier)
75    end if
76  end do
77
78  ! 計算データファイルを閉じる
79  call cg_iric_close(fin, ier)
80  stop
81end program TestRiverSurvey