C $Header: /u/gcmpack/MITgcm/pkg/ocn_compon_interf/cpl_import_cplparms.F,v 1.2 2016/01/06 01:05:45 jmc Exp $
C $Name: $
#include "OCN_CPL_OPTIONS.h"
CBOP 0
C !ROUTINE: CPL_IMPORT_CPLPARMS
C !INTERFACE:
SUBROUTINE CPL_IMPORT_CPLPARMS( myThid )
C !DESCRIPTION:
C *==========================================================*
C | SUBROUTINE CPL_IMPORT_CPLPARMS
C | o Routine for importing coupling parameters
C | from/to the coupler layer
C *==========================================================*
C | this version is specific to 1 component (ocean)
C *==========================================================*
C !USES:
IMPLICIT NONE
C == Global variables ==
#include "SIZE.h"
#include "EEPARAMS.h"
#include "CPL_PARAMS.h"
#include "OCNIDS.h"
C !INPUT/OUTPUT PARAMETERS:
C == Routine arguments ==
C myThid :: Thread number for this instance of the routine
INTEGER myThid
CEOP
C !LOCAL VARIABLES:
C == Local variables ==
C i :: Loop counter
C parBuf :: local buffer to receive coupler-params
C msgBuf :: Informational/error message buffer
INTEGER i
INTEGER parBuf(ocnParSize)
CHARACTER*(MAX_LEN_MBUF) msgBuf
_BARRIER
_BEGIN_MASTER( myThid )
C-- Initialise error counter:
cplErrorCount = 0
C- Initialise buffer
DO i=1,ocnParSize
parBuf(i) = 0
ENDDO
C- Receive coupler configuration info.
C o Import coupling exchange-field selectors (coupler params)
CALL COMPRECV_I4VEC(
I ocnCplParamsName, ocnParSize,
O parBuf )
C-dBug:
WRITE(standardMessageUnit,'(A,10I6)')
& ' CPL_IMPORT_CPLPARMS: Recv parBuf=', (parBuf(i),i=1,ocnParSize)
C-dBug:
C- o Set options for coupling exchange
IF ( ocnParSize.EQ.6 ) THEN
ocn_cplSequential = parBuf(1).EQ.1
ocn_cplExch_RunOff = MOD(parBuf(2),2).EQ.1
ocn_cplExch1W_sIce = MOD(parBuf(3),2).EQ.1
ocn_cplExch2W_sIce = MOD(parBuf(4),2).EQ.1
ocn_cplExch_SaltPl = MOD(parBuf(5),2).EQ.1
ocn_cplExch_DIC = MOD(parBuf(6),2).EQ.1
C- save coupler parameter:
cpl_exchange_RunOff = parBuf(2)
cpl_exchange1W_sIce = parBuf(3)
cpl_exchange2W_sIce = parBuf(4)
cpl_exchange_SaltPl = parBuf(5)
cpl_exchange_DIC = parBuf(6)
ELSE
C- If not using an up-to-date OCNIDS.h with the wrong ocnParSize
cplErrorCount = cplErrorCount + 1
WRITE(msgBuf,'(2A,I4,A)') 'CPL_IMPORT_CPLPARMS: ',
& 'ocnParSize=', ocnParSize, ' is wrong (expect 6)'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(2A,I4,A)') 'CPL_IMPORT_CPLPARMS: ',
& '==> set ErrorCount=', cplErrorCount, ' (Fatal)'
CALL PRINT_ERROR( msgBuf, myThid )
ENDIF
_END_MASTER( myThid )
_BARRIER
RETURN
END