27 |
|
|
28 |
C !USES: |
C !USES: |
29 |
IMPLICIT NONE |
IMPLICIT NONE |
30 |
|
|
31 |
C === Global data === |
C === Global data === |
32 |
#include "SIZE.h" |
#include "SIZE.h" |
33 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
|
c#include "EESUPPORT.h" |
|
|
c#include "EXCH.h" |
|
34 |
|
|
35 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
36 |
C === Routine arguments === |
C === Routine arguments === |
37 |
C phi :: Array with overlap regions are to be exchanged |
C Uphi :: 2 components of a vector field with overlap regions |
38 |
C Note - The interface to EXCH_RX assumes that |
C Vphi :: to be exchanged |
39 |
C the standard Fortran 77 sequence association rules |
C withSigns :: Flag controlling whether vector is signed. |
40 |
C apply. |
C myNz :: 3rd dimension of array to exchange |
41 |
C myNz :: 3rd dimension of array to exchange |
C myThid :: my Thread Id. number |
|
C myThid :: My thread id. |
|
42 |
INTEGER myNz |
INTEGER myNz |
43 |
_RX Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy) |
_RX Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy) |
44 |
_RX Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy) |
_RX Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy) |
73 |
OLs = OLy |
OLs = OLy |
74 |
exchWidthX = OLx |
exchWidthX = OLx |
75 |
exchWidthY = OLy |
exchWidthY = OLy |
|
C ** NOTE ** The exchange routine we use here does not |
|
|
C require the preceeding and following barriers. |
|
|
C However, the slow, simple exchange interface |
|
|
C that is calling it here is meant to ensure |
|
|
C that threads are synchronised before exchanges |
|
|
C begine. |
|
76 |
IF (useCubedSphereExchange) THEN |
IF (useCubedSphereExchange) THEN |
77 |
CALL EXCH_UV_RX_CUBE( Uphi, Vphi, withSigns, |
CALL EXCH1_UV_RX_CUBE( Uphi, Vphi, withSigns, |
78 |
I OLw, OLe, OLs, OLn, myNz, |
I OLw, OLe, OLs, OLn, myNz, |
79 |
I exchWidthX, exchWidthY, |
I exchWidthX, exchWidthY, |
80 |
I FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid ) |
I EXCH_UPDATE_CORNERS, myThid ) |
81 |
ELSE |
ELSE |
82 |
CALL EXCH_RX( Uphi, |
CALL EXCH1_RX( Uphi, |
83 |
I OLw, OLe, OLs, OLn, myNz, |
I OLw, OLe, OLs, OLn, myNz, |
84 |
I exchWidthX, exchWidthY, |
I exchWidthX, exchWidthY, |
85 |
I FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid ) |
I EXCH_UPDATE_CORNERS, myThid ) |
86 |
CALL EXCH_RX( Vphi, |
CALL EXCH1_RX( Vphi, |
87 |
I OLw, OLe, OLs, OLn, myNz, |
I OLw, OLe, OLs, OLn, myNz, |
88 |
I exchWidthX, exchWidthY, |
I exchWidthX, exchWidthY, |
89 |
I FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid ) |
I EXCH_UPDATE_CORNERS, myThid ) |
90 |
ENDIF |
ENDIF |
91 |
|
|
92 |
RETURN |
RETURN |