*IF DEF,OCEAN TROPIC.2
C ******************************COPYRIGHT****************************** TROPIC.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. TROPIC.4
C TROPIC.5
C Use, duplication or disclosure of this code is subject to the TROPIC.6
C restrictions as set forth in the contract. TROPIC.7
C TROPIC.8
C Meteorological Office TROPIC.9
C London Road TROPIC.10
C BRACKNELL TROPIC.11
C Berkshire UK TROPIC.12
C RG12 2SZ TROPIC.13
C TROPIC.14
C If no contract has been raised with this copy of the code, the use, TROPIC.15
C duplication or disclosure of it is strictly prohibited. Permission TROPIC.16
C to do so must first be obtained in writing from the Head of Numerical TROPIC.17
C Modelling at the above address. TROPIC.18
C ******************************COPYRIGHT****************************** TROPIC.19
C ****************************ACKNOWLEDGMENT*************************** TROPIC.20
C This code is derived from Public Domain code (the Cox 1984 Ocean TROPIC.21
C Model) distributed by the Geophysical Fluid Dynamics Laboratory. TROPIC.22
C NOAA TROPIC.23
C PO Box 308 TROPIC.24
C Princeton TROPIC.25
C New Jersey USA TROPIC.26
C If you wish to obtain a copy of the original code that does not have TROPIC.27
C Crown Copyright use, duplication or disclosure restrictions, please TROPIC.28
C contact them at the above address. TROPIC.29
C ****************************ACKNOWLEDGMENT*************************** TROPIC.30
C TROPIC.31
C*LL TROPIC.32
CLL SUBROUTINE TROPIC TROPIC.33
CLL CAN RUN ON ANY FORTRAN 77 COMPILER WITH LONG LOWER CASE VARIABLES TROPIC.34
CLL AND DYNAMIC ALLOCATION OF ARRAYS TROPIC.35
CLL TROPIC.36
CLL AUTHOR: R LENTON (MODIFIED FOR UNIFIED MODEL vn 4.4) TROPIC.37
CLL DATE: MAY 1997 TROPIC.38
CLL TROPIC.39
CLL DERIVED FROM CODE WRITEN BY M. PATERSON (19/1/1988) TROPIC.40
CLL AND D. STAINFORTH (6/4/1989) TROPIC.41
CLL REVIEWER: M.J.BELL TROPIC.42
CLL REVIEW DATE: MAY 1997 TROPIC.43
CLL VERSION 1.0 TROPIC.44
CLL TROPIC.45
CLL TROPIC.46
CLL PROGRAMMING STANDARDS USE COX NAMING CONVENTION FOR COX VARIABLES TROPIC.47
CLL OTHERWISE FOLLOWS UM DOC PAPER 55 VERSION 1.0. TROPIC.48
CLL TROPIC.49
CLL TROPIC.50
CLL TROPIC.51
CLL TROPIC TAKES AS INPUT THE EXTERNAL MODE FORCING CALCULATED IN TROPIC.52
CLL "CLINIC" (XF,YF) AND BY TIME STEPPING THE BAROTROPIC EQUATIONS TROPIC.53
CLL CALCULATES THE SURFACE DISPLACEMENT (ETA) AND THE BAROTROPIC TROPIC.54
CLL TRANSPORTS (UBT,VBT). TROPIC.55
CLL TROPIC.56
CLL TROPIC.57
CLL SUBROUTINE DEPENDENCIES: TFILT_CTL TROPIC.58
CLL TROPIC.59
CLLEND --------------------------------------------------------------- TROPIC.60
C* TROPIC.61
C*L -------------------------- ARGUMENTS ----------------------------- TROPIC.62
C TROPIC.63
SUBROUTINE TROPIC ( 1,16TROPIC.64
*CALL ARGSIZE
TROPIC.65
*CALL ARGOCALL
TROPIC.66
*CALL ARGOINDX
TROPIC.67
TROPIC.68
& ITT TROPIC.69
&,XF,YF TROPIC.70
&,ETA,ETAB,UBT,UBTBBT,VBT,VBTBBT TROPIC.71
&,UBTBBC,VBTBBC TROPIC.72
& ) TROPIC.73
TROPIC.74
C TROPIC.75
C----------------------------------------------------------------------- TROPIC.76
IMPLICIT NONE TROPIC.77
C----------------------------------------------------------------------- TROPIC.78
C TROPIC.79
C----------------------------------------------------------------------- TROPIC.80
C DEFINE GLOBAL DATA TROPIC.81
C----------------------------------------------------------------------- TROPIC.82
C TROPIC.83
C TROPIC.84
*CALL TYPSIZE
TROPIC.85
*CALL TYPOINDX
PXORDER.55
*CALL TYPOCALL
TROPIC.86
*CALL UMSCALAR
TROPIC.87
*CALL CNTLOCN
TROPIC.88
*CALL OARRYSIZ
PXORDER.56
*CALL COCTWRKA
TROPIC.89
*CALL OTIMER
TROPIC.91
C TROPIC.93
TROPIC.94
INTEGER TROPIC.95
& ITT ! baroclinic timestep indicator IN TROPIC.96
TROPIC.97
REAL TROPIC.98
& XF(IMT,JMT) ! vert mean x-comp of barotropic forcing IN TROPIC.99
&,YF(IMT,JMT) ! vert mean y-comp of barotropic forcing IN TROPIC.100
&,ETA(IMT,JMT) ! free surface elevation IN/OUT TROPIC.101
&,ETAB(IMT,JMT) ! free surface elev on prev t step IN/OUT TROPIC.102
&,UBT(IMT,JMTM1) ! depth integrated x-comp of barotropic TROPIC.103
C velocity at current barotropic t step IN/OUT TROPIC.104
&,UBTBBT(IMT,JMTM1)! depth integrated x-comp of barotropic TROPIC.105
C velocity at previous barotropic t step IN/OUT TROPIC.106
&,VBT(IMT,JMTM1) ! depth integrated y-comp of barotropic TROPIC.107
C velocity at current barotropic t step IN/OUT TROPIC.108
&,VBTBBT(IMT,JMTM1)! depth integrated y-comp of barotropic TROPIC.109
C velocity at previous barotropic t step IN/OUT TROPIC.110
&,UBTBBC(IMT,JMTM1)! depth integrated x-comp of barotropic TROPIC.111
C velocity at previous baroclinic timestep OUT TROPIC.112
&,VBTBBC(IMT,JMTM1)! depth integrated y-comp of barotropic TROPIC.113
C velocity at previous baroclinic timestep OUT TROPIC.114
TROPIC.115
C---------------------------------------------------------------------- TROPIC.116
C DEFINE LOCAL DATA TROPIC.117
C---------------------------------------------------------------------- TROPIC.118
TROPIC.119
REAL TROPIC.120
& ETAA(IMT,JMT) ! eta for next timestep TROPIC.121
&,UBTA(IMT,JMTM1) ! x-comp of barot vely next t step TROPIC.122
&,VBTA(IMT,JMTM1) ! y-comp of barot vely next t step TROPIC.123
&,ETAGRD(IMT,JMT) ! gradient of free surf elevation TROPIC.124
&,UTB(IMT,JMTM1) ! x-comp depth ave barotrop vely prev t step TROPIC.125
&,VTB(IMT,JMTM1) ! y-comp depth ave barotrop vely prev t step TROPIC.126
&,SPLR(IMT,JMT) ! sets eta values on land TROPIC.127
&,COR_FACTOR(IMT) ! array for coriolis factor TROPIC.128
&,FACTOR(IMT) ! array used in calculating coriolis terms TROPIC.129
&,FAC2(IMT) ! determinant used in timestep equation TROPIC.130
&,UBTGRD(IMT) ! barotropic u velocity gradient TROPIC.131
&,VBTGRD(IMT) ! barotropic v velocity gradient TROPIC.132
&,H(IMT) ! local ocean depth TROPIC.133
&,BTFRICX(IMT) ! x-comp barotropic friction term TROPIC.134
&,BTFRICY(IMT) ! y-comp barotropic friction term TROPIC.135
&,TEMPX(IMT) ! temporary array used in diffn calc TROPIC.136
&,TEMPY(IMT) ! temporary array used in diffn calc TROPIC.137
&,UTEMP(IMT) ! temporary array used in press grad calc TROPIC.138
&,VTEMP(IMT) ! temporary array used in press grad calc TROPIC.139
TROPIC.140
TROPIC.141
INTEGER TROPIC.142
& I ! Grid point index (zonal) TROPIC.143
&,J ! Grid point index (meridional) TROPIC.144
&,L ! Loop index TROPIC.145
&,JLIMIT ! local limit for j counter TROPIC.146
&,ITBT ! barotropic timestep counter TROPIC.147
&,NB ! no of free surf t steps TROPIC.148
TROPIC.149
REAL TROPIC.150
& FX ! local constant TROPIC.151
&,DLPL ! delplus term TROPIC.152
&,DLCR ! delcross term TROPIC.153
&,UBTDUM ! local dummy for ubt TROPIC.154
&,VBTDUM ! local dummy for vbt TROPIC.155
&,HD ! local dummy for ocean depth TROPIC.156
TROPIC.157
C---------------------------------------------------------------------- TROPIC.158
C BEGIN EXECUTABLE CODE TROPIC.159
C---------------------------------------------------------------------- TROPIC.160
TROPIC.161
IF (L_OTIMER) CALL TIMER
('TROPIC ',3) TROPIC.162
TROPIC.163
C---------------------------------------------------------------------- TROPIC.164
C AT EACH BAROCLINIC TIMESTEP CLINIC REQUIRES BAROTROPIC VELOCITIES TROPIC.165
C FOR THE *PREVIOUS* BAROCLINIC TIMESTEP. TROPIC.166
C STORE *PRESENT* UBT,VBT VALUES IN ARRAYS FOR USE IN CLINIC AT THE TROPIC.167
C NEXT BAROCLINIC TIMESTEP WHERE THESE VALUES WILL BE FOR THE TROPIC.168
C *PREVIOUS* BAROCLINIC TIMESTEP UBTBBC,VBTBBC. TROPIC.169
C INITIALISE UBTA,VBTA,ETAGRD,UBTDIF,VBTDIF,ETADIF TO SET THE VALUE TROPIC.170
C FOR LAND POINTS TO ZERO. OCEAN POINTS ARE OVERWRITTEN LATER. THIS TROPIC.171
C AVOIDS UNSET VARIABLE ERROR. TROPIC.172
C---------------------------------------------------------------------- TROPIC.173
TROPIC.174
DO J=J_1,J_JMTM1 TROPIC.175
DO I=1,IMT TROPIC.176
UBTBBC(I,J) = UBT(I,J) TROPIC.177
VBTBBC(I,J) = VBT(I,J) TROPIC.178
UBTA(I,J) = 0.0 TROPIC.179
VBTA(I,J) = 0.0 TROPIC.180
ENDDO TROPIC.181
ENDDO TROPIC.182
TROPIC.183
DO J=J_1,J_JMT TROPIC.184
DO I=1,IMT TROPIC.185
TROPIC.186
ETAGRD(I,J) = 0.0 TROPIC.187
ETAA(I,J) = 0.0 TROPIC.188
ENDDO TROPIC.189
ENDDO TROPIC.190
TROPIC.191
DO I=1,IMT TROPIC.192
BTFRICX(I) = 0.0 TROPIC.193
BTFRICY(I) = 0.0 TROPIC.194
UBTGRD(I) = 0.0 TROPIC.195
VBTGRD(I) = 0.0 TROPIC.196
ENDDO TROPIC.197
TROPIC.198
C---------------------------------------------------------------------- TROPIC.199
C SET Y FORCING ON SYMMETRY ROW TO ZERO TROPIC.200
C---------------------------------------------------------------------- TROPIC.201
TROPIC.202
IF (L_OSYMM) THEN TROPIC.203
IF ( (J_JMTM1+J_OFFSET) .EQ. JMTM1_GLOBAL) THEN TROPIC.204
DO I=1,IMT TROPIC.205
YF(I,J_JMTM1)=0.0 TROPIC.206
END DO TROPIC.207
ENDIF ! J condition TROPIC.208
ENDIF ! L_OSYMM TROPIC.209
TROPIC.210
IF (L_ODELPLUS) THEN TROPIC.211
C TROPIC.212
C----------------------------------------------------------------------- TROPIC.213
C CALCULATE THE ARRAY SPLR USED TO SET PSUEDO VALUES OF ETA ON LAND. TROPIC.214
C THIS ARRAY IS ONLY NEEDED IN THE CALCULATION OF ETA WHEN THE DELPLUS TROPIC.215
C OPERATOR IS BEING USED. TROPIC.216
C----------------------------------------------------------------------- TROPIC.217
C TROPIC.218
DO J=J_2,J_JMTM1 TROPIC.219
DO I=2,IMTM1 TROPIC.220
TROPIC.221
IF ( (EM(I,J).EQ.0.0).AND. TROPIC.222
& ( ( EM(I+1,J)+EM(I-1,J) TROPIC.223
& +EM(I,J+1)+EM(I,J-1)).GT.0.0 ) ) THEN TROPIC.224
TROPIC.225
SPLR(I,J) = 1./( EM(I+1,J)+EM(I-1,J)+EM(I,J+1)+EM(I,J-1) ) TROPIC.226
TROPIC.227
ELSE TROPIC.228
TROPIC.229
SPLR(I,J) = 0.0 TROPIC.230
TROPIC.231
ENDIF TROPIC.232
TROPIC.233
ENDDO ! over i TROPIC.234
END DO ! over j TROPIC.235
TROPIC.236
END IF ! L_ODELPLUS TROPIC.237
C TROPIC.238
C----------------------------------------------------------------------- TROPIC.239
C CALCULATE NUMBER OF FREE SURF T STEPS PER BAROCLINIC T STEP TROPIC.240
C----------------------------------------------------------------------- TROPIC.241
C TROPIC.242
NB=NINT(DTUV/DTBT) TROPIC.243
C TROPIC.244
C======================================================================= TROPIC.245
C TIME STEP BAROTROPIC EQUATIONS BETWEEN (LARGER) BAROCLINIC TIME STEPS TROPIC.246
C======================================================================= TROPIC.247
C TROPIC.248
DO ITBT = 1,NB TROPIC.249
C TROPIC.250
C----------------------------------------------------------------------- TROPIC.251
C RESET TIMESTEP FOR CASE WHEN A MIXING TIMESTEP IS REQUIRED. THIS TROPIC.252
C OCCURS FOR THE *FIRST* BAROTROPIC TIMESTEP ONLY WHEN MIX IS SELECTED. TROPIC.253
C THUS THE TIMESTEP MUST BE CHANGED HERE, WHEREAS THE ETAB, UBTBBT AND TROPIC.254
C VBTBBT ARRAYS CAN BE SET IN OCN_FRST ALONG WITH THE OTHER ARRAYS. TROPIC.255
C----------------------------------------------------------------------- TROPIC.256
C TROPIC.257
C2DTBT=2.0*DTBT TROPIC.258
TROPIC.259
IF ((ITBT.EQ.1).AND.(ITT.EQ.1)) THEN TROPIC.260
C2DTBT=DTBT TROPIC.261
ELSEIF ((ITBT.EQ.1).AND.(MOD(ITT,NMIX).EQ.1)) THEN TROPIC.262
C2DTBT=DTBT TROPIC.263
ENDIF TROPIC.264
TROPIC.265
IF (L_ODELPLUS) THEN TROPIC.266
C TROPIC.267
C----------------------------------------------------------------------- TROPIC.268
C SET PSEUDO ETA VALUES ON LAND FOR USE BY DLPL. TROPIC.269
C----------------------------------------------------------------------- TROPIC.270
C TROPIC.271
DO J=J_2,J_JMTM1 TROPIC.272
DO I=2,IMTM1 TROPIC.273
TROPIC.274
C if the point is set as a coastal point then create pseudo eta values TROPIC.275
C over the land. TROPIC.276
TROPIC.277
IF (SPLR(I,J) .NE. 0.0) THEN TROPIC.278
TROPIC.279
ETA(I,J) = ( EM(I+1,J)*ETA(I+1,J) TROPIC.280
& + EM(I-1,J)*ETA(I-1,J) TROPIC.281
& + EM(I,J+1)*ETA(I,J+1) TROPIC.282
& + EM(I,J-1)*ETA(I,J-1) )*SPLR(I,J) TROPIC.283
TROPIC.284
ENDIF TROPIC.285
TROPIC.286
END DO ! OVER I TROPIC.287
END DO ! OVER J TROPIC.288
TROPIC.289
c following section recoded for version 4.2 to set values for the TROPIC.290
c top and bottom (global) rows. For the case where one row only TROPIC.291
c is assigned to each processor, a call to SWAPBOUNDS is needed before TROPIC.292
c and after the calculations. TROPIC.293
TROPIC.294
*IF DEF,MPP TROPIC.295
IF ((JFIN-JST+1).LT.2) THEN TROPIC.296
C TROPIC.297
C===================================================================== TROPIC.298
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.299
C===================================================================== TROPIC.300
C TROPIC.301
CALL SWAPBOUNDS
(ETA,IMT,JMT,O_EW_HALO,O_NS_HALO,1) TROPIC.302
TROPIC.303
ENDIF ! ONE ROW PER PROCESSOR TROPIC.304
*ENDIF TROPIC.305
TROPIC.306
IF (JST.EQ.1) THEN TROPIC.307
DO I=2,IMTM1 TROPIC.308
ETA(I,J_1) = ETA(I,J_1+1) TROPIC.309
ENDDO ! i loop TROPIC.310
ENDIF ! j condition TROPIC.311
TROPIC.312
IF (JFIN.EQ.JMT_GLOBAL) THEN TROPIC.313
DO I=2,IMTM1 TROPIC.314
ETA(I,J_JMT) = ETA(I,J_JMT-1) TROPIC.315
END DO ! i loop TROPIC.316
ENDIF ! j condition TROPIC.317
TROPIC.318
*IF DEF,MPP TROPIC.319
IF ((JFIN-JST+1).LT.2) THEN TROPIC.320
C TROPIC.321
C===================================================================== TROPIC.322
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.323
C===================================================================== TROPIC.324
C TROPIC.325
CALL SWAPBOUNDS
(ETA,IMT,JMT,O_EW_HALO,O_NS_HALO,1) TROPIC.326
TROPIC.327
ENDIF ! ONE ROW PER PROCESSOR TROPIC.328
*ENDIF TROPIC.329
C TROPIC.330
C--------------------------------------------------------------------- TROPIC.331
C APPLY BOUNDARY CONDITIONS FOR SURFACE HEIGHT TROPIC.332
C--------------------------------------------------------------------- TROPIC.333
C TROPIC.334
DO J=J_1,J_JMT TROPIC.335
TROPIC.336
IF (L_OCYCLIC) THEN TROPIC.337
ETA( 1,J) = ETA(IMTM1,J) TROPIC.338
ETA(IMT,J) = ETA(2,J) TROPIC.339
TROPIC.340
ELSE TROPIC.341
ETA( 1,J) = 0.0 TROPIC.342
ETA(IMT,J) = 0.0 TROPIC.343
TROPIC.344
ENDIF ! L_OCYCLIC TROPIC.345
TROPIC.346
ENDDO ! over j TROPIC.347
TROPIC.348
END IF ! L_ODELPLUS TROPIC.349
C TROPIC.350
C----------------------------------------------------------------------- TROPIC.351
C CALCULATE THE OLD DEPTH AVERAGED BAROTROPIC VELOCITIES UTB AND VTB TROPIC.352
C FOR EACH OF THE SMALL BAROTROPIC TIMESTEPS FOR USE IN THE CALCULATION TROPIC.353
C OF THE BAROTROPIC HORIZONTAL DIFFUSION AND BAROTROPIC CORIOLIS TERMS. TROPIC.354
C----------------------------------------------------------------------- TROPIC.355
C TROPIC.356
DO J=J_2,J_JMTM1 TROPIC.357
DO I=1,IMU TROPIC.358
UTB(I,J) = UBTBBT(I,J)*HR(I,J) TROPIC.359
VTB(I,J) = VBTBBT(I,J)*HR(I,J) TROPIC.360
END DO TROPIC.361
END DO TROPIC.362
TROPIC.363
C SET VALUE FOR UTB,VTB AT J=1 TO ZERO TROPIC.364
TROPIC.365
IF (JST .EQ. 1) THEN TROPIC.366
DO I=1,IMU TROPIC.367
UTB(I,J_1) = 0.0 TROPIC.368
VTB(I,J_1) = 0.0 TROPIC.369
ENDDO ! over i TROPIC.370
ENDIF ! J condition TROPIC.371
TROPIC.372
*IF DEF,MPP TROPIC.373
C TROPIC.374
C===================================================================== TROPIC.375
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.376
C===================================================================== TROPIC.377
TROPIC.378
CALL SWAPBOUNDS
(UTB,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1) TROPIC.379
CALL SWAPBOUNDS
(VTB,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1) TROPIC.380
TROPIC.381
*ENDIF TROPIC.382
C TROPIC.383
C======================================================================= TROPIC.384
C BEGIN SURFACE HEIGHT CALCULATION TROPIC.385
C======================================================================= TROPIC.386
C----------------------------------------------------------------------- TROPIC.387
C COMPUTE ETAGRD FROM ETA,UBT,VBT FOR THE CURRENT BAROTROPIC TIMESTEP TROPIC.388
C----------------------------------------------------------------------- TROPIC.389
C TROPIC.390
IF (L_ODELPLUS) THEN TROPIC.391
TROPIC.392
*IF DEF,MPP TROPIC.393
C TROPIC.394
C===================================================================== TROPIC.395
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.396
C===================================================================== TROPIC.397
C TROPIC.398
CALL SWAPBOUNDS
(ETA,IMT,JMT,O_EW_HALO,O_NS_HALO,1) TROPIC.399
TROPIC.400
*ENDIF TROPIC.401
TROPIC.402
FX = DTBT*WGHT_DELPLUS*GRAV*ZDZ(KM) TROPIC.403
TROPIC.404
DO J=J_2,J_JMTM1 TROPIC.405
DO L=1,LSE(J) TROPIC.406
DO I=ISE(J,L),IEE(J,L) TROPIC.407
TROPIC.408
DLPL = ETA(I,J+1) + ETA(I+1,J) TROPIC.409
& + ETA(I-1,J) + ETA(I,J-1) - 4.*ETA(I,J) TROPIC.410
TROPIC.411
DLCR = 0.5*( EM(I+1,J+1)*ETA(I+1,J+1) TROPIC.412
& + EM(I-1,J+1)*ETA(I-1,J+1) TROPIC.413
& + EM(I+1,J-1)*ETA(I+1,J-1) TROPIC.414
& + EM(I-1,J-1)*ETA(I-1,J-1) TROPIC.415
& - ( EM(I+1,J+1) + EM(I-1,J+1) TROPIC.416
& + EM(I+1,J-1) + EM(I-1,J-1) )*ETA(I,J) ) TROPIC.417
TROPIC.418
TROPIC.419
ETAGRD(I,J) = TROPIC.420
& -DXT2R(I)*DYTR(J)*CSTR(J)* TROPIC.421
& ( UBT(I ,J)*DYU(J) + UBT(I ,J-1)*DYU(J-1) TROPIC.422
& -( UBT(I-1,J)*DYU(J) + UBT(I-1,J-1)*DYU(J-1) ) TROPIC.423
& +( VBT(I,J)*DXU(I) + VBT(I-1,J)*DXU(I-1) )*CS(J) TROPIC.424
& -( VBT(I,J-1)*DXU(I) + VBT(I-1,J-1)*DXU(I-1) )*CS(J-1) TROPIC.425
& ) + FX*DXTR(I)*DYTR(J)*( DLPL - DLCR ) TROPIC.426
TROPIC.427
END DO TROPIC.428
END DO TROPIC.429
END DO TROPIC.430
TROPIC.431
ELSE TROPIC.432
TROPIC.433
DO J=J_2,J_JMTM1 TROPIC.434
DO L=1,LSE(J) TROPIC.435
DO I=ISE(J,L),IEE(J,L) TROPIC.436
TROPIC.437
ETAGRD(I,J) = TROPIC.438
& -DXT2R(I)*DYTR(J)*CSTR(J)* TROPIC.439
& ( UBT(I ,J)*DYU(J) + UBT(I ,J-1)*DYU(J-1) TROPIC.440
& -( UBT(I-1,J)*DYU(J) + UBT(I-1,J-1)*DYU(J-1) ) TROPIC.441
& +( VBT(I,J)*DXU(I) + VBT(I-1,J)*DXU(I-1) )*CS(J) TROPIC.442
& -( VBT(I,J-1)*DXU(I) + VBT(I-1,J-1)*DXU(I-1) )*CS(J-1) TROPIC.443
& ) TROPIC.444
TROPIC.445
END DO ! OVER I TROPIC.446
TROPIC.447
END DO ! OVER L END OF LOOP OVER SEGMENTS TROPIC.448
TROPIC.449
END DO ! OVER J END OF LOOP OVER ROWS TROPIC.450
TROPIC.451
END IF TROPIC.452
C TROPIC.453
C----------------------------------------------------------------------- TROPIC.454
C COMPUTE ETAA FROM ETAGRD AND ETAB USING A LEAPFROG TIMESTEP TROPIC.455
C----------------------------------------------------------------------- TROPIC.456
C TROPIC.457
DO J=J_1,J_JMT TROPIC.458
DO I=1,IMT TROPIC.459
TROPIC.460
ETAA(I,J) = EM(I,J)*( ETAB(I,J) + TROPIC.461
& C2DTBT*ETAGRD(I,J) ) TROPIC.462
TROPIC.463
END DO TROPIC.464
END DO TROPIC.465
TROPIC.466
IF (L_OSYMM) THEN TROPIC.467
TROPIC.468
c following section recoded for version 4.2 to set values for the TROPIC.469
c top and bottom (global) rows. For the case where one row only TROPIC.470
c is assigned to each processor, a call to SWAPBOUNDS is needed before TROPIC.471
c and after the calculations. TROPIC.472
TROPIC.473
*IF DEF,MPP TROPIC.474
IF ((JFIN-JST+1).LT.2) THEN TROPIC.475
C TROPIC.476
C===================================================================== TROPIC.477
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.478
C===================================================================== TROPIC.479
C TROPIC.480
CALL SWAPBOUNDS
(ETAA,IMT,JMT,O_EW_HALO,O_NS_HALO,1) TROPIC.481
TROPIC.482
ENDIF ! ONE ROW PER PROCESSOR TROPIC.483
*ENDIF TROPIC.484
TROPIC.485
IF (JFIN.EQ.JMT_GLOBAL) THEN TROPIC.486
DO I=1,IMT TROPIC.487
ETAA(I,J_JMT)=ETAA(I,J_JMT-1) TROPIC.488
END DO TROPIC.489
ENDIF ! j condition TROPIC.490
TROPIC.491
*IF DEF,MPP TROPIC.492
IF ((JFIN-JST+1).LT.2) THEN TROPIC.493
C TROPIC.494
C===================================================================== TROPIC.495
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.496
C===================================================================== TROPIC.497
C TROPIC.498
CALL SWAPBOUNDS
(ETAA,IMT,JMT,O_EW_HALO,O_NS_HALO,1) TROPIC.499
TROPIC.500
ENDIF ! ONE ROW PER PROCESSOR TROPIC.501
*ENDIF TROPIC.502
ENDIF ! L_OSYMM TROPIC.503
C TROPIC.504
C--------------------------------------------------------------------- TROPIC.505
C APPLY BOUNDARY CONDITIONS ON ETAA TROPIC.506
C--------------------------------------------------------------------- TROPIC.507
C TROPIC.508
IF (L_OCYCLIC) THEN TROPIC.509
IF (L_OSYMM) THEN TROPIC.510
JLIMIT=J_JMT TROPIC.511
ELSE TROPIC.512
JLIMIT=J_JMTM1 TROPIC.513
ENDIF ! L_OSYMM TROPIC.514
TROPIC.515
DO J=J_2,JLIMIT TROPIC.516
ETAA( 1,J) = ETAA(IMTM1,J) TROPIC.517
ETAA(IMT,J) = ETAA(2,J) TROPIC.518
END DO TROPIC.519
TROPIC.520
END IF ! L_OCYCLIC TROPIC.521
TROPIC.522
*IF DEF,MPP TROPIC.523
C TROPIC.524
C===================================================================== TROPIC.525
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.526
C===================================================================== TROPIC.527
C TROPIC.528
CALL SWAPBOUNDS
(ETA,IMT,JMT,O_EW_HALO,O_NS_HALO,1) TROPIC.529
TROPIC.530
*ENDIF TROPIC.531
C TROPIC.532
C======================================================================= TROPIC.533
C END CALCULATION OF ETA TROPIC.534
C======================================================================= TROPIC.535
C TROPIC.536
C TROPIC.537
C======================================================================= TROPIC.538
C BEGIN CALCULATION OF THE DEPTH INTEGRATED BAROTROPIC FLOW TROPIC.539
C======================================================================= TROPIC.540
C----------------------------------------------------------------------- TROPIC.541
C START LOOP TO STEP UBT AND VBT FROM ETA,UT AND VT. TROPIC.542
C----------------------------------------------------------------------- TROPIC.543
C TROPIC.544
IF (L_OSYMM) THEN TROPIC.545
JLIMIT = J_JMTM1 TROPIC.546
ELSE TROPIC.547
JLIMIT = J_JMTM2 TROPIC.548
ENDIF ! L_OSYMM TROPIC.549
TROPIC.550
DO J=J_2,JLIMIT TROPIC.551
TROPIC.552
DO L=1,LSU(J) TROPIC.553
C TROPIC.554
C----------------------------------------------------------------------- TROPIC.555
C SET UP THE ARRAYS FOR THE CORIOLIS TERMS FOR USE IN THE CALCULATION TROPIC.556
C OF UBTGRD, VBTGRD AND UBTDUM, VBTDUM. TROPIC.557
C----------------------------------------------------------------------- TROPIC.558
C TROPIC.559
IF(ACOR.NE.0.) THEN TROPIC.560
TROPIC.561
DO I=ISU(J,L),IEU(J,L) TROPIC.562
FACTOR(I)=CORIOLIS(I,J)*ACOR*C2DTBT TROPIC.563
FAC2(I)=1.0/(1.0 + FACTOR(I)*FACTOR(I)) TROPIC.564
ENDDO TROPIC.565
TROPIC.566
ENDIF ! ACOR=0 TROPIC.567
TROPIC.568
C CALCULATE DEPTH ARRAYS FOR USE IN THE CALCULATION OF BT FRICTION TROPIC.569
TROPIC.570
DO I=ISU(J,L),IEU(J,L) TROPIC.571
TROPIC.572
H(I) = 1./HR(I,J) TROPIC.573
TROPIC.574
ENDDO ! over i TROPIC.575
C TROPIC.576
C----------------------------------------------------------------------- TROPIC.577
C CALCULATE THE DEPTH INTEGRATED BAROTROPIC FRICTION TERMS FOR THE TROPIC.578
C PRESENT BAROTROPIC TIMESTEP TO ADD IN FOR THE CALCULATION OF THE TROPIC.579
C VELOCITY GRADIENTS. TROPIC.580
C----------------------------------------------------------------------- TROPIC.581
C TROPIC.582
IF (J+J_OFFSET .NE. JMTM1_GLOBAL) THEN TROPIC.583
TROPIC.584
DO I=ISU(J,L),IEU(J,L) TROPIC.585
TROPIC.586
TEMPX(I) = UTB(I,J+1) - UTB(I,J) TROPIC.587
TEMPY(I) = VTB(I,J+1) - VTB(I,J) TROPIC.588
TROPIC.589
ENDDO ! over i TROPIC.590
TROPIC.591
ELSE TROPIC.592
TROPIC.593
DO I=ISU(J,L),IEU(J,L) TROPIC.594
TROPIC.595
C note the symmetric nature of VTB(I,JMTM2) - hence the minus sign TROPIC.596
TROPIC.597
TEMPX(I) = UTB(I,J_JMTM2) - UTB(I,J) TROPIC.598
TEMPY(I) =-VTB(I,J_JMTM2) - VTB(I,J) TROPIC.599
TROPIC.600
ENDDO ! over i TROPIC.601
TROPIC.602
ENDIF TROPIC.603
TROPIC.604
DO I=ISU(J,L),IEU(J,L) TROPIC.605
TROPIC.606
BTFRICX(I) = H(I)*( TROPIC.607
& BBU(J)*DXU2R(I)*( TROPIC.608
& DXT4R(I+1)*(UTB(I+1,J) - UTB(I,J)) TROPIC.609
& -DXT4R(I)*(UTB(I,J) - UTB(I-1,J))) TROPIC.610
& + CCU(J)*TEMPX(I) TROPIC.611
& - DDU(J)*( UTB(I,J ) - UTB(I,J-1) ) TROPIC.612
& + GGU(J)*UTB(I,J) TROPIC.613
& - HHU(J)*DXU2R(I)*(VTB(I+1,J) - VTB(I-1,J)) ) TROPIC.614
TROPIC.615
BTFRICY(I) = H(I)*( TROPIC.616
& BBU(J)*DXU2R(I)*( TROPIC.617
& DXT4R(I+1)*(VTB(I+1,J) - VTB(I,J)) TROPIC.618
& -DXT4R(I)*(VTB(I,J) - VTB(I-1,J))) TROPIC.619
& + CCU(J)*TEMPY(I) TROPIC.620
& - DDU(J)*( VTB(I,J ) - VTB(I,J-1) ) TROPIC.621
& + GGU(J)*VTB(I,J) TROPIC.622
& + HHU(J)*DXU2R(I)*(UTB(I+1,J) - UTB(I-1,J)) ) TROPIC.623
TROPIC.624
ENDDO ! over i TROPIC.625
C TROPIC.626
C----------------------------------------------------------------------- TROPIC.627
C CALCULATE dU/dt - THE GRADIENT OF THE DEPTH INTEGRATED BAROTROPIC TROPIC.628
C FLOW. THE SEMI IMPLICIT TREATMENT OF THE CORIOLIS TERM FOLLOWS THE TROPIC.629
C METHOD USED IN CLINIC TROPIC.630
C----------------------------------------------------------------------- TROPIC.631
C TROPIC.632
IF (J+J_OFFSET .NE. JMTM1_GLOBAL) THEN TROPIC.633
TROPIC.634
DO I=ISU(J,L),IEU(J,L) TROPIC.635
UTEMP(I) = ETA(I+1,J+1) + ETA(I+1,J) TROPIC.636
& -ETA(I ,J+1) - ETA(I ,J) TROPIC.637
TROPIC.638
VTEMP(I) = ETA(I,J+1) + ETA(I+1,J+1) TROPIC.639
& -ETA(I,J ) - ETA(I+1,J ) TROPIC.640
ENDDO ! over i TROPIC.641
TROPIC.642
ELSE ! for symmetric case TROPIC.643
TROPIC.644
DO I=ISU(J,L),IEU(J,L) TROPIC.645
UTEMP(I) = ETA(I+1,J_JMTM1) + ETA(I+1,J) TROPIC.646
& -ETA(I ,J_JMTM1) - ETA(I ,J) TROPIC.647
TROPIC.648
VTEMP(I) = ETA(I,J_JMTM1) + ETA(I+1,J_JMTM1) TROPIC.649
& -ETA(I,J ) - ETA(I+1,J ) TROPIC.650
ENDDO ! over i TROPIC.651
TROPIC.652
ENDIF TROPIC.653
TROPIC.654
IF(ACOR.EQ.0.) THEN TROPIC.655
TROPIC.656
DO I=ISU(J,L),IEU(J,L) TROPIC.657
TROPIC.658
UBTGRD(I) = H(I)*XF(I,J) TROPIC.659
& + BTFRICX(I) TROPIC.660
& + 2.0*OMEGA*SINE(J)*VBT(I,J) TROPIC.661
& - H(I)*GRAV*CSR(J)*DXU2R(I)*UTEMP(I) TROPIC.662
TROPIC.663
VBTGRD(I) = H(I)*YF(I,J) TROPIC.664
& + BTFRICY(I) TROPIC.665
& - 2.0*OMEGA*SINE(J)*UBT(I,J) TROPIC.666
& - H(I)*GRAV*DYU2R(J)*VTEMP(I) TROPIC.667
TROPIC.668
ENDDO ! over i TROPIC.669
TROPIC.670
ELSE TROPIC.671
TROPIC.672
DO I=ISU(J,L),IEU(J,L) TROPIC.673
TROPIC.674
UBTGRD(I) = H(I)*XF(I,J) TROPIC.675
& + BTFRICX(I) TROPIC.676
& + H(I)* ( CORIOLIS(I,J)*VTB(I,J) TROPIC.677
& - GRAV*CSR(J)*DXU2R(I)*UTEMP(I) ) TROPIC.678
TROPIC.679
VBTGRD(I) = H(I)*YF(I,J) TROPIC.680
& + BTFRICY(I) TROPIC.681
& - H(I)* ( CORIOLIS(I,J)*UTB(I,J) TROPIC.682
& + GRAV*DYU2R(J)*VTEMP(I) ) TROPIC.683
TROPIC.684
ENDDO ! over i TROPIC.685
TROPIC.686
ENDIF ! ACOR condition TROPIC.687
C TROPIC.688
C----------------------------------------------------------------------- TROPIC.689
C CALCULATE UBTA AND VBTA FROM UBTGRD AND VBTGRD USING A LEAPFROG TROPIC.690
C TIMESTEP. TROPIC.691
C----------------------------------------------------------------------- TROPIC.692
C TROPIC.693
DO I=ISU(J,L),IEU(J,L) TROPIC.694
TROPIC.695
IF(ACOR.EQ.0.) THEN TROPIC.696
TROPIC.697
UBTA(I,J) = UBTBBT(I,J)+C2DTBT*UBTGRD(I) TROPIC.698
VBTA(I,J) = VBTBBT(I,J)+C2DTBT*VBTGRD(I) TROPIC.699
TROPIC.700
ELSE TROPIC.701
TROPIC.702
UBTDUM = C2DTBT*UBTGRD(I) TROPIC.703
VBTDUM = C2DTBT*VBTGRD(I) TROPIC.704
TROPIC.705
UBTA(I,J) = UBTBBT(I,J)+(UBTDUM+FACTOR(I)*VBTDUM)*FAC2(I) TROPIC.706
VBTA(I,J) = VBTBBT(I,J)+(VBTDUM-FACTOR(I)*UBTDUM)*FAC2(I) TROPIC.707
TROPIC.708
ENDIF ! ACOR condition TROPIC.709
TROPIC.710
END DO ! OVER I TROPIC.711
TROPIC.712
END DO ! OVER L END OF LOOP OVER SEGMENTS TROPIC.713
TROPIC.714
END DO ! OVER J END OF LOOP OVER ROWS TROPIC.715
TROPIC.716
C END OF LOOP STEPPING UBT,VBT TROPIC.717
C TROPIC.718
C----------------------------------------------------------------------- TROPIC.719
C SET SYMMETRIC CONDITIONS ON UBT AND VBT. TROPIC.720
C----------------------------------------------------------------------- TROPIC.721
C TROPIC.722
IF (L_OSYMM) THEN TROPIC.723
IF (J+J_OFFSET .EQ. JMTM1_GLOBAL) THEN TROPIC.724
DO I=1,IMU TROPIC.725
VBTA(I,J)=0.0 TROPIC.726
END DO TROPIC.727
ENDIF ! J condition TROPIC.728
END IF ! L_OSYMM TROPIC.729
TROPIC.730
TROPIC.731
IF (L_OFILTER) THEN TROPIC.732
C TROPIC.733
C----------------------------------------------------------------------- TROPIC.734
C FOURIER FILTER THE BAROTROPIC VELOCITIES AND SURFACE HEIGHT AT HIGH TROPIC.735
C LATITUDES TROPIC.736
C----------------------------------------------------------------------- TROPIC.737
C TROPIC.738
CALL TFILT_CTL
( TROPIC.739
*CALL ARGSIZE
TROPIC.740
*CALL ARGOCALL
TROPIC.741
*CALL ARGOINDX
TROPIC.742
& UBTA,VBTA,ETAA, TROPIC.743
*CALL COCAWRKA
TROPIC.744
& ) TROPIC.745
TROPIC.746
ENDIF ! L_OFILTER = true TROPIC.747
C TROPIC.748
C----------------------------------------------------------------------- TROPIC.749
C ALLOW FOR CYCLIC CONDITIONS TROPIC.750
C----------------------------------------------------------------------- TROPIC.751
C TROPIC.752
IF (L_OCYCLIC) THEN TROPIC.753
TROPIC.754
IF (L_OSYMM) THEN TROPIC.755
JLIMIT=J_JMT TROPIC.756
ELSE TROPIC.757
JLIMIT=J_JMTM1 TROPIC.758
ENDIF ! L_OSYMM TROPIC.759
TROPIC.760
DO J=J_2,JLIMIT TROPIC.761
ETAA( 1,J) = ETAA(IMTM1,J) TROPIC.762
ETAA(IMT,J) = ETAA(2,J) TROPIC.763
END DO TROPIC.764
TROPIC.765
DO J=J_2,J_JMTM1 TROPIC.766
UBTA( 1,J) = UBTA(IMUM1,J) TROPIC.767
VBTA( 1,J) = VBTA(IMUM1,J) TROPIC.768
UBTA(IMU,J) = UBTA(2,J) TROPIC.769
VBTA(IMU,J) = VBTA(2,J) TROPIC.770
END DO TROPIC.771
TROPIC.772
END IF ! (L_OCYCLIC) TROPIC.773
C TROPIC.774
C----------------------------------------------------------------------- TROPIC.775
C TIME FILTER THE BAROTROPIC VELOCITIES TROPIC.776
C----------------------------------------------------------------------- TROPIC.777
C TROPIC.778
IF (L_OSYMM) THEN TROPIC.779
JLIMIT = J_JMTM1 TROPIC.780
ELSE TROPIC.781
JLIMIT = J_JMTM2 TROPIC.782
ENDIF ! l_OSYMM TROPIC.783
TROPIC.784
DO J=J_2,JLIMIT TROPIC.785
DO I=1,IMU TROPIC.786
UBT(I,J) = PNU2M*UBT(I,J) + PNU*( UBTBBT(I,J) + UBTA(I,J) ) TROPIC.787
VBT(I,J) = PNU2M*VBT(I,J) + PNU*( VBTBBT(I,J) + VBTA(I,J) ) TROPIC.788
ENDDO ! over i TROPIC.789
ENDDO ! over j TROPIC.790
C TROPIC.791
C----------------------------------------------------------------------- TROPIC.792
C TIME FILTER THE SURFACE HEIGHT FIELD TROPIC.793
C----------------------------------------------------------------------- TROPIC.794
C TROPIC.795
DO J=J_1,J_JMT TROPIC.796
DO I=1,IMT TROPIC.797
ETA(I,J) = PNU2M*ETA(I,J) + PNU*( ETAB(I,J) + ETAA(I,J) ) TROPIC.798
ENDDO TROPIC.799
ENDDO TROPIC.800
C TROPIC.801
C----------------------------------------------------------------------- TROPIC.802
C ROLL BACK THE VALUES TO PREPARE FOR THE NEXT BAROTROPIC TIMESTEP TROPIC.803
C----------------------------------------------------------------------- TROPIC.804
C TROPIC.805
DO J=J_1,J_JMTM1 TROPIC.806
DO I=1,IMU TROPIC.807
TROPIC.808
UBTBBT(I,J)=UBT(I,J) TROPIC.809
VBTBBT(I,J)=VBT(I,J) TROPIC.810
UBT(I,J) =UBTA(I,J) TROPIC.811
VBT(I,J) =VBTA(I,J) TROPIC.812
TROPIC.813
ENDDO ! over i TROPIC.814
ENDDO ! over j TROPIC.815
TROPIC.816
DO J=J_1,J_JMT TROPIC.817
DO I=1,IMT TROPIC.818
TROPIC.819
ETAB(I,J) =ETA(I,J) TROPIC.820
ETA(I,J) =ETAA(I,J) TROPIC.821
TROPIC.822
ENDDO ! over i TROPIC.823
ENDDO ! over j TROPIC.824
TROPIC.825
*IF DEF,MPP TROPIC.826
C TROPIC.827
C===================================================================== TROPIC.828
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.829
C===================================================================== TROPIC.830
C TROPIC.831
CALL SWAPBOUNDS
(ETA,IMT,JMT,O_EW_HALO,O_NS_HALO,1) TROPIC.832
CALL SWAPBOUNDS
(UBT,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1) TROPIC.833
CALL SWAPBOUNDS
(VBT,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1) TROPIC.834
TROPIC.835
*ENDIF TROPIC.836
TROPIC.837
TROPIC.838
TROPIC.839
TROPIC.840
ENDDO ! OVER ITBT TROPIC.841
C TROPIC.842
C======================================================================= TROPIC.843
C END OF BAROTROPIC LOOP TROPIC.844
C======================================================================= TROPIC.845
C TROPIC.846
TROPIC.847
*IF DEF,MPP TROPIC.848
C TROPIC.849
C===================================================================== TROPIC.850
C CALL TO SWAPBOUNDS FOR HALO UPDATE IN MPP VERSION TROPIC.851
C===================================================================== TROPIC.852
C TROPIC.853
CALL SWAPBOUNDS
(UBTBBC,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1) TROPIC.854
CALL SWAPBOUNDS
(VBTBBC,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1) TROPIC.855
TROPIC.856
*ENDIF TROPIC.857
TROPIC.858
TROPIC.859
IF (L_OTIMER) CALL TIMER
('TROPIC ',4) TROPIC.860
TROPIC.861
RETURN TROPIC.862
END TROPIC.863
*ENDIF TROPIC.864