47
48
52# if defined FORWARD_READ && defined SOLVE3D
54# endif
56# ifdef SENSITIVITY_4DVAR
58# endif
66
67# ifdef ANALYTICAL
69# endif
72# ifdef SOLVE3D
74# endif
75# ifdef DISTRIBUTE
76# if defined WET_DRY
78# endif
80# ifdef SOLVE3D
82# endif
83# endif
85
86 implicit none
87
88
89
90 integer, intent(in) :: ng, tile
91 integer, intent(in) :: LBi, UBi, LBj, UBj
92 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
93
94
95
96 logical :: SetBC
97 logical :: update = .false.
98# if defined WET_DRY
99 logical :: bry_update
100# endif
101
102 integer :: ILB, IUB, JLB, JUB
103 integer :: i, ic, itrc, j, k, my_tile
104
105 real(r8) :: cff, cff1, cff2
106
107 character (len=*), parameter :: MyFile = &
108 & __FILE__//", ad_set_data_tile"
109
110# include "set_bounds.h"
111
112
113
114 my_tile=-1
115 ilb=
bounds(ng)%LBi(my_tile)
116 iub=
bounds(ng)%UBi(my_tile)
117 jlb=
bounds(ng)%LBj(my_tile)
118 jub=
bounds(ng)%UBj(my_tile)
119
120# ifdef SOLVE3D
121
122# ifdef CLOUDS
123
124
125
126
127
128
129
130# ifdef ANA_CLOUD
132# else
134 & lbi, ubi, lbj, ubj, &
137 & update)
139# endif
140# endif
141
142# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
143 defined ecosim || \
144 (defined shortwave && defined
ana_srflux && defined albedo)
145
146
147
148
149
150# ifdef ANA_TAIR
152# else
154 & lbi, ubi, lbj, ubj, &
157 & update)
159# endif
160# endif
161
162# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
163 defined ecosim || \
164 (defined shortwave && defined
ana_srflux && defined albedo)
165
166
167
168
169
170# ifdef ANA_HUMIDITY
172# else
174 & lbi, ubi, lbj, ubj, &
177 & update)
179# endif
180# endif
181
182# ifdef SHORTWAVE
183
184
185
186
187
188# ifdef ANA_SRFLUX
190# else
192 & lbi, ubi, lbj, ubj, &
195 & update)
197# endif
198# if defined DIURNAL_SRFLUX && !defined FORWARD_FLUXES
199
200
201
202
204# endif
205# endif
206
207# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) && \
208
209
210
211
212
213
215 & lbi, ubi, lbj, ubj, &
218 & update)
220# endif
221
222# if defined LONGWAVE_OUT && \
223 (defined bulk_fluxes &&
224
225
226
227
228
230 & lbi, ubi, lbj, ubj, &
233 & update)
235# endif
236
237# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
238 defined ecosim
239
240
241
242
243
244# ifdef ANA_WINDS
246# else
248 & lbi, ubi, lbj, ubj, &
251 & update)
253
255 & lbi, ubi, lbj, ubj, &
258 & update)
260
261# ifdef CURVGRID
262
263
264
265
269 DO j=jstrr,jendr
270 DO i=istrr,iendr
271 cff1=
forces(ng)%Uwind(i,j)*
grid(ng)%CosAngler(i,j)+ &
272 &
forces(ng)%Vwind(i,j)*
grid(ng)%SinAngler(i,j)
273 cff2=
forces(ng)%Vwind(i,j)*
grid(ng)%CosAngler(i,j)- &
274 &
forces(ng)%Uwind(i,j)*
grid(ng)%SinAngler(i,j)
275 forces(ng)%Uwind(i,j)=cff1
276 forces(ng)%Vwind(i,j)=cff2
277 END DO
278 END DO
279
282 & lbi, ubi, lbj, ubj, &
285 & lbi, ubi, lbj, ubj, &
287 END IF
288
289# ifdef DISTRIBUTE
291 & lbi, ubi, lbj, ubj, &
296# endif
297 END IF
298# endif
299# endif
300# endif
301
302# if defined BULK_FLUXES && !defined FORWARD_FLUXES
303
304
305
306
307
308# ifdef ANA_RAIN
310# else
312 & lbi, ubi, lbj, ubj, &
315 & update)
317# endif
318# endif
319
320# if !defined BULK_FLUXES || defined FORWARD_FLUXES
321
322
323
324
325
326# ifdef ANA_STFLUX
328# else
330 & lbi, ubi, lbj, ubj, &
333 & update)
335# endif
336# endif
337
338# ifdef QCORRECTION
339
340
341
342
343
344
345# ifdef ANA_SST
347# else
349 & lbi, ubi, lbj, ubj, &
352 & update)
354# endif
355
356# ifdef ANA_DQDSST
358# else
360 & lbi, ubi, lbj, ubj, &
363 & update)
365# endif
366# endif
367
368
369
370
371
372# ifdef ANA_BTFLUX
374# else
376 & lbi, ubi, lbj, ubj, &
379 & update)
381# endif
382
383# ifdef SALINITY
384
385
386
387
388
389# ifdef ANA_SSFLUX
391# else
392# if !(defined EMINUSP || defined FORWARD_FLUXES || \
393 defined frc_coupling || defined srelaxation)
395 & lbi, ubi, lbj, ubj, &
398 & update)
400
401# elif (defined EMINUSP || defined FORWARD_FLUXES || \
402 defined frc_coupling)
404 & lbi, ubi, lbj, ubj, &
407 & update)
409# endif
410# endif
411
412# if defined SCORRECTION || defined SRELAXATION
413
414
415
416
417
418# ifdef ANA_SSS
420# else
422 & lbi, ubi, lbj, ubj, &
425 & update)
427# endif
428# endif
429
430
431
432
433
434# ifdef ANA_BSFLUX
436# else
438 & lbi, ubi, lbj, ubj, &
441 & update)
443# endif
444# endif
445
446# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
447
448
449
450
451
453# ifdef ANA_SPFLUX
455# else
457 & lbi, ubi, lbj, ubj, &
458 &
forces(ng)%stfluxG(:,:,:,itrc), &
459 &
forces(ng)%stflux (:,:,itrc), &
460 & update)
462# endif
463
464# ifdef ANA_BPFLUX
466# else
468 & lbi, ubi, lbj, ubj, &
469 &
forces(ng)%btfluxG(:,:,:,itrc), &
470 &
forces(ng)%btflux (:,:,itrc), &
471 & update)
473# endif
474 END DO
475# endif
476# endif
477
478# if !defined BULK_FLUXES || defined FORWARD_FLUXES || \
479 defined frc_coupling
480
481
482
483
484
485# ifdef ANA_SMFLUX
487# else
489 & lbi, ubi, lbj, ubj, &
492 & update)
494
496 & lbi, ubi, lbj, ubj, &
499 & update)
501
502# ifdef CURVGRID
503
504
505
506
510 DO j=jstrr,jendr
511 DO i=istrr,iendr
512 cff1=
forces(ng)%sustr(i,j)*
grid(ng)%CosAngler(i,j)+ &
513 &
forces(ng)%svstr(i,j)*
grid(ng)%SinAngler(i,j)
514 cff2=
forces(ng)%svstr(i,j)*
grid(ng)%CosAngler(i,j)- &
515 &
forces(ng)%sustr(i,j)*
grid(ng)%SinAngler(i,j)
516 forces(ng)%sustr(i,j)=cff1
517 forces(ng)%svstr(i,j)=cff2
518 END DO
519 END DO
520
523 & lbi, ubi, lbj, ubj, &
526 & lbi, ubi, lbj, ubj, &
528 END IF
529
530# ifdef DISTRIBUTE
532 & lbi, ubi, lbj, ubj, &
537# endif
538 END IF
539# endif
540# endif
541# endif
542
543# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
544 defined ecosim || defined atm_press
545
546
547
548
549
550# ifdef ANA_PAIR
552# else
553 setbc=.true.
554
556 & lbi, ubi, lbj, ubj, &
559 & update, setbc)
561# endif
562# endif
563
564# ifdef WAVE_DATA
565
566
567
568
569
570# ifdef ANA_WWAVE
572# else
573# ifdef WAVES_DIR
575 & lbi, ubi, lbj, ubj, &
578 & update)
580
581# ifdef CURVGRID
582
583
584
588 DO j=jstrr,jendr
589 DO i=istrr,iendr
591 &
grid(ng)%angler(i,j)
592 END DO
593 END DO
594 END IF
595
598 & lbi, ubi, lbj, ubj, &
600 END IF
601
602# ifdef DISTRIBUTE
604 & lbi, ubi, lbj, ubj, &
608# endif
609# endif
610# endif
611
612# ifdef WAVES_HEIGHT
614 & lbi, ubi, lbj, ubj, &
617 & update)
619# endif
620
621# ifdef WAVES_LENGTH
623 & lbi, ubi, lbj, ubj, &
626 & update)
628# endif
629
630# ifdef WAVES_TOP_PERIOD
632 & lbi, ubi, lbj, ubj, &
633 &
forces(ng)%Pwave_topG, &
635 & update)
637# endif
638
639# ifdef WAVES_BOT_PERIOD
641 & lbi, ubi, lbj, ubj, &
642 &
forces(ng)%Pwave_botG, &
644 & update)
646# endif
647
648# if defined WAVES_UB
650 & lbi, ubi, lbj, ubj, &
653 & update)
655# endif
656
657# if defined TKE_WAVEDISS
659 & lbi, ubi, lbj, ubj, &
660 &
forces(ng)%Wave_dissipG, &
661 &
forces(ng)%Wave_dissip, &
662 & update)
664# endif
665
666# if defined SVENDSEN_ROLLER
668 & lbi, ubi, lbj, ubj, &
669 &
forces(ng)%Wave_breakG, &
670 &
forces(ng)%Wave_break, &
671 & update)
673# endif
674# endif
675# endif
676
677# if defined ECOSIM && defined SOLVE3D
678
679
680
681
682
683
685# endif
686
687# ifdef ANA_SPINNING
688
689
690
691
692
693
695# endif
696
697
698
699
700
701# ifdef ANA_PSOURCE
704 END IF
705# else
706 IF (
domain(ng)%SouthWest_Test(tile))
THEN
712 & update)
714
715# ifdef SOLVE3D
720 END DO
721 END DO
722# endif
723 END IF
724
725# ifdef SOLVE3D
729 & 1,
nsrc(ng),
n(ng), &
730 &
sources(ng) % TsrcG(:,:,:,itrc), &
731 &
sources(ng) % Tsrc(:,:,itrc), &
732 & update)
734 END IF
735 END DO
736# endif
737 END IF
738# endif
739
740
741
742
743
744
745
747# ifdef ANA_FSOBC
749# else
750 IF (
domain(ng)%SouthWest_Test(tile))
THEN
756 & update)
758 END IF
759
765 & update)
767 END IF
768
774 & update)
776 END IF
777
783 & update)
785 END IF
786 END IF
787# endif
788
789# if defined WET_DRY
790
791
792
794 bry_update=.false.
795 IF (
domain(ng)%Western_Edge(tile))
THEN
796 DO j=jstrr,jendr
798 IF (
boundary(ng)%zeta_west(j).le.cff)
THEN
800 END IF
801 END DO
802 bry_update=.true.
803 END IF
804# ifdef DISTRIBUTE
806 & bry_update, &
808# endif
809 END IF
810
812 bry_update=.false.
813 IF (
domain(ng)%Eastern_Edge(tile))
THEN
814 DO j=jstrr,jendr
816 IF (
boundary(ng)%zeta_east(j).le.cff)
THEN
818 END IF
819 END DO
820 bry_update=.true.
821 END IF
822# ifdef DISTRIBUTE
824 & bry_update, &
826# endif
827 END IF
828
830 bry_update=.false.
831 IF (
domain(ng)%Southern_Edge(tile))
THEN
832 DO i=istrr,iendr
834 IF (
boundary(ng)%zeta_south(i).le.cff)
THEN
836 END IF
837 END DO
838 bry_update=.true.
839 END IF
840# ifdef DISTRIBUTE
842 & bry_update, &
844# endif
845 END IF
846
848 bry_update=.false.
849 IF (
domain(ng)%Northern_Edge(tile))
THEN
850 DO i=istrr,iendr
852 IF (
boundary(ng)%zeta_north(i).le.cff)
THEN
854 END IF
855 END DO
856 bry_update=.true.
857 END IF
858# ifdef DISTRIBUTE
860 & bry_update, &
862# endif
863 END IF
864# endif
865 END IF
866
867
868
870# ifdef ANA_M2OBC
872# else
873 IF (
domain(ng)%SouthWest_Test(tile))
THEN
879 & update)
881 END IF
882
888 & update)
890 END IF
891
897 & update)
899 END IF
900
906 & update)
908 END IF
909
915 & update)
917 END IF
918
924 & update)
926 END IF
927
933 & update)
935 END IF
936
942 & update)
944 END IF
945 END IF
946# endif
947 END IF
948
949# ifdef SOLVE3D
950
951
952
954# ifdef ANA_M3OBC
956# else
957 IF (
domain(ng)%SouthWest_Test(tile))
THEN
960 & 0,
mm(ng)+1,
n(ng), &
963 & update)
965 END IF
966
969 & 1,
mm(ng)+1,
n(ng), &
972 & update)
974 END IF
975
978 & 0,
mm(ng)+1,
n(ng), &
981 & update)
983 END IF
984
987 & 1,
mm(ng)+1,
n(ng), &
990 & update)
992 END IF
993
996 & 1,
lm(ng)+1,
n(ng), &
999 & update)
1001 END IF
1002
1005 & 0,
lm(ng)+1,
n(ng), &
1008 & update)
1010 END IF
1011
1014 & 1,
lm(ng)+1,
n(ng), &
1017 & update)
1019 END IF
1020
1023 & 0,
lm(ng)+1,
n(ng), &
1026 & update)
1028 END IF
1029 END IF
1030# endif
1031 END IF
1032
1033
1034
1036# ifdef ANA_TOBC
1038# else
1039 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1043 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1044 &
boundary(ng) % tG_west(:,:,:,itrc), &
1045 &
boundary(ng) % t_west(:,:,itrc), &
1046 & update)
1048 & __line__, myfile)) RETURN
1049 END IF
1050
1053 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1054 &
boundary(ng) % tG_east(:,:,:,itrc), &
1055 &
boundary(ng) % t_east(:,:,itrc), &
1056 & update)
1058 & __line__, myfile)) RETURN
1059 END IF
1060
1063 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1064 &
boundary(ng) % tG_south(:,:,:,itrc), &
1065 &
boundary(ng) % t_south(:,:,itrc), &
1066 & update)
1068 & __line__, myfile)) RETURN
1069 END IF
1070
1073 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1074 &
boundary(ng) % tG_north(:,:,:,itrc), &
1075 &
boundary(ng) % t_north(:,:,itrc), &
1076 & update)
1078 & __line__, myfile)) RETURN
1079 END IF
1080 END DO
1081 END IF
1082# endif
1083 END IF
1084# endif
1085
1086
1087
1088
1089
1091# ifdef ANA_SSH
1093# else
1095 & lbi, ubi, lbj, ubj, &
1098 & update)
1100# endif
1101 END IF
1102
1103
1104
1105
1106
1108# ifdef ANA_M2CLIMA
1110# else
1112 & lbi, ubi, lbj, ubj, &
1113 &
clima(ng)%ubarclmG, &
1114 &
clima(ng)%ubarclm, &
1115 & update)
1117
1119 & lbi, ubi, lbj, ubj, &
1120 &
clima(ng)%vbarclmG, &
1121 &
clima(ng)%vbarclm, &
1122 & update)
1124# endif
1125 END IF
1126
1127# ifdef SOLVE3D
1128
1129
1130
1131
1132
1134# ifdef ANA_M3CLIMA
1136# else
1138 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1139 &
clima(ng)%uclmG, &
1141 & update)
1143
1145 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1146 &
clima(ng)%vclmG, &
1148 & update)
1150# endif
1151 END IF
1152
1153
1154
1155
1156
1157# ifdef ANA_TCLIMA
1160 END IF
1161# else
1162 ic=0
1165 ic=ic+1
1167 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1168 &
clima(ng)%tclmG(:,:,:,:,ic), &
1169 &
clima(ng)%tclm (:,:,:,ic), &
1170 & update)
1172 END IF
1173 END DO
1174# endif
1175# endif
1176
1177# ifdef FORWARD_READ
1178
1179
1180
1181
1182
1183
1184
1185 DO k=1,3
1187 & lbi, ubi, lbj, ubj, &
1188 &
ocean(ng)%zetaG, &
1189 &
ocean(ng)%zeta(:,:,k), &
1190 & update)
1192 END DO
1193
1194# ifdef SOLVE3D
1195 DO j=jstrr,jendr
1196 DO i=istrr,iendr
1198 END DO
1199 END DO
1200# endif
1201
1202
1203
1204 DO k=1,3
1206 & lbi, ubi, lbj, ubj, &
1207 &
ocean(ng)%ubarG, &
1208 &
ocean(ng)%ubar(:,:,k), &
1209 & update)
1211
1213 & lbi, ubi, lbj, ubj, &
1214 &
ocean(ng)%vbarG, &
1215 &
ocean(ng)%vbar(:,:,k), &
1216 & update)
1218 END DO
1219
1220# ifdef FORWARD_RHS
1221
1222
1223
1224 DO k=1,2
1226 & lbi, ubi, lbj, ubj, &
1227 &
ocean(ng)%rzetaG, &
1228 &
ocean(ng)%rzeta(:,:,k), &
1229 & update)
1231
1233 & lbi, ubi, lbj, ubj, &
1234 &
ocean(ng)%rubarG, &
1235 &
ocean(ng)%rubar(:,:,k), &
1236 & update)
1238
1240 & lbi, ubi, lbj, ubj, &
1241 &
ocean(ng)%rvbarG, &
1242 &
ocean(ng)%rvbar(:,:,k), &
1243 & update)
1245 END DO
1246# endif
1247
1248# ifdef SOLVE3D
1249
1250
1251
1253 & lbi, ubi, lbj, ubj, &
1256 & update)
1258
1260 & lbi, ubi, lbj, ubj, &
1263 & update)
1265
1267 & lbi, ubi, lbj, ubj, &
1270 & update)
1272
1274 & lbi, ubi, lbj, ubj, &
1277 & update)
1279
1280
1281
1282 DO k=1,2
1284 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1286 &
ocean(ng)%u(:,:,:,k), &
1287 & update)
1289
1291 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1293 &
ocean(ng)%v(:,:,:,k), &
1294 & update)
1296 END DO
1297
1298# ifdef FORWARD_RHS
1299
1300
1301
1302 DO k=1,2
1304 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1306 &
ocean(ng)%ru(:,:,:,k), &
1307 & update)
1309
1311 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1313 &
ocean(ng)%rv(:,:,:,k), &
1314 & update)
1316 END DO
1317# endif
1318
1319
1320
1322 DO k=1,3
1324 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1325 &
ocean(ng)%tG(:,:,:,:,itrc), &
1326 &
ocean(ng)%t(:,:,:,k,itrc), &
1327 & update)
1329 END DO
1330 END DO
1331
1332# ifdef FORWARD_MIXING
1333
1334
1335
1338 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1339 &
mixing(ng)%AktG(:,:,:,:,itrc), &
1340 &
mixing(ng)%Akt(:,:,:,itrc), &
1341 & update)
1343 END DO
1344
1346 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1349 & update)
1351# endif
1352
1353# if defined MY25_MIXING_NOT_YET || defined GLS_MIXING_NOT_YET
1354
1355
1356
1357 DO k=1,3
1359 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1361 &
mixing(ng)%tke(:,:,:,k), &
1362 & update)
1364 END DO
1365
1366
1367
1368 DO k=1,3
1370 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1372 &
mixing(ng)%gls(:,:,:,k), &
1373 & update)
1375 END DO
1376
1377
1378
1380 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1383 & update)
1385
1386
1387
1389 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1392 & update)
1394
1395# ifdef GLS_MIXING_NOT_YET
1396
1397
1398
1400 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1403 & update)
1405# endif
1406# endif
1407
1408# ifdef LMD_MIXING_NOT_YET
1409
1410
1411
1413 & lbi, ubi, lbj, ubj, &
1416 & update)
1418# endif
1419
1420# ifdef LMD_BKPP_NOT_YET
1421
1422
1423
1425 & lbi, ubi, lbj, ubj, &
1428 & update)
1430# endif
1431
1432# ifdef LMD_NONLOCAL_NOT_YET
1433
1434
1435
1438 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1439 &
mixing(ng)%ghatsG(:,:,:,:,itrc), &
1440 &
mixing(ng)%ghat(:,:,:,itrc), &
1441 & update)
1443 END DO
1444# endif
1445# endif
1446# endif
1447
1448# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1449 defined opt_observations || defined sensitivity_4dvar || \
1450 defined so_semi
1451
1452
1453
1454
1455
1456
1457
1458# ifdef SENSITIVITY_4DVAR
1460# endif
1463 & lbi, ubi, lbj, ubj, &
1464 &
clima(ng)%zeta_adsG, &
1465 &
clima(ng)%zeta_ads, &
1466 & update)
1468 END IF
1469
1470
1471
1474 & lbi, ubi, lbj, ubj, &
1475 &
clima(ng)%ubar_adsG, &
1476 &
clima(ng)%ubar_ads, &
1477 & update)
1479 END IF
1480
1483 & lbi, ubi, lbj, ubj, &
1484 &
clima(ng)%vbar_adsG, &
1485 &
clima(ng)%vbar_ads, &
1486 & update)
1488 END IF
1489
1490# ifdef SOLVE3D
1491
1492
1493
1496 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1497 &
clima(ng)%u_adsG, &
1498 &
clima(ng)%u_ads, &
1499 & update)
1501 END IF
1502
1505 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1506 &
clima(ng)%v_adsG, &
1507 &
clima(ng)%v_ads, &
1508 & update)
1510 END IF
1511
1514 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1515 &
clima(ng)%wvel_adsG, &
1516 &
clima(ng)%wvel_ads, &
1517 & update)
1519 END IF
1520
1521
1522
1526 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1527 &
clima(ng)%t_adsG(:,:,:,:,itrc), &
1528 &
clima(ng)%t_ads(:,:,:,itrc), &
1529 & update)
1531 END IF
1532 END DO
1533# endif
1534# ifdef SENSITIVITY_4DVAR
1535 END IF
1536# endif
1537# endif
1538
1539# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS || \
1540 defined ad_sensitivity || defined i4dvar_ana_sensitivity || \
1541 defined opt_observations || defined sensitivity_4dvar || \
1542 defined so_semi
1543
1544
1545
1546
1547
1548
1549
1550 DO j=jstrr,jendr
1551 DO i=istrr,iendr
1552 forces(ng)%ad_sustr(i,j)=0.0_r8
1553 forces(ng)%ad_svstr(i,j)=0.0_r8
1554 END DO
1555 END DO
1556# ifdef SOLVE3D
1558 DO j=jstrr,jendr
1559 DO i=istrr,iendr
1560 forces(ng)%ad_stflx(i,j,itrc)=0.0_r8
1561 forces(ng)%ad_btflx(i,j,itrc)=0.0_r8
1562 END DO
1563 END DO
1564 END DO
1565# ifdef SHORTWAVE
1566 DO j=jstrr,jendr
1567 DO i=istrr,iendr
1568 forces(ng)%ad_srflx(i,j)=0.0_r8
1569 END DO
1570 END DO
1571# endif
1572# ifdef BULK_FLUXES
1573 DO j=jstrr,jendr
1574 DO i=istrr,iendr
1575 forces(ng)%ad_lhflx(i,j)=0.0_r8
1576 forces(ng)%ad_shflx(i,j)=0.0_r8
1577 forces(ng)%ad_lrflx(i,j)=0.0_r8
1578# ifdef EMINUSP
1579 forces(ng)%ad_evap(i,j)=0.0_r8
1580# endif
1581 END DO
1582 END DO
1583# endif
1584# endif
1585# endif
1586
1587 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
logical, dimension(:), allocatable lsen4dvar
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(2) idghat
integer, dimension(:,:,:), allocatable iinfo
integer, dimension(:), allocatable idtads
integer, dimension(4) idv2bc
integer, dimension(:,:), allocatable idtbry
type(t_ocean), dimension(:), allocatable ocean
type(t_lbc), dimension(:,:,:), allocatable ad_lbc
integer, dimension(:), allocatable n
type(t_bounds), dimension(:), allocatable bounds
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 lwsrc
integer, parameter isouth
type(t_scalars), dimension(:), allocatable scalars
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_2dfldr_tile(ng, tile, model, ifield, lbi, ubi, lbj, ubj, finp, fout, update, setbc)
subroutine set_3dfldr_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_ngfldr(ng, model, ifield, lbi, ubi, ubj, istr, iend, jrec, finp, fout, update)