C $Header: /u/gcmpack/MITgcm/pkg/ocn_compon_interf/ocn_import_fields.F,v 1.5 2016/01/06 01:02:28 jmc Exp $
C $Name: $
#include "OCN_CPL_OPTIONS.h"
CBOP 0
C !ROUTINE: OCN_IMPORT_FIELDS
C !INTERFACE:
SUBROUTINE OCN_IMPORT_FIELDS( myIter, myThid )
C !DESCRIPTION:
C *==========================================================*
C | SUBROUTINE OCN_IMPORT_FIELDS
C | o Routine for importing fields (e.g. surface fluxes)
C | from coupling layer.
C *==========================================================*
C | This version talks to the MIT Coupler. It uses the
C | MIT Coupler "checkpoint 1" library calls.
C *==========================================================*
C !USES:
IMPLICIT NONE
C == Global variables ==
#include "SIZE.h"
#include "EEPARAMS.h"
#include "CPL_PARAMS.h"
#include "OCNIDS.h"
#include "OCNCPL.h"
C !INPUT/OUTPUT PARAMETERS:
C == Routine arguments ==
C myIter :: Current timestep number.
C myThid :: Thread number for this instance of the routine
INTEGER myIter
INTEGER myThid
CEOP
#ifdef COMPONENT_MODULE
C !LOCAL VARIABLES:
C Note: 1) all fields will have been gridded onto ocean grid.
C 2) MIT Coupler checkpoint1 does not allow asynchronous posting of
C data, so ordering has to be consistent with coupling layer ordering
_BARRIER
_BEGIN_MASTER( myThid )
C- Receive Atmospheric Sea-Level pressure from coupling layer.
CALL COMPRECV_R8TILES( ocnSLPrName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O atmSLPr )
C- Receive surface heatflux from coupling layer.
CALL COMPRECV_R8TILES( ocnHeatFluxName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O HeatFlux )
C- Receive net shortwave radiation from coupling layer.
CALL COMPRECV_R8TILES( ocnQshortWaveName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O qShortWave )
C- Receive Zonal surface wind-stress from coupling layer.
CALL COMPRECV_R8TILES( ocnTauXName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O tauX )
C- Receive Meridional surface wind-stress from coupling layer.
CALL COMPRECV_R8TILES( ocnTauYName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O tauY )
C- Receive fresh water flux from coupling layer.
CALL COMPRECV_R8TILES( ocnFWFluxName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O FWFlux )
IF ( ocn_cplExch1W_sIce ) THEN
C- Receive salt flux (sea-ice model) from coupling layer.
CALL COMPRECV_R8TILES( ocnSaltFxName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O iceSaltFlx )
C- Receive sea-ice mass (sea-ice model) from coupling layer.
CALL COMPRECV_R8TILES( ocnSIceMassName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O seaIceMass )
ENDIF
#ifdef ALLOW_SALT_PLUME
IF ( ocn_cplExch_SaltPl ) THEN
C- Receive salt-plume flux (for pkg/salt_plume) from coupling layer.
CALL COMPRECV_R8TILES( ocnSaltPlmFlxName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O saltPlmFlx_cpl )
ENDIF
#endif
#ifdef ALLOW_DIC
IF ( ocn_cplExch_RunOff ) THEN
C- Receive Run-Off from coupling layer.
CALL COMPRECV_R8TILES( ocnRunOffName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O RunOff_cpl )
ENDIF
IF ( ocn_cplExch_DIC ) THEN
C- Receive atmos CO2 level from coupling layer.
CALL COMPRECV_R8TILES( ocnAirCO2Name,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O airCO2 )
C- Receive surface windspeed from coupling layer.
CALL COMPRECV_R8TILES( ocnWindSpdName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O surfWSpeed )
ENDIF
#endif /* ALLOW_DIC */
#if (defined ALLOW_DIC) (defined ALLOW_THSICE)
IF ( ( ocn_cplExch1W_sIce.AND.ocn_cplExch_DIC )
& .OR. ocn_cplExch2W_sIce ) THEN
C- Receive seaice fraction from coupling layer.
CALL COMPRECV_R8TILES( ocnSIceFracName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O sIceFrac_cpl )
ENDIF
#endif /* ALLOW_DIC or ALLOW_THSICE */
#ifdef ALLOW_THSICE
IF ( ocn_cplExch2W_sIce ) THEN
C- Receive thSIce state-vars from coupling layer.
CALL COMPRECV_R8TILES( ocnSIceThickName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O sIceThick_cpl )
CALL COMPRECV_R8TILES( ocnSIceSnowName,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O sIceSnowH_cpl )
CALL COMPRECV_R8TILES( ocnSIceQ1Name,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O sIceQ1_cpl )
CALL COMPRECV_R8TILES( ocnSIceQ2Name,
I sNx, OLx, sNy, OLy, 1, nSx, nSy,
O sIceQ2_cpl )
ENDIF
#endif /* ALLOW_THSICE */
_END_MASTER( myThid )
_BARRIER
#endif /* COMPONENT_MODULE */
RETURN
END