C $Header: /u/gcmpack/MITgcm/pkg/layers/layers_readparms.F,v 1.4 2010/12/16 00:56:48 dfer Exp $
C $Name: $
#include "LAYERS_OPTIONS.h"
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
SUBROUTINE LAYERS_READPARMS( myThid )
C Read LAYERS parameters from data file.
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "LAYERS_SIZE.h"
#include "LAYERS.h"
C INPUT PARAMETERS:
INTEGER myThid
#ifdef ALLOW_LAYERS
NAMELIST //LAYERS_PARM01
& layers_G, layers_taveFreq, layers_diagFreq,
& LAYER_nb, useBOLUS
C === Local variables ===
C msgBuf - Informational/error meesage buffer
C iUnit - Work variable for IO unit number
C k - index
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER iUnit, k
_BEGIN_MASTER(myThid)
C-- Default values for LAYERS
C The MNC stuff is not working yet
layers_MNC = .FALSE.
layers_MDSIO = .TRUE.
DO k=1,Nlayers+1
layers_G(k) = UNSET_RL
ENDDO
layers_taveFreq = taveFreq
layers_diagFreq = dumpFreq
LAYER_nb = 1
useBOLUS = .TRUE.
WRITE(msgBuf,'(A)') 'LAYERS_READPARMS: opening data.layers'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
CALL OPEN_COPY_DATA_FILE(
I 'data.layers', 'LAYERS_READPARMS',
O iUnit,
I myThid )
C Read parameters from open data file
READ(UNIT=iUnit,NML=LAYERS_PARM01)
WRITE(msgBuf,'(A)')
& 'LAYERS_READPARMS: finished reading data.layers'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
C Close the open data file
CLOSE(iUnit)
C-- Make sure the layers_G we just read is big enough
DO k=1,Nlayers+1
IF ( layers_G(k) .EQ. UNSET_RL ) THEN
WRITE(msgBuf,'(A,I4)')
& 'S/R LAYERS_READPARMS: No value for layers_G at k =', k
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R LAYERS_READPARMS'
ELSE IF ( k .EQ. 1 ) THEN
C Do nothing
ELSE IF ( layers_G(k) .LE. layers_G(k-1) ) THEN
C Check to make sure layers_G is increasing
WRITE(msgBuf,'(A,I4)')
& 'S/R LAYERS_READPARMS: layers_G is not increasing at k =', k
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R LAYERS_READPARMS'
ENDIF
ENDDO
C-- Make sure that we locally honor the global MNC on/off flag
layers_MNC = layers_MNC .AND. useMNC
#ifndef ALLOW_MNC
C Fix to avoid running without getting any output:
layers_MNC = .FALSE.
#endif
layers_MDSIO = (.NOT. layers_MNC) .OR. outputTypesInclusive
_END_MASTER(myThid)
C-- Everyone else must wait for the parameters to be loaded
_BARRIER
#endif /* ALLOW_MYPACKAGE */
RETURN
END