47
48
52# if defined FORWARD_READ && defined SOLVE3D
54# endif
63
64# ifdef ANALYTICAL
66# endif
69# ifdef SOLVE3D
71# endif
72# ifdef DISTRIBUTE
73# if defined WET_DRY
75# endif
77# ifdef SOLVE3D
79# endif
80# endif
82
83 implicit none
84
85
86
87 integer, intent(in) :: ng, tile
88 integer, intent(in) :: LBi, UBi, LBj, UBj
89 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
90
91
92
93 logical :: SetBC
94 logical :: update = .false.
95# if defined WET_DRY
96 logical :: bry_update
97# endif
98
99 integer :: ILB, IUB, JLB, JUB
100 integer :: i, ic, itrc, j, k, my_tile
101
102 real(r8) :: cff, cff1, cff2
103
104 character (len=*), parameter :: MyFile = &
105 & __FILE__//", rp_set_data_tile"
106
107# include "set_bounds.h"
108
109
110
111 my_tile=-1
112 ilb=
bounds(ng)%LBi(my_tile)
113 iub=
bounds(ng)%UBi(my_tile)
114 jlb=
bounds(ng)%LBj(my_tile)
115 jub=
bounds(ng)%UBj(my_tile)
116
117# ifdef SOLVE3D
118
119# ifdef CLOUDS
120
121
122
123
124
125
126
127# ifdef ANA_CLOUD
129# else
131 & lbi, ubi, lbj, ubj, &
134 & update)
136# endif
137# endif
138
139# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
140 defined ecosim || \
141 (defined shortwave && defined
ana_srflux && defined albedo)
142
143
144
145
146
147# ifdef ANA_TAIR
149# else
151 & lbi, ubi, lbj, ubj, &
154 & update)
156# endif
157# endif
158
159# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
160 defined ecosim || \
161 (defined shortwave && defined
ana_srflux && defined albedo)
162
163
164
165
166
167# ifdef ANA_HUMIDITY
169# else
171 & lbi, ubi, lbj, ubj, &
174 & update)
176# endif
177# endif
178
179# ifdef SHORTWAVE
180
181
182
183
184
185# ifdef ANA_SRFLUX
187# else
189 & lbi, ubi, lbj, ubj, &
192 & update)
194# endif
195
196# if defined DIURNAL_SRFLUX && !defined FORWARD_FLUXES
197
198
199
200
202# endif
203# endif
204
205# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) && \
206
207
208
209
210
211
213 & lbi, ubi, lbj, ubj, &
216 & update)
218# endif
219
220# if defined LONGWAVE_OUT && \
221 (defined bulk_fluxes &&
222
223
224
225
226
228 & lbi, ubi, lbj, ubj, &
231 & update)
233# endif
234
235# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
236 defined ecosim
237
238
239
240
241
242# ifdef ANA_WINDS
244# else
246 & lbi, ubi, lbj, ubj, &
249 & update)
251
253 & lbi, ubi, lbj, ubj, &
256 & update)
258
259# ifdef CURVGRID
260
261
262
263
267 DO j=jstrr,jendr
268 DO i=istrr,iendr
269 cff1=
forces(ng)%Uwind(i,j)*
grid(ng)%CosAngler(i,j)+ &
270 &
forces(ng)%Vwind(i,j)*
grid(ng)%SinAngler(i,j)
271 cff2=
forces(ng)%Vwind(i,j)*
grid(ng)%CosAngler(i,j)- &
272 &
forces(ng)%Uwind(i,j)*
grid(ng)%SinAngler(i,j)
273 forces(ng)%Uwind(i,j)=cff1
274 forces(ng)%Vwind(i,j)=cff2
275 END DO
276 END DO
277
280 & lbi, ubi, lbj, ubj, &
283 & lbi, ubi, lbj, ubj, &
285 END IF
286
287# ifdef DISTRIBUTE
289 & lbi, ubi, lbj, ubj, &
294# endif
295 END IF
296# endif
297# endif
298# endif
299
300# if defined BULK_FLUXES && !defined FORWARD_FLUXES
301
302
303
304
305
306# ifdef ANA_RAIN
308# else
310 & lbi, ubi, lbj, ubj, &
313 & update)
315# endif
316# endif
317
318# if !defined BULK_FLUXES || defined FORWARD_FLUXES
319
320
321
322
323
324# ifdef ANA_STFLUX
326# else
328 & lbi, ubi, lbj, ubj, &
331 & update)
333
334# ifdef TL_IOMS
336 & lbi, ubi, lbj, ubj, &
339 & update)
341# endif
342# endif
343# endif
344
345# ifdef QCORRECTION
346
347
348
349
350
351
352# ifdef ANA_SST
354# else
356 & lbi, ubi, lbj, ubj, &
359 & update)
361# endif
362
363# ifdef ANA_DQDSST
365# else
367 & lbi, ubi, lbj, ubj, &
370 & update)
372# endif
373# endif
374
375
376
377
378
379# ifdef ANA_BTFLUX
381# else
383 & lbi, ubi, lbj, ubj, &
386 & update)
388
389# ifdef TL_IOMS
391 & lbi, ubi, lbj, ubj, &
394 & update)
396# endif
397# endif
398
399# ifdef SALINITY
400
401
402
403
404
405# ifdef ANA_SSFLUX
407# else
408# if !(defined EMINUSP || defined FORWARD_FLUXES || \
409 defined frc_coupling || defined srelaxation)
411 & lbi, ubi, lbj, ubj, &
414 & update)
416
417# ifdef TL_IOMS
419 & lbi, ubi, lbj, ubj, &
422 & update)
424# endif
425
426# elif (defined EMINUSP || defined FORWARD_FLUXES || \
427 defined frc_coupling)
429 & lbi, ubi, lbj, ubj, &
432 & update)
434
435# ifdef TL_IOMS
437 & lbi, ubi, lbj, ubj, &
440 & update)
442# endif
443# endif
444# endif
445
446# if defined SCORRECTION || defined SRELAXATION
447
448
449
450
451
452# ifdef ANA_SSS
454# else
456 & lbi, ubi, lbj, ubj, &
459 & update)
461# endif
462# endif
463
464
465
466
467
468# ifdef ANA_BSFLUX
470# else
472 & lbi, ubi, lbj, ubj, &
475 & update)
477
478# ifdef TL_IOMS
480 & lbi, ubi, lbj, ubj, &
483 & update)
485# endif
486# endif
487# endif
488
489# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
490
491
492
493
494
496# ifdef ANA_SPFLUX
498# else
500 & lbi, ubi, lbj, ubj, &
501 &
forces(ng)%stfluxG(:,:,:,itrc), &
502 &
forces(ng)%stflux (:,:,itrc), &
503 & update)
505
506# ifdef TL_IOMS
508 & lbi, ubi, lbj, ubj, &
509 &
forces(ng)%stfluxG(:,:,:,itrc), &
510 &
forces(ng)%tl_stflux (:,:,itrc), &
511 & update)
513# endif
514# endif
515
516# ifdef ANA_BPFLUX
518# else
520 & lbi, ubi, lbj, ubj, &
521 &
forces(ng)%btfluxG(:,:,:,itrc), &
522 &
forces(ng)%btflux (:,:,itrc), &
523 & update)
525
526# ifdef TL_IOMS
528 & lbi, ubi, lbj, ubj, &
529 &
forces(ng)%btfluxG(:,:,:,itrc), &
530 &
forces(ng)%tl_btflux(:,:,itrc), &
531 & update)
533# endif
534# endif
535 END DO
536# endif
537# endif
538
539# if !defined BULK_FLUXES || defined FORWARD_FLUXES || \
540 defined frc_coupling
541
542
543
544
545
546# ifdef ANA_SMFLUX
548# else
550 & lbi, ubi, lbj, ubj, &
553 & update)
555
557 & lbi, ubi, lbj, ubj, &
560 & update)
562
563# ifdef TL_IOMS
565 & lbi, ubi, lbj, ubj, &
568 & update)
570
572 & lbi, ubi, lbj, ubj, &
575 & update)
577# endif
578
579# ifdef CURVGRID
580
581
582
583
587 DO j=jstrr,jendr
588 DO i=istrr,iendr
589 cff1=
forces(ng)%sustr(i,j)*
grid(ng)%CosAngler(i,j)+ &
590 &
forces(ng)%svstr(i,j)*
grid(ng)%SinAngler(i,j)
591 cff2=
forces(ng)%svstr(i,j)*
grid(ng)%CosAngler(i,j)- &
592 &
forces(ng)%sustr(i,j)*
grid(ng)%SinAngler(i,j)
593 forces(ng)%sustr(i,j)=cff1
594 forces(ng)%svstr(i,j)=cff2
595# ifdef TL_IOMS
596 forces(ng)%tl_sustr(i,j)=cff1
597 forces(ng)%tl_svstr(i,j)=cff2
598# endif
599 END DO
600 END DO
601
604 & lbi, ubi, lbj, ubj, &
607 & lbi, ubi, lbj, ubj, &
609# ifdef TL_IOMS
611 & lbi, ubi, lbj, ubj, &
614 & lbi, ubi, lbj, ubj, &
616# endif
617 END IF
618
619# ifdef DISTRIBUTE
621 & lbi, ubi, lbj, ubj, &
626# ifdef TL_IOMS
628 & lbi, ubi, lbj, ubj, &
633# endif
634# endif
635 END IF
636# endif
637# endif
638# endif
639
640# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
641 defined ecosim || defined atm_press
642
643
644
645
646
647# ifdef ANA_PAIR
649# else
650 setbc=.true.
651
653 & lbi, ubi, lbj, ubj, &
656 & update, setbc)
658# endif
659# endif
660
661# ifdef WAVE_DATA
662
663
664
665
666
667# ifdef ANA_WWAVE
669# else
670# ifdef WAVES_DIR
672 & lbi, ubi, lbj, ubj, &
675 & update)
677
678# ifdef CURVGRID
679
680
681
685 DO j=jstrr,jendr
686 DO i=istrr,iendr
688 &
grid(ng)%angler(i,j)
689 END DO
690 END DO
691 END IF
692
695 & lbi, ubi, lbj, ubj, &
697 END IF
698
699# ifdef DISTRIBUTE
701 & lbi, ubi, lbj, ubj, &
705# endif
706# endif
707# endif
708
709# ifdef WAVES_HEIGHT
710
712 & lbi, ubi, lbj, ubj, &
715 & update)
717# endif
718
719# ifdef WAVES_LENGTH
720
722 & lbi, ubi, lbj, ubj, &
725 & update)
727# endif
728
729# ifdef WAVES_TOP_PERIOD
730
732 & lbi, ubi, lbj, ubj, &
733 &
forces(ng)%Pwave_topG, &
735 & update)
737# endif
738
739# ifdef WAVES_BOT_PERIOD
740
742 & lbi, ubi, lbj, ubj, &
743 &
forces(ng)%Pwave_botG, &
745 & update)
747# endif
748
749# if defined WAVES_UB
750
752 & lbi, ubi, lbj, ubj, &
755 & update)
757# endif
758
759# if defined TKE_WAVEDISS
760
762 & lbi, ubi, lbj, ubj, &
763 &
forces(ng)%Wave_dissipG, &
764 &
forces(ng)%Wave_dissip, &
765 & update)
767# endif
768
769# if defined SVENDSEN_ROLLER
770
772 & lbi, ubi, lbj, ubj, &
773 &
forces(ng)%Wave_breakG, &
774 &
forces(ng)%Wave_break, &
775 & update)
777# endif
778# endif
779# endif
780
781# if defined ECOSIM && defined SOLVE3D
782
783
784
785
786
787
789# endif
790
791# ifdef ANA_SPINNING
792
793
794
795
796
797
799# endif
800
801
802
803
804
805# ifdef ANA_PSOURCE
808 END IF
809# else
810 IF (
domain(ng)%SouthWest_Test(tile))
THEN
816 & update)
818
819# ifdef SOLVE3D
824 END DO
825 END DO
826# endif
827 END IF
828
829# ifdef SOLVE3D
833 & 1,
nsrc(ng),
n(ng), &
834 &
sources(ng) % TsrcG(:,:,:,itrc), &
835 &
sources(ng) % Tsrc(:,:,itrc), &
836 & update)
838 END IF
839 END DO
840# endif
841 END IF
842# endif
843
844
845
846
847
848
849
851# ifdef ANA_FSOBC
853# else
854 IF (
domain(ng)%SouthWest_Test(tile))
THEN
860 & update)
862
867 & update)
869 END IF
870
876 & update)
878
883 & update)
885 END IF
886
892 & update)
894
899 & update)
901 END IF
902
908 & update)
910
915 & update)
917 END IF
918 END IF
919# endif
920
921# if defined WET_DRY
922
923
924
926 bry_update=.false.
927 IF (
domain(ng)%Western_Edge(tile))
THEN
928 DO j=jstrr,jendr
930 IF (
boundary(ng)%zeta_west(j).le.cff)
THEN
933 END IF
934 END DO
935 bry_update=.true.
936 END IF
937# ifdef DISTRIBUTE
939 & bry_update, &
942 & bry_update, &
944# endif
945 END IF
946
948 bry_update=.false.
949 IF (
domain(ng)%Eastern_Edge(tile))
THEN
950 DO j=jstrr,jendr
952 IF (
boundary(ng)%zeta_east(j).le.cff)
THEN
955 END IF
956 END DO
957 bry_update=.true.
958 END IF
959# ifdef DISTRIBUTE
961 & bry_update, &
964 & bry_update, &
966# endif
967 END IF
968
970 bry_update=.false.
971 IF (
domain(ng)%Southern_Edge(tile))
THEN
972 DO i=istrr,iendr
974 IF (
boundary(ng)%zeta_south(i).le.cff)
THEN
977 END IF
978 END DO
979 bry_update=.true.
980 END IF
981# ifdef DISTRIBUTE
983 & bry_update, &
986 & bry_update, &
988# endif
989 END IF
990
992 bry_update=.false.
993 IF (
domain(ng)%Northern_Edge(tile))
THEN
994 DO i=istrr,iendr
996 IF (
boundary(ng)%zeta_north(i).le.cff)
THEN
999 END IF
1000 END DO
1001 bry_update=.true.
1002 END IF
1003# ifdef DISTRIBUTE
1005 & bry_update, &
1008 & bry_update, &
1010# endif
1011 END IF
1012# endif
1013 END IF
1014
1015
1016
1018# ifdef ANA_M2OBC
1020# else
1021 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1027 & update)
1029
1034 & update)
1036 END IF
1037
1043 & update)
1045
1050 & update)
1052 END IF
1053
1059 & update)
1061
1066 & update)
1068 END IF
1069
1075 & update)
1077
1082 & update)
1084 END IF
1085
1091 & update)
1093
1098 & update)
1100 END IF
1101
1107 & update)
1109
1114 & update)
1116 END IF
1117
1123 & update)
1125
1130 & update)
1132 END IF
1133
1139 & update)
1141
1146 & update)
1148 END IF
1149 END IF
1150# endif
1151 END IF
1152
1153# ifdef SOLVE3D
1154
1155
1156
1158# ifdef ANA_M3OBC
1160# else
1161 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1164 & 0,
mm(ng)+1,
n(ng), &
1167 & update)
1169
1171 & 0,
mm(ng)+1,
n(ng), &
1174 & update)
1176 END IF
1177
1180 & 1,
mm(ng)+1,
n(ng), &
1183 & update)
1185
1187 & 1,
mm(ng)+1,
n(ng), &
1190 & update)
1192 END IF
1193
1196 & 0,
mm(ng)+1,
n(ng), &
1199 & update)
1201
1203 & 0,
mm(ng)+1,
n(ng), &
1206 & update)
1208 END IF
1209
1212 & 1,
mm(ng)+1,
n(ng), &
1215 & update)
1217
1219 & 1,
mm(ng)+1,
n(ng), &
1222 & update)
1224 END IF
1225
1228 & 1,
lm(ng)+1,
n(ng), &
1231 & update)
1233
1235 & 1,
lm(ng)+1,
n(ng), &
1238 & update)
1240 END IF
1241
1244 & 0,
lm(ng)+1,
n(ng), &
1247 & update)
1249
1251 & 0,
lm(ng)+1,
n(ng), &
1254 & update)
1256 END IF
1257
1260 & 1,
lm(ng)+1,
n(ng), &
1263 & update)
1265
1267 & 1,
lm(ng)+1,
n(ng), &
1270 & update)
1272 END IF
1273
1276 & 0,
lm(ng)+1,
n(ng), &
1279 & update)
1281
1283 & 0,
lm(ng)+1,
n(ng), &
1286 & update)
1288 END IF
1289 END IF
1290# endif
1291 END IF
1292
1293
1294
1296# ifdef ANA_TOBC
1298# else
1299 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1303 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1304 &
boundary(ng) % tG_west(:,:,:,itrc), &
1305 &
boundary(ng) % t_west(:,:,itrc), &
1306 & update)
1308 & __line__, myfile)) RETURN
1309
1311 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1312 &
boundary(ng) % tG_west(:,:,:,itrc), &
1313 &
boundary(ng) % tl_t_west(:,:,itrc), &
1314 & update)
1316 & __line__, myfile)) RETURN
1317 END IF
1318
1321 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1322 &
boundary(ng) % tG_east(:,:,:,itrc), &
1323 &
boundary(ng) % t_east(:,:,itrc), &
1324 & update)
1326 & __line__, myfile)) RETURN
1327
1329 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1330 &
boundary(ng) % tG_east(:,:,:,itrc), &
1331 &
boundary(ng) % tl_t_east(:,:,itrc), &
1332 & update)
1334 & __line__, myfile)) RETURN
1335 END IF
1336
1339 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1340 &
boundary(ng) % tG_south(:,:,:,itrc), &
1341 &
boundary(ng) % t_south(:,:,itrc), &
1342 & update)
1344 & __line__, myfile)) RETURN
1345
1347 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1348 &
boundary(ng) % tG_south(:,:,:,itrc), &
1349 &
boundary(ng) % tl_t_south(:,:,itrc), &
1350 & update)
1352 & __line__, myfile)) RETURN
1353 END IF
1354
1357 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1358 &
boundary(ng) % tG_north(:,:,:,itrc), &
1359 &
boundary(ng) % t_north(:,:,itrc), &
1360 & update)
1362 & __line__, myfile)) RETURN
1363
1365 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1366 &
boundary(ng) % tG_north(:,:,:,itrc), &
1367 &
boundary(ng) % tl_t_north(:,:,itrc), &
1368 & update)
1370 & __line__, myfile)) RETURN
1371 END IF
1372 END DO
1373 END IF
1374# endif
1375 END IF
1376# endif
1377
1378
1379
1380
1381
1383# ifdef ANA_SSH
1385# else
1387 & lbi, ubi, lbj, ubj, &
1390 & update)
1392# endif
1393 END IF
1394
1395
1396
1397
1398
1400# ifdef ANA_M2CLIMA
1402# else
1404 & lbi, ubi, lbj, ubj, &
1405 &
clima(ng)%ubarclmG, &
1406 &
clima(ng)%ubarclm, &
1407 & update)
1409
1411 & lbi, ubi, lbj, ubj, &
1412 &
clima(ng)%vbarclmG, &
1413 &
clima(ng)%vbarclm, &
1414 & update)
1416# endif
1417 END IF
1418
1419# ifdef SOLVE3D
1420
1421
1422
1423
1424
1426# ifdef ANA_M3CLIMA
1428# else
1430 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1431 &
clima(ng)%uclmG, &
1433 & update)
1435
1437 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1438 &
clima(ng)%vclmG, &
1440 & update)
1442# endif
1443 END IF
1444
1445
1446
1447
1448
1449# ifdef ANA_TCLIMA
1452 END IF
1453# else
1454 ic=0
1457 ic=ic+1
1459 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1460 &
clima(ng)%tclmG(:,:,:,:,ic), &
1461 &
clima(ng)%tclm (:,:,:,ic), &
1462 & update)
1464 END IF
1465 END DO
1466# endif
1467# endif
1468
1469# ifdef FORWARD_READ
1470
1471
1472
1473
1474
1475
1476
1477 DO k=1,3
1479 & lbi, ubi, lbj, ubj, &
1480 &
ocean(ng)%zetaG, &
1481 &
ocean(ng)%zeta(:,:,k), &
1482 & update)
1484 END DO
1485
1486# ifdef SOLVE3D
1487 DO j=jstrr,jendr
1488 DO i=istrr,iendr
1490 END DO
1491 END DO
1492# endif
1493
1494
1495
1496 DO k=1,3
1498 & lbi, ubi, lbj, ubj, &
1499 &
ocean(ng)%ubarG, &
1500 &
ocean(ng)%ubar(:,:,k), &
1501 & update)
1503
1505 & lbi, ubi, lbj, ubj, &
1506 &
ocean(ng)%vbarG, &
1507 &
ocean(ng)%vbar(:,:,k), &
1508 & update)
1510 END DO
1511
1512# ifdef FORWARD_RHS
1513
1514
1515
1516 DO k=1,2
1518 & lbi, ubi, lbj, ubj, &
1519 &
ocean(ng)%rzetaG, &
1520 &
ocean(ng)%rzeta(:,:,k), &
1521 & update)
1523
1525 & lbi, ubi, lbj, ubj, &
1526 &
ocean(ng)%rubarG, &
1527 &
ocean(ng)%rubar(:,:,k), &
1528 & update)
1530
1532 & lbi, ubi, lbj, ubj, &
1533 &
ocean(ng)%rvbarG, &
1534 &
ocean(ng)%rvbar(:,:,k), &
1535 & update)
1537 END DO
1538# endif
1539
1540# ifdef SOLVE3D
1541
1542
1543
1545 & lbi, ubi, lbj, ubj, &
1548 & update)
1550
1552 & lbi, ubi, lbj, ubj, &
1555 & update)
1557
1559 & lbi, ubi, lbj, ubj, &
1562 & update)
1564
1566 & lbi, ubi, lbj, ubj, &
1569 & update)
1571
1572
1573
1574 DO k=1,2
1576 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1578 &
ocean(ng)%u(:,:,:,k), &
1579 & update)
1581
1583 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1585 &
ocean(ng)%v(:,:,:,k), &
1586 & update)
1588 END DO
1589
1590# ifdef FORWARD_RHS
1591
1592
1593
1594 DO k=1,2
1596 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1598 &
ocean(ng)%ru(:,:,:,k), &
1599 & update)
1601
1603 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1605 &
ocean(ng)%rv(:,:,:,k), &
1606 & update)
1608 END DO
1609# endif
1610
1611
1612
1614 DO k=1,3
1616 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1617 &
ocean(ng)%tG(:,:,:,:,itrc), &
1618 &
ocean(ng)%t(:,:,:,k,itrc), &
1619 & update)
1621 END DO
1622 END DO
1623
1624# ifdef FORWARD_MIXING
1625
1626
1627
1630 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1631 &
mixing(ng)%AktG(:,:,:,:,itrc), &
1632 &
mixing(ng)%Akt(:,:,:,itrc), &
1633 & update)
1635 END DO
1636
1638 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1641 & update)
1643# endif
1644
1645# if defined MY25_MIXING_NOT_YET || defined GLS_MIXING_NOT_YET
1646
1647
1648
1649 DO k=1,3
1651 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1653 &
mixing(ng)%tke(:,:,:,k), &
1654 & update)
1656 END DO
1657
1658
1659
1660 DO k=1,3
1662 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1664 &
mixing(ng)%gls(:,:,:,k), &
1665 & update)
1667 END DO
1668
1669
1670
1672 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1675 & update)
1677
1678
1679
1681 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1684 & update)
1686
1687# ifdef GLS_MIXING_NOT_YET
1688
1689
1690
1692 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1695 & update)
1697# endif
1698# endif
1699
1700# ifdef LMD_MIXING_NOT_YET
1701
1702
1703
1705 & lbi, ubi, lbj, ubj, &
1708 & update)
1710# endif
1711
1712# ifdef LMD_BKPP_NOT_YET
1713
1714
1715
1717 & lbi, ubi, lbj, ubj, &
1720 & update)
1722# endif
1723
1724# ifdef LMD_NONLOCAL_NOT_YET
1725
1726
1727
1730 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1731 &
mixing(ng)%ghatsG(:,:,:,:,itrc), &
1732 &
mixing(ng)%ghat(:,:,:,itrc), &
1733 & update)
1735 END DO
1736# endif
1737# endif
1738
1739# if defined R4DVAR || defined R4DVAR_ANA_SENSITIVITY || \
1740 defined tl_r4dvar
1741
1742
1743
1744
1745
1747
1748
1749
1751 & lbi, ubi, lbj, ubj, &
1752 &
ocean(ng)%f_zetaG, &
1753 &
ocean(ng)%f_zeta, &
1754 & update)
1756
1757# ifndef SOLVE3D
1758
1759
1760
1762 & lbi, ubi, lbj, ubj, &
1763 &
ocean(ng)%f_ubarG, &
1764 &
ocean(ng)%f_ubar, &
1765 & update)
1767
1769 & lbi, ubi, lbj, ubj, &
1770 &
ocean(ng)%f_vbarG, &
1771 &
ocean(ng)%f_vbar, &
1772 & update)
1774# else
1775
1776
1777
1779 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1782 & update)
1784
1786 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1789 & update)
1791
1792
1793
1796 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1797 &
ocean(ng)%f_tG(:,:,:,:,itrc), &
1798 &
ocean(ng)%f_t(:,:,:,itrc), &
1799 & update)
1801 END DO
1802# endif
1803 END IF
1804# endif
1805# endif
1806
1807 RETURN
subroutine ana_spinning(ng, tile, model)
subroutine ana_fsobc(ng, tile, model)
subroutine ana_wwave(ng, tile, model)
subroutine ana_sst(ng, tile, model)
subroutine ana_m3obc(ng, tile, model)
subroutine ana_dqdsst(ng, tile, model)
subroutine ana_tclima(ng, tile, model)
subroutine ana_btflux(ng, tile, model, itrc)
subroutine ana_ssh(ng, tile, model)
subroutine ana_m2obc(ng, tile, model)
subroutine ana_tobc(ng, tile, model)
subroutine ana_sss(ng, tile, model)
subroutine ana_psource(ng, tile, model)
subroutine ana_winds(ng, tile, model)
subroutine ana_srflux(ng, tile, model)
subroutine ana_smflux(ng, tile, model)
subroutine ana_pair(ng, tile, model)
subroutine ana_m2clima(ng, tile, model)
subroutine ana_tair(ng, tile, model)
subroutine ana_m3clima(ng, tile, model)
subroutine ana_stflux(ng, tile, model, itrc)
subroutine ana_rain(ng, tile, model)
subroutine ana_specir(ng, tile, model)
subroutine ana_humid(ng, tile, model)
subroutine ana_cloud(ng, tile, model)
subroutine mp_boundary(ng, model, imin, imax, lbi, ubi, lbk, ubk, update, a)
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_u2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_v2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
type(t_boundary), dimension(:), allocatable boundary
type(t_clima), dimension(:), allocatable clima
type(t_coupling), dimension(:), allocatable coupling
type(t_forces), dimension(:), allocatable forces
type(t_grid), dimension(:), allocatable grid
type(t_mixing), dimension(:), allocatable mixing
integer, dimension(2) iddiff
integer, dimension(4) idu3bc
integer, dimension(4) idzbry
integer, dimension(4) idu2bc
logical, dimension(:,:,:), allocatable linfo
integer, dimension(:), allocatable idrtrc
integer, dimension(:), allocatable idtbot
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtclm
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
integer, dimension(4) idv3bc
integer, dimension(:), allocatable idttlf
integer, dimension(2) idghat
integer, dimension(:,:,:), allocatable iinfo
integer, dimension(4) idv2bc
integer, dimension(:,:), allocatable idtbry
type(t_ocean), dimension(:), allocatable ocean
integer, dimension(:), allocatable n
type(t_bounds), dimension(:), allocatable bounds
type(t_lbc), dimension(:,:,:), allocatable tl_lbc
type(t_domain), dimension(:), allocatable domain
integer, dimension(:), allocatable lm
integer, dimension(:), allocatable nt
integer, dimension(:), allocatable mm
logical, dimension(:), allocatable luvsrc
logical, dimension(:,:), allocatable ltracersrc
real(r8), dimension(:), allocatable dcrit
logical, dimension(:), allocatable lprocessobc
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
logical, dimension(:), allocatable lm3clm
logical, dimension(:), allocatable lsshclm
logical, dimension(:), allocatable frequentimpulse
logical, dimension(:), allocatable lwsrc
integer, parameter isouth
logical, dimension(:), allocatable lm2clm
logical, dimension(:,:), allocatable ltracerclm
integer, parameter inorth
type(t_sources), dimension(:), allocatable sources
integer, dimension(:), allocatable nsrc
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine mp_exchange3d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine set_2dfld_tile(ng, tile, model, ifield, lbi, ubi, lbj, ubj, finp, fout, update, setbc)
subroutine set_3dfld_tile(ng, tile, model, ifield, lbi, ubi, lbj, ubj, lbk, ubk, finp, fout, update, setbc)
logical function, public founderror(flag, noerr, line, routine)
subroutine set_ngfld(ng, model, ifield, lbi, ubi, ubj, istr, iend, jrec, finp, fout, update)