C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/nesting_sannino/nest_child/nest_child_readparms.F,v 1.3 2010/11/28 02:13:01 jmc Exp $ C $Name: $ #include "NEST_CHILD_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: NEST_CHILD_READPARMS C !INTERFACE: SUBROUTINE NEST_CHILD_READPARMS( myThid ) C !DESCRIPTION: C Routine to read in file data.nest_child C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "NEST_CHILD_PARAMS.h" C !INPUT PARAMETERS: INTEGER myThid CEOP #ifdef ALLOW_NEST_CHILD 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_CHILD coupler parameters NAMELIST /NEST_CHILD_PARM01/ & nest_child_a, & dirNEST_CHILD, & dirCHILD _BEGIN_MASTER(myThid) WRITE(msgBuf,'(A)') & ' NEST_CHILD_READPARAMS: opening "data.nest_child"' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT, myThid ) CALL OPEN_COPY_DATA_FILE( I 'data.nest_child', 'NEST_CHILD_READPARAMS', O iUnit, I myThid ) C-- set default NEST_CHILD coupler parameters nest_child_a = 0. _d 0 C-- Read settings from model parameter file "data.nest_child". READ(UNIT=iUnit,NML=NEST_CHILD_PARM01,IOSTAT=errIO) IF ( errIO.LT.0 ) THEN WRITE(msgBuf,'(2A)') & 'S/R NEST_CHILD_READPARMS', & ' reading parameter file "data.nest_child"' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A,I4,A)') & 'Error reading namelist NEST_CHILD_PARM01 (err=', & errIO, ' )' CALL PRINT_ERROR( msgBuf, myThid ) STOP 'ABNORMAL END: S/R NEST_CHILD_READPARMS' ENDIF CLOSE(iUnit) WRITE(msgBuf,'(2A)') ' NEST_CHILD_READPARMS:', & ' finished reading "data.nest_child"' 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_CHILD parameters :' CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid ) WRITE(msgBuf,'(A)') '// ===================================' CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid ) WRITE(iUnit,*) 'NEST_CHILD: NST_LEV_TOT_C =', NST_LEV_TOT_C WRITE(iUnit,*) 'NEST_CHILD: NST_LEV_C =', NST_LEV_C WRITE(iUnit,*) 'NEST_CHILD: NCPUs_PAR_C =', NCPUs_PAR_C WRITE(iUnit,*) 'NEST_CHILD: NCPUs_CLD_C =', NCPUs_CLD_C WRITE(iUnit,*) 'NEST_CHILD: MSTR_DRV_C =', MSTR_DRV_C WRITE(iUnit,*) 'NEST_CHILD: MSTR_PAR_C =', MSTR_PAR_C WRITE(iUnit,*) 'NEST_CHILD: MSTR_CLD_C =', MSTR_CLD_C WRITE(iUnit,*) 'NEST_CHILD: nest_child_a =', nest_child_a iLen = MAX( 1, ILNBLNK(dirNEST_CHILD) ) WRITE(iUnit,*) 'NEST_CHILD: dirNEST_CHILD =', & dirNEST_CHILD(1:iLen) iLen = MAX( 1, ILNBLNK(dirCHILD) ) WRITE(iUnit,*) 'NEST_CHILD: dirCHILD =', dirCHILD(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_CHILD */ RETURN END