C $Header: /u/gcmpack/MITgcm/model/src/convect.F,v 1.25 2005/06/22 00:25:32 jmc Exp $
C $Name: $
#include "PACKAGES_CONFIG.h"
#include "CPP_OPTIONS.h"
CBOP
C !ROUTINE: CONVECT
C !INTERFACE:
SUBROUTINE CONVECT( bi, bj, iMin, iMax, jMin, jMax, K,
& rhoKm1, rhoKp1, ConvectCount,
& myTime,myIter, myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE CONVECT
C | o Does vertical mixing of unstable water columns
C *==========================================================*
C | Uses simple homgenisation scheme between unstable
C | layers.
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global data ==
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "DYNVARS.h"
#include "GRID.h"
EXTERNAL
LOGICAL DIFFERENT_MULTIPLE
C !INPUT/OUTPUT PARAMETERS:
C == Routine arguments ==
C bi,bj,iMin,iMax,jMin,jMax,K - Loop counters
C rhoKm1 - rho in layer above
C rhoKp1 - rho in layer below
C myTime - Current time in simulation
C myIter - Current iteration in simulation
C myThid - Thread number of this instance of S/R CONVECT
INTEGER bi,bj,iMin,iMax,jMin,jMax,K
_RL rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
_RL rhoKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
_RL ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
_RL myTime
INTEGER myIter
INTEGER myThid
C !LOCAL VARIABLES:
C == Local variables ==
C i,j :: Loop counter
C tMix :: Temp. for calculation of mixed theta.
C sMix :: Temp. for calculation of mixed salt.
C dSum :: Temp. for layer thicknesses
INTEGER i,j
_RL tMix(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
_RL sMix(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
_RL dSum(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
CEOP
C-- Check to see if should convect now
IF ( DIFFERENT_MULTIPLE(cAdjFreq,myTime,deltaTClock)
& ) THEN
C-- Calculate heat content of two level column
DO j=jMin,jmax
DO i=iMin,imax
tMix(i,j) = theta(i,j,k-1,bi,bj)
& *_hFacC(i,j,k-1,bi,bj)*drF(k-1)
& +theta(i,j,k,bi,bj)
& *_hFacC(i,j,k,bi,bj)*drF(k)
sMix(i,j) = salt (i,j,k-1,bi,bj)
& *_hFacC(i,j,k-1,bi,bj)*drF(k-1)
& +salt (i,j,k,bi,bj)
& *_hFacC(i,j,k,bi,bj)*drF(k)
dSum(i,j) = _hFacC(i,j,k-1,bi,bj)*drF(k-1)
& +_hFacC(i,j,k,bi,bj)*drF(k)
ENDDO
ENDDO
C-- Where statically unstable, mix the heat and salt
DO j=jMin,jmax
DO i=iMin,imax
IF ( _hFacC(i,j,k,bi,bj) .GT. 0. .AND.
& (rhokm1(i,j)-rhokp1(i,j))*rkSign*gravitySign .GT. 0.
& ) THEN
theta(i,j,k-1,bi,bj) = tMix(i,j)/dSum(i,j)
theta(i,j,k ,bi,bj) = tMix(i,j)/dSum(i,j)
salt(i,j,k-1,bi,bj) = sMix(i,j)/dSum(i,j)
salt(i,j,k ,bi,bj) = sMix(i,j)/dSum(i,j)
ConvectCount(i,j,k) = ConvectCount(i,j,k) + 1.
ENDIF
ENDDO
ENDDO
ENDIF
RETURN
END