地形データの読み込み

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

  1. CGNS ファイルから、プロジェクトで使用した地形データのファイル名などを読み込みます。
  2. 地形データファイルを開き、地形データを読み込みます。
表 65 利用する関数
関数 備考
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 河川測量データを閉じる

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

リスト 98 河川測量データを読み込む処理の記述例
 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
program TestRiverSurvey
  use iric
  implicit none

  integer:: fin, ier
  integer:: icount, istatus

  integer:: geoid
  integer:: elevation_geo_count
  character(len=1000):: filename
  integer:: geotype
  integer:: rsid
  integer:: xsec_count
  integer:: xsec_id
  character(len=20):: xsec_name
  double precision:: xsec_x
  double precision:: xsec_y
  integer:: xsec_set
  integer:: xsec_index
  double precision:: xsec_leftshift
  integer:: xsec_altid
  integer:: xsec_altcount
  double precision, dimension(:), allocatable:: xsec_altpos
  double precision, dimension(:), allocatable:: xsec_altheight
  integer, dimension(:), allocatable:: xsec_altactive
  double precision:: xsec_wse

  ! 計算データファイルを開く
  call cg_iric_open("test.cgn", IRIC_MODE_MODIFY, fin, ier)
  if (ier /=0) stop "*** Open error of CGNS file ***"

  ! 地形データの数を取得
  call cg_iric_read_geo_count(fin, "Elevation", elevation_geo_count, ier)

  do geoid = 1, elevation_geo_count
    call cg_iric_read_geo_filename(fin, 'Elevation', geoid, &
      filename, geotype, ier)
    if (geotype .eq. iRIC_GEO_RIVERSURVEY) then
      call iric_geo_riversurvey_open(filename, rsid, ier)
      call iric_geo_riversurvey_read_count(rsid, xsec_count, ier)
      do xsec_id = 1, xsec_count
        call iric_geo_riversurvey_read_name(rsid, xsec_id, xsec_name, ier)
        print *, 'xsec ', xsec_name
        call iric_geo_riversurvey_read_position(rsid, xsec_id, xsec_x, xsec_y, ier)
        print *, 'position: ', xsec_x, xsec_y
        call iric_geo_riversurvey_read_direction(rsid, xsec_id, xsec_x, xsec_y, ier)
        print *, 'direction: ', xsec_x, xsec_y
        call iric_geo_riversurvey_read_leftshift(rsid, xsec_id, xsec_leftshift, ier)
        print *, 'leftshift: ', xsec_leftshift
        call iric_geo_riversurvey_read_altitudecount(rsid, xsec_id, xsec_altcount, ier)
        print *, 'altitude count: ', xsec_altcount
        allocate(xsec_altpos(xsec_altcount))
        allocate(xsec_altheight(xsec_altcount))
        allocate(xsec_altactive(xsec_altcount))
        call iric_geo_riversurvey_read_altitudes( &
          rsid, xsec_id, xsec_altpos, xsec_altheight, xsec_altactive, ier)
        do xsec_altid = 1, xsec_altcount
          print *, 'Altitude ', xsec_altid, ': ', &
            xsec_altpos(xsec_altid:xsec_altid), ', ', &
            xsec_altheight(xsec_altid:xsec_altid), ', ', &
            xsec_altactive(xsec_altid:xsec_altid)
        end do
        deallocate(xsec_altpos, xsec_altheight, xsec_altactive)
        call iric_geo_riversurvey_readixedpointl( &
          rsid, xsec_id, xsec_set, xsec_x, xsec_y, xsec_index, ier)
        print *, 'FixedPointL: ', xsec_set, xsec_x, xsec_y, xsec_index
        call iric_geo_riversurvey_readixedpointr( &
          rsid, xsec_id, xsec_set, xsec_x, xsec_y, xsec_index, ier)
        print *, 'FixedPointR: ', xsec_set, xsec_x, xsec_y, xsec_index
        call iric_geo_riversurvey_read_watersurfaceelevation( &
          rsid, xsec_id, xsec_set, xsec_wse, ier)
        print *, 'WaterSurfaceElevation: ', xsec_set, xsec_wse
      end do
      call iric_geo_riversurvey_close(rsid, ier)
    end if
  end do

  ! 計算データファイルを閉じる
  call cg_iric_close(fin, ier)
  stop
end program TestRiverSurvey