27#if defined PIO_LIB && defined DISTRIBUTE
79#if defined PIO_LIB && defined DISTRIBUTE
104 integer,
parameter ::
mv = 1400
105 integer,
parameter ::
nv = 1400
114 integer,
allocatable ::
nxyp(:)
115 integer,
allocatable ::
nxyr(:)
116 integer,
allocatable ::
nxyu(:)
117 integer,
allocatable ::
nxyv(:)
128 integer,
allocatable ::
rilb(:)
129 integer,
allocatable ::
riub(:)
130 integer,
allocatable ::
rjlb(:)
131 integer,
allocatable ::
rjub(:)
141 integer,
allocatable ::
uilb(:)
142 integer,
allocatable ::
uiub(:)
143 integer,
allocatable ::
ujlb(:)
144 integer,
allocatable ::
ujub(:)
154 integer,
allocatable ::
vilb(:)
155 integer,
allocatable ::
viub(:)
156 integer,
allocatable ::
vjlb(:)
157 integer,
allocatable ::
vjub(:)
166 logical,
allocatable ::
aout(:,:)
167 logical,
allocatable ::
dout(:,:)
168 logical,
allocatable ::
hout(:,:)
169 logical,
allocatable ::
qout(:,:)
170 logical,
allocatable ::
sout(:,:)
545#if defined PIO_LIB && defined DISTRIBUTE
574 logical,
allocatable ::
linfo(:,:,:)
578 integer,
allocatable ::
iinfo(:,:,:)
580 real(dp),
allocatable ::
finfo(:,:,:)
584 real(dp),
allocatable ::
vtime(:,:,:)
593 character (len=256),
allocatable ::
cinfo(:,:)
595#if defined PIO_LIB && defined DISTRIBUTE
610 logical,
dimension(4) :: lbiofile
612 character (len=256),
dimension(4) :: bioname
641 IF (.not.
allocated(
nxyp))
THEN
645 IF (.not.
allocated(
nxyr))
THEN
649 IF (.not.
allocated(
nxyu))
THEN
653 IF (.not.
allocated(
nxyv))
THEN
658 IF (.not.
allocated(
nwaterr))
THEN
662 IF (.not.
allocated(
nwateru))
THEN
666 IF (.not.
allocated(
nwaterv))
THEN
671 IF (.not.
allocated(
rilb))
THEN
675 IF (.not.
allocated(
riub))
THEN
679 IF (.not.
allocated(
rjlb))
THEN
683 IF (.not.
allocated(
rjub))
THEN
688 IF (.not.
allocated(
rxmin))
THEN
692 IF (.not.
allocated(
rxmax))
THEN
696 IF (.not.
allocated(
rymin))
THEN
700 IF (.not.
allocated(
rymax))
THEN
705 IF (.not.
allocated(
uilb))
THEN
709 IF (.not.
allocated(
uiub))
THEN
713 IF (.not.
allocated(
ujlb))
THEN
717 IF (.not.
allocated(
ujub))
THEN
722 IF (.not.
allocated(
uxmin))
THEN
726 IF (.not.
allocated(
uxmax))
THEN
730 IF (.not.
allocated(
uymin))
THEN
734 IF (.not.
allocated(
uymax))
THEN
739 IF (.not.
allocated(
vilb))
THEN
743 IF (.not.
allocated(
viub))
THEN
747 IF (.not.
allocated(
vjlb))
THEN
751 IF (.not.
allocated(
vjub))
THEN
756 IF (.not.
allocated(
vxmin))
THEN
760 IF (.not.
allocated(
vxmax))
THEN
764 IF (.not.
allocated(
vymin))
THEN
768 IF (.not.
allocated(
vymax))
THEN
773 IF (.not.
allocated(
aout))
THEN
777 IF (.not.
allocated(
dout))
THEN
781 IF (.not.
allocated(
hout))
THEN
785 IF (.not.
allocated(
qout))
THEN
789 IF (.not.
allocated(
sout))
THEN
794 IF (.not.
allocated(
idrtrc))
THEN
798 IF (.not.
allocated(
idsurt))
THEN
802 IF (.not.
allocated(
idtads))
THEN
806 IF (.not.
allocated(
idtbot))
THEN
810 IF (.not.
allocated(
idtbry))
THEN
814 IF (.not.
allocated(
idtclm))
THEN
818 IF (.not.
allocated(
idtnud))
THEN
822 IF (.not.
allocated(
idtsur))
THEN
826 IF (.not.
allocated(
idttlf))
THEN
831 IF (.not.
allocated(
ihutav))
THEN
835 IF (.not.
allocated(
ihvtav))
THEN
839 IF (.not.
allocated(
idttav))
THEN
843 IF (.not.
allocated(
idutav))
THEN
847 IF (.not.
allocated(
idvtav))
THEN
853 IF (.not.
allocated(
iddtrc))
THEN
857 IF (.not.
allocated(
iddu2d))
THEN
861 IF (.not.
allocated(
iddv2d))
THEN
865 IF (.not.
allocated(
iddu3d))
THEN
869 IF (.not.
allocated(
iddv3d))
THEN
875 IF (.not.
allocated(
istsur))
THEN
879 IF (.not.
allocated(
istvar))
THEN
884 IF (.not.
allocated(
idbvar))
THEN
889 IF (.not.
allocated(
idsvar))
THEN
894 IF (.not.
allocated(
idsbry))
THEN
900 IF (.not.
allocated(
bryncid))
THEN
904 IF (.not.
allocated(
clmncid))
THEN
908 IF (.not.
allocated(
frcncid))
THEN
913#if defined PIO_LIB && defined DISTRIBUTE
928 IF (.not.
allocated(
idefadj))
THEN
932 IF (.not.
allocated(
idefavg))
THEN
936 IF (.not.
allocated(
idefdia))
THEN
940 IF (.not.
allocated(
idefhis))
THEN
944 IF (.not.
allocated(
idefqck))
THEN
948 IF (.not.
allocated(
ideftlm))
THEN
952 IF (.not.
allocated(
idefxtr))
THEN
957 IF (.not.
allocated(
idtvar))
THEN
961 IF (.not.
allocated(
idtrcd))
THEN
965 IF (.not.
allocated(
idtrch))
THEN
970 IF (.not.
allocated(
linfo))
THEN
975 IF (.not.
allocated(
iinfo))
THEN
980 IF (.not.
allocated(
finfo))
THEN
984 IF (.not.
allocated(
fpoint))
THEN
988 IF (.not.
allocated(
fscale))
THEN
992 IF (.not.
allocated(
tintrp))
THEN
997#if defined SSH_TIDES || defined UV_TIDES
998 IF (.not.
allocated(
vtime))
THEN
1003 IF (.not.
allocated(
vtime))
THEN
1009 IF (.not.
allocated(
cinfo))
THEN
1014#if defined PIO_LIB && defined DISTRIBUTE
1015 IF (.not.
associated(
dinfo))
THEN
1037 IF (
allocated(
nxyp))
deallocate (
nxyp )
1038 IF (
allocated(
nxyr))
deallocate (
nxyr )
1039 IF (
allocated(
nxyu))
deallocate (
nxyu )
1040 IF (
allocated(
nxyv))
deallocate (
nxyv )
1044 IF (
allocated(
rilb))
deallocate (
rilb )
1045 IF (
allocated(
riub))
deallocate (
riub )
1046 IF (
allocated(
rjlb))
deallocate (
rjlb )
1047 IF (
allocated(
rjub))
deallocate (
rjub )
1052 IF (
allocated(
uilb))
deallocate (
uilb )
1053 IF (
allocated(
uiub))
deallocate (
uiub )
1054 IF (
allocated(
ujlb))
deallocate (
ujlb )
1055 IF (
allocated(
ujub))
deallocate (
ujub )
1060 IF (
allocated(
vilb))
deallocate (
vilb )
1061 IF (
allocated(
viub))
deallocate (
viub )
1062 IF (
allocated(
vjlb))
deallocate (
vjlb )
1063 IF (
allocated(
vjub))
deallocate (
vjub )
1069 IF (
allocated(
aout))
deallocate (
aout )
1070 IF (
allocated(
dout))
deallocate (
dout )
1071 IF (
allocated(
hout))
deallocate (
hout )
1072 IF (
allocated(
qout))
deallocate (
qout )
1073 IF (
allocated(
sout))
deallocate (
sout )
1110#if defined PIO_LIB && defined DISTRIBUTE
1138#if defined PIO_LIB && defined DISTRIBUTE
1163#if defined SEDIMENT || defined BBL_MODEL
1172 logical :: firstpass, ldone, load
1175 integer :: itile, jtile
1177 integer :: lvar, ntiles, i, ic, ic_brylast, j, ng
1178 integer :: gtype, tile, varid
1180 real(dp),
parameter :: spv = 0.0_dp
1181 real(dp) :: add_offset, scale
1183 character (len=MaxLen) :: string
1184 character (len=MaxLen),
dimension(8) :: vinfo
1186 character (len=*),
parameter :: myfile = &
1187 & __FILE__//
"initialize_ncparam"
1196 domain(ng) % Eastern_Edge = .false.
1197 domain(ng) % Western_Edge = .false.
1198 domain(ng) % Northern_Edge = .false.
1199 domain(ng) % Southern_Edge = .false.
1201 domain(ng) % NorthEast_Corner = .false.
1202 domain(ng) % NorthWest_Corner = .false.
1203 domain(ng) % SouthEast_Corner = .false.
1204 domain(ng) % SouthWest_Corner = .false.
1206 domain(ng) % NorthEast_Test = .false.
1207 domain(ng) % NorthWest_Test = .false.
1208 domain(ng) % SouthEast_Test = .false.
1209 domain(ng) % SouthWest_Test = .false.
1211 domain(ng) % Xmin_psi = spv
1212 domain(ng) % Xmax_psi = spv
1213 domain(ng) % Ymin_psi = spv
1214 domain(ng) % Ymax_psi = spv
1216 domain(ng) % Xmin_rho = spv
1217 domain(ng) % Xmax_rho = spv
1218 domain(ng) % Ymin_rho = spv
1219 domain(ng) % Ymax_rho = spv
1221 domain(ng) % Xmin_u = spv
1222 domain(ng) % Xmax_u = spv
1223 domain(ng) % Ymin_u = spv
1224 domain(ng) % Ymax_u = spv
1226 domain(ng) % Xmin_v = spv
1227 domain(ng) % Xmax_v = spv
1228 domain(ng) % Ymin_v = spv
1229 domain(ng) % Ymax_v = spv
1259 DO j=1,len(bioname(1))
1274#if defined ADJUST_WSTRESS || defined FORCING_SV || \
1275 defined hessian_fsv || defined so_semi || \
1276 defined stochastic_opt
1283# if defined ADJUST_STFLUX || defined FORCING_SV || \
1284 defined hessian_fsv || defined so_semi || \
1285 defined stochastic_opt
1305# if defined GLS_MIXING || defined MY25_MIXING
1337 linfo(1,i,ng)=.false.
1338 linfo(2,i,ng)=.false.
1339 linfo(3,i,ng)=.false.
1340 linfo(4,i,ng)=.false.
1341 linfo(5,i,ng)=.false.
1342 linfo(6,i,ng)=.false.
1359 finfo(1,i,ng)=0.0_r8
1360 finfo(2,i,ng)=0.0_r8
1361 finfo(3,i,ng)=0.0_r8
1362 finfo(5,i,ng)=0.0_r8
1363 finfo(6,i,ng)=0.0_r8
1364 finfo(7,i,ng)=0.0_r8
1365 finfo(10,i,ng)=1.0_r8
1366#if defined PIO_LIB && defined DISTRIBUTE
1367 dinfo(1,i,ng)%vd%varID=-1
1368 dinfo(1,i,ng)%dkind=-1
1369 dinfo(1,i,ng)%gtype=0
1370 dinfo(2,i,ng)%vd%varID=-1
1371 dinfo(2,i,ng)%dkind=-1
1372 dinfo(2,i,ng)%gtype=0
1379 vtime(1,i,ng)=0.0_dp
1380 vtime(2,i,ng)=0.0_dp
1384#if defined PIO_LIB && defined DISTRIBUTE
1398 git_url=
'https://github.com/myroms/roms'
1409 svn_url=
'https://myroms.org/svn/trunk'
1426 metadata_loop :
DO WHILE (.not.ldone)
1430 ldone =
io_metadata(firstpass, vinfo, scale, add_offset)
1436 SELECT CASE (trim(adjustl(vinfo(7))))
1457#if defined ECOSIM && defined DIAGNOSTICS_BIO
1463#ifdef SPECTRAL_LIGHT
1475 SELECT CASE (trim(adjustl(vinfo(8))))
1588 CASE (
'idsurT(itemp)')
1591 CASE (
'idsurT(isalt)')
1594 CASE (
'idTvar(itemp)')
1597 CASE (
'idTvar(isalt)')
1618 CASE (
'idTsur(itemp)')
1625 CASE (
'idTsur(isalt)')
1628 CASE (
'idTbot(itemp)')
1631 CASE (
'idTbot(isalt)')
1634 CASE (
'idGhat(itemp)')
1637 CASE (
'idGhat(isalt)')
1660 CASE (
'idZbry(iwest)')
1662 CASE (
'idZbry(ieast)')
1664 CASE (
'idZbry(isouth)')
1666 CASE (
'idZbry(inorth)')
1668 CASE (
'idU2bc(iwest)')
1670 CASE (
'idU2bc(ieast)')
1672 CASE (
'idU2bc(isouth)')
1674 CASE (
'idU2bc(inorth)')
1676 CASE (
'idV2bc(iwest)')
1678 CASE (
'idV2bc(ieast)')
1680 CASE (
'idV2bc(isouth)')
1682 CASE (
'idV2bc(inorth)')
1684 CASE (
'idU3bc(iwest)')
1686 CASE (
'idU3bc(ieast)')
1688 CASE (
'idU3bc(isouth)')
1690 CASE (
'idU3bc(inorth)')
1692 CASE (
'idV3bc(iwest)')
1694 CASE (
'idV3bc(ieast)')
1696 CASE (
'idV3bc(isouth)')
1698 CASE (
'idV3bc(inorth)')
1700 CASE (
'idTbry(iwest,itemp)')
1702 CASE (
'idTbry(ieast,itemp)')
1704 CASE (
'idTbry(isouth,itemp)')
1706 CASE (
'idTbry(inorth,itemp)')
1709 CASE (
'idTbry(iwest,isalt)')
1711 CASE (
'idTbry(ieast,isalt)')
1713 CASE (
'idTbry(isouth,isalt)')
1715 CASE (
'idTbry(inorth,isalt)')
1866 CASE (
'idRtrc(itemp)')
1869 CASE (
'idRtrc(isalt)')
1912#if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1913 defined opt_observations || defined sensitivity_4dvar || \
1925 CASE (
'idTads(itemp)')
1928 CASE (
'idTads(inert(i))')
1932 CASE (
'idTads(isalt)')
1938#ifdef WEAK_CONSTRAINT
1949 CASE (
'idTtlf(itemp)')
1952 CASE (
'idTtlf(isalt)')
1962#ifdef AVERAGES_DETIDE
1994 CASE (
'idTrcD(itemp)')
1996 CASE (
'idTrcH(itemp)')
1999 CASE (
'idTrcD(isalt)')
2001 CASE (
'idTrcH(isalt)')
2013 CASE (
'idTTav(itrc)')
2015 CASE (
'iHUTav(itrc)')
2017 CASE (
'iHVTav(itrc)')
2019 CASE (
'idUTav(itrc)')
2021 CASE (
'idVTav(itrc)')
2035 CASE (
'idTvar(inert(i))')
2037 CASE (
'idTbry(iwest,inert(i))')
2039 CASE (
'idTbry(ieast,inert(i))')
2041 CASE (
'idTbry(isouth,inert(i))')
2043 CASE (
'idTbry(inorth,inert(i))')
2045 CASE (
'idRtrc(inert(i))')
2056#ifdef DIAGNOSTICS_UV
2057 CASE (
'idDu2d(M2pgrd)')
2059 CASE (
'idDv2d(M2pgrd)')
2061 CASE (
'idDu2d(M2sstr)')
2063 CASE (
'idDu2d(M2bstr)')
2065 CASE (
'idDv2d(M2sstr)')
2067 CASE (
'idDv2d(M2bstr)')
2069 CASE (
'idDu2d(M2rate)')
2071 CASE (
'idDv2d(M2rate)')
2074 CASE (
'idDu2d(M2xadv)')
2076 CASE (
'idDu2d(M2yadv)')
2078 CASE (
'idDu2d(M2hadv)')
2080 CASE (
'idDv2d(M2xadv)')
2082 CASE (
'idDv2d(M2yadv)')
2084 CASE (
'idDv2d(M2hadv)')
2088 CASE (
'idDu2d(M2hjvf)')
2090 CASE (
'idDv2d(M2hjvf)')
2092 CASE (
'idDu2d(M2kvrf)')
2094 CASE (
'idDv2d(M2kvrf)')
2097 CASE (
'idDu2d(M2fsco)')
2099 CASE (
'idDv2d(M2fsco)')
2102# ifdef BOTTOM_STREAMING
2103 CASE (
'idDu2d(M2bstm)')
2105 CASE (
'idDv2d(M2bstm)')
2108# ifdef SURFACE_STREAMING
2109 CASE (
'idDu2d(M2sstm)')
2111 CASE (
'idDv2d(M2sstm)')
2114 CASE (
'idDu2d(M2wrol)')
2116 CASE (
'idDv2d(M2wrol)')
2118 CASE (
'idDu2d(M2wbrk)')
2120 CASE (
'idDv2d(M2wbrk)')
2122 CASE (
'idDu2d(M2zeta)')
2124 CASE (
'idDv2d(M2zeta)')
2126 CASE (
'idDu2d(M2zetw)')
2128 CASE (
'idDv2d(M2zetw)')
2130 CASE (
'idDu2d(M2zqsp)')
2132 CASE (
'idDv2d(M2zqsp)')
2134 CASE (
'idDu2d(M2zbeh)')
2136 CASE (
'idDv2d(M2zbeh)')
2140 CASE (
'idDu2d(M2fcor)')
2142 CASE (
'idDv2d(M2fcor)')
2145# if defined UV_VIS2 || defined UV_VIS4
2146 CASE (
'idDu2d(M2hvis)')
2148 CASE (
'idDu2d(M2xvis)')
2150 CASE (
'idDu2d(M2yvis)')
2152 CASE (
'idDv2d(M2hvis)')
2154 CASE (
'idDv2d(M2xvis)')
2156 CASE (
'idDv2d(M2yvis)')
2160 CASE (
'idDu3d(M3pgrd)')
2162 CASE (
'idDv3d(M3pgrd)')
2164 CASE (
'idDu3d(M3vvis)')
2166 CASE (
'idDv3d(M3vvis)')
2168 CASE (
'idDu3d(M3rate)')
2170 CASE (
'idDv3d(M3rate)')
2173 CASE (
'idDu3d(M3xadv)')
2175 CASE (
'idDu3d(M3yadv)')
2177 CASE (
'idDu3d(M3hadv)')
2179 CASE (
'idDv3d(M3xadv)')
2181 CASE (
'idDv3d(M3yadv)')
2183 CASE (
'idDv3d(M3hadv)')
2185 CASE (
'idDu3d(M3vadv)')
2187 CASE (
'idDv3d(M3vadv)')
2191 CASE (
'idDu3d(M3vjvf)')
2193 CASE (
'idDv3d(M3vjvf)')
2195 CASE (
'idDu3d(M3hjvf)')
2197 CASE (
'idDv3d(M3hjvf)')
2199 CASE (
'idDu3d(M3kvrf)')
2201 CASE (
'idDv3d(M3kvrf)')
2204 CASE (
'idDu3d(M3fsco)')
2206 CASE (
'idDv3d(M3fsco)')
2209# ifdef BOTTOM_STREAMING
2210 CASE (
'idDu3d(M3bstm)')
2212 CASE (
'idDv3d(M3bstm)')
2215# ifdef SURFACE_STREAMING
2216 CASE (
'idDu3d(M3sstm)')
2218 CASE (
'idDv3d(M3sstm)')
2221 CASE (
'idDu3d(M3wrol)')
2223 CASE (
'idDv3d(M3wrol)')
2225 CASE (
'idDu3d(M3wbrk)')
2227 CASE (
'idDv3d(M3wbrk)')
2231 CASE (
'idDu3d(M3fcor)')
2233 CASE (
'idDv3d(M3fcor)')
2236# if defined UV_VIS2 || defined UV_VIS4
2237 CASE (
'idDu3d(M3hvis)')
2239 CASE (
'idDu3d(M3xvis)')
2241 CASE (
'idDu3d(M3yvis)')
2243 CASE (
'idDv3d(M3hvis)')
2245 CASE (
'idDv3d(M3xvis)')
2247 CASE (
'idDv3d(M3yvis)')
2252#ifdef DIAGNOSTICS_TS
2253 CASE (
'idDtrc(iTrate)')
2255 CASE (
'idDtrc(iThadv)')
2257 CASE (
'idDtrc(iTxadv)')
2259 CASE (
'idDtrc(iTyadv)')
2261 CASE (
'idDtrc(iTvadv)')
2263# if defined TS_DIF2 || defined TS_DIF4
2264 CASE (
'idDtrc(iThdif)')
2266 CASE (
'idDtrc(iTxdif)')
2268 CASE (
'idDtrc(iTydif)')
2270# if defined MIX_GEO_TS || defined MIX_ISO_TS
2271 CASE (
'idDtrc(iTsdif)')
2275 CASE (
'idDtrc(iTvdif)')
2278#if defined FORWARD_READ || defined FORWARD_WRITE
2292#if defined FOUR_DVAR || defined VERIFICATION
2356# include <ice_var.h>
2360# if defined BIO_FENNEL
2361# include <fennel_var.h>
2362# elif defined ECOSIM
2363# include <ecosim_var.h>
2364# elif defined HYPOXIA_SRM
2365# include <hypoxia_srm_var.h>
2366# elif defined NEMURO
2367# include <nemuro_var.h>
2368# elif defined NPZD_FRANKS
2369# include <npzd_Franks_var.h>
2370# elif defined NPZD_POWELL
2371# include <npzd_Powell_var.h>
2372# elif defined NPZD_IRON
2373# include <npzd_iron_var.h>
2374# elif defined RED_TIDE
2375# include <red_tide_var.h>
2379#if defined SEDIMENT || defined BBL_MODEL
2380# include <sediment_var.h>
2391 IF (varid.gt.
mv)
THEN
2396 vname(i,varid)=trim(adjustl(vinfo(i)))
2399 iinfo(1,varid,ng)=gtype
2407 SELECT CASE (trim(adjustl(vinfo(8))))
2408 CASE (
'idTvar(inert(i))')
2419 iinfo(1,varid,ng)=gtype
2421 WRITE (
vname(1,varid),
'(a,i2.2)') &
2422 & trim(adjustl(vinfo(1))), ic
2423 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2424 & trim(adjustl(vinfo(2))),
', type ', ic
2425 WRITE (
vname(3,varid),
'(a)') &
2426 & trim(adjustl(vinfo(3)))
2427 WRITE (
vname(4,varid),
'(a,i2.2)') &
2428 & trim(adjustl(vinfo(4))), ic
2429 WRITE (
vname(5,varid),
'(a)') &
2430 & trim(adjustl(vinfo(5)))
2431 WRITE (
vname(6,varid),
'(a,i2.2)') &
2432 & trim(adjustl(vinfo(6))), ic
2442 iinfo(1,varid,ng)=gtype
2444 WRITE (
vname(1,varid),
'(a,i2.2,a)') &
2445 & trim(adjustl(vinfo(1))), ic,
'_age'
2446 WRITE (
vname(2,varid),
'(a,i2.2)') &
2447 &
'age concentration, type ', ic
2448 WRITE (
vname(3,varid),
'(a)') &
2449 &
'second kilogram meter-3'
2450 WRITE (
vname(4,varid),
'(a,i2.2,a)') &
2451 & trim(adjustl(vinfo(4))), ic,
'_age'
2452 WRITE (
vname(5,varid),
'(a)') &
2453 & trim(adjustl(vinfo(5)))
2454 WRITE (
vname(6,varid),
'(a,i2.2,a)') &
2455 & trim(adjustl(vinfo(6))), ic,
'_age'
2463 iinfo(1,varid,ng)=gtype
2465 WRITE (
vname(1,varid),
'(a,i2.2)') &
2466 & trim(adjustl(vinfo(1))), i
2467 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2468 & trim(adjustl(vinfo(2))),
', type ', i
2469 WRITE (
vname(3,varid),
'(a)') &
2470 & trim(adjustl(vinfo(3)))
2471 WRITE (
vname(4,varid),
'(a,i2.2)') &
2472 & trim(adjustl(vinfo(4))), i
2473 WRITE (
vname(5,varid),
'(a)') &
2474 & trim(adjustl(vinfo(5)))
2475 WRITE (
vname(6,varid),
'(a,i2.2)') &
2476 & trim(adjustl(vinfo(6))), i
2481# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
2482 defined opt_observations || defined sensitivity_4dvar || \
2484 CASE (
'idTads(inert(i))')
2492 iinfo(1,varid,ng)=gtype
2494 WRITE (
vname(1,varid),
'(a,i2.2)') &
2495 & trim(adjustl(vinfo(1))), i
2496 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2497 & trim(adjustl(vinfo(2))),
', type ', i
2498 WRITE (
vname(3,varid),
'(a)') &
2499 & trim(adjustl(vinfo(3)))
2500 WRITE (
vname(4,varid),
'(a,i2.2)') &
2501 & trim(adjustl(vinfo(4))), i
2502 WRITE (
vname(5,varid),
'(a)') &
2503 & trim(adjustl(vinfo(5)))
2504 WRITE (
vname(6,varid),
'(a,i2.2)') &
2505 & trim(adjustl(vinfo(6))), i
2509 CASE (
'idTbry(iwest,inert(i))')
2517 iinfo(1,varid,ng)=gtype
2519 WRITE (
vname(1,varid),
'(a,i2.2)') &
2520 & trim(adjustl(vinfo(1))), i
2521 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2522 & trim(adjustl(vinfo(2))),
', type ', i
2523 WRITE (
vname(3,varid),
'(a)') &
2524 & trim(adjustl(vinfo(3)))
2525 WRITE (
vname(4,varid),
'(a,i2.2,a)') &
2526 & trim(adjustl(vinfo(1))), i,
' western_boundary'
2527 WRITE (
vname(5,varid),
'(a)') &
2528 & trim(adjustl(vinfo(5)))
2529 WRITE (
vname(6,varid),
'(a,i2.2)') &
2530 & trim(adjustl(vinfo(6))), i
2533 CASE (
'idTbry(ieast,inert(i))')
2541 iinfo(1,varid,ng)=gtype
2543 WRITE (
vname(1,varid),
'(a,i2.2)') &
2544 & trim(adjustl(vinfo(1))), i
2545 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2546 & trim(adjustl(vinfo(2))),
', type ', i
2547 WRITE (
vname(3,varid),
'(a)') &
2548 & trim(adjustl(vinfo(3)))
2549 WRITE (
vname(4,varid),
'(a,i2.2,a)') &
2550 & trim(adjustl(vinfo(1))), i,
' eastern_boundary'
2551 WRITE (
vname(5,varid),
'(a)') &
2552 & trim(adjustl(vinfo(5)))
2553 WRITE (
vname(6,varid),
'(a,i2.2)') &
2554 & trim(adjustl(vinfo(6))), i
2557 CASE (
'idTbry(isouth,inert(i))')
2565 iinfo(1,varid,ng)=gtype
2567 WRITE (
vname(1,varid),
'(a,i2.2)') &
2568 & trim(adjustl(vinfo(1))), i
2569 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2570 & trim(adjustl(vinfo(2))),
', type ', i
2571 WRITE (
vname(3,varid),
'(a)') &
2572 & trim(adjustl(vinfo(3)))
2573 WRITE (
vname(4,varid),
'(a,i2.2,a)') &
2574 & trim(adjustl(vinfo(1))), i,
' southern_boundary'
2575 WRITE (
vname(5,varid),
'(a)') &
2576 & trim(adjustl(vinfo(5)))
2577 WRITE (
vname(6,varid),
'(a,i2.2)') &
2578 & trim(adjustl(vinfo(6))), i
2581 CASE (
'idTbry(inorth,inert(i))')
2589 iinfo(1,varid,ng)=gtype
2591 WRITE (
vname(1,varid),
'(a,i2.2)') &
2592 & trim(adjustl(vinfo(1))), i
2593 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2594 & trim(adjustl(vinfo(2))),
', type ', i
2595 WRITE (
vname(3,varid),
'(a)') &
2596 & trim(adjustl(vinfo(3)))
2597 WRITE (
vname(4,varid),
'(a,i2.2,a)') &
2598 & trim(adjustl(vinfo(1))), i,
' northern_boundary'
2599 WRITE (
vname(5,varid),
'(a)') &
2600 & trim(adjustl(vinfo(5)))
2601 WRITE (
vname(6,varid),
'(a,i2.2)') &
2602 & trim(adjustl(vinfo(6))), i
2605 CASE (
'idRtrc(inert(i))')
2613 iinfo(1,varid,ng)=gtype
2615 WRITE (
vname(1,varid),
'(a,i2.2)') &
2616 & trim(adjustl(vinfo(1))), i
2617 WRITE (
vname(2,varid),
'(a,a,i2.2)') &
2618 & trim(adjustl(vinfo(2))),
', type ', i
2619 WRITE (
vname(3,varid),
'(a)') &
2620 & trim(adjustl(vinfo(3)))
2621 WRITE (
vname(4,varid),
'(a,i2.2)') &
2622 & trim(adjustl(vinfo(4))), i
2623 WRITE (
vname(5,varid),
'(a)') &
2624 & trim(adjustl(vinfo(5)))
2625 WRITE (
vname(6,varid),
'(a,i2.2)') &
2626 & trim(adjustl(vinfo(6))), i
2631#ifdef DIAGNOSTICS_TS
2636 SELECT CASE (vinfo(1))
2644 iinfo(1,varid,ng)=gtype
2646 WRITE (
vname(1,varid),
'(a,a)') &
2648 & trim(adjustl(vinfo(1)))
2649 WRITE (
vname(2,varid),
'(a,", ",a)') &
2651 & trim(adjustl(vinfo(2)))
2652 WRITE (
vname(3,varid),
'(a,1x,a)') &
2654 & trim(adjustl(vinfo(3)))
2655 WRITE (
vname(4,varid),
'(a,1x,a)') &
2657 & trim(adjustl(vinfo(4)))
2658 WRITE (
vname(5,varid),
'(a)') &
2659 & trim(adjustl(vinfo(5)))
2661 & prefix=
'sea_water_', &
2671 iinfo(1,varid,ng)=gtype
2673 WRITE (
vname(1,varid),
'(a,a)') &
2675 & trim(adjustl(vinfo(1)))
2676 WRITE (
vname(2,varid),
'(a,", ",a)') &
2678 & trim(adjustl(vinfo(2)))
2679 WRITE (
vname(3,varid),
'(a,1x,a)') &
2681 & trim(adjustl(vinfo(3)))
2682 WRITE (
vname(4,varid),
'(a,1x,a)') &
2684 & trim(adjustl(vinfo(4)))
2685 WRITE (
vname(5,varid),
'(a)') &
2686 & trim(adjustl(vinfo(5)))
2688 & prefix=
'sea_water_', &
2698 iinfo(1,varid,ng)=gtype
2700 WRITE (
vname(1,varid),
'(a,a)') &
2702 & trim(adjustl(vinfo(1)))
2703 WRITE (
vname(2,varid),
'(a,", ",a)') &
2705 & trim(adjustl(vinfo(2)))
2706 WRITE (
vname(3,varid),
'(a,1x,a)') &
2708 & trim(adjustl(vinfo(3)))
2709 WRITE (
vname(4,varid),
'(a,1x,a)') &
2711 & trim(adjustl(vinfo(4)))
2712 WRITE (
vname(5,varid),
'(a)') &
2713 & trim(adjustl(vinfo(5)))
2715 & prefix=
'sea_water_', &
2725 iinfo(1,varid,ng)=gtype
2727 WRITE (
vname(1,varid),
'(a,a)') &
2729 & trim(adjustl(vinfo(1)))
2730 WRITE (
vname(2,varid),
'(a,", ",a)') &
2732 & trim(adjustl(vinfo(2)))
2733 WRITE (
vname(3,varid),
'(a,1x,a)') &
2735 & trim(adjustl(vinfo(3)))
2736 WRITE (
vname(4,varid),
'(a,1x,a)') &
2738 & trim(adjustl(vinfo(4)))
2739 WRITE (
vname(5,varid),
'(a)') &
2740 & trim(adjustl(vinfo(5)))
2742 & prefix=
'sea_water_', &
2752 iinfo(1,varid,ng)=gtype
2754 WRITE (
vname(1,varid),
'(a,a)') &
2756 & trim(adjustl(vinfo(1)))
2757 WRITE (
vname(2,varid),
'(a,", ",a)') &
2759 & trim(adjustl(vinfo(2)))
2760 WRITE (
vname(3,varid),
'(a,1x,a)') &
2762 & trim(adjustl(vinfo(3)))
2763 WRITE (
vname(4,varid),
'(a,1x,a)') &
2765 & trim(adjustl(vinfo(4)))
2766 WRITE (
vname(5,varid),
'(a)') &
2767 & trim(adjustl(vinfo(5)))
2769 & prefix=
'sea_water_', &
2772# if defined TS_DIF2 || defined TS_DIF4
2780 iinfo(1,varid,ng)=gtype
2782 WRITE (
vname(1,varid),
'(a,a)') &
2784 & trim(adjustl(vinfo(1)))
2785 WRITE (
vname(2,varid),
'(a,", ",a)') &
2787 & trim(adjustl(vinfo(2)))
2788 WRITE (
vname(3,varid),
'(a,1x,a)') &
2790 & trim(adjustl(vinfo(3)))
2791 WRITE (
vname(4,varid),
'(a,1x,a)') &
2793 & trim(adjustl(vinfo(4)))
2794 WRITE (
vname(5,varid),
'(a)') &
2795 & trim(adjustl(vinfo(5)))
2797 & prefix=
'sea_water_', &
2807 iinfo(1,varid,ng)=gtype
2809 WRITE (
vname(1,varid),
'(a,a)') &
2811 & trim(adjustl(vinfo(1)))
2812 WRITE (
vname(2,varid),
'(a,", ",a)') &
2814 & trim(adjustl(vinfo(2)))
2815 WRITE (
vname(3,varid),
'(a,1x,a)') &
2817 & trim(adjustl(vinfo(3)))
2818 WRITE (
vname(4,varid),
'(a,1x,a)') &
2820 & trim(adjustl(vinfo(4)))
2821 WRITE (
vname(5,varid),
'(a)') &
2822 & trim(adjustl(vinfo(5)))
2824 & prefix=
'sea_water_', &
2834 iinfo(1,varid,ng)=gtype
2836 WRITE (
vname(1,varid),
'(a,a)') &
2838 & trim(adjustl(vinfo(1)))
2839 WRITE (
vname(2,varid),
'(a,", ",a)') &
2841 & trim(adjustl(vinfo(2)))
2842 WRITE (
vname(3,varid),
'(a,1x,a)') &
2844 & trim(adjustl(vinfo(3)))
2845 WRITE (
vname(4,varid),
'(a,1x,a)') &
2847 & trim(adjustl(vinfo(4)))
2848 WRITE (
vname(5,varid),
'(a)') &
2849 & trim(adjustl(vinfo(5)))
2851 & prefix=
'sea_water_', &
2854# if defined MIX_GEO_TS || defined MIX_ISO_TS
2862 iinfo(1,varid,ng)=gtype
2864 WRITE (
vname(1,varid),
'(a,a)') &
2866 & trim(adjustl(vinfo(1)))
2867 WRITE (
vname(2,varid),
'(a,", ",a)') &
2869 & trim(adjustl(vinfo(2)))
2870 WRITE (
vname(3,varid),
'(a,1x,a)') &
2872 & trim(adjustl(vinfo(3)))
2873 WRITE (
vname(4,varid),
'(a,1x,a)') &
2875 & trim(adjustl(vinfo(4)))
2876 WRITE (
vname(5,varid),
'(a)') &
2877 & trim(adjustl(vinfo(5)))
2879 & prefix=
'sea_water_', &
2891 iinfo(1,varid,ng)=gtype
2893 WRITE (
vname(1,varid),
'(a,a)') &
2895 & trim(adjustl(vinfo(1)))
2896 WRITE (
vname(2,varid),
'(a,", ",a)') &
2898 & trim(adjustl(vinfo(2)))
2899 WRITE (
vname(3,varid),
'(a,1x,a)') &
2901 & trim(adjustl(vinfo(3)))
2902 WRITE (
vname(4,varid),
'(a,1x,a)') &
2904 & trim(adjustl(vinfo(4)))
2905 WRITE (
vname(5,varid),
'(a)') &
2906 & trim(adjustl(vinfo(5)))
2908 & prefix=
'sea_water_', &
2913#if defined SOLVE3D && (defined AVERAGES || defined AD_AVERAGES)
2917 SELECT CASE (vinfo(1))
2925 iinfo(1,varid,ng)=gtype
2927 WRITE (
vname(1,varid),
'(a,a)') &
2929 WRITE (
vname(2,varid),
'(a,1x,a)') &
2933 &
'nondimensional')
THEN
2934 WRITE (
vname(3,varid),
'(a)') &
2937 WRITE (
vname(3,varid),
'(a,a)') &
2940 WRITE (
vname(4,varid),
'(a,1x,a)') &
2942 & trim(adjustl(vinfo(4)))
2943 WRITE (
vname(5,varid),
'(a)') &
2944 & trim(adjustl(vinfo(5)))
2946 & prefix=vinfo(6), &
2947 & suffix=
'_in_sea_water')
2956 iinfo(1,varid,ng)=gtype
2958 WRITE (
vname(1,varid),
'(a,a)') &
2960 WRITE (
vname(2,varid),
'(a,1x,a)') &
2964 &
'nondimensional')
THEN
2965 WRITE (
vname(3,varid),
'(a)') &
2968 WRITE (
vname(3,varid),
'(a,1x,a)') &
2969 &
'meter3 second-1', &
2972 WRITE (
vname(4,varid),
'(a,1x,a)') &
2974 & trim(adjustl(vinfo(4)))
2975 WRITE (
vname(5,varid),
'(a)') &
2976 & trim(adjustl(vinfo(5)))
2987 iinfo(1,varid,ng)=gtype
2989 WRITE (
vname(1,varid),
'(a,a)') &
2991 WRITE (
vname(2,varid),
'(a,1x,a)') &
2992 &
'u-momentum times', &
2995 &
'nondimensional')
THEN
2996 WRITE (
vname(3,varid),
'(a)') &
2999 WRITE (
vname(3,varid),
'(a,1x,a)') &
3000 &
'meter second-1', &
3003 WRITE (
vname(4,varid),
'(a,1x,a)') &
3004 & trim(adjustl(vinfo(4))), &
3006 vname(5,varid)=
'ocean_time'
3008 & prefix=vinfo(6), &
3009 & suffix=
'_in_sea_water')
3018 iinfo(1,varid,ng)=gtype
3020 WRITE (
vname(1,varid),
'(a,a)') &
3022 WRITE (
vname(2,varid),
'(a,1x,a)') &
3026 &
'nondimensional')
THEN
3027 WRITE (
vname(3,varid),
'(a)') &
3030 WRITE (
vname(3,varid),
'(a,1x,a)') &
3031 &
'meter3 second-1', &
3034 WRITE (
vname(4,varid),
'(a,1x,a)') &
3036 & trim(adjustl(vinfo(4)))
3037 WRITE (
vname(5,varid),
'(a)') &
3038 & trim(adjustl(vinfo(5)))
3049 iinfo(1,varid,ng)=gtype
3051 WRITE (
vname(1,varid),
'(a,a)') &
3053 WRITE (
vname(2,varid),
'(a,1x,a)') &
3054 &
'v-momentum times', &
3057 &
'nondimensional')
THEN
3058 WRITE (
vname(3,varid),
'(a)') &
3061 WRITE (
vname(3,varid),
'(a,1x,a)') &
3062 &
'meter second-1', &
3065 WRITE (
vname(4,varid),
'(a,1x,a)') &
3066 & trim(adjustl(vinfo(4))), &
3068 vname(5,varid)=
'ocean_time'
3070 & prefix=vinfo(6), &
3071 & suffix=
'_in_sea_water')
3078 END DO metadata_loop
3089 IF (varid.gt.
mv)
THEN
3096 iinfo(1,varid,ng)=r2dvar
3098 WRITE (
vname(1,varid),
'(a,a)') &
3100 WRITE (
vname(2,varid),
'(a,a)') &
3101 & trim(adjustl(
vname(2,
idtvar(i)))),
', surface flux'
3102 WRITE (
vname(3,varid),
'(a,1x,a)') &
3103 & trim(adjustl(
vname(3,
idtvar(i)))),
'meter second-1'
3104 WRITE (
vname(4,varid),
'(3a)')
'surface ', &
3106 WRITE (
vname(5,varid),
'(a)') &
3109 & prefix=
'sea_surface_', &
3120 IF (varid.gt.
mv)
THEN
3127 iinfo(1,varid,ng)=r2dvar
3129 WRITE (
vname(1,varid),
'(a,a)') &
3131 WRITE (
vname(2,varid),
'(2a)')
'surface ', &
3133 WRITE (
vname(3,varid),
'(a)') &
3135 WRITE (
vname(4,varid),
'(a)') &
3136 & trim(
vname(2,varid))
3137 WRITE (
vname(5,varid),
'(a)') &
3140 & prefix=
'sea_surface_')
3143#ifdef WEAK_CONSTRAINT
3154 IF (varid.gt.
mv)
THEN
3161 iinfo(1,varid,ng)=r3dvar
3163 WRITE (
vname(1,varid),
'(a)') &
3165 WRITE (
vname(2,varid),
'(a,a)') &
3166 & trim(adjustl(
vname(2,
idtvar(i)))),
' impulse forcing'
3167 WRITE (
vname(3,varid),
'(a)') &
3169 WRITE (
vname(4,varid),
'(a,a)') &
3171 WRITE (
vname(5,varid),
'(a)') &
3174 & prefix=
'sea_water_', &
3175 & suffix=
'_impulse')
3193#if defined ADJUST_WSTRESS || defined FORCING_SV || \
3194 defined hessian_fsv || defined so_semi || \
3195 defined stochastic_opt
3200# if defined ADJUST_STFLUX || defined FORCING_SV || \
3201 defined hessian_fsv || defined so_semi || \
3202 defined stochastic_opt
3217# if defined GLS_MIXING || defined MY25_MIXING
3236# if defined GLS_MIXING || defined MY25_MIXING
3262#ifdef ADJUST_BOUNDARY
3270 IF (
idbvar(i).gt.0 )
THEN
3272 IF (varid.gt.
mv)
THEN
3281 WRITE (
vname(1,varid),
'(a,a)') &
3283 WRITE (
vname(2,varid),
'(a,a)') &
3284 & trim(adjustl(
vname(2,
idsvar(i)))),
', open boundaries'
3285 WRITE (
vname(3,varid),
'(a)') &
3287 WRITE (
vname(4,varid),
'(a,a)') &
3288 & trim(
vname(1,varid)),
', scalar, series'
3289 WRITE (
vname(5,varid),
'(a)') &
3298 dmem(1)=dmem(1)+real(varid,r8)
3300 10
FORMAT (/,
' MOD_NCPARAM - too small dimension ', &
3301 &
'parameter, MV = ',2i5,/,15x, &
3302 &
'change file mod_ncparam.F and recompile.')
integer, parameter isvice
integer, dimension(nices) ibice
integer, dimension(nices) isice
integer, dimension(:), allocatable idttav
logical, dimension(:,:), allocatable hout
integer, dimension(:), allocatable nxyp
integer, dimension(:), allocatable riub
integer, dimension(2) iddiff
integer, dimension(:), allocatable ihvtav
integer, dimension(:), allocatable iddu2d
integer, parameter io_nf90
integer, dimension(:), allocatable rjlb
integer, dimension(:,:), allocatable clmncid
integer, dimension(:), allocatable nxyu
type(file_desc_t), dimension(:,:), pointer frcpiofile
real(r8), dimension(:), allocatable rymin
integer, dimension(4) idu3bc
integer, dimension(:), allocatable idefadj
character(len=256), dimension(:,:), allocatable cinfo
integer, dimension(4) idzbry
integer, dimension(:), allocatable vjlb
integer, dimension(:), allocatable ihutav
integer, dimension(4) idu2bc
integer, dimension(:), allocatable idefqck
integer, dimension(:), allocatable iddv2d
character(len=80) git_rev
logical, dimension(:,:,:), allocatable linfo
subroutine, public deallocate_ncparam
integer, dimension(:), allocatable idsbry
integer, dimension(:), allocatable idefavg
integer, parameter io_pio
integer, dimension(:), allocatable idutav
integer, dimension(:), allocatable idefdia
real(r8), dimension(:), allocatable vymin
integer, dimension(:), allocatable iddu3d
integer, dimension(:), allocatable idsurt
integer, dimension(:), allocatable idbvar
integer, dimension(:), allocatable idrtrc
integer, dimension(:), allocatable uilb
type(my_vardesc), dimension(:,:,:), pointer dinfo
integer, dimension(:), allocatable nwaterv
integer, dimension(:), allocatable idtbot
integer, dimension(:), allocatable ideftlm
character(len=256) git_url
real(r8), dimension(:), allocatable rymax
real(dp), dimension(:,:,:), allocatable vtime
integer, dimension(:), allocatable idtsur
real(r8), dimension(:), allocatable uymin
real(r8), dimension(:), allocatable vymax
real(r8), dimension(:), allocatable uxmin
character(len=44) date_str
character(len=maxlen) history
real(r8), dimension(:), allocatable uxmax
integer, dimension(:), allocatable nxyv
real(r8), dimension(:), allocatable rxmax
integer, dimension(:), allocatable idtclm
integer, dimension(:,:), allocatable frcncid
integer, dimension(:), allocatable vilb
integer, dimension(:), allocatable nwateru
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
integer, dimension(:,:), allocatable bryncid
real(dp), dimension(:,:,:), allocatable tintrp
real(r8), dimension(:), allocatable uymax
real(r8), dimension(:), allocatable vxmin
subroutine, public initialize_ncparam
integer, dimension(:), allocatable vjub
real(dp), dimension(:,:,:), allocatable fpoint
integer, dimension(:), allocatable rjub
integer, dimension(4) idv3bc
real(dp), dimension(:,:), allocatable fscale
integer, dimension(:), allocatable idtrcd
integer, dimension(:), allocatable idttlf
character(len=46), dimension(0:nv) tname
character(len=80) svn_rev
character(len=40), dimension(mv) varnam
integer, dimension(:), allocatable ujlb
integer, dimension(:), allocatable idefxtr
integer, dimension(:), allocatable idtrch
integer, dimension(2) idghat
subroutine, public allocate_ncparam
logical, dimension(:,:), allocatable qout
real(dp), dimension(:,:,:), allocatable finfo
integer, dimension(:), allocatable idtnud
integer, dimension(:), allocatable iddv3d
integer, dimension(:), allocatable ujub
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:), allocatable idsvar
integer, dimension(:,:,:), allocatable iinfo
integer, dimension(:), allocatable idtads
integer, dimension(4) idv2bc
logical, dimension(:,:), allocatable sout
integer, parameter ndimid
real(r8), dimension(:), allocatable vxmax
integer, dimension(:), allocatable istsur
integer, dimension(:), allocatable nwaterr
integer, dimension(:), allocatable rilb
integer, dimension(:), allocatable idvtav
integer, dimension(:), allocatable uiub
logical, dimension(:,:), allocatable dout
type(file_desc_t), dimension(:,:), pointer clmpiofile
type(file_desc_t), dimension(:,:), pointer brypiofile
integer, parameter maxlen
character(len=256), dimension(39) ananame
character(len=256) svn_url
integer, dimension(:), allocatable idefhis
integer, dimension(:,:), allocatable idtbry
integer, dimension(:), allocatable viub
integer, dimension(:), allocatable nxyr
logical, dimension(:,:), allocatable aout
real(r8), dimension(:), allocatable rxmin
integer, dimension(:,:), allocatable iddtrc
integer, dimension(:), allocatable nsv
real(r8), dimension(:), allocatable dmem
integer, parameter isouth
integer, dimension(:), pointer inert
integer, parameter inorth
subroutine, public standardname(sname, variable, prefix, suffix)
logical function, public founderror(flag, noerr, line, routine)