196 LOGICAL,
PRIVATE :: DEBUG = .false.
199 CHARACTER(LEN=*),
PARAMETER ::
fn_meta =
"ounfmeta.inp"
226 INTEGER :: ifi = 0, & !< Group index to update
229 CHARACTER(LEN=6) :: fldid =
''
262 CHARACTER(LEN=128) :: tmpl
263 CHARACTER(LEN=128),
ALLOCATABLE :: part_text(:)
264 INTEGER(KIND=2) :: np
278 LOGICAL,
PRIVATE :: vector
319 LOGICAL,
INTENT(IN),
OPTIONAL :: VEC
328 IF(
PRESENT(vec)) vector = vec
333 #if defined W3_SMC && defined W3_RTD
343 ALLOCATE(
group(i)%FIELD(j)%META(3))
357 dircom =
'Rotated Pole Grid North'
365 snamep(2) =
'primary swell'
366 snamep(3) =
'secondary swell'
367 snamep(4) =
'tertiary swell'
376 partcom =
"Wind sea and swells defined using topographic " // &
377 "partitions and partition wave-age cut-off " // &
378 "(WWIII default scheme)"
379 ELSE IF (
ptmeth .EQ. 2 )
THEN
380 partcom =
"Wind sea and swells defined using topographic " // &
381 "partitions and spectral wave-age cut-off"
382 ELSE IF (
ptmeth .EQ. 3 )
THEN
383 partcom =
"Wave components defined using topographic " // &
385 ELSE IF (
ptmeth .EQ. 4 )
THEN
386 partcom =
"Wind sea and swell defined using spectral " // &
388 ELSE IF (
ptmeth .EQ. 5 )
THEN
389 WRITE(
partcom,
'("Wave components defined using ",F5.3,' // &
390 '"Hz spectral frequency cutoff")')
ptfcut
402 INQUIRE(
file=trim(
fnmpre)//
"ounfmeta.inp", exist=flgnml)
441 DEALLOCATE(
group(i)%FIELD(j)%META)
443 DEALLOCATE(
group(i)%FIELD)
474 SUBROUTINE next_line(NDMI, BUF, ILINE, EOF, NEW_SECTION)
517 INTEGER,
INTENT(IN) :: NDMI
518 CHARACTER(*),
INTENT(OUT) :: BUF
519 INTEGER,
INTENT(INOUT) :: ILINE
520 LOGICAL,
INTENT(OUT) :: EOF
521 LOGICAL,
INTENT(OUT),
OPTIONAL :: NEW_SECTION
526 CHARACTER(LEN=10) :: TEST
535 READ(ndmi,
'(A)', iostat=ierr, err=101,
end=100) buf
543 IF(trim(buf) ==
'')
THEN
544 IF(debug)
WRITE(*,
'(I5,1X,A20)') iline,
'[blank line]'
548 IF(trim(buf) ==
"$ DEBUG ON")
THEN
549 WRITE(*,
'(I5,1X,A20)') iline,
'[DEBUG ON]'
554 IF(trim(buf) ==
"$ DEBUG OFF")
THEN
555 WRITE(*,
'(I5,1X,A20)') iline,
'[DEBUG OFF]'
564 IF(test(1:1) ==
"$" .OR. trim(buf) ==
'')
THEN
565 IF(debug)
WRITE(*,
'(I5,1X,A20)') iline,
'[comment line]'
570 IF(
PRESENT(new_section))
THEN
573 CASE (
"META",
"TEMPLATE",
"CRS")
576 new_section = .false.
597 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
598 ' ERROR READING METADATA FILE'/ &
599 ' FILENAME = ', a / &
600 ' LINE NO = ', i5 / &
644 CHARACTER(*),
INTENT(INOUT) :: STR
648 INTEGER,
PARAMETER :: ASCII_TAB = 9
655 IF(ichar(str(i:i)) == ascii_tab)
THEN
703 CHARACTER(LEN(STR)) :: ostr
711 i = index(trim(ostr), c)
753 INTEGER :: IERR, I, NDMI
754 CHARACTER(LEN=256) :: BUF
755 TYPE(
meta_t),
POINTER :: PMETA
756 CHARACTER(LEN=32) :: TEST, TESTU
758 INTEGER :: IFI, IFJ, IFC
759 INTEGER :: ILINE, MCNT
766 OPEN(unit=ndmi,
file=trim(fnmpre)//trim(
fn_meta), &
767 status=
"OLD", iostat=ierr)
770 WRITE(ndse, 5010) trim(fnmpre)//trim(
fn_meta), ierr
785 CALL str_to_upper(testu)
786 IF(testu ==
"META")
THEN
789 IF(debug)
WRITE(*,
'(I5,1X,A20,1X,A)') iline,
'[META header]', trim(buf)
792 i = index(buf, trim(test)) + 4
795 WRITE(ndse, 5011) trim(buf(i:)), trim(
fn_meta), iline
800 IF(ifi .EQ. 999)
THEN
806 IF(ifi .LT. 1 .OR. ifi .GT. nogrp)
THEN
807 WRITE(ndse,5013) nogrp, trim(
fn_meta), iline
810 IF(ifj .LT. 1 .OR. ifj .GT. noge(ifi))
THEN
811 WRITE(ndse,5014) noge(ifi), trim(
fn_meta), iline
814 IF(ifc .LT. 1 .OR. ifc .GT. 3)
THEN
815 WRITE(ndse,5015) trim(
fn_meta), iline
820 pmeta =>
group(ifi)%FIELD(ifj)%META(ifc)
825 ELSE IF(testu ==
"TEMPLATE")
THEN
830 ELSE IF(testu ==
"CRS")
THEN
837 WRITE(ndse, 5012) trim(
fn_meta), iline, trim(buf)
846 5000
FORMAT(/
' Read in: ',i3,
' variable metadata entries' / &
847 ' and: ',i3,
' global meta data entries' / &
848 ' and: ',i3,
' CRS meta data entries' /)
850 5010
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
851 ' ERROR OPENING METADATA FILE'/ &
852 ' FILENAME = ', a / &
855 5011
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
856 ' UNKNOWN FIELD ID: ',a / &
857 ' FILENAME = ', a / &
860 5012
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
862 ' FILENAME = ', a / &
866 5013
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
867 ' IFI value should be in range 1,',i2 / &
868 ' FILENAME = ', a / &
872 5014
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
873 ' IFJ value should be in range 1,',i2 / &
874 ' FILENAME = ', a / &
878 5015
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
879 ' IFC value should be in range 1,3' / &
880 ' FILENAME = ', a / &
949 CHARACTER(*),
INTENT(IN) :: BUF
950 INTEGER,
INTENT(IN) :: ILINE
951 INTEGER,
INTENT(OUT) :: IFI, IFJ, IFC
956 CHARACTER(LEN=10) :: FLD, OFLD, OPT
964 READ(buf, *, iostat=ierr) ifi
967 READ(buf, *, iostat=ierr) ifi, ifj, ifc
970 READ(buf, *, iostat=ierr) ifi, ifj
974 READ(buf, *, iostat=ierr) fld, ifc
978 READ(buf, *, iostat=ierr) fld
983 WRITE(ndse, 6000) trim(
fn_meta), iline, trim(buf)
988 CALL str_to_upper(fld)
993 IF(trim(fld) ==
"GLOBAL")
THEN
994 IF(debug)
WRITE(*,
'(6X,A20,1X,A)')
'[GLOBAL meta sec.]', trim(buf)
998 i = index(buf, trim(ofld)) + len_trim(ofld)
999 opt = adjustl(buf(i:))
1000 CALL str_to_upper(opt)
1001 SELECT CASE(trim(opt))
1006 IF(debug)
WRITE(*,
'(6X,A20,1X,A)')
'[GLOBAL meta]',
'Defaults disabled'
1008 WRITE(ndse, *)
"Unknown GLOBAL extra option: [", trim(opt),
"]"
1011 IF(debug)
WRITE(*,
'(6X,A20,1X,A)')
'[Decoding field ID]', trim(buf)
1016 IF(debug)
WRITE(*,
'(6X,A20,1X,I4,2I2)')
'[IFI, IFJ, IFC]', ifi,ifj,ifc
1018 6000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1019 ' SYNTAX ERROR IN SECTION HEADER. ' / &
1020 ' FILENAME = ', a / &
1021 ' LINE NO =', i5 / &
1079 INTEGER,
INTENT(IN) :: NDMI
1080 TYPE(
meta_t),
INTENT(INOUT),
POINTER :: META
1081 INTEGER,
INTENT(INOUT) :: ILINE
1085 CHARACTER(LEN=256) :: BUF
1086 CHARACTER(LEN=128) :: ATTN, ATTV, TMP
1087 CHARACTER(LEN=16) :: ATT_TYPE
1091 TYPE(meta_pair_t) :: EXTRA
1095 CALL next_line(ndmi, buf, iline, eof, new_section=new)
1102 IF(debug)
WRITE(*,
'(I5,1X,A20)') iline,
'[--end of section--]'
1108 IF(debug)
WRITE(*,
'(I5,1X,A20,1X,A)') iline,
'[META pair]', trim(buf)
1113 WRITE(ndse, 7000)
fn_meta, iline, trim(buf)
1117 attn = adjustl(buf(1:i-1))
1118 attv = adjustl(buf(i+1:))
1121 IF(trim(attv) ==
'')
THEN
1126 SELECT CASE(trim(attn))
1130 READ(attv, *, iostat=ierr) meta%VARNM
1133 READ(attv, *, iostat=ierr) meta%ENAME
1135 CASE(
"standard_name",
"varns")
1136 READ(attv, *, iostat=ierr) meta%VARNS
1138 CASE(
"long_name",
"varnl")
1139 READ(attv, *, iostat=ierr) meta%VARNL
1141 CASE(
"globwave_name",
"varng")
1142 READ(attv, *, iostat=ierr) meta%VARNG
1144 CASE(
"direction_reference",
"dir_ref",
"varnd")
1145 READ(attv, *, iostat=ierr) meta%VARND
1147 CASE(
"comment",
"varnc")
1148 READ(attv, *, iostat=ierr) meta%VARNC
1151 READ(attv, *, iostat=ierr) meta%UNITS
1154 CASE(
"valid_min",
"vmin")
1155 READ(attv, *, iostat=ierr) meta%VMIN
1157 CASE(
"valid_max",
"vmax")
1158 READ(attv, *, iostat=ierr) meta%VMAX
1160 CASE(
"scale_factor",
"fsc")
1161 READ(attv, *, iostat=ierr) meta%FSC
1169 WRITE(*,
'(I5,1X,A20,1X,A)') iline,
'[META extra]', &
1170 trim(attn)//
' = '//trim(attv)//
' (type: '//trim(att_type)//
")"
1173 extra%ATTNAME = trim(attn)
1174 extra%ATTVAL = trim(attv)
1175 extra%TYPE = trim(att_type)
1176 CALL meta_list_append(meta%EXTRA, extra)
1181 WRITE(ndse, 7002)
fn_meta, iline, trim(buf)
1189 7000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1190 ' SYNTAX ERROR IN METADATA FILE ' / &
1191 ' SHOULD BE "attr_name = attr_value" ' / &
1192 ' FILENAME = ', a / &
1193 ' LINE NO =', i5 / &
1196 7002
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1197 ' IO ERROR READING ATTRIBUTE' / &
1198 ' FILENAME = ', a / &
1199 ' LINE NO =', i5 / &
1266 CHARACTER(*),
INTENT(IN) :: BUF
1267 INTEGER,
INTENT(IN) :: ILINE
1268 CHARACTER(*),
INTENT(OUT) :: ATTV, ATT_TYPE
1278 READ(buf, *, iostat=ierr) attv, att_type
1279 IF(ierr /= 0)
READ(buf, *, iostat=ierr) attv
1282 SELECT CASE(trim(att_type))
1285 READ(attv, *, iostat=ierr) i
1286 IF(ierr .ne. 0)
then
1287 WRITE(ndse, 8001)
"INTEGER", trim(
fn_meta), iline, trim(attv)
1292 READ(attv, *, iostat=ierr) r
1293 IF(ierr .ne. 0)
THEN
1294 WRITE(ndse, 8001)
"REAL/FLOAT", trim(
fn_meta), iline, trim(attv)
1302 WRITE(ndse, 8002) trim(
fn_meta), iline, trim(buf)
1307 8001
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1308 ' VALUE IS NOT A VALID ', a / &
1309 ' FILENAME = ', a / &
1310 ' LINE NO =', i5 / &
1313 8002
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1314 ' ATTRIBUTE TYPE SHOULD BE ONE OF [c,i,r] '/ &
1315 ' FILENAME = ', a / &
1316 ' LINE NO =', i5 / &
1374 INTEGER,
INTENT(IN) :: NDMI
1375 INTEGER,
INTENT(INOUT) :: ILINE
1376 TYPE(meta_list_t),
INTENT(INOUT) :: METALIST
1381 CHARACTER(LEN=256) :: BUF
1382 CHARACTER(LEN=128) :: ATTN, ATTV, TMP
1383 CHARACTER(LEN=16) :: ATT_TYPE
1387 TYPE(meta_pair_t) :: META
1391 CALL next_line(ndmi, buf, iline, eof, new_section=new)
1398 IF(debug)
WRITE(*,
'(I5,1X,A20)') iline,
'[--end of section--]'
1407 WRITE(ndse, 9000) trim(
fn_meta), iline, trim(buf)
1411 attn = adjustl(buf(1:i-1))
1412 tmp = adjustl(buf(i+1:))
1418 WRITE(*,
'(I5,1X,A20,1X,A)') iline,
'[FREEFORM meta]', &
1419 trim(attn)//
' = '//trim(attv)//
' (type: '//trim(att_type)//
")"
1423 meta%ATTNAME = trim(attn)
1424 meta%ATTVAL = trim(attv)
1425 meta%TYPE = trim(att_type)
1427 CALL meta_list_append(metalist, meta)
1431 9000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1432 ' SYNTAX ERROR IN METADATA FILE ' / &
1433 ' SHOULD BE "attr_name = attr_value" ' / &
1434 ' FILENAME = ', a / &
1435 ' LINE NO =', i5 / &
1479 INTEGER,
INTENT(IN) :: NDMI
1480 INTEGER,
INTENT(INOUT) :: ILINE
1485 CHARACTER(LEN=128) :: BUF, PREV_NAME
1491 READ(ndmi,
'(A)') buf
1495 WRITE(ndse,2000) trim(
fn_meta), iline, trim(buf)
1498 IF(debug)
WRITE(*,
'(I5,1X,A20,1X,A)') iline,
'[CRS id]', trim(
crs_name)
1502 WRITE(ndse,1001) trim(prev_name)
1505 WRITE(ndse,1002) trim(prev_name)
1507 WRITE(ndse,2000) trim(
fn_meta), iline, trim(buf)
1514 IF(.NOT. meta_list_has_attr(
crs_meta,
"grid_mapping_name"))
THEN
1516 WRITE(ndse, 2000) trim(
fn_meta), iline,
""
1522 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1523 ' ERROR READING CRS HEADER - MISSING CRS NAME?' )
1525 1001
FORMAT (/
' *** WARNING : USER DEFINED CRS SECTION WILL ' / &
1526 ' OVERIDE DEFAULT CRS DEFINITION FOR GRID' / &
1529 1002
FORMAT (/
' *** WARNING : DUPLICATE CRS SECTION WILL ' / &
1530 ' OVERRIDE PREVIOUS CRS DEFINITION' / &
1533 1003
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1534 ' CRS SECTION DOES NOT CONTAIN MANDATORY '/ &
1535 ' ATTRIBUTE "grid_mapping_name"' )
1537 2000
FORMAT (
' FILENAME = ', a / &
1538 ' LINE NO = ', i5 / &
1560 TYPE(meta_pair_t) :: META
1567 'grid_mapping_name',
'rotated_latitude_longitude')
1569 'grid_north_pole_latitude', polat)
1571 'grid_north_pole_longitude', polon)
1574 ELSE IF(gtype .EQ. ungtype)
THEN
1580 'grid_mapping_name',
'latitude_longitude')
1583 'semi_major_axis', 6371000.0)
1585 'inverse_flattening', 0.0)
1609 FUNCTION getmeta(IFI, IFJ, ICOMP, IPART)
RESULT(META)
1645 INTEGER,
INTENT(IN) :: ifi, ifj
1646 INTEGER,
INTENT(IN),
OPTIONAL :: icomp, ipart
1656 IF(
PRESENT(icomp)) ifc = icomp
1657 IF(
PRESENT(ipart)) ifp = ipart
1660 IF(ifi .LT. 1 .OR. ifi .GT. nogrp)
THEN
1661 WRITE(ndse,1000) nogrp
1664 IF(ifj .LT. 1 .OR. ifj .GT. noge(ifi))
THEN
1665 WRITE(ndse,1001) noge(ifi)
1668 IF(ifc .LT. 1 .OR. ifc .GT. 3)
THEN
1682 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
1683 ' GETMETA: IFI value should be in range 1,',i2 / )
1685 1001
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
1686 ' GETMETA: IFJ value should be in range 1,',i2 / )
1688 1002
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
1689 ' GETMETA: IFC value should be in range 1,3' / )
1755 INTEGER,
INTENT(IN) :: NDMI
1756 INTEGER,
INTENT(INOUT) :: ILINE
1761 CHARACTER(LEN=256) :: BUF, ID
1767 READ(ndmi,
'(A)') buf
1768 READ(buf, *, iostat=ierr) id, id
1770 WRITE(ndse, 1000)
fn_meta, iline, buf
1773 id =
"<" // trim(id) //
">"
1775 IF(debug)
WRITE(*,
'(I5,1X,A20,1X,A)') iline,
'[template id]', trim(id)
1781 DO WHILE(
ASSOCIATED(p%NEXT))
1793 ALLOCATE(p%PART_TEXT(0:noswll))
1798 CALL next_line(ndmi, buf, iline, eof, new_section=new)
1806 IF(debug)
WRITE(*,
'(I5,1X,A20)') iline,
'[--end of section--]'
1813 IF(p%NP .GT. noswll)
THEN
1814 WRITE(*,*)
"Too many partition entries (NOSWLL=",noswll,
"). Ignoring"
1820 WRITE(*,
'(I5,1X,A20,1X,I1,1X,A)') iline,
'[part template]', &
1824 p%PART_TEXT(p%NP) = trim(adjustl(buf))
1830 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : '/ &
1831 ' ERROR READING PART HEADER - MISSING TEMPLATE ID?'/ &
1832 ' FILENAME = ', a / &
1833 ' LINE NO =', i5 / &
1868 print*,
'=============='
1870 print*,
'Empty partition list'
1878 print*,
' - ',i,trim(p%PART_TEXT(i))
1880 IF(.NOT.
ASSOCIATED(p%NEXT))
EXIT
1883 print*,
'=============='
1930 TYPE(
meta_t),
INTENT(INOUT) :: META
1931 INTEGER,
INTENT(IN) :: IPART
1936 CHARACTER(LEN=80) :: TMP
1938 TYPE(meta_pair_t),
POINTER :: P
1947 IF(meta%EXTRA%N .GT. 0)
THEN
1948 p => meta%EXTRA%HEAD
1951 IF(p%TYPE .EQ.
"c")
THEN
1954 IF(.NOT.
ASSOCIATED(p%NEXT))
EXIT
2011 CHARACTER(LEN=*),
INTENT(INOUT) :: INSTR
2012 INTEGER,
INTENT(IN) :: IPART
2017 INTEGER :: I, J, ISN
2019 CHARACTER(LEN=512) :: TMPL
2022 IF(ptmeth .LE. 3)
THEN
2023 IF (isn .GT. 5) isn = 5
2025 IF (isn .GT. 2) isn = 2
2032 WRITE(tmpl,
'(A,I1,A)') instr(1:i-1), ipart, instr(j:len(instr))
2041 instr = instr(1:i-1) // trim(
snamep(isn)) // instr(j:len(instr))
2050 // instr(j:len(instr))
2058 i = index(instr, trim(p%TMPL))
2059 j = i + len_trim(p%TMPL)
2062 IF(ipart .GE. p%NP)
THEN
2063 WRITE(ndse, 1000) trim(p%TMPL), p%NP, ipart
2066 instr = instr(1:i-1) // trim(p%PART_TEXT(ipart)) // instr(j:len(instr))
2070 i = len_trim(p%TMPL)
2071 tmpl = p%TMPL(1:i-1) //
"_>"
2072 i = index(instr, trim(tmpl))
2073 j = i + len_trim(tmpl)
2075 instr = instr(1:i-1) // trim(
replace_char(p%PART_TEXT(ipart),
" ",
"_")) &
2076 // instr(j:len(instr))
2079 IF(.NOT.
ASSOCIATED(p%NEXT))
EXIT
2085 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
2086 ' NOT ENOUGH USER DEFINED ENTRIES FOR TEMPLATE' / &
2087 ' TEMPLATE ID : ',a / &
2088 ' NUM ENTRIES : ',i2 / &
2089 ' REQESTED IPART* : ',i2 / &
2090 ' (*Note: IPART is zero-refernced)' / &
2091 ' Please update your ounfmeta.inp file.' /)
2114 SUBROUTINE write_meta(NCID, VARID, META, ERR)
2144 INTEGER,
INTENT(IN) :: NCID, VARID
2145 TYPE(
meta_t),
INTENT(IN) :: META
2146 INTEGER,
INTENT(OUT) :: ERR
2151 INTEGER :: IVAL, VAL
2154 err = nf90_put_att(ncid, varid,
'long_name', meta%VARNL)
2155 IF(err /= nf90_noerr)
RETURN
2157 IF(meta%VARNS .NE.
'' .AND. meta%VARNS .NE. unsetc)
THEN
2158 err = nf90_put_att(ncid, varid,
'standard_name', meta%VARNS)
2159 IF(err /= nf90_noerr)
RETURN
2162 IF(meta%VARNG .NE.
'' .AND. meta%VARNG .NE. unsetc)
THEN
2163 err = nf90_put_att(ncid, varid,
'globwave_name', meta%VARNG)
2164 IF(err /= nf90_noerr)
RETURN
2167 err = nf90_put_att(ncid, varid,
'units', meta%UNITS)
2168 IF(err /= nf90_noerr)
RETURN
2172 err = nf90_put_att(ncid, varid,
'_FillValue', nf90_fill_short)
2174 err = nf90_put_att(ncid, varid,
'_FillValue', nf90_fill_float)
2176 IF(err /= nf90_noerr)
RETURN
2178 err = nf90_put_att(ncid, varid,
'scale_factor', meta%FSC)
2179 IF(err /= nf90_noerr)
RETURN
2181 err = nf90_put_att(ncid, varid,
'add_offset', 0.)
2182 IF(err /= nf90_noerr)
RETURN
2189 val = nint(meta%VMIN / meta%FSC)
2190 err = nf90_put_att(ncid, varid,
'valid_min', val)
2191 IF(err /= nf90_noerr)
RETURN
2193 val = nint(meta%VMAX / meta%FSC)
2194 err = nf90_put_att(ncid, varid,
'valid_max', val)
2195 IF(err /= nf90_noerr)
RETURN
2197 err = nf90_put_att(ncid, varid,
'valid_min', meta%VMIN)
2198 IF(err /= nf90_noerr)
RETURN
2200 err = nf90_put_att(ncid, varid,
'valid_max', meta%VMAX)
2201 IF(err /= nf90_noerr)
RETURN
2204 IF(meta%VARNC .NE.
'' .AND. meta%VARNC .NE. unsetc)
THEN
2205 err = nf90_put_att(ncid, varid,
'comment', meta%VARNC)
2206 IF(err /= nf90_noerr)
RETURN
2209 IF(meta%VARND .NE.
'' .AND. meta%VARND .NE. unsetc)
THEN
2210 err = nf90_put_att(ncid, varid,
'direction_reference', meta%VARND)
2211 IF(err /= nf90_noerr)
RETURN
2215 err = nf90_put_att(ncid, varid,
'grid_mapping',
crs_name)
2216 IF(err /= nf90_noerr)
RETURN
2220 err = nf90_put_att(ncid, varid,
'coordinates', adjustl(
coords_attr))
2221 IF(err /= nf90_noerr)
RETURN
2224 IF (meta%EXTRA%N .GT. 0)
THEN
2226 IF(err /= nf90_noerr)
RETURN
2273 INTEGER,
INTENT(IN) :: NCID
2274 INTEGER,
INTENT(OUT) :: ERR
2322 INTEGER,
INTENT(IN) :: NCID, VARID
2323 TYPE(meta_list_t),
INTENT(IN) :: METALIST
2324 INTEGER,
INTENT(OUT) :: ERR
2331 TYPE(meta_pair_t),
POINTER :: P
2333 IF(metalist%N .EQ. 0)
RETURN
2340 IF (p%ATTNAME .EQ.
'' .OR. &
2341 p%ATTNAME .EQ. unsetc) cycle
2346 READ(p%ATTVAL, *) ival
2347 err = nf90_put_att(ncid, varid, p%ATTNAME, ival)
2348 IF(err /= nf90_noerr)
RETURN
2351 READ(p%ATTVAL, *) rval
2352 err = nf90_put_att(ncid, varid, p%ATTNAME, rval)
2353 IF(err /= nf90_noerr)
RETURN
2356 err = nf90_put_att(ncid, varid, p%ATTNAME, &
2358 IF(err /= nf90_noerr)
RETURN
2361 WRITE(ndse,1000) p%TYPE
2365 IF(.NOT.
ASSOCIATED(p%NEXT))
EXIT
2369 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUNFMETA : ' / &
2370 ' WRITE_FREEFORM_META: Unknown attribute' / &
2371 ' data type: ', a1 / )
2408 TYPE(
meta_t),
INTENT(IN) :: META
2412 TYPE(meta_pair_t),
POINTER :: P
2414 WRITE(*,*) meta%VARNM
2415 WRITE(*,
"(A20,':',1X,A)")
"Standard name", trim(meta%VARNS)
2416 WRITE(*,
"(A20,':',1X,A)")
"Long name", trim(meta%VARNL)
2417 WRITE(*,
"(A20,':',1X,A)")
"Units", trim(meta%UNITS)
2418 WRITE(*,
"(A20,':',1X,A)")
"GLOBWAVE name", trim(meta%VARNG)
2419 WRITE(*,
"(A20,':',1X,A)")
"Direction conv", trim(meta%VARND)
2420 WRITE(*,
"(A20,':',1X,A)")
"Comment", trim(meta%VARNC)
2421 WRITE(*,
"(A20,':',1X,2F12.3)")
"Min/Max", meta%VMIN, meta%VMAX
2422 IF(meta%EXTRA%N .GT. 0)
THEN
2423 p => meta%EXTRA%HEAD
2425 WRITE(*,
"(A20,':',1X,A)") trim(p%ATTNAME), trim(p%ATTVAL)
2426 IF(.NOT.
ASSOCIATED(p%NEXT))
EXIT
2474 TYPE(
meta_t),
INTENT(IN) :: meta
2481 copy%EXTRA = copy_meta_list(meta%EXTRA)
2528 TYPE(
meta_t),
POINTER :: META(:)
2533 meta =>
group(1)%FIELD(1)%META
2536 meta(1)%ENAME =
'.dpt'
2537 meta(1)%VARNM =
'dpt'
2538 meta(1)%VARNL =
'depth'
2539 meta(1)%VARNS =
'depth'
2540 meta(1)%VARNG =
'depth'
2543 meta(1)%VMIN = -45000
2544 meta(1)%VMAX = 70000
2546 meta =>
group(1)%FIELD(2)%META
2547 meta(1)%ENAME =
'.cur'
2551 meta(1)%UNITS =
'm s-1'
2554 meta(1)%VARNM=
'ucur'
2555 meta(1)%VARNL=
'eastward current'
2556 meta(1)%VARNS=
'eastward_sea_water_velocity'
2557 meta(1)%VARNG=
'eastward_sea_water_velocity'
2558 meta(1)%VARNC=
'cur=sqrt(U**2+V**2)'
2562 meta(2)%VARNM=
'vcur'
2563 meta(2)%VARNL=
'northward current'
2564 meta(2)%VARNS=
'northward_sea_water_velocity'
2565 meta(2)%VARNG=
'northward_sea_water_velocity'
2566 meta(2)%VARNC=
'cur=sqrt(U**2+V**2)'
2569 meta(1)%UNITS =
'm s-1'
2572 meta(1)%VARNM=
'cspd'
2573 meta(1)%VARNL=
'current speed'
2574 meta(1)%VARNS=
'sea_water_speed'
2575 meta(1)%VARNG=
'sea_water_speed'
2580 meta(2)%VARNM=
'cdir'
2581 meta(2)%UNITS=
'degrees'
2582 meta(2)%VARNL=
'current direction (toward)'
2583 meta(2)%VARNS=
'direction_of_sea_water_velocity'
2584 meta(2)%VARNG=
'direction_of_sea_water_velocity'
2586 meta(2)%VMAX = 360.0
2589 meta =>
group(1)%FIELD(3)%META
2590 meta(1)%ENAME =
'.wnd'
2594 meta(1)%UNITS =
'm s-1'
2595 meta(1)%VARNM=
'uwnd'
2596 meta(1)%VARNL=
'eastward_wind'
2597 meta(1)%VARNS=
'eastward_wind'
2598 meta(1)%VARNG=
'eastward_wind'
2599 meta(1)%VARNC=
'wind=sqrt(U10**2+V10**2)'
2600 meta(1)%VMIN = -99.0
2605 meta(2)%VARNM=
'vwnd'
2606 meta(2)%VARNL=
'northward_wind'
2607 meta(2)%VARNS=
'northward_wind'
2608 meta(2)%VARNG=
'northward_wind'
2609 meta(2)%VARNC=
'wind=sqrt(U10**2+V10**2)'
2612 meta(1)%UNITS=
'm s-1'
2613 meta(1)%VARNM=
'wspd'
2614 meta(1)%VARNL=
'wind speed'
2615 meta(1)%VARNS=
'wind_speed'
2616 meta(1)%VARNG=
'wind_speed'
2618 meta(1)%VMAX = 100.0
2623 meta(2)%VARNM=
'wdir'
2624 meta(2)%UNITS=
'degrees'
2625 meta(2)%VARNL=
'wind direction (from)'
2626 meta(2)%VARNS=
'wind_from_direction'
2627 meta(2)%VARNG=
'wind_from_direction'
2629 meta(2)%VMAX = 360.0
2632 meta =>
group(1)%FIELD(4)%META
2634 meta(1)%ENAME =
'.ast'
2637 meta(1)%VARNL=
'air sea temperature difference'
2640 meta(1)%VARNG=
'air_sea_temperature_difference'
2641 meta(1)%VMIN = -200.0
2642 meta(1)%VMAX = 200.0
2644 meta =>
group(1)%FIELD(5)%META
2647 meta(1)%ENAME =
'.wlv'
2649 meta(1)%VARNL=
'sea surface height above sea level'
2650 meta(1)%VARNS=
'sea_surface_height_above_mean_sea_level'
2651 meta(1)%VARNG=
'sea_surface_height_above_sea_level'
2655 meta =>
group(1)%FIELD(6)%META
2658 meta(1)%ENAME =
'.ice'
2660 meta(1)%VARNL=
'sea ice area fraction'
2661 meta(1)%VARNS=
'sea_ice_area_fraction'
2662 meta(1)%VARNG=
'sea_ice_area_fraction'
2666 meta =>
group(1)%FIELD(7)%META
2667 meta(1)%FSC = 0.0001
2668 meta(1)%UNITS =
'km-1'
2669 meta(1)%ENAME =
'.ibg'
2671 meta(1)%VARNL=
'icebergs_damping'
2674 meta(1)%VARNG=
'icebergs_damping'
2678 meta =>
group(1)%FIELD(8)%META
2680 meta(1)%UNITS =
'Pa'
2681 meta(1)%ENAME =
'.taua'
2682 meta(1)%VARNM=
'utaua'
2683 meta(1)%VARNL=
'surface_downward_eastward_stress'
2684 meta(1)%VARNS=
'surface_downward_eastward_stress'
2685 meta(1)%VARNG=
'surface_downward_eastward_stress'
2686 meta(2)%VARNC=
'taua=sqrt(utaua**2+vtaua**2)'
2693 meta(2)%VARNM=
'vtaua'
2694 meta(2)%VARNL=
'surface_downward_northward_stress'
2695 meta(2)%VARNS=
'surface_downward_northward_stress'
2696 meta(2)%VARNG=
'surface_downward_northward_stress'
2697 meta(2)%VARNC=
'taua=sqrt(utaua**2+vtaua**2)'
2699 meta =>
group(1)%FIELD(9)%META
2700 meta(1)%FSC = 0.0001
2701 meta(1)%UNITS =
'kg m-3'
2702 meta(1)%ENAME =
'.rhoa'
2703 meta(1)%VARNM=
'rhoa'
2704 meta(1)%VARNL=
'air_density'
2705 meta(1)%VARNS=
'air_density'
2706 meta(1)%VARNG=
'air_density'
2711 meta =>
group(1)%FIELD(10)%META
2713 meta(1)%UNITS =
'Krumbein phi scale'
2714 meta(1)%ENAME =
'.d50'
2716 meta(1)%VARNL=
'grain_size'
2719 meta(1)%VARNG=
'sediment_grain_size'
2720 meta(1)%VMIN = -10.0
2725 meta =>
group(1)%FIELD(11)%META
2728 meta(1)%ENAME =
'.ic1'
2730 meta(1)%VARNL=
'ice thickness'
2731 meta(1)%VARNS=
'sea_ice_thickness'
2732 meta(1)%VARNG=
'ice_thickness'
2736 meta =>
group(1)%FIELD(12)%META
2739 meta(1)%ENAME =
'.ic5'
2741 meta(1)%VARNL=
'maximum floe diameter'
2744 meta(1)%VARNG=
'maximum_ice_floe_diameter'
2752 meta =>
group(2)%FIELD(1)%META
2755 meta(1)%ENAME =
'.hs'
2757 meta(1)%VARNL=
'significant height of wind and swell waves'
2758 meta(1)%VARNS=
'sea_surface_wave_significant_height'
2759 meta(1)%VARNG=
'significant_wave_height'
2763 meta =>
group(2)%FIELD(2)%META
2766 meta(1)%ENAME =
'.lm'
2768 meta(1)%VARNL=
'mean wave length'
2771 meta(1)%VARNG=
'mean_wave_length'
2775 meta =>
group(2)%FIELD(3)%META
2778 meta(1)%ENAME =
'.t02'
2780 meta(1)%VARNL=
'mean period T02'
2781 meta(1)%VARNS=
'sea_surface_wind_wave_mean_period' // &
2782 '_from_variance_spectral_density_second_frequency_moment'
2783 meta(1)%VARNG=
'mean_period_t02'
2787 meta =>
group(2)%FIELD(4)%META
2790 meta(1)%ENAME =
'.t0m1'
2791 meta(1)%VARNM=
't0m1'
2792 meta(1)%VARNL=
'mean period T0m1'
2793 meta(1)%VARNS=
'sea_surface_wind_wave_mean_period_from_variance' // &
2794 '_spectral_density_inverse_frequency_moment'
2795 meta(1)%VARNG=
'mean_period_t0m1'
2799 meta =>
group(2)%FIELD(5)%META
2802 meta(1)%ENAME =
'.t01'
2804 meta(1)%VARNL=
'mean period T01'
2805 meta(1)%VARNS=
'sea_surface_wind_wave_mean_period_from_variance' // &
2806 '_spectral_density_first_frequency_moment'
2807 meta(1)%VARNG=
'mean_period_t01'
2811 meta =>
group(2)%FIELD(6)%META
2813 meta(1)%UNITS =
's-1'
2814 meta(1)%ENAME =
'.fp'
2816 meta(1)%VARNL=
'wave peak frequency'
2819 meta(1)%VARNG=
'dominant_wave_frequency'
2823 meta =>
group(2)%FIELD(7)%META
2825 meta(1)%UNITS =
'degree'
2826 meta(1)%ENAME =
'.dir'
2828 meta(1)%VARNL=
'wave mean direction'
2829 meta(1)%VARNS=
'sea_surface_wave_from_direction'
2830 meta(1)%VARNG=
'wave_from_direction'
2835 meta =>
group(2)%FIELD(8)%META
2837 meta(1)%UNITS =
'degree'
2838 meta(1)%ENAME =
'.spr'
2840 meta(1)%VARNL=
'directional spread'
2841 meta(1)%VARNS=
'sea_surface_wave_directional_spread'
2842 meta(1)%VARNG=
'directional_spread'
2846 meta =>
group(2)%FIELD(9)%META
2848 meta(1)%UNITS =
'degree'
2849 meta(1)%ENAME =
'.dp'
2851 meta(1)%VARNL=
'peak direction'
2852 meta(1)%VARNS=
'sea_surface_wave_peak_direction'
2853 meta(1)%VARNG=
'dominant_wave_direction'
2858 meta =>
group(2)%FIELD(10)%META
2859 meta(1)%FSC = 0.0002
2861 meta(1)%ENAME =
'.hig'
2863 meta(1)%VARNL=
'infragravity_wave_height'
2866 meta(1)%VARNG=
'infragravity_significant_wave_height'
2870 meta =>
group(2)%FIELD(11)%META
2873 meta(1)%ENAME =
'.mxe'
2874 meta(1)%VARNM=
'stmaxe'
2875 meta(1)%VARNL=
'expected maximum sea surface elevation (nonlinear,2nd order)'
2878 meta(1)%VARNG=
'expected maximum sea surface elevation (nonlinear,2nd order)'
2882 meta =>
group(2)%FIELD(12)%META
2885 meta(1)%ENAME =
'.mxes'
2886 meta(1)%VARNM=
'stmaxd'
2887 meta(1)%VARNL=
'standard deviation of maximum sea surface elevation (nonlinear,2nd order)'
2890 meta(1)%VARNG=
'standard deviation of maximum sea surface elevation (nonlinear,2nd order)'
2894 meta =>
group(2)%FIELD(13)%META
2897 meta(1)%ENAME =
'.mxh'
2898 meta(1)%VARNM=
'hmaxe'
2899 meta(1)%VARNL=
'expected maximum wave height (linear, 1st order)'
2902 meta(1)%VARNG=
'expected maximum wave height (linear, 1st order)'
2906 meta =>
group(2)%FIELD(14)%META
2909 meta(1)%ENAME =
'.mxhc'
2910 meta(1)%VARNM=
'hcmaxe'
2911 meta(1)%VARNL=
'expected maximum wave height from crest (linear, 1st order)'
2914 meta(1)%VARNG=
'expected maximum wave height from crest (linear, 1st order)'
2918 meta =>
group(2)%FIELD(15)%META
2921 meta(1)%ENAME =
'.sdmh'
2922 meta(1)%VARNM=
'hmaxd'
2923 meta(1)%VARNL=
'STD of maximum wave height (linear, 1st order)'
2926 meta(1)%VARNG=
'STD of maximum wave height (linear, 1st order)'
2930 meta =>
group(2)%FIELD(16)%META
2933 meta(1)%ENAME =
'.sdmhc'
2934 meta(1)%VARNM=
'hcmaxd'
2935 meta(1)%VARNL=
'STD of maximum wave height from crest (linear, 1st order)'
2938 meta(1)%VARNG=
'STD of maximum wave height from crest (linear, 1st order)'
2942 meta =>
group(2)%FIELD(17)%META
2945 meta(1)%ENAME =
'.wbt'
2947 meta(1)%VARNL=
'dominant wave breaking probability'
2950 meta(1)%VARNG=
'dominant_wave_breaking_probability'
2954 meta =>
group(2)%FIELD(18)%META
2957 meta(1)%ENAME =
'.tp'
2959 meta(1)%VARNL=
'wave peak period'
2960 meta(1)%VARNS=
'sea_surface_wave_peak_period'
2961 meta(1)%VARNG=
'dominant_wave_period'
2965 meta =>
group(2)%FIELD(19)%META
2967 meta(1)%UNITS =
'm-1'
2968 meta(1)%ENAME =
'.wnm'
2970 meta(1)%VARNL=
'mean wave number'
2979 meta =>
group(3)%FIELD(1)%META
2981 meta(1)%VARNL=
'wave_elevation_spectrum'
2982 meta(1)%VARNS=
'sea_surface_wave_variance_spectral_density'
2984 meta(1)%UNITS =
'log10(m2 s+1E-12)'
2986 meta(1)%VARNC=
'base_ten_logarithm'
2987 meta(1)%FSC = 0.0004
2991 meta(1)%UNITS =
'm2 s'
2994 meta(1)%VMAX = 1.e12
2996 meta(1)%ENAME =
'.ef'
2997 meta(1)%VARNG = meta(1)%VARNS
2999 meta =>
group(3)%FIELD(2)%META
3002 meta(1)%VARNM=
'th1m'
3003 meta(1)%VARNL=
'mean wave direction frequency spectrum'
3006 meta(1)%VARNG = meta(1)%VARNS
3008 meta(1)%UNITS =
'degree'
3009 meta(1)%ENAME =
'.th1m'
3013 meta =>
group(3)%FIELD(3)%META
3016 meta(1)%VARNM=
'sth1m'
3017 meta(1)%VARNL=
'spreading frequency spectrum'
3020 meta(1)%VARNG = meta(1)%VARNS
3021 meta(1)%UNITS =
'degree'
3022 meta(1)%ENAME =
'.sth1m'
3026 meta =>
group(3)%FIELD(4)%META
3028 meta(1)%VARNM=
'th2m'
3029 meta(1)%VARNL=
'second mean wave direction frequency spectrum'
3032 meta(1)%VARNG = meta(1)%VARNS
3034 meta(1)%UNITS =
'degree'
3035 meta(1)%ENAME =
'.th2m'
3039 meta =>
group(3)%FIELD(5)%META
3041 meta(1)%VARNM=
'sth2m'
3042 meta(1)%VARNL=
'second spreading frequency spectrum'
3045 meta(1)%VARNG = meta(1)%VARNS
3046 meta(1)%UNITS =
'degree'
3047 meta(1)%ENAME =
'.sth2m'
3051 meta =>
group(3)%FIELD(6)%META
3054 meta(1)%UNITS =
'm-1'
3055 meta(1)%ENAME =
'.wn'
3057 meta(1)%VARNL=
'wave numbers'
3060 meta(1)%VARNG=
'wave_numbers'
3067 meta =>
group(4)%FIELD(1)%META
3072 meta(1)%VARNL =
'wave significant height partition '//
ipart_token
3073 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_significant_height'
3074 meta(1)%VARNG =
'significant_wave_height_partition_'//
ipart_token
3079 meta =>
group(4)%FIELD(2)%META
3084 meta(1)%VARNL =
'peak period partition '//
ipart_token
3085 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_period_at_variance' // &
3086 '_spectral_density_maximum'
3087 meta(1)%VARNG =
'dominant_wave_period_partition_'//
ipart_token
3092 meta =>
group(4)%FIELD(3)%META
3097 meta(1)%VARNL =
'peak wave length partition '//
ipart_token
3100 meta(1)%VARNG =
'peak_wave_length_partition_'//
ipart_token
3103 meta(1)%VMAX = 10000
3105 meta =>
group(4)%FIELD(4)%META
3107 meta(1)%UNITS =
'degree'
3110 meta(1)%VARNL =
'wave mean direction partition '//
ipart_token
3111 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_from_direction'
3112 meta(1)%VARNG =
'wave_from_direction_partition_'//
ipart_token
3118 meta =>
group(4)%FIELD(5)%META
3120 meta(1)%UNITS =
'degree'
3123 meta(1)%VARNL =
'directional spread partition '//
ipart_token
3124 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_diectional_spread'
3125 meta(1)%VARNG =
'directional_spread_partition_'//
ipart_token
3130 meta =>
group(4)%FIELD(6)%META
3135 meta(1)%VARNL =
'wind sea fraction in partition '//
ipart_token
3138 meta(1)%VARNG =
'wind_sea_fraction_in_partition_'//
ipart_token
3143 meta =>
group(4)%FIELD(7)%META
3145 meta(1)%UNITS =
'degree'
3148 meta(1)%VARNL =
'peak direction partition '//
ipart_token
3149 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_from_direction_at_variance' // &
3150 '_spectral_density_maximum'
3151 meta(1)%VARNG =
'dominant_wave_from_direction_partition_'//
ipart_token
3157 meta =>
group(4)%FIELD(8)%META
3162 meta(1)%VARNL =
'peakedness partition '//
ipart_token
3165 meta(1)%VARNG =
'wave_peakedness_partition_'//
ipart_token
3170 meta =>
group(4)%FIELD(9)%META
3175 meta(1)%VARNL =
'peak enhancement factor partition '//
ipart_token
3178 meta(1)%VARNG =
'wave_peak_enhancement_factor_partition_'//
ipart_token
3179 meta(1)%VARNC =
'JONSWAP peak enhancement factor; ' //
partcom
3184 meta =>
group(4)%FIELD(10)%META
3185 meta(1)%FSC = 0.0001
3186 meta(1)%UNITS =
's-1'
3189 meta(1)%VARNL =
'frequency width partition '//
ipart_token
3192 meta(1)%VARNG =
'Gaussian_frequency_spread_partition_'//
ipart_token
3193 meta(1)%VARNC =
'Gaussian least-square fit to ' // &
3194 'omni-directional spectral partition; ' //
partcom
3198 meta =>
group(4)%FIELD(11)%META
3199 meta(1)%FSC = 0.0001
3203 meta(1)%VARNL =
'spectral width partition '//
ipart_token
3206 meta(1)%VARNG =
'wave_spectral_width_partition_'//
ipart_token
3211 meta =>
group(4)%FIELD(12)%META
3216 meta(1)%VARNL =
'mean period Tm10 partition '//
ipart_token
3217 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_mean_period_from_variance' // &
3218 '_spectral_density_inverse_frequency_moment'
3219 meta(1)%VARNG =
'mean_wave_period_Tm10_partition_'//
ipart_token
3224 meta =>
group(4)%FIELD(13)%META
3229 meta(1)%VARNL =
'mean period T01 partition '//
ipart_token
3230 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_mean_period_from_variance' // &
3231 '_spectral_density_first_frequency_moment'
3232 meta(1)%VARNG =
'mean_wave_period_T01_partition_'//
ipart_token
3237 meta =>
group(4)%FIELD(14)%META
3242 meta(1)%VARNL =
'mean period T02 partition '//
ipart_token
3243 meta(1)%VARNS =
'sea_surface_'//
spart_token_ //
'_wave_mean_period_from_variance' // &
3244 '_spectral_density_second_frequency_moment'
3245 meta(1)%VARNG =
'mean_wave_period_T02_partition_'//
ipart_token
3250 meta =>
group(4)%FIELD(15)%META
3252 meta(1)%UNITS =
'm2 s rad-1'
3255 meta(1)%VARNL =
'energy at peak frequency partition '//
ipart_token
3258 meta(1)%VARNG =
'wave_energy_at_variance_spectral_density_maximum_partition_'//
ipart_token
3263 meta =>
group(4)%FIELD(16)%META
3266 meta(1)%ENAME =
'.tws'
3267 meta(1)%VARNM =
'tws'
3268 meta(1)%VARNL =
'wind sea fraction'
3271 meta(1)%VARNG =
'wind_sea_fraction'
3276 meta =>
group(4)%FIELD(17)%META
3279 meta(1)%ENAME =
'.pnr'
3280 meta(1)%VARNM =
'pnr'
3281 meta(1)%VARNL =
'number of wave partitions'
3284 meta(1)%VARNG =
'number_of_wave_partitions'
3292 meta =>
group(5)%FIELD(1)%META
3295 meta(1)%ENAME =
'.ust'
3296 meta(1)%UNITS =
'm s-1'
3297 meta(1)%VARNM=
'uust'
3298 meta(1)%VARNL=
'eastward friction velocity'
3301 meta(1)%VARNG=
'eastward_friction_velocity'
3302 meta(1)%VARNC=
'ust=sqrt(uust**2+vust**2)'
3304 meta(1)%VMIN = -99.0
3309 meta(2)%VARNM=
'vust'
3310 meta(2)%VARNL=
'northward friction velocity'
3313 meta(2)%VARNG=
'northward_friction_velocity'
3315 meta =>
group(5)%FIELD(2)%META
3318 meta(1)%ENAME =
'.cha'
3320 meta(1)%VARNL=
'charnock coefficient for surface roughness length for momentum in air'
3321 meta(1)%VARNS=
'charnock_coefficient_for_surface_roughness_length_for_momentum_in_air'
3322 meta(1)%VARNG=
'charnock_coefficient'
3324 meta(1)%VMAX = 0.327
3326 meta =>
group(5)%FIELD(3)%META
3328 meta(1)%UNITS =
'kW m-1'
3329 meta(1)%ENAME =
'.cge'
3331 meta(1)%VARNL=
'wave energy flux'
3334 meta(1)%VARNG=
'wave_energy_flux'
3338 meta =>
group(5)%FIELD(4)%META
3340 meta(1)%UNITS =
'W m-2'
3341 meta(1)%ENAME =
'.faw'
3343 meta(1)%VARNL=
'wind to wave energy flux'
3344 meta(1)%VARNS=
'wind_mixing_energy_flux_into_sea_water'
3345 meta(1)%VARNG=
'wind_to_wave_energy_flux'
3349 meta =>
group(5)%FIELD(5)%META
3351 meta(1)%FSC = 0.000001
3352 meta(1)%UNITS =
'm2 s-2'
3353 meta(1)%ENAME =
'.taw'
3354 meta(1)%VARNM=
'utaw'
3355 meta(1)%VARNL=
'eastward wave supported wind stress'
3358 meta(1)%VARNC=
'taw=sqrt(utaw**2+vtaw**2)'
3359 meta(1)%VARNG=
'eastward_wave_supported_wind_stress'
3361 meta(1)%VMIN = -0.032
3362 meta(1)%VMAX = 0.032
3366 meta(2)%VARNM=
'vtaw'
3367 meta(2)%VARNL=
'northward wave supported wind stress'
3370 meta(2)%VARNG=
'northward_wave_supported_wind_stress'
3371 meta(2)%VARNC=
'taw=sqrt(utaw**2+vtaw**2)'
3373 meta =>
group(5)%FIELD(6)%META
3375 meta(1)%FSC = 0.0001
3376 meta(1)%ENAME =
'.twa'
3377 meta(1)%UNITS =
'm2 s-2'
3378 meta(1)%VARNM=
'utwa'
3379 meta(1)%VARNL=
'eastward wave to wind stress'
3382 meta(1)%VARNG=
'eastward_wave_to_wind_stress'
3383 meta(1)%VARNC=
'twa=sqrt(utwa**2+vtwa**2)'
3390 meta(2)%VARNM=
'vtwa'
3391 meta(2)%VARNL=
'northward wave to wind stress'
3394 meta(2)%VARNG=
'northward_wave_to_wind_stress'
3395 meta(2)%VARNC=
'twa=sqrt(utwa**2+vtwa**2)'
3397 meta =>
group(5)%FIELD(7)%META
3398 meta(1)%FSC = 0.0001
3400 meta(1)%ENAME =
'.wcc'
3402 meta(1)%VARNL=
'whitecap coverage'
3405 meta(1)%VARNG=
'whitecap_coverage'
3411 meta =>
group(5)%FIELD(8)%META
3414 meta(1)%ENAME =
'.wcf'
3416 meta(1)%VARNL=
'whitecap foam thickness'
3419 meta(1)%VARNG=
'whitecap_foam_thickness'
3423 meta =>
group(5)%FIELD(9)%META
3426 meta(1)%ENAME =
'.wch'
3428 meta(1)%VARNL=
'significant breaking wave height'
3431 meta(1)%VARNG=
'significant_breaking_wave_height'
3435 meta =>
group(5)%FIELD(10)%META
3436 meta(1)%FSC = 0.0001
3438 meta(1)%ENAME =
'.wcm'
3440 meta(1)%VARNL=
'whitecap moment'
3443 meta(1)%VARNG=
'whitecap_moment'
3447 meta =>
group(5)%FIELD(11)%META
3450 meta(1)%ENAME =
'.fws'
3452 meta(1)%VARNL=
'Wind_sea_mean_period_T0M1'
3453 meta(1)%VARNS=
'sea_surface_wind_wave_mean_period_from_variance' // &
3454 '_spectral_density_inverse_frequency_moment'
3455 meta(1)%VARNG=
'Wind_sea_mean_period_T0M1'
3464 meta =>
group(6)%FIELD(1)%META
3466 meta(1)%UNITS =
'N m-1'
3467 meta(1)%ENAME =
'.sxy'
3469 meta(1)%VMIN = -30000
3470 meta(1)%VMAX = 30000
3474 meta(1)%VARNL=
'Radiation stress component Sxx'
3481 meta(2)%VARNL=
'Radiation stress component Syy'
3489 meta(3)%VARNL=
'Radiation stress component Sxy'
3493 meta =>
group(6)%FIELD(2)%META
3494 meta(1)%FSC = 0.000001
3495 meta(1)%UNITS =
'm2 s-2'
3496 meta(1)%ENAME =
'.two'
3497 meta(1)%VMIN = -0.032
3498 meta(1)%VMAX = 0.032
3502 meta(1)%VARNM=
'utwo'
3503 meta(1)%VARNL=
'eastward wave to ocean stress'
3506 meta(1)%VARNG=
'eastward_wave_to_ocean_stress'
3507 meta(1)%VARNC=
'two=sqrt(utwo**2+vtwo**2)'
3511 meta(2)%VARNM=
'vtwo'
3512 meta(2)%VARNL=
'northward wave to ocean stress'
3515 meta(2)%VARNG=
'northward_wave_to_ocean_stress'
3516 meta(2)%VARNC=
'two=sqrt(utwo**2+vtwo**2)'
3518 meta =>
group(6)%FIELD(3)%META
3520 meta(1)%UNITS =
'm2 s-2'
3521 meta(1)%ENAME =
'.bhd'
3523 meta(1)%VARNL=
'radiation pressure (Bernouilli Head)'
3526 meta(1)%VARNG=
'radiation_pressure'
3530 meta =>
group(6)%FIELD(4)%META
3532 meta(1)%UNITS =
'W m-2'
3533 meta(1)%ENAME =
'.foc'
3535 meta(1)%VARNL=
'wave to ocean energy flux'
3538 meta(1)%VARNG=
'wave_to_ocean_energy_flux'
3542 meta =>
group(6)%FIELD(5)%META
3544 meta(1)%UNITS =
'm2 s-1'
3545 meta(1)%ENAME =
'.tus'
3547 meta(1)%VMIN = -32.0
3551 meta(1)%VARNM=
'utus'
3552 meta(1)%VARNL=
'eastward stokes transport'
3555 meta(1)%VARNG=
'eastward_stokes_transport'
3556 meta(1)%VARNC=
'tus=sqrt(utus**2+vtus**2)'
3560 meta(2)%VARNM=
'vtus'
3561 meta(2)%VARNL=
'northward stokes transport'
3564 meta(2)%VARNG=
'northward_stokes_transport'
3565 meta(2)%VARNC=
'tus=sqrt(utus**2+vtus**2)'
3568 meta =>
group(6)%FIELD(6)%META
3569 meta(1)%FSC = 0.0005
3570 meta(1)%UNITS =
'm s-1'
3571 meta(1)%ENAME =
'.uss'
3574 meta(1)%VARNM=
'uuss'
3575 meta(1)%VARNL=
'eastward surface stokes drift'
3576 meta(1)%VARNS=
'sea_surface_wave_stokes_drift_eastward_velocity'
3577 meta(1)%VARNG=
'eastward_surface_stokes_drift'
3578 meta(1)%VARNC=
'uss=sqrt(uuss**2+vuss**2)'
3580 meta(1)%VMIN = -4.95
3585 meta(2)%VARNM=
'vuss'
3586 meta(2)%VARNL=
'northward surface stokes drift'
3587 meta(2)%VARNS=
'sea_surface_wave_stokes_drift_northward_velocity'
3588 meta(2)%VARNG=
'northward_surface_stokes_drift'
3589 WRITE(meta(2)%VARNC,
'(A,F8.4,A,F8.4,A)')
'Frequency range ',sig(1)*tpiinv,
' to ',sig(nk)*tpiinv,
' Hz'
3591 meta =>
group(6)%FIELD(7)%META
3593 meta(1)%ENAME =
'.p2s'
3594 meta(1)%UNITS =
'm4'
3599 meta(1)%VARNL=
'power spectral density of equivalent surface pressure'
3602 meta(1)%VARNG=
'power_spectral_density_of_equivalent_surface_pressure'
3603 meta(1)%VARNM=
'fp2s'
3607 meta(2)%VARNM=
'pp2s'
3608 meta(2)%UNITS=
's-1'
3609 meta(2)%VARNL=
'peak period of power spectral density of equivalent surface pressure'
3612 meta(2)%VARNG=
'peak_period_of_power_spectral_density_of_equivalent_surface_pressure'
3615 meta =>
group(6)%FIELD(8)%META
3616 meta(1)%UNITS =
'm s-1 Hz-1'
3617 meta(1)%FSC = 0.0005
3618 meta(1)%ENAME =
'.usf'
3619 meta(1)%VMIN = -4.95
3624 meta(1)%VARNM=
'uusf'
3625 meta(1)%VARNL=
'eastward spectral variance of surface stokes drift'
3628 meta(1)%VARNC=
'usf=sqrt(uusf**2+vusf**2)'
3629 meta(1)%VARNG=
'eastward_spectral_variance_of_surface_stokes_drift'
3633 meta(2)%VARNM=
'vusf'
3634 meta(2)%VARNL=
'northward spectral variance of surface stokes drift'
3637 meta(2)%VARNG=
'northward_spectral_variance_of_surface_stokes_drift'
3638 meta(2)%VARNC=
'usf=sqrt(uusf**2+vusf**2)'
3640 meta =>
group(6)%FIELD(9)%META
3642 meta(1)%FSC = 0.0004
3644 meta(1)%VARNL=
'base ten logarithm of power spectral density of equivalent surface pressure'
3647 meta(1)%VARNG=
'base_ten_logarithm_of_power_spectral_density_of_equivalent_surface_pressure'
3649 meta(1)%UNITS=
'log10(Pa2 m2 s+1E-12)'
3653 meta(1)%UNITS=
'Pa2 m2 s'
3654 meta(1)%VARNL=
'power spectral density of equivalent surface pressure'
3656 meta(1)%VARNG=
'power_spectral_density_of_equivalent_surface_pressure'
3658 meta(1)%VMAX = 1.e12
3662 meta(1)%ENAME=
'.p2l'
3664 meta =>
group(6)%FIELD(10)%META
3665 meta(1)%FSC = 0.000001
3666 meta(1)%UNITS =
'm2 s-2'
3667 meta(1)%ENAME =
'.tic'
3668 meta(1)%VMIN = -0.032
3669 meta(1)%VMAX = 0.032
3673 meta(1)%VARNL=
'eastward wave to sea ice stress'
3674 meta(1)%VARNM=
'utic'
3677 meta(1)%VARNG=
'eastward_wave_to_sea_ice_stress'
3678 meta(1)%VARNC=
'two=sqrt(utwo**2+vtwo**2)'
3681 meta(2)%VARNM=
'vtic'
3682 meta(2)%VARNL=
'northward wave to sea ice stress'
3685 meta(2)%VARNG=
'northward_wave_to_sea_ice_stress'
3686 meta(2)%VARNC=
'two=sqrt(utwo**2+vtwo**2)'
3688 meta =>
group(6)%FIELD(11)%META
3690 meta(1)%UNITS =
'W m-2'
3691 meta(1)%ENAME =
'.fic'
3693 meta(1)%VARNL=
'wave to sea ice energy flux'
3696 meta(1)%VARNG=
'wave_to_sea_ice_energy_flux'
3700 meta =>
group(6)%FIELD(12)%META
3701 meta(1)%UNITS =
'm s-1'
3702 meta(1)%FSC = 0.0005
3703 meta(1)%ENAME =
'.usp'
3705 meta(1)%VMIN = -9.99
3709 meta(1)%VARNM=
'ussp'
3710 meta(1)%VARNL=
'eastward partitioned surface stokes drift'
3713 meta(1)%VARNG=
'eastward_partitioned_surface_stokes_drift'
3714 meta(1)%VARNC=
'usp=sqrt(ussp**2+vssp**2)'
3718 meta(2)%VARNM=
'vssp'
3719 meta(2)%VARNL=
'northward partitioned surface stokes drift'
3722 meta(2)%VARNG=
'northward_partitioned_surface_stokes_drift'
3723 meta(2)%VARNC=
'usp=sqrt(ussp**2+vssp**2)'
3725 meta =>
group(6)%FIELD(13)%META
3726 meta(1)%UNITS =
'Pa'
3728 meta(1)%ENAME =
'.toc'
3734 meta(1)%VARNM=
'utoc'
3735 meta(1)%VARNL=
'eastward total wave to ocean stres'
3738 meta(1)%VARNC=
'toc=sqrt(utoc**2+vtoc**2)'
3742 meta(2)%VARNM=
'vtoc'
3743 meta(2)%VARNL=
'northward total wave to ocean stres'
3746 meta(2)%VARNC=
'toc=sqrt(utoc**2+vtoc**2)'
3751 meta =>
group(7)%FIELD(1)%META
3753 meta(1)%ENAME =
'.abr'
3760 meta(1)%VARNM=
'uabr'
3761 meta(1)%VARNL=
'rms of bottom displacement amplitude zonal'
3764 meta(1)%VARNG=
'rms_of_bottom_displacement_amplitude_zonal'
3765 meta(1)%VARNC=
'abr=sqrt(uabr**2+vabr**2)'
3769 meta(2)%VARNM=
'vabr'
3770 meta(2)%VARNL=
'rms of bottom displacement amplitude meridional'
3773 meta(2)%VARNG=
'rms_of_bottom_displacement_amplitude_meridional'
3774 meta(2)%VARNC=
'abr=sqrt(uabr**2+vabr**2)'
3776 meta =>
group(7)%FIELD(2)%META
3778 meta(1)%ENAME =
'.ubr'
3779 meta(1)%UNITS =
'm s-1'
3785 meta(1)%VARNM=
'uubr'
3786 meta(1)%VARNL=
'rms of bottom velocity amplitude zonal'
3789 meta(1)%VARNG=
'rms_of_bottom_velocity_amplitude_zonal'
3790 meta(1)%VARNC=
'ubr=sqrt(uubr**2+vubr**2)'
3794 meta(2)%VARNM=
'vubr'
3795 meta(2)%VARNL=
'rms of bottom velocity amplitude meridional'
3798 meta(2)%VARNG=
'rms_of_bottom_velocity_amplitude_meridional'
3800 meta =>
group(7)%FIELD(3)%META
3803 meta(1)%ENAME =
'.bed'
3810 meta(1)%VARNL=
'bottom roughness'
3813 meta(1)%VARNG=
'ripple_wavelength'
3814 meta(1)%VARNC=
'ripple_length=sqrt(ripplex**2+rippley**2)'
3818 meta(2)%VARNM=
'ripplex'
3819 meta(2)%VARNL=
'eastward sea bottom ripple wavelength'
3822 meta(2)%VARNG=
'eastward_ripple_wavelength'
3823 meta(2)%VARNC=
'ripple_length=sqrt(ripplex**2+rippley**2)'
3827 meta(3)%VARNM=
'rippley'
3828 meta(3)%VARNL=
'northward sea bottom ripple wavelength'
3831 meta(3)%VARNG=
'northward_ripple_wavelength'
3832 meta(3)%VARNC=
'ripple_length=sqrt(ripplex**2+rippley**2)'
3834 meta =>
group(7)%FIELD(4)%META
3836 meta(1)%UNITS =
'W m-2'
3837 meta(1)%ENAME =
'.fbb'
3839 meta(1)%VARNL=
'wave dissipation in bbl'
3842 meta(1)%VARNG=
'wave_dissipation_in_bbl'
3846 meta =>
group(7)%FIELD(5)%META
3847 meta(1)%FSC = 0.000001
3848 meta(1)%UNITS =
'm2 s-2'
3849 meta(1)%ENAME =
'.tbb'
3850 meta(1)%VMIN = -0.032
3851 meta(1)%VMAX = 0.032
3855 meta(1)%VARNM=
'utbb'
3856 meta(1)%VARNL=
'eastward wave to bbl stress'
3859 meta(1)%VARNG=
'eastward_wave_to_bbl_stress'
3860 meta(1)%VARNC=
'tbb=sqrt(utbb**2+vtbb**2)'
3864 meta(2)%VARNM=
'vtbb'
3865 meta(2)%VARNL=
'northward wave to bbl stress'
3868 meta(2)%VARNG=
'northward_wave_to_bbl_stress'
3869 meta(2)%VARNC=
'tbb=sqrt(utbb**2+vtbb**2)'
3873 meta =>
group(8)%FIELD(1)%META
3874 meta(1)%FSC = 0.00001
3875 meta(1)%ENAME =
'.mss'
3880 WRITE(meta(1)%VARNC,
'(A,F8.4,A,F8.4,A)')
'Frequency range ',sig(1)*tpiinv,
' to ',sig(nk)*tpiinv,
' Hz'
3883 meta(1)%VARNM=
'mssu'
3884 meta(1)%VARNL=
'downwave mean square slope'
3885 meta(1)%VARNS=
'sea_surface_wave_mean_square_upwave_slope'
3886 meta(1)%VARNG=
'x_mean_square_slope'
3887 meta(1)%VARNC=
'mss=mssu+mssc'
3891 meta(2)%VARNM=
'mssc'
3892 meta(2)%VARNL=
'crosswave mean square slope'
3893 meta(2)%VARNS=
'sea_surface_wave_mean_square_crosswave_slope'
3894 meta(2)%VARNG=
'y_mean_square_slope'
3896 meta =>
group(8)%FIELD(2)%META
3898 meta(1)%ENAME =
'.msc'
3901 meta(1)%VMAX = 0.003
3905 meta(1)%VARNM=
'mscx'
3906 meta(1)%VARNL=
'eastward phillips constant'
3909 meta(1)%VARNG=
'eastward_phillips_constant'
3910 meta(1)%VARNC=
'msc=mscx+mscy'
3914 meta(2)%VARNM=
'mscy'
3915 meta(2)%VARNL=
'northward phillips constant'
3918 meta(2)%VARNG=
'northward_phillips_constant'
3919 meta(2)%VARNC=
'msc=mscx+mscy'
3921 meta =>
group(8)%FIELD(3)%META
3923 meta(1)%UNITS =
'degree'
3924 meta(1)%ENAME =
'.msd'
3925 meta(1)%VARNM=
'mssd'
3926 meta(1)%VARNL=
'u direction for mss'
3927 meta(1)%VARNS=
'sea_surface_mean_square_upwave_slope_direction'
3928 meta(1)%VARNG=
'sea_surface_wave_dominant_mean_square_slope_direction'
3929 WRITE(meta(1)%VARNC,
'(A,F8.4,A,F8.4,A)')
'Frequency range ',sig(1)*tpiinv,
' to ',sig(nk)*tpiinv,
' Hz'
3934 meta =>
group(8)%FIELD(4)%META
3936 meta(1)%UNITS =
'degree'
3937 meta(1)%ENAME =
'.mcd'
3938 meta(1)%VARNM=
'mscd'
3939 meta(1)%VARNL=
'x direction for msc'
3942 meta(1)%VARNG=
'sea_surface_wave_dominant_mean_square_slope_direction_in_highest_frequency'
3947 meta =>
group(8)%FIELD(5)%META
3950 meta(1)%ENAME =
'.qp'
3952 meta(1)%VARNL=
'peakedness'
3955 meta(1)%VARNG=
'wave_peakedness'
3956 meta(1)%VARNC=
'Goda wave peakedness parameter'
3960 meta =>
group(8)%FIELD(6)%META
3962 meta(1)%UNITS =
'm/rad'
3963 meta(1)%ENAME =
'.qkk'
3965 meta(1)%VARNL=
'k-peakedness'
3968 meta(1)%VARNG=
'wavenumber_peakedness'
3969 meta(1)%VARNC=
'2D wavenumber peakedness'
3973 meta =>
group(8)%FIELD(7)%META
3974 meta(1)%FSC = 0.00001
3976 meta(1)%ENAME =
'.skw'
3978 meta(1)%VARNL=
'skewness'
3981 meta(1)%VARNG=
'skewness of P(z,sx,sy=0)'
3982 meta(1)%VARNC=
'skewness of P(z,sx,sy=0)'
3986 meta =>
group(8)%FIELD(8)%META
3987 meta(1)%FSC = 0.00001
3989 meta(1)%ENAME =
'.emb'
3991 meta(1)%VARNL=
'EM-bias'
3994 meta(1)%VARNG=
'EM bias coefficient'
3995 meta(1)%VARNC=
'EM bias coefficient'
3999 meta =>
group(8)%FIELD(9)%META
4000 meta(1)%FSC = 0.00001
4002 meta(1)%ENAME =
'.emc'
4004 meta(1)%VARNL=
'trackerbias'
4007 meta(1)%VARNG=
'tracker bias coefficient'
4008 meta(1)%VARNC=
'tracker bias coefficient'
4015 meta =>
group(9)%FIELD(1)%META
4017 meta(1)%UNITS =
'min.'
4018 meta(1)%ENAME =
'.dtd'
4020 meta(1)%VARNL=
'dynamic time step'
4023 meta(1)%VARNG=
'dynamic_time_step'
4027 meta =>
group(9)%FIELD(2)%META
4029 meta(1)%UNITS =
's-1'
4030 meta(1)%ENAME =
'.fc'
4032 meta(1)%VARNL=
'cut off frequency'
4035 meta(1)%VARNG=
'cut_off_frequency'
4039 meta =>
group(9)%FIELD(3)%META
4042 meta(1)%ENAME =
'.cfx'
4044 meta(1)%VARNL=
'maximum cfl for spatial advection'
4047 meta(1)%VARNG=
'maximum_cfl_for_spatial_advection'
4051 meta =>
group(9)%FIELD(4)%META
4054 meta(1)%ENAME =
'.cfd'
4056 meta(1)%VARNL=
'maximum cfl for direction advection'
4059 meta(1)%VARNG=
'maximum_cfl_for_direction_advection'
4063 meta =>
group(9)%FIELD(5)%META
4066 meta(1)%ENAME =
'.cfk'
4068 meta(1)%VARNL=
'maximum cfl for frequency advection'
4071 meta(1)%VARNG=
'maximum_cfl_for_frequency_advection'
4078 meta =>
group(10)%FIELD(1)%META
4083 WRITE (meta(1)%ENAME,
'(A2,I2.2)')
'.u'
4084 WRITE (meta(1)%VARNM,
'(A1,I2.2)')
'u'
4085 WRITE (meta(1)%VARNL,
'(A12,I2.2)')
'User_defined'
4086 WRITE (meta(1)%VARNS,
'(A12,I2.2)')
'User_defined'
4087 WRITE (meta(1)%VARNG,
'(A12,I2.2)')
'user_defined'