C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_exch_som.F,v 1.4 2008/05/09 21:43:16 jmc Exp $ C $Name: $ #include "GAD_OPTIONS.h" CBOP C !ROUTINE: GAD_EXCH_SOM C !INTERFACE: SUBROUTINE GAD_EXCH_SOM( U smTr, I myNz, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE GAD_EXCH_SOM C | o Apply exchanges to update overlaps of 1srt & 2nd.Order C | Moments array, corresponding to 1 tracer C *==========================================================* C \ev C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "GAD.h" C !INPUT/OUTPUT PARAMETERS: C === Routine arguments === C smTr :: tracer 1rst & 2nd Order moments C myNz :: 3rd dimension of array to exchange C myThid :: my Thread Id number INTEGER myNz _RL smTr(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy,nSOM) INTEGER myThid CEOP C !LOCAL VARIABLES: C === Local variables === C-- Apply exchanges to 1rst.O.Moments: C- Sx,Sy : CALL EXCH_UV_AGRID_3D_RL( U smTr(1-OLx,1-OLy,1,1,1,1), U smTr(1-OLx,1-OLy,1,1,1,2), I .TRUE., myNz, myThid ) C- Sz : CALL EXCH_3D_RL( U smTr(1-OLx,1-OLy,1,1,1,3), I myNz, myThid ) C-- Apply exchanges to 2nd.O.Moments: C- Sxx,Syy : CALL EXCH_UV_AGRID_3D_RL( U smTr(1-OLx,1-OLy,1,1,1,4), U smTr(1-OLx,1-OLy,1,1,1,5), I .FALSE., myNz, myThid ) C- Szz : CALL EXCH_3D_RL( U smTr(1-OLx,1-OLy,1,1,1,6), I myNz, myThid ) C- Sxy : CALL EXCH_SM_3D_RL( U smTr(1-OLx,1-OLy,1,1,1,7), I .TRUE., myNz, myThid ) C- Sxz,Syz : CALL EXCH_UV_AGRID_3D_RL( U smTr(1-OLx,1-OLy,1,1,1,8), U smTr(1-OLx,1-OLy,1,1,1,9), I .TRUE., myNz, myThid ) RETURN END