C $Header: /u/gcmpack/MITgcm/pkg/atm2d/get_ocnvars.F,v 1.5 2013/07/18 19:57:10 jmc Exp $
C $Name:  $

#include "ctrparam.h"
#include "ATM2D_OPTIONS.h"

C     !INTERFACE:
      SUBROUTINE GET_OCNVARS( myTime, myIter, myThid )
C     *==========================================================*
C     | Gets the ocean data from either the ocean common block,  |
C     | or, in MPI mode, from the passed common block. This data |
C     | is used by the atmosphere and sea ice models.            |
C     *==========================================================*
        IMPLICIT NONE

C     === Global Atmosphere Variables ===
#include "ATMSIZE.h"
#include "SIZE.h"
#include "EEPARAMS.h"
#include "THSICE_VARS.h"
#include "ATM2D_VARS.h"

#ifdef ATM2D_MPI_ON
#  include "OCNSIZE.h"
#  include "OCNVARS.h"
#  include "OCNIDS.h"
#else
#  include "PARAMS.h"
#  include "GRID.h"
#  include "SURFACE.h"
#  include "DYNVARS.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


#ifdef ATM2D_MPI_ON
C presuming ocnsize.h same as size.h
      DO j=1,sNy
        DO i=1,sNx
          sstFromOcn(i,j)= SST_ocn(i,j)
          sssFromOcn(i,j)= SSS_ocn(i,j)
          mlDepth(i,j) = OcMxlD_ocn(i,j)
          IF ( ocnCpl_exchange_DIC ) oFluxCO2(i,j) = fluxCO2_ocn(i,j)
C          IF ( ocnCpl_exchange_DIC )
C     &       print *,'ofluxCO2:',i,j,fluxCO2_ocn(i,j)

C Put in seaice common block
          tOceMxl(i,j,1,1)= SST_ocn(i,j)
          sOceMxl(i,j,1,1)= SSS_ocn(i,j)
          hOceMxl(i,j,1,1) = OcMxlD_ocn(i,j)
          v2ocMxL(i,j,1,1) =  vSq_ocn(i,j)
        ENDDO
      ENDDO

#else
       DO j=1,sNy
        DO i=1,sNx
          sstFromOcn(i,j) = theta(i,j,1,1,1)
          sssFromOcn(i,j) = salt (i,j,1,1,1)
        ENDDO
       ENDDO

#  ifdef NONLIN_FRSURF
Cjrs ask J-M about next lines
      IF ( nonlinFreeSurf.GT.0 .AND. staggerTimeStep ) THEN
       IF ( select_rStar.GT.0 ) THEN
        DO j=1,sNy
         DO i=1,sNx
           mlDepth(i,j) =
     &          h0FacC(i,j,1,1,1)*rStarFacC(i,j,1,1)*drF(1)
         ENDDO
        ENDDO
       ELSE
        DO j=1,sNy
         DO i=1,sNx
           mlDepth(i,j) = hFac_surfC(i,j,1,1)*drF(1)
         ENDDO
        ENDDO
       ENDIF
      ELSE
  else /* NONLIN_FRSURF */
      IF (.TRUE.) THEN
#  endif /* NONLIN_FRSURF */
       DO j=1,sNy
        DO i=1,sNx
           mlDepth(i,j) = hFacC(i,j,1,1,1)*drF(1)
        ENDDO
       ENDDO
      ENDIF

      DO j=1,sNy
        DO i=1,sNx
          v2ocMxL(i,j,1,1) =
     &              ( uVel(i , j,1,1,1)*uVel(i , j,1,1,1)
     &              + uVel(i+1,j,1,1,1)*uVel(i+1,j,1,1,1)
     &              + vVel(i,j+1,1,1,1)*vVel(i,j+1,1,1,1)
     &              + vVel(i,j , 1,1,1)*vVel(i,j , 1,1,1)
     &              )*0.5 _d 0
        ENDDO
      ENDDO

      DO j=1,sNy
        DO i=1,sNx

#  ifdef ALLOW_DIC
          oFluxCO2(i,j) = fluxCO2(i,j,1,1)
#  endif

C Put in seaice common block
          tOceMxl(i,j,1,1)= sstFromOcn(i,j)
          sOceMxl(i,j,1,1)= sssFromOcn(i,j)
          hOceMxl(i,j,1,1) = mlDepth(i,j)
        ENDDO
      ENDDO

#endif

      RETURN
      END