地形データの読み込み¶
プロジェクトでインポートして格子生成に利用した地形データを読み込みます。 ソルバーで、河川測量データやポリゴンを直接読み込んで解析に使用したい場合に行います。 地形データを読み込む場合の手順は、以下の通りになります。
CGNS ファイルから、プロジェクトで使用した地形データのファイル名などを読み込みます。
地形データファイルを開き、地形データを読み込みます。
関数 |
備考 |
---|---|
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 に示します。
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