C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/nesting_sannino/nest_parent/nest_parent_readparms.F,v 1.3 2010/11/28 02:38:55 jmc Exp $ C $Name: $ #include "NEST_PARENT_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: NEST_PARENT_READPARMS C !INTERFACE: SUBROUTINE NEST_PARENT_READPARMS( myThid ) C !DESCRIPTION: C Routine to read in file data.nest_parent C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "NEST_PARENT_PARAMS.h" C !INPUT PARAMETERS: C myThid :: my Thread Id number INTEGER myThid CEOP #ifdef ALLOW_NEST_PARENT C !FUNCTIONS: INTEGER ILNBLNK EXTERNAL ILNBLNK C !LOCAL VARIABLES: C msgBuf :: Informational/error message buffer C errIO :: IO error flag C iUnit :: Work variable for IO unit number CHARACTER*(MAX_LEN_MBUF) msgBuf INTEGER errIO, iUnit, iLen C-- NEST_PARENT coupler parameters NAMELIST /NEST_PARENT_PARM01/ & LeftB, RightB, dirNEST_PARENT _BEGIN_MASTER(myThid) WRITE(msgBuf,'(A)') & ' NEST_PARENT_READPARAMS: opening "data.nest_parent"' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT, myThid ) CALL OPEN_COPY_DATA_FILE( I 'data.nest_parent', 'NEST_PARENT_READPARAMS', O iUnit, I myThid ) C-- set default NEST_PARENT coupler parameters C-- Read settings from model parameter file "data.nest_parent". READ(UNIT=iUnit,NML=NEST_PARENT_PARM01,IOSTAT=errIO) IF ( errIO.LT.0 ) THEN WRITE(msgBuf,'(2A)') & 'S/R NEST_PARENT_READPARMS', & ' reading parameter file "data.nest_parent"' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A,I4,A)') & 'Error reading namelist NEST_PARENT_PARM01 (err=', & errIO, ' )' CALL PRINT_ERROR( msgBuf, myThid ) STOP 'ABNORMAL END: S/R NEST_PARENT_READPARMS' ENDIF CLOSE(iUnit) WRITE(msgBuf,'(2A)') ' NEST_PARENT_READPARMS:', & ' finished reading "data.nest_parent"' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT, myThid ) C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| C-- Print out nesting parameter: iUnit = standardMessageUnit WRITE(msgBuf,'(A)') '// ===================================' CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid ) WRITE(msgBuf,'(A)') '// NEST_PARENT parameters :' CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid ) WRITE(msgBuf,'(A)') '// ===================================' CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid ) WRITE(iUnit,*) 'NEST_PARENT: NST_LEV_TOT_P =', NST_LEV_TOT_P WRITE(iUnit,*) 'NEST_PARENT: NST_LEV_P =', NST_LEV_P WRITE(iUnit,*) 'NEST_PARENT: NCPUs_PAR_P =', NCPUs_PAR_P WRITE(iUnit,*) 'NEST_PARENT: NCPUs_CLD_P =', NCPUs_CLD_P WRITE(iUnit,*) 'NEST_PARENT: MSTR_DRV_P =', MSTR_DRV_P WRITE(iUnit,*) 'NEST_PARENT: MSTR_PAR_P =', MSTR_PAR_P WRITE(iUnit,*) 'NEST_PARENT: MSTR_CLD_P =', MSTR_CLD_P WRITE(iUnit,*) 'NEST_PARENT: LeftB =', LeftB WRITE(iUnit,*) 'NEST_PARENT: RightB =', RightB iLen = MAX( 1, ILNBLNK(dirNEST_PARENT) ) WRITE(iUnit,*) 'NEST_PARENT: dirNEST_PARENT =', & dirNEST_PARENT(1:iLen) WRITE(msgBuf,'(A)') '// ===================================' CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid ) WRITE(msgBuf,'(A)') ' ' CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid ) C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| _END_MASTER(myThid) C-- Everyone else must wait for the parameters to be loaded _BARRIER #endif /* ALLOW_NEST_PARENT */ RETURN END