C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_do_exch.F,v 1.3 2014/12/05 17:39:39 jmc Exp $ C $Name: $ #include "GMREDI_OPTIONS.h" CBOP C !ROUTINE: GMREDI_DO_EXCH C !INTERFACE: SUBROUTINE GMREDI_DO_EXCH( I myTime, myIter, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE GMREDI_DO_EXCH C | o Apply Exchanges to GM-Redi variables when necessary C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GMREDI.h" C !INPUT/OUTPUT PARAMETERS: C myTime :: Current time in simulation C myIter :: Current iteration number in simulation C myThid :: my Thread Id. number _RL myTime INTEGER myIter INTEGER myThid CEOP C !LOCAL VARIABLES: #ifdef GM_BOLUS_ADVEC #ifdef ALLOW_EDDYPSI IF ( GM_InMomAsStress ) THEN #else C For multi-dim advection, need valid bolus velocity in halo regions C near CS-corners: Because of sigmaR averaging @ U & V points, that C would require calling FILL_CS_CORNER_TR before each averaging (similar C to what is done in grad_sigma.F), near CS-corner values are not right. C This exchange fixes this Pb. Fix also a similar Pb with VisbeckK or C with GM-bolus 2-D mapping factor (GM_bolFac2d). IF ( useCubedSphereExchange & .AND. GM_AdvForm & .AND. .NOT.GM_AdvSeparate & .AND. useMultiDimAdvec ) THEN #endif #ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('EXCH_UV(GM_PsiX,Y)',myThid) #endif CALL EXCH_UV_XYZ_RL( GM_PsiX, GM_PsiY, .TRUE., myThid ) ENDIF #endif /* GM_BOLUS_ADVEC */ RETURN END