Back to home page

MITgcm

 
 

    


File indexing completed on 2021-08-12 05:10:54 UTC

view on githubraw file Latest commit 0320e252 on 2021-08-11 16:08:52 UTC
6d54cf9ca1 Ed H*0001 #include "PACKAGES_CONFIG.h"
fb481a83c2 Alis*0002 #include "CPP_OPTIONS.h"
                0003 
9366854e02 Chri*0004 CBOP
                0005 C     !ROUTINE: DO_FIELDS_BLOCKING_EXCHANGES
                0006 C     !INTERFACE:
fb481a83c2 Alis*0007       SUBROUTINE DO_FIELDS_BLOCKING_EXCHANGES(myThid)
7ad9030305 Jean*0008 
9366854e02 Chri*0009 C     !DESCRIPTION: \bv
7ad9030305 Jean*0010 C     *==========================================================*
                0011 C     | SUBROUTINE DO_FIELDS_BLOCKING_EXCHANGES
                0012 C     | o Controlling routine for exchanging edge info.
                0013 C     *==========================================================*
                0014 C     | One key trick used in UV us that we over-compute and
                0015 C     | arrange our time-stepping loop so that we only need one
                0016 C     | edge exchange for the explicit code per timestep.
                0017 C     *==========================================================*
9366854e02 Chri*0018 C     \ev
7ad9030305 Jean*0019 
9366854e02 Chri*0020 C     !USES:
fb481a83c2 Alis*0021       IMPLICIT NONE
                0022 C     == Global variables ===
                0023 #include "SIZE.h"
                0024 #include "EEPARAMS.h"
f9ff59e0c6 Jean*0025 #include "PARAMS.h"
fb481a83c2 Alis*0026 #include "DYNVARS.h"
4e66ab0b67 Oliv*0027 #ifdef ALLOW_LONGSTEP
                0028 #include "LONGSTEP.h"
                0029 #endif
9da3c4e8e8 Jean*0030 #ifdef ALLOW_GENERIC_ADVDIFF
                0031 # include "GAD.h"
                0032 #endif
a5bd9cbb61 Ed H*0033 #ifdef ALLOW_CD_CODE
9da3c4e8e8 Jean*0034 # include "CD_CODE_VARS.h"
a5bd9cbb61 Ed H*0035 #endif
fb481a83c2 Alis*0036 
9366854e02 Chri*0037 C     !INPUT/OUTPUT PARAMETERS:
fb481a83c2 Alis*0038 C     == Routine arguments ==
7ad9030305 Jean*0039 C     myThid :: my Thread Id number
fb481a83c2 Alis*0040       INTEGER myThid
9366854e02 Chri*0041 CEOP
fb481a83c2 Alis*0042 
7ad9030305 Jean*0043 C     !LOCAL VARIABLES:
                0044 C     bi, bj :: tile indices
                0045 #ifdef ALLOW_OBCS
97be5f9871 Jean*0046 c     INTEGER bi, bj
7ad9030305 Jean*0047 #endif /* ALLOW_OBCS */
                0048 
978f5dc530 Jean*0049       IF ( .NOT.useOffLine ) THEN
                0050 C-    Apply Exchanges on dynamics state variable, except in Off-Line mode
                0051 
882e7446f0 Jean*0052       IF ( .NOT.staggerTimeStep ) THEN
35c76859f0 Jean*0053        IF ( .NOT.applyExchUV_early )
                0054      &  CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
cb7fa97db9 Jean*0055        IF ( .NOT.implicitIntGravWave )
12c8b75709 Jean*0056      & _EXCH_XYZ_RL( wVel , myThid )
ffd0966f4f Jean*0057       ENDIF
615c650f5e Jean*0058 c     IF ( exactConserv .AND. implicDiv2Dflow .NE. 0. _d 0)
12c8b75709 Jean*0059 c    & _EXCH_XY_RL( etaN , myThid )
cb7fa97db9 Jean*0060       IF ( .NOT.implicitIntGravWave ) THEN
12c8b75709 Jean*0061        _EXCH_XYZ_RL( theta, myThid )
                0062        _EXCH_XYZ_RL( salt , myThid )
cb7fa97db9 Jean*0063       ENDIF
7ad9030305 Jean*0064 #ifdef ALLOW_OBCS
97be5f9871 Jean*0065 c     IF ( useOBCS ) THEN
                0066 c      DO bj = myByLo(myThid), myByHi(myThid)
                0067 c       DO bi = myBxLo(myThid), myBxHi(myThid)
882e7446f0 Jean*0068 c        CALL OBCS_COPY_TRACER( theta(1-OLx,1-OLy,1,bi,bj),
97be5f9871 Jean*0069 c    I                          Nr, bi, bj, myThid )
882e7446f0 Jean*0070 c        CALL OBCS_COPY_TRACER( salt (1-OLx,1-OLy,1,bi,bj),
97be5f9871 Jean*0071 c    I                          Nr, bi, bj, myThid )
                0072 c       ENDDO
                0073 c      ENDDO
                0074 c     ENDIF
7ad9030305 Jean*0075 #endif /* ALLOW_OBCS */
fb481a83c2 Alis*0076 
9da3c4e8e8 Jean*0077 #ifdef ALLOW_GENERIC_ADVDIFF
                0078       IF ( tempSOM_Advection .OR. saltSOM_Advection )
                0079      &  CALL GAD_SOM_EXCHANGES( myThid )
                0080 #endif
                0081 
138482fdf6 Ed H*0082 #ifdef ALLOW_CD_CODE
e988230044 Jean*0083       CALL EXCH_UV_DGRID_3D_RL( uVelD,vVelD, .TRUE., Nr, myThid )
fb481a83c2 Alis*0084 #endif
901f12b7bc Jean*0085       IF ( storePhiHyd4Phys )
0924cd4fe2 Jean*0086      & _EXCH_XYZ_RL( totPhiHyd , myThid )
978f5dc530 Jean*0087 C-    if not useOffLine: end
                0088       ENDIF
fb481a83c2 Alis*0089 
5c43c390b6 Alis*0090 #ifdef ALLOW_PTRACERS
4e66ab0b67 Oliv*0091 #ifdef ALLOW_LONGSTEP
                0092       IF ( LS_doTimeStep ) THEN
                0093 #else
                0094       IF ( .TRUE. ) THEN
                0095 #endif
615c650f5e Jean*0096       IF (usePTRACERS)
064f472621 Ed H*0097      &  CALL PTRACERS_FIELDS_BLOCKING_EXCH(myThid)
4e66ab0b67 Oliv*0098 C     endif LS_doTimeStep
                0099       ENDIF
5c43c390b6 Alis*0100 #endif /* ALLOW PTRACERS */
                0101 
fb481a83c2 Alis*0102       RETURN
                0103       END