/[MITgcm]/MITgcm/model/src/do_fields_blocking_exchanges.F
ViewVC logotype

Contents of /MITgcm/model/src/do_fields_blocking_exchanges.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.32 - (show annotations) (download)
Mon Feb 15 18:00:26 2016 UTC (8 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65v, checkpoint65w, checkpoint65u, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.31: +2 -2 lines
rename internal parameter "useDynP_inEos_Zc" to "storePhiHyd4Phys"

1 C $Header: /u/gcmpack/MITgcm/model/src/do_fields_blocking_exchanges.F,v 1.31 2016/01/11 22:49:55 jmc Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: DO_FIELDS_BLOCKING_EXCHANGES
9 C !INTERFACE:
10 SUBROUTINE DO_FIELDS_BLOCKING_EXCHANGES(myThid)
11
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | SUBROUTINE DO_FIELDS_BLOCKING_EXCHANGES
15 C | o Controlling routine for exchanging edge info.
16 C *==========================================================*
17 C | One key trick used in UV us that we over-compute and
18 C | arrange our time-stepping loop so that we only need one
19 C | edge exchange for the explicit code per timestep.
20 C *==========================================================*
21 C \ev
22
23 C !USES:
24 IMPLICIT NONE
25 C == Global variables ===
26 #include "SIZE.h"
27 #include "EEPARAMS.h"
28 #include "PARAMS.h"
29 #include "DYNVARS.h"
30 #ifdef ALLOW_LONGSTEP
31 #include "LONGSTEP.h"
32 #endif
33 #ifdef ALLOW_GENERIC_ADVDIFF
34 # include "GAD.h"
35 #endif
36 #ifdef ALLOW_CD_CODE
37 # include "CD_CODE_VARS.h"
38 #endif
39
40 C !INPUT/OUTPUT PARAMETERS:
41 C == Routine arguments ==
42 C myThid :: my Thread Id number
43 INTEGER myThid
44 CEOP
45
46 C !LOCAL VARIABLES:
47 C bi, bj :: tile indices
48 #ifdef ALLOW_OBCS
49 c INTEGER bi, bj
50 #endif /* ALLOW_OBCS */
51
52 IF ( .NOT.useOffLine ) THEN
53 C- Apply Exchanges on dynamics state variable, except in Off-Line mode
54
55 IF ( .NOT.staggerTimeStep ) THEN
56 IF ( .NOT.applyExchUV_early )
57 & CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
58 IF ( .NOT.implicitIntGravWave )
59 & _EXCH_XYZ_RL( wVel , myThid )
60 ENDIF
61 c IF ( exactConserv .AND. implicDiv2Dflow .NE. 0. _d 0)
62 c & _EXCH_XY_RL( etaN , myThid )
63 IF ( .NOT.implicitIntGravWave ) THEN
64 _EXCH_XYZ_RL( theta, myThid )
65 _EXCH_XYZ_RL( salt , myThid )
66 ENDIF
67 #ifdef ALLOW_OBCS
68 c IF ( useOBCS ) THEN
69 c DO bj = myByLo(myThid), myByHi(myThid)
70 c DO bi = myBxLo(myThid), myBxHi(myThid)
71 c CALL OBCS_COPY_TRACER( theta(1-OLx,1-OLy,1,bi,bj),
72 c I Nr, bi, bj, myThid )
73 c CALL OBCS_COPY_TRACER( salt (1-OLx,1-OLy,1,bi,bj),
74 c I Nr, bi, bj, myThid )
75 c ENDDO
76 c ENDDO
77 c ENDIF
78 #endif /* ALLOW_OBCS */
79
80 #ifdef ALLOW_GENERIC_ADVDIFF
81 IF ( tempSOM_Advection .OR. saltSOM_Advection )
82 & CALL GAD_SOM_EXCHANGES( myThid )
83 #endif
84
85 #ifdef ALLOW_CD_CODE
86 CALL EXCH_UV_DGRID_3D_RL( uVelD,vVelD, .TRUE., Nr, myThid )
87 #endif
88 IF ( storePhiHyd4Phys )
89 & _EXCH_XYZ_RL( totPhiHyd , myThid )
90 C- if not useOffLine: end
91 ENDIF
92
93 #ifdef ALLOW_PTRACERS
94 #ifdef ALLOW_LONGSTEP
95 IF ( LS_doTimeStep ) THEN
96 #else
97 IF ( .TRUE. ) THEN
98 #endif
99 IF (usePTRACERS)
100 & CALL PTRACERS_FIELDS_BLOCKING_EXCH(myThid)
101 C endif LS_doTimeStep
102 ENDIF
103 #endif /* ALLOW PTRACERS */
104
105 #ifdef ALLOW_GGL90
106 IF (useGGL90)
107 & CALL GGL90_EXCHANGES(myThid)
108 #endif /* ALLOW_GGL90 */
109
110 RETURN
111 END

  ViewVC Help
Powered by ViewVC 1.1.22