@@ -13,7 +13,7 @@ module GEOS_TopoGetMod
1313
1414 use ESMF
1515 use MAPL
16- use MAPL2, only: MAPL_VarRead, GETFILE
16+ use MAPL2, only: MAPL_VarRead ! TODO: move NCIOMod to mapl_base3g so this comes from MAPL
1717
1818 implicit none
1919 private
@@ -109,98 +109,53 @@ subroutine GEOS_TopoGet ( cf, &
109109
110110 real , pointer :: ptr(:,:)
111111 integer :: STATUS
112- integer :: unit
113112 real :: GWDFAC
114- real :: GWDFACX
115- real :: GWDFACY
116- real :: GWDFACXY
117- real :: GWDFACYX
118113 real :: TRBFAC
114+ type (Netcdf4_Fileformatter) :: formatter
115+
116+ ! Unsupported optional variables
117+ ! -------------------------------
118+ _ASSERT(.not. present (GWDVARX), " GWDVARX not yet supported in NetCDF" )
119+ _ASSERT(.not. present (GWDVARY), " GWDVARY not yet supported in NetCDF" )
120+ _ASSERT(.not. present (GWDVARXY), " GWDVARXY not yet supported in NetCDF" )
121+ _ASSERT(.not. present (GWDVARYX), " GWDVARYX not yet supported in NetCDF" )
119122
120123! Get filenames for Get_Topo utility
121124! ----------------------------------
122- call hconfig_get_string(cf, ' TOPO_MEAN_FILE' , filename(1 ), default= ' hmean.2.5x2.5min.data' , _RC)
123- call hconfig_get_string(cf, ' TOPO_GWDVAR_FILE' , filename(2 ), default= ' hgrav_var.2.5x2.5min.data' , _RC)
124- call hconfig_get_string(cf, ' TOPO_GWDVARX_FILE' , filename(3 ), default= ' hgrav_varx.2.5x2.5min.data' , _RC)
125- call hconfig_get_string(cf, ' TOPO_GWDVARY_FILE' , filename(4 ), default= ' hgrav_vary.2.5x2.5min.data' , _RC)
126- call hconfig_get_string(cf, ' TOPO_GWDVARXY_FILE' , filename(5 ), default= ' hgrav_varxy.2.5x2.5min.data' , _RC)
127- call hconfig_get_string(cf, ' TOPO_GWDVARYX_FILE' , filename(6 ), default= ' hgrav_varyx.2.5x2.5min.data' , _RC)
128- call hconfig_get_string(cf, ' TOPO_TRBVAR_FILE' , filename(7 ), default= ' hturb_var.2.5x2.5min.data' , _RC)
129-
130- if ( present (MEAN) ) then
125+ call hconfig_get_string(cf, ' TOPO_MEAN_FILE' , filename(1 ), default= ' hmean.2.5x2.5min.nc' , _RC)
126+ call hconfig_get_string(cf, ' TOPO_GWDVAR_FILE' , filename(2 ), default= ' hgrav_var.2.5x2.5min.nc' , _RC)
127+ call hconfig_get_string(cf, ' TOPO_TRBVAR_FILE' , filename(3 ), default= ' hturb_var.2.5x2.5min.nc' , _RC)
128+
129+ if ( present (MEAN) ) then
131130! -------------------------
132- UNIT = GETFILE ( filename(1 ),form= " unformatted" )
133- call MAPL_VarRead (UNIT,MEAN)
134- CALL FREE_FILE (UNIT)
131+ call formatter% open (trim (filename(1 )), pFIO_READ, _RC)
135132 call ESMF_FieldGet(MEAN, 0 , PTR, rc= status)
136133 _VERIFY(STATUS)
134+ call MAPL_VarRead(formatter, ' z' , ptr, _RC)
135+ call formatter% close (_RC)
137136 ptr = ptr* MAPL_GRAV
138137 endif
139138
140139 if ( present (GWDVAR) ) then
141140! --------------------------
142- call hconfig_get_r4 (cf, ' GWDVAR_FACTOR' , GWDFAC, default= 1.0 , _RC)
143- UNIT = GETFILE (filename(2 ), form= " unformatted" )
144- call MAPL_VarRead (UNIT,GWDVAR)
145- CALL FREE_FILE (UNIT)
146- call ESMF_FieldGet (GWDVAR, 0 , PTR, rc= status)
147- _VERIFY(STATUS)
148- ptr = sqrt ( max (gwdfac* ptr,0.0 ) )
149- endif
150-
151- if ( present (GWDVARX) ) then
152- ! ---------------------------
153- call hconfig_get_r4 (cf, ' GWDVARX_FACTOR' , GWDFACX, default= 1.0 , _RC)
154- UNIT = GETFILE (filename(3 ), form= " unformatted" )
155- call MAPL_VarRead (UNIT,GWDVARX)
156- CALL FREE_FILE (UNIT)
157- call ESMF_FieldGet (GWDVARX, 0 , PTR, rc= status)
158- _VERIFY(STATUS)
159- ptr = sqrt ( max (gwdfacx* ptr,0.0 ) )
160- endif
161-
162- if ( present (GWDVARY) ) then
163- ! ---------------------------
164- call hconfig_get_r4 (cf, ' GWDVARY_FACTOR' , GWDFACY, default= 1.0 , _RC)
165- UNIT = GETFILE (filename(4 ), form= " unformatted" )
166- call MAPL_VarRead (UNIT,GWDVARY)
167- CALL FREE_FILE (UNIT)
168- call ESMF_FieldGet (GWDVARY, 0 , PTR, rc= status)
169- _VERIFY(STATUS)
170- ptr = sqrt ( max (gwdfacy* ptr,0.0 ) )
171- endif
172-
173- if ( present (GWDVARXY) ) then
174- ! ----------------------------
175- call hconfig_get_r4 (cf, ' GWDVARXY_FACTOR' , GWDFACXY, default= 1.0 , _RC)
176- UNIT = GETFILE (filename(5 ), form= " unformatted" )
177- call MAPL_VarRead (UNIT,GWDVARXY)
178- CALL FREE_FILE (UNIT)
179- call ESMF_FieldGet (GWDVARXY, 0 , PTR, rc= status)
180- _VERIFY(STATUS)
181- ptr = sqrt ( max (gwdfacxy* ptr,0.0 ) )
182- endif
183-
184- if ( present (GWDVARYX) ) then
185- ! ----------------------------
186- call hconfig_get_r4 (cf, ' GWDVARYX_FACTOR' , GWDFACYX, default= 1.0 , _RC)
187- UNIT = GETFILE (filename(6 ), form= " unformatted" )
188- call MAPL_VarRead (UNIT,GWDVARYX)
189- CALL FREE_FILE (UNIT)
190- call ESMF_FieldGet (GWDVARYX, 0 , PTR, rc= status)
141+ call hconfig_get_r4 (cf, ' GWDVAR_FACTOR' , GWDFAC, default= 1.0 , _RC)
142+ call formatter% open (trim (filename(2 )), pFIO_READ, _RC)
143+ call ESMF_FieldGet(GWDVAR, 0 , PTR, rc= status)
191144 _VERIFY(STATUS)
192- ptr = sqrt ( max (gwdfacyx* ptr,0.0 ) )
145+ call MAPL_VarRead(formatter, ' gwd' , ptr, _RC)
146+ call formatter% close (_RC)
147+ ptr = sqrt ( max (gwdfac* ptr, 0.0 ) )
193148 endif
194149
195150 if ( present (TRBVAR) ) then
196151! --------------------------
197- call hconfig_get_r4 (cf, ' TRBVAR_FACTOR' , TRBFAC, default= 1.0 , _RC)
198- UNIT = GETFILE (filename(7 ), form= " unformatted" )
199- call MAPL_VarRead (UNIT,TRBVAR)
200- CALL FREE_FILE (UNIT)
201- call ESMF_FieldGet (TRBVAR, 0 , PTR, rc= status)
152+ call hconfig_get_r4 (cf, ' TRBVAR_FACTOR' , TRBFAC, default= 1.0 , _RC)
153+ call formatter% open (trim (filename(3 )), pFIO_READ, _RC)
154+ call ESMF_FieldGet(TRBVAR, 0 , PTR, rc= status)
202155 _VERIFY(STATUS)
203- ptr = max (trbfac* ptr,0.0 )
156+ call MAPL_VarRead(formatter, ' trb' , ptr, _RC)
157+ call formatter% close (_RC)
158+ ptr = max (trbfac* ptr, 0.0 )
204159 endif
205160
206161 _RETURN(ESMF_SUCCESS)
0 commit comments