Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:41:46 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
55f64449a3 Ryan*0001 #include "CPP_OPTIONS.h"
                0002 #include "LAYERS_OPTIONS.h"
                0003 
                0004 CBOP
                0005 C     !ROUTINE: LAYERS_WSURF_TR
                0006 C     !INTERFACE:
                0007       SUBROUTINE LAYERS_WSURF_TR(thetaFld, saltFld, wVelFld,
                0008      I                         myTime, myIter, myThid )
                0009 C     !DESCRIPTION: \bv
                0010 C     *==========================================================*
                0011 C     | SUBROUTINE LAYERS_WSURF_TR
                0012 C     |     (copied from CALC_WSURF_TR)
                0013 C     | o Compute a correction for the source/sink of tracer
                0014 C     |   due to the linear free surface.
                0015 C     | o Add this correction to the layers surface flux
                0016 C     *==========================================================*
                0017 C     \ev
                0018 
                0019 C     !USES:
                0020       IMPLICIT NONE
                0021 C     == Global variables
                0022 #include "SIZE.h"
                0023 #include "EEPARAMS.h"
                0024 #include "PARAMS.h"
                0025 #include "GRID.h"
                0026 #include "SURFACE.h"
                0027 #include "LAYERS_SIZE.h"
                0028 #include "LAYERS.h"
                0029 
                0030 C     !INPUT/OUTPUT PARAMETERS:
                0031 C     == Routine arguments ==
                0032 C     myTime   :: Current time in simulation
                0033 C     myIter   :: Current iteration number in simulation
                0034 C     myThid   :: Thread number for this instance of the routine.
                0035 C     thetaFld :: Potential Temperature field
                0036 C     saltFld  :: Salinity field
                0037 C     wvelFld  :: vertical velocity field
                0038       _RL myTime
                0039       INTEGER myIter
                0040       INTEGER myThid
                0041       _RL thetaFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
                0042       _RL saltFld (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
                0043       _RL wVelFld (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
                0044 
                0045 #ifdef LAYERS_THERMODYNAMICS
                0046 
                0047 C     !LOCAL VARIABLES:
                0048 C     Local variables
                0049 C     i,j,k,bi,bj  :: loop counter
                0050 C     tCor, sCor   :: corrections for theta and salt
                0051       INTEGER i,j,bi,bj,ks
                0052       _RL tcor, scor
                0053 CEOP
                0054 
                0055 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0056 
                0057       DO bj=myByLo(myThid), myByHi(myThid)
                0058        DO bi=myBxLo(myThid), myBxHi(myThid)
                0059          DO j=1,sNy
                0060           DO i=1,sNx
                0061              ks = ksurfC(i,j,bi,bj)
                0062              IF (ks.LE.Nr) THEN
                0063 c --           Temperature
                0064                tcor = -wVelFld(i,j,ks,bi,bj) * thetaFld(i,j,ks,bi,bj)
                0065                scor = -wVelFld(i,j,ks,bi,bj) * saltFld(i,j,ks,bi,bj)
                0066                IF (linFSConserveTr) THEN
                0067                  tcor = tcor + TsurfCor
                0068                  scor = scor + SsurfCor
                0069                ENDIF
                0070 c --           Temperature needs to be in the units of TFLUX)
                0071                layers_surfflux(i,j,1,1,bi,bj) =
                0072      &           layers_surfflux(i,j,1,1,bi,bj) +
                0073      &           tcor * HeatCapacity_Cp * rUnit2mass
                0074 c --           Salinity needs to be in the units of SFLUX)
                0075                layers_surfflux(i,j,1,2,bi,bj) =
                0076      &           layers_surfflux(i,j,1,2,bi,bj) +
                0077      &           scor * rUnit2mass
                0078              ENDIF
                0079           ENDDO
                0080          ENDDO
                0081 C-     end bi,bj loop.
                0082        ENDDO
                0083       ENDDO
                0084 
                0085 #endif /* LAYERS_THERMODYNAMICS */
                0086 
                0087       RETURN
                0088       END