File: he5_pt_readdataF_32.f

package info (click to toggle)
hdf-eos5 2%3A2.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 14,692 kB
  • sloc: ansic: 92,051; fortran: 31,463; sh: 11,395; makefile: 492
file content (174 lines) | stat: -rwxr-xr-x 4,959 bytes parent folder | download | duplicates (9)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
      program       he5_pt_readdataF_32

      implicit      none

      include      'hdfeos5.inc'

      integer       status
      integer       ptfid 
      integer       ptid
      integer       he5_ptopen
      integer       he5_ptattach
      integer       he5_ptreadlevel
      integer       he5_ptlevelinfo 
      integer       he5_ptnrecs
      integer       he5_ptnlevels
      integer       he5_ptnfields
      integer       he5_ptc2fort
      integer       he5_ptinqattrs
      integer       he5_ptreadattr
      integer       he5_ptdetach 
      integer       he5_ptclose
      integer       i
      integer       nflds
      integer       level
      integer       arr_rank
      integer       datatype
      integer       dtype(3)
      integer       attr
      integer       nrecs
      integer       nlevels

      integer*4     dimens(2)
      integer*4     datasize
      integer*4     rank_tt(3)
      integer*4     offset_tt(3)
      integer*4     dtype_tt(3)
      integer*4     dim_sizes_tt(3)
      integer*4     nattr
      integer*4     strbufsize

      character*80  levelname
      character*80  fieldname(3)
      character*80  attrname
      character*240 fieldlist
      character*240 attrlist
      character*8   spec(15)

      real*4        con(4,15)
      real*4        outcon(15,4)
      real*8        time(15)


c     Open the HDF-EOS point file, "point.he5"
c     ----------------------------------------
      ptfid = he5_ptopen('point.he5',HE5F_ACC_RDONLY)
      write(*,*) 'File ID returned by he5_ptopen():  ',ptfid

c     Read Simple Point 
c     ----------------- 
      ptid = he5_ptattach(ptfid, "Simple Point")
      write(*,*) 'Point ID returned by he5_ptattach():  ',ptid

c     Get level information 
c     --------------------- 
      level = 0

      status = he5_ptlevelinfo(ptid, level, levelname, rank_tt,
     1fieldlist, dim_sizes_tt, datasize, offset_tt, dtype_tt)
      write(*,*) 'Status returned by he5_ptlevelinfo(): ',status

c     Get the number of records in level
c     ---------------------------------- 
      level = 0
      nrecs = he5_ptnrecs(ptid, level)
      print *,'Number of records in level: ', nrecs

      nlevels = he5_ptnlevels(ptid)
      print *,'Number of levels in Point data set: ', nlevels

      nflds = he5_ptnfields(ptid, level, fieldlist, strbufsize)
      print *,'Number of fields in level: ', nflds

c     Populate input information structure 
c     ------------------------------------ 
      dtype(1)     =  HE5T_NATIVE_DOUBLE
      dtype(2)     =  HE5T_NATIVE_FLOAT
      dtype(3)     =  HE5T_NATIVE_CHAR

c     Read the level data and print out
c     --------------------------------- 
      fieldname(1)  = 'Time'

      status = he5_ptreadlevel(ptid, 0, fieldname(1), 
     1dtype(1), time)
      write(*,*) 'Status returned by he5_ptreadlevel():  ',status

      write(*,*) 'time array:    '
      do i = 1,nrecs
        print *,time(i)
      end do

      fieldname(2)  = 'Concentration'

      status = he5_ptreadlevel(ptid, 0, fieldname(2),  
     1dtype(2), con)  
      write(*,*) 'Status returned by he5_ptreadlevel():  ',status

c     Convert 'C' array to Fortran order
c     ---------------------------------- 
      dimens(1) = 15
      dimens(2) = 4
      arr_rank  = 2
      datatype  = HE5T_NATIVE_FLOAT

      status  = he5_ptc2fort(dimens, arr_rank, datatype, con, 
     1outcon)
      write(*,*) 'Status returned by he5_ptc2fort():  ',status

      write(*,*) 'outcon array:    '
      do i = 1,nrecs
        print *,outcon(i,1),outcon(i,2),outcon(i,3),outcon(i,4) 
      end do

      fieldname(3)  = 'Species'

      status = he5_ptreadlevel(ptid, 0, fieldname(3), 
     1dtype(3), spec)  
      write(*,*) 'Status returned by he5_ptreadlevel():  ',status

      write(*,*) 'spec array:    '
      do i = 1,nrecs
        print *,spec(i)
      end do

c.....Close out the point interface
      status = he5_ptdetach(ptid)
      write(*,*) 'Status returned by he5_ptdetach():  ',status

c     Read FixedBuoy Point 
c     -------------------- 
      ptid = he5_ptattach(ptfid, "FixedBuoy Point")
      write(*,*) 'Point ID returned by he5_ptattach():  ',ptid

c     Global Attributes
c     -----------------
      attrname       = 'GlobalAttribute_int'

      print *,'   '
      print *,'Global Attribute:   '
      nattr   = he5_ptinqattrs(ptid,attrlist,strbufsize)
      print *,'Number of attributes:  ',nattr
      print *,'Attribute list:  ',attrlist
      print *,'Size (in bytes) of attribute list:  ',strbufsize

      status   = he5_ptreadattr(ptid,attrname,attr)
      write(*,*) 'Status returned by he5_ptreadattr():  ',status
      print *,'Attribute value:    ',attr

c.....Close out the point interface
      status = he5_ptdetach(ptid)
      write(*,*) 'Status returned by he5_ptdetach():  ',status

      status = he5_ptclose(ptfid)
      write(*,*) 'Status returned by he5_ptclose():  ',status


      stop
      end