C $Header: /u/gcmpack/MITgcm/pkg/atm_ocn_coupler/cpl_read_params.F,v 1.6 2016/01/06 00:32:44 jmc Exp $
C $Name: $
#include "CPP_OPTIONS.h"
CBOP 0
C !ROUTINE: CPL_READ_PARAMS
C !INTERFACE:
SUBROUTINE CPL_READ_PARAMS( msgUnit )
C !DESCRIPTION:
C *==========================================================*
C | SUBROUTINE CPL_READ_PARAMS
C | o Read coupler and mapping parameters
C *==========================================================*
C !USES:
IMPLICIT NONE
C == Global variables ==
#include "CPL_PARAMS.h"
C !INPUT/OUTPUT PARAMETERS:
C msgUnit :: log-file I/O unit
INTEGER msgUnit
C !LOCAL VARIABLES:
INTEGER ioUnit
LOGICAL fileExist
CEOP
NAMELIST //COUPLER_PARAMS
& cpl_sequential,
& cpl_exchange_RunOff,
& cpl_exchange1W_sIce, cpl_exchange2W_sIce,
& cpl_exchange_SaltPl, cpl_exchange_DIC,
& runOffMapSize, runOffMapFile
C-- Default values for Coupler parameters
cpl_sequential = 0
C default coupling-exch selector value: fit a simple warm
C aqua-planet (no land, no seaice, no CO2/DIC coupling)
cpl_exchange_RunOff = 0
cpl_exchange1W_sIce = 0
cpl_exchange2W_sIce = 0
cpl_exchange_SaltPl = 0
cpl_exchange_DIC = 0
runOffMapSize = 0
runOffMapFile = ' '
C- other parameters:
cplErrorCount = 0
fileExist = .FALSE.
C-- Read-in parameter file:
INQUIRE( FILE='data.cpl', EXIST=fileExist )
IF ( fileExist ) THEN
WRITE(msgUnit,'(2A)') 'CPL_READ_PARAMS: ',
& 'Reading parameter file "data.cpl"'
ioUnit = 88
OPEN( ioUnit, FILE='data.cpl',STATUS='old')
READ( ioUnit, COUPLER_PARAMS )
CLOSE(ioUnit )
ELSE
cplErrorCount = 1
WRITE(msgUnit,'(2A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& 'parameter file "data.cpl" not found'
WRITE(msgUnit,'(2A,I4,A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& '==> set ErrorCount=', cplErrorCount, ' (Fatal)'
ENDIF
C-- Check parameter consistency:
IF ( cpl_exchange2W_sIce.EQ.3 .AND. cpl_sequential.EQ.0 ) THEN
cplErrorCount = cplErrorCount + 1
WRITE(msgUnit,'(2A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& 'needs "cpl_sequential=1" to use: cpl_exchange2W_sIce=3'
WRITE(msgUnit,'(2A,I4,A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& '==> set ErrorCount=', cplErrorCount, ' (Fatal)'
ENDIF
IF ( cpl_exchange2W_sIce.EQ.1 .AND. cpl_sequential.EQ.1 ) THEN
cplErrorCount = cplErrorCount + 1
WRITE(msgUnit,'(2A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& 'needs "cpl_sequential=0" to use: cpl_exchange2W_sIce=1'
WRITE(msgUnit,'(2A,I4,A)') ' *** ERROR *** CPL_READ_PARAMS: ',
& '==> set ErrorCount=', cplErrorCount, ' (Fatal)'
ENDIF
C-- Print summary of Coupler parameters value
IF ( cplErrorCount.EQ.0 ) THEN
WRITE(msgUnit,'(2A)') 'CPL_READ_PARAMS: ',
& '------ Coupler parameter Summary: -----------------'
C- main coupling time-stepping selector:
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_sequential = ', cpl_sequential
C- cpl_exchange field selector:
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange_RunOff =', cpl_exchange_RunOff
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange1W_sIce =', cpl_exchange1W_sIce
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange2W_sIce =', cpl_exchange2W_sIce
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange_SaltPl =', cpl_exchange_SaltPl
WRITE(msgUnit,'(2A,I4)') 'CPL_READ_PARAMS: ',
& ' cpl_exchange_DIC =', cpl_exchange_DIC
C- run-off mapping parameters:
WRITE(msgUnit,'(2A,I8)') 'CPL_READ_PARAMS: ',
& ' runOffMapSize=', runOffMapSize
WRITE(msgUnit,'(3A)') 'CPL_READ_PARAMS: ',
& ' runOffMapFile=', runOffMapFile
WRITE(msgUnit,'(2A)') 'CPL_READ_PARAMS: ',
& '------ End of Coupler parameter Summary ------------'
ENDIF
RETURN
END