22#if defined HYPOXIA_SRM || defined RED_TIDE
31#if defined HYPOXIA_SRM || \
32 defined nlm_outer || \
34 defined rbl4dvar_ana_sensitivity || \
35 defined rbl4dvar_fct_sensitivity || \
38 defined tlm_check || \
52 integer,
intent(in) :: ng
58 logical,
save :: recordless = .false.
60 logical,
dimension(3) :: update = (/ .false., .false., .false. /)
62 integer :: ILB, IUB, JLB, JUB
63 integer :: LBi, UBi, LBj, UBj
64 integer :: i, ic, my_tile
66 character (len=*),
parameter :: MyFile = &
72 ilb=
bounds(ng)%LBi(my_tile)
73 iub=
bounds(ng)%UBi(my_tile)
74 jlb=
bounds(ng)%LBj(my_tile)
75 jub=
bounds(ng)%UBj(my_tile)
79 lbi=lbound(
grid(ng)%h,dim=1)
80 ubi=ubound(
grid(ng)%h,dim=1)
81 lbj=lbound(
grid(ng)%h,dim=2)
82 ubj=ubound(
grid(ng)%h,dim=2)
103# if defined PIO_LIB && defined DISTRIBUTE
106 & 1,
ssf(ng), recordless, update(1), &
107 & 1,
nsrc(ng), 1, 2, 1,
nsrc(ng), 1, &
119# if defined PIO_LIB && defined DISTRIBUTE
122 & 1,
ssf(ng), recordless, update(1), &
123 & 1,
nsrc(ng),
n(ng), 2, 1,
nsrc(ng),
n(ng), &
124 &
sources(ng) % TsrcG(:,:,:,i))
137#if defined FOUR_DVAR && \
138 defined bulk_fluxes && defined prior_bulk_fluxes
153#if !(defined ANA_WINDS || defined FRC_COUPLING) && \
154 (defined bulk_fluxes || defined ecosim)
160# if defined PIO_LIB && defined DISTRIBUTE
164 & lbi, ubi, lbj, ubj, 2, 1, &
166 &
grid(ng) % rmask, &
172# if defined PIO_LIB && defined DISTRIBUTE
176 & lbi, ubi, lbj, ubj, 2, 1, &
178 &
grid(ng) % rmask, &
185#if !(defined ANA_SMFLUX || defined FRC_COUPLING || defined BULK_FLUXES)
191# if defined PIO_LIB && defined DISTRIBUTE
195 & lbi, ubi, lbj, ubj, 2, 1, &
197 &
grid(ng) % umask, &
203# if defined PIO_LIB && defined DISTRIBUTE
207 & lbi, ubi, lbj, ubj, 2, 1, &
209 &
grid(ng) % vmask, &
216#if !(defined ANA_PAIR || defined FRC_COUPLING) && \
217 (defined bulk_fluxes || defined ecosim || defined atm_press)
223# if defined PIO_LIB && defined DISTRIBUTE
227 & lbi, ubi, lbj, ubj, 2, 1, &
229 &
grid(ng) % rmask, &
236#if !defined ANA_WWAVE && defined WAVE_DATA
242# if defined PIO_LIB && defined DISTRIBUTE
246 & lbi, ubi, lbj, ubj, 2, 1, &
248 &
grid(ng) % rmask, &
257# if defined PIO_LIB && defined DISTRIBUTE
261 & lbi, ubi, lbj, ubj, 2, 1, &
263 &
grid(ng) % rmask, &
272# if defined PIO_LIB && defined DISTRIBUTE
276 & lbi, ubi, lbj, ubj, 2, 1, &
278 &
grid(ng) % rmask, &
287# if defined PIO_LIB && defined DISTRIBUTE
291 & lbi, ubi, lbj, ubj, 2, 1, &
293 &
grid(ng) % rmask, &
302# if defined PIO_LIB && defined DISTRIBUTE
306 & lbi, ubi, lbj, ubj, 2, 1, &
308 &
grid(ng) % rmask, &
314# ifdef WAVES_TOP_PERIOD
317# if defined PIO_LIB && defined DISTRIBUTE
321 & lbi, ubi, lbj, ubj, 2, 1, &
323 &
grid(ng) % rmask, &
325 &
forces(ng) % Pwave_topG)
329# ifdef WAVES_BOT_PERIOD
332# if defined PIO_LIB && defined DISTRIBUTE
336 & lbi, ubi, lbj, ubj, 2, 1, &
338 &
grid(ng) % rmask, &
340 &
forces(ng) % Pwave_botG(:,:,1))
347# if defined PIO_LIB && defined DISTRIBUTE
351 & lbi, ubi, lbj, ubj, 2, 1, &
353 &
grid(ng) % rmask, &
355 &
forces(ng) % Uwave_rmsG)
362# if defined PIO_LIB && defined DISTRIBUTE
366 & lbi, ubi, lbj, ubj, 2, 1, &
368 &
grid(ng) % rmask, &
370 &
forces(ng) % Dissip_breakG)
374# if defined PIO_LIB && defined DISTRIBUTE
378 & lbi, ubi, lbj, ubj, 2, 1, &
380 &
grid(ng) % rmask, &
382 &
forces(ng) % Dissip_wcapG)
386# ifdef ROLLER_SVENDSEN
389# if defined PIO_LIB && defined DISTRIBUTE
393 & lbi, ubi, lbj, ubj, 2, 1, &
395 &
grid(ng) % rmask, &
397 &
forces(ng) % Wave_breakG)
404# if !(defined ANA_CLOUD || defined FRC_COUPLING) && defined CLOUDS
409# if defined PIO_LIB && defined DISTRIBUTE
413 & lbi, ubi, lbj, ubj, 2, 1, &
415 &
grid(ng) % rmask, &
421# if !(defined ANA_SRFLUX || defined FRC_COUPLING) && defined SHORTWAVE
427# if defined PIO_LIB && defined DISTRIBUTE
431 & lbi, ubi, lbj, ubj, 2, 1, &
433 &
grid(ng) % rmask, &
440# if defined RED_TIDE && defined DAILY_SHORTWAVE
445# if defined PIO_LIB && defined DISTRIBUTE
449 & lbi, ubi, lbj, ubj, 2, 1, &
451 &
grid(ng) % rmask, &
453 &
forces(ng) % srflxG_avg)
457# if defined BULK_FLUXES && \
464# if defined PIO_LIB && defined DISTRIBUTE
468 & lbi, ubi, lbj, ubj, 2, 1, &
470 &
grid(ng) % rmask, &
477# if defined BULK_FLUXES && defined LONGWAVE_OUT && \
484# if defined PIO_LIB && defined DISTRIBUTE
488 & lbi, ubi, lbj, ubj, 2, 1, &
490 &
grid(ng) % rmask, &
497# if !(defined ANA_TAIR || defined FRC_COUPLING) && \
498 ( defined bulk_fluxes || defined ecosim || \
499 (defined shortwave && defined ana_srflux && defined albedo) )
505# if defined PIO_LIB && defined DISTRIBUTE
509 & lbi, ubi, lbj, ubj, 2, 1, &
511 &
grid(ng) % rmask, &
518# if !(defined ANA_HUMIDITY || defined FRC_COUPLING) && \
519 (defined bulk_fluxes || defined ecosim)
525# if defined PIO_LIB && defined DISTRIBUTE
529 & lbi, ubi, lbj, ubj, 2, 1, &
531 &
grid(ng) % rmask, &
538# if !(defined ANA_RAIN || defined FRC_COUPLING) && defined BULK_FLUXES
544# if defined PIO_LIB && defined DISTRIBUTE
548 & lbi, ubi, lbj, ubj, 2, 1, &
550 &
grid(ng) % rmask, &
557# if !(defined ANA_STFLUX || defined FRC_COUPLING || \
565# if defined PIO_LIB && defined DISTRIBUTE
569 & lbi, ubi, lbj, ubj, 2, 1, &
571 &
grid(ng) % rmask, &
578# if !defined ANA_SST && defined QCORRECTION
584# if defined PIO_LIB && defined DISTRIBUTE
588 & lbi, ubi, lbj, ubj, 2, 1, &
590 &
grid(ng) % rmask, &
596# if !defined ANA_DQDSST && defined QCORRECTION
602# if defined PIO_LIB && defined DISTRIBUTE
606 & lbi, ubi, lbj, ubj, 2, 1, &
608 &
grid(ng) % rmask, &
620# if defined PIO_LIB && defined DISTRIBUTE
624 & lbi, ubi, lbj, ubj, 2, 1, &
626 &
grid(ng) % rmask, &
632# if !defined ANA_SSFLUX && defined SALINITY
633# if !(defined BULK_FLUXES || defined EMINUSP || \
634 defined frc_coupling)
640# if defined PIO_LIB && defined DISTRIBUTE
644 & lbi, ubi, lbj, ubj, 2, 1, &
646 &
grid(ng) % rmask, &
652# elif defined BULK_FLUXES && !defined EMINUSP
658# if defined PIO_LIB && defined DISTRIBUTE
662 & lbi, ubi, lbj, ubj, 2, 1, &
664 &
grid(ng) % rmask, &
671# if !defined ANA_SSS && (defined SCORRECTION || defined SRELAXATION)
676# if defined PIO_LIB && defined DISTRIBUTE
680 & lbi, ubi, lbj, ubj, 2, 1, &
682 &
grid(ng) % rmask, &
694# if defined PIO_LIB && defined DISTRIBUTE
698 & lbi, ubi, lbj, ubj, 2, 1, &
700 &
grid(ng) % rmask, &
707# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
714# if defined PIO_LIB && defined DISTRIBUTE
718 & lbi, ubi, lbj, ubj, 2, 1, &
720 &
grid(ng) % rmask, &
722 &
forces(ng) % stfluxG(:,:,:,i))
733# if defined PIO_LIB && defined DISTRIBUTE
737 & lbi, ubi, lbj, ubj, 2, 1, &
739 &
grid(ng) % rmask, &
741 &
forces(ng) % btfluxG(:,:,:,i))
748#if !defined ANA_RESPIRATION && defined HYPOXIA_SRM
753# if defined PIO_LIB && defined DISTRIBUTE
757 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
759 &
grid(ng) % rmask, &
761 &
ocean(ng) % respirationG)
770# if defined PIO_LIB && defined DISTRIBUTE
774 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
776 &
grid(ng) % rmask, &
778 &
ocean(ng) % DIN_obsG)
782#if defined FOUR_DVAR && \
783 defined bulk_fluxes && defined prior_bulk_fluxes
798 IF (.not.lprocess)
THEN
803# if defined PIO_LIB && defined DISTRIBUTE
806 & 1,
blk(ng), update(1), &
807 & lbi, ubi, lbj, ubj, 2, 1, &
809 &
grid(ng) % umask, &
815# if defined PIO_LIB && defined DISTRIBUTE
818 & 1,
blk(ng), update(1), &
819 & lbi, ubi, lbj, ubj, 2, 1, &
821 &
grid(ng) % vmask, &
831# if defined PIO_LIB && defined DISTRIBUTE
834 & 1,
blk(ng), update(1), &
835 & lbi, ubi, lbj, ubj, 2, 1, &
837 &
grid(ng) % rmask, &
851# if defined PIO_LIB && defined DISTRIBUTE
854 & 1,
blk(ng), update(1), &
855 & lbi, ubi, lbj, ubj, 2, 1, &
857 &
grid(ng) % rmask, &
866# if defined PIO_LIB && defined DISTRIBUTE
869 & 1,
blk(ng), update(1), &
870 & lbi, ubi, lbj, ubj, 2, 1, &
872 &
grid(ng) % rmask, &
883# if defined PIO_LIB && defined DISTRIBUTE
886 & 1,
blk(ng), update(1), &
887 & lbi, ubi, lbj, ubj, 2, 1, &
889 &
grid(ng) % rmask, &
910# if defined PIO_LIB && defined DISTRIBUTE
914 & recordless, update(1), &
915 & jlb, jub, 1, 2, 0,
mm(ng)+1, 1, &
923# if defined PIO_LIB && defined DISTRIBUTE
927 & recordless, update(1), &
928 & jlb, jub, 1, 2, 0,
mm(ng)+1, 1, &
936# if defined PIO_LIB && defined DISTRIBUTE
940 & recordless, update(1), &
941 & ilb, iub, 1, 2, 0,
lm(ng)+1, 1, &
949# if defined PIO_LIB && defined DISTRIBUTE
953 & recordless, update(1), &
954 & ilb, iub, 1, 2, 0,
lm(ng)+1, 1, &
969# if defined PIO_LIB && defined DISTRIBUTE
973 & recordless, update(1), &
974 & jlb, jub, 1, 2, 0,
mm(ng)+1, 1, &
982# if defined PIO_LIB && defined DISTRIBUTE
986 & recordless, update(1), &
987 & jlb, jub, 1, 2, 1,
mm(ng)+1, 1, &
995# if defined PIO_LIB && defined DISTRIBUTE
999 & recordless, update(1), &
1000 & jlb, jub, 1, 2, 0,
mm(ng)+1, 1, &
1008# if defined PIO_LIB && defined DISTRIBUTE
1012 & recordless, update(1), &
1013 & jlb, jub, 1, 2, 1,
mm(ng)+1, 1, &
1021# if defined PIO_LIB && defined DISTRIBUTE
1025 & recordless, update(1), &
1026 & ilb, iub, 1, 2, 1,
lm(ng)+1, 1, &
1034# if defined PIO_LIB && defined DISTRIBUTE
1038 & recordless, update(1), &
1039 & ilb, iub, 1, 2, 0,
lm(ng)+1, 1, &
1047# if defined PIO_LIB && defined DISTRIBUTE
1051 & recordless, update(1), &
1052 & ilb, iub, 1, 2, 1,
lm(ng)+1, 1, &
1060# if defined PIO_LIB && defined DISTRIBUTE
1064 & recordless, update(1), &
1065 & ilb, iub, 1, 2, 0,
lm(ng)+1, 1, &
1081# if defined PIO_LIB && defined DISTRIBUTE
1085 & recordless, update(1), &
1086 & jlb, jub,
n(ng), 2, 0,
mm(ng)+1,
n(ng), &
1094# if defined PIO_LIB && defined DISTRIBUTE
1098 & recordless, update(1), &
1099 & jlb, jub,
n(ng), 2, 1,
mm(ng)+1,
n(ng), &
1107# if defined PIO_LIB && defined DISTRIBUTE
1111 & recordless, update(1), &
1112 & jlb, jub,
n(ng), 2, 0,
mm(ng)+1,
n(ng), &
1120# if defined PIO_LIB && defined DISTRIBUTE
1124 & recordless, update(1), &
1125 & jlb, jub,
n(ng), 2, 1,
mm(ng)+1,
n(ng), &
1133# if defined PIO_LIB && defined DISTRIBUTE
1137 & recordless, update(1), &
1138 & ilb, iub,
n(ng), 2, 1,
lm(ng)+1,
n(ng), &
1146# if defined PIO_LIB && defined DISTRIBUTE
1150 & recordless, update(1), &
1151 & ilb, iub,
n(ng), 2, 0,
lm(ng)+1,
n(ng), &
1159# if defined PIO_LIB && defined DISTRIBUTE
1163 & recordless, update(1), &
1164 & ilb, iub,
n(ng), 2, 1,
lm(ng)+1,
n(ng), &
1172# if defined PIO_LIB && defined DISTRIBUTE
1176 & recordless, update(1), &
1177 & ilb, iub,
n(ng), 2, 0,
lm(ng)+1,
n(ng), &
1193# if defined PIO_LIB && defined DISTRIBUTE
1197 & recordless, update(1), &
1198 & jlb, jub,
n(ng), 2, 0,
mm(ng)+1,
n(ng), &
1208# if defined PIO_LIB && defined DISTRIBUTE
1212 & recordless, update(1), &
1213 & jlb, jub,
n(ng), 2, 0,
mm(ng)+1,
n(ng), &
1223# if defined PIO_LIB && defined DISTRIBUTE
1227 & recordless, update(1), &
1228 & ilb, iub,
n(ng), 2, 0,
lm(ng)+1,
n(ng), &
1229 &
boundary(ng) % tG_south(:,:,:,i))
1238# if defined PIO_LIB && defined DISTRIBUTE
1242 & recordless, update(1), &
1243 & ilb, iub,
n(ng), 2, 0,
lm(ng)+1,
n(ng), &
1244 &
boundary(ng) % tG_north(:,:,:,i))
1262# if defined PIO_LIB && defined DISTRIBUTE
1266 & lbi, ubi, lbj, ubj, 2, 1, &
1268 &
grid(ng) % rmask, &
1280# if defined PIO_LIB && defined DISTRIBUTE
1284 & lbi, ubi, lbj, ubj, 2, 1, &
1286 &
grid(ng) % umask, &
1288 &
clima(ng) % ubarclmG)
1292# if defined PIO_LIB && defined DISTRIBUTE
1296 & lbi, ubi, lbj, ubj, 2, 1, &
1298 &
grid(ng) % vmask, &
1300 &
clima(ng) % vbarclmG)
1311# if defined PIO_LIB && defined DISTRIBUTE
1315 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1317 &
grid(ng) % umask, &
1319 &
clima(ng) % uclmG)
1323# if defined PIO_LIB && defined DISTRIBUTE
1327 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1329 &
grid(ng) % vmask, &
1331 &
clima(ng) % vclmG)
1345# if defined PIO_LIB && defined DISTRIBUTE
1349 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1351 &
grid(ng) % rmask, &
1353 &
clima(ng) % tclmG(:,:,:,:,ic))
1369 IF (
outer.ge.1)
THEN
1374# if defined PIO_LIB && defined DISTRIBUTE
1375 &
fwd(ng)%pioFile, &
1377 & 1,
fwd(ng), update(1), &
1378 & lbi, ubi, lbj, ubj, 2, 1, &
1380 &
grid(ng) % rmask, &
1382 &
ocean(ng) % zetaG)
1388# if defined PIO_LIB && defined DISTRIBUTE
1389 &
fwd(ng)%pioFile, &
1391 & 1,
fwd(ng), update(1), &
1392 & lbi, ubi, lbj, ubj, 2, 1, &
1394 &
grid(ng) % umask, &
1396 &
ocean(ng) % ubarG)
1400# if defined PIO_LIB && defined DISTRIBUTE
1401 &
fwd(ng)%pioFile, &
1403 & 1,
fwd(ng), update(1), &
1404 & lbi, ubi, lbj, ubj, 2, 1, &
1406 &
grid(ng) % vmask, &
1408 &
ocean(ng) % vbarG)
1415# if defined PIO_LIB && defined DISTRIBUTE
1416 &
fwd(ng)%pioFile, &
1418 & 1,
fwd(ng), update(1), &
1419 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1421 &
grid(ng) % umask, &
1427# if defined PIO_LIB && defined DISTRIBUTE
1428 &
fwd(ng)%pioFile, &
1430 & 1,
fwd(ng), update(1), &
1431 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1433 &
grid(ng) % vmask, &
1442# if defined PIO_LIB && defined DISTRIBUTE
1443 &
fwd(ng)%pioFile, &
1445 & 1,
fwd(ng), update(1), &
1446 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1448 &
grid(ng) % rmask, &
1450 &
ocean(ng) % tG(:,:,:,:,i))
1457#if defined NLM_OUTER || \
1458 defined rbl4dvar || \
1459 defined rbl4dvar_ana_sensitivity || \
1460 defined rbl4dvar_fct_sensitivity || \
1461 defined sp4dvar || \
1474# if defined PIO_LIB && defined DISTRIBUTE
1475 &
tlf(ng)%pioFile, &
1477 & 1,
tlf(ng), update(1), &
1478 & lbi, ubi, lbj, ubj, 2, 1, &
1480 &
grid(ng) % rmask, &
1482 &
ocean(ng) % zetaG)
1490# if defined PIO_LIB && defined DISTRIBUTE
1491 &
tlf(ng)%pioFile, &
1493 & 1,
tlf(ng), update(1), &
1494 & lbi, ubi, lbj, ubj, 2, 1, &
1496 &
grid(ng) % umask, &
1498 &
ocean(ng) % ubarG)
1502# if defined PIO_LIB && defined DISTRIBUTE
1503 &
tlf(ng)%pioFile, &
1505 & 1,
tlf(ng), update(1), &
1506 & lbi, ubi, lbj, ubj, 2, 1, &
1508 &
grid(ng) % vmask, &
1510 &
ocean(ng) % vbarG)
1517# if defined PIO_LIB && defined DISTRIBUTE
1518 &
tlf(ng)%pioFile, &
1520 & 1,
tlf(ng), update(1), &
1521 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1523 &
grid(ng) % umask, &
1529# if defined PIO_LIB && defined DISTRIBUTE
1530 &
tlf(ng)%pioFile, &
1532 & 1,
tlf(ng), update(1), &
1533 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1535 &
grid(ng) % vmask, &
1544# if defined PIO_LIB && defined DISTRIBUTE
1545 &
tlf(ng)%pioFile, &
1547 & 1,
tlf(ng), update(1), &
1548 & lbi, ubi, lbj, ubj, 1,
n(ng), 2, 1, &
1550 &
grid(ng) % rmask, &
1552 &
ocean(ng) % tG(:,:,:,:,i))