Skip to content

Commit 9c8be2f

Browse files
authored
Merge pull request #424 from GEOS-ESM/feature/remove-BinIO-from-TopoGet
Migrate GEOS_TopoGet from BinIO to NetCDF4
2 parents bf9de66 + b5e3001 commit 9c8be2f

2 files changed

Lines changed: 30 additions & 74 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212
### Changed
1313

1414
- Migrate `GEOS_TopoGet.F90` from bare `use MAPL2` to `use MAPL` + `use MAPL2, only:` for remaining MAPL2-only symbols
15+
- Migrate `GEOS_TopoGet.F90` from BinIO (`GETFILE`/`FREE_FILE`) to NetCDF4 via `Netcdf4_Fileformatter`; binary/ASCII topo files are no longer supported
1516

1617
### Fixed
1718

GEOS_Shared/GEOS_TopoGet.F90

Lines changed: 29 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)