C $Header: /u/gcmpack/MITgcm/pkg/atm2d/put_ocnvars.F,v 1.6 2010/04/30 20:25:59 jscott Exp $
C $Name: $
#include "ctrparam.h"
#include "ATM2D_OPTIONS.h"
C !INTERFACE:
SUBROUTINE PUT_OCNVARS( myTime, myIter, myThid )
C *==========================================================*
C | Put fluxes for the ocean where needed: MPI mode, into |
c | common block for passing; single-proc, into FFIELDS.h |
C *==========================================================*
IMPLICIT NONE
C === Global Atmosphere Variables ===
#include "ATMSIZE.h"
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "THSICE_VARS.h"
#include "ATM2D_VARS.h"
#ifdef ATM2D_MPI_ON
# include "OCNSIZE.h"
# include "OCNVARS.h"
# include "OCNIDS.h"
#else
# include "FFIELDS.h"
# include "SURFACE.h"
# ifdef ALLOW_DIC
# include "DIC_VARS.h"
# endif
#endif
C !INPUT/OUTPUT PARAMETERS:
C === Routine arguments ===
C myTime - current simulation time (ocean model time)
C myIter - iteration number (ocean model)
C myThid - Thread no. that called this routine.
_RL myTime
INTEGER myIter
INTEGER myThid
C LOCAL VARIABLES:
INTEGER i,j
DO j=1,sNy
DO i=1,sNx
#ifdef ATM2D_MPI_ON
C OCNVARS common set from ATM2D common
atmSLPr_ocn(i,j)= pass_slp(i,j)
HeatFlux_ocn(i,j)= pass_qnet(i,j)
qShortWave_ocn(i,j)= pass_solarnet(i,j)
TauX_ocn(i,j)= pass_fu(i,j)
TauY_ocn(i,j)= pass_fv(i,j)
C convert FW to MITGCM units kg/m2/s for passing
FWFlux_ocn(i,j)= (pass_precip(i,j) + pass_evap(i,j)
& + pass_runoff(i,j)) * rhoConstFresh
SaltFlx_ocn(i,j) = sFluxFromIce(i,j)
# ifdef ATMOSPHERIC_LOADING
sIceMass_ocn(i,j) = pass_sIceLoad(i,j)
# endif /* ATMOSPHERIC_LOADING */
IF ( ocnCpl_exchange_DIC ) THEN
aCO2_ocn(i,j) = pass_pCO2(i,j)
wSpeed_ocn(i,j) = pass_wspeed(i,j)
sIceFrac_ocn(i,j) = iceMask(i,j,1,1)
ENDIF
#else
C FFIELDS.h common block set from ATM2D common
pLoad(i,j,1,1)= pass_slp(i,j)
Qnet(i,j,1,1)= pass_qnet(i,j)
Qsw(i,j,1,1)= pass_solarnet(i,j)
fu(i,j,1,1)= pass_fu(i,j)
fv(i,j,1,1)= pass_fv(i,j)
EmPmR(i,j,1,1)= (pass_precip(i,j) + pass_evap(i,j)
& + pass_runoff(i,j)) * rhoConstFresh
saltFlux(i,j,1,1)= sFluxFromIce(i,j)
CALL EXCH_UV_XY_RS(fu,fv,.TRUE.,myThid)
_EXCH_XY_RS(EmPmR, myThid ) !for NL Free surf?
_EXCH_XY_RS(saltFlux, myThid )
_EXCH_XY_RS(Qnet, myThid )
_EXCH_XY_RS(Qsw, myThid )
# ifdef ATMOSPHERIC_LOADING
sIceLoad(i,j,1,1) = pass_sIceLoad(i,j)
_EXCH_XY_RS(pLoad, myThid )
_EXCH_XY_RS( sIceLoad, myThid )
C phi0surf(i,j,1,1) = pass_slp(i,j)*recip_rhoConst
C & + gravity*seaIceMass(i,j,1,1)*recip_rhoConst
# endif /* ATMOSPHERIC_LOADING */
# ifdef ALLOW_DIC
C icemask should be imported in DIC code
AtmospCO2(i,j,1,1)= pass_pCO2(i,j)
wind(i,j,1,1)= pass_wspeed(i,j)
_EXCH_XY_RL(AtmospCO2 , myThid )
_EXCH_XY_RL(wind , myThid )
# endif /* ALLOW_DIC */
#endif /* ATM2D_MPI_ON */
ENDDO
ENDDO
RETURN
END