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: ***