C $Header: /u/gcmpack/MITgcm/model/src/do_stagger_fields_exchanges.F,v 1.12 2016/01/11 22:49:55 jmc Exp $ C $Name: $ #include "CPP_OPTIONS.h" CBOP C !ROUTINE: DO_STAGGER_FIELDS_EXCHANGES C !INTERFACE: SUBROUTINE DO_STAGGER_FIELDS_EXCHANGES(myTime, myIter, myThid) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE DO_STAGGER_FIELDS_EXCHANGES C | o Exchange edge info of Active tracers fields (U,V) C | (needed when using stagger time Step + multiDimAdvec) C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "DYNVARS.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C myTime :: Current time in simulation C myIter :: Current iteration number in simulation C myThid :: Thread number for this instance of the routine. _RL myTime INTEGER myIter INTEGER myThid CEOP IF ( .NOT.useOffLine ) THEN C- Apply Exchanges on dynamics state variable, except in Off-Line mode C- note: use less common EXCH S/R here (instead of usual ones) to C force TAF to also generate AD version for these rare ones IF ( staggerTimeStep ) THEN IF ( .NOT.applyExchUV_early ) & CALL EXCH_UV_3D_RL( uVel, vVel, .TRUE., Nr, myThid ) c & CALL EXCH_UV_XYZ_RL( uVel,vVel, .TRUE., myThid ) IF ( .NOT.implicitIntGravWave ) & CALL EXCH_3D_RL( wVel, Nr, myThid ) c & _EXCH_XYZ_RL( wVel, myThid ) ENDIF c #ifdef ALLOW_NONHYDROSTATIC IF ( implicitIntGravWave ) THEN c _EXCH_XYZ_RL( theta, myThid ) c _EXCH_XYZ_RL( salt , myThid ) CALL EXCH_SM_3D_RL( theta, .FALSE., Nr, myThid ) CALL EXCH_SM_3D_RL( salt , .FALSE., Nr, myThid ) ENDIF c #endif C- if not useOffLine: end ENDIF RETURN END