3
4
5
6
7
8
9
10
11
12
13
14
17#ifdef BIOLOGY
19#endif
20#ifdef ICE_MODEL
22#endif
23#if defined MODEL_COUPLING && defined MCT_LIB
25#endif
26#if defined FOUR_DVAR || defined VERIFICATION
28#endif
31#ifdef NESTING
33#endif
35#if defined PIO_LIB && defined DISTRIBUTE
37#endif
39#if defined SEDIMENT || defined BBL_MODEL
41#endif
43#ifdef PROPAGATOR
45#endif
47
49#if defined DISTRIBUTE && defined PIO_LIB
51#endif
52
55
56 implicit none
57
58
59
60 logical, intent(inout) :: Lwrite
61
62 integer, intent(in) :: model, inp, out
63
64
65
66 logical :: got_Ngrids, got_NestLayers
67 logical :: obc_data
68 logical :: Lvalue(1)
69#if defined SOLVE3D && defined SEDIMENT
70 logical :: LreadNCS = .false.
71 logical :: LreadNNS = .false.
72#endif
73 logical, allocatable :: Lswitch(:)
74#if defined SOLVE3D && defined T_PASSIVE
75 logical, allocatable :: Linert(:,:)
76#endif
77#if defined SOLVE3D && (defined BBL_MODEL || defined SEDIMENT)
78 logical, allocatable :: Lbottom(:,:)
79#endif
80 logical, allocatable :: Ltracer(:,:)
81#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
82 defined forcing_sv || defined opt_observations || \
83 defined sensitivity_4dvar || defined so_semi || \
84 defined stochastic_opt
85# ifndef OBS_SPACE
86 logical, allocatable :: Ladsen(:)
87# endif
88#endif
89
90 integer :: Npts, Nval, i, itrc, ivar, k, lstr, ng, nl, status
91 integer :: ifield, ifile, igrid, itracer, nline, max_Ffiles
92 integer :: ibcfile, iclmfile
93 integer :: Cdim, Clen, Rdim
94 integer :: nPETs, maxPETs
95 integer :: OutFiles
96 integer :: Ivalue(1)
97#ifdef ICE_MODEL
98 integer :: ioff
99#endif
100
101 integer, allocatable :: Nfiles(:)
102 integer, allocatable :: Ncount(:,:)
103 integer, allocatable :: NBCcount(:,:)
104 integer, allocatable :: NCLMcount(:,:)
105
106 real(dp), allocatable :: Dtracer(:,:)
107 real(r8), allocatable :: Rtracer(:,:)
108 real(r8), allocatable :: tracer(:,:)
109#ifdef NESTING
110 real(r8), allocatable :: RunTimeDay(:), RunTimeSec(:)
111#endif
112 real(dp) :: Dvalue(1)
113 real(r8) :: Rvalue(1)
114
115 real(dp), dimension(nRval) :: Rval
116
117 character (len=1 ), parameter :: blank = ' '
118 character (len=40 ) :: KeyWord
119 character (len=50 ) :: label
120 character (len=80 ) :: text
121 character (len=256) :: fname, line
122 character (len=256), dimension(nCval) :: Cval
123
124 character (len=*), parameter :: MyFile = &
125 & __FILE__
126
127
128
129
130
131 ifile=1
132 ibcfile=1
133 iclmfile=1
134 igrid=1
135 itracer=0
136 nline=0
137 DO i=1,len(label)
138 label(i:i)=blank
139 END DO
140 got_ngrids=.false.
141 got_nestlayers=.false.
142 cdim=SIZE(cval,1)
143 clen=len(cval(1))
144 rdim=SIZE(rval,1)
145 nval=0
146
147
148
149
150
151
152 DO WHILE (.true.)
153 READ (inp,
'(a)',
err=10,
END=20) line
154 status=
decode_line(line, keyword, nval, cval, rval)
155 IF (status.gt.0) THEN
156 SELECT CASE (trim(keyword))
157 CASE ('TITLE')
158 IF (nval.eq.1) THEN
159 title=trim(adjustl(cval(nval)))
160 ELSE
161 WRITE(
title,
'(a,1x,a)') trim(adjustl(
title)), &
162 & trim(adjustl(cval(nval)))
163 END IF
164 CASE ('MyAppCPP')
167 END DO
169 CASE ('VARNAME')
172 END DO
173 varname=trim(adjustl(cval(nval)))
174 CASE ('Ngrids')
175 npts=
load_i(nval, rval, 1, ivalue)
179 & 'must be greater than zero.'
181 RETURN
182 END IF
183 got_ngrids=.true.
188#if defined PIO_LIB && defined DISTRIBUTE
191 END IF
192#endif
193#if defined FOUR_DVAR || defined VERIFICATION
195#endif
196 IF (.not.allocated(lswitch)) THEN
197 allocate ( lswitch(
ngrids) )
198 END IF
199#if defined SOLVE3D && (defined BBL_MODEL || defined SEDIMENT)
200 IF (.not.allocated(lbottom)) THEN
202 END IF
203#endif
204 IF (.not.allocated(nfiles)) THEN
205 allocate ( nfiles(
ngrids) )
207 END IF
208 CASE ('NestLayers')
209 npts=
load_i(nval, rval, 1, ivalue)
213 & 'must be greater or equal than one.'
215 RETURN
216 END IF
217#ifndef NESTING
220 & 'must be equal to one in non-nesting applications.'
222 RETURN
223 END IF
224#endif
225 got_nestlayers=.true.
228#ifndef NESTING
230#endif
231 END IF
235 END IF
236 CASE ('GridsInLayer')
237 IF (.not.got_nestlayers) THEN
238 IF (
master)
WRITE (out,320)
'NestLayers', &
239 & 'Add "NestLayers" keyword before GridsInLayer.'
241 RETURN
242 END IF
244 ng=0
247 ng=ng+1
249 END DO
250 END DO
251 CASE ('Lm')
252 IF (.not.got_ngrids) THEN
253 IF (
master)
WRITE (out,320)
'Ngrids', &
254 & 'Add "Ngrids" keyword before grid dimension (Lm, Mm).'
256 RETURN
257 END IF
260 IF (
lm(ng).le.0)
THEN
261 IF (
master)
WRITE (out,300)
'Lm', ng, &
262 & 'must be greater than zero.'
264 RETURN
265 END IF
266 END DO
267 CASE ('Mm')
270 IF (
mm(ng).le.0)
THEN
271 IF (
master)
WRITE (out,300)
'Mm', ng, &
272 & 'must be greater than zero.'
274 RETURN
275 END IF
276 END DO
277 CASE ('N')
281 IF (
master)
WRITE (out,300)
'N', ng, &
282 & 'must be greater than zero.'
284 RETURN
285 END IF
286 END DO
287#if defined SEDIMENT && defined SOLVE3D
288 CASE ('Nbed')
289 npts=
load_i(nval, rval, 1, ivalue)
292 IF (
master)
WRITE (out,290)
'Nbed = ',
nbed, &
293 & 'must be greater than zero.'
295 RETURN
296 END IF
297#endif
298#ifdef SOLVE3D
299 CASE ('NAT')
300 npts=
load_i(nval, rval, 1, ivalue)
302 IF ((
nat.lt.1).or.(
nat.gt.2))
THEN
303 IF (
master)
WRITE (out,290)
'NAT = ',
nat, &
304 & 'make sure that NAT is either 1 or 2.'
306 RETURN
307 END IF
308# ifdef SALINITY
310 IF (
master)
WRITE (out,290)
'NAT = ',
nat, &
311 & 'make sure that NAT is equal to 2.'
313 RETURN
314 END IF
315# endif
316#endif
317#if defined T_PASSIVE && defined SOLVE3D
318 CASE ('NPT')
319 npts=
load_i(nval, rval, 1, ivalue)
322 IF (
master)
WRITE (out,290)
'NPT = ',
npt, &
323 & 'must be greater than zero.'
325 RETURN
326 END IF
327# ifdef AGE_MEAN
328 IF (mod(
npt,2).ne.0)
THEN
329 IF (
master)
WRITE (out,290)
'NPT = ',
npt, &
330 & 'must be an even number when Mean Age is activated.'
332 RETURN
333 END IF
334# endif
335#endif
336#if defined SEDIMENT && defined SOLVE3D
337 CASE ('NCS')
338 npts=
load_i(nval, rval, 1, ivalue)
341 IF (
master)
WRITE (out,290)
'NCS = ',
ncs, &
342 & 'must be greater than zero.'
344 RETURN
345 END IF
346 lreadncs=.true.
347 IF (lreadnns.and.((
ncs+
nns).le.0))
THEN
349 & 'either NCS or NNS must be greater than zero.'
351 RETURN
352 END IF
354 CASE ('NNS')
355 npts=
load_i(nval, rval, 1, ivalue)
358 IF (
master)
WRITE (out,290)
'NNS = ', &
359 & 'must be greater than zero.'
361 RETURN
362 END IF
363 lreadnns=.true.
364 IF (lreadncs.and.((
ncs+
nns).le.0))
THEN
366 & 'either NCS or NNS must be greater than zero.'
368 RETURN
369 END IF
371#endif
372 CASE ('NtileI')
375 CASE ('NtileJ')
378#ifdef BIOLOGY
380#endif
381#if defined SEDIMENT || defined BBL_MODEL
383#endif
389#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
390 defined forcing_sv || defined opt_observations || \
391 defined sensitivity_4dvar || defined so_semi || \
392 defined stochastic_opt
393# ifndef OBS_SPACE
394 IF (.not.allocated(ladsen)) THEN
396 END IF
397# endif
398#endif
399 IF (.not.allocated(ltracer)) THEN
401 END IF
402#if defined SOLVE3D && defined T_PASSIVE
403 IF (.not.allocated(linert)) THEN
405 END IF
406 IF (maxval(
inert).eq.0)
THEN
407 IF (
master)
WRITE (out,280)
'inert'
409 RETURN
410 END IF
411#endif
412 IF (.not.allocated(dtracer)) THEN
414 END IF
415 IF (.not.allocated(rtracer)) THEN
417 END IF
418 IF (.not.allocated(tracer)) THEN
420 END IF
421#ifdef SOLVE3D
422 CASE ('Hadvection')
423 IF (itracer.lt.(
nat+
npt))
THEN
424 itracer=itracer+1
425 ELSE
426 itracer=1
427 END IF
428 itrc=itracer
429 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
434 & __line__, myfile)) RETURN
435 CASE ('Vadvection')
436 IF (itracer.lt.(
nat+
npt))
THEN
437 itracer=itracer+1
438 ELSE
439 itracer=1
440 END IF
441 itrc=itracer
442 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
447 & __line__, myfile)) RETURN
448# if defined ADJOINT || defined TANGENT || defined TL_IOMS
449 CASE ('ad_Hadvection')
450 IF (itracer.lt.(
nat+
npt))
THEN
451 itracer=itracer+1
452 ELSE
453 itracer=1
454 END IF
455 itrc=itracer
456 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
461 & __line__, myfile)) RETURN
462 CASE ('ad_Vadvection')
463 IF (itracer.lt.(
nat+
npt))
THEN
464 itracer=itracer+1
465 ELSE
466 itracer=1
467 END IF
468 itrc=itracer
469 npts=
load_tadv(nval, cval, line, nline, itrc, igrid, &
474 & __line__, myfile)) RETURN
475# endif
476#endif
477 CASE ('LBC(isFsur)')
480 CASE ('LBC(isUbar)')
483 CASE ('LBC(isVbar)')
486#ifdef WEC
487 CASE ('LBC(isU2Sd)')
488 npts=
load_lbc(nval, cval, line, nline, isu2sd, igrid, &
490 CASE ('LBC(isV2Sd)')
491 npts=
load_lbc(nval, cval, line, nline, isv2sd, igrid, &
493#endif
494#ifdef SOLVE3D
495 CASE ('LBC(isUvel)')
498 CASE ('LBC(isVvel)')
501# ifdef WEC
502 CASE ('LBC(isU3Sd)')
503 npts=
load_lbc(nval, cval, line, nline, isu3sd, igrid, &
505 CASE ('LBC(isV3Sd)')
506 npts=
load_lbc(nval, cval, line, nline, isv3sd, igrid, &
508# endif
509# if defined GLS_MIXING || defined MY25_MIXING
510 CASE ('LBC(isMtke)')
513# endif
514 CASE ('LBC(isTvar)')
515 IF (itracer.lt.(
nat+
npt))
THEN
516 itracer=itracer+1
517 ELSE
518 itracer=1
519 END IF
521 npts=
load_lbc(nval, cval, line, nline, ifield, igrid, &
523# ifdef ICE_MODEL
524 CASE ('LBC(isAice)')
526 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
528 CASE ('LBC(isHice)')
530 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
532 CASE ('LBC(isHsno)')
534 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
536 CASE ('LBC(isTice)')
538 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
540 CASE ('LBC(isHmel)')
542 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
544 CASE ('LBC(isIage)')
546 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
548 CASE ('LBC(isISxx)')
550 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
552 CASE ('LBC(isISxy)')
554 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
556 CASE ('LBC(isISyy)')
558 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
560 CASE ('LBC(isUice)')
562 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
564 CASE ('LBC(isVice)')
566 npts=
load_lbc(nval, cval, line, nline, ioff, igrid, &
568# endif
569#endif
570#if defined ADJOINT || defined TANGENT || defined TL_IOMS
571 CASE ('ad_LBC(isFsur)')
574 CASE ('ad_LBC(isUbar)')
577 CASE ('ad_LBC(isVbar)')
580# ifdef SOLVE3D
581 CASE ('ad_LBC(isUvel)')
584 CASE ('ad_LBC(isVvel)')
587# if defined GLS_MIXING || defined MY25_MIXING
588 CASE ('ad_LBC(isMtke)')
591# endif
592 CASE ('ad_LBC(isTvar)')
593 IF (itracer.lt.(
nat+
npt))
THEN
594 itracer=itracer+1
595 ELSE
596 itracer=1
597 END IF
599 npts=
load_lbc(nval, cval, line, nline, ifield, igrid, &
602# endif
603#endif
604 CASE ('VolCons(west)')
607 CASE ('VolCons(east)')
610 CASE ('VolCons(south)')
613 CASE ('VolCons(north)')
616#if defined ADJOINT || defined TANGENT || defined TL_IOMS
617 CASE ('ad_VolCons(west)')
621 CASE ('ad_VolCons(east)')
625 CASE ('ad_VolCons(south)')
629 CASE ('ad_VolCons(north)')
633#endif
634 CASE ('NTIMES')
636#ifdef RBL4DVAR_FCT_SENSITIVITY
637 CASE ('NTIMES_ANA')
639 CASE ('NTIMES_FCT')
641#endif
642 CASE ('DT')
644#if defined MODEL_COUPLING && defined MCT_LIB
648 END IF
654 END DO
655 END DO
656#endif
657 CASE ('NDTFAST')
659 CASE ('ERstr')
660 npts=
load_i(nval, rval, 1, ivalue)
662 CASE ('ERend')
663 npts=
load_i(nval, rval, 1, ivalue)
665 CASE ('Nouter')
666 npts=
load_i(nval, rval, 1, ivalue)
668 CASE ('Ninner')
669 npts=
load_i(nval, rval, 1, ivalue)
671 CASE ('Nsaddle')
672 npts=
load_i(nval, rval, 1, ivalue)
674 CASE ('Nintervals')
675 npts=
load_i(nval, rval, 1, ivalue)
677#ifdef PROPAGATOR
678 CASE ('NEV')
679 npts=
load_i(nval, rval, 1, ivalue)
681 CASE ('NCV')
682 npts=
load_i(nval, rval, 1, ivalue)
684# if defined FT_EIGENMMODES || defined AFT_EIGENMODES
685 IF (
ncv.lt.(2*
nev+1))
THEN
686 IF (
master)
WRITE (out,260)
'NCV = ',
ncv, &
687 & 'Must be greater than or equal to 2*NEV+1'
689 RETURN
690 END IF
691# else
693 IF (
master)
WRITE (out,260)
'NCV = ',
ncv, &
694 & 'Must be greater than NEV'
696 RETURN
697 END IF
698# endif
699#endif
700 CASE ('NRREC')
703 IF (
nrrec(ng).lt.0)
THEN
705 ELSE
707 END IF
708 END DO
709 CASE ('LcycleRST')
711 CASE ('NRST')
713 CASE ('NSTA')
715 CASE ('NFLT')
717 CASE ('NINFO')
720 IF (
ninfo(ng).le.0)
THEN
721 WRITE (text,'(a,i2.2,a)') 'ninfo(', ng, ') = '
722 IF (
master)
WRITE (out,260) trim(text),
ninfo(ng), &
723 & 'must be greater than zero.'
725 RETURN
726 END IF
727 END DO
728 CASE ('LDEFOUT')
730 CASE ('NHIS')
732 CASE ('NDEFHIS')
734 CASE ('NXTR')
736 CASE ('NDEFXTR')
738 CASE ('NQCK')
740#if defined FORWARD_FLUXES && \
741 (defined bulk_fluxes || defined frc_coupling)
743 IF (
nqck(ng).le.0)
THEN
744 WRITE (text,'(a,i2.2,a)') 'nQCK(', ng, ') = '
745 IF (
master)
WRITE (out,260) trim(text),
nqck(ng), &
746 & 'must be greater than zero because the QCK '// &
747 & 'file is used as surface forcing basic state.'
749 RETURN
750 END IF
751 END DO
752#endif
753 CASE ('NDEFQCK')
755 CASE ('NTSAVG')
757#ifdef ADJOINT
760 END DO
761#endif
762 CASE ('NAVG')
764 CASE ('NDEFAVG')
766 CASE ('NTSDIA')
768 CASE ('NDIA')
770 CASE ('NDEFDIA')
772 CASE ('LcycleTLM')
774 CASE ('NTLM')
776 CASE ('NDEFTLM')
778 CASE ('LcycleADJ')
780 CASE ('NADJ')
782 CASE ('NDEFADJ')
784 CASE ('NOBC')
786#ifdef ADJUST_BOUNDARY
787# ifdef RBL4DVAR_FCT_SENSITIVITY
790 END DO
792# else
795 END DO
797# endif
798#endif
799 CASE ('NSFF')
801#if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
802# ifdef RBL4DVAR_FCT_SENSITIVITY
805 END DO
807# else
810 END DO
812# endif
813#endif
814 CASE ('LmultiGST')
815 npts=
load_l(nval, cval, 1, lvalue)
817 CASE ('LrstGST')
818 npts=
load_l(nval, cval, 1, lvalue)
820 CASE ('MaxIterGST')
821 npts=
load_i(nval, rval, 1, ivalue)
823 CASE ('NGST')
824 npts=
load_i(nval, rval, 1, ivalue)
826#ifdef PROPAGATOR
827 CASE ('Ritz_tol')
828 npts=
load_r(nval, rval, 1, dvalue)
830#endif
831 CASE ('TNU2')
835 nl_tnu2(itrc,ng)=rtracer(itrc,ng)
836 END DO
837#ifdef T_PASSIVE
841 END DO
842#endif
843 END DO
844 CASE ('TNU4')
848 nl_tnu4(itrc,ng)=rtracer(itrc,ng)
849 END DO
850#ifdef T_PASSIVE
854 END DO
855#endif
856 END DO
857 CASE ('ad_TNU2')
861 ad_tnu2(itrc,ng)=rtracer(itrc,ng)
862 tl_tnu2(itrc,ng)=rtracer(itrc,ng)
863 END DO
864#ifdef T_PASSIVE
869 END DO
870#endif
871 END DO
872 CASE ('ad_TNU4')
876 ad_tnu4(itrc,ng)=rtracer(itrc,ng)
877 tl_tnu4(itrc,ng)=rtracer(itrc,ng)
878 END DO
879#ifdef T_PASSIVE
884 END DO
885#endif
886 END DO
887 CASE ('VISC2')
889 CASE ('VISC4')
891 CASE ('ad_VISC2')
895 END DO
896 CASE ('ad_VISC4')
900 END DO
901 CASE ('LuvSponge')
903#ifdef SOLVE3D
904 CASE ('LtracerSponge')
909 END DO
910# ifdef T_PASSIVE
914 END DO
915# endif
916 END DO
917#endif
918 CASE ('AKT_BAK')
922 akt_bak(itrc,ng)=rtracer(itrc,ng)
923 END DO
924# ifdef T_PASSIVE
928 END DO
929# endif
930 END DO
931 CASE ('AKT_LIMIT')
936 END DO
937 END DO
938 CASE ('ad_AKT_fac')
944 END DO
945# ifdef T_PASSIVE
950 END DO
951# endif
952 END DO
953 CASE ('AKV_BAK')
955 CASE ('AKV_LIMIT')
957 CASE ('ad_AKV_fac')
961 END DO
962 CASE ('AKK_BAK')
964 CASE ('AKP_BAK')
966 CASE ('TKENU2')
968 CASE ('TKENU4')
970 CASE ('GLS_P')
972 CASE ('GLS_M')
974 CASE ('GLS_N')
976 CASE ('GLS_Kmin')
978 CASE ('GLS_Pmin')
980 CASE ('GLS_CMU0')
982 CASE ('GLS_C1')
984 CASE ('GLS_C2')
986 CASE ('GLS_C3M')
988 CASE ('GLS_C3P')
990 CASE ('GLS_SIGK')
992 CASE ('GLS_SIGP')
994 CASE ('CHARNOK_ALPHA')
996 CASE ('ZOS_HSIG_ALPHA')
998 CASE ('SZ_ALPHA')
1000 CASE ('CRGBAN_CW')
1002 CASE ('WEC_ALPHA')
1004 CASE ('RDRG')
1006 CASE ('RDRG2')
1008 CASE ('Zob')
1010 CASE ('Zos')
1012#ifdef BULK_FLUXES
1013 CASE ('BLK_ZQ')
1015 CASE ('BLK_ZT')
1017 CASE ('BLK_ZW')
1019#endif
1020 CASE ('DCRIT')
1022 CASE ('WTYPE')
1024 CASE ('LEVSFRC')
1026 CASE ('LEVBFRC')
1028 CASE ('Vtransform')
1033 IF (
master)
WRITE (out,260)
'Vtransform = ', &
1035 & 'Must be either 1 or 2'
1037 RETURN
1038 END IF
1039 END DO
1040 CASE ('Vstretching')
1045 IF (
master)
WRITE (out,260)
'Vstretching = ', &
1047 & 'Must between 1 and 5'
1049 RETURN
1050 END IF
1051 END DO
1052 CASE ('THETA_S')
1054 CASE ('THETA_B')
1056 CASE ('TCLINE')
1060 END DO
1061 CASE ('RHO0')
1062 npts=
load_r(nval, rval, 1, rvalue)
1064 CASE ('BVF_BAK')
1065 npts=
load_r(nval, rval, 1, rvalue)
1067#ifdef TIDE_GENERATING_FORCES
1068 CASE ('Lnodal')
1069 npts=
load_l(nval, cval, 1, lvalue)
1071#endif
1072 CASE ('DSTART')
1073 npts=
load_r(nval, rval, 1, dvalue)
1075 CASE ('TIDE_START')
1076 npts=
load_r(nval, rval, 1, dvalue)
1078 CASE ('TIME_REF')
1079 npts=
load_r(nval, rval, 1, dvalue)
1082 CASE ('TNUDG')
1086 tnudg(itrc,ng)=dtracer(itrc,ng)
1087 END DO
1088#ifdef T_PASSIVE
1092 END DO
1093#endif
1094 END DO
1095 CASE ('ZNUDG')
1097 CASE ('M2NUDG')
1099 CASE ('M3NUDG')
1101 CASE ('OBCFAC')
1103 CASE ('R0')
1106 IF (
r0(ng).lt.100.0_r8)
r0(ng)=
r0(ng)+1000.0_r8
1107 END DO
1108 CASE ('T0')
1110 CASE ('S0')
1112 CASE ('TCOEF')
1116 END DO
1117 CASE ('SCOEF')
1121 END DO
1122 CASE ('GAMMA2')
1124 CASE ('LuvSrc')
1126 CASE ('LwSrc')
1128#ifdef SOLVE3D
1129 CASE ('LtracerSrc')
1134 END DO
1135# ifdef T_PASSIVE
1139 END DO
1140# endif
1141 END DO
1142#endif
1143 CASE ('LsshCLM')
1145 CASE ('Lm2CLM')
1147#ifdef SOLVE3D
1148 CASE ('Lm3CLM')
1150 CASE ('LtracerCLM')
1155 END DO
1156# ifdef T_PASSIVE
1160 END DO
1161# endif
1162 END DO
1163#endif
1164 CASE ('LnudgeM2CLM')
1166#ifdef SOLVE3D
1167 CASE ('LnudgeM3CLM')
1169 CASE ('LnudgeTCLM')
1174 END DO
1175# ifdef T_PASSIVE
1179 END DO
1180# endif
1181 END DO
1182#endif
1183#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1184 defined opt_observations || defined sensitivity_4dvar || \
1185 defined so_semi
1186 CASE ('DstrS')
1188 CASE ('DendS')
1190# ifndef OBS_SPACE
1191 CASE ('KstrS')
1193 CASE ('KendS')
1195 CASE ('Lstate(isFsur)')
1197 IF (
master)
WRITE (out,280)
'isFsur'
1199 RETURN
1200 END IF
1204 END DO
1205 CASE ('Lstate(isUbar)')
1207 IF (
master)
WRITE (out,280)
'isUbar'
1209 RETURN
1210 END IF
1214 END DO
1215 CASE ('Lstate(isVbar)')
1217 IF (
master)
WRITE (out,280)
'isVbar'
1219 RETURN
1220 END IF
1224 END DO
1225# ifdef SOLVE3D
1226 CASE ('Lstate(isUvel)')
1228 IF (
master)
WRITE (out,280)
'isUvel'
1230 RETURN
1231 END IF
1235 END DO
1236 CASE ('Lstate(isVvel)')
1238 IF (
master)
WRITE (out,280)
'isVvel'
1240 RETURN
1241 END IF
1245 END DO
1246 CASE ('Lstate(isWvel)')
1248 IF (
master)
WRITE (out,280)
'isWvel'
1250 RETURN
1251 END IF
1255 END DO
1256 CASE ('Lstate(isTvar)')
1257 IF (maxval(
istvar).eq.0)
THEN
1258 IF (
master)
WRITE (out,280)
'isTvar'
1260 RETURN
1261 END IF
1263 k=0
1266 k=k+1
1268 scalars(ng)%Lstate(i)=ladsen(k)
1269 END DO
1270 END DO
1271# endif
1272# endif
1273#endif
1274#if defined FORCING_SV || defined SO_SEMI || \
1275 defined stochastic_opt
1276 CASE ('Fstate(isFsur)')
1278 IF (
master)
WRITE (out,280)
'isFsur'
1280 RETURN
1281 END IF
1285 END DO
1286 CASE ('Fstate(isUbar)')
1288 IF (
master)
WRITE (out,280)
'isUbar'
1290 RETURN
1291 END IF
1295 END DO
1296 CASE ('Fstate(isVbar)')
1298 IF (
master)
WRITE (out,280)
'isVbar'
1300 RETURN
1301 END IF
1305 END DO
1306# ifdef SOLVE3D
1307 CASE ('Fstate(isUvel)')
1309 IF (
master)
WRITE (out,280)
'isUvel'
1311 RETURN
1312 END IF
1316 END DO
1317 CASE ('Fstate(isVvel)')
1319 IF (
master)
WRITE (out,280)
'isVvel'
1321 RETURN
1322 END IF
1326 END DO
1327 CASE ('Fstate(isTvar)')
1328 IF (maxval(
istvar).eq.0)
THEN
1329 IF (
master)
WRITE (out,280)
'isTvar'
1331 RETURN
1332 END IF
1334 k=0
1337 k=k+1
1339 scalars(ng)%Fstate(i)=ladsen(k)
1340 END DO
1341 END DO
1342# endif
1343 CASE ('Fstate(isUstr)')
1345 IF (
master)
WRITE (out,280)
'isUstr'
1347 RETURN
1348 END IF
1352 END DO
1353 CASE ('Fstate(isVstr)')
1355 IF (
master)
WRITE (out,280)
'isVstr'
1357 RETURN
1358 END IF
1362 END DO
1363# ifdef SOLVE3D
1364 CASE ('Fstate(isTsur)')
1365 IF (maxval(
istsur).eq.0)
THEN
1366 IF (
master)
WRITE (out,280)
'isTsur'
1368 RETURN
1369 END IF
1371 k=0
1374 k=k+1
1376 scalars(ng)%Fstate(i)=ladsen(k)
1377 END DO
1378 END DO
1379# endif
1380#endif
1381#if defined SO_SEMI || \
1382 (defined stochastic_opt &&
1383 CASE ('SO_decay')
1385 CASE ('SO_sdev(isFsur)')
1387 CASE ('SO_sdev(isUbar)')
1389 CASE ('SO_sdev(isVbar)')
1391# ifdef SOLVE3D
1392 CASE ('SO_sdev(isUvel)')
1394 CASE ('SO_sdev(isVvel)')
1396 CASE ('SO_sdev(isTvar)')
1398 k=0
1401 k=k+1
1404 END DO
1405 END DO
1406# endif
1407 CASE ('SO_sdev(isUstr)')
1409 CASE ('SO_sdev(isVstr)')
1411# ifdef SOLVE3D
1412 CASE ('SO_sdev(isTsur)')
1414 k=0
1417 k=k+1
1420 END DO
1421 END DO
1422# endif
1423#endif
1424 CASE ('Hout(idUvel)')
1426 IF (
master)
WRITE (out,280)
'idUvel'
1428 RETURN
1429 END IF
1432 CASE ('Hout(idVvel)')
1434 IF (
master)
WRITE (out,280)
'idVvel'
1436 RETURN
1437 END IF
1440 CASE ('Hout(idWvel)')
1442 IF (
master)
WRITE (out,280)
'idWvel'
1444 RETURN
1445 END IF
1448 CASE ('Hout(idOvel)')
1450 IF (
master)
WRITE (out,280)
'idOvel'
1452 RETURN
1453 END IF
1456# if defined OMEGA_IMPLICIT && defined SOLVE3D
1457 CASE ('Hout(idOvil)')
1459 IF (
master)
WRITE (out,280)
'idOvil'
1461 RETURN
1462 END IF
1465# endif
1466 CASE ('Hout(idUbar)')
1468 IF (
master)
WRITE (out,280)
'idUbar'
1470 RETURN
1471 END IF
1474 CASE ('Hout(idVbar)')
1476 IF (
master)
WRITE (out,280)
'idVbar'
1478 RETURN
1479 END IF
1482 CASE ('Hout(idFsur)')
1484 IF (
master)
WRITE (out,280)
'idFsur'
1486 RETURN
1487 END IF
1490#if defined SEDIMENT && defined SED_MORPH
1491 CASE ('Hout(idBath)')
1493 IF (
master)
WRITE (out,280)
'idbath'
1495 RETURN
1496 END IF
1499#endif
1500 CASE ('Hout(idu2dE)')
1502 IF (
master)
WRITE (out,280)
'idu2dE'
1504 RETURN
1505 END IF
1508 CASE ('Hout(idv2dN)')
1510 IF (
master)
WRITE (out,280)
'idv2dN'
1512 RETURN
1513 END IF
1516 CASE ('Hout(idu3dE)')
1518 IF (
master)
WRITE (out,280)
'idu3dE'
1520 RETURN
1521 END IF
1524 CASE ('Hout(idv3dN)')
1526 IF (
master)
WRITE (out,280)
'idv3dN'
1528 RETURN
1529 END IF
1532#ifdef SOLVE3D
1533 CASE ('Hout(idTvar)')
1534 IF (maxval(
idtvar).eq.0)
THEN
1535 IF (
master)
WRITE (out,280)
'idTvar'
1537 RETURN
1538 END IF
1543 hout(i,ng)=ltracer(itrc,ng)
1544 END DO
1545 END DO
1546#endif
1547 CASE ('Hout(idpthR)')
1549 IF (
master)
WRITE (out,280)
'idpthR'
1551 RETURN
1552 END IF
1555 CASE ('Hout(idpthU)')
1557 IF (
master)
WRITE (out,280)
'idpthU'
1559 RETURN
1560 END IF
1563 CASE ('Hout(idpthV)')
1565 IF (
master)
WRITE (out,280)
'idpthV'
1567 RETURN
1568 END IF
1571 CASE ('Hout(idpthW)')
1573 IF (
master)
WRITE (out,280)
'idpthW'
1575 RETURN
1576 END IF
1579 CASE ('Hout(idUsms)')
1581 IF (
master)
WRITE (out,280)
'idUsms'
1583 RETURN
1584 END IF
1587 CASE ('Hout(idVsms)')
1589 IF (
master)
WRITE (out,280)
'idVsms'
1591 RETURN
1592 END IF
1595 CASE ('Hout(idUbms)')
1597 IF (
master)
WRITE (out,280)
'idUbms'
1599 RETURN
1600 END IF
1603 CASE ('Hout(idVbms)')
1605 IF (
master)
WRITE (out,280)
'idVbms'
1607 RETURN
1608 END IF
1611#ifdef BBL_MODEL
1612 CASE ('Hout(idUbrs)')
1614 IF (
master)
WRITE (out,280)
'idUbrs'
1616 RETURN
1617 END IF
1620 CASE ('Hout(idVbrs)')
1622 IF (
master)
WRITE (out,280)
'idVbrs'
1624 RETURN
1625 END IF
1628 CASE ('Hout(idUbws)')
1630 IF (
master)
WRITE (out,280)
'idUbws'
1632 RETURN
1633 END IF
1636 CASE ('Hout(idVbws)')
1638 IF (
master)
WRITE (out,280)
'idVbws'
1640 RETURN
1641 END IF
1644 CASE ('Hout(idUbcs)')
1646 IF (
master)
WRITE (out,280)
'idUbcs'
1648 RETURN
1649 END IF
1652 CASE ('Hout(idVbcs)')
1654 IF (
master)
WRITE (out,280)
'idVbcs'
1656 RETURN
1657 END IF
1660 CASE ('Hout(idUVwc)')
1662 IF (
master)
WRITE (out,280)
'idUVwc'
1664 RETURN
1665 END IF
1668 CASE ('Hout(idUbot)')
1670 IF (
master)
WRITE (out,280)
'idUbot'
1672 RETURN
1673 END IF
1676 CASE ('Hout(idVbot)')
1678 IF (
master)
WRITE (out,280)
'idVbot'
1680 RETURN
1681 END IF
1684 CASE ('Hout(idUbur)')
1686 IF (
master)
WRITE (out,280)
'idUbur'
1688 RETURN
1689 END IF
1692 CASE ('Hout(idVbvr)')
1694 IF (
master)
WRITE (out,280)
'idVbvr'
1696 RETURN
1697 END IF
1700#endif
1701#ifdef WEC_VF
1702 CASE ('Hout(idWztw)')
1704 IF (
master)
WRITE (out,280)
'idWztw'
1706 RETURN
1707 END IF
1710 CASE ('Hout(idWqsp)')
1712 IF (
master)
WRITE (out,280)
'idWqsp'
1714 RETURN
1715 END IF
1718 CASE ('Hout(idWbeh)')
1720 IF (
master)
WRITE (out,280)
'idWbeh'
1722 RETURN
1723 END IF
1726#endif
1727#ifdef WEC
1728 CASE ('Hout(idU2rs)')
1730 IF (
master)
WRITE (out,280)
'idU2rs'
1732 RETURN
1733 END IF
1736 CASE ('Hout(idV2rs)')
1738 IF (
master)
WRITE (out,280)
'idV2rs'
1740 RETURN
1741 END IF
1744 CASE ('Hout(idU3rs)')
1746 IF (
master)
WRITE (out,280)
'idU3rs'
1748 RETURN
1749 END IF
1752 CASE ('Hout(idV3rs)')
1754 IF (
master)
WRITE (out,280)
'idV3rs'
1756 RETURN
1757 END IF
1760 CASE ('Hout(idU2Sd)')
1762 IF (
master)
WRITE (out,280)
'idU2Sd'
1764 RETURN
1765 END IF
1768 CASE ('Hout(idV2Sd)')
1770 IF (
master)
WRITE (out,280)
'idV2Sd'
1772 RETURN
1773 END IF
1776 CASE ('Hout(idU3Sd)')
1778 IF (
master)
WRITE (out,280)
'idU3Sd'
1780 RETURN
1781 END IF
1784 CASE ('Hout(idV3Sd)')
1786 IF (
master)
WRITE (out,280)
'idV3Sd'
1788 RETURN
1789 END IF
1792 CASE ('Hout(idW3Sd)')
1794 IF (
master)
WRITE (out,280)
'idW3Sd'
1796 RETURN
1797 END IF
1800 CASE ('Hout(idW3St)')
1802 IF (
master)
WRITE (out,280)
'idW3St'
1804 RETURN
1805 END IF
1808#endif
1809#ifdef WAVES_HEIGHT
1810 CASE ('Hout(idWamp)')
1812 IF (
master)
WRITE (out,280)
'idWamp'
1814 RETURN
1815 END IF
1818#endif
1819#ifdef WAVES_LENGTH
1820
1821 CASE ('Hout(idWlen)')
1823 IF (
master)
WRITE (out,280)
'idWlen'
1825 RETURN
1826 END IF
1829#endif
1830#ifdef WAVES_LENGTHP
1831 CASE ('Hout(idWlep)')
1833 IF (
master)
WRITE (out,280)
'idWlep'
1835 RETURN
1836 END IF
1839#endif
1840#ifdef WAVES_DIR
1841 CASE ('Hout(idWdir)')
1843 IF (
master)
WRITE (out,280)
'idWdir'
1845 RETURN
1846 END IF
1849#endif
1850#ifdef WAVES_DIRP
1851 CASE ('Hout(idWdip)')
1853 IF (
master)
WRITE (out,280)
'idWdip'
1855 RETURN
1856 END IF
1859#endif
1860#ifdef WAVES_TOP_PERIOD
1861 CASE ('Hout(idWptp)')
1863 IF (
master)
WRITE (out,280)
'idWptp'
1865 RETURN
1866 END IF
1869#endif
1870#ifdef WAVES_BOT_PERIOD
1871 CASE ('Hout(idWpbt)')
1873 IF (
master)
WRITE (out,280)
'idWpbt'
1875 RETURN
1876 END IF
1879#endif
1880#if defined BBL_MODEL || defined BEDLOAD_SOULSBY || \
1881 defined bedload_vandera || defined wav_coupling
1882 CASE ('Hout(idWorb)')
1884 IF (
master)
WRITE (out,280)
'idWorb'
1886 RETURN
1887 END IF
1890#endif
1891#if defined ROLLER_SVENDSEN
1892 CASE ('Hout(idWbrk)')
1894 IF (
master)
WRITE (out,280)
'idWbrk'
1896 RETURN
1897 END IF
1900#endif
1901#if defined UV_KIRBY
1902 CASE ('Hout(idUwav)')
1904 IF (
master)
WRITE (out,280)
'idUwav'
1906 RETURN
1907 END IF
1910 CASE ('Hout(idVwav)')
1912 IF (
master)
WRITE (out,280)
'idVwav'
1914 RETURN
1915 END IF
1918#endif
1919#if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
1920 CASE ('Hout(idWdif)')
1922 IF (
master)
WRITE (out,280)
'idWdif'
1924 RETURN
1925 END IF
1928#endif
1929#if defined TKE_WAVEDISS || defined WAV_COUPLING || \
1930 defined wdiss_thorguza || defined wdiss_churthor || \
1931 defined waves_diss || defined wdiss_inwave
1932 CASE ('Hout(idWdib)')
1934 IF (
master)
WRITE (out,280)
'idWdib'
1936 RETURN
1937 END IF
1940 CASE ('Hout(idWdiw)')
1942 IF (
master)
WRITE (out,280)
'idWdiw'
1944 RETURN
1945 END IF
1948#endif
1949#if defined WEC_ROLLER
1950 CASE ('Hout(idWdis)')
1952 IF (
master)
WRITE (out,280)
'idWdis'
1954 RETURN
1955 END IF
1958 CASE ('Hout(idWrol)')
1960 IF (
master)
WRITE (out,280)
'idWrol'
1962 RETURN
1963 END IF
1966#endif
1967#if defined WAVES_DSPR
1968 CASE ('Hout(idWvds)')
1970 IF (
master)
WRITE (out,280)
'idWvds'
1972 RETURN
1973 END IF
1976 CASE ('Hout(idWvqp)')
1978 IF (
master)
WRITE (out,280)
'idWvqp'
1980 RETURN
1981 END IF
1984#endif
1985#if defined INWAVE_MODEL
1986 CASE ('Hout(idACen)')
1987 IF (idacen.eq.0) THEN
1988 IF (
master)
WRITE (out,280)
'idACen'
1990 RETURN
1991 END IF
1994 CASE ('Hout(idACct)')
1995 IF (idacct.eq.0) THEN
1996 IF (
master)
WRITE (out,280)
'idACct'
1998 RETURN
1999 END IF
2002 CASE ('Hout(idACcx)')
2003 IF (idaccx.eq.0) THEN
2004 IF (
master)
WRITE (out,280)
'idACcx'
2006 RETURN
2007 END IF
2010 CASE ('Hout(idACcy)')
2011 IF (idaccy.eq.0) THEN
2012 IF (
master)
WRITE (out,280)
'idACcy'
2014 RETURN
2015 END IF
2018 CASE ('Hout(idACtp)')
2019 IF (idactp.eq.0) THEN
2020 IF (
master)
WRITE (out,280)
'idACtp'
2022 RETURN
2023 END IF
2026#endif
2027#ifdef SOLVE3D
2028# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2029 CASE ('Hout(idPair)')
2031 IF (
master)
WRITE (out,280)
'idPair'
2033 RETURN
2034 END IF
2037# endif
2038# if defined BULK_FLUXES
2039 CASE ('Hout(idTair)')
2041 IF (
master)
WRITE (out,280)
'idTair'
2043 RETURN
2044 END IF
2047# endif
2048# if defined BULK_FLUXES || defined ECOSIM
2049 CASE ('Hout(idUair)')
2051 IF (
master)
WRITE (out,280)
'idUair'
2053 RETURN
2054 END IF
2057 CASE ('Hout(idVair)')
2059 IF (
master)
WRITE (out,280)
'idVair'
2061 RETURN
2062 END IF
2065 CASE ('Hout(idUaiE)')
2067 IF (
master)
WRITE (out,280)
'idUaiE'
2069 RETURN
2070 END IF
2073 CASE ('Hout(idVaiN)')
2075 IF (
master)
WRITE (out,280)
'idVaiN'
2077 RETURN
2078 END IF
2081# endif
2082 CASE ('Hout(idTsur)')
2084 IF (
master)
WRITE (out,280)
'idTsur'
2086 RETURN
2087 END IF
2092 hout(i,ng)=ltracer(itrc,ng)
2093 END DO
2094 END DO
2095#endif
2096 CASE ('Hout(idLhea)')
2098 IF (
master)
WRITE (out,280)
'idLhea'
2100 RETURN
2101 END IF
2104 CASE ('Hout(idShea)')
2106 IF (
master)
WRITE (out,280)
'idShea'
2108 RETURN
2109 END IF
2112 CASE ('Hout(idLrad)')
2114 IF (
master)
WRITE (out,280)
'idLrad'
2116 RETURN
2117 END IF
2120 CASE ('Hout(idSrad)')
2122 IF (
master)
WRITE (out,280)
'idSrad'
2124 RETURN
2125 END IF
2128 CASE ('Hout(idEmPf)')
2130 IF (
master)
WRITE (out,280)
'idEmPf'
2132 RETURN
2133 END IF
2136 CASE ('Hout(idevap)')
2138 IF (
master)
WRITE (out,280)
'idevap'
2140 RETURN
2141 END IF
2144 CASE ('Hout(idrain)')
2146 IF (
master)
WRITE (out,280)
'idrain'
2148 RETURN
2149 END IF
2152 CASE ('Hout(idDano)')
2154 IF (
master)
WRITE (out,280)
'idDano'
2156 RETURN
2157 END IF
2160 CASE ('Hout(idVvis)')
2162 IF (
master)
WRITE (out,280)
'idVvis'
2164 RETURN
2165 END IF
2168 CASE ('Hout(idTdif)')
2170 IF (
master)
WRITE (out,280)
'idTdif'
2172 RETURN
2173 END IF
2176#ifdef SALINITY
2177 CASE ('Hout(idSdif)')
2179 IF (
master)
WRITE (out,280)
'idSdif'
2181 RETURN
2182 END IF
2185#endif
2186 CASE ('Hout(idHsbl)')
2188 IF (
master)
WRITE (out,280)
'idHsbl'
2190 RETURN
2191 END IF
2194 CASE ('Hout(idHbbl)')
2196 IF (
master)
WRITE (out,280)
'idHbbl'
2198 RETURN
2199 END IF
2202 CASE ('Hout(idMtke)')
2204 IF (
master)
WRITE (out,280)
'idMtke'
2206 RETURN
2207 END IF
2210 CASE ('Hout(idMtls)')
2212 IF (
master)
WRITE (out,280)
'idMtls'
2214 RETURN
2215 END IF
2218#if defined SOLVE3D && defined T_PASSIVE
2219 CASE ('Hout(inert)')
2224 hout(itrc,ng)=linert(i,ng)
2225 END DO
2226 END DO
2227#endif
2228 CASE ('Qout(idUvel)')
2231 CASE ('Qout(idVvel)')
2234 CASE ('Qout(idWvel)')
2237 CASE ('Qout(idOvel)')
2240 CASE ('Qout(idUbar)')
2243 CASE ('Qout(idVbar)')
2246 CASE ('Qout(idFsur)')
2249#if defined SEDIMENT && defined SED_MORPH
2250 CASE ('Qout(idBath)')
2253#endif
2254 CASE ('Qout(idu2dE)')
2257 CASE ('Qout(idv2dN)')
2260 CASE ('Qout(idu3dE)')
2263 CASE ('Qout(idv3dN)')
2266#ifdef SOLVE3D
2267 CASE ('Qout(idTvar)')
2272 qout(i,ng)=ltracer(itrc,ng)
2273 END DO
2274 END DO
2275#endif
2276 CASE ('Qout(idUsur)')
2278 IF (
master)
WRITE (out,280)
'idUsur'
2280 RETURN
2281 END IF
2284 CASE ('Qout(idVsur)')
2286 IF (
master)
WRITE (out,280)
'idVsur'
2288 RETURN
2289 END IF
2292 CASE ('Qout(idUsuE)')
2294 IF (
master)
WRITE (out,280)
'idUsuE'
2296 RETURN
2297 END IF
2300 CASE ('Qout(idVsuN)')
2302 IF (
master)
WRITE (out,280)
'idVsuN'
2304 RETURN
2305 END IF
2308#ifdef SOLVE3D
2309 CASE ('Qout(idsurT)')
2310 IF (maxval(
idsurt).eq.0)
THEN
2311 IF (
master)
WRITE (out,280)
'idsurT'
2313 RETURN
2314 END IF
2319 qout(i,ng)=ltracer(itrc,ng)
2320 END DO
2321 END DO
2322#endif
2323 CASE ('Qout(idpthR)')
2326 CASE ('Qout(idpthU)')
2329 CASE ('Qout(idpthV)')
2332 CASE ('Qout(idpthW)')
2335 CASE ('Qout(idUsms)')
2338 CASE ('Qout(idVsms)')
2341 CASE ('Qout(idUbms)')
2344 CASE ('Qout(idVbms)')
2347#ifdef BBL_MODEL
2348 CASE ('Qout(idUbrs)')
2351 CASE ('Qout(idVbrs)')
2354 CASE ('Qout(idUbws)')
2357 CASE ('Qout(idVbws)')
2360 CASE ('Qout(idUbcs)')
2363 CASE ('Qout(idVbcs)')
2366 CASE ('Qout(idUbot)')
2369 CASE ('Qout(idVbot)')
2372 CASE ('Qout(idUbur)')
2375 CASE ('Qout(idVbvr)')
2378#endif
2379#ifdef WEC_VF
2380 CASE ('Qout(idWztw)')
2383 CASE ('Qout(idWqsp)')
2386 CASE ('Qout(idWbeh)')
2389#endif
2390#ifdef WEC
2391 CASE ('Qout(idU2rs)')
2394 CASE ('Qout(idV2rs)')
2397 CASE ('Qout(idU3rs)')
2400 CASE ('Qout(idV3rs)')
2403 CASE ('Qout(idU2Sd)')
2406 CASE ('Qout(idV2Sd)')
2409 CASE ('Qout(idU3Sd)')
2412 CASE ('Qout(idV3Sd)')
2415 CASE ('Qout(idW3Sd)')
2418 CASE ('Qout(idW3St)')
2421#endif
2422#ifdef WAVES_HEIGHT
2423 CASE ('Qout(idWamp)')
2426#endif
2427#ifdef WAVES_LENGTH
2428 CASE ('Qout(idWlen)')
2431#endif
2432#ifdef WAVES_LENGTHP
2433 CASE ('Qout(idWlep)')
2436#endif
2437#ifdef WAVES_DIR
2438 CASE ('Qout(idWdir)')
2441#endif
2442#ifdef WAVES_DIRP
2443 CASE ('Qout(idWdip)')
2446#endif
2447#ifdef WAVES_TOP_PERIOD
2448 CASE ('Qout(idWptp)')
2451#endif
2452#ifdef WAVES_BOT_PERIOD
2453 CASE ('Qout(idWpbt)')
2456#endif
2457#if defined BBL_MODEL || defined BEDLOAD_SOULSBY || \
2458 defined bedload_vandera || defined wav_coupling
2459 CASE ('Qout(idWorb)')
2462#endif
2463#if defined ROLLER_SVENDSEN
2464 CASE ('Qout(idWbrk)')
2467#endif
2468#if defined UV_KIRBY
2469 CASE ('Qout(idUwav)')
2472 CASE ('Qout(idVwav)')
2475#endif
2476#if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
2477 CASE ('Qout(idWdif)')
2480#endif
2481#if defined TKE_WAVEDISS || defined WAV_COUPLING || \
2482 defined wdiss_thorguza || defined wdiss_churthor || \
2483 defined waves_diss || defined wdiss_inwave
2484 CASE ('Qout(idWdib)')
2487 CASE ('Qout(idWdiw)')
2490#endif
2491#if defined WEC_ROLLER
2492 CASE ('Qout(idWdis)')
2495 CASE ('Qout(idWrol)')
2498#endif
2499#if defined WAVES_DSPR
2500 CASE ('Qout(idWvds)')
2503 CASE ('Hout(idWvqp)')
2506#endif
2507#ifdef SOLVE3D
2508# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2509 CASE ('Qout(idPair)')
2512# endif
2513# if defined BULK_FLUXES
2514 CASE ('Qout(idTair)')
2517# endif
2518# if defined BULK_FLUXES || defined ECOSIM
2519 CASE ('Qout(idUair)')
2522 CASE ('Qout(idVair)')
2525 CASE ('Qout(idUaiE)')
2528 CASE ('Qout(idVaiN)')
2531# endif
2532 CASE ('Qout(idTsur)')
2537 qout(i,ng)=ltracer(itrc,ng)
2538 END DO
2539 END DO
2540#endif
2541 CASE ('Qout(idLhea)')
2544 CASE ('Qout(idShea)')
2547 CASE ('Qout(idLrad)')
2550 CASE ('Qout(idSrad)')
2553 CASE ('Qout(idEmPf)')
2556 CASE ('Qout(idevap)')
2559 CASE ('Qout(idrain)')
2562 CASE ('Qout(idDano)')
2565 CASE ('Qout(idVvis)')
2568 CASE ('Qout(idTdif)')
2571#ifdef SALINITY
2572 CASE ('Qout(idSdif)')
2575#endif
2576 CASE ('Qout(idHsbl)')
2579 CASE ('Qout(idHbbl)')
2582 CASE ('Qout(idMtke)')
2585 CASE ('Qout(idMtls)')
2588#if defined SOLVE3D && defined T_PASSIVE
2589 CASE ('Qout(inert)')
2594 qout(itrc,ng)=linert(i,ng)
2595 END DO
2596 END DO
2597 CASE ('Qout(Snert)')
2602 qout(itrc,ng)=linert(i,ng)
2603 END DO
2604 END DO
2605#endif
2606#if defined AVERAGES || \
2607 (defined ad_averages && defined adjoint) || \
2608 (defined rp_averages && defined tl_ioms) || \
2609 (defined tl_averages && defined tangent)
2610 CASE ('Aout(idUvel)')
2613 CASE ('Aout(idVvel)')
2616 CASE ('Aout(idWvel)')
2619 CASE ('Aout(idOvel)')
2622 CASE ('Aout(idUbar)')
2625 CASE ('Aout(idVbar)')
2628 CASE ('Aout(idFsur)')
2631 CASE ('Aout(idu2dE)')
2634 CASE ('Aout(idv2dN)')
2637 CASE ('Aout(idu3dE)')
2640 CASE ('Aout(idv3dN)')
2643# ifdef SOLVE3D
2644 CASE ('Aout(idTvar)')
2649 aout(i,ng)=ltracer(itrc,ng)
2650 END DO
2651 END DO
2652# endif
2653 CASE ('Aout(idUsms)')
2656 CASE ('Aout(idVsms)')
2659 CASE ('Aout(idUbms)')
2662 CASE ('Aout(idVbms)')
2665# ifdef BBL_MODEL
2666 CASE ('Aout(idUbrs)')
2669 CASE ('Aout(idVbrs)')
2672 CASE ('Aout(idUbws)')
2675 CASE ('Aout(idVbws)')
2678 CASE ('Aout(idUbcs)')
2681 CASE ('Aout(idVbcs)')
2684 CASE ('Aout(idUVwc)')
2687 CASE ('Aout(idUbot)')
2690 CASE ('Aout(idVbot)')
2693 CASE ('Aout(idUbur)')
2696 CASE ('Aout(idVbvr)')
2699# endif
2700# ifdef WEC
2701 CASE ('Aout(idU2rs)')
2704 CASE ('Aout(idV2rs)')
2707 CASE ('Aout(idU2Sd)')
2710 CASE ('Aout(idV2Sd)')
2713# endif
2714# ifdef WEC
2715# ifdef SOLVE3D
2716 CASE ('Aout(idU3rs)')
2719 CASE ('Aout(idV3rs)')
2722 CASE ('Aout(idU3Sd)')
2725 CASE ('Aout(idV3Sd)')
2728 CASE ('Aout(idW3Sd)')
2731 CASE ('Aout(idW3St)')
2734# endif
2735 CASE ('Aout(idWztw)')
2738 CASE ('Aout(idWqsp)')
2741 CASE ('Aout(idWbeh)')
2744# endif
2745# ifdef WAVES_HEIGHT
2746 CASE ('Aout(idWamp)')
2749 CASE ('Aout(idWam2)')
2752# endif
2753# ifdef WAVES_LENGTH
2754 CASE ('Aout(idWlen)')
2757# endif
2758# ifdef WAVES_LENGTHP
2759 CASE ('Aout(idWlep)')
2762# endif
2763# ifdef WAVES_DIR
2764 CASE ('Aout(idWdir)')
2767# endif
2768# ifdef WAVES_DIRP
2769 CASE ('Aout(idWdip)')
2772# endif
2773# ifdef WAVES_TOP_PERIOD
2774 CASE ('Aout(idWptp)')
2777# endif
2778# ifdef WAVES_BOT_PERIOD
2779 CASE ('Aout(idWpbt)')
2782# endif
2783# if defined BBL_MODEL || defined BEDLOAD_SOULSBY || \
2784 defined bedload_vandera || defined wav_coupling
2785 CASE ('Aout(idWorb)')
2788# endif
2789# if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
2790 CASE ('Aout(idWdif)')
2793# endif
2794# if defined TKE_WAVEDISS || defined WAV_COUPLING || \
2795 defined wdiss_thorguza || defined wdiss_churthor || \
2796 defined waves_diss || defined wdiss_inwave
2797 CASE ('Aout(idWdib)')
2800 CASE ('Aout(idWdiw)')
2803# endif
2804# ifdef ROLLER_SVENDSEN
2805 CASE ('Aout(idWbrk)')
2808# endif
2809# ifdef WEC_ROLLER
2810 CASE ('Aout(idWdis)')
2813# endif
2814# ifdef ROLLER_RENIERS
2815 CASE ('Aout(idWrol)')
2818# endif
2819# ifdef WAVES_DSPR
2820 CASE ('Aout(idWvds)')
2823 CASE ('Aout(idWvqp)')
2826# endif
2827# ifdef UV_KIRBY
2828 CASE ('Aout(idUwav)')
2831 CASE ('Aout(idVwav)')
2834# endif
2835# ifdef SOLVE3D
2836# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2837 CASE ('Aout(idPair)')
2840# endif
2841# if defined BULK_FLUXES
2842 CASE ('Aout(idTair)')
2845# endif
2846# if defined BULK_FLUXES || defined ECOSIM
2847 CASE ('Aout(idUair)')
2850 CASE ('Aout(idVair)')
2853 CASE ('Aout(idUaiE)')
2856 CASE ('Aout(idVaiN)')
2859# endif
2860 CASE ('Aout(idTsur)')
2865 aout(i,ng)=ltracer(itrc,ng)
2866 END DO
2867 END DO
2868# endif
2869 CASE ('Aout(idLhea)')
2872 CASE ('Aout(idShea)')
2875 CASE ('Aout(idLrad)')
2878 CASE ('Aout(idSrad)')
2881 CASE ('Aout(idevap)')
2884 CASE ('Aout(idrain)')
2887 CASE ('Aout(idDano)')
2890 CASE ('Aout(idVvis)')
2893 CASE ('Aout(idTdif)')
2896# ifdef SALINITY
2897 CASE ('Aout(idSdif)')
2900# endif
2901 CASE ('Aout(idHsbl)')
2904 CASE ('Aout(idHbbl)')
2907 CASE ('Aout(id2dRV)')
2909 IF (
master)
WRITE (out,280)
'id2dRV'
2911 RETURN
2912 END IF
2915 CASE ('Aout(id3dRV)')
2917 IF (
master)
WRITE (out,280)
'id3dRV'
2919 RETURN
2920 END IF
2923 CASE ('Aout(id2dPV)')
2925 IF (
master)
WRITE (out,280)
'id2dPV'
2927 RETURN
2928 END IF
2931 CASE ('Aout(id3dPV)')
2933 IF (
master)
WRITE (out,280)
'id3dPV'
2935 RETURN
2936 END IF
2939# if defined AVERAGES && defined AVERAGES_DETIDE && \
2940 (defined ssh_tides || defined uv_tides)
2941 CASE ('Aout(idFsuD)')
2943 IF (
master)
WRITE (out,280)
'idFsuD'
2945 RETURN
2946 END IF
2949 CASE ('Aout(idu2dD)')
2951 IF (
master)
WRITE (out,280)
'idu2dD'
2953 RETURN
2954 END IF
2957 CASE ('Aout(idv2dD)')
2959 IF (
master)
WRITE (out,280)
'idv2dD'
2961 RETURN
2962 END IF
2965# ifdef SOLVE3D
2966 CASE ('Aout(idu3dD)')
2968 IF (
master)
WRITE (out,280)
'idu3dD'
2970 RETURN
2971 END IF
2974 CASE ('Aout(idv3dD)')
2976 IF (
master)
WRITE (out,280)
'idv3dD'
2978 RETURN
2979 END IF
2982 CASE ('Aout(idTrcD)')
2983 IF (maxval(
idtrcd).eq.0)
THEN
2984 IF (
master)
WRITE (out,280)
'idTrcD'
2986 RETURN
2987 END IF
2992 aout(i,ng)=ltracer(itrc,ng)
2993 END DO
2994 END DO
2995# endif
2996# endif
2997# ifdef SOLVE3D
2998 CASE ('Aout(idHUav)')
3000 IF (
master)
WRITE (out,280)
'idHUav'
3002 RETURN
3003 END IF
3006 CASE ('Aout(idHVav)')
3008 IF (
master)
WRITE (out,280)
'idHVav'
3010 RETURN
3011 END IF
3014 CASE ('Aout(idUUav)')
3016 IF (
master)
WRITE (out,280)
'idUUav'
3018 RETURN
3019 END IF
3022 CASE ('Aout(idUVav)')
3024 IF (
master)
WRITE (out,280)
'idUVav'
3026 RETURN
3027 END IF
3030 CASE ('Aout(idVVav)')
3032 IF (
master)
WRITE (out,280)
'idVVav'
3034 RETURN
3035 END IF
3038# endif
3039 CASE ('Aout(idU2av)')
3041 IF (
master)
WRITE (out,280)
'idU2av'
3043 RETURN
3044 END IF
3047 CASE ('Aout(idV2av)')
3049 IF (
master)
WRITE (out,280)
'idV2av'
3051 RETURN
3052 END IF
3055 CASE ('Aout(idZZav)')
3057 IF (
master)
WRITE (out,280)
'idZZav'
3059 RETURN
3060 END IF
3063# ifdef SOLVE3D
3064 CASE ('Aout(idTTav)')
3065 IF (maxval(
idttav).eq.0)
THEN
3066 IF (
master)
WRITE (out,280)
'idTTav'
3068 RETURN
3069 END IF
3074 aout(i,ng)=ltracer(itrc,ng)
3075 END DO
3076 END DO
3077 CASE ('Aout(idUTav)')
3078 IF (maxval(
idutav).eq.0)
THEN
3079 IF (
master)
WRITE (out,280)
'idUTav'
3081 RETURN
3082 END IF
3087 aout(i,ng)=ltracer(itrc,ng)
3088 END DO
3089 END DO
3090 CASE ('Aout(idVTav)')
3091 IF (maxval(
idvtav).eq.0)
THEN
3092 IF (
master)
WRITE (out,280)
'idVTav'
3094 RETURN
3095 END IF
3100 aout(i,ng)=ltracer(itrc,ng)
3101 END DO
3102 END DO
3103 CASE ('Aout(iHUTav)')
3104 IF (maxval(
ihutav).eq.0)
THEN
3105 IF (
master)
WRITE (out,280)
'iHUTav'
3107 RETURN
3108 END IF
3113 aout(i,ng)=ltracer(itrc,ng)
3114 END DO
3115 END DO
3116 CASE ('Aout(iHVTav)')
3117 IF (maxval(
ihvtav).eq.0)
THEN
3118 IF (
master)
WRITE (out,280)
'iHVTav'
3120 RETURN
3121 END IF
3126 aout(i,ng)=ltracer(itrc,ng)
3127 END DO
3128 END DO
3129# endif
3130# if defined SOLVE3D && defined T_PASSIVE
3131 CASE ('Aout(inert)')
3136 aout(itrc,ng)=linert(i,ng)
3137 END DO
3138 END DO
3139# endif
3140#endif
3141#ifdef DIAGNOSTICS_UV
3142 CASE ('Dout(M2rate)')
3144 IF (
master)
WRITE (out,280)
'M2rate'
3146 RETURN
3147 END IF
3152 END DO
3153 CASE ('Dout(M2pgrd)')
3155 IF (
master)
WRITE (out,280)
'M2pgrd'
3157 RETURN
3158 END IF
3163 END DO
3164# ifdef UV_COR
3165 CASE ('Dout(M2fcor)')
3167 IF (
master)
WRITE (out,280)
'M2fcor'
3169 RETURN
3170 END IF
3175 END DO
3176# endif
3177# ifdef UV_ADV
3178 CASE ('Dout(M2hadv)')
3180 IF (
master)
WRITE (out,280)
'M2hadv'
3182 RETURN
3183 END IF
3188 END DO
3189 CASE ('Dout(M2xadv)')
3191 IF (
master)
WRITE (out,280)
'M2xadv'
3193 RETURN
3194 END IF
3199 END DO
3200 CASE ('Dout(M2yadv)')
3202 IF (
master)
WRITE (out,280)
'M2yadv'
3204 RETURN
3205 END IF
3210 END DO
3211# endif
3212# ifdef WEC_VF
3213 CASE ('Dout(M2hjvf)')
3214 IF (m2hjvf.le.0) THEN
3215 IF (
master)
WRITE (out,280)
'M2hjvf'
3217 RETURN
3218 END IF
3223 END DO
3224 CASE ('Dout(M2kvrf)')
3225 IF (m2kvrf.le.0) THEN
3226 IF (
master)
WRITE (out,280)
'M2kvrf'
3228 RETURN
3229 END IF
3234 END DO
3235# ifdef UV_COR
3236 CASE ('Dout(M2fsco)')
3237 IF (m2fsco.le.0) THEN
3238 IF (
master)
WRITE (out,280)
'M2fsco'
3240 RETURN
3241 END IF
3246 END DO
3247# endif
3248# ifdef SURFACE_STREAMING
3249 CASE ('Dout(M2sstm)')
3250 IF (m2sstm.le.0) THEN
3251 IF (
master)
WRITE (out,280)
'M2sstm'
3253 RETURN
3254 END IF
3259 END DO
3260# endif
3261# ifdef BOTTOM_STREAMING
3262 CASE ('Dout(M2bstm)')
3263 IF (m2bstm.le.0) THEN
3264 IF (
master)
WRITE (out,280)
'M2bstm'
3266 RETURN
3267 END IF
3272 END DO
3273# endif
3274 CASE ('Dout(M2wrol)')
3275 IF (m2wrol.le.0) THEN
3276 IF (
master)
WRITE (out,280)
'M2wrol'
3278 RETURN
3279 END IF
3284 END DO
3285 CASE ('Dout(M2wbrk)')
3286 IF (m2wbrk.le.0) THEN
3287 IF (
master)
WRITE (out,280)
'M2wbrk'
3289 RETURN
3290 END IF
3295 END DO
3296 CASE ('Dout(M2zeta)')
3297 IF (m2zeta.le.0) THEN
3298 IF (
master)
WRITE (out,280)
'M2zeta'
3300 RETURN
3301 END IF
3306 END DO
3307 CASE ('Dout(M2zetw)')
3308 IF (m2zetw.le.0) THEN
3309 IF (
master)
WRITE (out,280)
'M2zetw'
3311 RETURN
3312 END IF
3317 END DO
3318 CASE ('Dout(M2zqsp)')
3319 IF (m2zqsp.le.0) THEN
3320 IF (
master)
WRITE (out,280)
'M2zqsp'
3322 RETURN
3323 END IF
3328 END DO
3329 CASE ('Dout(M2zbeh)')
3330 IF (m2zbeh.le.0) THEN
3331 IF (
master)
WRITE (out,280)
'M2zbeh'
3333 RETURN
3334 END IF
3339 END DO
3340# endif
3341# if defined UV_VIS2 || defined UV_VIS4
3342 CASE ('Dout(M2hvis)')
3344 IF (
master)
WRITE (out,280)
'M2hvis'
3346 RETURN
3347 END IF
3352 END DO
3353 CASE ('Dout(M2xvis)')
3355 IF (
master)
WRITE (out,280)
'M2xvis'
3357 RETURN
3358 END IF
3363 END DO
3364 CASE ('Dout(M2yvis)')
3366 IF (
master)
WRITE (out,280)
'M2yvis'
3368 RETURN
3369 END IF
3374 END DO
3375# endif
3376 CASE ('Dout(M2sstr)')
3378 IF (
master)
WRITE (out,280)
'M2sstr'
3380 RETURN
3381 END IF
3386 END DO
3387 CASE ('Dout(M2bstr)')
3389 IF (
master)
WRITE (out,280)
'M2bstr'
3391 RETURN
3392 END IF
3397 END DO
3398# ifdef SOLVE3D
3399 CASE ('Dout(M3rate)')
3401 IF (
master)
WRITE (out,280)
'M3rate'
3403 RETURN
3404 END IF
3409 END DO
3410 CASE ('Dout(M3pgrd)')
3412 IF (
master)
WRITE (out,280)
'M3pgrd'
3414 RETURN
3415 END IF
3420 END DO
3421# ifdef UV_COR
3422 CASE ('Dout(M3fcor)')
3424 IF (
master)
WRITE (out,280)
'M3fcor'
3426 RETURN
3427 END IF
3432 END DO
3433# endif
3434# ifdef UV_ADV
3435 CASE ('Dout(M3hadv)')
3437 IF (
master)
WRITE (out,280)
'M3hadv'
3439 RETURN
3440 END IF
3445 END DO
3446 CASE ('Dout(M3xadv)')
3448 IF (
master)
WRITE (out,280)
'M3xadv'
3450 RETURN
3451 END IF
3456 END DO
3457 CASE ('Dout(M3yadv)')
3459 IF (
master)
WRITE (out,280)
'M3yadv'
3461 RETURN
3462 END IF
3467 END DO
3468 CASE ('Dout(M3vadv)')
3470 IF (
master)
WRITE (out,280)
'M3vadv'
3472 RETURN
3473 END IF
3478 END DO
3479# endif
3480# ifdef WEC_VF
3481 CASE ('Dout(M3hjvf)')
3482 IF (m3hjvf.le.0) THEN
3483 IF (
master)
WRITE (out,280)
'M3hjvf'
3485 RETURN
3486 END IF
3491 END DO
3492 CASE ('Dout(M3vjvf)')
3493 IF (m3vjvf.le.0) THEN
3494 IF (
master)
WRITE (out,280)
'M3vjvf'
3496 RETURN
3497 END IF
3502 END DO
3503 CASE ('Dout(M3kvrf)')
3504 IF (m3kvrf.le.0) THEN
3505 IF (
master)
WRITE (out,280)
'M3kvrf'
3507 RETURN
3508 END IF
3513 END DO
3514# ifdef UV_COR
3515 CASE ('Dout(M3fsco)')
3516 IF (m3fsco.le.0) THEN
3517 IF (
master)
WRITE (out,280)
'M3fsco'
3519 RETURN
3520 END IF
3525 END DO
3526# endif
3527# ifdef SURFACE_STREAMING
3528 CASE ('Dout(M3sstm)')
3529 IF (m3sstm.le.0) THEN
3530 IF (
master)
WRITE (out,280)
'M3sstm'
3532 RETURN
3533 END IF
3538 END DO
3539# endif
3540# ifdef BOTTOM_STREAMING
3541 CASE ('Dout(M3bstm)')
3542 IF (m3bstm.le.0) THEN
3543 IF (
master)
WRITE (out,280)
'M3bstm'
3545 RETURN
3546 END IF
3551 END DO
3552# endif
3553 CASE ('Dout(M3wrol)')
3554 IF (m3wrol.le.0) THEN
3555 IF (
master)
WRITE (out,280)
'M3wrol'
3557 RETURN
3558 END IF
3563 END DO
3564 CASE ('Dout(M3wbrk)')
3565 IF (m3wbrk.le.0) THEN
3566 IF (
master)
WRITE (out,280)
'M3wbrk'
3568 RETURN
3569 END IF
3574 END DO
3575# endif
3576# if defined UV_VIS2 || defined UV_VIS4
3577 CASE ('Dout(M3hvis)')
3579 IF (
master)
WRITE (out,280)
'M3hvis'
3581 RETURN
3582 END IF
3587 END DO
3588 CASE ('Dout(M3xvis)')
3590 IF (
master)
WRITE (out,280)
'M3xvis'
3592 RETURN
3593 END IF
3598 END DO
3599 CASE ('Dout(M3yvis)')
3601 IF (
master)
WRITE (out,280)
'M3yvis'
3603 RETURN
3604 END IF
3609 END DO
3610# endif
3611 CASE ('Dout(M3vvis)')
3613 IF (
master)
WRITE (out,280)
'M3vvis'
3615 RETURN
3616 END IF
3621 END DO
3622# endif
3623#endif
3624#if defined DIAGNOSTICS_TS && defined SOLVE3D
3625 CASE ('Dout(iTrate)')
3627 IF (
master)
WRITE (out,280)
'iTrate'
3629 RETURN
3630 END IF
3635 END DO
3636# ifdef T_PASSIVE
3640 END DO
3641# endif
3642 END DO
3643 CASE ('Dout(iThadv)')
3645 IF (
master)
WRITE (out,280)
'iThadv'
3647 RETURN
3648 END IF
3653 END DO
3654# ifdef T_PASSIVE
3658 END DO
3659# endif
3660 END DO
3661 CASE ('Dout(iTxadv)')
3663 IF (
master)
WRITE (out,280)
'iTxadv'
3665 RETURN
3666 END IF
3671 END DO
3672# ifdef T_PASSIVE
3676 END DO
3677# endif
3678 END DO
3679 CASE ('Dout(iTyadv)')
3681 IF (
master)
WRITE (out,280)
'iTyadv'
3683 RETURN
3684 END IF
3689 END DO
3690# ifdef T_PASSIVE
3694 END DO
3695# endif
3696 END DO
3697 CASE ('Dout(iTvadv)')
3699 IF (
master)
WRITE (out,280)
'iTvadv'
3701 RETURN
3702 END IF
3707 END DO
3708# ifdef T_PASSIVE
3712 END DO
3713# endif
3714 END DO
3715# if defined TS_DIF2 || defined TS_DIF4
3716 CASE ('Dout(iThdif)')
3718 IF (
master)
WRITE (out,280)
'iThdif'
3720 RETURN
3721 END IF
3726 END DO
3727# ifdef T_PASSIVE
3731 END DO
3732# endif
3733 END DO
3734 CASE ('Dout(iTxdif)')
3736 IF (
master)
WRITE (out,280)
'iTxdif'
3738 RETURN
3739 END IF
3744 END DO
3745# ifdef T_PASSIVE
3749 END DO
3750# endif
3751 END DO
3752 CASE ('Dout(iTydif)')
3754 IF (
master)
WRITE (out,280)
'iTydif'
3756 RETURN
3757 END IF
3762 END DO
3763# ifdef T_PASSIVE
3767 END DO
3768# endif
3769 END DO
3770# if defined MIX_GEO_TS || defined MIX_ISO_TS
3771 CASE ('Dout(iTsdif)')
3773 IF (
master)
WRITE (out,280)
'iTsdif'
3775 RETURN
3776 END IF
3781 END DO
3782# ifdef T_PASSIVE
3786 END DO
3787# endif
3788 END DO
3789# endif
3790# endif
3791 CASE ('Dout(iTvdif)')
3793 IF (
master)
WRITE (out,280)
'iTvdif'
3795 RETURN
3796 END IF
3801 END DO
3802# ifdef T_PASSIVE
3806 END DO
3807# endif
3808 END DO
3809#endif
3810 CASE ('NUSER')
3811 npts=
load_i(nval, rval, 1, ivalue)
3813 IF (
nuser.gt.0)
THEN
3814 IF (
allocated(
user))
deallocate (
user)
3817 END IF
3818 CASE ('USER')
3819 IF (
nuser.gt.0)
THEN
3821 END IF
3822 CASE ('INP_LIB')
3823 npts=
load_i(nval, rval, 1, ivalue)
3824#if defined PIO_LIB && defined DISTRIBUTE
3827 IF (
master)
WRITE (out,260)
'inp_lib = ', &
3829 & 'Must be either 1 or 2'
3831 RETURN
3832 END IF
3833#else
3835#endif
3836 CASE ('OUT_LIB')
3837 npts=
load_i(nval, rval, 1, ivalue)
3838#if defined PIO_LIB && defined DISTRIBUTE
3841 IF (
master)
WRITE (out,260)
'out_lib = ', &
3843 & 'Must be either 1 or 2'
3845 RETURN
3846 END IF
3847#else
3849#endif
3850 CASE ('ExtractFlag')
3852
3853#if defined PIO_LIB && defined DISTRIBUTE
3854 CASE ('PIO_METHOD')
3855 npts=
load_i(nval, rval, 1, ivalue)
3856 IF ((ivalue(1).lt.0).or.(ivalue(1).gt.4)) THEN
3857 IF (
master)
WRITE (out,260)
'pio_method = ', &
3858 & ivalue(1), &
3859 & 'Must be between 1 and 4'
3860 ELSE
3861 SELECT CASE (ivalue(1))
3862 CASE (0)
3866 CASE (1)
3870 CASE (2)
3873 CASE (3)
3876 CASE (4)
3879 END SELECT
3880 END IF
3881 CASE ('PIO_IOTASKS')
3882 npts=
load_i(nval, rval, 1, ivalue)
3886 IF (
master)
WRITE (out,260)
'pio_NumIOtasks = ', &
3888 & 'Must be between 1 and NtileI*NtileJ'
3890 RETURN
3891 END IF
3892 CASE ('PIO_STRIDE')
3893 npts=
load_i(nval, rval, 1, ivalue)
3897 IF (
master)
WRITE (out,260)
'pio_stride = ', &
3899 & 'Must be greater than 0 and not exceed NtileI*NtileJ'
3901 RETURN
3902 END IF
3903 CASE ('PIO_BASE')
3904 npts=
load_i(nval, rval, 1, ivalue)
3907 IF (
master)
WRITE (out,260)
'pio_base = ', &
3909 & 'Is usually 0 or greater'
3911 RETURN
3912 ELSE
3914 IF (
master)
WRITE (out,260)
'pio_base = ', &
3916 & 'Reset to 0 since running on a single process'
3918 END IF
3919 END IF
3920 CASE ('PIO_AGGREG')
3921 npts=
load_i(nval, rval, 1, ivalue)
3924 IF (
master)
WRITE (out,260)
'pio_aggregator = ', &
3926 & 'Must be greater than 0'
3928 RETURN
3929 END IF
3930 CASE ('PIO_REARR')
3931 npts=
load_i(nval, rval, 1, ivalue)
3932 IF ((ivalue(1).lt.1).or.(ivalue(1).gt.2)) THEN
3933 IF (
master)
WRITE (out,260)
'pio_rearranger = ', &
3934 & ivalue(1), &
3935 & 'Must be 1 or 2'
3937 RETURN
3938 ELSE
3939 SELECT CASE (ivalue(1))
3940 CASE (1)
3942 CASE (2)
3944 END SELECT
3945 END IF
3946 CASE ('PIO_REARRCOM')
3947 npts=
load_i(nval, rval, 1, ivalue)
3948 IF ((ivalue(1).lt.0).or.(ivalue(1).gt.1)) THEN
3949 IF (
master)
WRITE (out,260)
'pio_rearr_opt_comm = ', &
3950 & ivalue(1), &
3951 & 'Must be 0 or 1'
3953 RETURN
3954 ELSE
3955 SELECT CASE (ivalue(1))
3956 CASE (0)
3958 CASE (1)
3960 END SELECT
3961 END IF
3962 CASE ('PIO_REARRDIR')
3963 npts=
load_i(nval, rval, 1, ivalue)
3964 IF ((ivalue(1).lt.0).or.(ivalue(1).gt.3)) THEN
3965 IF (
master)
WRITE (out,260)
'pio_rearr_opt_fcd = ', &
3966 & ivalue(1), &
3967 & 'Must be between 0 and 3'
3969 RETURN
3970 ELSE
3971 SELECT CASE (ivalue(1))
3972 CASE (0)
3974 CASE (1)
3976 CASE (2)
3978 CASE (3)
3980 END SELECT
3981 END IF
3982 CASE ('PIO_C2I_HS')
3983 npts=
load_l(nval, cval, 1, lvalue)
3985 CASE ('PIO_C2I_Send')
3986 npts=
load_l(nval, cval, 1, lvalue)
3988 CASE ('PIO_C2I_Preq')
3989 npts=
load_i(nval, rval, 1, ivalue)
3990 IF (ivalue(1).lt.0) THEN
3992 ELSE
3994 END IF
3995 CASE ('PIO_I2C_HS')
3996 npts=
load_l(nval, cval, 1, lvalue)
3998 CASE ('PIO_I2C_Send')
3999 npts=
load_l(nval, cval, 1, lvalue)
4001 CASE ('PIO_I2C_Preq')
4002 npts=
load_i(nval, rval, 1, ivalue)
4003 IF (ivalue(1).lt.0) THEN
4005 ELSE
4007 END IF
4008#endif
4009 CASE ('NC_SHUFFLE')
4010 npts=
load_i(nval, rval, 1, ivalue)
4012 CASE ('NC_DEFLATE')
4013 npts=
load_i(nval, rval, 1, ivalue)
4015 CASE ('NC_DLEVEL')
4016 npts=
load_i(nval, rval, 1, ivalue)
4018 CASE ('DAINAME')
4019 label='DAI - Data Assimilation Initial/Restart fields'
4020 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4022 CASE ('GSTNAME')
4023 label='GST - generalized stability theory analysis'
4024 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4026 CASE ('RSTNAME')
4027 label='RST - restart fields'
4028 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4030 CASE ('HISNAME')
4031 label='HIS - nonlinear model history fields'
4032 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4034 CASE ('XTRNAME')
4035 label='XTR - nonlinear model extraction history fields'
4036 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4038 CASE ('QCKNAME')
4039 label='QCK - nonlinear model quicksave fields'
4040 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4042 CASE ('TLMNAME')
4043 label='TLM - tangent linear model history fields'
4044 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4046 CASE ('TLFNAME')
4047 label='TLF - tangent linear model impulse forcing'
4048 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4050 CASE ('ADJNAME')
4051 label='ADM - adjoint model history fields'
4052 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4054 CASE ('AVGNAME')
4055 label='AVG - time-averaged history fields'
4056 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4058 CASE ('HARNAME')
4059 label='HAR - least-squares detiding harmonics'
4060 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4062 CASE ('DIANAME')
4063 label='DIA - time-averaged diagnostics fields'
4064 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4066 CASE ('STANAME')
4067 label='STA - stations time-series'
4068 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4070 CASE ('FLTNAME')
4071 label='FLT - Lagragian particles trajectories'
4072 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4074 CASE ('GRDNAME')
4075 label='GRD - application grid'
4076 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4078 CASE ('GRXNAME')
4079 label='GRX - I/O histrory extract grid'
4080 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4082 CASE ('ININAME')
4083 label='INI - nonlinear model initial conditions'
4084 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4086 CASE ('IRPNAME')
4087 label='IRP - representer model initial conditions'
4088 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4090 CASE ('ITLNAME')
4091 label='ITL - tangent linear model initial conditions'
4092 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4094 CASE ('IADNAME')
4095 label='IAD - adjoint model initial conditions'
4096 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4098 CASE ('FWDNAME')
4099 label='FWD - basic state forward trajectory'
4100 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4102 CASE ('ADSNAME')
4103 label='ADS - adjoint sensitivity functional'
4104 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4106#ifdef RBL4DVAR_FCT_SENSITIVITY
4107# ifndef OBS_SPACE
4108 CASE ('FOInameA')
4109 label='FOIA - adjoint sensitivity functional A'
4110 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4112 CASE ('FOInameB')
4113 label='FOIB - adjoint sensitivity functional B'
4114 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4116# endif
4117 CASE ('FCTnameA')
4118 label='FCTA - forecast state forward trajectory A'
4119 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4121 CASE ('FCTnameB')
4122 label='FCTB - forecast state forward trajectory B'
4123 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4125#endif
4126 CASE ('NGCNAME')
4129 END DO
4130 ngcname=trim(adjustl(cval(nval)))
4131 CASE ('NBCFILES')
4136 & 'Must be equal or greater than one.'
4138 RETURN
4139 END IF
4140 END DO
4144# if defined PIO_LIB && defined DISTRIBUTE
4146# endif
4147 allocate ( nbccount(max_ffiles,
ngrids) )
4149# if defined PIO_LIB && defined DISTRIBUTE
4151# endif
4152 nbccount(1:max_ffiles,1:
ngrids)=0
4153 CASE ('BRYNAME')
4154 label='BRY - lateral open boundary conditions'
4157 IF (
master)
WRITE (out,290)
'nBCfiles = ', &
4159 & 'KeyWord ''NBCFILES'' unread or misssing from '// &
4160 & 'input script ''roms.in''.'
4162 RETURN
4163 END IF
4164 END DO
4165 npts=
load_s2d(nval, cval, cdim, line, label, ibcfile, &
4168 CASE ('NCLMFILES')
4172 IF (
master)
WRITE (out,260)
'NCLMFILES', &
4174 & 'Must be equal or greater than one.'
4176 RETURN
4177 END IF
4178 END DO
4182# if defined PIO_LIB && defined DISTRIBUTE
4184# endif
4185 allocate ( nclmcount(max_ffiles,
ngrids) )
4187# if defined PIO_LIB && defined DISTRIBUTE
4189# endif
4190 nclmcount(1:max_ffiles,1:
ngrids)=0
4191 CASE ('CLMNAME')
4192 label='CLM - climatology fields'
4195 IF (
master)
WRITE (out,290)
'nCLMfiles = ', &
4197 & 'KeyWord ''NCLMFILES'' unread or misssing from '// &
4198 & 'input script ''roms.in''.'
4200 RETURN
4201 END IF
4202 END DO
4203 npts=
load_s2d(nval, cval, cdim, line, label, iclmfile, &
4206 CASE ('NUDNAME')
4207 label='NUD - nudging coefficients'
4208 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4210 CASE ('SSFNAME')
4211 label='SSF - Sources/Sinks forcing fields'
4212 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4214# if defined SSH_TIDES || defined UV_TIDES || \
4215 defined tide_generating_forces
4216 CASE ('TIDENAME')
4217 label='TIDE - Tidal forcing fields'
4218 npts=
load_s1d(nval, cval, cdim, line, label, igrid, &
4220# endif
4221 CASE ('NFFILES')
4226 & 'Must be equal or greater than one.'
4228 RETURN
4229 END IF
4230 END DO
4234# if defined PIO_LIB && defined DISTRIBUTE
4236# endif
4237 allocate ( ncount(max_ffiles,
ngrids) )
4239# if defined PIO_LIB && defined DISTRIBUTE
4241# endif
4242 ncount(1:max_ffiles,1:
ngrids)=0
4243 CASE ('FRCNAME')
4244 label='FRC - forcing fields'
4247 IF (
master)
WRITE (out,290)
'nFfiles = ', &
4249 & 'KeyWord ''NFFILES'' unread or misssing from '// &
4250 & 'input script ''roms.in''.'
4252 RETURN
4253 END IF
4254 END DO
4255 npts=
load_s2d(nval, cval, cdim, line, label, ifile, &
4258 CASE ('APARNAM')
4261 END DO
4262 aparnam=trim(adjustl(cval(nval)))
4263 CASE ('SPOSNAM')
4266 END DO
4267 sposnam=trim(adjustl(cval(nval)))
4268 CASE ('FPOSNAM')
4271 END DO
4272 fposnam=trim(adjustl(cval(nval)))
4273 CASE ('IPARNAM')
4276 END DO
4277 iparnam=trim(adjustl(cval(nval)))
4278 CASE ('BPARNAM')
4281 END DO
4282 bparnam=trim(adjustl(cval(nval)))
4283 CASE ('SPARNAM')
4286 END DO
4287 sparnam=trim(adjustl(cval(nval)))
4288 CASE ('USRNAME')
4291 END DO
4292 usrname=trim(adjustl(cval(nval)))
4293 END SELECT
4295 END IF
4296 END DO
4297 10
IF (
master)
WRITE (out,50) line
4299 RETURN
4300 20 CLOSE (inp)
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310#ifndef NESTING
4311 IF (.not.got_nestlayers) THEN
4315 END IF
4318 END IF
4319 END IF
4322#else
4323 IF (.not.got_nestlayers) THEN
4325 WRITE (out,320) 'NestLayers', &
4326 & 'Add "NestLayers" keyword after "Ngrids".'
4328 RETURN
4329 END IF
4330 END IF
4333 WRITE (out,320) 'GridsInLayer', &
4334 & 'Add "GridsInLayer" keyword after "NestLayers".'
4336 RETURN
4337 END IF
4338 END IF
4339#endif
4340
4341#ifdef SP4DVAR
4342
4343
4344
4345
4349 WRITE (out,350)
'Nsaddle = ',
nsaddle, ng, &
4351 & 'MOD(ntimes/nHis,Nsaddle) = ', &
4353 & 'must be zero for legal computations.', &
4354 & 'Revise input parameters.'
4355 END IF
4357 RETURN
4358 END IF
4359 END DO
4360#endif
4361
4362# if defined FORWARD_FLUXES && \
4363 (defined bulk_fluxes || defined frc_coupling)
4364
4365
4366
4367
4368
4372# ifdef ATM_PRESS
4374# endif
4375# ifdef SOLVE3D
4378# if defined EMINUSP || defined FRC_COUPLING
4380# endif
4381# endif
4382 END DO
4383#endif
4384
4385#if defined FORWARD_MIXING && defined SOLVE3D && \
4386 (defined gls_mixing || defined lmd_mixing || \
4387 defined my25_mixing)
4388
4389
4390
4391
4396 END DO
4397#endif
4398
4399#if defined FORCING_SV || defined SO_SEMI || \
4400 defined stochastic_opt
4401
4402
4403
4404
4407# ifndef SOLVE3D
4410# else
4416 END IF
4419 END IF
4420 END DO
4421# endif
4424 END DO
4425#endif
4426
4427
4428
4429
4433 END IF
4436 END IF
4437#ifdef SOLVE3D
4440 END IF
4443 END IF
4444#endif
4445#ifdef AVERAGES
4448 END IF
4451 END IF
4452# ifdef SOLVE3D
4455 END IF
4458 END IF
4459# endif
4460#endif
4461 END DO
4462
4463
4464
4466
4467
4468
4469 IF ((
nhis(ng).gt.0).and.any(
hout(:,ng)))
THEN
4471 END IF
4472
4473#ifdef GRID_EXTRACT
4474
4475
4476
4477 IF ((
nxtr(ng).gt.0).and.any(
hout(:,ng)))
THEN
4479 END IF
4480#endif
4481
4482
4483
4484 IF ((
nqck(ng).gt.0).and.any(
qout(:,ng)))
THEN
4486 END IF
4487
4488# if defined AVERAGES && defined AVERAGES_DETIDE && \
4489 (defined ssh_tides || defined uv_tides)
4490
4491
4492
4493
4494 IF (
nrrec(ng).ne.0)
THEN
4496 END IF
4497# endif
4498
4499
4500
4501#ifndef ANA_SSH
4503#endif
4504#ifndef ANA_M2CLIMA
4506#endif
4507#ifdef SOLVE3D
4508# ifndef ANA_M3CLIMA
4510# endif
4511# ifndef ANA_TCLIMA
4513# endif
4514# if defined TS_MIX_CLIMA && (defined TS_DIF2 || defined TS_DIF4)
4516# endif
4517#endif
4518
4519#if defined I4DVAR || defined WEAK_CONSTRAINT
4520
4521
4522
4524#endif
4525
4526#if defined AVERAGES && defined AVERAGES_DETIDE && \
4527 (defined ssh_tides || defined uv_tides)
4528
4529
4530
4531
4534 END IF
4537 END IF
4540 END IF
4541# ifdef SOLVE3D
4544 END IF
4547 END IF
4552 END IF
4553 END DO
4554# endif
4555#endif
4556#if defined I4DVAR
4557
4558
4559
4560
4562#endif
4563#if defined RBL4DVAR || defined R4DVAR
4564
4565
4566
4567
4570 END IF
4571#endif
4572#if defined I4DVAR || defined RBL4DVAR || defined R4DVAR
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4585 END IF
4586#endif
4587#if defined STOCHASTIC_OPT && !defined STOCH_OPT_WHITE
4588
4589
4590
4591
4593#endif
4594#if defined FOUR_DVAR || defined IMPULSE
4595
4596
4597
4598
4599# if defined CORRELATION || defined WEAK_CONSTRAINT
4600# ifdef SP4DVAR
4602# else
4605 ELSE
4607 END IF
4608# ifdef CORRELATION
4610# endif
4611# endif
4612# else
4614# endif
4615#endif
4616#ifdef WEAK_CONSTRAINT
4617# ifndef ARRAY_MODES
4618
4619
4620
4621
4622
4623# ifdef SP4DVAR
4631# else
4634# endif
4635# endif
4636#endif
4637#if defined TIME_CONV && defined WEAK_CONSTRAINT
4638
4639
4640
4642#endif
4643#if defined FOUR_DVAR
4644
4645
4646
4647
4648
4649
4650
4651
4653# if defined I4DVAR || defined I4DVAR_ANA_SENSITIVITY
4655# endif
4656#endif
4657
4658
4659
4661 & (
navg(ng).eq.0))
THEN
4663 END IF
4665 & (
ndia(ng).eq.0))
THEN
4667 END IF
4669 & (
nflt(ng).eq.0))
THEN
4671 END IF
4673 & (
nhis(ng).eq.0))
THEN
4675 END IF
4677 & (
nqck(ng).eq.0))
THEN
4679 END IF
4681 & (
nrst(ng).eq.0))
THEN
4683 END IF
4685 & (
nsta(ng).eq.0))
THEN
4687 END IF
4688
4689
4690
4692#ifndef ANA_FSOBC
4694# if defined ADJOINT || defined TANGENT || defined TL_IOMS
4696# endif
4697#endif
4698#ifndef ANA_M2OBC
4701# if defined ADJOINT || defined TANGENT || defined TL_IOMS
4704# endif
4705#endif
4706#ifdef SOLVE3D
4707# ifndef ANA_M3OBC
4710# if defined ADJOINT || defined TANGENT || defined TL_IOMS
4713# endif
4714# endif
4715# ifndef ANA_TOBC
4717# if defined ADJOINT || defined TANGENT || defined TL_IOMS
4719# endif
4720# endif
4721#endif
4722 END DO
4723
4724
4725
4726
4732 outfiles=outfiles+1
4733 END IF
4735 END IF
4736#ifdef GRID_EXTRACT
4741 outfiles=outfiles+1
4742 END IF
4744 END IF
4745#endif
4750 outfiles=outfiles+1
4751 END IF
4753 END IF
4754#ifdef ADJOINT
4759 outfiles=outfiles+1
4760 END IF
4762 END IF
4763#endif
4764#ifdef AVERAGES
4769 outfiles=outfiles+1
4770 END IF
4773 END IF
4774#endif
4775#ifdef DIAGNOSTICS
4780 outfiles=outfiles+1
4781 END IF
4784 END IF
4785#endif
4786#if defined TANGENT || defined TL_IOMS
4791 outfiles=outfiles+1
4792 END IF
4794 END IF
4795#endif
4796 END DO
4797
4798#ifdef FORWARD_FLUXES
4799
4800
4801
4802
4804 outfiles=
qck(ng)%Nfiles
4805 allocate (
blk(ng)%Nrec(outfiles) )
4806 allocate (
blk(ng)%time_min(outfiles) )
4807 allocate (
blk(ng)%time_max(outfiles) )
4808 allocate (
blk(ng)%Vid(
nv) )
4809 allocate (
blk(ng)%Tid(
mt) )
4810 allocate (
blk(ng)%files(outfiles) )
4811 blk(ng)%Nfiles=outfiles
4815 blk(ng)%Vid(1:
nv)=-1
4816 blk(ng)%Tid(1:
mt)=-1
4818 blk(ng)%time_min=0.0_dp
4819 blk(ng)%time_max=0.0_dp
4820 blk(ng)%label=
'BLK - nonlinear model bulk fluxes'
4821 lstr=len(
blk(ng)%name)
4822 DO i=1,lstr
4823 blk(ng)%head(i:i)=blank
4824 blk(ng)%base(i:i)=blank
4825 blk(ng)%name(i:i)=blank
4826 END DO
4827 DO k=1,outfiles
4828 DO i=1,lstr
4829 blk(ng)%files(k)(i:i)=blank
4830 END DO
4831 END DO
4832 END DO
4833#endif
4834
4835
4836
4837
4838
4839#if defined PIO_LIB && defined DISTRIBUTE
4840# ifdef ASYNCHRONOUS_SCORPIO
4841
4842
4843
4844
4845
4846
4847 CALL set_pio_async
4849# endif
4850
4851
4852
4855
4856
4857
4858
4860
4861
4862
4863#endif
4864 IF (
master.and.lwrite)
THEN
4868#ifdef DISTRIBUTE
4869# if defined PIO_LIB && \
4870 (defined asynchronous_pio || defined asynchronous_scorpio)
4871 & peer_comm_world, peersize, &
4874# ifdef ASYNCHRONOUS_SCORPIO
4875 & inter_comm_world, &
4876# endif
4877# endif
4878# ifdef DISJOINTED
4879 & full_comm_world, fullsize, nsubgroups, &
4882# ifdef CONCURRENT_KERNEL
4883 & task_comm_world, tasksize, &
4884 & 0, (fullsize/tasksize)-1, &
4885# endif
4886# endif
4887# if !(defined PIO_LIB && \
4888 (defined asynchronous_pio || defined asynchronous_scorpio)) && \
4889
4891# endif
4893#endif
4894#ifdef GIT_URL
4896#endif
4899
4901
4902
4903
4904
4905#ifdef DISTRIBUTE
4910 label='NtileI * NtileJ ='
4911
4912# ifdef SP4DVAR
4913# ifdef DISJOINTED
4914# ifdef CONCURRENT_KERNEL
4915 maxpets=fullsize
4917 label='NtileI * NtileJ * Nsaddle * 2 ='
4918# else
4919 maxpets=fullsize
4921 label='NtileI * NtileJ * Nsaddle ='
4922# endif
4923# else
4926 label='NtileI * NtileJ ='
4927# endif
4928# endif
4929# if defined PIO_LIB && defined DISTRIBUTE && \
4930 (defined asynchronous_pio || defined asynchronous_scorpio)
4931 maxpets=peersize
4934 label='(NtileI * NtileJ) + pio_NumIOtasks ='
4935 ELSE
4937 label='NtileI * NtileJ ='
4938 END IF
4939# endif
4940 IF (npets.ne.maxpets) THEN
4941 WRITE (out,80) ng, trim(label), npets, maxpets
4943 RETURN
4944 END IF
4945#else
4949 WRITE (out,100) ng
4951 RETURN
4952 END IF
4954 WRITE (out,100) ng
4956 RETURN
4957 END IF
4958#endif
4959
4960
4961
4962 WRITE (out,110) ng
4963 WRITE (out,120)
ntimes(ng),
'ntimes', &
4964 & 'Number of timesteps for 3-D equations.'
4965#if defined RBL4DVAR_FCT_SENSITIVITY
4966 WRITE (out,120)
ntimes_ana(ng),
'ntimes_ana', &
4967 & 'Observation impacts analysis interval.'
4968 WRITE (out,120)
ntimes_fct(ng),
'ntimes_fct', &
4969 & 'Observation impacts forecast interval.'
4970#endif
4971 WRITE (out,140)
dt(ng),
'dt', &
4972 & 'Timestep size (s) for 3-D equations.'
4973 WRITE (out,130)
ndtfast(ng),
'ndtfast', &
4974 & 'Number of timesteps for 2-D equations between', &
4975 & 'each 3D timestep.'
4976 WRITE (out,120)
erstr,
'ERstr', &
4977 & 'Starting ensemble/perturbation run number.'
4978 WRITE (out,120)
erend,
'ERend', &
4979 & 'Ending ensemble/perturbation run number.'
4980#ifdef FOUR_DVAR
4981 WRITE (out,120)
nouter,
'Nouter', &
4982 & 'Maximun number of 4DVAR outer loop iterations.'
4983#endif
4984#if defined I4DVAR || defined I4DVAR_ANA_SENSITIVITY || \
4985 defined hessian_fsv || defined hessian_so || \
4986 defined hessian_sv || defined sensitivity_4dvar || \
4987 defined rbl4dvar || defined r4dvar || \
4988 defined sp4dvar || defined tl_rbl4dvar || \
4989 defined tl_r4dvar
4990 WRITE (out,120)
ninner,
'Ninner', &
4991 & 'Maximum number of 4D-Var inner loop iterations.'
4992# ifdef SP4DVAR
4993 WRITE (out,120)
nsaddle,
'Nsaddle', &
4994 & 'Number of intervals for saddle point algorithm.'
4995# endif
4996#endif
4997#ifdef STOCHASTIC_OPT
4999 & 'Number of stochastic optimals timestep intervals.'
5000#endif
5001#ifdef PROPAGATOR
5002 WRITE (out,120)
nev,
'NEV', &
5003 & 'Number of Lanczos/Arnoldi eigenvalues to compute.'
5004 WRITE (out,120)
ncv,
'NCV', &
5005 & 'Number of Lanczos/Arnoldi eigenvectors to compute.'
5006#endif
5007 WRITE (out,120)
nrrec(ng),
'nrrec', &
5008 & 'Number of restart records to read from disk.'
5009 WRITE (out,170)
lcyclerst(ng),
'LcycleRST', &
5010 & 'Switch to recycle time-records in restart file.'
5011 WRITE (out,130)
nrst(ng),
'nRST', &
5012 & 'Number of timesteps between the writing of data', &
5013 & 'into restart fields.'
5014 WRITE (out,130)
ninfo(ng),
'ninfo', &
5015 & 'Number of timesteps between print of information', &
5016 & 'to standard output.'
5017#ifdef STATIONS
5018 WRITE (out,130)
nsta(ng),
'nSTA', &
5019 & 'Number of timesteps between the writing of data', &
5020 & 'the stations file.'
5021#endif
5022#ifdef FLOATS
5023 WRITE (out,130)
nflt(ng),
'nFLT', &
5024 & 'Number of timesteps between the writing of data', &
5025 & 'into floats file.'
5026#endif
5027 WRITE (out,170)
ldefout(ng),
'ldefout', &
5028 & 'Switch to create a new output NetCDF file(s).'
5029 WRITE (out,130)
nhis(ng),
'nHIS', &
5030 & 'Number of timesteps between the writing fields', &
5031 & 'into history file.'
5033 WRITE (out,130)
ndefhis(ng),
'ndefHIS', &
5034 & 'Number of timesteps between the creation of new', &
5035 & 'history files.'
5036 END IF
5037#ifdef GRID_EXTRACT
5038 WRITE (out,130)
nxtr(ng),
'nXTR', &
5039 & 'Number of timesteps between the writing fields', &
5040 & 'into the extract file.'
5042 WRITE (out,130)
ndefxtr(ng),
'ndefXTR', &
5043 & 'Number of timesteps between the creation of new', &
5044 & 'extract files.'
5045 END IF
5046#endif
5047 WRITE (out,130)
nqck(ng),
'nQCK', &
5048 & 'Number of timesteps between the writing fields', &
5049 & 'into quicksave file.'
5051 WRITE (out,130)
ndefqck(ng),
'ndefQCK', &
5052 & 'Number of timesteps between the creation of new', &
5053 & 'quicksave files.'
5054 END IF
5055#if defined AVERAGES || \
5056 (defined ad_averages && defined adjoint) || \
5057 (defined rp_averages && defined tl_ioms) || \
5058 (defined tl_averages && defined tangent)
5059 WRITE (out,130)
ntsavg(ng),
'ntsAVG', &
5060 & 'Starting timestep for the accumulation of output', &
5061 & 'time-averaged data.'
5062 WRITE (out,130)
navg(ng),
'nAVG', &
5063 & 'Number of timesteps between the writing of', &
5064 & 'time-averaged data into averages file.'
5066 WRITE (out,130)
ndefavg(ng),
'ndefAVG', &
5067 & 'Number of timesteps between the creation of new', &
5068 & 'time-averaged files.'
5069 END IF
5070#endif
5071#ifdef DIAGNOSTICS
5072 WRITE (out,130)
ntsdia(ng),
'ntsDIA', &
5073 & 'Starting timestep for the accumulation of output', &
5074 & 'time-averaged diagnostics data.'
5075 WRITE (out,130)
ndia(ng),
'nDIA', &
5076 & 'Number of timesteps between the writing of', &
5077 & 'time-averaged data into diagnostics file.'
5079 WRITE (out,130)
ndefdia(ng),
'ndefDIA', &
5080 & 'Number of timesteps between the creation of new', &
5081 & 'diagnostic files.'
5082 END IF
5083#endif
5084#ifdef TANGENT
5085 WRITE (out,170)
lcycletlm(ng),
'LcycleTLM', &
5086 & 'Switch to recycle time-records in tangent file.'
5087 WRITE (out,130)
ntlm(ng),
'nTLM', &
5088 & 'Number of timesteps between the writing of', &
5089 & 'data into tangent file.'
5091 WRITE (out,130)
ndeftlm(ng),
'ndefTLM', &
5092 & 'Number of timesteps between the creation of new', &
5093 & 'tangent files.'
5094 END IF
5095#endif
5096#ifdef ADJOINT
5097 WRITE (out,170)
lcycleadj(ng),
'LcycleADJ', &
5098 & 'Switch to recycle time-records in adjoint file.'
5099 WRITE (out,130)
nadj(ng),
'nADJ', &
5100 & 'Number of timesteps between the writing of', &
5101 & 'data into adjoint file.'
5103 WRITE (out,130)
ndefadj(ng),
'ndefADJ', &
5104 & 'Number of timesteps between the creation of new', &
5105 & 'adjoint files.'
5106 END IF
5107#endif
5108#ifdef ADJUST_BOUNDARY
5109 WRITE (text,
'(i8)')
nbrec(ng)
5110 WRITE (out,130)
nobc(ng),
'nOBC', &
5111 & 'Number of timesteps between 4D-Var adjustment of', &
5112 & 'open boundaries, Nbrec = '//trim(adjustl(text))
5113 IF (
nbrec(ng).gt.500)
THEN
5114 WRITE (out,'(t32,a)') 'WARNING: ''Nbrec'' is large, '// &
5115 & 'change ''ntimes'' or ''nOBC'' to lower memory demand.'
5116 END IF
5117#endif
5118#if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
5119 WRITE (text,
'(i8)')
nfrec(ng)
5120 WRITE (out,130)
nsff(ng),
'nSFF', &
5121 & 'Number of timesteps between 4D-Var adjustment of', &
5122 & 'surface forcing fields, Nfrec = '//trim(adjustl(text))
5123 IF (
nfrec(ng).gt.500)
THEN
5124 WRITE (out,'(t32,a)') 'WARNING: ''Nfrec'' is large, '// &
5125 & 'change ''ntimes'' or ''nSFF'' to lower memory demand.'
5126 END IF
5127#endif
5128#ifdef PROPAGATOR
5129 WRITE (out,170)
lmultigst,
'LmultiGST', &
5130 & 'Switch to write one GST eigenvector per file.'
5131 WRITE (out,170)
lrstgst,
'LrstGST', &
5132 & 'Switch to restart GST analysis.'
5134 & 'Maximum number of GST algorithm iterations.'
5135 WRITE (out,130)
ngst,
'nGST', &
5136 & 'Number of GST iterations between storing check', &
5137 & 'pointing data into NetCDF file.'
5138 WRITE (out,210)
ritz_tol,
'Ritz_tol', &
5139 & 'Relative accuracy of Ritz values computed in the', &
5140 & 'GST analysis.'
5141#endif
5142#ifdef SOLVE3D
5143# ifdef TS_DIF2
5145 itrc=i
5146# ifdef T_PASSIVE
5148# endif
5149 WRITE (out,190)
nl_tnu2(itrc,ng),
'nl_tnu2', itrc, &
5150 & 'NLM Horizontal, harmonic mixing coefficient', &
5151 & '(m2/s) for tracer ', itrc, &
5153# ifdef ADJOINT
5154 WRITE (out,190)
ad_tnu2(itrc,ng),
'ad_tnu2', itrc, &
5155 & 'ADM Horizontal, harmonic mixing coefficient', &
5156 & '(m2/s) for tracer ', itrc, &
5158# endif
5159# if defined TANGENT || defined TL_IOMS
5160 WRITE (out,190)
tl_tnu2(itrc,ng),
'tl_tnu2', itrc, &
5161 & 'TLM Horizontal, harmonic mixing coefficient', &
5162 & '(m2/s) for tracer ', itrc, &
5164# endif
5165 END DO
5166# endif
5167# ifdef TS_DIF4
5169 itrc=i
5170# ifdef T_PASSIVE
5172# endif
5173 WRITE (out,190)
nl_tnu4(itrc,ng),
'nl_tnu4', itrc, &
5174 & 'NLM Horizontal, biharmonic mixing coefficient', &
5175 & '(m4/s) for tracer ', itrc, &
5177# ifdef ADJOINT
5178 WRITE (out,190)
ad_tnu4(itrc,ng),
'ad_tnu4', itrc, &
5179 & 'ADM Horizontal, biharmonic mixing coefficient', &
5180 & '(m4/s) for tracer ', itrc, &
5182# endif
5183# if defined TANGENT || defined TL_IOMS
5184 WRITE (out,190)
tl_tnu4(itrc,ng),
'tl_tnu4', itrc, &
5185 & 'TLM Horizontal, biharmonic mixing coefficient', &
5186 & '(m4/s) for tracer ', itrc, &
5188# endif
5189 END DO
5190# endif
5191#endif
5192#ifdef UV_VIS2
5193 WRITE (out,210)
nl_visc2(ng),
'nl_visc2', &
5194 & 'NLM Horizontal, harmonic mixing coefficient', &
5195 & '(m2/s) for momentum.'
5196# ifdef ADJOINT
5197 WRITE (out,210)
ad_visc2(ng),
'ad_visc2', &
5198 & 'ADM Horizontal, harmonic mixing coefficient', &
5199 & '(m2/s) for momentum.'
5200# endif
5201# if defined TANGENT || defined TL_IOMS
5202 WRITE (out,210)
tl_visc2(ng),
'tl_visc2', &
5203 & 'TLM Horizontal, harmonic mixing coefficient', &
5204 & '(m2/s) for momentum.'
5205# endif
5206#endif
5207#ifdef UV_VIS4
5208 WRITE (out,210)
nl_visc4(ng),
'nl_visc4', &
5209 & 'NLM Horizontal, biharmonic mixing coefficient', &
5210 & '(m4/s) for momentum.'
5211# ifdef ADJOINT
5212 WRITE (out,210)
ad_visc4(ng),
'ad_visc4', &
5213 & 'ADM Horizontal, biharmonic mixing coefficient', &
5214 & '(m4/s) for momentum.'
5215# endif
5216# if defined TANGENT || defined TL_IOMS
5217 WRITE (out,210)
tl_visc4(ng),
'tl_visc4', &
5218 & 'TLM Horizontal, biharmonic mixing coefficient', &
5219 & '(m4/s) for momentum.'
5220# endif
5221#endif
5223 WRITE (out,170)
luvsponge(ng),
'LuvSponge', &
5224 & 'Turning ON sponge on horizontal momentum.'
5225 ELSE
5226 WRITE (out,170)
luvsponge(ng),
'LuvSponge', &
5227 & 'Turning OFF sponge on horizontal momentum.'
5228 END IF
5229#ifdef SOLVE3D
5233 & 'Turning ON sponge on tracer ', i, &
5235 ELSE
5237 & 'Turning OFF sponge on tracer ', i, &
5239 END IF
5240 END DO
5241# ifdef T_PASSIVE
5246 & 'Turning ON sponge on tracer ', i, &
5248 ELSE
5250 & 'Turning OFF sponge on tracer ', i, &
5252 END IF
5253 END DO
5254# endif
5256 itrc=i
5257# ifdef T_PASSIVE
5259# endif
5260 WRITE (out,190)
akt_bak(itrc,ng),
'Akt_bak', itrc, &
5261 & 'Background vertical mixing coefficient (m2/s)', &
5262 &
'for tracer ', itrc, trim(
vname(1,
idtvar(itrc)))
5263 END DO
5264# if defined LIMIT_VDIFF && \
5265 (defined gls_mixing || defined lmd_mixing || defined my25_mixing)
5267 WRITE (out,190)
akt_limit(itrc,ng),
'Akt_limit', itrc, &
5268 & 'Vertical diffusion upper threshold (m2/s)', &
5269 &
'for tracer ', itrc, trim(
vname(1,
idtvar(itrc)))
5270 END DO
5271# endif
5272 WRITE (out,210)
akv_bak(ng),
'Akv_bak', &
5273 & 'Background vertical mixing coefficient (m2/s)', &
5274 & 'for momentum.'
5275# if defined LIMIT_VVISC && \
5276 (defined gls_mixing || defined lmd_mixing || defined my25_mixing)
5277 WRITE (out,210)
akv_limit(ng),
'Akv_limit', &
5278 & 'Vertical viscosity upper threshold (m2/s)', &
5279 & 'for momentum.'
5280# endif
5281# if defined MY25_MIXING || defined GLS_MIXING
5282 WRITE (out,210)
akk_bak(ng),
'Akk_bak', &
5283 & 'Background vertical mixing coefficient (m2/s)', &
5284 & 'for turbulent energy.'
5285 WRITE (out,210)
akp_bak(ng),
'Akp_bak', &
5286 & 'Background vertical mixing coefficient (m2/s)', &
5287 & 'for turbulent generic statistical field.'
5288# ifdef TKE_DIF2
5289 WRITE (out,210)
tkenu2(ng),
'tkenu2', &
5290 & 'Horizontal, harmonic mixing coefficient (m2/s)', &
5291 & 'for turbulent energy.'
5292# endif
5293# ifdef TKE_DIF4
5294 WRITE (out,210)
tkenu4(ng),
'tkenu4', &
5295 & 'Horizontal, biharmonic mixing coefficient (m4/s)', &
5296 & 'for turbulent energy.'
5297# endif
5298# endif
5299# ifdef GLS_MIXING
5300 WRITE (out,140)
gls_p(ng),
'gls_p', &
5301 & 'GLS stability exponent.'
5302 WRITE (out,140)
gls_m(ng),
'gls_m', &
5303 & 'GLS turbulent kinetic energy exponent.'
5304 WRITE (out,140)
gls_n(ng),
'gls_n', &
5305 & 'GLS turbulent length scale exponent.'
5306 WRITE (out,200)
gls_kmin(ng),
'gls_Kmin', &
5307 & 'GLS minimum value of turbulent kinetic energy.'
5308 WRITE (out,200)
gls_pmin(ng),
'gls_Pmin', &
5309 & 'GLS minimum value of dissipation.'
5310 WRITE (out,200)
gls_cmu0(ng),
'gls_cmu0', &
5311 & 'GLS stability coefficient.'
5312 WRITE (out,200)
gls_c1(ng),
'gls_c1', &
5313 & 'GLS shear production coefficient.'
5314 WRITE (out,200)
gls_c2(ng),
'gls_c2', &
5315 & 'GLS dissipation coefficient.'
5316 WRITE (out,200)
gls_c3m(ng),
'gls_c3m', &
5317 & 'GLS stable buoyancy production coefficient.'
5318 WRITE (out,200)
gls_c3p(ng),
'gls_c3p', &
5319 & 'GLS unstable buoyancy production coefficient.'
5320 WRITE (out,200)
gls_sigk(ng),
'gls_sigk', &
5321 & 'GLS constant Schmidt number for TKE.'
5322 WRITE (out,200)
gls_sigp(ng),
'gls_sigp', &
5323 & 'GLS constant Schmidt number for PSI.'
5325 & 'Charnock factor for Zos calculation.'
5327 & 'Factor for Zos calculation using Hsig(Awave).'
5328 WRITE (out,140)
sz_alpha(ng),
'sz_alpha', &
5329 & 'Factor for Wave dissipation surface tke flux .'
5330 WRITE (out,140)
crgban_cw(ng),
'crgban_cw', &
5331 & 'Factor for Craig/Banner surface tke flux.'
5332 WRITE (out,140)
wec_alpha(ng),
'wec_alpha', &
5333 & 'WEC factor for roller/breaking energy distribution.'
5334# endif
5335# ifdef FORWARD_MIXING
5337 itrc=i
5338# ifdef T_PASSIVE
5340# endif
5341# ifdef ADJOINT
5342 WRITE (out,190)
ad_akt_fac(itrc,ng),
'ad_Akt_fac', itrc, &
5343 & 'ADM basic state vertical mixing scale factor', &
5344 &
'for tracer ', itrc, trim(
vname(1,
idtvar(itrc)))
5345# endif
5346# if defined TANGENT || defined TL_IOMS
5347 WRITE (out,190)
tl_akt_fac(itrc,ng),
'tl_Akt_fac', itrc, &
5348 & 'TLM basic state vertical mixing scale factor', &
5349 &
'for tracer ', itrc, trim(
vname(1,
idtvar(itrc)))
5350# endif
5351 END DO
5352# ifdef ADJOINT
5353 WRITE (out,210)
ad_akv_fac(ng),
'ad_Akv_fac', &
5354 & 'ADM basic state vertical mixing scale factor', &
5355 & 'for momentum.'
5356# endif
5357# if defined TANGENT || defined TL_IOMS
5358 WRITE (out,210)
tl_akv_fac(ng),
'tl_Akv_fac', &
5359 & 'TLM basic state vertical mixing scale factor', &
5360 & 'for momentum.'
5361# endif
5362# endif
5363#endif
5364 WRITE (out,200)
rdrg(ng),
'rdrg', &
5365 & 'Linear bottom drag coefficient (m/s).'
5366 WRITE (out,200)
rdrg2(ng),
'rdrg2', &
5367 & 'Quadratic bottom drag coefficient.'
5368 WRITE (out,200)
zob(ng),
'Zob', &
5369 & 'Bottom roughness (m).'
5370#ifdef BBL_MODEL
5371 IF (
zob(ng).le.0.0_r8)
THEN
5372 WRITE (out,265)
'Zob = ',
zob(ng), &
5373 & 'It must be greater than zero when BBL is activated.'
5375 RETURN
5376 END IF
5377#endif
5378#ifdef SOLVE3D
5379# ifdef GLS_MIXING
5380 WRITE (out,200)
zos(ng),
'Zos', &
5381 & 'Surface roughness (m).'
5382# endif
5383# ifdef BULK_FLUXES
5384 WRITE (out,200)
blk_zq(ng),
'blk_ZQ', &
5385 & 'Height (m) of surface air humidity measurement.'
5386 IF (
blk_zq(ng).le.0.0_r8)
THEN
5387 WRITE (out,265)
'blk_ZQ = ',
blk_zq(ng), &
5388 & 'It must be greater than zero.'
5390 RETURN
5391 END IF
5392 WRITE (out,200)
blk_zt(ng),
'blk_ZT', &
5393 & 'Height (m) of surface air temperature measurement.'
5394 IF (
blk_zt(ng).le.0.0_r8)
THEN
5395 WRITE (out,265)
'blk_ZT = ',
blk_zt(ng), &
5396 & 'It must be greater than zero.'
5398 RETURN
5399 END IF
5400 WRITE (out,200)
blk_zw(ng),
'blk_ZW', &
5401 & 'Height (m) of surface winds measurement.'
5402 IF (
blk_zw(ng).le.0.0_r8)
THEN
5403 WRITE (out,265)
'blk_ZW = ',
blk_zw(ng), &
5404 & 'It must be greater than zero.'
5406 RETURN
5407 END IF
5408# endif
5409#endif
5410#if defined WET_DRY
5411 WRITE (out,200)
dcrit(ng),
'Dcrit', &
5412 & 'Minimum depth for wetting and drying (m).'
5413#endif
5414#ifdef SOLVE3D
5415# if defined LMD_SKPP || defined SOLAR_SOURCE
5416 WRITE (out,120)
lmd_jwt(ng),
'lmd_Jwt', &
5417 & 'Jerlov water type.'
5419 WRITE (out,260)
'lmd_Jwt = ',
lmd_jwt(ng), &
5420 & 'It must between one and nine.'
5422 RETURN
5423 END IF
5424# endif
5425# ifdef BODYFORCE
5426 WRITE (out,130)
levsfrc(ng),
'levsfrc', &
5427 & 'Deepest level to apply surface stress as a', &
5428 & 'bodyforce.'
5430 WRITE (out,260)
'levsfrc = ',
levsfrc(ng), &
5431 & 'Out of range surface bodyforce level.'
5433 RETURN
5434 END IF
5435 WRITE (out,130)
levbfrc(ng),
'levbfrc', &
5436 & 'Shallowest level to apply bottom stress as a', &
5437 & 'bodyforce.'
5439 WRITE (out,260)
'levbfrc = ',
levbfrc(ng), &
5440 & 'Out of range bottom bodyforce level.'
5442 RETURN
5443 END IF
5444# endif
5445#endif
5446#ifdef SOLVE3D
5447 WRITE (out,120)
vtransform(ng),
'Vtransform', &
5448 & 'S-coordinate transformation equation.'
5450 & 'S-coordinate stretching function.'
5451 WRITE (out,200)
theta_s(ng),
'theta_s', &
5452 & 'S-coordinate surface control parameter.'
5453 WRITE (out,200)
theta_b(ng),
'theta_b', &
5454 & 'S-coordinate bottom control parameter.'
5455 IF (
tcline(ng).gt.1.0e+5_r8)
THEN
5456 WRITE (out,210)
tcline(ng),
'Tcline', &
5457 & 'S-coordinate surface/bottom layer width (m) used', &
5458 & 'in vertical coordinate stretching.'
5459 ELSE
5460 WRITE (out,160)
tcline(ng),
'Tcline', &
5461 & 'S-coordinate surface/bottom layer width (m) used', &
5462 & 'in vertical coordinate stretching.'
5463 END IF
5464#endif
5465 WRITE (out,140)
rho0,
'rho0', &
5466 & 'Mean density (kg/m3) for Boussinesq approximation.'
5467#if defined SOLVE3D && (defined FOUR_DVAR || defined PROPAGATOR)
5468 WRITE (out,200)
bvf_bak,
'bvf_bak', &
5469 & 'Background Brunt-Vaisala frequency squared (1/s2).'
5470#endif
5471#ifdef TIDE_GENERATING_FORCES
5472 WRITE (out,170)
lnodal,
'Lnodal', &
5473 & 'Switch to apply a 18.5-year lunar nodal correction.'
5474#endif
5475 WRITE (out,140)
dstart,
'dstart', &
5476 & 'Time-stamp assigned to model initialization (days).'
5477#if defined SSH_TIDES || defined UV_TIDES
5479 & 'Reference time origin for tidal forcing (days).'
5480#endif
5481 WRITE (out,150)
time_ref,
'time_ref', &
5482 & 'Reference time for units attribute (yyyymmdd.dd)'
5483#ifdef SOLVE3D
5485 itrc=i
5486# ifdef T_PASSIVE
5488# endif
5489 WRITE (out,190)
tnudg(itrc,ng),
'Tnudg', itrc, &
5490 & 'Nudging/relaxation time scale (days)', &
5491 &
'for tracer ', itrc, trim(
vname(1,
idtvar(itrc)))
5492 END DO
5493# if defined SCORRECTION && defined SALINITY
5495 WRITE (out,265)
'Tnudg(isalt) = ',
tnudg(
isalt,ng), &
5496 & 'Must be greater than zero for salt flux correction.'
5498 RETURN
5499 END IF
5500# endif
5501#endif
5502 WRITE (out,210)
znudg(ng),
'Znudg', &
5503 & 'Nudging/relaxation time scale (days)', &
5504 & 'for free-surface.'
5505 WRITE (out,210)
m2nudg(ng),
'M2nudg', &
5506 & 'Nudging/relaxation time scale (days)', &
5507 & 'for 2D momentum.'
5508#ifdef SOLVE3D
5509 WRITE (out,210)
m3nudg(ng),
'M3nudg', &
5510 & 'Nudging/relaxation time scale (days)', &
5511 & 'for 3D momentum.'
5512#endif
5513 WRITE (out,210)
obcfac(ng),
'obcfac', &
5514 & 'Factor between passive and active', &
5515 & 'open boundary conditions.'
5516 WRITE (out,170)
volcons(1,ng),
'VolCons(1)', &
5517 & 'NLM western edge boundary volume conservation.'
5518 WRITE (out,170)
volcons(2,ng),
'VolCons(2)', &
5519 & 'NLM southern edge boundary volume conservation.'
5520 WRITE (out,170)
volcons(3,ng),
'VolCons(3)', &
5521 & 'NLM eastern edge boundary volume conservation.'
5522 WRITE (out,170)
volcons(4,ng),
'VolCons(4)', &
5523 & 'NLM northern edge boundary volume conservation.'
5524#ifdef ADJOINT
5525 WRITE (out,170)
ad_volcons(1,ng),
'ad_VolCons(1)', &
5526 & 'ADM western edge boundary volume conservation.'
5527 WRITE (out,170)
ad_volcons(2,ng),
'ad_VolCons(2)', &
5528 & 'ADM southern edge boundary volume conservation.'
5529 WRITE (out,170)
ad_volcons(3,ng),
'ad_VolCons(3)', &
5530 & 'ADM eastern edge boundary volume conservation.'
5531 WRITE (out,170)
ad_volcons(4,ng),
'ad_VolCons(4)', &
5532 & 'ADM northern edge boundary volume conservation.'
5533#endif
5534#if defined TANGENT || defined TL_IOMS
5535 WRITE (out,170)
tl_volcons(1,ng),
'tl_VolCons(1)', &
5536 & 'TLM western edge boundary volume conservation.'
5537 WRITE (out,170)
tl_volcons(2,ng),
'tl_VolCons(2)', &
5538 & 'TLM southern edge boundary volume conservation.'
5539 WRITE (out,170)
tl_volcons(3,ng),
'tl_VolCons(3)', &
5540 & 'TLM eastern edge boundary volume conservation.'
5541 WRITE (out,170)
tl_volcons(4,ng),
'tl_VolCons(4)', &
5542 & 'TLM northern edge boundary volume conservation.'
5543#endif
5544#ifdef SOLVE3D
5545 WRITE (out,140)
t0(ng),
'T0', &
5546 & 'Background potential temperature (C) constant.'
5547 WRITE (out,140)
s0(ng),
'S0', &
5548 & 'Background salinity (PSU) constant.'
5549# ifndef NONLIN_EOS
5550 WRITE (out,160)
r0(ng),
'R0', &
5551 & 'Background density (kg/m3) used in linear Equation', &
5552 & 'of State.'
5553# endif
5554# if !defined NONLIN_EOS || defined FOUR_DVAR || defined PROPAGATOR
5555 WRITE (out,200)
tcoef(ng),
'Tcoef', &
5556 & 'Thermal expansion coefficient (1/Celsius).'
5557 WRITE (out,200)
scoef(ng),
'Scoef', &
5558 & 'Saline contraction coefficient (1/PSU).'
5559# endif
5560#endif
5561 WRITE (out,160)
gamma2(ng),
'gamma2', &
5562 & 'Slipperiness variable: free-slip (1.0) or ', &
5563 & ' no-slip (-1.0).'
5565 WRITE (out,170)
luvsrc(ng),
'LuvSrc', &
5566 & 'Turning ON momentum point Sources/Sinks.'
5567 ELSE
5568 WRITE (out,170)
luvsrc(ng),
'LuvSrc', &
5569 & 'Turning OFF momentum point Sources/Sinks.'
5570 END IF
5572 WRITE (out,170)
lwsrc(ng),
'LwSrc', &
5573 & 'Turning ON volume influx point Sources/Sinks.'
5574 ELSE
5575 WRITE (out,170)
lwsrc(ng),
'LwSrc', &
5576 & 'Turning OFF volume influx point Sources/Sinks.'
5577 END IF
5578#ifdef SOLVE3D
5581 WRITE (out,185)
ltracersrc(itrc,ng),
'LtracerSrc', itrc, &
5582 & 'Turning ON point Sources/Sinks on tracer ', itrc, &
5584 ELSE
5585 WRITE (out,185)
ltracersrc(itrc,ng),
'LtracerSrc', itrc, &
5586 & 'Turning OFF point Sources/Sinks on tracer ', itrc, &
5588 END IF
5589 END DO
5590# ifdef T_PASSIVE
5594 WRITE (out,185)
ltracersrc(itrc,ng),
'LtracerSrc', itrc, &
5595 & 'Turning ON point Sources/Sinks on tracer ', itrc, &
5597 ELSE
5598 WRITE (out,185)
ltracersrc(itrc,ng),
'LtracerSrc', itrc, &
5599 & 'Turning OFF point Sources/Sinks on tracer ', itrc, &
5601 END IF
5602 END DO
5603# endif
5604#endif
5606 WRITE (out,170)
lsshclm(ng),
'LsshCLM', &
5607 & 'Turning ON processing of SSH climatology.'
5608 ELSE
5609 WRITE (out,170)
lsshclm(ng),
'LsshCLM', &
5610 & 'Turning OFF processing of SSH climatology.'
5611 END IF
5613 WRITE (out,170)
lm2clm(ng),
'Lm2CLM', &
5614 & 'Turning ON processing of 2D momentum climatology.'
5615 ELSE
5616 WRITE (out,170)
lm2clm(ng),
'Lm2CLM', &
5617 & 'Turning OFF processing of 2D momentum climatology.'
5618 END IF
5619#ifdef SOLVE3D
5621 WRITE (out,170)
lm3clm(ng),
'Lm3CLM', &
5622 & 'Turning ON processing of 3D momentum climatology.'
5623 ELSE
5624 WRITE (out,170)
lm3clm(ng),
'Lm3CLM', &
5625 & 'Turning OFF processing of 3D momentum climatology.'
5626 END IF
5629 WRITE (out,185)
ltracerclm(i,ng),
'LtracerCLM', i, &
5630 & 'Turning ON processing of climatology tracer ', i, &
5632 ELSE
5633 WRITE (out,185)
ltracerclm(i,ng),
'LtracerCLM', i, &
5634 & 'Turning OFF processing of climatology tracer ', i, &
5636 END IF
5637 END DO
5638# ifdef T_PASSIVE
5642 WRITE (out,185)
ltracerclm(i,ng),
'LtracerCLM', i, &
5643 & 'Turning ON processing of climatology tracer ', i, &
5645 ELSE
5646 WRITE (out,185)
ltracerclm(i,ng),
'LtracerCLM', i, &
5647 & 'Turning OFF processing of climatology tracer ', i, &
5649 END IF
5650 END DO
5651# endif
5652#endif
5655 & 'Turning ON nudging of 2D momentum climatology.'
5656 ELSE
5658 & 'Turning OFF nudging of 2D momentum climatology.'
5659 END IF
5660#ifdef SOLVE3D
5663 & 'Turning ON nudging of 3D momentum climatology.'
5664 ELSE
5666 & 'Turning OFF nudging of 3D momentum climatology.'
5667 END IF
5670 WRITE (out,185)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
5671 & 'Turning ON nudging of climatology tracer ', i, &
5673 ELSE
5674 WRITE (out,185)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
5675 & 'Turning OFF nudging of climatology tracer ', i, &
5677 END IF
5678 END DO
5679# ifdef T_PASSIVE
5683 WRITE (out,185)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
5684 & 'Turning ON nudging of climatology tracer ', i, &
5686 ELSE
5687 WRITE (out,185)
lnudgetclm(i,ng),
'LnudgeTCLM', i, &
5688 & 'Turning OFF nudging of climatology tracer ', i, &
5690 END IF
5691 END DO
5692# endif
5693#endif
5694#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
5695 defined opt_observations || defined sensitivity_4dvar || \
5696 defined so_semi
5697 WRITE (out,140)
dstrs(ng),
'DstrS', &
5698 & 'Starting day for ADM sensitivity forcing.'
5699 WRITE (out,140)
dends(ng),
'DendS', &
5700 & 'Ending day for ADM sensitivity forcing.'
5701# ifndef OBS_SPACE
5702# ifdef SOLVE3D
5703 WRITE (out,120)
kstrs(ng),
'KstrS', &
5704 & 'Deepest level whose ADM sensitivity is required.'
5705 IF ((
kstrs(ng).lt.1).or.(
kstrs(ng).gt.
n(ng)))
THEN
5706 WRITE (out,260)
'KstrS = ',
kstrs(ng), &
5707 & 'Out of range ADM sensitivity starting level.'
5709 RETURN
5710 END IF
5711 WRITE (out,120)
kends(ng),
'KendS', &
5712 & 'Shallowest level whose ADM sensitivity is required.'
5713 IF ((
kends(ng).lt.1).or.(
kends(ng).gt.
n(ng)))
THEN
5714 WRITE (out,260)
'KendS = ',
kends(ng), &
5715 & 'Out of range ADM sensitivity level.'
5717 RETURN
5718 END IF
5719# endif
5722 & 'Lstate(isFsur)', &
5723 & 'Adjoint sensitivity on free-surface.'
5726 & 'Lstate(isUbar)', &
5727 & 'Adjoint sensitivity on 2D U-momentum component.'
5730 & 'Lstate(isVbar)', &
5731 & 'Adjoint sensitivity on 2D V-momentum component.'
5732# ifdef SOLVE3D
5735 & 'Lstate(isUvel)', &
5736 & 'Adjoint sensitivity on 3D U-momentum component.'
5739 & 'Lstate(isVvel)', &
5740 & 'Adjoint sensitivity on 3D V-momentum component.'
5743 & 'Lstate(isWvel)', &
5744 & 'Adjoint sensitivity on 3D W-momentum component.'
5748 & 'Lstate(idTvar)', &
5749 & 'Adjoint sensitivity on tracer ', &
5751 END DO
5752# endif
5753# endif
5754#endif
5755#if defined FORCING_SV || defined SO_SEMI || defined STOCHASTIC_OPT
5758 & 'Fstate(isFsur)', &
5759# ifdef FORCING_SV
5760 & 'Singular Forcing Vectors on free-surface.'
5761# else
5762 & 'Stochastic Optimals on free-surface.'
5763# endif
5764# ifdef SOLVE3D
5767 & 'Fstate(isUvel)', &
5768# ifdef FORCING_SV
5769 & 'Singular Forcing Vectors on 3D U-momentum component.'
5770# else
5771 & 'Stochastic Optimals on 3D U-momentum component.'
5772# endif
5775 & 'Fstate(isVvel)', &
5776# ifdef FORCING_SV
5777 & 'Singular Forcing Vectors on 3D V-momentum component.'
5778# else
5779 & 'Stochastic Optimals on 3D V-momentum component.'
5780# endif
5784 & 'Fstate(idTVar)', &
5785# ifdef FORCING_SV
5786 & 'Singular Forcing Vectors on tracer', &
5787# else
5788 & 'Stochastic Optimals on tracer', &
5789# endif
5791 END DO
5792# else
5795 & 'Fstate(isUbar)', &
5796# ifdef FORCING_SV
5797 & 'Singular Forcing Vectors on 2D U-momentum component.'
5798# else
5799 & 'Stochastic Optimals on 2D U-momentum component.'
5800# endif
5803 & 'Fstate(isVbar)', &
5804# ifdef FORCING_SV
5805 & 'Singular Forcing Vectors on 2D V-momentum component.'
5806# else
5807 & 'Stochastic Optimals on 2D V-momentum component.'
5808# endif
5809# endif
5812 & 'Fstate(isUstr)', &
5813# ifdef FORCING_SV
5814 & 'Singular Forcing Vectors on surface U-stress.'
5815# else
5816 & 'Stochastic Optimals on surface U-stress.'
5817# endif
5820 & 'Fstate(isVstr)', &
5821# ifdef FORCING_SV
5822 & 'Singular Forcing Vectors on surface V-stress.'
5823# else
5824 & 'Stochastic Optimals on surface V-stress.'
5825# endif
5826# ifdef SOLVE3D
5830 & 'Fstate(idTsur)', &
5831# ifdef FORCING_SV
5832 & 'Singular Forcing Vectors on surface flux of tracer', &
5833# else
5834 & 'Stochastic Optimals on surface flux of tracer', &
5835# endif
5837 END DO
5838# endif
5839#endif
5840#ifdef SO_SEMI
5841# ifndef SO_SEMI_WHITE
5842 WRITE (out,140)
so_decay(ng),
'SO_decay', &
5843 & 'Stochastic optimals time decorrelation scale (days).'
5844# endif
5847 & 'Stochastic Optimals scale, free-surface'
5848# ifdef SOLVE3D
5851 & 'Stochastic Optimals scale, 3D U-momentum'
5854 & 'Stochastic Optimals scale, 3D V-momentum'
5858 & 'SO_sdev(idTvar)', &
5859 & 'Stochastic Optimals scale, tracer', &
5861 END DO
5862# else
5865 & 'Stochastic Optimals scale, 2D U-momentum'
5868 & 'Stochastic Optimals scale, 2D V-momentum'
5869# endif
5872 & 'Stochastic Optimals scale, surface U-stress'
5875 & 'Stochastic Optimals scale, surface V-stress'
5876# ifdef SOLVE3D
5880 & 'SO_sdev(idTsur)', &
5881 & 'Stochastic Optimals scale, surface flux of tracer', &
5883 END DO
5884# endif
5885#endif
5886 IF ((
nhis(ng).gt.0).and.any(
hout(:,ng)))
THEN
5887 WRITE (out,'(1x)')
5888#if defined SEDIMENT && defined SED_MORPH
5890 & 'Hout(idBath)', &
5891 & 'Write out time-dependent bathymetry.'
5892#endif
5894 & 'Hout(idFsur)', &
5895 & 'Write out free-surface.'
5897 & 'Hout(idUbar)', &
5898 & 'Write out 2D U-momentum component.'
5900 & 'Hout(idVbar)', &
5901 & 'Write out 2D V-momentum component.'
5903 & 'Hout(idu2dE)', &
5904 & 'Write out 2D U-eastward at RHO-points.'
5906 & 'Hout(idv2dN)', &
5907 & 'Write out 2D V-northward at RHO-points.'
5908#ifdef SOLVE3D
5910 & 'Hout(idUvel)', &
5911 & 'Write out 3D U-momentum component.'
5913 & 'Hout(idVvel)', &
5914 & 'Write out 3D V-momentum component.'
5916 & 'Hout(idu3dE)', &
5917 & 'Write out 3D U-wastward component at RHO-points.'
5919 & 'Hout(idv3dN)', &
5920 & 'Write out 3D V-northward component at RHO-points.'
5922 & 'Hout(idWvel)', &
5923 & 'Write out W-momentum component.'
5925 & 'Hout(idOvel)', &
5926 & 'Write out omega vertical velocity.'
5927# ifdef OMEGA_IMPLICIT
5929 & 'Hout(idOvil)', &
5930 & 'Write out omega implicit vertical velocity.'
5931# endif
5935 &
'Write out tracer ', itrc, trim(
vname(1,
idtvar(itrc)))
5936 END DO
5938 & 'Hout(idpthR)', &
5939 & 'Write out time-varying dephts of RHO-points.'
5941 & 'Hout(idpthU)', &
5942 & 'Write out time-varying dephts of U-points.'
5944 & 'Hout(idpthV)', &
5945 & 'Write out time-varying dephts of V-points.'
5947 & 'Hout(idpthW)', &
5948 & 'Write out time-varying dephts of W-points.'
5949#endif
5951 & 'Hout(idUsms)', &
5952 & 'Write out surface U-momentum stress.'
5954 & 'Hout(idVsms)', &
5955 & 'Write out surface V-momentum stress.'
5957 & 'Hout(idUbms)', &
5958 & 'Write out bottom U-momentum stress.'
5960 & 'Hout(idVbms)', &
5961 & 'Write out bottom V-momentum stress.'
5962#ifdef BBL_MODEL
5964 & 'Hout(idUbrs)', &
5965 & 'Write out bottom U-current stress.'
5967 & 'Hout(idVbrs)', &
5968 & 'Write out bottom V-current stress.'
5970 & 'Hout(idUbws)', &
5971 & 'Write out wind-induced, bottom U-wave stress.'
5973 & 'Hout(idVbws)', &
5974 & 'Write out wind-induced, bottom V-wave stress.'
5976 & 'Hout(idUbcs)', &
5977 & 'Write out max wind + current, bottom U-wave stress.'
5979 & 'Hout(idVbcs)', &
5980 & 'Write out max wind + current, bottom V-wave stress.'
5982 & 'Hout(idUVwc)', &
5983 & 'Write out max wind + current, bottom UV-wave stress.'
5985 & 'Hout(idUbot)', &
5986 & 'Write out bed wave orbital U-velocity.'
5988 & 'Hout(idVbot)', &
5989 & 'Write out bed wave orbital V-velocity.'
5991 & 'Hout(idUbur)', &
5992 & 'Write out bottom U-momentum above bed.'
5994 & 'Hout(idVbvr)', &
5995 & 'Write out bottom V-momentum above bed.'
5996#endif
5997#if defined WEC
5999 & 'Hout(idU2rs)', &
6000 & 'Write out 2D barotropic wec u-stress.'
6002 & 'Hout(idV2rs)', &
6003 & 'Write out 2D barotropic wec v-stress.'
6005 & 'Hout(idU2Sd)', &
6006 & 'Write out 2D barotropic Stokes u-velocity.'
6008 & 'Hout(idV2Sd)', &
6009 & 'Write out 2D barotropic Stokes v-velocity.'
6010#endif
6011#ifdef SOLVE3D
6012# ifdef WEC
6014 & 'Hout(idU3rs)', &
6015 & 'Write out 3D total wec u-stress.'
6017 & 'Hout(idV3rs)', &
6018 & 'Write out 3D total wec v-stress.'
6020 & 'Hout(idU3Sd)', &
6021 & 'Write out 3D total wec Stokes u-velocity.'
6023 & 'Hout(idV3Sd)', &
6024 & 'Write out 3D total wec Stokes v-velocity.'
6026 & 'Hout(idW3Sd)', &
6027 & 'Write out 3D wec omega Stokes vertical velocity.'
6029 & 'Hout(idW3St)', &
6030 & 'Write out 3D wec Stokes vertical velocity.'
6031# endif
6032# ifdef WEC_VF
6034 & 'Hout(idWztw)', &
6035 & 'Write out wec quasi-static sea level adjustment.'
6037 & 'Hout(idWqsp)', &
6038 & 'Write out wec quasi-static sea pressure adjustment.'
6040 & 'Hout(idWbeh)', &
6041 & 'Write out wec Bernoulli head sea level adjustment.'
6042# endif
6043#endif
6044#ifdef WAVES_HEIGHT
6046 & 'Hout(idWamp)', &
6047 & 'Write out wave height.'
6048#endif
6049#ifdef WAVES_LENGTH
6051 & 'Hout(idWlen)', &
6052 & 'Write out waves mean wavelength.'
6053#endif
6054#ifdef WAVES_LENGTHP
6056 & 'Hout(idWlep)', &
6057 & 'Write out waves peak wavelength.'
6058#endif
6059#ifdef WAVES_DIR
6061 & 'Hout(idWdir)', &
6062 & 'Write out waves mean direction.'
6063#endif
6064#ifdef WAVES_DIRP
6066 & 'Hout(idWdip)', &
6067 & 'Write out peak waves direction.'
6068#endif
6069#ifdef WAVES_TOP_PERIOD
6071 & 'Hout(idWptp)', &
6072 & 'Write out wave surface period.'
6073#endif
6074#ifdef WAVES_BOT_PERIOD
6076 & 'Hout(idWpbt)', &
6077 & 'Write out wave bottom period.'
6078#endif
6079#if defined BBL_MODEL || defined BEDLOAD_SOULSBY || \
6080 defined bedload_vandera || defined wav_coupling
6082 & 'Hout(idWorb)', &
6083 & 'Write out wave bottom orbital velocity.'
6084#endif
6085#if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
6087 & 'Hout(idWdif)', &
6088 & 'Write out wave dissipation due to bottom friction.'
6089#endif
6090#if defined TKE_WAVEDISS || defined WAV_COUPLING || \
6091 defined wdiss_thorguza || defined wdiss_churthor || \
6092 defined waves_diss || defined wdiss_inwave
6094 & 'Hout(idWdib)', &
6095 & 'Write out wave dissipation due to breaking.'
6097 & 'Hout(idWdiw)', &
6098 & 'Write out wave dissipation due to whitecapping.'
6099#endif
6100#ifdef ROLLER_SVENDSEN
6102 & 'Hout(idWbrk)', &
6103 & 'Write out percent wave breaking.'
6104#endif
6105#ifdef WEC_ROLLER
6107 & 'Hout(idWdis)', &
6108 & 'Write out wave roller dissipation.'
6109#endif
6110#ifdef ROLLER_RENIERS
6112 & 'Hout(idWrol)', &
6113 & 'Write out wave roller action density.'
6114#endif
6115#ifdef WAVES_DSPR
6117 & 'Hout(idWvds)', &
6118 & 'Write out wave directional spread.'
6120 & 'Hout(idWvqp)', &
6121 & 'Write out wave spectrum peakedness.'
6122#endif
6123#ifdef UV_KIRBY
6125 & 'Hout(idUwav)', &
6126 & 'Wave-avg surface u-velocity.'
6128 & 'Hout(idVwav)', &
6129 & 'Wave-avg surface v-velocity.'
6130#endif
6131#ifdef INWAVE_MODEL
6132 IF (
hout(idacen,ng))
WRITE (out,170)
hout(idacen,ng), &
6133 & 'Hout(idACen)', &
6134 & 'Write out 3D wave action'
6135 IF (
hout(idacct,ng))
WRITE (out,170)
hout(idacct,ng), &
6136 & 'Hout(idACct)', &
6137 & 'Wave group celerity in the theta coordinate.'
6138 IF (
hout(idaccx,ng))
WRITE (out,170)
hout(idaccx,ng), &
6139 & 'Hout(idACcx)', &
6140 & 'Wave group celerity in the xi coordinate.'
6141 IF (
hout(idaccy,ng))
WRITE (out,170)
hout(idaccy,ng), &
6142 & 'Hout(idACcy)', &
6143 & 'Wave group celerity in the eta space.'
6144 IF (
hout(idactp,ng))
WRITE (out,170)
hout(idactp,ng), &
6145 & 'Hout(idACtp)', &
6146 & 'Wave group peak period.'
6147#endif
6148#if defined SOLVE3D && defined T_PASSIVE
6152 & 'Write out inert passive tracer ', itrc, &
6154 END DO
6155#endif
6156#ifdef SOLVE3D
6157# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
6159 & 'Hout(idPair)', &
6160 & 'Write out surface air pressure.'
6161# endif
6162# if defined BULK_FLUXES
6164 & 'Hout(idTair)', &
6165 & 'Write out surface air temperature.'
6166# endif
6167# if defined BULK_FLUXES || defined ECOSIM
6169 & 'Hout(idUair)', &
6170 & 'Write out surface U-wind component.'
6172 & 'Hout(idVair)', &
6173 & 'Write out surface V-wind component.'
6175 & 'Hout(idUaiE)', &
6176 & 'Write out surface Eastward U-wind component.'
6178 & 'Hout(idVaiN)', &
6179 & 'Write out surface Northward V-wind component.'
6180# endif
6183 & 'Write out surface net heat flux.'
6184# ifdef SALINITY
6187 & 'Write out surface net salt flux.'
6188# endif
6189# ifdef SHORTWAVE
6191 & 'Hout(idSrad)', &
6192 & 'Write out shortwave radiation flux.'
6193# endif
6194# if defined BULK_FLUXES || defined FRC_COUPLING
6196 & 'Hout(idLrad)', &
6197 & 'Write out longwave radiation flux.'
6199 & 'Hout(idLhea)', &
6200 & 'Write out latent heat flux.'
6202 & 'Hout(idShea)', &
6203 & 'Write out sensible heat flux.'
6204# if defined EMINUSP || defined FRC_COUPLING
6206 & 'Hout(idEmPf)', &
6207 & 'Write out E-P flux.'
6208# endif
6209# ifdef EMINUSP
6211 & 'Hout(idevap)', &
6212 & 'Write out evaporation rate.'
6214 & 'Hout(idrain)', &
6215 & 'Write out rain rate.'
6216# endif
6217# endif
6219 & 'Hout(idDano)', &
6220 & 'Write out density anomaly.'
6222 & 'Hout(idVvis)', &
6223 & 'Write out vertical viscosity: AKv.'
6225 & 'Hout(idTdif)', &
6226 & 'Write out vertical diffusion: AKt(itemp).'
6227# ifdef SALINITY
6229 & 'Hout(idSdif)', &
6230 & 'Write out vertical diffusion: AKt(isalt).'
6231# endif
6232# ifdef LMD_SKPP
6234 & 'Hout(idHsbl)', &
6235 & 'Write out depth of surface boundary layer.'
6236# endif
6237# ifdef LMD_BKPP
6239 & 'Hout(idHbbl)', &
6240 & 'Write out depth of bottom boundary layer.'
6241# endif
6242# if defined GLS_MIXING || defined MY25_MIXING
6244 & 'Hout(idMtke)', &
6245 & 'Write out turbulent kinetic energy.'
6247 & 'Hout(idMtls)', &
6248 & 'Write out turbulent generic length-scale.'
6249# endif
6250#endif
6251 END IF
6252
6253 IF ((
nqck(ng).gt.0).and.any(
qout(:,ng)))
THEN
6254 WRITE (out,'(1x)')
6255#if defined SEDIMENT && defined SED_MORPH
6257 & 'Qout(idBath)', &
6258 & 'Write out time-dependent bathymetry.'
6259#endif
6261 & 'Qout(idFsur)', &
6262 & 'Write out free-surface.'
6264 & 'Qout(idUbar)', &
6265 & 'Write out 2D U-momentum component.'
6267 & 'Qout(idVbar)', &
6268 & 'Write out 2D V-momentum component.'
6270 & 'Qout(idu2dE)', &
6271 & 'Write out 2D U-eastward at RHO-points.'
6273 & 'Qout(idv2dN)', &
6274 & 'Write out 2D V-northward at RHO-points.'
6275#ifdef SOLVE3D
6277 & 'Qout(idUvel)', &
6278 & 'Write out 3D U-momentum component.'
6280 & 'Qout(idVvel)', &
6281 & 'Write out 3D V-momentum component.'
6283 & 'Qout(idUsur)', &
6284 & 'Write out surface U-momentum component.'
6286 & 'Qout(idVsur)', &
6287 & 'Write out surface V-momentum component.'
6289 & 'Qout(idu3dE)', &
6290 & 'Write out 3D U-wastward component at RHO-points.'
6292 & 'Qout(idv3dN)', &
6293 & 'Write out 3D V-northward component at RHO-points.'
6295 & 'Qout(idu3dE)', &
6296 & 'Write out surface U-wastward component at RHO-points.'
6298 & 'Qout(idv3dN)', &
6299 & 'Write out surface V-northward component at RHO-points.'
6301 & 'Qout(idWvel)', &
6302 & 'Write out W-momentum component.'
6304 & 'Qout(idOvel)', &
6305 & 'Write out omega vertical velocity.'
6309 &
'Write out tracer ', itrc, trim(
vname(1,
idtvar(itrc)))
6310 END DO
6314 & 'Write out surface tracer ', itrc, &
6316 END DO
6318 & 'Qout(idpthR)', &
6319 & 'Write out time-varying dephts of RHO-points.'
6321 & 'Qout(idpthU)', &
6322 & 'Write out time-varying dephts of U-points.'
6324 & 'Qout(idpthV)', &
6325 & 'Write out time-varying dephts of V-points.'
6327 & 'Qout(idpthW)', &
6328 & 'Write out time-varying dephts of W-points.'
6329#endif
6331 & 'Qout(idUsms)', &
6332 & 'Write out surface U-momentum stress.'
6334 & 'Qout(idVsms)', &
6335 & 'Write out surface V-momentum stress.'
6337 & 'Qout(idUbms)', &
6338 & 'Write out bottom U-momentum stress.'
6340 & 'Qout(idVbms)', &
6341 & 'Write out bottom V-momentum stress.'
6342#ifdef BBL_MODEL
6344 & 'Qout(idUbrs)', &
6345 & 'Write out bottom U-current stress.'
6347 & 'Qout(idVbrs)', &
6348 & 'Write out bottom V-current stress.'
6350 & 'Qout(idUbws)', &
6351 & 'Write out wind-induced, bottom U-wave stress.'
6353 & 'Qout(idVbws)', &
6354 & 'Write out wind-induced, bottom V-wave stress.'
6356 & 'Qout(idUbcs)', &
6357 & 'Write out max wind + current, bottom U-wave stress.'
6359 & 'Qout(idVbcs)', &
6360 & 'Write out max wind + current, bottom V-wave stress.'
6362 & 'Qout(idUbot)', &
6363 & 'Write out bed wave orbital U-velocity.'
6365 & 'Qout(idVbot)', &
6366 & 'Write out bed wave orbital V-velocity.'
6368 & 'Qout(idUbur)', &
6369 & 'Write out bottom U-momentum above bed.'
6371 & 'Qout(idVbvr)', &
6372 & 'Write out bottom V-momentum above bed.'
6373#endif
6374#if defined WEC
6376 & 'Qout(idU2rs)', &
6377 & 'Write out 2D barotropic wec u-stress.'
6379 & 'Qout(idV2rs)', &
6380 & 'Write out 2D barotropic wec v-stress.'
6382 & 'Qout(idU2Sd)', &
6383 & 'Write out 2D barotropic Stokes u-velocity.'
6385 & 'Qout(idV2Sd)', &
6386 & 'Write out 2D barotropic Stokes v-velocity.'
6387#endif
6388#ifdef SOLVE3D
6389# ifdef WEC
6391 & 'Qout(idU3rs)', &
6392 & 'Write out 3D total wec u-stress.'
6394 & 'Qout(idV3rs)', &
6395 & 'Write out 3D total wec v-stress.'
6397 & 'Qout(idU3Sd)', &
6398 & 'Write out 3D total wec Stokes u-velocity.'
6400 & 'Qout(idV3Sd)', &
6401 & 'Write out 3D total wec Stokes v-velocity.'
6403 & 'Qout(idW3Sd)', &
6404 & 'Write out 3D wec omega Stokes vertical velocity.'
6406 & 'Qout(idW3St)', &
6407 & 'Write out 3D wec Stokes vertical velocity.'
6408# endif
6409# ifdef WEC_VF
6411 & 'Qout(idWztw)', &
6412 & 'Write out wec quasi-static sea level adjustment.'
6414 & 'Qout(idWqsp)', &
6415 & 'Write out wec quasi-static sea pressure adjustment.'
6417 & 'Qout(idWbeh)', &
6418 & 'Write out wec Bernoulli head sea level adjustment.'
6419# endif
6420#endif
6421#ifdef WAVES_HEIGHT
6423 & 'Qout(idWamp)', &
6424 & 'Write out wave height.'
6425#endif
6426#ifdef WAVES_LENGTH
6428 & 'Qout(idWlen)', &
6429 & 'Write out waves mean wavelength.'
6430#endif
6431#ifdef WAVES_LENGTHP
6433 & 'Qout(idWlep)', &
6434 & 'Write out waves peak wavelength.'
6435#endif
6436#ifdef WAVES_DIR
6438 & 'Qout(idWdir)', &
6439 & 'Write out waves mean direction.'
6440#endif
6441#ifdef WAVES_DIRP
6443 & 'Qout(idWdip)', &
6444 & 'Write out peak waves direction.'
6445#endif
6446#ifdef WAVES_TOP_PERIOD
6448 & 'Qout(idWptp)', &
6449 & 'Write out wave surface period.'
6450#endif
6451#ifdef WAVES_BOT_PERIOD
6453 & 'Qout(idWpbt)', &
6454 & 'Write out wave bottom period.'
6455#endif
6456#if defined BBL_MODEL || defined BEDLOAD_SOULSBY || \
6457 defined bedload_vandera || defined wav_coupling
6459 & 'Qout(idWorb)', &
6460 & 'Write out wave bottom orbital velocity.'
6461#endif
6462#if defined WAV_COUPLING || (defined WEC_VF && defined BOTTOM_STREAMING)
6464 & 'Qout(idWdif)', &
6465 & 'Write out wave dissipation due to bottom friction.'
6466#endif
6467#if defined TKE_WAVEDISS || defined WAV_COUPLING || \
6468 defined wdiss_thorguza || defined wdiss_churthor || \
6469 defined waves_diss || defined wdiss_inwave
6471 & 'Qout(idWdib)', &
6472 & 'Write out wave dissipation due to breaking.'
6474 & 'Qout(idWdiw)', &
6475 & 'Write out wave dissipation due to whitecapping.'
6476#endif
6477#ifdef ROLLER_SVENDSEN
6479 & 'Qout(idWbrk)', &
6480 & 'Write out percent wave breaking.'
6481#endif
6482#ifdef WEC_ROLLER
6484 & 'Qout(idWdis)', &
6485 & 'Write out wave roller dissipation.'
6486#endif
6487#ifdef ROLLER_RENIERS
6489 & 'Qout(idWrol)', &
6490 & 'Write out wave roller action density.'
6491#endif
6492#ifdef WAVES_DSPR
6494 & 'Qout(idWvds)', &
6495 & 'Write out wave directional spread.'
6497 & 'Qout(idWvqp)', &
6498 & 'Write out wave spectrum peakedness.'
6499#endif
6500#ifdef UV_KIRBY
6502 & 'Qout(idUwav)', &
6503 & 'Wave-avg surface u-velocity.'
6505 & 'Qout(idVwav)', &
6506 & 'Wave-avg surface v-velocity.'
6507#endif
6508#if defined SOLVE3D && defined T_PASSIVE
6512 & 'Write out inert passive tracer ', itrc, &
6514 END DO
6518 & 'Write out inert passive tracer ', itrc, &
6520 END DO
6521#endif
6522#ifdef SOLVE3D
6523# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
6525 & 'Qout(idPair)', &
6526 & 'Write out surface air pressure.'
6527# endif
6528# if defined BULK_FLUXES
6530 & 'Qout(idTair)', &
6531 & 'Write out surface air temperature.'
6532# endif
6533# if defined BULK_FLUXES || defined ECOSIM
6535 & 'Qout(idUair)', &
6536 & 'Write out surface U-wind component.'
6538 & 'Qout(idVair)', &
6539 & 'Write out surface V-wind component.'
6541 & 'Qout(idUaiE)', &
6542 & 'Write out surface Eastward U-wind component.'
6544 & 'Qout(idVaiN)', &
6545 & 'Write out surface Northward V-wind component.'
6546# endif
6549 & 'Write out surface net heat flux.'
6550# ifdef SALINITY
6553 & 'Write out surface net salt flux.'
6554# endif
6555# ifdef SHORTWAVE
6557 & 'Qout(idSrad)', &
6558 & 'Write out shortwave radiation flux.'
6559# endif
6560# if defined BULK_FLUXES || defined FRC_COUPLING
6562 & 'Qout(idLrad)', &
6563 & 'Write out longwave radiation flux.'
6565 & 'Qout(idLhea)', &
6566 & 'Write out latent heat flux.'
6568 & 'Qout(idShea)', &
6569 & 'Write out sensible heat flux.'
6570# if defined EMINUSP || defined FRC_COUPLING
6572 & 'Qout(idEmPf)', &
6573 & 'Write out E-P flux.'
6574# endif
6575# ifdef EMINUSP
6577 & 'Qout(idevap)', &
6578 & 'Write out evaporation rate.'
6580 & 'Qout(idrain)', &
6581 & 'Write out rain rate.'
6582# endif
6583# endif
6585 & 'Qout(idDano)', &
6586 & 'Write out density anomaly.'
6588 & 'Qout(idVvis)', &
6589 & 'Write out vertical viscosity: AKv.'
6591 & 'Qout(idTdif)', &
6592 & 'Write out vertical diffusion: AKt(itemp).'
6593# ifdef SALINITY
6595 & 'Qout(idSdif)', &
6596 & 'Write out vertical diffusion: AKt(isalt).'
6597# endif
6598# ifdef LMD_SKPP
6600 & 'Qout(idHsbl)', &
6601 & 'Write out depth of surface boundary layer.'
6602# endif
6603# ifdef LMD_BKPP
6605 & 'Qout(idHbbl)', &
6606 & 'Write out depth of bottom boundary layer.'
6607# endif
6608# if defined GLS_MIXING || defined MY25_MIXING
6610 & 'Qout(idMtke)', &
6611 & 'Write out turbulent kinetic energy.'
6613 & 'Qout(idMtls)', &
6614 & 'Write out turbulent generic length-scale.'
6615# endif
6616#endif
6617 END IF
6618#if defined AVERAGES || \
6619 (defined ad_averages && defined adjoint) || \
6620 (defined rp_averages && defined tl_ioms) || \
6621 (defined tl_averages && defined tangent)
6622 IF ((
navg(ng).gt.0).and.any(
aout(:,ng)))
THEN
6623 WRITE (out,'(1x)')
6625 & 'Aout(idFsur)', &
6626 & 'Write out averaged free-surface.'
6628 & 'Aout(idUbar)', &
6629 & 'Write out averaged 2D U-momentum component.'
6631 & 'Aout(idVbar)', &
6632 & 'Write out averaged 2D V-momentum component.'
6634 & 'Aout(idu2dE)', &
6635 & 'Write out averaged 2D U-eastward at RHO-points.'
6637 & 'Aout(idv2dN)', &
6638 & 'Write out averaged 2D V-northward at RHO-points.'
6639# ifdef SOLVE3D
6641 & 'Aout(idUvel)', &
6642 & 'Write out averaged 3D U-momentum component.'
6644 & 'Aout(idVvel)', &
6645 & 'Write out averaged 3D V-momentum component.'
6647 & 'Aout(idu3dE)', &
6648 & 'Write out averaged 3D U-eastward at RHO-points.'
6650 & 'Aout(idv3dN)', &
6651 & 'Write out averaged 3D V-northward at RHO-points.'
6653 & 'Aout(idWvel)', &
6654 & 'Write out averaged W-momentum component.'
6656 & 'Aout(idOvel)', &
6657 & 'Write out averaged omega vertical velocity.'
6661 & 'Write out averaged tracer ', itrc, &
6663 END DO
6664# endif
6666 & 'Aout(idUsms)', &
6667 & 'Write out averaged surface U-momentum stress.'
6669 & 'Aout(idVsms)', &
6670 & 'Write out averaged surface V-momentum stress.'
6672 & 'Aout(idUbms)', &
6673 & 'Write out averaged bottom U-momentum stress.'
6675 & 'Aout(idVbms)', &
6676 & 'Write out averaged bottom V-momentum stress.'
6677# ifdef BBL_MODEL
6679 & 'Aout(idUbrs)', &
6680 & 'Write out averaged bottom U-current stress.'
6682 & 'Aout(idVbrs)', &
6683 & 'Write out averaged bottom V-current stress.'
6685 & 'Aout(idUbws)', &
6686 & 'Write out averaged wind-induced, bottom U-wave stress.'
6688 & 'Aout(idVbws)', &
6689 & 'Write out averaged wind-induced, bottom V-wave stress.'
6691 & 'Aout(idUbcs)', &
6692 & 'Write out averaged max wind+curr bottom U-wave stress.'
6694 & 'Aout(idVbcs)', &
6695 & 'Write out averaged max wind+curr bottom V-wave stress.'
6697 & 'Aout(idUVwc)', &
6698 & 'Write out averaged max wind+curr bottom UV-wave stress.'
6700 & 'Aout(idUbot)', &
6701 & 'Write out averaged bed wave orbital U-velocity.'
6703 & 'Aout(idVbot)', &
6704 & 'Write out averaged bed wave orbital V-velocity.'
6706 & 'Aout(idUbur)', &
6707 & 'Write out averaged bottom U-momentum above bed.'
6709 & 'Aout(idVbvr)', &
6710 & 'Write out averaged bottom V-momentum above bed.'
6711# endif
6712# if defined WEC
6714 & 'Aout(idU2rs)', &
6715 & 'Write out 2D barotropic wec u-stress.'
6717 & 'Aout(idV2rs)', &
6718 & 'Write out 2D barotropic wec v-stress.'
6720 & 'Aout(idU2Sd)', &
6721 & 'Write out 2D barotropic Stokes u-velocity.'
6723 & 'Aout(idV2Sd)', &
6724 & 'Write out 2D barotropic Stokes v-velocity.'
6725# endif
6726# ifdef SOLVE3D
6727# ifdef WEC
6729 & 'Aout(idU3rs)', &
6730 & 'Write out 3D total wec u-stress.'
6732 & 'Aout(idV3rs)', &
6733 & 'Write out 3D total wec v-stress.'
6735 & 'Aout(idU3Sd)', &
6736 & 'Write out 3D total wec Stokes u-velocity.'
6738 & 'Aout(idV3Sd)', &
6739 & 'Write out 3D total wec Stokes v-velocity.'
6741 & 'Aout(idW3Sd)', &
6742 & 'Write out 3D wec omega Stokes vertical velocity.'
6744 & 'Aout(idW3St)', &
6745 & 'Write out 3D wec Stokes vertical velocity.'
6746# endif
6747# ifdef WEC_VF
6749 & 'Aout(idWztw)', &
6750 & 'Write out wec quasi-static sea level adjustment.'
6752 & 'Aout(idWqsp)', &
6753 & 'Write out wec quasi-static sea pressure adjustment.'
6755 & 'Aout(idWbeh)', &
6756 & 'Write out wec Bernoulli head sea level adjustment.'
6757# endif
6758# endif
6759# if defined SOLVE3D && defined T_PASSIVE
6763 & 'Write out averaged inert passive tracer ', itrc, &
6765 END DO
6766# endif
6767# ifdef SOLVE3D
6768# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
6770 & 'Aout(idPair)', &
6771 & 'Write out averaged surface air pressure.'
6772# endif
6773# if defined BULK_FLUXES
6775 & 'Aout(idTair)', &
6776 & 'Write out averaged surface air temperature.'
6777# endif
6778# if defined BULK_FLUXES || defined ECOSIM
6780 & 'Aout(idUair)', &
6781 & 'Write out averaged surface U-wind component.'
6783 & 'Aout(idVair)', &
6784 & 'Write out averaged surface V-wind component.'
6786 & 'Aout(idUaiE)', &
6787 & 'Write out averaged Eastward surface U-wind component.'
6789 & 'Aout(idVaiN)', &
6790 & 'Write out averaged Northward surface V-wind component.'
6791# endif
6794 & 'Write out averaged surface net heat flux.'
6795# ifdef SALINITY
6798 & 'Write out averaged surface net salt flux.'
6799# endif
6800# ifdef SHORTWAVE
6802 & 'Aout(idSrad)', &
6803 & 'Write out averaged shortwave radiation flux.'
6804# endif
6805# ifdef BULK_FLUXES
6807 & 'Aout(idLrad)', &
6808 & 'Write out averaged longwave radiation flux.'
6810 & 'Aout(idLhea)', &
6811 & 'Write out averaged latent heat flux.'
6813 & 'Aout(idShea)', &
6814 & 'Write out averaged sensible heat flux.'
6815# ifdef EMINUSP
6817 & 'Aout(idevap)', &
6818 & 'Write out averaged evaporation rate.'
6820 & 'Aout(idrain)', &
6821 & 'Write out averaged rain rate.'
6822# endif
6823# endif
6825 & 'Aout(idDano)', &
6826 & 'Write out averaged density anomaly.'
6827# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
6829 & 'Aout(idVvis)', &
6830 & 'Write out averaged vertical viscosity: AKv.'
6832 & 'Aout(idTdif)', &
6833 & 'Write out averaged vertical diffusion: AKt(itemp).'
6834# ifdef SALINITY
6836 & 'Aout(idSdif)', &
6837 & 'Write out averaged vertical diffusion: AKt(isalt).'
6838# endif
6839# endif
6840# ifdef LMD_SKPP
6842 & 'Aout(idHsbl)', &
6843 & 'Write out averaged depth of surface boundary layer.'
6844# endif
6845# ifdef LMD_BKPP
6847 & 'Aout(idHbbl)', &
6848 & 'Write out averaged depth of bottom boundary layer.'
6849# endif
6850# endif
6852 & 'Aout(id2dRV)', &
6853 & 'Write out averaged 2D relative vorticity.'
6855 & 'Aout(id2dPV)', &
6856 & 'Write out averaged 2D potential vorticity.'
6857# ifdef SOLVE3D
6859 & 'Aout(id3dRV)', &
6860 & 'Write out averaged 3D relative vorticity.'
6862 & 'Aout(id3dPV)', &
6863 & 'Write out averaged 3D potential vorticity.'
6864# endif
6866 & 'Aout(idZZav)', &
6867 & 'Write out averaged quadratic <zeta*zeta> term.'
6869 & 'Aout(idU2av)', &
6870 & 'Write out averaged quadratic <ubar*ubar> term.'
6872 & 'Aout(idV2av)', &
6873 & 'Write out averaged quadratic <vbar*vbar> term.'
6874# ifdef SOLVE3D
6876 & 'Aout(idHUav)', &
6877 & 'Write out averaged u-volume flux, Huon.'
6879 & 'Aout(idHVav)', &
6880 & 'Write out averaged v-volume flux, Hvom.'
6882 & 'Aout(idUUav)', &
6883 & 'Write out averaged quadratic <u*u> term.'
6885 & 'Aout(idUVav)', &
6886 & 'Write out averaged quadratic <u*v> term.'
6888 & 'Aout(idVVav)', &
6889 & 'Write out averaged quadratic <v*v> term.'
6893 & 'Write out averaged <t*t> for tracer ', itrc, &
6895 END DO
6899 & 'Write out averaged <u*t> for tracer ', itrc, &
6901 END DO
6905 & 'Write out averaged <v*t> for tracer ', itrc, &
6907 END DO
6911 & 'Write out averaged <Huon*t> for tracer ', itrc, &
6913 END DO
6917 & 'Write out averaged <Hvom*t> for tracer ', itrc, &
6919 END DO
6920# endif
6921# if defined AVERAGES && defined AVERAGES_DETIDE && \
6922 (defined ssh_tides || defined uv_tides)
6923 WRITE (out,'(1x)')
6925 & 'Aout(idFsuD)', &
6926 & 'Write out detided free-surface.'
6928 & 'Aout(idu2dD)', &
6929 & 'Write out detided 2D U-velocity.'
6931 & 'Aout(idv2dD)', &
6932 & 'Write out detided 2D V-velocity.'
6933# ifdef SOLVE3D
6935 & 'Aout(idu3dD)', &
6936 & 'Write out detided 3D U-velocity.'
6938 & 'Aout(idv3dD)', &
6939 & 'Write out detided 3D V-velocity.'
6943 & 'Write out detided tracer ', itrc, &
6945 END DO
6946# endif
6947# endif
6948 END IF
6949#endif
6950#ifdef DIAGNOSTICS_UV
6951 IF ((
ndia(ng).gt.0).and.any(
dout(:,ng)))
THEN
6952 WRITE (out,'(1x)')
6954 & WRITE (out,170) .true., 'Dout(M2rate)', &
6955 & 'Write out 2D momentum acceleration.'
6957 & WRITE (out,170) .true., 'Dout(M2pgrd)', &
6958 & 'Write out 2D momentum pressure gradient.'
6959# ifdef UV_COR
6961 & WRITE (out,170) .true., 'Dout(M2fcor)', &
6962 & 'Write out 2D momentum Coriolis force.'
6963# endif
6964# ifdef UV_ADV
6966 & WRITE (out,170) .true., 'Dout(M2hadv)', &
6967 & 'Write out 2D momentum horizontal advection.'
6969 & WRITE (out,170) .true., 'Dout(M2xadv)', &
6970 & 'Write out 2D momentum horizontal X-advection.'
6972 & WRITE (out,170) .true., 'Dout(M2yadv)', &
6973 & 'Write out 2D momentum horizontal Y-advection.'
6974# endif
6975# if defined UV_VIS2 || defined UV_VIS4
6977 & WRITE (out,170) .true., 'Dout(M2hvis)', &
6978 & 'Write out 2D momentum horizontal viscosity.'
6980 & WRITE (out,170) .true., 'Dout(M2xvis)', &
6981 & 'Write out 2D momentum horizontal X-viscosity.'
6983 & WRITE (out,170) .true., 'Dout(M2yvis)', &
6984 & 'Write out 2D momentum horizontal Y-viscosity.'
6985# endif
6987 & WRITE (out,170) .true., 'Dout(M2sstr)', &
6988 & 'Write out 2D momentum surface stress.'
6990 & WRITE (out,170) .true., 'Dout(M2bstr)', &
6991 & 'Write out 2D momentum bottom stress.'
6992# ifdef WEC_VF
6994 & WRITE (out,170) .true., 'Dout(M2hjvf)', &
6995 & 'Write out 2D horizontal J-vortex force.'
6997 & WRITE (out,170) .true., 'Dout(M2kvrf)', &
6998 & 'Write out 2D K-vortex force. '
6999# ifdef UV_COR
7001 & WRITE (out,170) .true., 'Dout(M2fsco)', &
7002 & 'Write out 2D Stokes Coriolis.'
7003# endif
7004# ifdef SURFACE_STREAMING
7006 & WRITE (out,170) .true., 'Dout(M2sstm)', &
7007 & 'Write out 2D surface streaming.'
7008# endif
7009# ifdef BOTTOM_STREAMING
7011 & WRITE (out,170) .true., 'Dout(M2bstm)', &
7012 & 'Write out 2D bottom streaming.'
7013# endif
7015 & WRITE (out,170) .true., 'Dout(M2wrol)', &
7016 & 'Write out wave roller acceleration.'
7018 & WRITE (out,170) .true., 'Dout(M2wbrk)', &
7019 & 'Write out 2D wave breaking.'
7021 & WRITE (out,170) .true., 'Dout(M2zeta)', &
7022 & 'Write out 2D Eulerian sea level adjustment.'
7024 & WRITE (out,170) .true., 'Dout(M2zetw)', &
7025 & 'Write out 2D quasi-static sea level adjustment.'
7027 & WRITE (out,170) .true., 'Dout(M2zqsp)', &
7028 & 'Write out 2D quasi-static pressure adjustment.'
7030 & WRITE (out,170) .true., 'Dout(M2zbeh)', &
7031 & 'Write out 2D Bernoulli head adjustment.'
7032# endif
7033# ifdef SOLVE3D
7034 WRITE (out,'(1x)')
7036 & WRITE (out,170) .true., 'Dout(M3rate)', &
7037 & 'Write out 3D momentum acceleration.'
7039 & WRITE (out,170) .true., 'Dout(M3pgrd)', &
7040 & 'Write out 3D momentum pressure gradient.'
7041# ifdef UV_COR
7043 & WRITE (out,170) .true., 'Dout(M3fcor)', &
7044 & 'Write out 3D momentum Coriolis force.'
7045# endif
7046# ifdef UV_ADV
7048 & WRITE (out,170) .true., 'Dout(M3hadv)', &
7049 & 'Write out 3D momentum horizontal advection.'
7051 & WRITE (out,170) .true., 'Dout(M3xadv)', &
7052 & 'Write out 3D momentum horizontal X-advection.'
7054 & WRITE (out,170) .true., 'Dout(M3yadv)', &
7055 & 'Write out 3D momentum horizontal Y-advection.'
7057 & WRITE (out,170) .true., 'Dout(M3vadv)', &
7058 & 'Write out 3D momentum vertical advection.'
7059# endif
7060# if defined UV_VIS2 || defined UV_VIS4
7062 & WRITE (out,170) .true., 'Dout(M3hvis)', &
7063 & 'Write out 3D momentum horizontal viscosity.'
7065 & WRITE (out,170) .true., 'Dout(M3xvis)', &
7066 & 'Write out 3D momentum horizontal X-viscosity.'
7068 & WRITE (out,170) .true., 'Dout(M3yvis)', &
7069 & 'Write out 3D momentum horizontal Y-viscosity.'
7070# endif
7072 & WRITE (out,170) .true., 'Dout(M3vvis)', &
7073 & 'Write out 3D momentum vertical viscosity.'
7074# endif
7075# ifdef WEC_VF
7077 & WRITE (out,170) .true., 'Dout(M3hjvf)', &
7078 & 'Write out 3D horizontal J-vortex force.'
7080 & WRITE (out,170) .true., 'Dout(M3vjvf)', &
7081 & 'Write out 3D vertical J-vortex force.'
7083 & WRITE (out,170) .true., 'Dout(M3kvrf)', &
7084 & 'Write out 3D K-vortex force.'
7085# ifdef UV_COR
7087 & WRITE (out,170) .true., 'Dout(M3fsco)', &
7088 & 'Write out 3D Stokes Coriolis'
7089# endif
7090# ifdef SURFACE_STREAMING
7092 & WRITE (out,170) .true., 'Dout(M3sstm)', &
7093 & 'Write out 3D surface streaming.'
7094# endif
7095# ifdef BOTTOM_STREAMING
7097 & WRITE (out,170) .true., 'Dout(M3bstm)', &
7098 & 'Write out 3D bottom streaming.'
7099# endif
7101 & WRITE (out,170) .true., 'Dout(M3wrol)', &
7102 & 'Write out 3D wave roller acceleration.'
7104 & WRITE (out,170) .true., 'Dout(M3wbrk)', &
7105 & 'Write out 3D wave breaking.'
7106# endif
7107 END IF
7108#endif
7109#if defined DIAGNOSTICS_TS && defined SOLVE3D
7110 IF (
ndia(ng).gt.0)
THEN
7111 WRITE (out,'(1x)')
7114 & WRITE (out,180) .true., 'Dout(iTrate)', &
7115 & 'Write out rate of change of tracer ', itrc, &
7117 END DO
7118# ifdef T_PASSIVE
7122 & WRITE (out,180) .true., 'Dout(iTrate)', &
7123 & 'Write out rate of change of tracer ', itrc, &
7125 END DO
7126# endif
7129 & WRITE (out,180) .true., 'Dout(iThadv)', &
7130 & 'Write out horizontal advection, tracer ', itrc, &
7132 END DO
7133# ifdef T_PASSIVE
7137 & WRITE (out,180) .true., 'Dout(iThadv)', &
7138 & 'Write out horizontal advection, tracer ', itrc, &
7140 END DO
7141# endif
7144 & WRITE (out,180) .true., 'Dout(iTxadv)', &
7145 & 'Write out horizontal X-advection, tracer ', itrc, &
7147 END DO
7148# ifdef T_PASSIVE
7152 & WRITE (out,180) .true., 'Dout(iTxadv)', &
7153 & 'Write out horizontal X-advection, tracer ', itrc, &
7155 END DO
7156# endif
7159 & WRITE (out,180) .true., 'Dout(iTyadv)', &
7160 & 'Write out horizontal Y-advection, tracer ', itrc, &
7162 END DO
7163# ifdef T_PASSIVE
7167 & WRITE (out,180) .true., 'Dout(iTyadv)', &
7168 & 'Write out horizontal Y-advection, tracer ', itrc, &
7170 END DO
7171# endif
7174 & WRITE (out,180) .true., 'Dout(iTvadv)', &
7175 & 'Write out vertical advection, tracer ', itrc, &
7177 END DO
7178# ifdef T_PASSIVE
7182 & WRITE (out,180) .true., 'Dout(iTvadv)', &
7183 & 'Write out vertical advection, tracer ', itrc, &
7185 END DO
7186# endif
7187# if defined TS_DIF2 || defined TS_DIF4
7190 & WRITE (out,180) .true., 'Dout(iThdif)', &
7191 & 'Write out horizontal diffusion, tracer ', itrc, &
7193 END DO
7194# ifdef T_PASSIVE
7198 & WRITE (out,180) .true., 'Dout(iThdif)', &
7199 & 'Write out horizontal diffusion, tracer ', itrc, &
7201 END DO
7202# endif
7205 & WRITE (out,180) .true., 'Dout(iTxdif)', &
7206 & 'Write out horizontal X-diffusion, tracer ', itrc, &
7208 END DO
7209# ifdef T_PASSIVE
7213 & WRITE (out,180) .true., 'Dout(iTxdif)', &
7214 & 'Write out horizontal X-diffusion, tracer ', itrc, &
7216 END DO
7217# endif
7220 & WRITE (out,180) .true., 'Dout(iTydif)', &
7221 & 'Write out horizontal Y-diffusion , tracer ', itrc, &
7223 END DO
7224# ifdef T_PASSIVE
7228 & WRITE (out,180) .true., 'Dout(iTydif)', &
7229 & 'Write out horizontal Y-diffusion, tracer ', itrc, &
7231 END DO
7232# endif
7233# if defined MIX_GEO_TS || defined MIX_ISO_TS
7236 & WRITE (out,180) .true., 'Dout(iTsdif)', &
7237 & 'Write out horizontal S-diffusion, tracer ', itrc, &
7239 END DO
7240# ifdef T_PASSIVE
7244 & WRITE (out,180) .true., 'Dout(iTsdif)', &
7245 & 'Write out horizontal S-diffusion, tracer ', itrc, &
7247 END DO
7248# endif
7249# endif
7250# endif
7253 & WRITE (out,180) .true., 'Dout(iTvdif)', &
7254 & 'Write out vertical diffusion, tracer ', itrc, &
7256 END DO
7257# ifdef T_PASSIVE
7261 & WRITE (out,180) .true., 'Dout(iTvdif)', &
7262 & 'Write out vertical diffusion, tracer ', itrc, &
7264 END DO
7265# endif
7266 END IF
7267#endif
7268
7269#ifdef GRID_EXTRACT
7270 WRITE (out,'(1x)')
7272 & 'Field extraction flag to interpolate or decimate.'
7273#endif
7274 WRITE (out,'(1x)')
7276 WRITE (out,120)
inp_lib,
'inp_lib', &
7277 & 'Using standard NetCDF library for input files.'
7278#if defined PIO_LIB && defined DISTRIBUTE
7280 WRITE (out,120)
inp_lib,
'inp_lib', &
7281 & 'Using Parallel-IO (PIO) library for input files.'
7282#endif
7283 END IF
7285 WRITE (out,120)
out_lib,
'out_lib', &
7286 & 'Using standard NetCDF library for output files.'
7287#if defined PIO_LIB && defined DISTRIBUTE
7289 WRITE (out,120)
out_lib,
'out_lib', &
7290 & 'Using Parallel-IO (PIO) library for output files.'
7291#endif
7292 END IF
7293#if defined PIO_LIB && defined DISTRIBUTE
7295 CASE (0)
7296 text='Parallel read and write of PnetCDF files (CDF-5).'
7297 CASE (pio_iotype_pnetcdf)
7298 text='Parallel read and write of PnetCDF files (NetCDF3).'
7299 CASE (pio_iotype_netcdf)
7300 text='Serial read and write of NetCDF3 files.'
7301 CASE (pio_iotype_netcdf4c)
7302 text='Parallel read and serial write of compressed '// &
7303 & 'NetCDF4 (HDF5) files.'
7304 CASE (pio_iotype_netcdf4p)
7305 text='Parallel read and write of NETCDF4 (HDF5) files.'
7306 END SELECT
7307
7308 WRITE (out,120)
pio_method,
'pio_method', trim(text)
7309
7311 & 'Number of mpi-processors used for I/O.'
7312
7314 & 'Stride step in the mpi-rank between I/O tasks.'
7315
7316 WRITE (out,120)
pio_base,
'pio_base', &
7317 & 'Offset for the first I/O task.'
7318
7320 & 'Number of mpi-aggregators for intra-communications.'
7321
7323 CASE (pio_rearr_box)
7324 text='Box rearrangement method.'
7325 CASE (pio_rearr_subset)
7326 text='Subset rearrangement method.'
7327 END SELECT
7329
7331 CASE (pio_rearr_comm_p2p)
7332 text='Point-to-Point rearranger communications.'
7333 CASE (pio_rearr_comm_coll)
7334 text='Collective rearranger communications.'
7335 END SELECT
7337
7339 CASE (pio_rearr_comm_fc_2d_enable)
7340 text='Enabled C2I flow control, and vice versa.'
7341 CASE (pio_rearr_comm_fc_1d_comp2io)
7342 text='Enabled C2I flow control only.'
7343 CASE (pio_rearr_comm_fc_1d_io2comp)
7344 text='Enabled I2C flow control only.'
7345 CASE (pio_rearr_comm_fc_2d_disable)
7346 text='Disabled flow control'
7347 END SELECT
7349
7351 & 'Enabled C2I rearranger handshake.'
7353 & 'Enabled I2C rearranger handshake.'
7354
7356 & 'Enabled C2I rearranger mpi-Isends.'
7358 & 'Enabled I2C rearranger mpi-Isends.'
7359
7361 & 'Maximum C2I rearranger pending requests.'
7363 & 'Maximum I2C rearranger pending requests.'
7364#endif
7365#if defined HDF5 && defined DEFLATE
7366 WRITE (out,120)
shuffle,
'shuffle', &
7367 & 'NetCDF-4/HDF5 file format shuffle filer flag.'
7368 WRITE (out,120)
deflate,
'deflate', &
7369 & 'NetCDF-4/HDF5 file format deflate filer flag.'
7371 & 'NetCDF-4/HDF5 file format deflate level parameter.'
7372#endif
7373 END DO
7374 END IF
7375
7376
7377
7378
7379
7381 IF (
master.and.lwrite)
THEN
7382 WRITE (out,220)
7383#if !defined CORRELATION
7384# if defined FOUR_DVAR || defined ENKF_RESTART
7385 WRITE (out,230) ' Output DA Initial/Restart File: ', &
7386 & trim(
dai(ng)%name)
7387# endif
7388# ifdef PROPAGATOR
7389 WRITE (out,230) ' Output GST Restart File: ', &
7390 & trim(
gst(ng)%name)
7391# endif
7392 WRITE (out,230) ' Output Restart File: ', &
7393 & trim(
rst(ng)%name)
7396 WRITE (out,230) ' Output History File: ', &
7397 & trim(
his(ng)%name)
7398 ELSE
7399 WRITE (out,230) ' Prefix for History Files: ', &
7400 & trim(
his(ng)%head)
7401 END IF
7402 END IF
7403# ifdef GRID_EXTRACT
7406 WRITE (out,230) ' Output History Extract File: ', &
7407 & trim(
xtr(ng)%name)
7408 ELSE
7409 WRITE (out,230) 'Prefix for History Extract Files: ', &
7410 & trim(
xtr(ng)%head)
7411 END IF
7412 END IF
7413# endif
7414# ifdef TANGENT
7416 WRITE (out,230) ' Output Tangent File: ', &
7417 & trim(
tlm(ng)%name)
7418 ELSE
7419 WRITE (out,230) ' Prefix for Tangent Files: ', &
7420 & trim(
tlm(ng)%head)
7421 END IF
7422# endif
7423# ifdef WEAK_CONSTRAINT
7424 WRITE (out,230) ' Output Impulse Forcing File: ', &
7425 & trim(
tlf(ng)%name)
7426# endif
7427#endif
7428#ifdef ADJOINT
7430 WRITE (out,230) ' Output Adjoint File: ', &
7431 & trim(
adm(ng)%name)
7432 ELSE
7433 WRITE (out,230) ' Prefix for Adjoint Files: ', &
7434 & trim(
adm(ng)%head)
7435 END IF
7436#endif
7437#if !defined CORRELATION
7438# if defined FORWARD_WRITE && !defined FOUR_DVAR
7439 WRITE (out,230) ' Output Forward State File: ', &
7440 & trim(
fwd(ng)%name)
7441# endif
7442# if defined AVERAGES || \
7443 (defined ad_averages && defined adjoint) || \
7444 (defined rp_averages && defined tl_ioms) || \
7445 (defined tl_averages && defined tangent)
7447 WRITE (out,230) ' Output Averages File: ', &
7448 & trim(
avg(ng)%name)
7449 ELSE
7450 WRITE (out,230) ' Prefix for Averages Files: ', &
7451 & trim(
avg(ng)%head)
7452 END IF
7453# endif
7454# if defined AVERAGES && defined AVERAGES_DETIDE && \
7455 (defined ssh_tides || defined uv_tides)
7456 WRITE (out,230) ' Output Detiding Harmonics File: ', &
7457 & trim(
har(ng)%name)
7458# endif
7459# ifdef DIAGNOSTICS
7461 WRITE (out,230) ' Output Diagnostics File: ', &
7462 & trim(
dia(ng)%name)
7463 ELSE
7464 WRITE (out,230) ' Prefix for Diagnostics Files: ', &
7465 & trim(
dia(ng)%head)
7466 END IF
7467# endif
7468# ifdef STATIONS
7469 WRITE (out,230) ' Output Stations File: ', &
7470 & trim(
sta(ng)%name)
7471# endif
7472# ifdef FLOATS
7473 WRITE (out,230) ' Output Floats File: ', &
7474 & trim(
flt(ng)%name)
7475# endif
7476# ifdef MODEL_COUPLING
7477 WRITE (out,230) ' Physical parameters File: ', &
7479# endif
7480#endif
7481 END IF
7482#ifdef GRID_EXTRACT
7484 IF (.not.
find_file(ng, out, fname,
'GRXNAME'))
THEN
7486 ELSE
7487 IF (
master.and.lwrite)
WRITE (out,230) &
7488 & ' Input History Extract Grid File: ', trim(fname)
7489 END IF
7490#endif
7491#ifndef ANA_GRID
7493 IF (.not.
find_file(ng, out, fname,
'GRDNAME'))
THEN
7495 ELSE
7496 IF (
master.and.lwrite)
WRITE (out,230) &
7497 & ' Input Grid File: ', trim(fname)
7498 END IF
7499#endif
7500#if !defined CORRELATION
7501# ifdef NESTING
7503 IF (.not.
find_file(ng, out, fname,
'NGCNAME'))
THEN
7505 ELSE
7506 IF (
master.and.lwrite)
WRITE (out,230) &
7507 & ' Nesting grid connectivity File: ', trim(fname)
7508 END IF
7509# endif
7510#endif
7511#ifdef INI_FILE
7512# ifdef NONLINEAR
7514 IF (.not.
find_file(ng, out, fname,
'ININAME'))
THEN
7516 ELSE
7517 IF (
master.and.lwrite)
WRITE (out,230) &
7518 ' Input Nonlinear Initial File: ', trim(fname)
7519 END IF
7520# endif
7521# if !defined CORRELATION
7522# if defined TANGENT && \
7523
7524 defined jedi || defined opt_observations || \
7525 defined sanity_check || defined sensitivity_4dvar || \
7526 defined tlm_check)
7528 IF (.not.
find_file(ng, out, fname,
'ITLNAME'))
THEN
7530 ELSE
7531 IF (
master.and.lwrite)
WRITE (out,230) &
7532 & ' Input Tangent Initial File: ', trim(fname)
7533 END IF
7534# endif
7535# if defined WEAK_CONSTRAINT && \
7536
7537 defined rbl4dvar_ana_sensitivity || \
7538 defined rbl4dvar_fct_sensitivity || \
7539 defined r_symmetry || \
7540 defined sp4dvar)
7542 IF (.not.
find_file(ng, out, fname,
'IRPNAME'))
THEN
7544 ELSE
7545 IF (
master.and.lwrite)
WRITE (out,230) &
7546 & ' Input Representer Initial File: ', trim(fname)
7547 END IF
7548# endif
7549# if defined ADJOINT && \
7550
7551 defined i4dvar_ana_sensitivity || defined forcing_sv || \
7552 defined opt_observations || defined opt_perturbation || \
7553 defined sanity_check || defined sensitivity_4dvar || \
7554 defined so_semi || defined stochastic_opt || \
7555 defined hessian_sv || defined hessian_so || \
7556 defined hessian_fsv || defined jedi)
7558 IF (.not.
find_file(ng, out, fname,
'IADNAME'))
THEN
7560 ELSE
7561 IF (
master.and.lwrite)
WRITE (out,230) &
7562 & ' Input Adjoint Initial File: ', trim(fname)
7563 END IF
7564# endif
7565# endif
7566#endif
7567#if !defined CORRELATION
7568# ifndef ANA_PSOURCE
7571 IF (.not.
find_file(ng, out, fname,
'SSFNAME'))
THEN
7573 ELSE
7574 IF (
master.and.lwrite)
WRITE (out,230) &
7575 & ' Input Sources/Sinks File: ', trim(fname)
7576 END IF
7577 END IF
7578# endif
7579# if defined SSH_TIDES || defined UV_TIDES
7580 IF (ng.eq.1) THEN
7582 IF (.not.
find_file(ng, out, fname,
'TIDENAME'))
THEN
7584 ELSE
7585 IF (
master.and.lwrite)
WRITE (out,230) &
7586 & ' Tidal Forcing File: ', trim(fname)
7587 END IF
7588 END IF
7589# endif
7590# ifdef FRC_FILE
7592 DO ifile=1,
frc(i,ng)%Nfiles
7593 fname=
frc(i,ng)%files(ifile)
7594 IF (.not.
find_file(ng, out, fname,
'FRCNAME'))
THEN
7596 & RETURN
7597 ELSE
7598 IF (ifile.eq.1) THEN
7599 IF (
master.and.lwrite)
WRITE (out,310) &
7600 & ' Input Forcing File ', i,': ', trim(fname)
7601 ELSE
7602 IF (
master.and.lwrite)
WRITE (out,
'(37x,a)') trim(fname)
7603 END IF
7604 END IF
7605 END DO
7606 END DO
7607# endif
7610 DO ifile=1,
clm(i,ng)%Nfiles
7611 fname=
clm(i,ng)%files(ifile)
7612 IF (.not.
find_file(ng, out, fname,
'CLMNAME'))
THEN
7614 & RETURN
7615 ELSE
7616 IF (ifile.eq.1) THEN
7617 IF (
master.and.lwrite)
WRITE (out,310) &
7618 & ' Input Climatology File ',i,': ',trim(fname)
7619 ELSE
7620 IF (
master.and.lwrite)
WRITE (out,
'(37x,a)') &
7621 & trim(fname)
7622 END IF
7623 END IF
7624 END DO
7625 END IF
7626 END DO
7627# ifndef ANA_NUDGCOEF
7631 IF (.not.
find_file(ng, out, fname,
'NUDNAME'))
THEN
7633 ELSE
7634 IF (
master.and.lwrite)
WRITE (out,230) &
7635 & ' Input Nudge Coefficients File: ', trim(fname)
7636 END IF
7637 END IF
7638# endif
7639# if defined FORWARD_READ && \
7640
7641 DO ifile=1,
fwd(ng)%Nfiles
7642 fname=
fwd(ng)%files(ifile)
7643 IF (.not.
find_file(ng, out, fname,
'FWDNAME'))
THEN
7645 ELSE
7646 IF (ifile.eq.1) THEN
7647 IF (
master.and.lwrite)
WRITE (out,230) &
7648 & ' Input Forward State File: ', trim(fname)
7649 ELSE
7650 WRITE (out,'(37x,a)') trim(fname)
7651 END IF
7652 END IF
7653 END DO
7654# endif
7655# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
7656 defined opt_observations || defined sensitivity_4dvar || \
7657 defined so_semi
7658# ifndef OBS_SPACE
7660 IF (.not.
find_file(ng, out, fname,
'ADSNAME'))
THEN
7662 ELSE
7663 IF (
master.and.lwrite)
WRITE (out,230) &
7664 & ' Input Adjoint Sensitivity File: ', trim(fname)
7665 END IF
7666# endif
7667# endif
7668
7671 DO ifile=1,
bry(i,ng)%Nfiles
7672 fname=
bry(i,ng)%files(ifile)
7673 IF (.not.
find_file(ng, out, fname,
'BRYNAME'))
THEN
7675 & RETURN
7676 ELSE
7677 IF (ifile.eq.1) THEN
7678 IF (
master.and.lwrite)
WRITE (out,310) &
7679 & ' Input Lateral Boundary File ', i, ': ', &
7680 & trim(fname)
7681 ELSE
7682 IF (
master.and.lwrite)
WRITE (out,
'(37x,a)') &
7683 & trim(fname)
7684 END IF
7685 END IF
7686 END DO
7687 END DO
7688 END IF
7689# ifdef STATIONS
7691 IF (.not.
find_file(ng, out, fname,
'SPOSNAM'))
THEN
7693 ELSE
7694 IF (
master.and.lwrite)
WRITE (out,230) &
7695 & ' Station positions File: ', trim(fname)
7696 END IF
7697# endif
7698#endif
7699#ifdef FOUR_DVAR
7701 IF (.not.
find_file(ng, out, fname,
'APARNAM'))
THEN
7703 ELSE
7704 IF (
master.and.lwrite)
WRITE (out,230) &
7705 & ' Assimilation Parameters File: ', trim(fname)
7706 END IF
7707#endif
7708#if !defined CORRELATION
7709# ifdef FLOATS
7711 IF (.not.
find_file(ng, out, fname,
'FPOSNAM'))
THEN
7713 ELSE
7714 IF (
master.and.lwrite)
WRITE (out,230) &
7715 & ' Initial Floats Positions File: ', trim(fname)
7716 END IF
7717# endif
7718# ifdef ICE_MODEL
7720 IF (.not.
find_file(ng, out, fname,
'IPARNAM'))
THEN
7722 ELSE
7723 IF (
master.and.lwrite)
WRITE (out,230) &
7724 & ' Ice Model Parameters File: ', trim(fname)
7725 END IF
7726# endif
7727# ifdef BIOLOGY
7729 IF (.not.
find_file(ng, out, fname,
'BPARNAM'))
THEN
7731 ELSE
7732 IF (
master.and.lwrite)
WRITE (out,230) &
7733 & ' Biology Parameters File: ', trim(fname)
7734 END IF
7735# endif
7736#endif
7738 IF (.not.
find_file(ng, out, fname,
'VARNAME'))
THEN
7740 ELSE
7741 IF (
master.and.lwrite)
WRITE (out,230) &
7742 & 'ROMS I/O variables Metadata File: ', trim(fname)
7743 END IF
7744 END DO
7745 IF (
nuser.gt.0)
THEN
7746 IF (
master.and.lwrite)
WRITE (out,230) &
7747 &
' Input/Output USER File: ', trim(
usrname)
7748 END IF
7749
7750
7751
7752
7753
7754 IF (
nuser.gt.0)
THEN
7755 IF (
master.and.lwrite)
THEN
7756 WRITE (out,240)
7758 WRITE (out,250)
user(i), i, i
7759 END DO
7760 END IF
7761 END IF
7762
7763#if !defined ANA_TIDES && \
7764 (defined tide_generating_forces || \
7765 defined ssh_tides || defined uv_tides)
7766
7767
7768
7769
7770
7772 CALL tides_date (ng)
7773 END DO
7774#endif
7775
7776#if defined WEAK_CONSTRAINT && \
7777 (defined posterior_eofs || defined posterior_error_f || \
7778 defined posterior_error_i)
7779
7780
7781
7782
7783
7784
7785
7788 WRITE (out,330)
'Nouter = ',
nouter, &
7789 & 'Posterior analysis error available for Nouter=1 only.'
7790 END IF
7792 RETURN
7793 END IF
7794#endif
7795
7796#ifdef NESTING
7797
7798
7799
7800
7801
7802
7803 IF (.not.allocated(runtimeday)) THEN
7804 allocate ( runtimeday(
ngrids) )
7805 END IF
7806 IF (.not.allocated(runtimesec)) THEN
7807 allocate ( runtimesec(
ngrids) )
7808 END IF
7810 runtimesec(ng)=real(
ntimes(ng),r8)*
dt(ng)
7811 runtimeday(ng)=runtimesec(ng)*
sec2day
7812 END DO
7814 IF (abs(runtimesec(1)-runtimesec(ng)).ne.0.0_r8) THEN
7816 WRITE (out,340) 1, runtimesec( 1), runtimeday( 1), &
7817 & ng, runtimesec(ng), runtimeday(ng)
7818 END IF
7820 RETURN
7821 END IF
7822 END DO
7823#endif
7824#ifdef SOLVE3D
7825
7826
7827
7828
7829
7832 itrc=i
7833# ifdef T_PASSIVE
7835# endif
7836
7837
7838
7839
7841#ifdef ADJOINT
7843#endif
7844#if defined TANGENT || defined TL_IOMS
7846#endif
7847
7848
7849
7850 IF (
tnudg(itrc,ng).gt.0.0_r8)
THEN
7851 tnudg(itrc,ng)=1.0_r8/(
tnudg(itrc,ng)*86400.0_r8)
7852 ELSE
7853 tnudg(itrc,ng)=0.0_r8
7854 END IF
7855 END DO
7856 END DO
7857#endif
7858
7859#ifdef GRID_EXTRACT
7860
7861
7862
7863
7864
7873 RETURN
7874 END IF
7875# if defined FOUR_DVAR || defined FORWARD_WRITE
7879 RETURN
7880 END IF
7881# endif
7882 END IF
7883 END DO
7884#endif
7885
7886 50 FORMAT (/,' READ_PhyPar - Error while processing line: ',/,a)
7887 60 FORMAT (/,1x,a,/, &
7888 & /,1x,'Operating system : ',a, &
7889 & /,1x,'CPU/hardware : ',a, &
7890 & /,1x,'Compiler system : ',a, &
7891 & /,1x,'Compiler command : ',a, &
7892 & /,1x,'Compiler flags : ',a, &
7893#ifdef DISTRIBUTE
7894# if defined PIO_LIB && \
7895 (defined asynchronous_pio || defined asynchronous_scorpio)
7896 & /,1x,'Peer Communicator : ',i0,', PET size = ',i0, &
7897 & /,1x,'OCN Communicator : ',i0,', PET size = ',i0, &
7898 & /,1x,'I/O Communicator : ',i0,', PET size = ',i0, &
7899 & 2x,'(Peer Ranks: ',a,')', &
7900# ifdef ASYNCHRONOUS_SCORPIO
7901 & /,1x,'InterCommunicator : ',i0, &
7902# endif
7903# endif
7904# ifdef DISJOINTED
7905 & /,1x,'Full Communicator : ',i0,', PET size = ',i0, &
7906 & ', Disjointed Subgroups = ',i0, &
7907 & /,1x,'Fork Communicator : ',i0,', PET size = ',i0, &
7908 & ', Color Range = ',i0,' to ',i0, &
7909# ifdef CONCURRENT_KERNEL
7910 & /,1x,'Task Communicator : ',i0,', PET size = ',i0, &
7911 & ', Color Range = ',i0,' to ',i0, &
7912# endif
7913# endif
7914# if !(defined PIO_LIB && \
7915 (defined asynchronous_pio || defined asynchronous_scorpio)) && \
7916
7917 & /,1x,'OCN Communicator : ',i0,', PET size = ',i0,/, &
7918# endif
7919 & /,1x,'Input Script : ',a,/, &
7920#endif
7921#ifdef GIT_URL
7922 & /,1x,'GIT Root URL : ',a, &
7923 & /,1x,'GIT Revision : ',a, &
7924#endif
7925 & /,1x,'SVN Root URL : ',a, &
7926 & /,1x,'SVN Revision : ',a,/, &
7927 & /,1x,'Local Root : ',a, &
7928 & /,1x,'Header Dir : ',a, &
7929 & /,1x,'Header file : ',a, &
7930 & /,1x,'Analytical Dir : ',a)
7931 70 FORMAT (/,' Resolution, Grid ',i2.2,': ',i0,'x',i0,'x',i0, &
7932 & ',',2x,'Parallel Nodes: ',i0,',',2x,'Tiling: ',i0, &
7933 & 'x',i0)
7934 80 FORMAT (/,' ROMS: Wrong choice of grid ',i2.2,1x, &
7935 & 'partition or number of parallel nodes.', &
7936 & /,12x,a,1x,i0,/,12x, &
7937 & 'must be equal to the number of parallel processes = ', &
7938 & i0,/,12x,'Change -np value to mpirun or', &
7939 & /,12x,'change domain partition in input script.')
7940 90 FORMAT (/,' Resolution, Grid ',i2.2,': ',i0,'x',i0,'x',i0, &
7941 & ',',2x,'Parallel Threads: ',i0,',',2x,'Tiling: ',i0, &
7942 & 'x',i0)
7943 100 FORMAT (/,' ROMS: Wrong choice of grid ',i2.2,1x, &
7944 & 'partition or number of parallel threads.', &
7945 & /,12x,'NtileI*NtileJ must be a positive multiple of the', &
7946 & ' number of threads.', &
7947 & /,12x,'Change number of threads (environment variable) ', &
7948 & 'or',/,12x,'change domain partition in input script.')
7949 110 FORMAT (/,/,' Physical Parameters, Grid: ',i2.2, &
7950 & /, ' =============================',/)
7951 120 FORMAT (1x,i10,2x,a,t32,a)
7952 130 FORMAT (1x,i10,2x,a,t32,a,/,t34,a)
7953 140 FORMAT (f11.3,2x,a,t32,a)
7954 150 FORMAT (f11.2,2x,a,t32,a)
7955 160 FORMAT (f11.3,2x,a,t32,a,/,t34,a)
7956 170 FORMAT (10x,l1,2x,a,t32,a)
7957 180 FORMAT (10x,l1,2x,a,t32,a,i2.2,':',1x,a)
7958 185 FORMAT (10x,l1,2x,a,'(',i2.2,')',t32,a,i2.2,':',1x,a)
7959 190 FORMAT (1p,e11.4,2x,a,'(',i2.2,')',t32,a,/,t34,a,i2.2,':',1x,a)
7960 195 FORMAT (1p,e11.4,2x,a,t32,a,i2.2,':',1x,a)
7961 200 FORMAT (1p,e11.4,2x,a,t32,a)
7962 210 FORMAT (1p,e11.4,2x,a,t32,a,/,t34,a)
7963 220 FORMAT (/,' Output/Input Files:',/)
7964 230 FORMAT (2x,a,a)
7965 240 FORMAT (/,' Generic User Parameters:',/)
7966 250 FORMAT (1p,e11.4,2x,'user(',i2.2,')',t32, &
7967 & 'User parameter ',i2.2,'.')
7968 260 FORMAT (/,' READ_PHYPAR - Invalid input parameter, ',a, &
7969 & i4,/,15x,a)
7970 265 FORMAT (/,' READ_PHYPAR - Invalid input parameter, ',a, &
7971 & 1p,e11.4,/,15x,a)
7972 280 FORMAT (/,' READ_PHYPAR - Variable index not yet loaded, ', a)
7973 290 FORMAT (/,' READ_PHYPAR - Invalid dimension parameter, ',a,i0, &
7974 & /,15x,a)
7975 300 FORMAT (/,' READ_PHYPAR - Invalid dimension parameter, ',a,'(', &
7976 & i2.2,')',/,15x,a)
7977 310 FORMAT (2x,a,i2.2,a,a)
7978 320 FORMAT (/,' READ_PHYPAR - Could not find input parameter: ', a, &
7979 & /,15x,'in ROMS standard input script.',/,15x,a)
7980 330 FORMAT (/,' READ_PHYPAR - Invalid input parameter, ',a,i4,/,15x,a)
7981 340 FORMAT (/,' READ_PHYPAR - Inconsistent time-stepping period:', &
7982 & /,15x,'Grid ',i2.2,':',f14.1,' (sec)',2x,f14.2,' (days)', &
7983 & /,15x,'Grid ',i2.2,':',f14.1,' (sec)',2x,f14.2,' (days)', &
7984 & /,15x,'Adjust standard input parameter NTIMES in ', &
7985 & '''roms.in''.'/)
7986 350 FORMAT (/,' READ_PHYPAR - Invalid input parameter, ',a,i0, &
7987 & ', for grid ',i2.2,/,15x,a,i0,', ',a,i0,/,15x,a,/,15x,a)
7988 360 FORMAT (/,' READ_PHYPAR - Grid = ',i0,1x,'dimensions are',1x, &
7989 & 'inappropriate for the given decimation factor:',/,15x, &
7990 & 'ExtractFlag = ',i0,/,15x, &
7991 & 'MOD(Lm(ng)+1, ExtractFlag(ng)) = ',i0,/,15x, &
7992 & 'MOD(Mm(ng)+1, ExtractFlag(ng)) = ',i0,/,15x, &
7993 & 'because both division reminders must be zero.')
7994 370 FORMAT (/,' READ_PHYPAR - Unsupported decimation factor for',1x, &
7995 & 'coarsening split 4D-Var',/,15x, &
7996 & 'Grid = ',i0,', ExtractFlag = ',i0)
7997
7998 RETURN
subroutine edit_file_struct(ng, nfiles, s)
subroutine, public ref_clock(r_time)
integer function decode_line(line_text, keyword, nval, cval, rval)
integer function load_s2d(nval, fname, fdim, line, label, ifile, igrid, mgrids, nfiles, ncount, idim, io_type, s)
integer function load_lbc(ninp, vinp, line, nline, ifield, igrid, itrcstr, itrcend, svname, s)
integer function load_tadv(ninp, vinp, line, nline, itrc, igrid, itracer, itrcstr, itrcend, svname, s)
logical function find_file(ng, out, fname, keyword)
subroutine initialize_biology
integer, dimension(:,:), allocatable couplesteps
real(r8), dimension(:,:), allocatable timeinterval
integer, dimension(:), allocatable ntimes_fct
subroutine, public allocate_fourdvar
integer, dimension(:), allocatable ntimes_ana
integer, parameter isvice
integer, parameter isisxx
integer, parameter ishsno
integer, parameter istice
integer, parameter isisxy
integer, parameter ishmel
integer, parameter isiage
integer, parameter isaice
integer, parameter isuice
integer, parameter ishice
integer, parameter isisyy
type(t_io), dimension(:), allocatable ads
character(len=256) aparnam
type(t_io), dimension(:), allocatable his
type(t_io), dimension(:), allocatable ssf
type(t_io), dimension(:), allocatable grx
type(t_io), dimension(:), allocatable adm
type(t_io), dimension(:), allocatable iad
type(t_io), dimension(:), allocatable irp
type(t_io), dimension(:), allocatable fcta
integer, dimension(:,:), allocatable clmids
type(t_io), dimension(:), allocatable flt
type(t_io), dimension(:), allocatable nud
type(t_io), dimension(:), allocatable tlf
type(t_io), dimension(:), allocatable xtr
character(len=256) myappcpp
type(t_io), dimension(:), allocatable fctb
integer, dimension(:), allocatable nclmfiles
character(len=256) bparnam
type(t_io), dimension(:), allocatable har
type(t_io), dimension(:), allocatable tlm
type(t_io), dimension(:), allocatable itl
type(file_desc_t), dimension(:,:), allocatable brydesc
type(t_io), dimension(:), allocatable blk
type(t_io), dimension(:,:), allocatable frc
character(len=256) ngcname
type(t_io), dimension(:), allocatable dai
integer, dimension(:,:), allocatable bryids
type(t_io), dimension(:), allocatable tide
type(t_io), dimension(:), allocatable qck
subroutine, public allocate_iounits(ngrids)
type(t_io), dimension(:), allocatable grd
type(t_io), dimension(:,:), allocatable bry
type(t_io), dimension(:), allocatable fwd
type(t_io), dimension(:), allocatable rst
integer, dimension(:), allocatable nbcfiles
type(file_desc_t), dimension(:,:), allocatable clmdesc
character(len=256) usrname
type(t_io), dimension(:), allocatable gst
type(t_io), dimension(:), allocatable ini
character(len=256) sparnam
type(t_io), dimension(:,:), allocatable clm
integer, dimension(:,:), allocatable frcids
type(t_io), dimension(:), allocatable avg
type(t_io), dimension(:), allocatable sta
type(t_io), dimension(:), allocatable err
character(len=256) fposnam
type(file_desc_t), dimension(:,:), allocatable frcdesc
character(len=256) varname
type(t_io), dimension(:), allocatable dia
character(len=256) iparnam
character(len=256) sposnam
integer, dimension(:), allocatable nffiles
integer, dimension(:), allocatable idttav
logical, dimension(:,:), allocatable hout
integer, dimension(:), allocatable ihvtav
integer, dimension(:), allocatable iddu2d
integer, parameter io_nf90
integer, dimension(:), allocatable ihutav
integer, dimension(:), allocatable iddv2d
character(len=80) git_rev
integer, parameter io_pio
integer, dimension(:), allocatable idutav
integer, dimension(:), allocatable iddu3d
integer, dimension(:), allocatable idsurt
character(len=256) git_url
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
subroutine, public initialize_ncparam
integer, dimension(:), allocatable idtrcd
character(len=80) svn_rev
subroutine, public allocate_ncparam
logical, dimension(:,:), allocatable qout
integer, dimension(:), allocatable iddv3d
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:), allocatable istsur
integer, dimension(:), allocatable idvtav
logical, dimension(:,:), allocatable dout
character(len=256) svn_url
logical, dimension(:,:), allocatable aout
integer, dimension(:,:), allocatable iddtrc
subroutine, public allocate_parallel(ngrids)
type(t_adv), dimension(:,:), allocatable hadvection
type(t_lbc), dimension(:,:,:), allocatable ad_lbc
integer, dimension(:), allocatable nrectc
type(t_adv), dimension(:,:), allocatable ad_hadvection
integer, dimension(:), allocatable n
integer, dimension(:,:), allocatable gridnumber
integer, dimension(:), allocatable ntilex
type(t_lbc), dimension(:,:,:), allocatable lbc
integer, dimension(:), allocatable lm
type(t_adv), dimension(:,:), allocatable vadvection
integer, dimension(:), allocatable ntilee
integer, dimension(:), allocatable ntilei
subroutine, public allocate_param
integer, dimension(:), allocatable nt
integer, dimension(:), allocatable gridsinlayer
integer, dimension(:), allocatable mm
type(t_adv), dimension(:,:), allocatable ad_vadvection
subroutine, public initialize_param
integer, dimension(:), allocatable ntilej
type(var_desc_t), dimension(:), pointer var_desc
character(len=1024) cioranks
character(len=10) pio_methodname
real(r8), dimension(:), allocatable tkenu4
real(r8), dimension(:), allocatable blk_zt
logical, dimension(:), allocatable clm_file
logical, dimension(:), allocatable luvsrc
integer, dimension(:), allocatable kends
real(r8), dimension(:), allocatable ad_akv_fac
real(r8), dimension(:), allocatable gls_p
real(r8), dimension(:), allocatable gls_n
real(r8), dimension(:,:), allocatable tl_tnu2
integer, dimension(:), allocatable nrrec
logical, dimension(:), allocatable luvsponge
subroutine, public allocate_scalars
integer, dimension(:), allocatable ninfo
real(dp), parameter spval
integer, dimension(:), allocatable nspa
logical, dimension(:,:), allocatable ltracersrc
logical, dimension(:), allocatable lnudgem2clm
integer, dimension(:), allocatable ntimes
real(r8), dimension(:), allocatable gls_m
real(r8), dimension(:), allocatable blk_zw
integer, dimension(:), allocatable nxtr
real(r8), dimension(:), allocatable zos_hsig_alpha
integer, dimension(:), allocatable ndefhis
integer, dimension(:), allocatable ntlm
real(r8), dimension(:), allocatable t0
real(dp), dimension(:), allocatable theta_s
real(dp), dimension(:), allocatable dt
subroutine, public initialize_scalars
integer, dimension(:), allocatable nobc
logical, dimension(:,:), allocatable ad_volcons
real(r8), dimension(:), allocatable dcrit
real(r8), dimension(:), allocatable sz_alpha
integer, dimension(:), allocatable levbfrc
real(r8), dimension(:,:), allocatable so_sdev
real(dp), dimension(:), allocatable znudg
logical, dimension(:), allocatable lm3clm
logical, dimension(:), allocatable ldefflt
real(r8), dimension(:), allocatable tl_akv_fac
logical, dimension(:), allocatable ldefdia
logical, dimension(:), allocatable lsshclm
real(r8), dimension(:), allocatable user
integer, dimension(:), allocatable nrst
real(r8), dimension(:,:), allocatable nl_tnu2
integer, dimension(:), allocatable nqck
real(dp), dimension(:), allocatable m2nudg
logical, dimension(:), allocatable lastrec
real(r8), dimension(:), allocatable gls_c2
integer, dimension(:), allocatable nfrec
real(r8), dimension(:), allocatable charnok_alpha
integer, dimension(:), allocatable ndeftlm
real(r8), dimension(:), allocatable zos
real(dp), dimension(:,:), allocatable tnudg
logical, dimension(:), allocatable ldeftide
real(r8), dimension(:), allocatable rdrg
logical, dimension(:), allocatable ldefavg
logical, dimension(:,:), allocatable ltracersponge
logical, dimension(:), allocatable ldefqck
real(r8), dimension(:,:), allocatable tl_tnu4
integer, dimension(:), allocatable nflt
integer, dimension(:), allocatable navg
real(r8), dimension(:), allocatable s0
logical, dimension(:,:), allocatable volcons
integer, dimension(:), allocatable lmd_jwt
real(r8), dimension(:), allocatable dends
integer, dimension(:), allocatable kstrs
real(r8), dimension(:), allocatable tcoef
real(r8), dimension(:), allocatable akk_bak
real(r8), dimension(:), allocatable gls_cmu0
logical, dimension(:), allocatable lcycleadj
real(dp), dimension(:), allocatable tcline
integer, dimension(:), allocatable ndtfast
logical, dimension(:), allocatable ldefhis
real(r8), dimension(:,:), allocatable ad_akt_fac
logical, dimension(:), allocatable lwsrc
real(r8), dimension(:), allocatable ad_visc4
real(dp), dimension(:), allocatable obcfac
real(dp), parameter sec2day
logical, dimension(:), allocatable lcycletlm
real(r8), dimension(:), allocatable gls_sigk
real(r8), dimension(:), allocatable tl_visc4
real(r8), dimension(:), allocatable crgban_cw
logical, dimension(:), allocatable obcdata
real(dp), dimension(:), allocatable theta_b
real(r8), dimension(:), allocatable gamma2
integer, dimension(:), allocatable extractflag
integer, dimension(:), allocatable ndefqck
integer, dimension(:), allocatable nsta
real(r8), dimension(:,:), allocatable ad_tnu2
real(r8), dimension(:,:), allocatable akt_bak
logical, dimension(:), allocatable lnudgem3clm
real(dp), dimension(:), allocatable hc
integer, dimension(:), allocatable nhis
real(r8), dimension(:), allocatable akv_bak
real(r8), dimension(:), allocatable gls_pmin
integer, dimension(:), allocatable ndefavg
real(r8), dimension(:), allocatable nl_visc4
real(r8), dimension(:), allocatable ad_visc2
real(r8), dimension(:,:), allocatable ad_tnu4
real(r8), dimension(:), allocatable tl_visc2
logical, dimension(:), allocatable ldefxtr
integer, dimension(:), allocatable nsca
real(r8), dimension(:,:), allocatable nl_tnu4
real(dp), dimension(:,:), allocatable obc_time
integer, parameter isouth
real(r8), dimension(:), allocatable nl_visc2
integer, dimension(:), allocatable ndefxtr
real(r8), dimension(:), allocatable akp_bak
real(r8), dimension(:,:), allocatable akt_limit
type(t_scalars), dimension(:), allocatable scalars
real(r8), dimension(:), allocatable blk_zq
real(r8), dimension(:), allocatable gls_c1
integer, dimension(:), allocatable nspt
real(r8), dimension(:), allocatable dstrs
logical, dimension(:), allocatable lm2clm
real(r8), dimension(:), allocatable akv_limit
real(r8), dimension(:), allocatable zob
real(dp), dimension(:), allocatable m3nudg
real(r8), dimension(:), allocatable rdrg2
integer, dimension(:), pointer inert
logical, dimension(:,:), allocatable tl_volcons
logical, dimension(:), allocatable ldefrst
logical, dimension(:), allocatable ldefout
integer, dimension(:), allocatable nsct
logical, dimension(:), allocatable ldefsta
logical, dimension(:,:), allocatable ltracerclm
integer, dimension(:), allocatable nsff
real(r8), dimension(:), allocatable gls_sigp
real(r8), dimension(:), allocatable tkenu2
real(dp), dimension(:,:), allocatable sf_time
real(r8), dimension(:), allocatable gls_kmin
integer, parameter inorth
integer, dimension(:), allocatable ndefadj
integer, dimension(:), allocatable levsfrc
integer, dimension(:), allocatable nbrec
integer, dimension(:), allocatable nadj
integer, dimension(:), allocatable ndia
real(r8), dimension(:), allocatable r0
integer, dimension(:), allocatable vstretching
logical, dimension(:,:), allocatable lnudgetclm
real(r8), dimension(:), allocatable so_decay
integer, dimension(:), allocatable ntsdia
integer, dimension(:), allocatable ntsavg
integer, dimension(:), allocatable ndefdia
logical, dimension(:), allocatable lcyclerst
real(r8), dimension(:), allocatable gls_c3m
real(r8), dimension(:), allocatable scoef
real(r8), dimension(:,:), allocatable tl_akt_fac
real(r8), dimension(:), allocatable wec_alpha
integer, dimension(:), allocatable vtransform
real(r8), dimension(:), allocatable gls_c3p
subroutine initialize_sediment
subroutine, public allocate_stepping(ngrids)
character(len=80) my_fort
character(len=512) my_fflags
subroutine, public initialize_pio
logical function, public founderror(flag, noerr, line, routine)