Back to home page

MITgcm

 
 

    


Warning, /eesupp/src/exch_uv_bgrid_3d_rx.template is written in an unsupported language. File is not indexed.

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
ac492cb922 Jean*0001 #include "PACKAGES_CONFIG.h"
                0002 #include "CPP_EEOPTIONS.h"
                0003 
                0004 CBOP
                0005 C     !ROUTINE: EXCH_UV_BGRID_3D_RX
                0006 
                0007 C     !INTERFACE:
                0008       SUBROUTINE EXCH_UV_BGRID_3D_RX(
                0009      U                                 uPhi, vPhi,
                0010      I                                 withSigns, myNz, myThid )
                0011 
                0012 C     !DESCRIPTION:
                0013 C*=====================================================================*
                0014 C  Purpose: SUBROUTINE EXCH_UV_BGRID_3D_RX
                0015 C      handle exchanges for a 3D vector field on an B-grid.
                0016 C
                0017 C  Input:
                0018 C    uPhi(lon,lat,levs,bi,bj) :: first component of vector
                0019 C    vPhi(lon,lat,levs,bi,bj) :: second component of vector
                0020 C    withSigns (logical)      :: true to use sign of components
                0021 C    myNz                     :: 3rd dimension of input arrays uPhi,vPhi
                0022 C    myThid                   :: my Thread Id number
                0023 C
                0024 C  Output: uPhi and vPhi are updated (halo regions filled)
                0025 C
                0026 C  Branch to appropriate exchange routine for B-grid vector field
                0027 C*=====================================================================*
                0028 
                0029 C     !USES:
                0030       IMPLICIT NONE
                0031 
                0032 #include "SIZE.h"
                0033 #include "EEPARAMS.h"
                0034 
                0035 C     !INPUT/OUTPUT PARAMETERS:
                0036 C     == Argument list variables ==
                0037       INTEGER myNz
                0038       _RX uPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
                0039       _RX vPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
                0040       LOGICAL withSigns
                0041       INTEGER myThid
                0042 
                0043 C     !LOCAL VARIABLES:
                0044 #ifndef ALLOW_EXCH2
                0045 C     == Local variables ==
                0046 C     OL[wens]      :: Overlap extents in west, east, north, south.
                0047 C     exchWidth[XY] :: Extent of regions that will be exchanged.
                0048 
                0049       INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
                0050 #endif
                0051 CEOP
                0052 
                0053 #ifdef ALLOW_EXCH2
                0054       CALL EXCH2_UV_BGRID_3D_RX(
                0055      U                       uPhi, vPhi,
                0056      I                       withSigns, myNz, myThid )
                0057 #else /* ALLOW_EXCH2 */
                0058       OLw        = OLx
                0059       OLe        = OLx
                0060       OLn        = OLy
                0061       OLs        = OLy
                0062       exchWidthX = OLx
                0063       exchWidthY = OLy
                0064 
                0065       IF ( useCubedSphereExchange ) THEN
                0066 C---  using CubedSphereExchange:
                0067 
45d7b5cc4e Jean*0068        CALL EXCH1_BG_RX_CUBE(
                0069      U            uPhi, vPhi,
                0070      I            withSigns,
                0071      I            OLw, OLe, OLs, OLn, myNz,
                0072      I            exchWidthX, exchWidthY,
                0073      I            EXCH_UPDATE_CORNERS, myThid )
ac492cb922 Jean*0074 
                0075       ELSE
                0076 C---  not using CubedSphereExchange:
                0077 
6979a1789e Jean*0078 #ifdef DISCONNECTED_TILES
                0079        CALL EXCH0_RX( uPhi,
                0080      I            OLw, OLe, OLs, OLn, myNz,
                0081      I            exchWidthX, exchWidthY,
                0082      I            EXCH_UPDATE_CORNERS, myThid )
                0083        CALL EXCH0_RX( vPhi,
                0084      I            OLw, OLe, OLs, OLn, myNz,
                0085      I            exchWidthX, exchWidthY,
                0086      I            EXCH_UPDATE_CORNERS, myThid )
                0087 #else /* DISCONNECTED_TILES */
45d7b5cc4e Jean*0088        CALL EXCH1_RX( uPhi,
                0089      I            OLw, OLe, OLs, OLn, myNz,
                0090      I            exchWidthX, exchWidthY,
                0091      I            EXCH_UPDATE_CORNERS, myThid )
                0092        CALL EXCH1_RX( vPhi,
                0093      I            OLw, OLe, OLs, OLn, myNz,
                0094      I            exchWidthX, exchWidthY,
                0095      I            EXCH_UPDATE_CORNERS, myThid )
6979a1789e Jean*0096 #endif /* DISCONNECTED_TILES */
ac492cb922 Jean*0097 
                0098 C---  using or not using CubedSphereExchange: end
                0099       ENDIF
                0100 
                0101 #endif /* ALLOW_EXCH2 */
6979a1789e Jean*0102 
                0103       RETURN
ac492cb922 Jean*0104       END
                0105 
                0106 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0107 
                0108 CEH3 ;;; Local Variables: ***
                0109 CEH3 ;;; mode:fortran ***
                0110 CEH3 ;;; End: ***