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