diff --git a/inc/IHOP.h b/inc/IHOP.h index d32d7ae..77c14a3 100644 --- a/inc/IHOP.h +++ b/inc/IHOP.h @@ -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 ) @@ -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 diff --git a/mitgcm_input/data.ihop b/mitgcm_input/data.ihop index 27ff32b..766298f 100644 --- a/mitgcm_input/data.ihop +++ b/mitgcm_input/data.ihop @@ -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, & diff --git a/src/ihop_init_fixed.F b/src/ihop_init_fixed.F index 43a6335..86e347e 100644 --- a/src/ihop_init_fixed.F +++ b/src/ihop_init_fixed.F @@ -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 ) diff --git a/src/ihop_readparms.F b/src/ihop_readparms.F index 5038286..7d1fe04 100644 --- a/src/ihop_readparms.F +++ b/src/ihop_readparms.F @@ -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, @@ -63,9 +63,7 @@ SUBROUTINE IHOP_READPARMS( myThid ) & IHOP_rd, & IHOP_rr, & IHOP_alpha, - & IHOP_step, - & IHOP_zbox, - & IHOP_rbox + & IHOP_step NAMELIST /IHOP_PARM03/ & useSSPFile, @@ -73,9 +71,6 @@ SUBROUTINE IHOP_READPARMS( myThid ) & ihop_iter, & IHOP_npts_range, & IHOP_npts_idw, - & ihop_v_xc, - & ihop_v_yc, - & ihop_v_weight, & ihop_xc, & ihop_yc, & ihop_idw_weights, @@ -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 @@ -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 diff --git a/src/readenvihop.F90 b/src/readenvihop.F90 index 8205298..0c89d02 100644 --- a/src/readenvihop.F90 +++ b/src/readenvihop.F90 @@ -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 )