101 & LBi, UBi, LBj, UBj)
106 integer,
intent(in) :: ng, tile, model
107 integer,
intent(in) :: lbi, ubi, lbj, ubj
111# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
112 defined opt_observations || defined sensitivity_4dvar || \
115 logical :: gotscope(6)
119 integer :: cr, gtype, i, status, vindex
120# if defined UV_DRAG_GRID && !defined ANA_DRAG
121 integer :: varid_dragl, varid_dragq, varid_zobl
123#if defined UV_WAVEDRAG
124 integer :: varid_dragw
128 integer(i8b) :: fhash
131 real(dp),
parameter :: fscl = 1.0_dp
133 real(r8) :: fmax, fmin
135 character (len=256) :: ncname
137 character (len=*),
parameter :: myfile = &
138 & __FILE__//
", get_grid_nf90"
152 IF (
grd(ng)%ncid.eq.-1)
THEN
155 WRITE (
stdout,10) trim(ncname)
163 & ncid =
grd(ng)%ncid)
169 & ncid =
grd(ng)%ncid)
178 IF (
rcontact(i)%receiver_grid.eq.ng)
THEN
231# if (defined CURVGRID && defined UV_ADV)
272# if defined WTYPE_GRID && \
273 (defined
lmd_skpp || defined solar_source) && \
276 IF (
master)
WRITE (
stdout,20)
'wtype_grid', trim(ncname)
284 IF (
master)
WRITE (
stdout,20)
'visc_factor', trim(ncname)
292 IF (
master)
WRITE (
stdout,20)
'diff_factor', trim(ncname)
299# if defined UV_DRAG_GRID && !defined ANA_DRAG
300# if defined UV_LOGDRAG || defined BBL_MODEL
335 & ncid =
grd(ng)%ncid)
356 SELECT CASE (trim(adjustl(
var_name(i))))
363 & ncid =
grd(ng)%ncid)
371 & ncid =
grd(ng)%ncid)
381 & lbi, ubi, lbj, ubj, &
382 & fscl, fmin, fmax, &
384 &
grid(ng) % rmask, &
392 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
397# ifdef SINGLE_PRECISION
398 hmin(ng)=real(fmin,dp)
399 hmax(ng)=real(fmax,dp)
405 WRITE (
stdout,30)
'bathymetry at RHO-points: h', &
406 & ng, trim(ncname),
hmin(ng),
hmax(ng)
416 & lbi, ubi, lbj, ubj, &
423 & lbi, ubi, lbj, ubj, &
428 & lbi, ubi, lbj, ubj, &
442 & lbi, ubi, lbj, ubj, &
443 & fscl, fmin, fmax, &
444 &
grid(ng) % rmask, &
446 &
grid(ng) % rmask, &
451 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
457 WRITE (
stdout,30)
'mask on RHO-points: mask_rho', &
458 & ng, trim(ncname), fmin, fmax
465# if !defined NOFILL_NESTING_MASK
469 & lbi, ubi, lbj, ubj, &
477 & lbi, ubi, lbj, ubj, &
482 & lbi, ubi, lbj, ubj, &
495 & lbi, ubi, lbj, ubj, &
496 & fscl, fmin, fmax, &
497 &
grid(ng) % umask, &
499 &
grid(ng) % umask, &
504 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
510 WRITE (
stdout,30)
'mask on U-points: mask_u', &
511 & ng, trim(ncname), fmin, fmax
518# if !defined NOFILL_NESTING_MASK
522 & lbi, ubi, lbj, ubj, &
530 & lbi, ubi, lbj, ubj, &
535 & lbi, ubi, lbj, ubj, &
548 & lbi, ubi, lbj, ubj, &
549 & fscl, fmin, fmax, &
550 &
grid(ng) % vmask, &
552 &
grid(ng) % vmask, &
557 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
563 WRITE (
stdout,30)
'mask on V-points: mask_v', &
564 & ng, trim(ncname), fmin, fmax
571# if !defined NOFILL_NESTING_MASK
575 & lbi, ubi, lbj, ubj, &
583 & lbi, ubi, lbj, ubj, &
588 & lbi, ubi, lbj, ubj, &
601 & lbi, ubi, lbj, ubj, &
602 & fscl, fmin, fmax, &
603 &
grid(ng) % pmask, &
605 &
grid(ng) % pmask, &
610 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
616 WRITE (
stdout,30)
'mask on PSI-points: mask_psi', &
617 & ng, trim(ncname), fmin, fmax
625 & lbi, ubi, lbj, ubj, &
630 & lbi, ubi, lbj, ubj, &
645 & lbi, ubi, lbj, ubj, &
646 & fscl, fmin, fmax, &
648 &
grid(ng) % rmask, &
656 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
662 WRITE (
stdout,30)
'ice shelf thickness: zice', &
663 & ng, trim(ncname), fmin, fmax
671 & lbi, ubi, lbj, ubj, &
676 & lbi, ubi, lbj, ubj, &
682# if defined WTYPE_GRID && \
683 (defined
lmd_skpp || defined solar_source) && \
693 & lbi, ubi, lbj, ubj, &
694 & fscl, fmin, fmax, &
696 &
grid(ng) % rmask, &
704 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
710 WRITE (
stdout,30)
'Jerlov water type: wtype_grid', &
711 & ng, trim(ncname), fmin, fmax
719 & lbi, ubi, lbj, ubj, &
724 & lbi, ubi, lbj, ubj, &
741 & lbi, ubi, lbj, ubj, &
742 & fscl, fmin, fmax, &
744 &
grid(ng) % rmask, &
747 &
mixing(ng) % visc_factor, &
750 &
mixing(ng) % visc_factor)
752 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
758 WRITE (
stdout,30)
'horizontal viscosity sponge '// &
759 &
'factor: visc_factor', &
760 & ng, trim(ncname), fmin, fmax
768 & lbi, ubi, lbj, ubj, &
769 &
mixing(ng) % visc_factor)
773 & lbi, ubi, lbj, ubj, &
776 &
mixing(ng) % visc_factor)
791 & lbi, ubi, lbj, ubj, &
792 & fscl, fmin, fmax, &
794 &
grid(ng) % rmask, &
797 &
mixing(ng) % diff_factor, &
800 &
mixing(ng) % diff_factor)
802 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
808 WRITE (
stdout,30)
'horizontal diffusivity sponge '// &
809 &
'factor: diff_factor', &
810 & ng, trim(ncname), fmin, fmax
818 & lbi, ubi, lbj, ubj, &
819 &
mixing(ng) % diff_factor)
823 & lbi, ubi, lbj, ubj, &
826 &
mixing(ng) % diff_factor)
839 & lbi, ubi, lbj, ubj, &
840 & fscl, fmin, fmax, &
842 &
grid(ng) % rmask, &
850 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
856 WRITE (
stdout,30)
'Coriolis parameter at RHO-points: f',&
857 & ng, trim(ncname), fmin, fmax
867 & lbi, ubi, lbj, ubj, &
874 & lbi, ubi, lbj, ubj, &
879 & lbi, ubi, lbj, ubj, &
893 & lbi, ubi, lbj, ubj, &
894 & fscl, fmin, fmax, &
896 &
grid(ng) % rmask, &
904 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
910 WRITE (
stdout,30)
'reciprocal XI-grid spacing: pm', &
911 & ng, trim(ncname), fmin, fmax
921 & lbi, ubi, lbj, ubj, &
928 & lbi, ubi, lbj, ubj, &
933 & lbi, ubi, lbj, ubj, &
947 & lbi, ubi, lbj, ubj, &
948 & fscl, fmin, fmax, &
950 &
grid(ng) % rmask, &
958 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
964 WRITE (
stdout,30)
'reciprocal ETA-grid spacing: pn', &
965 & ng, trim(ncname), fmin, fmax
975 & lbi, ubi, lbj, ubj, &
982 & lbi, ubi, lbj, ubj, &
987 & lbi, ubi, lbj, ubj, &
992# if (defined CURVGRID && defined UV_ADV)
1000 & 0, gtype, vsize, &
1001 & lbi, ubi, lbj, ubj, &
1002 & fscl, fmin, fmax, &
1004 &
grid(ng) % rmask, &
1007 &
grid(ng) % dmde, &
1012 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1018 WRITE (
stdout,30)
'ETA-derivative of inverse metric '// &
1019 &
'factor pm: dmde', &
1020 & ng, trim(ncname), fmin, fmax
1030 & lbi, ubi, lbj, ubj, &
1037 & lbi, ubi, lbj, ubj, &
1042 & lbi, ubi, lbj, ubj, &
1054 & 0, gtype, vsize, &
1055 & lbi, ubi, lbj, ubj, &
1056 & fscl, fmin, fmax, &
1058 &
grid(ng) % rmask, &
1061 &
grid(ng) % dndx, &
1066 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1072 WRITE (
stdout,30)
'XI-derivative of inverse metric '// &
1073 &
'factor pn: dndx', &
1074 & ng, trim(ncname), fmin, fmax
1084 & lbi, ubi, lbj, ubj, &
1091 & lbi, ubi, lbj, ubj, &
1096 & lbi, ubi, lbj, ubj, &
1109 & 0, gtype, vsize, &
1110 & lbi, ubi, lbj, ubj, &
1111 & fscl, fmin, fmax, &
1113 &
grid(ng) % pmask, &
1121 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1127 WRITE (
stdout,30)
'x-location of PSI-points: x_psi', &
1128 & ng, trim(ncname), fmin, fmax
1136 & lbi, ubi, lbj, ubj, &
1138 & .false., .false., &
1148 & 0, gtype, vsize, &
1149 & lbi, ubi, lbj, ubj, &
1150 & fscl, fmin, fmax, &
1152 &
grid(ng) % pmask, &
1160 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1166 WRITE (
stdout,30)
'y-location of PSI-points: y-psi', &
1167 & ng, trim(ncname), fmin, fmax
1175 & lbi, ubi, lbj, ubj, &
1177 & .false., .false., &
1187 & 0, gtype, vsize, &
1188 & lbi, ubi, lbj, ubj, &
1189 & fscl, fmin, fmax, &
1191 &
grid(ng) % rmask, &
1199 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1205 WRITE (
stdout,30)
'x-location of RHO-points: x-rho', &
1206 & ng, trim(ncname), fmin, fmax
1221 & lbi, ubi, lbj, ubj, &
1225 & __line__, myfile))
RETURN
1230 & lbi, ubi, lbj, ubj, &
1232 & .false., .false., &
1242 & 0, gtype, vsize, &
1243 & lbi, ubi, lbj, ubj, &
1244 & fscl, fmin, fmax, &
1246 &
grid(ng) % rmask, &
1254 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1260 WRITE (
stdout,30)
'y-location of RHO-points: y_rho', &
1261 & ng, trim(ncname), fmin, fmax
1276 & lbi, ubi, lbj, ubj, &
1280 & __line__, myfile))
RETURN
1285 & lbi, ubi, lbj, ubj, &
1287 & .false., .false., &
1297 & 0, gtype, vsize, &
1298 & lbi, ubi, lbj, ubj, &
1299 & fscl, fmin, fmax, &
1301 &
grid(ng) % umask, &
1309 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1315 WRITE (
stdout,30)
'x-location of U-points: x_u', &
1316 & ng, trim(ncname), fmin, fmax
1327 & lbi, ubi, lbj, ubj, &
1331 & __line__, myfile))
RETURN
1336 & lbi, ubi, lbj, ubj, &
1338 & .false., .false., &
1348 & 0, gtype, vsize, &
1349 & lbi, ubi, lbj, ubj, &
1350 & fscl, fmin, fmax, &
1352 &
grid(ng) % umask, &
1360 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1366 WRITE (
stdout,30)
'y-location of U-points: y_u', &
1367 & ng, trim(ncname), fmin, fmax
1378 & lbi, ubi, lbj, ubj, &
1382 & __line__, myfile))
RETURN
1387 & lbi, ubi, lbj, ubj, &
1389 & .false., .false., &
1399 & 0, gtype, vsize, &
1400 & lbi, ubi, lbj, ubj, &
1401 & fscl, fmin, fmax, &
1403 &
grid(ng) % vmask, &
1411 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1417 WRITE (
stdout,30)
'x-location of V-points: x_v', &
1418 & ng, trim(ncname), fmin, fmax
1429 & lbi, ubi, lbj, ubj, &
1433 & __line__, myfile))
RETURN
1438 & lbi, ubi, lbj, ubj, &
1440 & .false., .false., &
1450 & 0, gtype, vsize, &
1451 & lbi, ubi, lbj, ubj, &
1452 & fscl, fmin, fmax, &
1454 &
grid(ng) % vmask, &
1462 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1468 WRITE (
stdout,30)
'y-location of V-points: y_v', &
1469 & ng, trim(ncname), fmin, fmax
1480 & lbi, ubi, lbj, ubj, &
1484 & __line__, myfile))
RETURN
1489 & lbi, ubi, lbj, ubj, &
1491 & .false., .false., &
1502 & 0, gtype, vsize, &
1503 & lbi, ubi, lbj, ubj, &
1504 & fscl, fmin, fmax, &
1506 &
grid(ng) % pmask, &
1509 &
grid(ng) % lonp, &
1514 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1520 WRITE (
stdout,30)
'longitude of PSI-points: lon_psi', &
1521 & ng, trim(ncname), fmin, fmax
1529 & lbi, ubi, lbj, ubj, &
1531 & .false., .false., &
1543 & 0, gtype, vsize, &
1544 & lbi, ubi, lbj, ubj, &
1545 & fscl, fmin, fmax, &
1547 &
grid(ng) % pmask, &
1550 &
grid(ng) % latp, &
1555 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1561 WRITE (
stdout,30)
'latitude of PSI-points lat_psi', &
1562 & ng, trim(ncname), fmin, fmax
1570 & lbi, ubi, lbj, ubj, &
1572 & .false., .false., &
1584 & 0, gtype, vsize, &
1585 & lbi, ubi, lbj, ubj, &
1588 &
grid(ng) % rmask, &
1591 &
grid(ng) % lonr, &
1596 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1602 WRITE (
stdout,30)
'longitude of RHO-points: lon_rho', &
1603 & ng, trim(ncname), &
1614 & lbi, ubi, lbj, ubj, &
1618 & __line__, myfile))
RETURN
1622 & lbi, ubi, lbj, ubj, &
1624 & .false., .false., &
1636 & 0, gtype, vsize, &
1637 & lbi, ubi, lbj, ubj, &
1640 &
grid(ng) % rmask, &
1643 &
grid(ng) % latr, &
1648 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1654 WRITE (
stdout,30)
'latitude of RHO-points lat_rho', &
1655 & ng, trim(ncname), &
1666 & lbi, ubi, lbj, ubj, &
1670 & __line__, myfile))
RETURN
1674 & lbi, ubi, lbj, ubj, &
1676 & .false., .false., &
1688 & 0, gtype, vsize, &
1689 & lbi, ubi, lbj, ubj, &
1690 & fscl, fmin, fmax, &
1692 &
grid(ng) % umask, &
1695 &
grid(ng) % lonu, &
1700 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1706 WRITE (
stdout,30)
'longitude of U-points: lon_u', &
1707 & ng, trim(ncname), fmin, fmax
1717 & lbi, ubi, lbj, ubj, &
1721 & __line__, myfile))
RETURN
1725 & lbi, ubi, lbj, ubj, &
1727 & .false., .false., &
1739 & 0, gtype, vsize, &
1740 & lbi, ubi, lbj, ubj, &
1741 & fscl, fmin, fmax, &
1743 &
grid(ng) % umask, &
1746 &
grid(ng) % latu, &
1751 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1757 WRITE (
stdout,30)
'latitude of U-points: lat_u', &
1758 & ng, trim(ncname), fmin, fmax
1768 & lbi, ubi, lbj, ubj, &
1772 & __line__, myfile))
RETURN
1776 & lbi, ubi, lbj, ubj, &
1778 & .false., .false., &
1790 & 0, gtype, vsize, &
1791 & lbi, ubi, lbj, ubj, &
1792 & fscl, fmin, fmax, &
1794 &
grid(ng) % vmask, &
1797 &
grid(ng) % lonv, &
1802 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1808 WRITE (
stdout,30)
'longitude of V-points: lon_v', &
1809 & ng, trim(ncname), fmin, fmax
1819 & lbi, ubi, lbj, ubj, &
1823 & __line__, myfile))
RETURN
1827 & lbi, ubi, lbj, ubj, &
1829 & .false., .false., &
1841 & 0, gtype, vsize, &
1842 & lbi, ubi, lbj, ubj, &
1843 & fscl, fmin, fmax, &
1845 &
grid(ng) % vmask, &
1848 &
grid(ng) % latv, &
1853 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1859 WRITE (
stdout,30)
'latitude of V-points: lat_v', &
1860 & ng, trim(ncname), fmin, fmax
1870 & lbi, ubi, lbj, ubj, &
1874 & __line__, myfile))
RETURN
1878 & lbi, ubi, lbj, ubj, &
1880 & .false., .false., &
1891 & 0, gtype, vsize, &
1892 & lbi, ubi, lbj, ubj, &
1893 & fscl, fmin, fmax, &
1895 &
grid(ng) % rmask, &
1898 &
grid(ng) % angler, &
1901 &
grid(ng) % angler)
1903 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1909 WRITE (
stdout,30)
'angle between XI-axis and EAST: '// &
1911 & ng, trim(ncname), fmin, fmax
1921 & lbi, ubi, lbj, ubj, &
1923 &
grid(ng) % angler)
1928 & lbi, ubi, lbj, ubj, &
1929 &
grid(ng) % angler)
1933 & lbi, ubi, lbj, ubj, &
1936 &
grid(ng) % angler)
1938# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
1939 defined opt_observations || defined sensitivity_4dvar || \
1949 & 0, gtype, vsize, &
1950 & lbi, ubi, lbj, ubj, &
1951 & fscl, fmin, fmax, &
1953 &
grid(ng) % rmask, &
1956 &
grid(ng) % Rscope, &
1959 &
grid(ng) % Rscope)
1961 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
1967 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
1968 &
'scope on RHO-points: scope_rho', &
1969 & ng, trim(ncname), fmin, fmax
1978 & lbi, ubi, lbj, ubj, &
1979 &
grid(ng) % Rscope)
1983 & lbi, ubi, lbj, ubj, &
1986 &
grid(ng) % Rscope)
1995 & 0, gtype, vsize, &
1996 & lbi, ubi, lbj, ubj, &
1997 & fscl, fmin, fmax, &
1999 &
grid(ng) % umask, &
2002 &
grid(ng) % Uscope, &
2005 &
grid(ng) % Uscope)
2007 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2013 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
2014 &
'scope on U-points: scope_u', &
2015 & ng, trim(ncname), fmin, fmax
2024 & lbi, ubi, lbj, ubj, &
2025 &
grid(ng) % Uscope)
2029 & lbi, ubi, lbj, ubj, &
2032 &
grid(ng) % Uscope)
2041 & 0, gtype, vsize, &
2042 & lbi, ubi, lbj, ubj, &
2043 & fscl, fmin, fmax, &
2045 &
grid(ng) % vmask, &
2048 &
grid(ng) % Vscope, &
2051 &
grid(ng) % Vscope)
2053 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2059 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
2060 &
'scope on V-points: scope_v', &
2061 & ng, trim(ncname), fmin, fmax
2070 & lbi, ubi, lbj, ubj, &
2071 &
grid(ng) % Vscope)
2075 & lbi, ubi, lbj, ubj, &
2078 &
grid(ng) % Vscope)
2089# if defined UV_DRAG_GRID && !defined ANA_DRAG
2090# if defined UV_LOGDRAG || defined BBL_MODEL
2097 & 0, gtype, vsize, &
2098 & lbi, ubi, lbj, ubj, &
2099 & fscl, fmin, fmax, &
2101 &
grid(ng) % rmask, &
2104 &
grid(ng) % ZoBot, &
2109 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2117 WRITE (
stdout,30)
'time invariant, bottom roughness '// &
2118 &
'length scale: ZoBot', &
2119 & ng, trim(ncname), fmin, fmax
2127 & lbi, ubi, lbj, ubj, &
2132 & lbi, ubi, lbj, ubj, &
2145 & 0, gtype, vsize, &
2146 & lbi, ubi, lbj, ubj, &
2147 & fscl, fmin, fmax, &
2149 &
grid(ng) % rmask, &
2152 &
grid(ng) % rdrag, &
2157 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2165 WRITE (
stdout,30)
'linear bottom drag coefficient: rdrag', &
2166 & ng, trim(ncname), fmin, fmax
2174 & lbi, ubi, lbj, ubj, &
2179 & lbi, ubi, lbj, ubj, &
2192 & 0, gtype, vsize, &
2193 & lbi, ubi, lbj, ubj, &
2194 & fscl, fmin, fmax, &
2196 &
grid(ng) % rmask, &
2199 &
grid(ng) % rdrag2, &
2202 &
grid(ng) % rdrag2)
2204 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2212 WRITE (
stdout,30)
'quadratic bottom drag coefficient: rdrag2',&
2213 & ng, trim(ncname), fmin, fmax
2221 & lbi, ubi, lbj, ubj, &
2222 &
grid(ng) % rdrag2)
2226 & lbi, ubi, lbj, ubj, &
2229 &
grid(ng) % rdrag2)
2233# if defined UV_WAVEDRAG
2239 &
vname(1,idragw), varid_dragw, &
2240 & 0, gtype, vsize, &
2241 & lbi, ubi, lbj, ubj, &
2242 & fscl, fmin, fmax, &
2244 &
grid(ng) % rmask, &
2246 &
grid(ng) % wavedrag)
2247 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2256 & lbi, ubi, lbj, ubj, &
2257 &
grid(ng) % wavedrag)
2261 & lbi, ubi, lbj, ubj, &
2264 &
grid(ng) % wavedrag)
2273# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
2274 defined opt_observations || defined sensitivity_4dvar || \
2287 IF (
ads(ng)%ncid.eq.-1)
THEN
2290 WRITE (
stdout,10) trim(ncname)
2298 & ncid =
ads(ng)%ncid)
2304 & ncid =
ads(ng)%ncid)
2313 IF ((.not.gotscope(1)).and.(.not.gotscope(4)))
THEN
2314 IF (
master)
WRITE (
stdout,20)
'scope_rho', trim(ncname)
2318 IF ((.not.gotscope(2)).and.(.not.gotscope(5)))
THEN
2323 IF ((.not.gotscope(3)).and.(.not.gotscope(6)))
THEN
2329 IF (gotscope(4))
THEN
2340 SELECT CASE (trim(adjustl(
var_name(i))))
2348 & 0, gtype, vsize, &
2349 & lbi, ubi, lbj, ubj, &
2350 & fscl, fmin, fmax, &
2352 &
grid(ng) % rmask, &
2355 &
grid(ng) % Rscope, &
2358 &
grid(ng) % Rscope)
2360 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2366 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
2367 &
'scope on RHO-points: scope_rho', &
2368 & ng, trim(ncname), fmin, fmax
2376 & lbi, ubi, lbj, ubj, &
2377 &
grid(ng) % Rscope)
2381 & lbi, ubi, lbj, ubj, &
2384 &
grid(ng) % Rscope)
2393 & 0, gtype, vsize, &
2394 & lbi, ubi, lbj, ubj, &
2395 & fscl, fmin, fmax, &
2397 &
grid(ng) % umask, &
2400 &
grid(ng) % Uscope, &
2403 &
grid(ng) % Uscope)
2405 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2411 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
2412 &
'scope on U-points: scope_u', &
2413 & ng, trim(ncname), fmin, fmax
2421 & lbi, ubi, lbj, ubj, &
2422 &
grid(ng) % Uscope)
2426 & lbi, ubi, lbj, ubj, &
2429 &
grid(ng) % Uscope)
2438 & 0, gtype, vsize, &
2439 & lbi, ubi, lbj, ubj, &
2440 & fscl, fmin, fmax, &
2442 &
grid(ng) % vmask, &
2445 &
grid(ng) % Vscope, &
2448 &
grid(ng) % Vscope)
2450 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2456 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
2457 &
'scope on V-points: scope_v', &
2458 & ng, trim(ncname), fmin, fmax
2466 & lbi, ubi, lbj, ubj, &
2467 &
grid(ng) % Vscope)
2471 & lbi, ubi, lbj, ubj, &
2474 &
grid(ng) % Vscope)
2485 10
FORMAT (/,
' GET_GRID_NF90 - unable to open grid NetCDF file: ',a)
2486 20
FORMAT (/,
' GET_GRID_NF90 - unable to find grid variable: ',a, &
2487 & /,12x,
'in grid NetCDF file: ',a)
2488 30
FORMAT (2x,
'GET_GRID_NF90 - ',a,/,22x, &
2489 &
'(Grid = ',i2.2,
', File: ',a,
')',/,22x, &
2490 &
'(Min = ', 1p,e15.8,0p,
' Max = ',1p,e15.8,0p,
')')
2491 40
FORMAT (/,
' GET_GRID_NF90 - error while reading variable: ',a, &
2492 & /,12x,
'in grid NetCDF file: ',a)
2493 50
FORMAT (/,2x,
'GET_GRID_NF90 - Reading adjoint sensitivity', &
2494 &
' scope arrays from file:',/22x,a,/)
2497 60
FORMAT (22x,
'(CheckSum = ',i0,
')')
2507 & LBi, UBi, LBj, UBj)
2512 integer,
intent(in) :: ng, tile, model
2513 integer,
intent(in) :: lbi, ubi, lbj, ubj
2517# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
2518 defined opt_observations || defined sensitivity_4dvar || \
2521 logical :: gotscope(6)
2525 integer :: cr, i, status, vindex
2528 integer(i8b) :: fhash
2531 real(dp),
parameter :: fscl = 1.0_dp
2533 real(r8) :: fmax, fmin
2535 character (len=256) :: ncname
2537 character (len=*),
parameter :: myfile = &
2538 & __FILE__//
", get_grid_pio"
2540 TYPE (io_desc_t),
pointer :: iodesc
2542# if defined UV_DRAG_GRID && !defined ANA_DRAG
2543 TYPE (
my_vardesc) :: piovar_dragl, piovar_dragq, piovar_zobl
2559 IF (
grd(ng)%pioFile%fh.eq.-1)
THEN
2562 WRITE (
stdout,10) trim(ncname)
2570 & piofile =
grd(ng)%pioFile)
2576 & piofile =
grd(ng)%pioFile)
2585 IF (
rcontact(i)%receiver_grid.eq.ng)
THEN
2607 IF (
master)
WRITE (
stdout,20)
'spherical', trim(ncname)
2638# if (defined CURVGRID && defined UV_ADV)
2679# if defined WTYPE_GRID && \
2680 (defined
lmd_skpp || defined solar_source) && \
2683 IF (
master)
WRITE (
stdout,20)
'wtype_grid', trim(ncname)
2691 IF (
master)
WRITE (
stdout,20)
'visc_factor', trim(ncname)
2699 IF (
master)
WRITE (
stdout,20)
'diff_factor', trim(ncname)
2706# if defined UV_DRAG_GRID && !defined ANA_DRAG
2728 piovar_dragl%gtype=
r2dvar
2740 piovar_dragq%gtype=
r2dvar
2751 & piofile =
grd(ng)%pioFile)
2772 SELECT CASE (trim(adjustl(
var_name(i))))
2779 & piofile =
grd(ng)%pioFile)
2787 & piofile =
grd(ng)%pioFile)
2795 IF (kind(
grid(ng)%h).eq.8)
THEN
2796 piovar%dkind=pio_double
2799 piovar%dkind=pio_real
2805 & 0, iodesc, vsize, &
2806 & lbi, ubi, lbj, ubj, &
2807 & fscl, fmin, fmax, &
2809 &
grid(ng) % rmask, &
2817 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2822# ifdef SINGLE_PRECISION
2823 hmin(ng)=real(fmin,dp)
2824 hmax(ng)=real(fmax,dp)
2830 WRITE (
stdout,30)
'bathymetry at RHO-points: h', &
2831 & ng, trim(ncname),
hmin(ng),
hmax(ng)
2841 & lbi, ubi, lbj, ubj, &
2848 & lbi, ubi, lbj, ubj, &
2853 & lbi, ubi, lbj, ubj, &
2865 IF (kind(
grid(ng)%rmask).eq.8)
THEN
2866 piovar%dkind=pio_double
2869 piovar%dkind=pio_real
2875 & 0, iodesc, vsize, &
2876 & lbi, ubi, lbj, ubj, &
2877 & fscl, fmin, fmax, &
2878 &
grid(ng) % rmask, &
2880 &
grid(ng) % rmask, &
2885 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2891 WRITE (
stdout,30)
'mask on RHO-points: mask_rho', &
2892 & ng, trim(ncname), fmin, fmax
2902 & lbi, ubi, lbj, ubj, &
2909 & lbi, ubi, lbj, ubj, &
2914 & lbi, ubi, lbj, ubj, &
2925 IF (kind(
grid(ng)%umask).eq.8)
THEN
2926 piovar%dkind=pio_double
2929 piovar%dkind=pio_real
2935 & 0, iodesc, vsize, &
2936 & lbi, ubi, lbj, ubj, &
2937 & fscl, fmin, fmax, &
2938 &
grid(ng) % umask, &
2940 &
grid(ng) % umask, &
2945 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
2951 WRITE (
stdout,30)
'mask on U-points: mask_u', &
2952 & ng, trim(ncname), fmin, fmax
2962 & lbi, ubi, lbj, ubj, &
2969 & lbi, ubi, lbj, ubj, &
2974 & lbi, ubi, lbj, ubj, &
2985 IF (kind(
grid(ng)%vmask).eq.8)
THEN
2986 piovar%dkind=pio_double
2989 piovar%dkind=pio_real
2995 & 0, iodesc, vsize, &
2996 & lbi, ubi, lbj, ubj, &
2997 & fscl, fmin, fmax, &
2998 &
grid(ng) % vmask, &
3000 &
grid(ng) % vmask, &
3005 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3011 WRITE (
stdout,30)
'mask on V-points: mask_v', &
3012 & ng, trim(ncname), fmin, fmax
3022 & lbi, ubi, lbj, ubj, &
3029 & lbi, ubi, lbj, ubj, &
3034 & lbi, ubi, lbj, ubj, &
3045 IF (kind(
grid(ng)%pmask).eq.8)
THEN
3046 piovar%dkind=pio_double
3049 piovar%dkind=pio_real
3055 & 0, iodesc, vsize, &
3056 & lbi, ubi, lbj, ubj, &
3057 & fscl, fmin, fmax, &
3058 &
grid(ng) % pmask, &
3060 &
grid(ng) % pmask, &
3065 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3071 WRITE (
stdout,30)
'mask on PSI-points: mask_psi', &
3072 & ng, trim(ncname), fmin, fmax
3080 & lbi, ubi, lbj, ubj, &
3085 & lbi, ubi, lbj, ubj, &
3098 IF (kind(
grid(ng)%zice).eq.8)
THEN
3099 piovar%dkind=pio_double
3102 piovar%dkind=pio_real
3108 & 0, iodesc, vsize, &
3109 & lbi, ubi, lbj, ubj, &
3110 & fscl, fmin, fmax, &
3112 &
grid(ng) % rmask, &
3115 &
grid(ng) % zice, &
3120 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3126 WRITE (
stdout,30)
'ice shelf thickness: zice', &
3127 & ng, trim(ncname), fmin, fmax
3135 & lbi, ubi, lbj, ubj, &
3140 & lbi, ubi, lbj, ubj, &
3146# if defined WTYPE_GRID && \
3147 (defined
lmd_skpp || defined solar_source) && \
3155 IF (kind(
grid(ng)%Jwtype).eq.8)
THEN
3156 piovar%dkind=pio_double
3159 piovar%dkind=pio_real
3165 & 0, iodesc, vsize, &
3166 & lbi, ubi, lbj, ubj, &
3167 & fscl, fmin, fmax, &
3169 &
grid(ng) % rmask, &
3177 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3183 WRITE (
stdout,30)
'Jerlov water type: wtype_grid', &
3184 & ng, trim(ncname), fmin, fmax
3192 & lbi, ubi, lbj, ubj, &
3197 & lbi, ubi, lbj, ubj, &
3208 CASE (
'visc_factor')
3212 IF (kind(
mixing(ng)%visc_factor).eq.8)
THEN
3213 piovar%dkind=pio_double
3216 piovar%dkind=pio_real
3222 & 0, iodesc, vsize, &
3223 & lbi, ubi, lbj, ubj, &
3224 & fscl, fmin, fmax, &
3226 &
grid(ng) % rmask, &
3229 &
mixing(ng) % visc_factor, &
3232 &
mixing(ng) % visc_factor)
3234 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3240 WRITE (
stdout,30)
'horizontal viscosity sponge '// &
3241 &
'factor: visc_factor', &
3242 & ng, trim(ncname), fmin, fmax
3250 & lbi, ubi, lbj, ubj, &
3251 &
mixing(ng) % visc_factor)
3255 & lbi, ubi, lbj, ubj, &
3258 &
mixing(ng) % visc_factor)
3267 CASE (
'diff_factor')
3271 IF (kind(
mixing(ng)%diff_factor).eq.8)
THEN
3272 piovar%dkind=pio_double
3275 piovar%dkind=pio_real
3281 & 0, iodesc, vsize, &
3282 & lbi, ubi, lbj, ubj, &
3283 & fscl, fmin, fmax, &
3285 &
grid(ng) % rmask, &
3288 &
mixing(ng) % diff_factor, &
3291 &
mixing(ng) % diff_factor)
3293 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3299 WRITE (
stdout,30)
'horizontal diffusivity sponge '// &
3300 &
'factor: diff_factor', &
3301 & ng, trim(ncname), fmin, fmax
3309 & lbi, ubi, lbj, ubj, &
3310 &
mixing(ng) % diff_factor)
3314 & lbi, ubi, lbj, ubj, &
3317 &
mixing(ng) % diff_factor)
3328 IF (kind(
grid(ng)%f).eq.8)
THEN
3329 piovar%dkind=pio_double
3332 piovar%dkind=pio_real
3338 & 0, iodesc, vsize, &
3339 & lbi, ubi, lbj, ubj, &
3340 & fscl, fmin, fmax, &
3342 &
grid(ng) % rmask, &
3350 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3356 WRITE (
stdout,30)
'Coriolis parameter at RHO-points: f',&
3357 & ng, trim(ncname), fmin, fmax
3367 & lbi, ubi, lbj, ubj, &
3374 & lbi, ubi, lbj, ubj, &
3379 & lbi, ubi, lbj, ubj, &
3391 IF (kind(
grid(ng)%pm).eq.8)
THEN
3392 piovar%dkind=pio_double
3395 piovar%dkind=pio_real
3401 & 0, iodesc, vsize, &
3402 & lbi, ubi, lbj, ubj, &
3403 & fscl, fmin, fmax, &
3405 &
grid(ng) % rmask, &
3413 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3419 WRITE (
stdout,30)
'reciprocal XI-grid spacing: pm', &
3420 & ng, trim(ncname), fmin, fmax
3430 & lbi, ubi, lbj, ubj, &
3437 & lbi, ubi, lbj, ubj, &
3442 & lbi, ubi, lbj, ubj, &
3454 IF (kind(
grid(ng)%pn).eq.8)
THEN
3455 piovar%dkind=pio_double
3458 piovar%dkind=pio_real
3464 & 0, iodesc, vsize, &
3465 & lbi, ubi, lbj, ubj, &
3466 & fscl, fmin, fmax, &
3468 &
grid(ng) % rmask, &
3476 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3482 WRITE (
stdout,30)
'reciprocal ETA-grid spacing: pn', &
3483 & ng, trim(ncname), fmin, fmax
3493 & lbi, ubi, lbj, ubj, &
3500 & lbi, ubi, lbj, ubj, &
3505 & lbi, ubi, lbj, ubj, &
3510# if (defined CURVGRID && defined UV_ADV)
3517 IF (kind(
grid(ng)%dmde).eq.8)
THEN
3518 piovar%dkind=pio_double
3521 piovar%dkind=pio_real
3527 & 0, iodesc, vsize, &
3528 & lbi, ubi, lbj, ubj, &
3529 & fscl, fmin, fmax, &
3531 &
grid(ng) % rmask, &
3534 &
grid(ng) % dmde, &
3539 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3545 WRITE (
stdout,30)
'ETA-derivative of inverse metric '// &
3546 &
'factor pm: dmde', &
3547 & ng, trim(ncname), fmin, fmax
3557 & lbi, ubi, lbj, ubj, &
3564 & lbi, ubi, lbj, ubj, &
3569 & lbi, ubi, lbj, ubj, &
3580 IF (kind(
grid(ng)%dndx).eq.8)
THEN
3581 piovar%dkind=pio_double
3584 piovar%dkind=pio_real
3590 & 0, iodesc, vsize, &
3591 & lbi, ubi, lbj, ubj, &
3592 & fscl, fmin, fmax, &
3594 &
grid(ng) % rmask, &
3597 &
grid(ng) % dndx, &
3602 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3608 WRITE (
stdout,30)
'XI-derivative of inverse metric '// &
3609 &
'factor pn: dndx', &
3610 & ng, trim(ncname), fmin, fmax
3620 & lbi, ubi, lbj, ubj, &
3627 & lbi, ubi, lbj, ubj, &
3632 & lbi, ubi, lbj, ubj, &
3644 IF (kind(
grid(ng)%xp).eq.8)
THEN
3645 piovar%dkind=pio_double
3648 piovar%dkind=pio_real
3654 & 0, iodesc, vsize, &
3655 & lbi, ubi, lbj, ubj, &
3656 & fscl, fmin, fmax, &
3658 &
grid(ng) % pmask, &
3666 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3672 WRITE (
stdout,30)
'x-location of PSI-points: x_psi', &
3673 & ng, trim(ncname), fmin, fmax
3681 & lbi, ubi, lbj, ubj, &
3683 & .false., .false., &
3692 IF (kind(
grid(ng)%yp).eq.8)
THEN
3693 piovar%dkind=pio_double
3696 piovar%dkind=pio_real
3702 & 0, iodesc, vsize, &
3703 & lbi, ubi, lbj, ubj, &
3704 & fscl, fmin, fmax, &
3706 &
grid(ng) % pmask, &
3714 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3720 WRITE (
stdout,30)
'y-location of PSI-points: y-psi', &
3721 & ng, trim(ncname), fmin, fmax
3729 & lbi, ubi, lbj, ubj, &
3731 & .false., .false., &
3740 IF (kind(
grid(ng)%xr).eq.8)
THEN
3741 piovar%dkind=pio_double
3744 piovar%dkind=pio_real
3750 & 0, iodesc, vsize, &
3751 & lbi, ubi, lbj, ubj, &
3752 & fscl, fmin, fmax, &
3754 &
grid(ng) % rmask, &
3762 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3768 WRITE (
stdout,30)
'x-location of RHO-points: x-rho', &
3769 & ng, trim(ncname), fmin, fmax
3780 & lbi, ubi, lbj, ubj, &
3784 & __line__, myfile))
RETURN
3789 & lbi, ubi, lbj, ubj, &
3791 & .false., .false., &
3800 IF (kind(
grid(ng)%yr).eq.8)
THEN
3801 piovar%dkind=pio_double
3804 piovar%dkind=pio_real
3810 & 0, iodesc, vsize, &
3811 & lbi, ubi, lbj, ubj, &
3812 & fscl, fmin, fmax, &
3814 &
grid(ng) % rmask, &
3822 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3828 WRITE (
stdout,30)
'y-location of RHO-points: y_rho', &
3829 & ng, trim(ncname), fmin, fmax
3840 & lbi, ubi, lbj, ubj, &
3844 & __line__, myfile))
RETURN
3849 & lbi, ubi, lbj, ubj, &
3851 & .false., .false., &
3860 IF (kind(
grid(ng)%xu).eq.8)
THEN
3861 piovar%dkind=pio_double
3864 piovar%dkind=pio_real
3870 & 0, iodesc, vsize, &
3871 & lbi, ubi, lbj, ubj, &
3872 & fscl, fmin, fmax, &
3874 &
grid(ng) % umask, &
3882 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3888 WRITE (
stdout,30)
'x-location of U-points: x_u', &
3889 & ng, trim(ncname), fmin, fmax
3900 & lbi, ubi, lbj, ubj, &
3904 & __line__, myfile))
RETURN
3909 & lbi, ubi, lbj, ubj, &
3911 & .false., .false., &
3920 IF (kind(
grid(ng)%yu).eq.8)
THEN
3921 piovar%dkind=pio_double
3924 piovar%dkind=pio_real
3930 & 0, iodesc, vsize, &
3931 & lbi, ubi, lbj, ubj, &
3932 & fscl, fmin, fmax, &
3934 &
grid(ng) % umask, &
3942 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
3948 WRITE (
stdout,30)
'y-location of U-points: y_u', &
3949 & ng, trim(ncname), fmin, fmax
3960 & lbi, ubi, lbj, ubj, &
3964 & __line__, myfile))
RETURN
3969 & lbi, ubi, lbj, ubj, &
3971 & .false., .false., &
3980 IF (kind(
grid(ng)%xv).eq.8)
THEN
3981 piovar%dkind=pio_double
3984 piovar%dkind=pio_real
3990 & 0, iodesc, vsize, &
3991 & lbi, ubi, lbj, ubj, &
3992 & fscl, fmin, fmax, &
3994 &
grid(ng) % vmask, &
4002 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4008 WRITE (
stdout,30)
'x-location of V-points: x_v', &
4009 & ng, trim(ncname), fmin, fmax
4020 & lbi, ubi, lbj, ubj, &
4024 & __line__, myfile))
RETURN
4029 & lbi, ubi, lbj, ubj, &
4031 & .false., .false., &
4040 IF (kind(
grid(ng)%yv).eq.8)
THEN
4041 piovar%dkind=pio_double
4044 piovar%dkind=pio_real
4050 & 0, iodesc, vsize, &
4051 & lbi, ubi, lbj, ubj, &
4052 & fscl, fmin, fmax, &
4054 &
grid(ng) % vmask, &
4062 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4068 WRITE (
stdout,30)
'y-location of V-points: y_v', &
4069 & ng, trim(ncname), fmin, fmax
4080 & lbi, ubi, lbj, ubj, &
4084 & __line__, myfile))
RETURN
4089 & lbi, ubi, lbj, ubj, &
4091 & .false., .false., &
4101 IF (kind(
grid(ng)%lonp).eq.8)
THEN
4102 piovar%dkind=pio_double
4105 piovar%dkind=pio_real
4111 & 0, iodesc, vsize, &
4112 & lbi, ubi, lbj, ubj, &
4113 & fscl, fmin, fmax, &
4115 &
grid(ng) % pmask, &
4118 &
grid(ng) % lonp, &
4123 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4129 WRITE (
stdout,30)
'longitude of PSI-points: lon_psi', &
4130 & ng, trim(ncname), fmin, fmax
4138 & lbi, ubi, lbj, ubj, &
4140 & .false., .false., &
4151 IF (kind(
grid(ng)%latp).eq.8)
THEN
4152 piovar%dkind=pio_double
4155 piovar%dkind=pio_real
4161 & 0, iodesc, vsize, &
4162 & lbi, ubi, lbj, ubj, &
4163 & fscl, fmin, fmax, &
4165 &
grid(ng) % pmask, &
4168 &
grid(ng) % latp, &
4173 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4179 WRITE (
stdout,30)
'latitude of PSI-points lat_psi', &
4180 & ng, trim(ncname), fmin, fmax
4188 & lbi, ubi, lbj, ubj, &
4190 & .false., .false., &
4201 IF (kind(
grid(ng)%lonr).eq.8)
THEN
4202 piovar%dkind=pio_double
4205 piovar%dkind=pio_real
4211 & 0, iodesc, vsize, &
4212 & lbi, ubi, lbj, ubj, &
4215 &
grid(ng) % rmask, &
4218 &
grid(ng) % lonr, &
4223 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4229 WRITE (
stdout,30)
'longitude of RHO-points: lon_rho', &
4230 & ng, trim(ncname), &
4241 & lbi, ubi, lbj, ubj, &
4245 & __line__, myfile))
RETURN
4249 & lbi, ubi, lbj, ubj, &
4251 & .false., .false., &
4262 IF (kind(
grid(ng)%latr).eq.8)
THEN
4263 piovar%dkind=pio_double
4266 piovar%dkind=pio_real
4272 & 0, iodesc, vsize, &
4273 & lbi, ubi, lbj, ubj, &
4276 &
grid(ng) % rmask, &
4279 &
grid(ng) % latr, &
4284 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4290 WRITE (
stdout,30)
'latitude of RHO-points lat_rho', &
4291 & ng, trim(ncname), &
4302 & lbi, ubi, lbj, ubj, &
4306 & __line__, myfile))
RETURN
4310 & lbi, ubi, lbj, ubj, &
4312 & .false., .false., &
4323 IF (kind(
grid(ng)%lonu).eq.8)
THEN
4324 piovar%dkind=pio_double
4327 piovar%dkind=pio_real
4333 & 0, iodesc, vsize, &
4334 & lbi, ubi, lbj, ubj, &
4335 & fscl, fmin, fmax, &
4337 &
grid(ng) % umask, &
4340 &
grid(ng) % lonu, &
4345 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4351 WRITE (
stdout,30)
'longitude of U-points: lon_u', &
4352 & ng, trim(ncname), fmin, fmax
4362 & lbi, ubi, lbj, ubj, &
4366 & __line__, myfile))
RETURN
4370 & lbi, ubi, lbj, ubj, &
4372 & .false., .false., &
4383 IF (kind(
grid(ng)%latu).eq.8)
THEN
4384 piovar%dkind=pio_double
4387 piovar%dkind=pio_real
4393 & 0, iodesc, vsize, &
4394 & lbi, ubi, lbj, ubj, &
4395 & fscl, fmin, fmax, &
4397 &
grid(ng) % umask, &
4400 &
grid(ng) % latu, &
4405 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4411 WRITE (
stdout,30)
'latitude of U-points: lat_u', &
4412 & ng, trim(ncname), fmin, fmax
4422 & lbi, ubi, lbj, ubj, &
4426 & __line__, myfile))
RETURN
4430 & lbi, ubi, lbj, ubj, &
4432 & .false., .false., &
4443 IF (kind(
grid(ng)%lonv).eq.8)
THEN
4444 piovar%dkind=pio_double
4447 piovar%dkind=pio_real
4453 & 0, iodesc, vsize, &
4454 & lbi, ubi, lbj, ubj, &
4455 & fscl, fmin, fmax, &
4457 &
grid(ng) % vmask, &
4460 &
grid(ng) % lonv, &
4465 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4471 WRITE (
stdout,30)
'longitude of V-points: lon_v', &
4472 & ng, trim(ncname), fmin, fmax
4482 & lbi, ubi, lbj, ubj, &
4486 & __line__, myfile))
RETURN
4490 & lbi, ubi, lbj, ubj, &
4492 & .false., .false., &
4503 IF (kind(
grid(ng)%latv).eq.8)
THEN
4504 piovar%dkind=pio_double
4507 piovar%dkind=pio_real
4513 & 0, iodesc, vsize, &
4514 & lbi, ubi, lbj, ubj, &
4515 & fscl, fmin, fmax, &
4517 &
grid(ng) % vmask, &
4520 &
grid(ng) % latv, &
4525 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4531 WRITE (
stdout,30)
'latitude of V-points: lat_v', &
4532 & ng, trim(ncname), fmin, fmax
4542 & lbi, ubi, lbj, ubj, &
4546 & __line__, myfile))
RETURN
4550 & lbi, ubi, lbj, ubj, &
4552 & .false., .false., &
4562 IF (kind(
grid(ng)%angler).eq.8)
THEN
4563 piovar%dkind=pio_double
4566 piovar%dkind=pio_real
4572 & 0, iodesc, vsize, &
4573 & lbi, ubi, lbj, ubj, &
4574 & fscl, fmin, fmax, &
4576 &
grid(ng) % rmask, &
4579 &
grid(ng) % angler, &
4582 &
grid(ng) % angler)
4584 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4590 WRITE (
stdout,30)
'angle between XI-axis and EAST: '// &
4592 & ng, trim(ncname), fmin, fmax
4602 & lbi, ubi, lbj, ubj, &
4604 &
grid(ng) % angler)
4609 & lbi, ubi, lbj, ubj, &
4610 &
grid(ng) % angler)
4614 & lbi, ubi, lbj, ubj, &
4617 &
grid(ng) % angler)
4619# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
4620 defined opt_observations || defined sensitivity_4dvar || \
4629 IF (kind(
grid(ng)%Rscope).eq.8)
THEN
4630 piovar%dkind=pio_double
4633 piovar%dkind=pio_real
4639 & 0, iodesc, vsize, &
4640 & lbi, ubi, lbj, ubj, &
4641 & fscl, fmin, fmax, &
4643 &
grid(ng) % rmask, &
4646 &
grid(ng) % Rscope, &
4649 &
grid(ng) % Rscope)
4651 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4657 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
4658 &
'scope on RHO-points: scope_rho', &
4659 & ng, trim(ncname), fmin, fmax
4668 & lbi, ubi, lbj, ubj, &
4669 &
grid(ng) % Rscope)
4673 & lbi, ubi, lbj, ubj, &
4676 &
grid(ng) % Rscope)
4684 IF (kind(
grid(ng)%Uscope).eq.8)
THEN
4685 piovar%dkind=pio_double
4688 piovar%dkind=pio_real
4694 & 0, iodesc, vsize, &
4695 & lbi, ubi, lbj, ubj, &
4696 & fscl, fmin, fmax, &
4698 &
grid(ng) % umask, &
4701 &
grid(ng) % Uscope, &
4704 &
grid(ng) % Uscope)
4706 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4712 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
4713 &
'scope on U-points: scope_u', &
4714 & ng, trim(ncname), fmin, fmax
4723 & lbi, ubi, lbj, ubj, &
4724 &
grid(ng) % Uscope)
4728 & lbi, ubi, lbj, ubj, &
4731 &
grid(ng) % Uscope)
4739 IF (kind(
grid(ng)%Vscope).eq.8)
THEN
4740 piovar%dkind=pio_double
4743 piovar%dkind=pio_real
4749 & 0, iodesc, vsize, &
4750 & lbi, ubi, lbj, ubj, &
4751 & fscl, fmin, fmax, &
4753 &
grid(ng) % vmask, &
4756 &
grid(ng) % Vscope, &
4759 &
grid(ng) % Vscope)
4761 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4767 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
4768 &
'scope on V-points: scope_v', &
4769 & ng, trim(ncname), fmin, fmax
4778 & lbi, ubi, lbj, ubj, &
4779 &
grid(ng) % Vscope)
4783 & lbi, ubi, lbj, ubj, &
4786 &
grid(ng) % Vscope)
4797# if defined UV_DRAG_GRID && !defined ANA_DRAG
4802 IF (kind(
grid(ng)%ZoBot).eq.8)
THEN
4803 piovar_zobl%dkind=pio_double
4806 piovar_zobl%dkind=pio_real
4812 & 0, iodesc, vsize, &
4813 & lbi, ubi, lbj, ubj, &
4814 & fscl, fmin, fmax, &
4816 &
grid(ng) % rmask, &
4819 &
grid(ng) % ZoBot, &
4824 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4832 WRITE (
stdout,30)
'time invariant, bottom roughness '// &
4833 &
'length scale: ZoBot', &
4834 & ng, trim(ncname), fmin, fmax
4842 & lbi, ubi, lbj, ubj, &
4847 & lbi, ubi, lbj, ubj, &
4857 IF (kind(
grid(ng)%rdrag).eq.8)
THEN
4858 piovar_dragl%dkind=pio_double
4861 piovar_dragl%dkind=pio_real
4867 & 0, iodesc, vsize, &
4868 & lbi, ubi, lbj, ubj, &
4869 & fscl, fmin, fmax, &
4871 &
grid(ng) % rmask, &
4874 &
grid(ng) % rdrag, &
4879 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4887 WRITE (
stdout,30)
'linear bottom drag coefficient: rdrag', &
4888 & ng, trim(ncname), fmin, fmax
4896 & lbi, ubi, lbj, ubj, &
4901 & lbi, ubi, lbj, ubj, &
4911 IF (kind(
grid(ng)%rdrag2).eq.8)
THEN
4912 piovar_dragq%dkind=pio_double
4915 piovar_dragq%dkind=pio_real
4921 & 0, iodesc, vsize, &
4922 & lbi, ubi, lbj, ubj, &
4923 & fscl, fmin, fmax, &
4925 &
grid(ng) % rmask, &
4928 &
grid(ng) % rdrag2, &
4931 &
grid(ng) % rdrag2)
4933 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
4941 WRITE (
stdout,30)
'quadratic bottom drag coefficient: rdrag2',&
4942 & ng, trim(ncname), fmin, fmax
4950 & lbi, ubi, lbj, ubj, &
4951 &
grid(ng) % rdrag2)
4955 & lbi, ubi, lbj, ubj, &
4958 &
grid(ng) % rdrag2)
4968# if defined AD_SENSITIVITY || defined I4DVAR_ANA_SENSITIVITY || \
4969 defined opt_observations || defined sensitivity_4dvar || \
4982 IF (
ads(ng)%pioFile%fh.eq.-1)
THEN
4985 WRITE (
stdout,10) trim(ncname)
4993 & piofile =
ads(ng)%pioFile)
4999 & piofile =
ads(ng)%pioFile)
5008 IF ((.not.gotscope(1)).and.(.not.gotscope(4)))
THEN
5009 IF (
master)
WRITE (
stdout,20)
'scope_rho', trim(ncname)
5013 IF ((.not.gotscope(2)).and.(.not.gotscope(5)))
THEN
5018 IF ((.not.gotscope(3)).and.(.not.gotscope(6)))
THEN
5024 IF (gotscope(4))
THEN
5035 SELECT CASE (trim(adjustl(
var_name(i))))
5042 IF (kind(
grid(ng)%Rscope).eq.8)
THEN
5043 piovar%dkind=pio_double
5046 piovar%dkind=pio_real
5052 & 0, iodesc, vsize, &
5053 & lbi, ubi, lbj, ubj, &
5054 & fscl, fmin, fmax, &
5056 &
grid(ng) % rmask, &
5059 &
grid(ng) % Rscope, &
5062 &
grid(ng) % Rscope)
5064 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
5070 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
5071 &
'scope on RHO-points: scope_rho', &
5072 & ng, trim(ncname), fmin, fmax
5080 & lbi, ubi, lbj, ubj, &
5081 &
grid(ng) % Rscope)
5085 & lbi, ubi, lbj, ubj, &
5088 &
grid(ng) % Rscope)
5096 IF (kind(
grid(ng)%Uscope).eq.8)
THEN
5097 piovar%dkind=pio_double
5100 piovar%dkind=pio_real
5106 & 0, iodesc, vsize, &
5107 & lbi, ubi, lbj, ubj, &
5108 & fscl, fmin, fmax, &
5110 &
grid(ng) % umask, &
5113 &
grid(ng) % Uscope, &
5116 &
grid(ng) % Uscope)
5118 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
5124 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
5125 &
'scope on U-points: scope_u', &
5126 & ng, trim(ncname), fmin, fmax
5134 & lbi, ubi, lbj, ubj, &
5135 &
grid(ng) % Uscope)
5139 & lbi, ubi, lbj, ubj, &
5142 &
grid(ng) % Uscope)
5150 IF (kind(
grid(ng)%Vscope).eq.8)
THEN
5151 piovar%dkind=pio_double
5154 piovar%dkind=pio_real
5160 & 0, iodesc, vsize, &
5161 & lbi, ubi, lbj, ubj, &
5162 & fscl, fmin, fmax, &
5164 &
grid(ng) % vmask, &
5167 &
grid(ng) % Vscope, &
5170 &
grid(ng) % Vscope)
5172 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
5178 WRITE (
stdout,30)
'adjoint sensitivity spatial '// &
5179 &
'scope on V-points: scope_v', &
5180 & ng, trim(ncname), fmin, fmax
5188 & lbi, ubi, lbj, ubj, &
5189 &
grid(ng) % Vscope)
5193 & lbi, ubi, lbj, ubj, &
5196 &
grid(ng) % Vscope)
5207 10
FORMAT (/,
' GET_GRID_PIO - unable to open grid NetCDF file: ',a)
5208 20
FORMAT (/,
' GET_GRID_PIO - unable to find grid variable: ',a, &
5209 & /,16x,
'in grid NetCDF file: ',a)
5210 30
FORMAT (2x,
'GET_GRID_PIO - ',a,/,22x, &
5211 &
'(Grid = ',i2.2,
', File: ',a,
')',/,22x, &
5212 &
'(Min = ', 1p,e15.8,0p,
' Max = ',1p,e15.8,0p,
')')
5213 40
FORMAT (/,
' GET_GRID_PIO - error while reading variable: ',a, &
5214 & /,12x,
'in grid NetCDF file: ',a)
5215 50
FORMAT (/,2x,
'GET_GRID_PIO - Reading adjoint sensitivity', &
5216 &
' scope arrays from file:',/22x,a,/)
5218 60
FORMAT (22x,
'(CheckSum = ',i0,
')')