Skip to content

Commit

Permalink
Merge pull request #3 from IvanaEscobar/ncread
Browse files Browse the repository at this point in the history
NetCDF file for inputs
  • Loading branch information
IvanaEscobar authored Nov 7, 2023
2 parents 82c6903 + 7edc596 commit 1211ca5
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 142 deletions.
8 changes: 1 addition & 7 deletions inc/IHOP.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,6 @@
_RL IHOP_rr (nrr)
_RL IHOP_alpha (2)
_RL IHOP_step
_RL IHOP_zbox
_RL IHOP_rbox
_RL ihop_v_weight ( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
_RS ihop_v_xc ( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
_RS ihop_v_yc ( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
_RL ihop_idw_weights ( IHOP_MAX_NC_SIZE, IHOP_MAX_NC_SIZE )
_RS ihop_xc ( IHOP_MAX_NC_SIZE, IHOP_MAX_NC_SIZE )
_RS ihop_yc ( IHOP_MAX_NC_SIZE, IHOP_MAX_NC_SIZE )
Expand All @@ -112,8 +107,7 @@
& IHOP_freq, IHOP_depth, IHOP_bcsound, IHOP_bcsoundshear, &
& ihop_brho, IHOP_bcsoundI, IHOP_bcsoundshearI, &
& IHOP_sd, IHOP_rd, IHOP_rr, IHOP_alpha, IHOP_step, &
& ihop_yc, ihop_xc, ihop_idw_weights, ihop_ranges, &
& ihop_v_yc, ihop_v_xc, ihop_v_weight, IHOP_zbox, IHOP_rbox
& ihop_yc, ihop_xc, ihop_idw_weights, ihop_ranges


#ifdef IHOP_3D_STATE
Expand Down
24 changes: 1 addition & 23 deletions mitgcm_input/data.ihop
Original file line number Diff line number Diff line change
Expand Up @@ -25,28 +25,6 @@
&

&IHOP_PARM03
#IHOP_interpfile = 'bc_gyre_ihop_grid.nc',
IHOP_interpfile = 'bc-gyre_ihop-grid.nc',
ihop_iter = 9,
ihop_npts_range=6,
ihop_npts_idw=4,
# ranges in km
ihop_ranges=0., 508.91268732, 1017.82537465, 1526.73806197, 2035.65074929, 2544.56343661,
ihop_v_xc= 2.5, 3.5, 2.5, 1.5,
7.5, 8.5, 6.5, 7.5,
11.5, 12.5, 10.5, 11.5,
15.5, 14.5, 16.5, 15.5,
18.5, 17.5, 18.5, 19.5,
20.5, 21.5, 20.5, 21.5,
ihop_v_yc= 60.5, 60.5, 59.5, 60.5,
56.5, 56.5, 56.5, 55.5,
52.5, 52.5, 52.5, 51.5,
48.5, 48.5, 48.5, 47.5,
44.5, 44.5, 43.5, 44.5,
40.5, 40.5, 39.5, 39.5,
ihop_v_weight= 4.9584e-10, 2.2409e-10, 2.2223e-10, 1.7589e-10,
3.9547e-09, 3.3427e-10, 1.9519e-10, 1.0330e-10,
3.0486e-09, 4.0235e-10, 1.3521e-10, 8.0223e-11,
2.1882e-09, 3.5922e-10, 1.1040e-10, 8.1613e-11,
1.0235e-09, 3.4750e-10, 9.8122e-11, 8.5083e-11,
7.1510e-10, 1.7456e-10, 1.5789e-10, 9.3217e-11,
&
166 changes: 80 additions & 86 deletions src/ihop_init_fixed.F
Original file line number Diff line number Diff line change
Expand Up @@ -37,105 +37,99 @@ SUBROUTINE IHOP_INIT_FIXED( myThid )
CHARACTER*(MAX_LEN_MBUF) :: msgBuf
C !LOCAL VARIABLES:
INTEGER :: iUnit
INTEGER :: IL, err, ncid, dimid1, dimid2, varid1, varid2, varid3
INTEGER :: IL, err, ncid, dimid1, dimid2
INTEGER :: varid1, varid2, varid3, varid4
INTEGER :: k, i, j
_RS :: data1vec( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
_RS :: data1vec( IHOP_MAX_NC_SIZE )
_RS :: data2vec( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
_RL :: data3vec( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
_RS :: data3vec( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
_RL :: data4vec( IHOP_MAX_NC_SIZE*IHOP_MAX_NC_SIZE )
CHARACTER*(80) :: ihop_file

CC ==================== External Functions ==========================
C INTEGER ILNBLNK
C EXTERNAL ILNBLNK
CC---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
C ==================== External Functions ==========================
INTEGER ILNBLNK
EXTERNAL ILNBLNK
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
C Only do I/O if in the main thread
_BEGIN_MASTER( myThid )

CC Read NetCDF input: setting the acoustic domain
C IL = ILNBLNK( IHOP_interpfile )
C IF (IL.NE.0) THEN
C WRITE(ihop_file(1:80), '(1A)') IHOP_interpfile(1:IL)
C ELSE
C ihop_file = IHOP_interpfile
C END IF
C err = NF_OPEN(ihop_file, NF_NOWRITE, ncid)
C IF (err .NE. NF_NOERR) THEN
C WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: ',
C & 'NetCDF IHOP input file NOT found'
C CALL PRINT_ERROR( msgBuf, myThid )
C STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
C END IF
C
CC Get dimension IDs and lengths
C err = NF_INQ_DIMID( ncid, 'nrange', dimid1 )
C err = NF_INQ_DIMLEN( ncid, dimid1, IHOP_npts_range )
C
C err = NF_INQ_DIMID( ncid, 'nidw', dimid2 )
C err = NF_INQ_DIMLEN( ncid, dimid2, IHOP_npts_idw )
C
C IF ( IHOP_npts_range>IHOP_MAX_NC_SIZE .OR.
C & IHOP_npts_idw>IHOP_MAX_NC_SIZE ) THEN
C WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: reading dims',
C & 'NetCDF Dimensions exceed maximum allowable size'
C CALL PRINT_ERROR( msgBuf, myThid )
C STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
C END IF
C
CC Get data variable IDs
C err = NF_INQ_VARID( ncid, 'ihop_xc', varid1 )
C err = NF_INQ_VARID( ncid, 'ihop_yc', varid2 )
C err = NF_INQ_VARID( ncid, 'ihop_idw_weights', varid3 )
C
C IF (err .NE. NF_NOERR) THEN
C WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: ',
C & 'NetCDF IHOP data variable names are incorrect'
C CALL PRINT_ERROR( msgBuf, myThid )
C STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
C END IF
C
CC get data variables
C err = NF_GET_VAR( ncid, varid1, data1vec )
C err = NF_GET_VAR( ncid, varid2, data2vec )
C err = NF_GET_VAR( ncid, varid3, data3vec )
C
C IF (err .NE. NF_NOERR) THEN
C WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: ',
C & 'NetCDF IHOP data variables are incorrect'
C CALL PRINT_ERROR( msgBuf, myThid )
C STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
C END IF
C
CC 'reshape' data variables to 2D array
C k=1
C DO i=1,IHOP_npts_range
C DO j=1,IHOP_npts_idw
C ihop_xc(i,j) = data1vec(k)
C ihop_yc(i,j) = data2vec(k)
C ihop_idw_weights(i,j) = data3vec(k)
C k = k+1
C END DO
C END DO
C
CCC Close NetCDF file
C err = NF_CLOSE( ncid )
C IF (err .NE. NF_NOERR) THEN
C WRITE(msgBuf, '(3A)') 'S/R IHOP_INIT_FIXED: ',
C & 'NetCDF ERROR: Cannot close file ', IHOP_interpfile(1:IL)
C CALL PRINT_ERROR( msgBuf, myThid )
C STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
C END IF


C 'reshape' ihop_v_* arrays to 2D arrays
C Read NetCDF input: setting the acoustic domain
IL = ILNBLNK( IHOP_interpfile )
IF (IL.NE.0) THEN
WRITE(ihop_file(1:80), '(1A)') IHOP_interpfile(1:IL)
ELSE
ihop_file = IHOP_interpfile
END IF
err = NF_OPEN(ihop_file, NF_NOWRITE, ncid)
IF (err .NE. NF_NOERR) THEN
WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: ',
& 'NetCDF IHOP input file NOT found'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
END IF

C Get dimension IDs and lengths
err = NF_INQ_DIMID( ncid, 'nrange', dimid1 )
err = NF_INQ_DIMLEN( ncid, dimid1, IHOP_npts_range )

err = NF_INQ_DIMID( ncid, 'nidw', dimid2 )
err = NF_INQ_DIMLEN( ncid, dimid2, IHOP_npts_idw )

IF ( IHOP_npts_range>IHOP_MAX_NC_SIZE .OR.
& IHOP_npts_idw>IHOP_MAX_NC_SIZE ) THEN
WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: reading dims',
& 'NetCDF Dimensions exceed maximum allowable size'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
END IF

C Get data variable IDs
err = NF_INQ_VARID( ncid, 'ihop_ranges', varid1 )
err = NF_INQ_VARID( ncid, 'ihop_xc', varid2 )
err = NF_INQ_VARID( ncid, 'ihop_yc', varid3 )
err = NF_INQ_VARID( ncid, 'ihop_idw_weights', varid4 )

IF (err .NE. NF_NOERR) THEN
WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: ',
& 'NetCDF IHOP data variable names are incorrect'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
END IF

C get data variables
err = NF_GET_VAR( ncid, varid1, data1vec )
err = NF_GET_VAR( ncid, varid2, data2vec )
err = NF_GET_VAR( ncid, varid3, data3vec )
err = NF_GET_VAR( ncid, varid4, data4vec )

IF (err .NE. NF_NOERR) THEN
WRITE(msgBuf, '(2A)') 'S/R IHOP_INIT_FIXED: ',
& 'NetCDF IHOP data variables are incorrect'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
END IF

C 'reshape' data variables to 2D array
k=1
DO i=1,IHOP_npts_range
ihop_ranges(i) = data1vec(i)
DO j=1,IHOP_npts_idw
ihop_xc(i,j) = ihop_v_xc(k)
ihop_yc(i,j) = ihop_v_yc(k)
ihop_idw_weights(i,j) = ihop_v_weight(k)
ihop_xc(i,j) = data2vec(k)
ihop_yc(i,j) = data3vec(k)
ihop_idw_weights(i,j) = data4vec(k)
k = k+1
END DO
END DO

CC Close NetCDF file
err = NF_CLOSE( ncid )
IF (err .NE. NF_NOERR) THEN
WRITE(msgBuf, '(3A)') 'S/R IHOP_INIT_FIXED: ',
& 'NetCDF ERROR: Cannot close file ', IHOP_interpfile(1:IL)
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R IHOP_INIT_FIXED'
END IF

C Only do I/O if in the main thread
_END_MASTER( myThid )

Expand Down
17 changes: 2 additions & 15 deletions src/ihop_readparms.F
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ SUBROUTINE IHOP_READPARMS( myThid )
C iUnit :: Work variable for IO unit number
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER iUnit
INTEGER i, j, v
INTEGER i, j

NAMELIST /IHOP_PARM01/
& IHOP_fileroot,
Expand Down Expand Up @@ -63,19 +63,14 @@ SUBROUTINE IHOP_READPARMS( myThid )
& IHOP_rd,
& IHOP_rr,
& IHOP_alpha,
& IHOP_step,
& IHOP_zbox,
& IHOP_rbox
& IHOP_step

NAMELIST /IHOP_PARM03/
& useSSPFile,
& IHOP_interpfile,
& ihop_iter,
& IHOP_npts_range,
& IHOP_npts_idw,
& ihop_v_xc,
& ihop_v_yc,
& ihop_v_weight,
& ihop_xc,
& ihop_yc,
& ihop_idw_weights,
Expand Down Expand Up @@ -158,8 +153,6 @@ SUBROUTINE IHOP_READPARMS( myThid )
ENDDO
IHOP_alpha = 0. _d 0
IHOP_step = 0. _d 0
IHOP_zbox = 0. _d 0
IHOP_rbox = 0. _d 0
IHOP_bcsoundI = 0. _d 0
IHOP_bcsoundshearI = 0. _d 0
IHOP_bcsoundshear = 0. _d 0
Expand Down Expand Up @@ -245,17 +238,11 @@ SUBROUTINE IHOP_READPARMS( myThid )
ihop_iter = 0
IHOP_npts_range = 0
IHOP_npts_idw = 0
v=1
DO i=1,IHOP_MAX_NC_SIZE
DO j=1,IHOP_MAX_NC_SIZE
ihop_v_xc(v) = 0. _d 0
ihop_v_yc(v) = 0. _d 0
ihop_v_weight(v) = 0. _d 0

ihop_xc(i,j) = 0. _d 0
ihop_yc(i,j) = 0. _d 0
ihop_idw_weights(i,j) = 0. _d 0
v=v+1
ENDDO
ihop_ranges(i) = 0. _d 0
ENDDO
Expand Down
15 changes: 4 additions & 11 deletions src/readenvihop.F90
Original file line number Diff line number Diff line change
Expand Up @@ -249,17 +249,10 @@ SUBROUTINE ReadEnvironment( FileRoot, myThid )
END IF

! Domain size
IF ( IHOP_zbox.NE.0 ) THEN
Beam%Box%z = IHOP_zbox
ELSE
Beam%Box%z = Bdry%Bot%HS%Depth ! in m
END IF
IF ( IHOP_rbox.NE.0 ) THEN
Beam%Box%r = IHOP_rbox
ELSE
! Extend beam box by a single step size forward
Beam%Box%r = ihop_rr(nrd) + Beam%deltas/1000. ! in [km]
END IF
Beam%Box%z = Bdry%Bot%HS%Depth ! in m
! Extend beam box by a single step size forward
Beam%Box%r = ihop_rr(nrd) + Beam%deltas/1000. ! in [km]

#ifdef IHOP_WRITE_OUT
WRITE(msgBuf,'(A)')
CALL PRINT_MESSAGE( msgbuf, PRTFile, SQUEEZE_RIGHT, myThid )
Expand Down

0 comments on commit 1211ca5

Please sign in to comment.