105#if !defined PARALLEL_IO && defined DISTRIBUTE
111 integer,
intent(in) :: ng, model, ncid
112 integer,
intent(in) :: DimIDs(nDimID)
114 character (*),
intent(in) :: ncname
118 integer,
parameter :: Natt = 25
120 integer :: brydim, i, ie, is, j, lstr, varid
121 integer :: srdim, stadim, status, swdim, trcdim, usrdim
128#if defined BIOLOGY && defined ECOSIM
129 integer :: bacdim, domdim, fecdim, lightdim, phydim
133#if !defined PARALLEL_IO && defined DISTRIBUTE
134 integer :: ibuffer(2)
136 integer :: p2dgrd(2), tbrydim(2)
137 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
141 character (len=11 ) :: bryatt, clmatt, frcatt
142 character (len=50 ) :: tiling
143 character (len=80 ) :: type
145 character (len=512) :: state_vector
148 character (len=512) :: bio_file
150 character (len=4096) :: string
151 character (len=MaxLen) :: Vinfo(Natt)
153 character (len=*),
parameter :: MyFile = &
154 & __FILE__//
", def_info_nf90"
181 tbrydim(1)=dimids(11)
182 tbrydim(2)=dimids(14)
183#if defined ECOSIM && defined SOLVE3D
195 IF ((
nuser.gt.0).and.(ncid.ne.
gst(ng)%ncid))
THEN
196 status=
def_dim(ng, model, ncid, ncname,
'Nuser', &
221 WRITE (
history,
'(a,1x,a,", ",a)')
'ROMS, Version', &
225 WRITE (
history,
'(a,1x,a)')
'ROMS, Version', &
236 status=nf90_put_att(ncid, nf90_global,
'file', &
238 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
251 status=nf90_put_att(ncid, nf90_global,
'format', &
252 &
'netCDF-4/HDF5 file')
254 status=nf90_put_att(ncid, nf90_global,
'format', &
255 &
'netCDF-3 64bit offset file')
257 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
269 type=
'CF-1.4, SGRID-0.3'
271 status=nf90_put_att(ncid, nf90_global,
'Conventions', &
273 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
274 IF (
master)
WRITE (
stdout,20)
'Conventions', trim(ncname)
282 IF (ncid.eq.
adm(ng)%ncid)
THEN
283 type=
'ROMS adjoint history file'
284 ELSE IF (ncid.eq.
avg(ng)%ncid)
THEN
285#if defined AD_AVERAGES && defined ADJOINT
286 type=
'ROMS adjoint model averages file'
287#elif defined RP_AVERAGES && defined TL_IOMS
288 type=
'ROMS representer model averages file'
289#elif defined TL_AVERAGES && defined TANGENT
290 type=
'ROMS tangent linear model averages file'
292 type=
'ROMS nonlinear model averages file'
294 ELSE IF (ncid.eq.
dia(ng)%ncid)
THEN
295 type=
'ROMS diagnostics file'
296 ELSE IF (ncid.eq.
flt(ng)%ncid)
THEN
297 type=
'ROMS floats file'
298 ELSE IF (ncid.eq.
err(ng)%ncid)
THEN
299 type=
'ROMS posterior analysis error covariance matrix'
300 ELSE IF (ncid.eq.
gst(ng)%ncid)
THEN
301 type=
'ROMS GST check pointing restart file'
302 ELSE IF (ncid.eq.
har(ng)%ncid)
THEN
303 type=
'ROMS Least-squared Detiding Harmonics file'
304 ELSE IF (ncid.eq.
hss(ng)%ncid)
THEN
305 type=
'ROMS 4D-Var Hessian eigenvectors file'
306 ELSE IF (ncid.eq.
his(ng)%ncid)
THEN
307 type=
'ROMS history file'
308 ELSE IF (ncid.eq.
itl(ng)%ncid)
THEN
309 type=
'ROMS tangent linear model initial file'
310 ELSE IF (ncid.eq.
lcz(ng)%ncid)
THEN
311 type=
'ROMS 4D-Var Lanczos vectors file'
312 ELSE IF (ncid.eq.
lze(ng)%ncid)
THEN
313 type=
'ROMS 4D-Var Evolved Lanczos vectors file'
314 ELSE IF (ncid.eq.
nrm(1,ng)%ncid)
THEN
315 type=
'ROMS initial conditions error covariance norm file'
316 ELSE IF (ncid.eq.
nrm(2,ng)%ncid)
THEN
317 type=
'ROMS model error covariance norm file'
318 ELSE IF (ncid.eq.
nrm(3,ng)%ncid)
THEN
319 type=
'ROMS boundary conditions error covariance norm file'
320 ELSE IF (ncid.eq.
nrm(4,ng)%ncid)
THEN
321 type=
'ROMS surface forcing error covariance norm file'
322 ELSE IF (ncid.eq.
qck(ng)%ncid)
THEN
323 type=
'ROMS quicksave file'
324 ELSE IF (ncid.eq.
rst(ng)%ncid)
THEN
325 type=
'ROMS restart file'
327 ELSE IF (ncid.eq.
sca(ng)%ncid)
THEN
328 type=
'ROMS AD scratch file'
329 ELSE IF (ncid.eq.
sct(ng)%ncid)
THEN
330 type=
'ROMS TL scratch file'
331 ELSE IF (ncid.eq.
spa(ng)%ncid)
THEN
332 type=
'ROMS AD Arnoldi file'
333 ELSE IF (ncid.eq.
spt(ng)%ncid)
THEN
334 type=
'ROMS TL Arnoldi file'
336 ELSE IF (ncid.eq.
sta(ng)%ncid)
THEN
337 type=
'ROMS station file'
338 ELSE IF (ncid.eq.
tlf(ng)%ncid)
THEN
339 type=
'ROMS tangent linear impulse forcing file'
340 ELSE IF (ncid.eq.
tlm(ng)%ncid)
THEN
341 type=
'ROMS tangent linear history file'
344 status=nf90_put_att(ncid, nf90_global,
'type', &
346 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
370 status=nf90_put_att(ncid, nf90_global,
'title', &
372 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
380 status=nf90_put_att(ncid, nf90_global,
'var_info', &
382 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
391 lstr=len_trim(state_vector)-1
392 status=nf90_put_att(ncid, nf90_global,
'state_vector', &
393 & state_vector(1:lstr))
394 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
395 IF (
master)
WRITE (
stdout,20)
'state_vector', trim(ncname)
404 status=nf90_put_att(ncid, nf90_global,
'gst_file', &
405 & trim(
gst(ng)%name))
406 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
415 status=nf90_put_att(ncid, nf90_global,
'rst_file', &
416 & trim(
rst(ng)%name))
417 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
427 status=nf90_put_att(ncid, nf90_global,
'his_base', &
428 & trim(
his(ng)%base))
430 status=nf90_put_att(ncid, nf90_global,
'his_file', &
431 & trim(
his(ng)%name))
433 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
443 status=nf90_put_att(ncid, nf90_global,
'extract_grid', &
444 & trim(
grx(ng)%name))
445 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
446 IF (
master)
WRITE (
stdout,20)
'extract_grid', trim(ncname)
455 status=nf90_put_att(ncid, nf90_global,
'extract_base', &
456 & trim(
xtr(ng)%base))
458 status=nf90_put_att(ncid, nf90_global,
'extract_file', &
459 & trim(
xtr(ng)%name))
461 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
462 IF (
master)
WRITE (
stdout,20)
'extract_file', trim(ncname)
470#if defined AVERAGES || \
471 (defined ad_averages && defined adjoint) || \
472 (defined rp_averages && defined tl_ioms) || \
473 (defined tl_averages && defined tangent)
476 status=nf90_put_att(ncid, nf90_global,
'avg_base', &
477 & trim(
avg(ng)%base))
479 status=nf90_put_att(ncid, nf90_global,
'avg_file', &
480 & trim(
avg(ng)%name))
482 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
490#if defined AVERAGES && defined AVERAGES_DETIDE && \
491 (defined ssh_tides || defined uv_tides)
493 status=nf90_put_att(ncid, nf90_global,
'har_file', &
494 & trim(
har(ng)%name))
495 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
506 status=nf90_put_att(ncid,nf90_global,
'dia_base', &
507 & trim(
dia(ng)%base))
509 status=nf90_put_att(ncid, nf90_global,
'dia_file', &
510 & trim(
dia(ng)%name))
512 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
520#if defined WEAK_CONSTRAINT && \
521 (defined posterior_error_f || defined posterior_error_i)
523 status=nf90_put_att(ncid, nf90_global,
'err_file', &
524 & trim(
err(ng)%name))
525 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
535 status=nf90_put_att(ncid, nf90_global,
'sta_file', &
536 & trim(
sta(ng)%name))
537 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
547 status=nf90_put_att(ncid, nf90_global,
'flt_file', &
548 & trim(
flt(ng)%name))
549 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
559 status=nf90_put_att(ncid, nf90_global,
'grd_file', &
560 & trim(
grd(ng)%name))
561 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
572 status=nf90_put_att(ncid, nf90_global,
'ini_file', &
573 & trim(
ini(ng)%name))
574 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
584 status=nf90_put_att(ncid,nf90_global,
'itl_file', &
585 & trim(
itl(ng)%name))
586 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
594# if defined ADJOINT && \
596 defined i4dvar_ana_sensitivity || defined opt_observations || \
597 defined sensitivity_4dvar || defined so_semi || \
598 defined stochastic_opt )
600 status=nf90_put_att(ncid, nf90_global,
'iad_file', &
601 & trim(
iad(ng)%name))
602 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
611#if defined I4DVAR || defined OPT_OBSERVATIONS || \
612 defined weak_constraint
614 status=nf90_put_att(ncid, nf90_global,
'nrm_file', &
615 & trim(
nrm(1,ng)%name))
616 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
624#ifdef WEAK_CONSTRAINT
626 status=nf90_put_att(ncid, nf90_global,
'tlf_file', &
627 & trim(
tlf(ng)%name))
628 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
638 status=nf90_put_att(ncid, nf90_global,
'obs_file', &
639 & trim(
obs(ng)%name))
640 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
648#ifdef RBL4DVAR_FCT_SENSITIVITY
650 status=nf90_put_att(ncid, nf90_global,
'fcta_file', &
651 & trim(
fcta(ng)%name))
652 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
660 status=nf90_put_att(ncid, nf90_global,
'fctb_file', &
661 & trim(
fctb(ng)%name))
662 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
671 status=nf90_put_att(ncid, nf90_global,
'oifa_file', &
672 & trim(
oifa(ng)%name))
673 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
681 status=nf90_put_att(ncid, nf90_global,
'oifb_file', &
682 & trim(
oifb(ng)%name))
683 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
691 status=nf90_put_att(ncid, nf90_global,
'foia_file', &
692 & trim(foia(ng)%name))
693 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
701 status=nf90_put_att(ncid, nf90_global,
'foib_file', &
702 & trim(foib(ng)%name))
703 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
715 status=nf90_put_att(ncid, nf90_global,
'river_file', &
716 & trim(
ssf(ng)%name))
717 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
718 IF (
master)
WRITE (
stdout,20)
'river_file', trim(ncname)
726#if defined SSH_TIDES || defined UV_TIDES
729 status=nf90_put_att(ncid, nf90_global,
'tide_file', &
730 & trim(
tide(ng)%name))
731 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
745 WRITE (frcatt,30)
'frc_file_', i
746 status=nf90_put_att(ncid, nf90_global, frcatt, &
748 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
749 IF (
master)
WRITE (
stdout,20) trim(frcatt), trim(ncname)
763 WRITE (bryatt,30)
'bry_file_', i
764 status=nf90_put_att(ncid, nf90_global, bryatt, &
766 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
767 IF (
master)
WRITE (
stdout,20) trim(bryatt), trim(ncname)
775#if !(defined ANA_SSH || defined ANA_M2CLIMA || \
776 defined ana_m3clima || defined ana_tclima)
782 WRITE (clmatt,30)
'clm_file_', i
783 status=nf90_put_att(ncid, nf90_global, clmatt, &
785 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
786 IF (
master)
WRITE (
stdout,20) trim(clmatt), trim(ncname)
798 status=nf90_put_att(ncid, nf90_global,
'nud_file', &
799 & trim(
nud(ng)%name))
800 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
811 status=nf90_put_att(ncid, nf90_global,
'fwd_file', &
812 & trim(
fwd(ng)%name))
813 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
821#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
822 defined opt_observations || defined sensitivity_4dvar || \
825 status=nf90_put_att(ncid, nf90_global,
'ads_file', &
826 & trim(
ads(ng)%name))
827 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
835#if !defined DEBUGGING && defined DISTRIBUTE
837 status=nf90_put_att(ncid, nf90_global,
'script_file', &
839 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
840 IF (
master)
WRITE (
stdout,20)
'script_file', trim(ncname)
849 status=nf90_put_att(ncid, nf90_global,
'apar_file', &
851 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
861 status=nf90_put_att(ncid, nf90_global,
'bpar_file', &
863 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
873 status=nf90_put_att(ncid, nf90_global,
'fpos_file', &
875 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
885 status=nf90_put_att(ncid, nf90_global,
'spos_file', &
887 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
903 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
910# if defined ADJOINT || defined TANGENT || defined TL_IOMS
914 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
927 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
934# if defined ADJOINT || defined TANGENT || defined TL_IOMS
940 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
953 status=nf90_put_att(ncid, nf90_global,
'git_url', &
955 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
962#if !defined DEBUGGING && defined GIT_REV
964 status=nf90_put_att(ncid, nf90_global,
'git_rev', &
966 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
977 status=nf90_put_att(ncid, nf90_global,
'svn_url', &
979 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
986#if !defined DEBUGGING && defined SVN_REV
988 status=nf90_put_att(ncid, nf90_global,
'svn_rev', &
990 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1004 status=nf90_put_att(ncid, nf90_global,
'code_dir', &
1006 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1016 status=nf90_put_att(ncid, nf90_global,
'header_dir', &
1018 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1019 IF (
master)
WRITE (
stdout,20)
'header_dir', trim(ncname)
1028 status=nf90_put_att(ncid, nf90_global,
'header_file', &
1030 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1031 IF (
master)
WRITE (
stdout,20)
'header_file', trim(ncname)
1043 status=nf90_put_att(ncid, nf90_global,
'os', &
1045 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1053 status=nf90_put_att(ncid, nf90_global,
'cpu', &
1055 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1063 status=nf90_put_att(ncid, nf90_global,
'compiler_system', &
1065 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1074 status=nf90_put_att(ncid, nf90_global,
'compiler_command', &
1076 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1087 status=nf90_put_att(ncid, nf90_global,
'compiler_flags', &
1089 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1090 IF (
master)
WRITE (
stdout,20)
'compiler_flags', trim(ncname)
1099 status=nf90_put_att(ncid, nf90_global,
'tiling', &
1101 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1109 status=nf90_put_att(ncid, nf90_global,
'history', &
1111 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1123 status=nf90_put_att(ncid, nf90_global,
'ana_file', &
1125 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1142 status=nf90_put_att(ncid, nf90_global,
'bio_file', &
1144 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1158 status=nf90_put_att(ncid, nf90_global,
'CPP_options', &
1160 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1161 IF (
master)
WRITE (
stdout,20)
'CPP_options', trim(ncname)
1169#if !defined PARALLEL_IO && defined DISTRIBUTE
1183 IF (ncid.eq.
gst(ng)%ncid)
RETURN
1193 vinfo( 2)=
'number of long time-steps'
1194 status=
def_var(ng, model, ncid, varid, nf90_int, &
1195 & 1, (/0/), aval, vinfo, ncname, &
1196 & setparaccess = .false.)
1200 vinfo( 2)=
'number of short time-steps'
1201 status=
def_var(ng, model, ncid, varid, nf90_int, &
1202 & 1, (/0/), aval, vinfo, ncname, &
1203 & setparaccess = .false.)
1207 vinfo( 2)=
'size of long time-steps'
1210 & 1, (/0/), aval, vinfo, ncname, &
1211 & setparaccess = .false.)
1215 vinfo( 2)=
'size of short time-steps'
1218 & 1, (/0/), aval, vinfo, ncname, &
1219 & setparaccess = .false.)
1223 vinfo( 2)=
'time stamp assigned to model initilization'
1224 WRITE (vinfo( 3),
'(a,a)')
'days since ', trim(
rclock%string)
1225 vinfo( 4)=trim(
rclock%calendar)
1227 & 1, (/0/), aval, vinfo, ncname, &
1228 & setparaccess = .false.)
1231#ifdef RBL4DVAR_FCT_SENSITIVITY
1232 vinfo( 1)=
'ntimes_ana'
1233 vinfo( 2)=
'number of time-steps for observation impacts, '// &
1234 &
'analysis interval'
1235 status=
def_var(ng, model, ncid, varid, nf90_int, &
1236 & 1, (/0/), aval, vinfo, ncname, &
1237 & setparaccess = .false.)
1240 vinfo( 1)=
'ntimes_fct'
1241 vinfo( 2)=
'number of time-steps for observation impacts, '// &
1242 &
'forecast interval'
1243 status=
def_var(ng, model, ncid, varid, nf90_int, &
1244 & 1, (/0/), aval, vinfo, ncname, &
1245 & setparaccess = .false.)
1249#if defined HDF5 && defined DEFLATE
1251 vinfo( 2)=
'NetCDF-4/HDF5 file format shuffle filer flag'
1252 status=
def_var(ng, model, ncid, varid, nf90_int, &
1253 & 1, (/0/), aval, vinfo, ncname, &
1254 & setparaccess = .false.)
1258 vinfo( 2)=
'NetCDF-4/HDF5 file format deflate filer flag'
1259 status=
def_var(ng, model, ncid, varid, nf90_int, &
1260 & 1, (/0/), aval, vinfo, ncname, &
1261 & setparaccess = .false.)
1264 vinfo( 1)=
'deflate_level'
1265 vinfo( 2)=
'NetCDF-4/HDF5 file format deflate level parameter'
1266 status=
def_var(ng, model, ncid, varid, nf90_int, &
1267 & 1, (/0/), aval, vinfo, ncname, &
1268 & setparaccess = .false.)
1273 vinfo( 2)=
'number of time-steps between history records'
1274 status=
def_var(ng, model, ncid, varid, nf90_int, &
1275 & 1, (/0/), aval, vinfo, ncname, &
1276 & setparaccess = .false.)
1281 &
'number of time-steps between the creation of history files'
1282 status=
def_var(ng, model, ncid, varid, nf90_int, &
1283 & 1, (/0/), aval, vinfo, ncname, &
1284 & setparaccess = .false.)
1289 vinfo( 2)=
'number of time-steps between extract history records'
1290 status=
def_var(ng, model, ncid, varid, nf90_int, &
1291 & 1, (/0/), aval, vinfo, ncname, &
1292 & setparaccess = .false.)
1296 vinfo( 2)=
'number of time-steps between the creation of '// &
1297 &
'extract history files'
1298 status=
def_var(ng, model, ncid, varid, nf90_int, &
1299 & 1, (/0/), aval, vinfo, ncname, &
1300 & setparaccess = .false.)
1303 vinfo( 1)=
'ExtractFlag'
1304 vinfo( 2)=
'field extraction flag to interpolate or decimate'
1305 status=
def_var(ng, model, ncid, varid, nf90_int, &
1306 & 1, (/0/), aval, vinfo, ncname, &
1307 & setparaccess = .false.)
1312 vinfo( 2)=
'number of time-steps between restart records'
1314 vinfo(13)=
'only latest two records are maintained'
1316 status=
def_var(ng, model, ncid, varid, nf90_int, &
1317 & 1, (/0/), aval, vinfo, ncname, &
1318 & setparaccess = .false.)
1321#if defined AVERAGES || \
1322 (defined ad_averages && defined adjoint) || \
1323 (defined rp_averages && defined tl_ioms) || \
1324 (defined tl_averages && defined tangent)
1327 &
'starting time-step for accumulation of time-averaged fields'
1328 status=
def_var(ng, model, ncid, varid, nf90_int, &
1329 & 1, (/0/), aval, vinfo, ncname, &
1330 & setparaccess = .false.)
1334 vinfo( 2)=
'number of time-steps between time-averaged records'
1335 status=
def_var(ng, model, ncid, varid, nf90_int, &
1336 & 1, (/0/), aval, vinfo, ncname, &
1337 & setparaccess = .false.)
1342 &
'number of time-steps between the creation of average files'
1343 status=
def_var(ng, model, ncid, varid, nf90_int, &
1344 & 1, (/0/), aval, vinfo, ncname, &
1345 & setparaccess = .false.)
1351 vinfo( 2)=
'number of time-steps between adjoint history records'
1352 status=
def_var(ng, model, ncid, varid, nf90_int, &
1353 & 1, (/0/), aval, vinfo, ncname, &
1354 & setparaccess = .false.)
1359 &
'number of time-steps between the creation of adjoint files'
1360 status=
def_var(ng, model, ncid, varid, nf90_int, &
1361 & 1, (/0/), aval, vinfo, ncname, &
1362 & setparaccess = .false.)
1368 vinfo( 2)=
'number of time-steps between tangent history records'
1369 status=
def_var(ng, model, ncid, varid, nf90_int, &
1370 & 1, (/0/), aval, vinfo, ncname, &
1371 & setparaccess = .false.)
1376 &
'number of time-steps between the creation of tanget files'
1377 status=
def_var(ng, model, ncid, varid, nf90_int, &
1378 & 1, (/0/), aval, vinfo, ncname, &
1379 & setparaccess = .false.)
1383#ifdef ADJUST_BOUNDARY
1386 &
'number of time-steps between 4D-Var open boundary adjustment'
1387 status=
def_var(ng, model, ncid, varid, nf90_int, &
1388 & 1, (/0/), aval, vinfo, ncname, &
1389 & setparaccess = .false.)
1393#if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1396 &
'number of time-steps between 4D-Var surface forcing adjustment'
1397 status=
def_var(ng, model, ncid, varid, nf90_int, &
1398 & 1, (/0/), aval, vinfo, ncname, &
1399 & setparaccess = .false.)
1404 vinfo( 1)=
'LmultiGST'
1405 vinfo( 2)=
'Switch to write one GST eigenvector per file'
1408 status=
def_var(ng, model, ncid, varid, nf90_int, &
1409 & 1, (/0/), aval, vinfo, ncname, &
1410 & setparaccess = .false.)
1414 vinfo( 2)=
'Switch to restart GST analysis'
1417 status=
def_var(ng, model, ncid, varid, nf90_int, &
1418 & 1, (/0/), aval, vinfo, ncname, &
1419 & setparaccess = .false.)
1422 vinfo( 1)=
'MaxIterGST'
1423 vinfo( 2)=
'maximum number of GST algorithm iterations'
1424 status=
def_var(ng, model, ncid, varid, nf90_int, &
1425 & 1, (/0/), aval, vinfo, ncname, &
1426 & setparaccess = .false.)
1430 vinfo( 2)=
'number GST iterations between check pointing'
1431 status=
def_var(ng, model, ncid, varid, nf90_int, &
1432 & 1, (/0/), aval, vinfo, ncname, &
1433 & setparaccess = .false.)
1437 vinfo( 2)=
'number Ritz eigenvalues'
1438 status=
def_var(ng, model, ncid, varid, nf90_int, &
1439 & 1, (/0/), aval, vinfo, ncname, &
1440 & setparaccess = .false.)
1444 vinfo( 2)=
'number Ritz eigenvectors generated'
1445 status=
def_var(ng, model, ncid, varid, nf90_int, &
1446 & 1, (/0/), aval, vinfo, ncname, &
1447 & setparaccess = .false.)
1450 vinfo( 1)=
'Ritz_tol'
1451 vinfo( 2)=
'relative accuracy of Ritz values'
1453 & 1, (/0/), aval, vinfo, ncname, &
1454 & setparaccess = .false.)
1461 &
'starting time-step for accumulation of diagnostic fields'
1462 status=
def_var(ng, model, ncid, varid, nf90_int, &
1463 & 1, (/0/), aval, vinfo, ncname, &
1464 & setparaccess = .false.)
1468 vinfo( 2)=
'number of time-steps between diagnostic records'
1469 status=
def_var(ng, model, ncid, varid, nf90_int, &
1470 & 1, (/0/), aval, vinfo, ncname, &
1471 & setparaccess = .false.)
1476 &
'number of time-steps between the creation of diagnostic files'
1477 status=
def_var(ng, model, ncid, varid, nf90_int, &
1478 & 1, (/0/), aval, vinfo, ncname, &
1479 & setparaccess = .false.)
1485 vinfo( 2)=
'number of time-steps between stations records'
1486 status=
def_var(ng, model, ncid, varid, nf90_int, &
1487 & 1, (/0/), aval, vinfo, ncname, &
1488 & setparaccess = .false.)
1494 vinfo( 2)=
'number of minimization outer loops'
1495 status=
def_var(ng, model, ncid, varid, nf90_int, &
1496 & 1, (/0/), aval, vinfo, ncname, &
1497 & setparaccess = .false.)
1501 vinfo( 2)=
'number of minimization inner loops'
1502 status=
def_var(ng, model, ncid, varid, nf90_int, &
1503 & 1, (/0/), aval, vinfo, ncname, &
1504 & setparaccess = .false.)
1508#if defined POWER_LAW && defined SOLVE3D
1514 vinfo( 2)=
'Power-law shape barotropic filter parameter'
1516 & 1, (/0/), aval, vinfo, ncname, &
1517 & setparaccess = .false.)
1521 vinfo( 2)=
'Power-law shape barotropic filter parameter'
1523 & 1, (/0/), aval, vinfo, ncname, &
1524 & setparaccess = .false.)
1528 vinfo( 2)=
'Power-law shape barotropic filter parameter'
1530 & 1, (/0/), aval, vinfo, ncname, &
1531 & setparaccess = .false.)
1537#if defined SOLVE3D && defined TS_DIF2
1539 vinfo( 2)=
'nonlinear model Laplacian mixing coefficient '// &
1541 vinfo( 3)=
'meter2 second-1'
1543 & 1, (/trcdim/), aval, vinfo, ncname, &
1544 & setparaccess = .false.)
1549 vinfo( 2)=
'adjoint model Laplacian mixing coefficient '// &
1551 vinfo( 3)=
'meter2 second-1'
1553 & 1, (/trcdim/), aval, vinfo, ncname, &
1554 & setparaccess = .false.)
1558# if defined TANGENT || defined TL_IOMS
1560 vinfo( 2)=
'tangent linear model Laplacian mixing coefficient '// &
1562 vinfo( 3)=
'meter2 second-1'
1564 & 1, (/trcdim/), aval, vinfo, ncname, &
1565 & setparaccess = .false.)
1570#if defined SOLVE3D && defined TS_DIF4
1572 vinfo( 2)=
'nonlinear model biharmonic mixing coefficient '// &
1574 vinfo( 3)=
'meter4 second-1'
1576 & 1, (/trcdim/), aval, vinfo, ncname, &
1577 & setparaccess = .false.)
1582 vinfo( 2)=
'adjoint model biharmonic mixing coefficient '// &
1584 vinfo( 3)=
'meter4 second-1'
1586 & 1, (/trcdim/), aval, vinfo, ncname, &
1587 & setparaccess = .false.)
1591# if defined TANGENT || defined TL_IOMS
1593 vinfo( 2)=
'tangent linear model biharmonic mixing coefficient '// &
1595 vinfo( 3)=
'meter4 second-1'
1597 & 1, (/trcdim/), aval, vinfo, ncname, &
1598 & setparaccess = .false.)
1604 vinfo( 1)=
'nl_visc2'
1605 vinfo( 2)=
'nonlinear model Laplacian mixing coefficient '// &
1607 vinfo( 3)=
'meter2 second-1'
1609 & 1, (/0/), aval, vinfo, ncname, &
1610 & setparaccess = .false.)
1614 vinfo( 1)=
'ad_visc2'
1615 vinfo( 2)=
'adjoint model Laplacian mixing coefficient '// &
1617 vinfo( 3)=
'meter2 second-1'
1619 & 1, (/0/), aval, vinfo, ncname, &
1620 & setparaccess = .false.)
1624# if defined TANGENT || defined TL_IOMS
1625 vinfo( 1)=
'tl_visc2'
1626 vinfo( 2)=
'tangent linear model Laplacian mixing coefficient '// &
1628 vinfo( 3)=
'meter2 second-1'
1630 & 1, (/0/), aval, vinfo, ncname, &
1631 & setparaccess = .false.)
1637 vinfo( 1)=
'nl_visc4'
1638 vinfo( 2)=
'nonlinear model biharmonic mixing coefficient '// &
1640 vinfo( 3)=
'meter4 second-1'
1642 & 1, (/0/), aval, vinfo, ncname, &
1643 & setparaccess = .false.)
1647 vinfo( 1)=
'ad_visc4'
1648 vinfo( 2)=
'adjoint model biharmonic mixing coefficient '// &
1650 vinfo( 3)=
'meter4 second-1'
1652 & 1, (/0/), aval, vinfo, ncname, &
1653 & setparaccess = .false.)
1657# if defined TANGENT || defined TL_IOMS
1658 vinfo( 1)=
'tl_visc4'
1659 vinfo( 2)=
'tangent linear model biharmonic mixing coefficient '// &
1661 vinfo( 3)=
'meter4 second-1'
1663 & 1, (/0/), aval, vinfo, ncname, &
1664 & setparaccess = .false.)
1669#if defined SOLVE3D && (defined MY25_MIXING || defined GLS_MIXING)
1672 vinfo( 2)=
'harmonic mixing coefficient for turbulent energy'
1673 vinfo( 3)=
'meter2 second-1'
1675 & 1, (/0/), aval, vinfo, ncname, &
1676 & setparaccess = .false.)
1681 vinfo( 2)=
'biharmonic mixing coefficient for turbulent energy'
1682 vinfo( 3)=
'meter4 second-1'
1684 & 1, (/0/), aval, vinfo, ncname, &
1685 & setparaccess = .false.)
1689#if defined UV_VIS2 || defined UV_VIS4
1690 vinfo( 1)=
'LuvSponge'
1691 vinfo( 2)=
'horizontal viscosity sponge activation switch'
1694 status=
def_var(ng, model, ncid, varid, nf90_int, &
1695 & 1, (/0/), aval, vinfo, ncname, &
1696 & setparaccess = .false.)
1699#if (defined TS_DIF2 || defined TS_DIF4) && defined SOLVE3D
1700 vinfo( 1)=
'LtracerSponge'
1701 vinfo( 2)=
'horizontal diffusivity sponge activation switch'
1704 status=
def_var(ng, model, ncid, varid, nf90_int, &
1705 & 1, (/trcdim/), aval, vinfo, ncname, &
1706 & setparaccess = .false.)
1714 vinfo( 2)=
'background vertical mixing coefficient for tracers'
1715 vinfo( 3)=
'meter2 second-1'
1717 & 1, (/trcdim/), aval, vinfo, ncname, &
1718 & setparaccess = .false.)
1722 vinfo( 2)=
'background vertical mixing coefficient for momentum'
1723 vinfo( 3)=
'meter2 second-1'
1725 & 1, (/0/), aval, vinfo, ncname, &
1726 & setparaccess = .false.)
1729# if defined MY25_MIXING || defined GLS_MIXING
1732 &
'background vertical mixing coefficient for turbulent energy'
1733 vinfo( 3)=
'meter2 second-1'
1735 & 1, (/0/), aval, vinfo, ncname, &
1736 & setparaccess = .false.)
1741 &
'background vertical mixing coefficient for length scale'
1742 vinfo( 3)=
'meter2 second-1'
1744 & 1, (/0/), aval, vinfo, ncname, &
1745 & setparaccess = .false.)
1749# ifdef FORWARD_MIXING
1754 vinfo( 1)=
'ad_Akt_fac'
1755 vinfo( 2)=
'adjoint model basic state vertical mixing '// &
1756 &
'scale for tracers'
1758 & 1, (/trcdim/), aval, vinfo, ncname, &
1759 & setparaccess = .false.)
1763# if defined TANGENT || defined TL_IOMS
1764 vinfo( 1)=
'tl_Akt_fac'
1765 vinfo( 2)=
'tangent linear model basic state vertical mixing '// &
1766 &
'scale for tracers'
1768 & 1, (/trcdim/), aval, vinfo, ncname, &
1769 & setparaccess = .false.)
1774 vinfo( 1)=
'ad_Akv_fac'
1775 vinfo( 2)=
'adjoint model basic state vertical mixing '// &
1776 &
'scale for momentum'
1778 & 1, (/0/), aval, vinfo, ncname, &
1779 & setparaccess = .false.)
1783# if defined TANGENT || defined TL_IOMS
1784 vinfo( 1)=
'tl_Akv_fac'
1785 vinfo( 2)=
'tangent linear model basic state vertical mixing '// &
1786 &
'scale for momentum'
1788 & 1, (/0/), aval, vinfo, ncname, &
1789 & setparaccess = .false.)
1798 vinfo( 2)=
'linear drag coefficient'
1799 vinfo( 3)=
'meter second-1'
1801 & 1, (/0/), aval, vinfo, ncname, &
1802 & setparaccess = .false.)
1806 vinfo( 2)=
'quadratic drag coefficient'
1808 & 1, (/0/), aval, vinfo ,ncname, &
1809 & setparaccess = .false.)
1814 vinfo( 2)=
'bottom roughness'
1817 & 1, (/0/), aval, vinfo, ncname, &
1818 & setparaccess = .false.)
1822 vinfo( 2)=
'surface roughness'
1825 & 1, (/0/), aval, vinfo, ncname, &
1826 & setparaccess = .false.)
1829#if defined SOLVE3D && defined GLS_MIXING
1834 vinfo( 2)=
'stability exponent'
1836 & 1, (/0/), aval, vinfo, ncname, &
1837 & setparaccess = .false.)
1841 vinfo( 2)=
'turbulent kinetic energy exponent'
1843 & 1, (/0/), aval, vinfo, ncname, &
1844 & setparaccess = .false.)
1848 vinfo( 2)=
'turbulent length scale exponent'
1850 & 1, (/0/), aval, vinfo, ncname, &
1851 & setparaccess = .false.)
1854 vinfo( 1)=
'gls_cmu0'
1855 vinfo( 2)=
'stability coefficient'
1857 & 1, (/0/), aval, vinfo, ncname, &
1858 & setparaccess = .false.)
1862 vinfo( 2)=
'shear production coefficient'
1864 & 1, (/0/), aval, vinfo, ncname, &
1865 & setparaccess = .false.)
1869 vinfo( 2)=
'dissipation coefficient'
1871 & 1, (/0/), aval, vinfo, ncname, &
1872 & setparaccess = .false.)
1876 vinfo( 2)=
'buoyancy production coefficient (minus)'
1878 & 1, (/0/), aval, vinfo, ncname, &
1879 & setparaccess = .false.)
1883 vinfo( 2)=
'buoyancy production coefficient (plus)'
1885 & 1, (/0/), aval, vinfo, ncname, &
1886 & setparaccess = .false.)
1889 vinfo( 1)=
'gls_sigk'
1890 vinfo( 2)=
'constant Schmidt number for TKE'
1892 & 1, (/0/), aval, vinfo, ncname, &
1893 & setparaccess = .false.)
1896 vinfo( 1)=
'gls_sigp'
1897 vinfo( 2)=
'constant Schmidt number for PSI'
1899 & 1, (/0/), aval, vinfo, ncname, &
1900 & setparaccess = .false.)
1903 vinfo( 1)=
'gls_Kmin'
1904 vinfo( 2)=
'minimum value of specific turbulent kinetic energy'
1906 & 1, (/0/), aval, vinfo, ncname, &
1907 & setparaccess = .false.)
1910 vinfo( 1)=
'gls_Pmin'
1911 vinfo( 2)=
'minimum Value of dissipation'
1913 & 1, (/0/), aval, vinfo, ncname, &
1914 & setparaccess = .false.)
1917 vinfo( 1)=
'Charnok_alpha'
1918 vinfo( 2)=
'Charnock factor for surface roughness'
1920 & 1, (/0/), aval, vinfo, ncname, &
1921 & setparaccess = .false.)
1924 vinfo( 1)=
'Zos_hsig_alpha'
1925 vinfo( 2)=
'wave amplitude factor for surface roughness'
1927 & 1, (/0/), aval, vinfo, ncname, &
1928 & setparaccess = .false.)
1931 vinfo( 1)=
'sz_alpha'
1932 vinfo( 2)=
'surface flux from wave dissipation'
1934 & 1, (/0/), aval, vinfo, ncname, &
1935 & setparaccess = .false.)
1938 vinfo( 1)=
'CrgBan_cw'
1939 vinfo( 2)=
'surface flux due to Craig and Banner wave breaking'
1941 & 1, (/0/), aval, vinfo, ncname, &
1942 & setparaccess = .false.)
1946 vinfo( 1)=
'wec_alpha'
1947 vinfo( 2)=
'WEC wave dissipation action scale'
1948 vinfo( 9)=
'all goes to breaking and none to roller'
1949 vinfo(10)=
'all goes to roller and none to breaking'
1951 & 1, (/0/), aval, vinfo, ncname, &
1952 & setparaccess = .false.)
1959 vinfo( 2)=
'free-surface nudging/relaxation inverse time scale'
1962 & 1, (/0/), aval, vinfo, ncname, &
1963 & setparaccess = .false.)
1967 vinfo( 2)=
'2D momentum nudging/relaxation inverse time scale'
1970 & 1, (/0/), aval, vinfo, ncname, &
1971 & setparaccess = .false.)
1976 vinfo( 2)=
'3D momentum nudging/relaxation inverse time scale'
1979 & 1, (/0/), aval, vinfo, ncname, &
1980 & setparaccess = .false.)
1984 vinfo( 2)=
'Tracers nudging/relaxation inverse time scale'
1987 & 1, (/trcdim/), aval, vinfo, ncname, &
1988 & setparaccess = .false.)
1997 vinfo( 1)=
'FSobc_in'
1998 vinfo( 2)=
'free-surface inflow, nudging inverse time scale'
1999 vinfo( 3)=
'second-1'
2001 & 1, (/brydim/), aval, vinfo, ncname, &
2002 & setparaccess = .false.)
2005 vinfo( 1)=
'FSobc_out'
2006 vinfo( 2)=
'free-surface outflow, nudging inverse time scale'
2007 vinfo( 3)=
'second-1'
2009 & 1, (/brydim/), aval, vinfo, ncname, &
2010 & setparaccess = .false.)
2013 vinfo( 1)=
'M2obc_in'
2014 vinfo( 2)=
'2D momentum inflow, nudging inverse time scale'
2015 vinfo( 3)=
'second-1'
2017 & 1, (/brydim/), aval, vinfo, ncname, &
2018 & setparaccess = .false.)
2021 vinfo( 1)=
'M2obc_out'
2022 vinfo( 2)=
'2D momentum outflow, nudging inverse time scale'
2023 vinfo( 3)=
'second-1'
2025 & 1, (/brydim/), aval, vinfo, ncname, &
2026 & setparaccess = .false.)
2031 vinfo( 2)=
'tracers inflow, nudging inverse time scale'
2032 vinfo( 3)=
'second-1'
2034 & 2, tbrydim, aval, vinfo, ncname, &
2035 & setparaccess = .false.)
2038 vinfo( 1)=
'Tobc_out'
2039 vinfo( 2)=
'tracers outflow, nudging inverse time scale'
2040 vinfo( 3)=
'second-1'
2042 & 2, tbrydim, aval, vinfo, ncname, &
2043 & setparaccess = .false.)
2046 vinfo( 1)=
'M3obc_in'
2047 vinfo( 2)=
'3D momentum inflow, nudging inverse time scale'
2048 vinfo( 3)=
'second-1'
2050 & 1, (/brydim/), aval, vinfo, ncname, &
2051 & setparaccess = .false.)
2054 vinfo( 1)=
'M3obc_out'
2055 vinfo( 2)=
'3D momentum outflow, nudging inverse time scale'
2056 vinfo( 3)=
'second-1'
2058 & 1, (/brydim/), aval, vinfo, ncname, &
2059 & setparaccess = .false.)
2068 vinfo( 2)=
'mean density used in Boussinesq approximation'
2069 vinfo( 3)=
'kilogram meter-3'
2071 & 1, (/0/), aval, vinfo, ncname, &
2072 & setparaccess = .false.)
2075#if defined SOLVE3D && defined PROPAGATOR
2077 vinfo( 2)=
'background Brunt-Vaisala frequency'
2078 vinfo( 3)=
'second-2'
2080 & 1, (/0/), aval, vinfo, ncname, &
2081 & setparaccess = .false.)
2085#if defined SOLVE3D && \
2088 vinfo( 2)=
'background density used in linear equation of state'
2089 vinfo( 3)=
'kilogram meter-3'
2091 & 1, (/0/), aval, vinfo, ncname, &
2092 & setparaccess = .false.)
2096 vinfo( 2)=
'thermal expansion coefficient'
2097 vinfo( 3)=
'Celsius-1'
2099 & 1, (/0/), aval, vinfo, ncname, &
2100 & setparaccess = .false.)
2104 vinfo( 2)=
'Saline contraction coefficient'
2106 & 1, (/0/), aval, vinfo, ncname, &
2107 & setparaccess = .false.)
2116 vinfo( 2)=
'shallowest level for body-force stress'
2117 status=
def_var(ng, model, ncid, varid, nf90_int, &
2118 & 1, (/0/), aval, vinfo, ncname, &
2119 & setparaccess = .false.)
2123 vinfo( 2)=
'deepest level for body-force stress'
2124 status=
def_var(ng, model, ncid, varid, nf90_int, &
2125 & 1, (/0/), aval, vinfo, ncname, &
2126 & setparaccess = .false.)
2134 vinfo( 2)=
'slipperiness parameter'
2136 & 1, (/0/), aval, vinfo, ncname, &
2137 & setparaccess = .false.)
2145 vinfo( 2)=
'momentum point sources and sink activation switch'
2148 status=
def_var(ng, model, ncid, varid, nf90_int, &
2149 & 1, (/0/), aval, vinfo, ncname, &
2150 & setparaccess = .false.)
2154 vinfo( 2)=
'mass point sources and sink activation switch'
2157 status=
def_var(ng, model, ncid, varid, nf90_int, &
2158 & 1, (/0/), aval, vinfo, ncname, &
2159 & setparaccess = .false.)
2167 vinfo( 1)=
'LtracerSrc'
2168 vinfo( 2)=
'tracer point sources and sink activation switch'
2171 status=
def_var(ng, model, ncid, varid, nf90_int, &
2172 & 1, (/trcdim/), aval, vinfo, ncname, &
2173 & setparaccess = .false.)
2180 vinfo( 2)=
'sea surface height climatology processing switch'
2183 status=
def_var(ng, model, ncid, varid, nf90_int, &
2184 & 1, (/0/), aval, vinfo, ncname, &
2185 & setparaccess = .false.)
2189 vinfo( 2)=
'2D momentum climatology processing switch'
2192 status=
def_var(ng, model, ncid, varid, nf90_int, &
2193 & 1, (/0/), aval, vinfo, ncname, &
2194 & setparaccess = .false.)
2199 vinfo( 2)=
'3D momentum climatology processing switch'
2202 status=
def_var(ng, model, ncid, varid, nf90_int, &
2203 & 1, (/0/), aval, vinfo, ncname, &
2204 & setparaccess = .false.)
2207 vinfo( 1)=
'LtracerCLM'
2208 vinfo( 2)=
'tracer climatology processing switch'
2211 status=
def_var(ng, model, ncid, varid, nf90_int, &
2212 & 1, (/trcdim/), aval, vinfo, ncname, &
2213 & setparaccess = .false.)
2219 vinfo( 1)=
'LnudgeM2CLM'
2220 vinfo( 2)=
'2D momentum climatology nudging activation switch'
2223 status=
def_var(ng, model, ncid, varid, nf90_int, &
2224 & 1, (/0/), aval, vinfo, ncname, &
2225 & setparaccess = .false.)
2229 vinfo( 1)=
'LnudgeM3CLM'
2230 vinfo( 2)=
'3D momentum climatology nudging activation switch'
2233 status=
def_var(ng, model, ncid, varid, nf90_int, &
2234 & 1, (/0/), aval, vinfo, ncname, &
2235 & setparaccess = .false.)
2238 vinfo( 1)=
'LnudgeTCLM'
2239 vinfo( 2)=
'tracer climatology nudging activation switch'
2242 status=
def_var(ng, model, ncid, varid, nf90_int, &
2243 & 1, (/trcdim/), aval, vinfo, ncname, &
2244 & setparaccess = .false.)
2251# ifdef ADJUST_STFLUX
2253 vinfo( 2)=
'surface tracer fluxes adjustment switch'
2256 status=
def_var(ng, model, ncid, varid, nf90_int, &
2257 & 1, (/trcdim/), aval, vinfo, ncname, &
2258 & setparaccess = .false.)
2261# ifdef ADJUST_BOUNDARY
2263 vinfo( 2)=
'open boundary conditions adjustment switch'
2266 status=
def_var(ng, model, ncid, varid, nf90_int, &
2267 & 2, (/brydim, statedim/), aval, vinfo, ncname, &
2268 & setparaccess = .false.)
2271# ifndef I4DVAR_ANA_SENSITIVITY
2272 vinfo( 1)=
'LhessianEV'
2273 vinfo( 2)=
'switch to compute Hessian eigenvectors'
2276 status=
def_var(ng, model, ncid, varid, nf90_int, &
2277 & 1, (/0/), aval, vinfo, ncname, &
2278 & setparaccess = .false.)
2281# ifdef WEAK_CONSTRAINT
2282 vinfo( 1)=
'LhotStart'
2283 vinfo( 2)=
'switch for hot start of subsequent outer loops'
2286 status=
def_var(ng, model, ncid, varid, nf90_int, &
2287 & 1, (/0/), aval, vinfo, ncname, &
2288 & setparaccess = .false.)
2292 vinfo( 1)=
'Lprecond'
2293 vinfo( 2)=
'switch for conjugate gradient preconditioning'
2296 status=
def_var(ng, model, ncid, varid, nf90_int, &
2297 & 1, (/0/), aval, vinfo, ncname, &
2298 & setparaccess = .false.)
2302 vinfo( 2)=
'switch for Ritz limited-memory preconditioning'
2305 status=
def_var(ng, model, ncid, varid, nf90_int, &
2306 & 1, (/0/), aval, vinfo, ncname, &
2307 & setparaccess = .false.)
2310# ifdef WEAK_CONSTRAINT
2313 vinfo( 2)=
'number of preconditioning eigenpairs to use'
2314 status=
def_var(ng, model, ncid, varid, nf90_int, &
2315 & 1, (/0/), aval, vinfo, ncname, &
2316 & setparaccess = .false.)
2321# if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
2323 vinfo( 2)=
'number of Lanczos iterations in posterior analysis'
2324 status=
def_var(ng, model, ncid, varid, nf90_int, &
2325 & 1, (/0/), aval, vinfo, ncname, &
2326 & setparaccess = .false.)
2329# if defined ARRAY_MODES || \
2330 defined i4dvar_ana_sensitivity || \
2331 defined rbl4dvar_ana_sensitivity || \
2332 defined rbl4dvar_fct_sensitivity || \
2333 defined r4dvar_ana_sensitivity
2335 vinfo( 2)=
'Observations impact/sensitivity outer loop to use'
2336 status=
def_var(ng, model, ncid, varid, nf90_int, &
2337 & 1, (/0/), aval, vinfo, ncname, &
2338 & setparaccess = .false.)
2341# ifndef I4DVAR_ANA_SENSITIVITY
2343 vinfo( 2)=
'Upper bound on relative error of the gradient'
2345 & 1, (/0/), aval, vinfo, ncname, &
2346 & setparaccess = .false.)
2349 vinfo( 1)=
'HevecErr'
2350 vinfo( 2)=
'Accuracy required for Hessian eigenvectors'
2352 & 1, (/0/), aval, vinfo, ncname, &
2353 & setparaccess = .false.)
2358 vinfo( 2)=
'background error covariance normalization method'
2360 vinfo(10)=
'randomization'
2361 status=
def_var(ng, model, ncid, varid, nf90_int, &
2362 & 1, (/0/), aval, vinfo, ncname, &
2363 & setparaccess = .false.)
2367 vinfo( 2)=
'Random number generation scheme'
2368 vinfo( 9)=
'intrisic_randon_number'
2369 vinfo(10)=
'Gaussian_distributed_deviates'
2370 status=
def_var(ng, model, ncid, varid, nf90_int, &
2371 & 1, (/0/), aval, vinfo, ncname, &
2372 & setparaccess = .false.)
2376 vinfo( 2)=
'number of randomization iterations'
2377 status=
def_var(ng, model, ncid, varid, nf90_int, &
2378 & 1, (/0/), aval, vinfo, ncname, &
2379 & setparaccess = .false.)
2383 vinfo( 2)=
'initial conditions error covariance '// &
2384 &
'horizontal convolution time-step stability factor'
2386 & 1, (/0/), aval, vinfo, ncname, &
2387 & setparaccess = .false.)
2390# ifdef WEAK_CONSTRAINT
2392 vinfo( 2)=
'model error covariance '// &
2393 &
'horizontal convolution time-step stability factor'
2395 & 1, (/0/), aval, vinfo, ncname, &
2396 & setparaccess = .false.)
2400# ifdef ADJUST_BOUNDARY
2402 vinfo( 2)=
'open boundary conditions error covariance '// &
2403 &
'horizontal convolution time-step stability factor'
2405 & 1, (/0/), aval, vinfo, ncname, &
2406 & setparaccess = .false.)
2410# ifdef ADJUST_STFLUX
2412 vinfo( 2)=
'surface forcing error covariance '// &
2413 &
'horizontal convolution time-step stability factor'
2415 & 1, (/0/), aval, vinfo, ncname, &
2416 & setparaccess = .false.)
2422 vinfo( 2)=
'initial conditions error covariance '// &
2423 &
'vertical convolution time-step stability factor'
2425 & 1, (/0/), aval, vinfo, ncname, &
2426 & setparaccess = .false.)
2429# ifdef WEAK_CONSTRAINT
2431 vinfo( 2)=
'model error covariance '// &
2432 &
'vertical convolution time-step stability factor'
2434 & 1, (/0/), aval, vinfo, ncname, &
2435 & setparaccess = .false.)
2439# ifdef ADJUST_BOUNDARY
2441 vinfo( 2)=
'open boundary conditions error covariance '// &
2442 &
'vertical convolution time-step stability factor'
2444 & 1, (/0/), aval, vinfo, ncname, &
2445 & setparaccess = .false.)
2451 vinfo( 2)=
'initial conditions error covariance '// &
2452 &
'horizontal decorrelation scale'
2455 & 1, (/statedim/), aval, vinfo, ncname, &
2456 & setparaccess = .false.)
2461 vinfo( 2)=
'initial conditions error covariance '// &
2462 &
'vertical decorrelation scale'
2465 & 1, (/statedim/), aval, vinfo, ncname, &
2466 & setparaccess = .false.)
2472 vinfo( 2)=
'model error covariance ' // &
2473 &
'horizontal decorrelation scale'
2476 & 1, (/statedim/), aval, vinfo, ncname, &
2477 & setparaccess = .false.)
2482 vinfo( 2)=
'model error covariance '// &
2483 &
'vertical decorrelation scale'
2486 & 1, (/statedim/), aval, vinfo, ncname, &
2487 & setparaccess = .false.)
2492# ifdef ADJUST_BOUNDARY
2494 vinfo( 2)=
'open boundary conditions error covariance '// &
2495 &
'horizontal decorrelation scale'
2498 & 2, (/statedim, brydim/), aval, vinfo, ncname, &
2499 & setparaccess = .false.)
2504 vinfo( 2)=
'open boundary conditions error covariance '// &
2505 &
'vertical decorrelation scale'
2508 & 2, (/statedim, brydim/), aval, vinfo, ncname, &
2509 & setparaccess = .false.)
2514# ifdef RPM_RELAXATION
2515 vinfo( 1)=
'tl_M2diff'
2516 vinfo( 2)=
'RPM 2D momentum diffusive relaxation coefficient'
2517 vinfo( 3)=
'meter2 second-1'
2519 & 1, (/0/), aval, vinfo, ncname, &
2520 & setparaccess = .false.)
2524 vinfo( 1)=
'tl_M3diff'
2525 vinfo( 2)=
'RPM 3D momentum diffusive relaxation coefficient'
2526 vinfo( 3)=
'meter2 second-1'
2528 & 1, (/0/), aval, vinfo, ncname, &
2529 & setparaccess = .false.)
2532 vinfo( 1)=
'tl_Tdiff'
2533 vinfo( 2)=
'RPM tracers diffusive relaxation coefficients'
2534 vinfo( 3)=
'meter2 second-1'
2536 & 1, (/trcdim/), aval, vinfo, ncname, &
2537 & setparaccess = .false.)
2542# ifdef BALANCE_OPERATOR
2543# ifdef ZETA_ELLIPTIC
2545 vinfo( 2)=
'number of iterations in SSH elliptic equation'
2546 status=
def_var(ng, model, ncid, varid, nf90_int, &
2547 & 1, (/0/), aval, vinfo, ncname, &
2548 & setparaccess = .false.)
2552 vinfo( 1)=
'Lbalance'
2553 vinfo( 2)=
'switches for state variables included as '// &
2554 'constraint in the error covariance balance operator'
2557 status=
def_var(ng, model, ncid, varid, nf90_int, &
2558 & 1, (/statedim/), aval, vinfo, ncname, &
2559 & setparaccess = .false.)
2562 vinfo( 1)=
'LNM_flag'
2563 vinfo( 2)=
'balance operator level of no motion flag'
2564 vinfo( 9)=
'integrate from bottom to surface,'
2565 vinfo(10)=
'integrate from LNM_depth to surface'
2566 status=
def_var(ng, model, ncid, varid, nf90_int, &
2567 & 1, (/0/), aval, vinfo, ncname, &
2568 & setparaccess = .false.)
2571 vinfo( 1)=
'LNM_depth'
2572 vinfo( 2)=
'balance operator level of no motion depth'
2575 & 1, (/0/), aval, vinfo, ncname, &
2576 & setparaccess = .false.)
2579 vinfo( 1)=
'dTdz_min'
2580 vinfo( 2)=
'minimum dT/dz value used in balaced salinity'
2581 vinfo( 3)=
'Celsius meter-1'
2583 & 1, (/0/), aval, vinfo, ncname, &
2584 & setparaccess = .false.)
2587 vinfo( 1)=
'ml_depth'
2588 vinfo( 2)=
'mixed layer depth used in balanced salinity'
2591 & 1, (/0/), aval, vinfo, ncname, &
2592 & setparaccess = .false.)
2600 vinfo( 1)=
'Sigma_max'
2601 vinfo( 2)=
'background standard deviation, '// &
2603 vinfo( 3)=
'state variable units'
2605 & 1, (/statedim/), aval, vinfo, ncname, &
2606 & setparaccess = .false.)
2609 vinfo( 1)=
'Sigma_ml'
2610 vinfo( 2)=
'background standard deviation, '// &
2611 &
'maximum value at mixed layer'
2612 vinfo( 3)=
'state variable units'
2614 & 1, (/statedim/), aval, vinfo, ncname, &
2615 & setparaccess = .false.)
2618 vinfo( 1)=
'Sigma_do'
2619 vinfo( 2)=
'background standard deviation, '// &
2620 &
'maximum value in deep ocean'
2621 vinfo( 3)=
'state variable units'
2623 & 1, (/statedim/), aval, vinfo, ncname, &
2624 & setparaccess = .false.)
2627 vinfo( 1)=
'Sigma_dz'
2628 vinfo( 2)=
'background standard deviation, '// &
2629 &
'profile vertical displacement'
2632 & 1, (/statedim/), aval, vinfo, ncname, &
2633 & setparaccess = .false.)
2637 vinfo( 1)=
'mld_uniform'
2638 vinfo( 2)=
'constast mixed-layer depth value'
2641 & 1, (/0/), aval, vinfo, ncname, &
2642 & setparaccess = .false.)
2648#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
2649 defined opt_observations || defined sensitivity_4dvar || \
2655 vinfo( 2)=
'adjoint sensitivity on free-surface'
2658 status=
def_var(ng, model, ncid, varid, nf90_int, &
2659 & 1, (/0/), aval, vinfo, ncname, &
2660 & setparaccess = .false.)
2664 vinfo( 2)=
'adjoint sensitivity on 2D U-momentum'
2667 status=
def_var(ng, model, ncid, varid, nf90_int, &
2668 & 1, (/0/), aval, vinfo, ncname, &
2669 & setparaccess = .false.)
2673 vinfo( 2)=
'adjoint sensitivity on 2D V-momentum'
2676 status=
def_var(ng, model, ncid, varid, nf90_int, &
2677 & 1, (/0/), aval, vinfo, ncname, &
2678 & setparaccess = .false.)
2683 vinfo( 2)=
'adjoint sensitivity on 3D U-momentum'
2686 status=
def_var(ng, model, ncid, varid, nf90_int, &
2687 & 1, (/0/), aval, vinfo, ncname, &
2688 & setparaccess = .false.)
2692 vinfo( 2)=
'adjoint sensitivity on 3D V-momentum'
2695 status=
def_var(ng, model, ncid, varid, nf90_int, &
2696 & 1, (/0/), aval, vinfo, ncname, &
2697 & setparaccess = .false.)
2701 vinfo( 2)=
'adjoint sensitivity on tracer variables'
2704 status=
def_var(ng, model, ncid, varid, nf90_int, &
2705 & 1, (/trcdim/), aval, vinfo, ncname, &
2706 & setparaccess = .false.)
2710 vinfo( 2)=
'deepest level for adjoint sensitivity analysis'
2711 status=
def_var(ng, model, ncid, varid, nf90_int, &
2712 & 1, (/0/), aval, vinfo, ncname, &
2713 & setparaccess = .false.)
2717 vinfo( 2)=
'shallowest level for adjoint sensitivity analysis'
2718 status=
def_var(ng, model, ncid, varid, nf90_int, &
2719 & 1, (/0/), aval, vinfo, ncname, &
2720 & setparaccess = .false.)
2725#if defined FORCING_SV || defined SO_SEMI || defined STOCHASTIC_OPT
2731 vinfo( 2)=
'forcing singular vectors for free-surface'
2733 vinfo( 2)=
'stochastic optimals for free-surface'
2737 status=
def_var(ng, model, ncid, varid, nf90_int, &
2738 & 1, (/0/), aval, vinfo, ncname, &
2739 & setparaccess = .false.)
2745 vinfo( 2)=
'forcing singular vectors for 2D U-momentum'
2747 vinfo( 2)=
'stochastic optimals for 2D U-momentum'
2751 status=
def_var(ng, model, ncid, varid, nf90_int, &
2752 & 1, (/0/), aval, vinfo, ncname, &
2753 & setparaccess = .false.)
2758 vinfo( 2)=
'forcing singular vectors for 2D V-momentum'
2760 vinfo( 2)=
'stochastic optimals for 2D V-momentum'
2764 status=
def_var(ng, model, ncid, varid, nf90_int, &
2765 & 1, (/0/), aval, vinfo, ncname, &
2766 & setparaccess = .false.)
2773 vinfo( 2)=
'forcing singular vectors for 3D U-momentum'
2775 vinfo( 2)=
'stochastic optimals for 3D U-momentum'
2779 status=
def_var(ng, model, ncid, varid, nf90_int, &
2780 & 1, (/0/), aval, vinfo, ncname, &
2781 & setparaccess = .false.)
2786 vinfo( 2)=
'forcing singular vectors for 3D V-momentum'
2788 vinfo( 2)=
'stochastic optimals for 3D V-momentum'
2792 status=
def_var(ng, model, ncid, varid, nf90_int, &
2793 & 1, (/0/), aval, vinfo, ncname, &
2794 & setparaccess = .false.)
2799 vinfo( 2)=
'forcing singular vectors for tracer variables'
2801 vinfo( 2)=
'stochastic optimals for tracer variables'
2805 status=
def_var(ng, model, ncid, varid, nf90_int, &
2806 & 1, (/trcdim/), aval, vinfo, ncname, &
2807 & setparaccess = .false.)
2813 vinfo( 2)=
'forcing singular vectors for surface U-stress'
2815 vinfo( 2)=
'stochastic optimals for surface U-stress'
2819 status=
def_var(ng, model, ncid, varid, nf90_int, &
2820 & 1, (/0/), aval, vinfo, ncname, &
2821 & setparaccess = .false.)
2826 vinfo( 2)=
'forcing singular vectors for surface V-stress'
2828 vinfo( 2)=
'stochastic optimals for surface V-stress'
2832 status=
def_var(ng, model, ncid, varid, nf90_int, &
2833 & 1, (/0/), aval, vinfo, ncname, &
2834 & setparaccess = .false.)
2840 vinfo( 2)=
'forcing singular vectors for surface tracer flux'
2842 vinfo( 2)=
'stochastic optimals for surface tracer flux'
2846 status=
def_var(ng, model, ncid, varid, nf90_int, &
2847 & 1, (/trcdim/), aval, vinfo, ncname, &
2848 & setparaccess = .false.)
2857# ifndef SO_SEMI_WHITE
2858 vinfo( 1)=
'SO_decay'
2859 vinfo( 2)=
'red noise stochastic optimals time decorrelation'
2862 & 1, (/0/), aval, vinfo, ncname, &
2863 & setparaccess = .false.)
2867 vinfo( 1)=
'SO_trace'
2868 vinfo( 2)=
'trace of stochastic optimals matrix'
2870 & 1, (/0/), aval, vinfo, ncname, &
2871 & setparaccess = .false.)
2874 vinfo( 1)=
'SOsdev_zeta'
2875 vinfo( 2)=
'stochastic optimals scale, free-surface'
2877 & 1, (/0/), aval, vinfo, ncname, &
2878 & setparaccess = .false.)
2882 vinfo( 1)=
'SOsdev_ubar'
2883 vinfo( 2)=
'stochastic optimals scale, 2D U-momentum'
2885 & 1, (/0/), aval, vinfo, ncname, &
2886 & setparaccess = .false.)
2889 vinfo( 1)=
'SOsdev_vbar'
2890 vinfo( 2)=
'stochastic optimals scale, 2D V-momentum'
2892 & 1, (/0/), aval, vinfo, ncname, &
2893 & setparaccess = .false.)
2898 vinfo( 1)=
'SOsdev_uvel'
2899 vinfo( 2)=
'stochastic optimals scale, 3D U-momentum'
2901 & 1, (/0/), aval, vinfo, ncname, &
2902 & setparaccess = .false.)
2905 vinfo( 1)=
'SOsdev_vvel'
2906 vinfo( 2)=
'stochastic optimals scale, 3D V-momentum'
2908 & 1, (/0/), aval, vinfo, ncname, &
2909 & setparaccess = .false.)
2912 vinfo( 1)=
'SOsdev_tracer'
2913 vinfo( 2)=
'stochastic optimals scale, tracer variables'
2915 & 1, (/trcdim/), aval, vinfo, ncname, &
2916 & setparaccess = .false.)
2920 vinfo( 1)=
'SOsdev_sustr'
2921 vinfo( 2)=
'stochastic optimals scale, surface U-stress'
2923 & 1, (/0/), aval, vinfo, ncname, &
2924 & setparaccess = .false.)
2927 vinfo( 1)=
'SOsdev_svstr'
2928 vinfo( 2)=
'stochastic optimals scale, surface V-stress'
2930 & 1, (/0/), aval, vinfo, ncname, &
2931 & setparaccess = .false.)
2935 vinfo( 1)=
'SOsdev_stflx'
2936 vinfo( 2)=
'stochastic optimals scale, surface tracer flux'
2938 & 1, (/trcdim/), aval, vinfo, ncname, &
2939 & setparaccess = .false.)
2944#if defined BIOLOGY && defined SOLVE3D
2945# if defined BIO_FENNEL
2946# include <fennel_def.h>
2947# elif defined ECOSIM
2948# include <ecosim_def.h>
2949# elif defined HYPOXIA_SRM
2950# include <hypoxia_srm_def.h>
2951# elif defined NEMURO
2952# include <nemuro_def.h>
2953# elif defined NPZD_FRANKS
2954# include <npzd_Franks_def.h>
2955# elif defined NPZD_IRON
2956# include <npzd_iron_def.h>
2957# elif defined NPZD_POWELL
2958# include <npzd_Powell_def.h>
2959# elif defined RED_TIDE
2960# include <red_tide_def.h>
2964#if defined FLOATS && defined FLOAT_BIOLOGY
2965# if defined FLOAT_OYSTER
2966# include <oyster_floats_def.h>
2971# include <sediment_def.h>
2982 vinfo( 1)=
'spherical'
2983 vinfo( 2)=
'grid type logical switch'
2984 vinfo( 9)=
'Cartesian'
2985 vinfo(10)=
'spherical'
2986 status=
def_var(ng, model, ncid, varid, nf90_int, &
2987 & 1, (/0/), aval, vinfo, ncname, &
2988 & setparaccess = .false.)
2994 vinfo( 2)=
'domain length in the XI-direction'
2997 & 1, (/0/), aval, vinfo, ncname, &
2998 & setparaccess = .false.)
3002 vinfo( 2)=
'domain length in the ETA-direction'
3005 & 1, (/0/), aval, vinfo, ncname, &
3006 & setparaccess = .false.)
3012 vinfo( 1)=
'Vtransform'
3013 vinfo( 2)=
'vertical terrain-following transformation equation'
3014 status=
def_var(ng, model, ncid, varid, nf90_int, &
3015 & 1, (/0/), aval, vinfo, ncname, &
3016 & setparaccess = .false.)
3019 vinfo( 1)=
'Vstretching'
3020 vinfo( 2)=
'vertical terrain-following stretching function'
3021 status=
def_var(ng, model, ncid, varid, nf90_int, &
3022 & 1, (/0/), aval, vinfo, ncname, &
3023 & setparaccess = .false.)
3027 vinfo( 2)=
'S-coordinate surface control parameter'
3029 & 1, (/0/), aval, vinfo, ncname, &
3030 & setparaccess = .false.)
3034 vinfo( 2)=
'S-coordinate bottom control parameter'
3036 & 1, (/0/), aval, vinfo, ncname, &
3037 & setparaccess = .false.)
3041 vinfo( 2)=
'S-coordinate surface/bottom layer width'
3044 & 1, (/0/), aval, vinfo, ncname, &
3045 & setparaccess = .false.)
3049 vinfo( 2)=
'S-coordinate parameter, critical depth'
3052 & 1, (/0/), aval, vinfo, ncname, &
3053 & setparaccess = .false.)
3059 status=
def_var(ng, model, ncid, varid, nf90_int, &
3060 & 1, (/0/), aval, vinfo, ncname, &
3061 & setparaccess = .false.)
3067 vinfo( 2)=
'S-coordinate at RHO-points'
3068 vinfo( 5)=
'valid_min'
3069 vinfo( 6)=
'valid_max'
3071 vinfo(21)=
'ocean_s_coordinate_g1'
3073 vinfo(21)=
'ocean_s_coordinate_g2'
3075# if defined SEDIMENT && defined SED_MORPH
3076 vinfo(23)=
's: s_rho C: Cs_r eta: zeta depth: bath depth_c: hc'
3078 vinfo(23)=
's: s_rho C: Cs_r eta: zeta depth: h depth_c: hc'
3084 & 1, (/srdim/), aval, vinfo, ncname, &
3085 & setparaccess = .false.)
3091 vinfo( 2)=
'S-coordinate at W-points'
3092 vinfo( 5)=
'valid_min'
3093 vinfo( 6)=
'valid_max'
3094 vinfo(21)=
'ocean_s_coordinate'
3096 vinfo(21)=
'ocean_s_coordinate_g1'
3098 vinfo(21)=
'ocean_s_coordinate_g2'
3100# if defined SEDIMENT && defined SED_MORPH
3101 vinfo(23)=
's: s_w C: Cs_w eta: zeta depth: bath depth_c: hc'
3103 vinfo(23)=
's: s_w C: Cs_w eta: zeta depth: h depth_c: hc'
3109 & 1, (/swdim/), aval, vinfo, ncname, &
3110 & setparaccess = .false.)
3116 vinfo( 2)=
'S-coordinate stretching curves at RHO-points'
3117 vinfo( 5)=
'valid_min'
3118 vinfo( 6)=
'valid_max'
3122 & 1, (/srdim/), aval, vinfo, ncname, &
3123 & setparaccess = .false.)
3129 vinfo( 2)=
'S-coordinate stretching curves at W-points'
3130 vinfo( 5)=
'valid_min'
3131 vinfo( 6)=
'valid_max'
3135 & 1, (/swdim/), aval, vinfo, ncname, &
3136 & setparaccess = .false.)
3142 IF (
nuser.gt.0)
THEN
3144 vinfo( 2)=
'user generic parameters'
3145 vinfo(24)=
'_FillValue'
3148 & 1, (/usrdim/), aval, vinfo, ncname, &
3149 & setparaccess = .false.)
3156 IF (ncid.eq.
sta(ng)%ncid)
THEN
3158 vinfo( 2)=
'stations I-direction positions'
3160 & 1, (/stadim/), aval, vinfo, ncname, &
3161 & setparaccess = .false.)
3165 vinfo( 2)=
'stations J-direction positions'
3167 & 1, (/stadim/), aval, vinfo, ncname, &
3168 & setparaccess = .false.)
3173 IF (ncid.eq.
sta(ng)%ncid)
THEN
3175 IF (ncid.ne.
flt(ng)%ncid)
THEN
3177#if !(defined SED_MORPH && defined SEDIMENT)
3186 vinfo(22)=
'coordinates'
3188 IF (ncid.eq.
sta(ng)%ncid)
THEN
3190 & 1, (/stadim/), aval, vinfo, ncname)
3194 & 2, t2dgrd, aval, vinfo, ncname)
3201 IF (ncid.ne.
sta(ng)%ncid)
THEN
3207 vinfo(22)=
'coordinates'
3210 & 2, t2dgrd, aval, vinfo, ncname)
3216 IF (ncid.ne.
sta(ng)%ncid)
THEN
3222 vinfo(22)=
'coordinates'
3225 & 2, t2dgrd, aval, vinfo, ncname)
3233 vinfo(22)=
'coordinates'
3236 & 2, t2dgrd, aval, vinfo, ncname)
3248 IF (ncid.eq.
sta(ng)%ncid)
THEN
3250 & 1, (/stadim/), aval, vinfo, ncname)
3254 & 2, t2dgrd, aval, vinfo, ncname)
3263 IF (ncid.eq.
sta(ng)%ncid)
THEN
3265 & 1, (/stadim/), aval, vinfo, ncname)
3269 & 2, t2dgrd, aval, vinfo, ncname)
3278 IF (ncid.eq.
sta(ng)%ncid)
THEN
3280 & 1, (/stadim/), aval, vinfo, ncname)
3284 & 2, t2dgrd, aval, vinfo, ncname)
3293 IF (ncid.eq.
sta(ng)%ncid)
THEN
3295 & 1, (/stadim/), aval, vinfo, ncname)
3299 & 2, t2dgrd, aval, vinfo, ncname)
3312 IF (ncid.ne.
sta(ng)%ncid)
THEN
3314 & 2, u2dgrd, aval, vinfo, ncname)
3323 IF (ncid.ne.
sta(ng)%ncid)
THEN
3325 & 2, u2dgrd, aval, vinfo, ncname)
3334 IF (ncid.ne.
sta(ng)%ncid)
THEN
3336 & 2, u2dgrd, aval, vinfo, ncname)
3345 IF (ncid.ne.
sta(ng)%ncid)
THEN
3347 & 2, u2dgrd, aval, vinfo, ncname)
3360 IF (ncid.ne.
sta(ng)%ncid)
THEN
3362 & 2, v2dgrd, aval, vinfo, ncname)
3371 IF (ncid.ne.
sta(ng)%ncid)
THEN
3373 & 2, v2dgrd, aval, vinfo, ncname)
3382 IF (ncid.ne.
sta(ng)%ncid)
THEN
3384 & 2, v2dgrd, aval, vinfo, ncname)
3393 IF (ncid.ne.
sta(ng)%ncid)
THEN
3395 & 2, v2dgrd, aval, vinfo, ncname)
3408 IF (ncid.ne.
sta(ng)%ncid)
THEN
3410 & 2, p2dgrd, aval, vinfo, ncname)
3419 IF (ncid.ne.
sta(ng)%ncid)
THEN
3421 & 2, p2dgrd, aval, vinfo, ncname)
3430 IF (ncid.ne.
sta(ng)%ncid)
THEN
3432 & 2, p2dgrd, aval, vinfo, ncname)
3441 IF (ncid.ne.
sta(ng)%ncid)
THEN
3443 & 2, p2dgrd, aval, vinfo, ncname)
3457 vinfo(22)=
'coordinates'
3459 IF (ncid.eq.
sta(ng)%ncid)
THEN
3461 & 1, (/stadim/), aval, vinfo, ncname)
3465 & 2, t2dgrd, aval, vinfo, ncname)
3473 IF (ncid.ne.
sta(ng)%ncid)
THEN
3479 vinfo(22)=
'coordinates'
3482 & 2, t2dgrd, aval, vinfo, ncname)
3490 vinfo(22)=
'coordinates'
3493 & 2, u2dgrd, aval, vinfo, ncname)
3501 vinfo(22)=
'coordinates'
3504 & 2, v2dgrd, aval, vinfo, ncname)
3512 vinfo(22)=
'coordinates'
3515 & 2, p2dgrd, aval, vinfo, ncname)
3519#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
3520 defined opt_observations || defined sensitivity_4dvar || \
3525 IF (ncid.ne.
sta(ng)%ncid)
THEN
3528 vinfo( 9)=
'inactive'
3531 vinfo(22)=
'coordinates'
3534 & 2, t2dgrd, aval, vinfo, ncname)
3539 vinfo( 9)=
'inactive'
3542 vinfo(22)=
'coordinates'
3545 & 2, u2dgrd, aval, vinfo, ncname)
3550 vinfo( 9)=
'inactive'
3553 vinfo(22)=
'coordinates'
3556 & 2, v2dgrd, aval, vinfo, ncname)
3564 IF (ncid.ne.
sta(ng)%ncid)
THEN
3565# if defined UV_LOGDRAG || defined BBL_MODEL
3571 vinfo(22)=
'coordinates'
3574 & 2, t2dgrd, aval, vinfo, ncname)
3583 vinfo(22)=
'coordinates'
3586 & 2, t2dgrd, aval, vinfo, ncname)
3595 vinfo(22)=
'coordinates'
3598 & 2, t2dgrd, aval, vinfo, ncname)
3605 10
FORMAT (i0,
'x',i0)
3606 20
FORMAT (/,
' DEF_INFO_NF90 - error while creating global', &
3607 &
' attribute: ',a,/,17x,a)
3643 integer,
intent(in) :: ng, model
3644 integer,
intent(in) :: DimIDs(nDimID)
3646 character (*),
intent(in) :: ncname
3648 TYPE (file_desc_t),
intent(in) :: pioFile
3652 integer,
parameter :: Natt = 25
3654 integer :: brydim, FileH, i, ie, is, j, lstr
3655 integer :: srdim, stadim, status, swdim, trcdim, usrdim
3662# if defined BIOLOGY && defined ECOSIM
3663 integer :: bacdim, domdim, fecdim, lightdim, phydim
3665 integer :: biodim(2)
3667# if !defined PARALLEL_IO && defined DISTRIBUTE
3668 integer :: ibuffer(2)
3670 integer :: p2dgrd(2), tbrydim(2)
3671 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
3675 character (len=11 ) :: bryatt, clmatt, frcatt
3676 character (len=50 ) :: tiling
3677 character (len=80 ) :: type
3679 character (len=512) :: state_vector
3682 character (len=512) :: bio_file
3684 character (len=4096) :: string
3685 character (len=MaxLen) :: Vinfo(Natt)
3687 character (len=*),
parameter :: MyFile = &
3688 & __FILE__//
", def_info_pio"
3690 TYPE (Var_desc_t) :: pioVar
3717 tbrydim(1)=dimids(11)
3718 tbrydim(2)=dimids(14)
3719# if defined ECOSIM && defined SOLVE3D
3731 fileh=abs(piofile%fh)
3735 IF ((
nuser.gt.0).and.(fileh.ne.abs(
gst(ng)%pioFile%fh)))
THEN
3736 status=
def_dim(ng, model, piofile, ncname,
'Nuser', &
3744 DO j=1,len(vinfo(1))
3759 WRITE (
history,
'(a,1x,a,", ",a)')
'ROMS, Version', &
3763 WRITE (
history,
'(a,1x,a)')
'ROMS, Version', &
3774 status=pio_put_att(piofile, pio_global,
'file', &
3776 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3789 status=pio_put_att(piofile, pio_global,
'format', &
3790 &
'netCDF-4/HDF5 file')
3792 status=pio_put_att(piofile, pio_global,
'format', &
3793 &
'netCDF-3 64bit offset file')
3795 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3807 type=
'CF-1.4, SGRID-0.3'
3809 status=pio_put_att(piofile, pio_global,
'Conventions', &
3811 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3812 IF (
master)
WRITE (
stdout,20)
'Conventions', trim(ncname)
3820 IF (fileh.eq.abs(
adm(ng)%pioFile%fh))
THEN
3821 type=
'ROMS adjoint history file'
3822 ELSE IF (fileh.eq.abs(
avg(ng)%pioFile%fh))
THEN
3823# if defined AD_AVERAGES && defined ADJOINT
3824 type=
'ROMS adjoint model averages file'
3825# elif defined RP_AVERAGES && defined TL_IOMS
3826 type=
'ROMS representer model averages file'
3827# elif defined TL_AVERAGES && defined TANGENT
3828 type=
'ROMS tangent linear model averages file'
3830 type=
'ROMS nonlinear model averages file'
3832 ELSE IF (fileh.eq.abs(
dia(ng)%pioFile%fh))
THEN
3833 type=
'ROMS diagnostics file'
3834 ELSE IF (fileh.eq.abs(
flt(ng)%pioFile%fh))
THEN
3835 type=
'ROMS floats file'
3836 ELSE IF (fileh.eq.abs(
err(ng)%pioFile%fh))
THEN
3837 type=
'ROMS posterior analysis error covariance matrix'
3838 ELSE IF (fileh.eq.abs(
gst(ng)%pioFile%fh))
THEN
3839 type=
'ROMS GST check pointing restart file'
3840 ELSE IF (fileh.eq.abs(
har(ng)%pioFile%fh))
THEN
3841 type=
'ROMS Least-squared Detiding Harmonics file'
3842 ELSE IF (fileh.eq.abs(
hss(ng)%pioFile%fh))
THEN
3843 type=
'ROMS 4D-Var Hessian eigenvectors file'
3844 ELSE IF (fileh.eq.abs(
his(ng)%pioFile%fh))
THEN
3845 type=
'ROMS history file'
3846 ELSE IF (fileh.eq.abs(
itl(ng)%pioFile%fh))
THEN
3847 type=
'ROMS tangent linear model initial file'
3848 ELSE IF (fileh.eq.abs(
lcz(ng)%pioFile%fh))
THEN
3849 type=
'ROMS 4D-Var Lanczos vectors file'
3850 ELSE IF (fileh.eq.abs(
lze(ng)%pioFile%fh))
THEN
3851 type=
'ROMS 4D-Var Evolved Lanczos vectors file'
3852 ELSE IF (fileh.eq.abs(
nrm(1,ng)%pioFile%fh))
THEN
3853 type=
'ROMS initial conditions error covariance norm file'
3854 ELSE IF (fileh.eq.abs(
nrm(2,ng)%pioFile%fh))
THEN
3855 type=
'ROMS model error covariance norm file'
3856 ELSE IF (fileh.eq.abs(
nrm(3,ng)%pioFile%fh))
THEN
3857 type=
'ROMS boundary conditions error covariance norm file'
3858 ELSE IF (fileh.eq.abs(
nrm(4,ng)%pioFile%fh))
THEN
3859 type=
'ROMS surface forcing error covariance norm file'
3860 ELSE IF (fileh.eq.abs(
qck(ng)%pioFile%fh))
THEN
3861 type=
'ROMS quicksave file'
3862 ELSE IF (fileh.eq.abs(
rst(ng)%pioFile%fh))
THEN
3863 type=
'ROMS restart file'
3865 ELSE IF (fileh.eq.abs(
sca(ng)%pioFile%fh))
THEN
3866 type=
'ROMS AD scratch file'
3867 ELSE IF (fileh.eq.abs(
sct(ng)%pioFile%fh))
THEN
3868 type=
'ROMS TL scratch file'
3869 ELSE IF (fileh.eq.abs(
spa(ng)%pioFile%fh))
THEN
3870 type=
'ROMS AD Arnoldi file'
3871 ELSE IF (fileh.eq.abs(
spt(ng)%pioFile%fh))
THEN
3872 type=
'ROMS TL Arnoldi file'
3874 ELSE IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
3875 type=
'ROMS station file'
3876 ELSE IF (fileh.eq.abs(
tlf(ng)%pioFile%fh))
THEN
3877 type=
'ROMS tangent linear impulse forcing file'
3878 ELSE IF (fileh.eq.abs(
tlm(ng)%pioFile%fh))
THEN
3879 type=
'ROMS tangent linear history file'
3882 status=pio_put_att(piofile, pio_global,
'type', &
3884 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3900 state_vector(is:ie)=trim(
vname(1,
idsvar(i)))//
', '
3908 status=pio_put_att(piofile, pio_global,
'title', &
3910 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3918 status=pio_put_att(piofile, pio_global,
'var_info', &
3920 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3929 lstr=len_trim(state_vector)-1
3930 status=pio_put_att(piofile, pio_global,
'state_vector', &
3931 & state_vector(1:lstr))
3932 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3933 IF (
master)
WRITE (
stdout,20)
'state_vector', trim(ncname)
3942 status=pio_put_att(piofile, pio_global,
'gst_file', &
3943 & trim(
gst(ng)%name))
3944 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3953 status=pio_put_att(piofile, pio_global,
'rst_file', &
3954 & trim(
rst(ng)%name))
3955 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3965 status=pio_put_att(piofile, pio_global,
'his_base', &
3966 & trim(
his(ng)%base))
3968 status=pio_put_att(piofile, pio_global,
'his_file', &
3969 & trim(
his(ng)%name))
3971 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3979# if defined AVERAGES || \
3980 (defined ad_averages && defined adjoint) || \
3981 (defined rp_averages && defined tl_ioms) || \
3982 (defined tl_averages && defined tangent)
3985 status=pio_put_att(piofile, pio_global,
'avg_base', &
3986 & trim(
avg(ng)%base))
3988 status=pio_put_att(piofile, pio_global,
'avg_file', &
3989 & trim(
avg(ng)%name))
3991 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
3999# if defined AVERAGES && defined AVERAGES_DETIDE && \
4000 (defined ssh_tides || defined uv_tides)
4002 status=pio_put_att(piofile, pio_global,
'har_file', &
4003 & trim(
har(ng)%name))
4004 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4015 status=pio_put_att(piofile,pio_global,
'dia_base', &
4016 & trim(
dia(ng)%base))
4018 status=pio_put_att(piofile, pio_global,
'dia_file', &
4019 & trim(
dia(ng)%name))
4021 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4029# if defined WEAK_CONSTRAINT && \
4030 (defined posterior_error_f || defined posterior_error_i)
4032 status=pio_put_att(piofile, pio_global,
'err_file', &
4033 & trim(
err(ng)%name))
4034 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4044 status=pio_put_att(piofile, pio_global,
'sta_file', &
4045 & trim(
sta(ng)%name))
4046 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4056 status=pio_put_att(piofile, pio_global,
'flt_file', &
4057 & trim(
flt(ng)%name))
4058 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4068 status=pio_put_att(piofile, pio_global,
'grd_file', &
4069 & trim(
grd(ng)%name))
4070 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4081 status=pio_put_att(piofile, pio_global,
'ini_file', &
4082 & trim(
ini(ng)%name))
4083 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4093 status=pio_put_att(piofile,pio_global,
'itl_file', &
4094 & trim(
itl(ng)%name))
4095 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4103# if defined ADJOINT && \
4105 defined i4dvar_ana_sensitivity || defined opt_observations || \
4106 defined sensitivity_4dvar || defined so_semi || \
4107 defined stochastic_opt )
4109 status=pio_put_att(piofile, pio_global,
'iad_file', &
4110 & trim(
iad(ng)%name))
4111 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4120# if defined I4DVAR || defined OPT_OBSERVATIONS || \
4121 defined weak_constraint
4123 status=pio_put_att(piofile, pio_global,
'nrm_file', &
4124 & trim(
nrm(1,ng)%name))
4125 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4133# ifdef WEAK_CONSTRAINT
4135 status=pio_put_att(piofile, pio_global,
'tlf_file', &
4136 & trim(
tlf(ng)%name))
4137 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4147 status=pio_put_att(piofile, pio_global,
'obs_file', &
4148 & trim(
obs(ng)%name))
4149 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4157# ifdef RBL4DVAR_FCT_SENSITIVITY
4159 status=pio_put_att(piofile, pio_global,
'fcta_file', &
4160 & trim(
fcta(ng)%name))
4161 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4162 IF (
master)
WRITE (
stdout,20)
'fcta_file', trim(ncname)
4169 status=pio_put_att(piofile, pio_global,
'fctb_file', &
4170 & trim(
fctb(ng)%name))
4171 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4172 IF (
master)
WRITE (
stdout,20)
'fctb_file', trim(ncname)
4180 status=pio_put_att(piofile, pio_global,
'oifa_file', &
4181 & trim(
oifa(ng)%name))
4182 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4183 IF (
master)
WRITE (
stdout,20)
'oifa_file', trim(ncname)
4190 status=pio_put_att(piofile, pio_global,
'oifb_file', &
4191 & trim(
oifb(ng)%name))
4192 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4193 IF (
master)
WRITE (
stdout,20)
'oifb_file', trim(ncname)
4200 status=pio_put_att(piofile, pio_global,
'foia_file', &
4201 & trim(foia(ng)%name))
4202 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4203 IF (
master)
WRITE (
stdout,20)
'foia_file', trim(ncname)
4210 status=pio_put_att(piofile, pio_global,
'foib_file', &
4211 & trim(foib(ng)%name))
4212 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4213 IF (
master)
WRITE (
stdout,20)
'foib_file', trim(ncname)
4224 status=pio_put_att(piofile, pio_global,
'river_file', &
4225 & trim(
ssf(ng)%name))
4226 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4227 IF (
master)
WRITE (
stdout,20)
'river_file', trim(ncname)
4235# if defined SSH_TIDES || defined UV_TIDES
4238 status=pio_put_att(piofile, pio_global,
'tide_file', &
4239 & trim(
tide(ng)%name))
4240 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4241 IF (
master)
WRITE (
stdout,20)
'tide_file', trim(ncname)
4254 WRITE (frcatt,30)
'frc_file_', i
4255 status=pio_put_att(piofile, pio_global, frcatt, &
4257 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4258 IF (
master)
WRITE (
stdout,20) trim(frcatt), trim(ncname)
4272 WRITE (bryatt,30)
'bry_file_', i
4273 status=pio_put_att(piofile, pio_global, bryatt, &
4275 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4276 IF (
master)
WRITE (
stdout,20) trim(bryatt), trim(ncname)
4284# if !(defined ANA_SSH || defined ANA_M2CLIMA || \
4285 defined ana_m3clima || defined ana_tclima)
4291 WRITE (clmatt,30)
'clm_file_', i
4292 status=pio_put_att(piofile, pio_global, clmatt, &
4294 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4295 IF (
master)
WRITE (
stdout,20) trim(clmatt), trim(ncname)
4304# ifndef ANA_NUDGCOEF
4307 status=pio_put_att(piofile, pio_global,
'nud_file', &
4308 & trim(
nud(ng)%name))
4309 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4320 status=pio_put_att(piofile, pio_global,
'fwd_file', &
4321 & trim(
fwd(ng)%name))
4322 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4330# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
4331 defined opt_observations || defined sensitivity_4dvar || \
4334 status=pio_put_att(piofile, pio_global,
'ads_file', &
4335 & trim(
ads(ng)%name))
4336 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4344# if !defined DEBUGGING && defined DISTRIBUTE
4346 status=pio_put_att(piofile, pio_global,
'script_file', &
4348 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4349 IF (
master)
WRITE (
stdout,20)
'script_file', trim(ncname)
4358 status=pio_put_att(piofile, pio_global,
'apar_file', &
4360 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4361 IF (
master)
WRITE (
stdout,20)
'apar_file', trim(ncname)
4370 status=pio_put_att(piofile, pio_global,
'bpar_file', &
4372 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4373 IF (
master)
WRITE (
stdout,20)
'bpar_file', trim(ncname)
4382 status=pio_put_att(piofile, pio_global,
'fpos_file', &
4384 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4385 IF (
master)
WRITE (
stdout,20)
'fpos_file', trim(ncname)
4394 status=pio_put_att(piofile, pio_global,
'spos_file', &
4396 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4397 IF (
master)
WRITE (
stdout,20)
'spos_file', trim(ncname)
4410 CALL tadv_putatt (ng, piofile, ncname,
'NLM_TADV', &
4412 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4419# if defined ADJOINT || defined TANGENT || defined TL_IOMS
4421 CALL tadv_putatt (ng, piofile, ncname,
'ADM_TADV', &
4423 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4435 CALL lbc_putatt (ng, piofile, ncname,
'NLM_LBC',
lbc, status)
4436 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4443# if defined ADJOINT || defined TANGENT || defined TL_IOMS
4449 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4462 status=pio_put_att(piofile, pio_global,
'git_url', &
4464 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4471# if !defined DEBUGGING && defined GIT_REV
4473 status=pio_put_att(piofile, pio_global,
'git_rev', &
4475 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4486 status=pio_put_att(piofile, pio_global,
'svn_url', &
4488 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4495# if !defined DEBUGGING && defined SVN_REV
4497 status=pio_put_att(piofile, pio_global,
'svn_rev', &
4499 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4513 status=pio_put_att(piofile, pio_global,
'code_dir', &
4515 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4525 status=pio_put_att(piofile, pio_global,
'header_dir', &
4527 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4528 IF (
master)
WRITE (
stdout,20)
'header_dir', trim(ncname)
4537 status=pio_put_att(piofile, pio_global,
'header_file', &
4539 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4540 IF (
master)
WRITE (
stdout,20)
'header_file', trim(ncname)
4552 status=pio_put_att(piofile, pio_global,
'os', &
4554 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4562 status=pio_put_att(piofile, pio_global,
'cpu', &
4564 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4572 status=pio_put_att(piofile, pio_global,
'compiler_system', &
4574 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4583 status=pio_put_att(piofile, pio_global,
'compiler_command', &
4585 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4596 status=pio_put_att(piofile, pio_global,
'compiler_flags', &
4598 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4599 IF (
master)
WRITE (
stdout,20)
'compiler_flags', trim(ncname)
4608 status=pio_put_att(piofile, pio_global,
'tiling', &
4610 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4618 status=pio_put_att(piofile, pio_global,
'history', &
4620 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4632 status=pio_put_att(piofile, pio_global,
'ana_file', &
4634 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4651 status=pio_put_att(piofile, pio_global,
'bio_file', &
4653 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4667 status=pio_put_att(piofile, pio_global,
'CPP_options', &
4669 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
4670 IF (
master)
WRITE (
stdout,20)
'CPP_options', trim(ncname)
4681 IF (fileh.eq.abs(
gst(ng)%pioFile%fh))
RETURN
4691 vinfo( 2)=
'number of long time-steps'
4692 status=
def_var(ng, model, piofile, piovar, pio_int, &
4693 & 1, (/0/), aval, vinfo, ncname, &
4694 & setparaccess = .false.)
4698 vinfo( 2)=
'number of short time-steps'
4699 status=
def_var(ng, model, piofile, piovar, pio_int, &
4700 & 1, (/0/), aval, vinfo, ncname, &
4701 & setparaccess = .false.)
4705 vinfo( 2)=
'size of long time-steps'
4708 & 1, (/0/), aval, vinfo, ncname, &
4709 & setparaccess = .false.)
4713 vinfo( 2)=
'size of short time-steps'
4716 & 1, (/0/), aval, vinfo, ncname, &
4717 & setparaccess = .false.)
4721 vinfo( 2)=
'time stamp assigned to model initilization'
4722 WRITE (vinfo( 3),
'(a,a)')
'days since ', trim(
rclock%string)
4723 vinfo( 4)=trim(
rclock%calendar)
4725 & 1, (/0/), aval, vinfo, ncname, &
4726 & setparaccess = .false.)
4729# ifdef RBL4DVAR_FCT_SENSITIVITY
4730 vinfo( 1)=
'ntimes_ana'
4731 vinfo( 2)=
'number of time-steps for observation impacts, '// &
4732 &
'analysis interval'
4733 status=
def_var(ng, model, piofile, piovar, pio_int, &
4734 & 1, (/0/), aval, vinfo, ncname, &
4735 & setparaccess = .false.)
4738 vinfo( 1)=
'ntimes_fct'
4739 vinfo( 2)=
'number of time-steps for observation impacts, '// &
4740 &
'forecast interval'
4741 status=
def_var(ng, model, piofile, piovar, pio_int, &
4742 & 1, (/0/), aval, vinfo, ncname, &
4743 & setparaccess = .false.)
4747# if defined HDF5 && defined DEFLATE
4749 vinfo( 2)=
'NetCDF-4/HDF5 file format shuffle filer flag'
4750 status=
def_var(ng, model, piofile, piovar, pio_int, &
4751 & 1, (/0/), aval, vinfo, ncname, &
4752 & setparaccess = .false.)
4756 vinfo( 2)=
'NetCDF-4/HDF5 file format deflate filer flag'
4757 status=
def_var(ng, model, piofile, piovar, pio_int, &
4758 & 1, (/0/), aval, vinfo, ncname, &
4759 & setparaccess = .false.)
4762 vinfo( 1)=
'deflate_level'
4763 vinfo( 2)=
'NetCDF-4/HDF5 file format deflate level parameter'
4764 status=
def_var(ng, model, piofile, piovar, pio_int, &
4765 & 1, (/0/), aval, vinfo, ncname, &
4766 & setparaccess = .false.)
4771 vinfo( 2)=
'number of time-steps between history records'
4772 status=
def_var(ng, model, piofile, piovar, pio_int, &
4773 & 1, (/0/), aval, vinfo, ncname, &
4774 & setparaccess = .false.)
4779 &
'number of time-steps between the creation of history files'
4780 status=
def_var(ng, model, piofile, piovar, pio_int, &
4781 & 1, (/0/), aval, vinfo, ncname, &
4782 & setparaccess = .false.)
4786 vinfo( 2)=
'number of time-steps between restart records'
4788 vinfo(13)=
'only latest two records are maintained'
4790 status=
def_var(ng, model, piofile, piovar, pio_int, &
4791 & 1, (/0/), aval, vinfo, ncname, &
4792 & setparaccess = .false.)
4795# if defined AVERAGES || \
4796 (defined ad_averages && defined adjoint) || \
4797 (defined rp_averages && defined tl_ioms) || \
4798 (defined tl_averages && defined tangent)
4801 &
'starting time-step for accumulation of time-averaged fields'
4802 status=
def_var(ng, model, piofile, piovar, pio_int, &
4803 & 1, (/0/), aval, vinfo, ncname, &
4804 & setparaccess = .false.)
4808 vinfo( 2)=
'number of time-steps between time-averaged records'
4809 status=
def_var(ng, model, piofile, piovar, pio_int, &
4810 & 1, (/0/), aval, vinfo, ncname, &
4811 & setparaccess = .false.)
4816 &
'number of time-steps between the creation of average files'
4817 status=
def_var(ng, model, piofile, piovar, pio_int, &
4818 & 1, (/0/), aval, vinfo, ncname, &
4819 & setparaccess = .false.)
4825 vinfo( 2)=
'number of time-steps between adjoint history records'
4826 status=
def_var(ng, model, piofile, piovar, pio_int, &
4827 & 1, (/0/), aval, vinfo, ncname, &
4828 & setparaccess = .false.)
4833 &
'number of time-steps between the creation of adjoint files'
4834 status=
def_var(ng, model, piofile, piovar, pio_int, &
4835 & 1, (/0/), aval, vinfo, ncname, &
4836 & setparaccess = .false.)
4842 vinfo( 2)=
'number of time-steps between tangent history records'
4843 status=
def_var(ng, model, piofile, piovar, pio_int, &
4844 & 1, (/0/), aval, vinfo, ncname, &
4845 & setparaccess = .false.)
4850 &
'number of time-steps between the creation of tanget files'
4851 status=
def_var(ng, model, piofile, piovar, pio_int, &
4852 & 1, (/0/), aval, vinfo, ncname, &
4853 & setparaccess = .false.)
4857# ifdef ADJUST_BOUNDARY
4860 &
'number of time-steps between 4D-Var open boundary adjustment'
4861 status=
def_var(ng, model, piofile, piovar, pio_int, &
4862 & 1, (/0/), aval, vinfo, ncname, &
4863 & setparaccess = .false.)
4867# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
4870 &
'number of time-steps between 4D-Var surface forcing adjustment'
4871 status=
def_var(ng, model, piofile, piovar, pio_int, &
4872 & 1, (/0/), aval, vinfo, ncname, &
4873 & setparaccess = .false.)
4878 vinfo( 1)=
'LmultiGST'
4879 vinfo( 2)=
'Switch to write one GST eigenvector per file'
4882 status=
def_var(ng, model, piofile, piovar, pio_int, &
4883 & 1, (/0/), aval, vinfo, ncname, &
4884 & setparaccess = .false.)
4888 vinfo( 2)=
'Switch to restart GST analysis'
4891 status=
def_var(ng, model, piofile, piovar, pio_int, &
4892 & 1, (/0/), aval, vinfo, ncname, &
4893 & setparaccess = .false.)
4896 vinfo( 1)=
'MaxIterGST'
4897 vinfo( 2)=
'maximum number of GST algorithm iterations'
4898 status=
def_var(ng, model, piofile, piovar, pio_int, &
4899 & 1, (/0/), aval, vinfo, ncname, &
4900 & setparaccess = .false.)
4904 vinfo( 2)=
'number GST iterations between check pointing'
4905 status=
def_var(ng, model, piofile, piovar, pio_int, &
4906 & 1, (/0/), aval, vinfo, ncname, &
4907 & setparaccess = .false.)
4911 vinfo( 2)=
'number Ritz eigenvalues'
4912 status=
def_var(ng, model, piofile, piovar, pio_int, &
4913 & 1, (/0/), aval, vinfo, ncname, &
4914 & setparaccess = .false.)
4918 vinfo( 2)=
'number Ritz eigenvectors generated'
4919 status=
def_var(ng, model, piofile, piovar, pio_int, &
4920 & 1, (/0/), aval, vinfo, ncname, &
4921 & setparaccess = .false.)
4924 vinfo( 1)=
'Ritz_tol'
4925 vinfo( 2)=
'relative accuracy of Ritz values'
4927 & 1, (/0/), aval, vinfo, ncname, &
4928 & setparaccess = .false.)
4935 &
'starting time-step for accumulation of diagnostic fields'
4936 status=
def_var(ng, model, piofile, piovar, pio_int, &
4937 & 1, (/0/), aval, vinfo, ncname, &
4938 & setparaccess = .false.)
4942 vinfo( 2)=
'number of time-steps between diagnostic records'
4943 status=
def_var(ng, model, piofile, piovar, pio_int, &
4944 & 1, (/0/), aval, vinfo, ncname, &
4945 & setparaccess = .false.)
4950 &
'number of time-steps between the creation of diagnostic files'
4951 status=
def_var(ng, model, piofile, piovar, pio_int, &
4952 & 1, (/0/), aval, vinfo, ncname, &
4953 & setparaccess = .false.)
4959 vinfo( 2)=
'number of time-steps between stations records'
4960 status=
def_var(ng, model, piofile, piovar, pio_int, &
4961 & 1, (/0/), aval, vinfo, ncname, &
4962 & setparaccess = .false.)
4968 vinfo( 2)=
'number of minimization outer loops'
4969 status=
def_var(ng, model, piofile, piovar, pio_int, &
4970 & 1, (/0/), aval, vinfo, ncname, &
4971 & setparaccess = .false.)
4975 vinfo( 2)=
'number of minimization inner loops'
4976 status=
def_var(ng, model, piofile, piovar, pio_int, &
4977 & 1, (/0/), aval, vinfo, ncname, &
4978 & setparaccess = .false.)
4982# if defined POWER_LAW && defined SOLVE3D
4988 vinfo( 2)=
'Power-law shape barotropic filter parameter'
4990 & 1, (/0/), aval, vinfo, ncname, &
4991 & setparaccess = .false.)
4995 vinfo( 2)=
'Power-law shape barotropic filter parameter'
4997 & 1, (/0/), aval, vinfo, ncname, &
4998 & setparaccess = .false.)
5002 vinfo( 2)=
'Power-law shape barotropic filter parameter'
5004 & 1, (/0/), aval, vinfo, ncname, &
5005 & setparaccess = .false.)
5011# if defined SOLVE3D && defined TS_DIF2
5013 vinfo( 2)=
'nonlinear model Laplacian mixing coefficient '// &
5015 vinfo( 3)=
'meter2 second-1'
5017 & 1, (/trcdim/), aval, vinfo, ncname, &
5018 & setparaccess = .false.)
5023 vinfo( 2)=
'adjoint model Laplacian mixing coefficient '// &
5025 vinfo( 3)=
'meter2 second-1'
5027 & 1, (/trcdim/), aval, vinfo, ncname, &
5028 & setparaccess = .false.)
5032# if defined TANGENT || defined TL_IOMS
5034 vinfo( 2)=
'tangent linear model Laplacian mixing coefficient '// &
5036 vinfo( 3)=
'meter2 second-1'
5038 & 1, (/trcdim/), aval, vinfo, ncname, &
5039 & setparaccess = .false.)
5044# if defined SOLVE3D && defined TS_DIF4
5046 vinfo( 2)=
'nonlinear model biharmonic mixing coefficient '// &
5048 vinfo( 3)=
'meter4 second-1'
5050 & 1, (/trcdim/), aval, vinfo, ncname, &
5051 & setparaccess = .false.)
5056 vinfo( 2)=
'adjoint model biharmonic mixing coefficient '// &
5058 vinfo( 3)=
'meter4 second-1'
5060 & 1, (/trcdim/), aval, vinfo, ncname, &
5061 & setparaccess = .false.)
5065# if defined TANGENT || defined TL_IOMS
5067 vinfo( 2)=
'tangent linear model biharmonic mixing coefficient '// &
5069 vinfo( 3)=
'meter4 second-1'
5071 & 1, (/trcdim/), aval, vinfo, ncname, &
5072 & setparaccess = .false.)
5078 vinfo( 1)=
'nl_visc2'
5079 vinfo( 2)=
'nonlinear model Laplacian mixing coefficient '// &
5081 vinfo( 3)=
'meter2 second-1'
5083 & 1, (/0/), aval, vinfo, ncname, &
5084 & setparaccess = .false.)
5088 vinfo( 1)=
'ad_visc2'
5089 vinfo( 2)=
'adjoint model Laplacian mixing coefficient '// &
5091 vinfo( 3)=
'meter2 second-1'
5093 & 1, (/0/), aval, vinfo, ncname, &
5094 & setparaccess = .false.)
5098# if defined TANGENT || defined TL_IOMS
5099 vinfo( 1)=
'tl_visc2'
5100 vinfo( 2)=
'tangent linear model Laplacian mixing coefficient '// &
5102 vinfo( 3)=
'meter2 second-1'
5104 & 1, (/0/), aval, vinfo, ncname, &
5105 & setparaccess = .false.)
5111 vinfo( 1)=
'nl_visc4'
5112 vinfo( 2)=
'nonlinear model biharmonic mixing coefficient '// &
5114 vinfo( 3)=
'meter4 second-1'
5116 & 1, (/0/), aval, vinfo, ncname, &
5117 & setparaccess = .false.)
5121 vinfo( 1)=
'ad_visc4'
5122 vinfo( 2)=
'adjoint model biharmonic mixing coefficient '// &
5124 vinfo( 3)=
'meter4 second-1'
5126 & 1, (/0/), aval, vinfo, ncname, &
5127 & setparaccess = .false.)
5131# if defined TANGENT || defined TL_IOMS
5132 vinfo( 1)=
'tl_visc4'
5133 vinfo( 2)=
'tangent linear model biharmonic mixing coefficient '// &
5135 vinfo( 3)=
'meter4 second-1'
5137 & 1, (/0/), aval, vinfo, ncname, &
5138 & setparaccess = .false.)
5143# if defined SOLVE3D && (defined MY25_MIXING || defined GLS_MIXING)
5146 vinfo( 2)=
'harmonic mixing coefficient for turbulent energy'
5147 vinfo( 3)=
'meter2 second-1'
5149 & 1, (/0/), aval, vinfo, ncname, &
5150 & setparaccess = .false.)
5155 vinfo( 2)=
'biharmonic mixing coefficient for turbulent energy'
5156 vinfo( 3)=
'meter4 second-1'
5158 & 1, (/0/), aval, vinfo, ncname, &
5159 & setparaccess = .false.)
5163# if defined UV_VIS2 || defined UV_VIS4
5164 vinfo( 1)=
'LuvSponge'
5165 vinfo( 2)=
'horizontal viscosity sponge activation switch'
5168 status=
def_var(ng, model, piofile, piovar, pio_int, &
5169 & 1, (/0/), aval, vinfo, ncname, &
5170 & setparaccess = .false.)
5173# if (defined TS_DIF2 || defined TS_DIF4) && defined SOLVE3D
5174 vinfo( 1)=
'LtracerSponge'
5175 vinfo( 2)=
'horizontal diffusivity sponge activation switch'
5178 status=
def_var(ng, model, piofile, piovar, pio_int, &
5179 & 1, (/trcdim/), aval, vinfo, ncname, &
5180 & setparaccess = .false.)
5188 vinfo( 2)=
'background vertical mixing coefficient for tracers'
5189 vinfo( 3)=
'meter2 second-1'
5191 & 1, (/trcdim/), aval, vinfo, ncname, &
5192 & setparaccess = .false.)
5196 vinfo( 2)=
'background vertical mixing coefficient for momentum'
5197 vinfo( 3)=
'meter2 second-1'
5199 & 1, (/0/), aval, vinfo, ncname, &
5200 & setparaccess = .false.)
5203# if defined MY25_MIXING || defined GLS_MIXING
5206 &
'background vertical mixing coefficient for turbulent energy'
5207 vinfo( 3)=
'meter2 second-1'
5209 & 1, (/0/), aval, vinfo, ncname, &
5210 & setparaccess = .false.)
5215 &
'background vertical mixing coefficient for length scale'
5216 vinfo( 3)=
'meter2 second-1'
5218 & 1, (/0/), aval, vinfo, ncname, &
5219 & setparaccess = .false.)
5223# ifdef FORWARD_MIXING
5228 vinfo( 1)=
'ad_Akt_fac'
5229 vinfo( 2)=
'adjoint model basic state vertical mixing '// &
5230 &
'scale for tracers'
5232 & 1, (/trcdim/), aval, vinfo, ncname, &
5233 & setparaccess = .false.)
5237# if defined TANGENT || defined TL_IOMS
5238 vinfo( 1)=
'tl_Akt_fac'
5239 vinfo( 2)=
'tangent linear model basic state vertical mixing '// &
5240 &
'scale for tracers'
5242 & 1, (/trcdim/), aval, vinfo, ncname, &
5243 & setparaccess = .false.)
5248 vinfo( 1)=
'ad_Akv_fac'
5249 vinfo( 2)=
'adjoint model basic state vertical mixing '// &
5250 &
'scale for momentum'
5252 & 1, (/0/), aval, vinfo, ncname, &
5253 & setparaccess = .false.)
5257# if defined TANGENT || defined TL_IOMS
5258 vinfo( 1)=
'tl_Akv_fac'
5259 vinfo( 2)=
'tangent linear model basic state vertical mixing '// &
5260 &
'scale for momentum'
5262 & 1, (/0/), aval, vinfo, ncname, &
5263 & setparaccess = .false.)
5272 vinfo( 2)=
'linear drag coefficient'
5273 vinfo( 3)=
'meter second-1'
5275 & 1, (/0/), aval, vinfo, ncname, &
5276 & setparaccess = .false.)
5280 vinfo( 2)=
'quadratic drag coefficient'
5282 & 1, (/0/), aval, vinfo ,ncname, &
5283 & setparaccess = .false.)
5288 vinfo( 2)=
'bottom roughness'
5291 & 1, (/0/), aval, vinfo, ncname, &
5292 & setparaccess = .false.)
5296 vinfo( 2)=
'surface roughness'
5299 & 1, (/0/), aval, vinfo, ncname, &
5300 & setparaccess = .false.)
5303# if defined SOLVE3D && defined GLS_MIXING
5308 vinfo( 2)=
'stability exponent'
5310 & 1, (/0/), aval, vinfo, ncname, &
5311 & setparaccess = .false.)
5315 vinfo( 2)=
'turbulent kinetic energy exponent'
5317 & 1, (/0/), aval, vinfo, ncname, &
5318 & setparaccess = .false.)
5322 vinfo( 2)=
'turbulent length scale exponent'
5324 & 1, (/0/), aval, vinfo, ncname, &
5325 & setparaccess = .false.)
5328 vinfo( 1)=
'gls_cmu0'
5329 vinfo( 2)=
'stability coefficient'
5331 & 1, (/0/), aval, vinfo, ncname, &
5332 & setparaccess = .false.)
5336 vinfo( 2)=
'shear production coefficient'
5338 & 1, (/0/), aval, vinfo, ncname, &
5339 & setparaccess = .false.)
5343 vinfo( 2)=
'dissipation coefficient'
5345 & 1, (/0/), aval, vinfo, ncname, &
5346 & setparaccess = .false.)
5350 vinfo( 2)=
'buoyancy production coefficient (minus)'
5352 & 1, (/0/), aval, vinfo, ncname, &
5353 & setparaccess = .false.)
5357 vinfo( 2)=
'buoyancy production coefficient (plus)'
5359 & 1, (/0/), aval, vinfo, ncname, &
5360 & setparaccess = .false.)
5363 vinfo( 1)=
'gls_sigk'
5364 vinfo( 2)=
'constant Schmidt number for TKE'
5366 & 1, (/0/), aval, vinfo, ncname, &
5367 & setparaccess = .false.)
5370 vinfo( 1)=
'gls_sigp'
5371 vinfo( 2)=
'constant Schmidt number for PSI'
5373 & 1, (/0/), aval, vinfo, ncname, &
5374 & setparaccess = .false.)
5377 vinfo( 1)=
'gls_Kmin'
5378 vinfo( 2)=
'minimum value of specific turbulent kinetic energy'
5380 & 1, (/0/), aval, vinfo, ncname, &
5381 & setparaccess = .false.)
5384 vinfo( 1)=
'gls_Pmin'
5385 vinfo( 2)=
'minimum Value of dissipation'
5387 & 1, (/0/), aval, vinfo, ncname, &
5388 & setparaccess = .false.)
5391 vinfo( 1)=
'Charnok_alpha'
5392 vinfo( 2)=
'Charnock factor for surface roughness'
5394 & 1, (/0/), aval, vinfo, ncname, &
5395 & setparaccess = .false.)
5398 vinfo( 1)=
'Zos_hsig_alpha'
5399 vinfo( 2)=
'wave amplitude factor for surface roughness'
5401 & 1, (/0/), aval, vinfo, ncname, &
5402 & setparaccess = .false.)
5405 vinfo( 1)=
'sz_alpha'
5406 vinfo( 2)=
'surface flux from wave dissipation'
5408 & 1, (/0/), aval, vinfo, ncname, &
5409 & setparaccess = .false.)
5412 vinfo( 1)=
'CrgBan_cw'
5413 vinfo( 2)=
'surface flux due to Craig and Banner wave breaking'
5415 & 1, (/0/), aval, vinfo, ncname, &
5416 & setparaccess = .false.)
5420 vinfo( 1)=
'wec_alpha'
5421 vinfo( 2)=
'WEC wave dissipation action scale'
5422 vinfo( 9)=
'all goes to breaking and none to roller'
5423 vinfo(10)=
'all goes to roller and none to breaking'
5424 status=
def_var(ng, model, piofile, piovar, nf_type, &
5425 & 1, (/0/), aval, vinfo, ncname, &
5426 & setparaccess = .false.)
5433 vinfo( 2)=
'free-surface nudging/relaxation inverse time scale'
5436 & 1, (/0/), aval, vinfo, ncname, &
5437 & setparaccess = .false.)
5441 vinfo( 2)=
'2D momentum nudging/relaxation inverse time scale'
5444 & 1, (/0/), aval, vinfo, ncname, &
5445 & setparaccess = .false.)
5450 vinfo( 2)=
'3D momentum nudging/relaxation inverse time scale'
5453 & 1, (/0/), aval, vinfo, ncname, &
5454 & setparaccess = .false.)
5458 vinfo( 2)=
'Tracers nudging/relaxation inverse time scale'
5461 & 1, (/trcdim/), aval, vinfo, ncname, &
5462 & setparaccess = .false.)
5471 vinfo( 1)=
'FSobc_in'
5472 vinfo( 2)=
'free-surface inflow, nudging inverse time scale'
5473 vinfo( 3)=
'second-1'
5475 & 1, (/brydim/), aval, vinfo, ncname, &
5476 & setparaccess = .false.)
5479 vinfo( 1)=
'FSobc_out'
5480 vinfo( 2)=
'free-surface outflow, nudging inverse time scale'
5481 vinfo( 3)=
'second-1'
5483 & 1, (/brydim/), aval, vinfo, ncname, &
5484 & setparaccess = .false.)
5487 vinfo( 1)=
'M2obc_in'
5488 vinfo( 2)=
'2D momentum inflow, nudging inverse time scale'
5489 vinfo( 3)=
'second-1'
5491 & 1, (/brydim/), aval, vinfo, ncname, &
5492 & setparaccess = .false.)
5495 vinfo( 1)=
'M2obc_out'
5496 vinfo( 2)=
'2D momentum outflow, nudging inverse time scale'
5497 vinfo( 3)=
'second-1'
5499 & 1, (/brydim/), aval, vinfo, ncname, &
5500 & setparaccess = .false.)
5505 vinfo( 2)=
'tracers inflow, nudging inverse time scale'
5506 vinfo( 3)=
'second-1'
5508 & 2, tbrydim, aval, vinfo, ncname, &
5509 & setparaccess = .false.)
5512 vinfo( 1)=
'Tobc_out'
5513 vinfo( 2)=
'tracers outflow, nudging inverse time scale'
5514 vinfo( 3)=
'second-1'
5516 & 2, tbrydim, aval, vinfo, ncname, &
5517 & setparaccess = .false.)
5520 vinfo( 1)=
'M3obc_in'
5521 vinfo( 2)=
'3D momentum inflow, nudging inverse time scale'
5522 vinfo( 3)=
'second-1'
5524 & 1, (/brydim/), aval, vinfo, ncname, &
5525 & setparaccess = .false.)
5528 vinfo( 1)=
'M3obc_out'
5529 vinfo( 2)=
'3D momentum outflow, nudging inverse time scale'
5530 vinfo( 3)=
'second-1'
5532 & 1, (/brydim/), aval, vinfo, ncname, &
5533 & setparaccess = .false.)
5542 vinfo( 2)=
'mean density used in Boussinesq approximation'
5543 vinfo( 3)=
'kilogram meter-3'
5545 & 1, (/0/), aval, vinfo, ncname, &
5546 & setparaccess = .false.)
5549# if defined SOLVE3D && defined PROPAGATOR
5551 vinfo( 2)=
'background Brunt-Vaisala frequency'
5552 vinfo( 3)=
'second-2'
5554 & 1, (/0/), aval, vinfo, ncname, &
5555 & setparaccess = .false.)
5559# if defined SOLVE3D && \
5562 vinfo( 2)=
'background density used in linear equation of state'
5563 vinfo( 3)=
'kilogram meter-3'
5565 & 1, (/0/), aval, vinfo, ncname, &
5566 & setparaccess = .false.)
5570 vinfo( 2)=
'thermal expansion coefficient'
5571 vinfo( 3)=
'Celsius-1'
5573 & 1, (/0/), aval, vinfo, ncname, &
5574 & setparaccess = .false.)
5578 vinfo( 2)=
'Saline contraction coefficient'
5580 & 1, (/0/), aval, vinfo, ncname, &
5581 & setparaccess = .false.)
5590 vinfo( 2)=
'shallowest level for body-force stress'
5591 status=
def_var(ng, model, piofile, piovar, pio_int, &
5592 & 1, (/0/), aval, vinfo, ncname, &
5593 & setparaccess = .false.)
5597 vinfo( 2)=
'deepest level for body-force stress'
5598 status=
def_var(ng, model, piofile, piovar, pio_int, &
5599 & 1, (/0/), aval, vinfo, ncname, &
5600 & setparaccess = .false.)
5608 vinfo( 2)=
'slipperiness parameter'
5610 & 1, (/0/), aval, vinfo, ncname, &
5611 & setparaccess = .false.)
5619 vinfo( 2)=
'momentum point sources and sink activation switch'
5622 status=
def_var(ng, model, piofile, piovar, pio_int, &
5623 & 1, (/0/), aval, vinfo, ncname, &
5624 & setparaccess = .false.)
5628 vinfo( 2)=
'mass point sources and sink activation switch'
5631 status=
def_var(ng, model, piofile, piovar, pio_int, &
5632 & 1, (/0/), aval, vinfo, ncname, &
5633 & setparaccess = .false.)
5641 vinfo( 1)=
'LtracerSrc'
5642 vinfo( 2)=
'tracer point sources and sink activation switch'
5645 status=
def_var(ng, model, piofile, piovar, pio_int, &
5646 & 1, (/trcdim/), aval, vinfo, ncname, &
5647 & setparaccess = .false.)
5654 vinfo( 2)=
'sea surface height climatology processing switch'
5657 status=
def_var(ng, model, piofile, piovar, pio_int, &
5658 & 1, (/0/), aval, vinfo, ncname, &
5659 & setparaccess = .false.)
5663 vinfo( 2)=
'2D momentum climatology processing switch'
5666 status=
def_var(ng, model, piofile, piovar, pio_int, &
5667 & 1, (/0/), aval, vinfo, ncname, &
5668 & setparaccess = .false.)
5673 vinfo( 2)=
'3D momentum climatology processing switch'
5676 status=
def_var(ng, model, piofile, piovar, pio_int, &
5677 & 1, (/0/), aval, vinfo, ncname, &
5678 & setparaccess = .false.)
5681 vinfo( 1)=
'LtracerCLM'
5682 vinfo( 2)=
'tracer climatology processing switch'
5685 status=
def_var(ng, model, piofile, piovar, pio_int, &
5686 & 1, (/trcdim/), aval, vinfo, ncname, &
5687 & setparaccess = .false.)
5693 vinfo( 1)=
'LnudgeM2CLM'
5694 vinfo( 2)=
'2D momentum climatology nudging activation switch'
5697 status=
def_var(ng, model, piofile, piovar, pio_int, &
5698 & 1, (/0/), aval, vinfo, ncname, &
5699 & setparaccess = .false.)
5703 vinfo( 1)=
'LnudgeM3CLM'
5704 vinfo( 2)=
'3D momentum climatology nudging activation switch'
5707 status=
def_var(ng, model, piofile, piovar, pio_int, &
5708 & 1, (/0/), aval, vinfo, ncname, &
5709 & setparaccess = .false.)
5712 vinfo( 1)=
'LnudgeTCLM'
5713 vinfo( 2)=
'tracer climatology nudging activation switch'
5716 status=
def_var(ng, model, piofile, piovar, pio_int, &
5717 & 1, (/trcdim/), aval, vinfo, ncname, &
5718 & setparaccess = .false.)
5725# ifdef ADJUST_STFLUX
5727 vinfo( 2)=
'surface tracer fluxes adjustment switch'
5730 status=
def_var(ng, model, piofile, piovar, pio_int, &
5731 & 1, (/trcdim/), aval, vinfo, ncname, &
5732 & setparaccess = .false.)
5735# ifdef ADJUST_BOUNDARY
5737 vinfo( 2)=
'open boundary conditions adjustment switch'
5740 status=
def_var(ng, model, piofile, piovar, pio_int, &
5741 & 2, (/brydim, statedim/), aval, vinfo, ncname, &
5742 & setparaccess = .false.)
5745# ifndef I4DVAR_ANA_SENSITIVITY
5746 vinfo( 1)=
'LhessianEV'
5747 vinfo( 2)=
'switch to compute Hessian eigenvectors'
5750 status=
def_var(ng, model, piofile, piovar, pio_int, &
5751 & 1, (/0/), aval, vinfo, ncname, &
5752 & setparaccess = .false.)
5755# ifdef WEAK_CONSTRAINT
5756 vinfo( 1)=
'LhotStart'
5757 vinfo( 2)=
'switch for hot start of subsequent outer loops'
5760 status=
def_var(ng, model, piofile, piovar, pio_int, &
5761 & 1, (/0/), aval, vinfo, ncname, &
5762 & setparaccess = .false.)
5766 vinfo( 1)=
'Lprecond'
5767 vinfo( 2)=
'switch for conjugate gradient preconditioning'
5770 status=
def_var(ng, model, piofile, piovar, pio_int, &
5771 & 1, (/0/), aval, vinfo, ncname, &
5772 & setparaccess = .false.)
5776 vinfo( 2)=
'switch for Ritz limited-memory preconditioning'
5779 status=
def_var(ng, model, piofile, piovar, pio_int, &
5780 & 1, (/0/), aval, vinfo, ncname, &
5781 & setparaccess = .false.)
5784# ifdef WEAK_CONSTRAINT
5787 vinfo( 2)=
'number of preconditioning eigenpairs to use'
5788 status=
def_var(ng, model, piofile, piovar, pio_int, &
5789 & 1, (/0/), aval, vinfo, ncname, &
5790 & setparaccess = .false.)
5795# if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
5797 vinfo( 2)=
'number of Lanczos iterations in posterior analysis'
5798 status=
def_var(ng, model, piofile, piovar, pio_int, &
5799 & 1, (/0/), aval, vinfo, ncname, &
5800 & setparaccess = .false.)
5803# if defined ARRAY_MODES || \
5804 defined i4dvar_ana_sensitivity || \
5805 defined rbl4dvar_ana_sensitivity || \
5806 defined rbl4dvar_fct_sensitivity || \
5807 defined r4dvar_ana_sensitivity
5809 vinfo( 2)=
'Observations impact/sensitivity outer loop to use'
5810 status=
def_var(ng, model, piofile, piovar, pio_int, &
5811 & 1, (/0/), aval, vinfo, ncname, &
5812 & setparaccess = .false.)
5815# ifndef I4DVAR_ANA_SENSITIVITY
5817 vinfo( 2)=
'Upper bound on relative error of the gradient'
5819 & 1, (/0/), aval, vinfo, ncname, &
5820 & setparaccess = .false.)
5823 vinfo( 1)=
'HevecErr'
5824 vinfo( 2)=
'Accuracy required for Hessian eigenvectors'
5826 & 1, (/0/), aval, vinfo, ncname, &
5827 & setparaccess = .false.)
5832 vinfo( 2)=
'background error covariance normalization method'
5834 vinfo(10)=
'randomization'
5835 status=
def_var(ng, model, piofile, piovar, pio_int, &
5836 & 1, (/0/), aval, vinfo, ncname, &
5837 & setparaccess = .false.)
5841 vinfo( 2)=
'Random number generation scheme'
5842 vinfo( 9)=
'intrisic_randon_number'
5843 vinfo(10)=
'Gaussian_distributed_deviates'
5844 status=
def_var(ng, model, piofile, piovar, pio_int, &
5845 & 1, (/0/), aval, vinfo, ncname, &
5846 & setparaccess = .false.)
5850 vinfo( 2)=
'number of randomization iterations'
5851 status=
def_var(ng, model, piofile, piovar, pio_int, &
5852 & 1, (/0/), aval, vinfo, ncname, &
5853 & setparaccess = .false.)
5857 vinfo( 2)=
'initial conditions error covariance '// &
5858 &
'horizontal convolution time-step stability factor'
5860 & 1, (/0/), aval, vinfo, ncname, &
5861 & setparaccess = .false.)
5864# ifdef WEAK_CONSTRAINT
5866 vinfo( 2)=
'model error covariance '// &
5867 &
'horizontal convolution time-step stability factor'
5869 & 1, (/0/), aval, vinfo, ncname, &
5870 & setparaccess = .false.)
5874# ifdef ADJUST_BOUNDARY
5876 vinfo( 2)=
'open boundary conditions error covariance '// &
5877 &
'horizontal convolution time-step stability factor'
5879 & 1, (/0/), aval, vinfo, ncname, &
5880 & setparaccess = .false.)
5884# ifdef ADJUST_STFLUX
5886 vinfo( 2)=
'surface forcing error covariance '// &
5887 &
'horizontal convolution time-step stability factor'
5889 & 1, (/0/), aval, vinfo, ncname, &
5890 & setparaccess = .false.)
5896 vinfo( 2)=
'initial conditions error covariance '// &
5897 &
'vertical convolution time-step stability factor'
5899 & 1, (/0/), aval, vinfo, ncname, &
5900 & setparaccess = .false.)
5903# ifdef WEAK_CONSTRAINT
5905 vinfo( 2)=
'model error covariance '// &
5906 &
'vertical convolution time-step stability factor'
5908 & 1, (/0/), aval, vinfo, ncname, &
5909 & setparaccess = .false.)
5913# ifdef ADJUST_BOUNDARY
5915 vinfo( 2)=
'open boundary conditions error covariance '// &
5916 &
'vertical convolution time-step stability factor'
5918 & 1, (/0/), aval, vinfo, ncname, &
5919 & setparaccess = .false.)
5925 vinfo( 2)=
'initial conditions error covariance '// &
5926 &
'horizontal decorrelation scale'
5929 & 1, (/statedim/), aval, vinfo, ncname, &
5930 & setparaccess = .false.)
5935 vinfo( 2)=
'initial conditions error covariance '// &
5936 &
'vertical decorrelation scale'
5939 & 1, (/statedim/), aval, vinfo, ncname, &
5940 & setparaccess = .false.)
5946 vinfo( 2)=
'model error covariance ' // &
5947 &
'horizontal decorrelation scale'
5950 & 1, (/statedim/), aval, vinfo, ncname, &
5951 & setparaccess = .false.)
5956 vinfo( 2)=
'model error covariance '// &
5957 &
'vertical decorrelation scale'
5960 & 1, (/statedim/), aval, vinfo, ncname, &
5961 & setparaccess = .false.)
5966# ifdef ADJUST_BOUNDARY
5968 vinfo( 2)=
'open boundary conditions error covariance '// &
5969 &
'horizontal decorrelation scale'
5972 & 2, (/statedim, brydim/), aval, vinfo, ncname, &
5973 & setparaccess = .false.)
5978 vinfo( 2)=
'open boundary conditions error covariance '// &
5979 &
'vertical decorrelation scale'
5982 & 2, (/statedim, brydim/), aval, vinfo, ncname, &
5983 & setparaccess = .false.)
5988# ifdef RPM_RELAXATION
5989 vinfo( 1)=
'tl_M2diff'
5990 vinfo( 2)=
'RPM 2D momentum diffusive relaxation coefficient'
5991 vinfo( 3)=
'meter2 second-1'
5993 & 1, (/0/), aval, vinfo, ncname, &
5994 & setparaccess = .false.)
5998 vinfo( 1)=
'tl_M3diff'
5999 vinfo( 2)=
'RPM 3D momentum diffusive relaxation coefficient'
6000 vinfo( 3)=
'meter2 second-1'
6002 & 1, (/0/), aval, vinfo, ncname, &
6003 & setparaccess = .false.)
6006 vinfo( 1)=
'tl_Tdiff'
6007 vinfo( 2)=
'RPM tracers diffusive relaxation coefficients'
6008 vinfo( 3)=
'meter2 second-1'
6010 & 1, (/trcdim/), aval, vinfo, ncname, &
6011 & setparaccess = .false.)
6016# ifdef BALANCE_OPERATOR
6017# ifdef ZETA_ELLIPTIC
6019 vinfo( 2)=
'number of iterations in SSH elliptic equation'
6020 status=
def_var(ng, model, piofile, piovar, pio_int, &
6021 & 1, (/0/), aval, vinfo, ncname, &
6022 & setparaccess = .false.)
6026 vinfo( 1)=
'Lbalance'
6027 vinfo( 2)=
'switches for state variables included as '// &
6028 'constraint in the error covariance balance operator'
6031 status=
def_var(ng, model, piofile, piovar, pio_int, &
6032 & 1, (/statedim/), aval, vinfo, ncname, &
6033 & setparaccess = .false.)
6036 vinfo( 1)=
'LNM_flag'
6037 vinfo( 2)=
'balance operator level of no motion flag'
6038 vinfo( 9)=
'integrate from bottom to surface,'
6039 vinfo(10)=
'integrate from LNM_depth to surface'
6040 status=
def_var(ng, model, piofile, piovar, pio_int, &
6041 & 1, (/0/), aval, vinfo, ncname, &
6042 & setparaccess = .false.)
6045 vinfo( 1)=
'LNM_depth'
6046 vinfo( 2)=
'balance operator level of no motion depth'
6049 & 1, (/0/), aval, vinfo, ncname, &
6050 & setparaccess = .false.)
6053 vinfo( 1)=
'dTdz_min'
6054 vinfo( 2)=
'minimum dT/dz value used in balaced salinity'
6055 vinfo( 3)=
'Celsius meter-1'
6057 & 1, (/0/), aval, vinfo, ncname, &
6058 & setparaccess = .false.)
6061 vinfo( 1)=
'ml_depth'
6062 vinfo( 2)=
'mixed layer depth used in balanced salinity'
6065 & 1, (/0/), aval, vinfo, ncname, &
6066 & setparaccess = .false.)
6074 vinfo( 1)=
'Sigma_max'
6075 vinfo( 2)=
'background standard deviation, '// &
6077 vinfo( 3)=
'state variable units'
6079 & 1, (/statedim/), aval, vinfo, ncname, &
6080 & setparaccess = .false.)
6083 vinfo( 1)=
'Sigma_ml'
6084 vinfo( 2)=
'background standard deviation, '// &
6085 &
'maximum value at mixed layer'
6086 vinfo( 3)=
'state variable units'
6088 & 1, (/statedim/), aval, vinfo, ncname, &
6089 & setparaccess = .false.)
6092 vinfo( 1)=
'Sigma_do'
6093 vinfo( 2)=
'background standard deviation, '// &
6094 &
'maximum value in deep ocean'
6095 vinfo( 3)=
'state variable units'
6097 & 1, (/statedim/), aval, vinfo, ncname, &
6098 & setparaccess = .false.)
6101 vinfo( 1)=
'Sigma_dz'
6102 vinfo( 2)=
'background standard deviation, '// &
6103 &
'profile vertical displacement'
6106 & 1, (/statedim/), aval, vinfo, ncname, &
6107 & setparaccess = .false.)
6111 vinfo( 1)=
'mld_uniform'
6112 vinfo( 2)=
'constast mixed-layer depth value'
6115 & 1, (/0/), aval, vinfo, ncname, &
6116 & setparaccess = .false.)
6122# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
6123 defined opt_observations || defined sensitivity_4dvar || \
6129 vinfo( 2)=
'adjoint sensitivity on free-surface'
6132 status=
def_var(ng, model, piofile, piovar, pio_int, &
6133 & 1, (/0/), aval, vinfo, ncname, &
6134 & setparaccess = .false.)
6138 vinfo( 2)=
'adjoint sensitivity on 2D U-momentum'
6141 status=
def_var(ng, model, piofile, piovar, pio_int, &
6142 & 1, (/0/), aval, vinfo, ncname, &
6143 & setparaccess = .false.)
6147 vinfo( 2)=
'adjoint sensitivity on 2D V-momentum'
6150 status=
def_var(ng, model, piofile, piovar, pio_int, &
6151 & 1, (/0/), aval, vinfo, ncname, &
6152 & setparaccess = .false.)
6157 vinfo( 2)=
'adjoint sensitivity on 3D U-momentum'
6160 status=
def_var(ng, model, piofile, piovar, pio_int, &
6161 & 1, (/0/), aval, vinfo, ncname, &
6162 & setparaccess = .false.)
6166 vinfo( 2)=
'adjoint sensitivity on 3D V-momentum'
6169 status=
def_var(ng, model, piofile, piovar, pio_int, &
6170 & 1, (/0/), aval, vinfo, ncname, &
6171 & setparaccess = .false.)
6175 vinfo( 2)=
'adjoint sensitivity on tracer variables'
6178 status=
def_var(ng, model, piofile, piovar, pio_int, &
6179 & 1, (/trcdim/), aval, vinfo, ncname, &
6180 & setparaccess = .false.)
6184 vinfo( 2)=
'deepest level for adjoint sensitivity analysis'
6185 status=
def_var(ng, model, piofile, piovar, pio_int, &
6186 & 1, (/0/), aval, vinfo, ncname, &
6187 & setparaccess = .false.)
6191 vinfo( 2)=
'shallowest level for adjoint sensitivity analysis'
6192 status=
def_var(ng, model, piofile, piovar, pio_int, &
6193 & 1, (/0/), aval, vinfo, ncname, &
6194 & setparaccess = .false.)
6199# if defined FORCING_SV || defined SO_SEMI || defined STOCHASTIC_OPT
6205 vinfo( 2)=
'forcing singular vectors for free-surface'
6207 vinfo( 2)=
'stochastic optimals for free-surface'
6211 status=
def_var(ng, model, piofile, piovar, pio_int, &
6212 & 1, (/0/), aval, vinfo, ncname, &
6213 & setparaccess = .false.)
6219 vinfo( 2)=
'forcing singular vectors for 2D U-momentum'
6221 vinfo( 2)=
'stochastic optimals for 2D U-momentum'
6225 status=
def_var(ng, model, piofile, piovar, pio_int, &
6226 & 1, (/0/), aval, vinfo, ncname, &
6227 & setparaccess = .false.)
6232 vinfo( 2)=
'forcing singular vectors for 2D V-momentum'
6234 vinfo( 2)=
'stochastic optimals for 2D V-momentum'
6238 status=
def_var(ng, model, piofile, piovar, pio_int, &
6239 & 1, (/0/), aval, vinfo, ncname, &
6240 & setparaccess = .false.)
6247 vinfo( 2)=
'forcing singular vectors for 3D U-momentum'
6249 vinfo( 2)=
'stochastic optimals for 3D U-momentum'
6253 status=
def_var(ng, model, piofile, piovar, pio_int, &
6254 & 1, (/0/), aval, vinfo, ncname, &
6255 & setparaccess = .false.)
6260 vinfo( 2)=
'forcing singular vectors for 3D V-momentum'
6262 vinfo( 2)=
'stochastic optimals for 3D V-momentum'
6266 status=
def_var(ng, model, piofile, piovar, pio_int, &
6267 & 1, (/0/), aval, vinfo, ncname, &
6268 & setparaccess = .false.)
6273 vinfo( 2)=
'forcing singular vectors for tracer variables'
6275 vinfo( 2)=
'stochastic optimals for tracer variables'
6279 status=
def_var(ng, model, piofile, piovar, pio_int, &
6280 & 1, (/trcdim/), aval, vinfo, ncname, &
6281 & setparaccess = .false.)
6287 vinfo( 2)=
'forcing singular vectors for surface U-stress'
6289 vinfo( 2)=
'stochastic optimals for surface U-stress'
6293 status=
def_var(ng, model, piofile, piovar, pio_int, &
6294 & 1, (/0/), aval, vinfo, ncname, &
6295 & setparaccess = .false.)
6300 vinfo( 2)=
'forcing singular vectors for surface V-stress'
6302 vinfo( 2)=
'stochastic optimals for surface V-stress'
6306 status=
def_var(ng, model, piofile, piovar, pio_int, &
6307 & 1, (/0/), aval, vinfo, ncname, &
6308 & setparaccess = .false.)
6314 vinfo( 2)=
'forcing singular vectors for surface tracer flux'
6316 vinfo( 2)=
'stochastic optimals for surface tracer flux'
6320 status=
def_var(ng, model, piofile, piovar, pio_int, &
6321 & 1, (/trcdim/), aval, vinfo, ncname, &
6322 & setparaccess = .false.)
6331# ifndef SO_SEMI_WHITE
6332 vinfo( 1)=
'SO_decay'
6333 vinfo( 2)=
'red noise stochastic optimals time decorrelation'
6336 & 1, (/0/), aval, vinfo, ncname, &
6337 & setparaccess = .false.)
6341 vinfo( 1)=
'SO_trace'
6342 vinfo( 2)=
'trace of stochastic optimals matrix'
6344 & 1, (/0/), aval, vinfo, ncname, &
6345 & setparaccess = .false.)
6348 vinfo( 1)=
'SOsdev_zeta'
6349 vinfo( 2)=
'stochastic optimals scale, free-surface'
6351 & 1, (/0/), aval, vinfo, ncname, &
6352 & setparaccess = .false.)
6356 vinfo( 1)=
'SOsdev_ubar'
6357 vinfo( 2)=
'stochastic optimals scale, 2D U-momentum'
6359 & 1, (/0/), aval, vinfo, ncname, &
6360 & setparaccess = .false.)
6363 vinfo( 1)=
'SOsdev_vbar'
6364 vinfo( 2)=
'stochastic optimals scale, 2D V-momentum'
6366 & 1, (/0/), aval, vinfo, ncname, &
6367 & setparaccess = .false.)
6372 vinfo( 1)=
'SOsdev_uvel'
6373 vinfo( 2)=
'stochastic optimals scale, 3D U-momentum'
6375 & 1, (/0/), aval, vinfo, ncname, &
6376 & setparaccess = .false.)
6379 vinfo( 1)=
'SOsdev_vvel'
6380 vinfo( 2)=
'stochastic optimals scale, 3D V-momentum'
6382 & 1, (/0/), aval, vinfo, ncname, &
6383 & setparaccess = .false.)
6386 vinfo( 1)=
'SOsdev_tracer'
6387 vinfo( 2)=
'stochastic optimals scale, tracer variables'
6389 & 1, (/trcdim/), aval, vinfo, ncname, &
6390 & setparaccess = .false.)
6394 vinfo( 1)=
'SOsdev_sustr'
6395 vinfo( 2)=
'stochastic optimals scale, surface U-stress'
6397 & 1, (/0/), aval, vinfo, ncname, &
6398 & setparaccess = .false.)
6401 vinfo( 1)=
'SOsdev_svstr'
6402 vinfo( 2)=
'stochastic optimals scale, surface V-stress'
6404 & 1, (/0/), aval, vinfo, ncname, &
6405 & setparaccess = .false.)
6409 vinfo( 1)=
'SOsdev_stflx'
6410 vinfo( 2)=
'stochastic optimals scale, surface tracer flux'
6412 & 1, (/trcdim/), aval, vinfo, ncname, &
6413 & setparaccess = .false.)
6418# if defined BIOLOGY && defined SOLVE3D
6419# if defined BIO_FENNEL
6420# include <fennel_def_pio.h>
6421# elif defined ECOSIM
6422# include <ecosim_def_pio.h>
6423# elif defined HYPOXIA_SRM
6424# include <hypoxia_srm_def_pio.h>
6425# elif defined NEMURO
6426# include <nemuro_def_pio.h>
6427# elif defined NPZD_FRANKS
6428# include <npzd_Franks_def_pio.h>
6429# elif defined NPZD_IRON
6430# include <npzd_iron_def_pio.h>
6431# elif defined NPZD_POWELL
6432# include <npzd_Powell_def_pio.h>
6433# elif defined RED_TIDE
6434# include <red_tide_def_pio.h>
6438# if defined FLOATS && defined FLOAT_BIOLOGY
6439# if defined FLOAT_OYSTER
6440# include <oyster_floats_def_pio.h>
6445# include <sediment_def_pio.h>
6456 vinfo( 1)=
'spherical'
6457 vinfo( 2)=
'grid type logical switch'
6458 vinfo( 9)=
'Cartesian'
6459 vinfo(10)=
'spherical'
6460 status=
def_var(ng, model, piofile, piovar, pio_int, &
6461 & 1, (/0/), aval, vinfo, ncname, &
6462 & setparaccess = .false.)
6468 vinfo( 2)=
'domain length in the XI-direction'
6471 & 1, (/0/), aval, vinfo, ncname, &
6472 & setparaccess = .false.)
6476 vinfo( 2)=
'domain length in the ETA-direction'
6479 & 1, (/0/), aval, vinfo, ncname, &
6480 & setparaccess = .false.)
6486 vinfo( 1)=
'Vtransform'
6487 vinfo( 2)=
'vertical terrain-following transformation equation'
6488 status=
def_var(ng, model, piofile, piovar, pio_int, &
6489 & 1, (/0/), aval, vinfo, ncname, &
6490 & setparaccess = .false.)
6493 vinfo( 1)=
'Vstretching'
6494 vinfo( 2)=
'vertical terrain-following stretching function'
6495 status=
def_var(ng, model, piofile, piovar, pio_int, &
6496 & 1, (/0/), aval, vinfo, ncname, &
6497 & setparaccess = .false.)
6501 vinfo( 2)=
'S-coordinate surface control parameter'
6503 & 1, (/0/), aval, vinfo, ncname, &
6504 & setparaccess = .false.)
6508 vinfo( 2)=
'S-coordinate bottom control parameter'
6510 & 1, (/0/), aval, vinfo, ncname, &
6511 & setparaccess = .false.)
6515 vinfo( 2)=
'S-coordinate surface/bottom layer width'
6518 & 1, (/0/), aval, vinfo, ncname, &
6519 & setparaccess = .false.)
6523 vinfo( 2)=
'S-coordinate parameter, critical depth'
6526 & 1, (/0/), aval, vinfo, ncname, &
6527 & setparaccess = .false.)
6533 status=
def_var(ng, model, piofile, piovar, pio_int, &
6534 & 1, (/0/), aval, vinfo, ncname, &
6535 & setparaccess = .false.)
6541 vinfo( 2)=
'S-coordinate at RHO-points'
6542 vinfo( 5)=
'valid_min'
6543 vinfo( 6)=
'valid_max'
6545 vinfo(21)=
'ocean_s_coordinate_g1'
6547 vinfo(21)=
'ocean_s_coordinate_g2'
6549# if defined SEDIMENT && defined SED_MORPH
6550 vinfo(23)=
's: s_rho C: Cs_r eta: zeta depth: bath depth_c: hc'
6552 vinfo(23)=
's: s_rho C: Cs_r eta: zeta depth: h depth_c: hc'
6558 & 1, (/srdim/), aval, vinfo, ncname, &
6559 & setparaccess = .false.)
6565 vinfo( 2)=
'S-coordinate at W-points'
6566 vinfo( 5)=
'valid_min'
6567 vinfo( 6)=
'valid_max'
6568 vinfo(21)=
'ocean_s_coordinate'
6570 vinfo(21)=
'ocean_s_coordinate_g1'
6572 vinfo(21)=
'ocean_s_coordinate_g2'
6574# if defined SEDIMENT && defined SED_MORPH
6575 vinfo(23)=
's: s_w C: Cs_w eta: zeta depth: bath depth_c: hc'
6577 vinfo(23)=
's: s_w C: Cs_w eta: zeta depth: h depth_c: hc'
6583 & 1, (/swdim/), aval, vinfo, ncname, &
6584 & setparaccess = .false.)
6590 vinfo( 2)=
'S-coordinate stretching curves at RHO-points'
6591 vinfo( 5)=
'valid_min'
6592 vinfo( 6)=
'valid_max'
6596 & 1, (/srdim/), aval, vinfo, ncname, &
6597 & setparaccess = .false.)
6603 vinfo( 2)=
'S-coordinate stretching curves at W-points'
6604 vinfo( 5)=
'valid_min'
6605 vinfo( 6)=
'valid_max'
6609 & 1, (/swdim/), aval, vinfo, ncname, &
6610 & setparaccess = .false.)
6616 IF (
nuser.gt.0)
THEN
6618 vinfo( 2)=
'user generic parameters'
6619 vinfo(24)=
'_FillValue'
6622 & 1, (/usrdim/), aval, vinfo, ncname, &
6623 & setparaccess = .false.)
6630 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6632 vinfo( 2)=
'stations I-direction positions'
6634 & 1, (/stadim/), aval, vinfo, ncname, &
6635 & setparaccess = .false.)
6639 vinfo( 2)=
'stations J-direction positions'
6641 & 1, (/stadim/), aval, vinfo, ncname, &
6642 & setparaccess = .false.)
6646# ifdef NO_WRITE_GRID
6647 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6649 IF (fileh.ne.abs(
flt(ng)%pioFile%fh))
THEN
6651# if !(defined SED_MORPH && defined SEDIMENT)
6660 vinfo(22)=
'coordinates'
6662 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6664 & 1, (/stadim/), aval, vinfo, ncname)
6668 & 2, t2dgrd, aval, vinfo, ncname)
6675 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6681 vinfo(22)=
'coordinates'
6684 & 2, t2dgrd, aval, vinfo, ncname)
6690 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6696 vinfo(22)=
'coordinates'
6699 & 2, t2dgrd, aval, vinfo, ncname)
6707 vinfo(22)=
'coordinates'
6710 & 2, t2dgrd, aval, vinfo, ncname)
6722 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6724 & 1, (/stadim/), aval, vinfo, ncname)
6728 & 2, t2dgrd, aval, vinfo, ncname)
6737 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6739 & 1, (/stadim/), aval, vinfo, ncname)
6743 & 2, t2dgrd, aval, vinfo, ncname)
6752 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6754 & 1, (/stadim/), aval, vinfo, ncname)
6758 & 2, t2dgrd, aval, vinfo, ncname)
6767 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6769 & 1, (/stadim/), aval, vinfo, ncname)
6773 & 2, t2dgrd, aval, vinfo, ncname)
6786 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6788 & 2, u2dgrd, aval, vinfo, ncname)
6797 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6799 & 2, u2dgrd, aval, vinfo, ncname)
6808 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6810 & 2, u2dgrd, aval, vinfo, ncname)
6819 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6821 & 2, u2dgrd, aval, vinfo, ncname)
6834 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6836 & 2, v2dgrd, aval, vinfo, ncname)
6845 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6847 & 2, v2dgrd, aval, vinfo, ncname)
6856 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6858 & 2, v2dgrd, aval, vinfo, ncname)
6867 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6869 & 2, v2dgrd, aval, vinfo, ncname)
6882 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6884 & 2, p2dgrd, aval, vinfo, ncname)
6893 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6895 & 2, p2dgrd, aval, vinfo, ncname)
6904 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6906 & 2, p2dgrd, aval, vinfo, ncname)
6915 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6917 & 2, p2dgrd, aval, vinfo, ncname)
6931 vinfo(22)=
'coordinates'
6933 IF (fileh.eq.abs(
sta(ng)%pioFile%fh))
THEN
6935 & 1, (/stadim/), aval, vinfo, ncname)
6939 & 2, t2dgrd, aval, vinfo, ncname)
6947 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
6953 vinfo(22)=
'coordinates'
6956 & 2, t2dgrd, aval, vinfo, ncname)
6964 vinfo(22)=
'coordinates'
6967 & 2, u2dgrd, aval, vinfo, ncname)
6976 & 2, v2dgrd, aval, vinfo, ncname)
6984 vinfo(22)=
'coordinates'
6987 & 2, p2dgrd, aval, vinfo, ncname)
6991# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
6992 defined opt_observations || defined sensitivity_4dvar || \
6997 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
7000 vinfo( 9)=
'inactive'
7003 vinfo(22)=
'coordinates'
7006 & 2, t2dgrd, aval, vinfo, ncname)
7011 vinfo( 9)=
'inactive'
7014 vinfo(22)=
'coordinates'
7017 & 2, u2dgrd, aval, vinfo, ncname)
7022 vinfo( 9)=
'inactive'
7025 vinfo(22)=
'coordinates'
7028 & 2, v2dgrd, aval, vinfo, ncname)
7036 IF (fileh.ne.abs(
sta(ng)%pioFile%fh))
THEN
7037# if defined UV_LOGDRAG || defined BBL_MODEL
7043 vinfo(22)=
'coordinates'
7046 & 2, t2dgrd, aval, vinfo, ncname)
7055 vinfo(22)=
'coordinates'
7058 & 2, t2dgrd, aval, vinfo, ncname)
7067 vinfo(22)=
'coordinates'
7070 & 2, t2dgrd, aval, vinfo, ncname)
7077 10
FORMAT (i0,
'x',i0)
7078 20
FORMAT (/,
' DEF_INFO_PIO - error while creating global', &
7079 &
' attribute: ',a,/,16x,a)