845 do i =1,
size(metaanddatav)
846 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
847 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
848 if (c_e(metaanddatav(i)%metadata%datetime%datetime))
then 849 if (metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat%btable == dativarattra(n))
then 850 allocate(starvars%dcv(n)%dat,source=metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
860 dn:
do n=1,nanavarattr
861 do i =1,
size(metaanddatav)
862 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
863 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
864 if (.not. c_e(metaanddatav(i)%metadata%datetime%datetime))
then 865 if (metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat%btable == anavarattra(n))
then 866 allocate(anastarvars%dcv(n)%dat,source=metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
887 allocate (tmpnetwork(
size(metaanddatav(:))),&
888 source=metaanddatav(:)%metadata%network%vol7d_network)
889 call sort(tmpnetwork)
890 nnetwork = count_distinct_sorted(tmpnetwork)
895 allocate (tmptime(
size(metaanddatav(:))),&
896 source=metaanddatav(:)%metadata%datetime%datetime)
898 ntime = count_distinct_sorted(tmptime,mask=c_e(tmptime))
902 allocate (tmptimerange(
size(metaanddatav(:))),&
903 source=metaanddatav(:)%metadata%timerange%vol7d_timerange)
904 call sort(tmptimerange)
905 ntimerange = count_distinct_sorted(tmptimerange,mask=c_e(tmptimerange))
909 allocate (tmplevel(
size(metaanddatav(:))),&
910 source=metaanddatav(:)%metadata%level%vol7d_level)
912 nlevel = count_distinct_sorted(tmplevel,mask=c_e(tmplevel))
915 allocate (tmpana(
size(metaanddatav(:))),&
916 source=metaanddatav(:)%metadata%ana%vol7d_ana)
918 nana = count_distinct_sorted(tmpana)
938 do i =1 ,
size(vars%dcv)
939 associate(dato => vars%dcv(i)%dat)
942 ndativarr = ndativarr + 1
944 ndativari = ndativari + 1
946 ndativarb = ndativarb + 1
948 ndativard = ndativard + 1
950 ndativarc = ndativarc + 1
964 do i =1 ,
size(starvars%dcv)
965 associate(dato => starvars%dcv(i)%dat)
968 ndatiattrr = ndatiattrr + 1
970 ndatiattri = ndatiattri + 1
972 ndatiattrb = ndatiattrb + 1
974 ndatiattrd = ndatiattrd + 1
976 ndatiattrc = ndatiattrc + 1
990 do i =1 ,
size(anavars%dcv)
991 associate(dato => anavars%dcv(i)%dat)
994 nanavarr = nanavarr + 1
996 nanavari = nanavari + 1
998 nanavarb = nanavarb + 1
1000 nanavard = nanavard + 1
1002 nanavarc = nanavarc + 1
1016 do i =1 ,
size(anastarvars%dcv)
1017 associate(dato => anastarvars%dcv(i)%dat)
1020 nanaattrr = nanaattrr + 1
1022 nanaattri = nanaattri + 1
1024 nanaattrb = nanaattrb + 1
1026 nanaattrd = nanaattrd + 1
1028 nanaattrc = nanaattrc + 1
1042 if (ndatiattrr > 0 ) ndativarattrr=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1043 if (ndatiattri > 0 ) ndativarattri=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1044 if (ndatiattrb > 0 ) ndativarattrb=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1045 if (ndatiattrd > 0 ) ndativarattrd=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1046 if (ndatiattrc > 0 ) ndativarattrc=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1055 if (nanaattrr > 0 ) nanavarattrr=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1056 if (nanaattri > 0 ) nanavarattri=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1057 if (nanaattrb > 0 ) nanavarattrb=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1058 if (nanaattrd > 0 ) nanavarattrd=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1059 if (nanaattrc > 0 ) nanavarattrc=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1062 CALL init(this,time_definition=ltime_definition)
1077 call vol7d_alloc (this, &
1078 nana=nana, ntime=ntime, ntimerange=ntimerange, &
1079 nlevel=nlevel, nnetwork=nnetwork, &
1080 ndativarr=ndativarr, ndativari=ndativari, ndativarb=ndativarb, ndativard=ndativard, ndativarc=ndativarc,&
1081 ndatiattrr=ndatiattrr, ndatiattri=ndatiattri, ndatiattrb=ndatiattrb, ndatiattrd=ndatiattrd, ndatiattrc=ndatiattrc,&
1082 ndativarattrr=ndativarattrr, &
1083 ndativarattri=ndativarattri, &
1084 ndativarattrb=ndativarattrb, &
1085 ndativarattrd=ndativarattrd, &
1086 ndativarattrc=ndativarattrc,&
1087 nanavarr=nanavarr, nanavari=nanavari, nanavarb=nanavarb, nanavard=nanavard, nanavarc=nanavarc,&
1088 nanaattrr=nanaattrr, nanaattri=nanaattri, nanaattrb=nanaattrb, nanaattrd=nanaattrd, nanaattrc=nanaattrc,&
1089 nanavarattrr=nanavarattrr, &
1090 nanavarattri=nanavarattri, &
1091 nanavarattrb=nanavarattrb, &
1092 nanavarattrd=nanavarattrd, &
1093 nanavarattrc=nanavarattrc)
1100 this%ana=pack_distinct_sorted(tmpana, nana)
1108 this%time=pack_distinct_sorted(tmptime, ntime,mask=c_e(tmptime))
1116 this%timerange=pack_distinct_sorted(tmptimerange, ntimerange,mask=c_e(tmptimerange))
1117 deallocate(tmptimerange)
1124 this%level=pack_distinct_sorted(tmplevel, nlevel,mask=c_e(tmplevel))
1125 deallocate(tmplevel)
1130 ALLOCATE(this%network(1))
1131 this%network(1)=set_network
1135 this%network=pack_distinct_sorted(tmpnetwork, nnetwork)
1136 deallocate(tmpnetwork)
1148 do i =1 ,
size(vars%dcv)
1149 associate(dato => vars%dcv(i)%dat)
1152 ndativarr = ndativarr + 1
1153 call init (this%dativar%r(ndativarr), btable=dato%btable)
1155 ndativari = ndativari + 1
1156 call init (this%dativar%i(ndativari), btable=dato%btable)
1158 ndativarb = ndativarb + 1
1159 call init (this%dativar%b(ndativarb), btable=dato%btable)
1161 ndativard = ndativard + 1
1162 call init (this%dativar%d(ndativard), btable=dato%btable)
1164 ndativarc = ndativarc + 1
1165 call init (this%dativar%c(ndativarc), btable=dato%btable)
1179 do i =1 ,
size(starvars%dcv)
1180 associate(dato => starvars%dcv(i)%dat)
1183 ndatiattrr = ndatiattrr + 1
1184 call init (this%datiattr%r(ndatiattrr), btable=dato%btable)
1186 ndatiattri = ndatiattri + 1
1187 call init (this%datiattr%i(ndatiattri), btable=dato%btable)
1189 ndatiattrb = ndatiattrb + 1
1190 call init (this%datiattr%b(ndatiattrb), btable=dato%btable)
1192 ndatiattrd = ndatiattrd + 1
1193 call init (this%datiattr%d(ndatiattrd), btable=dato%btable)
1195 ndatiattrc = ndatiattrc + 1
1196 call init (this%datiattr%c(ndatiattrc), btable=dato%btable)
1210 do i =1 ,
size(anavars%dcv)
1211 associate(dato => anavars%dcv(i)%dat)
1214 nanavarr = nanavarr + 1
1215 call init (this%anavar%r(nanavarr), btable=dato%btable)
1217 nanavari = nanavari + 1
1218 call init (this%anavar%i(nanavari), btable=dato%btable)
1220 nanavarb = nanavarb + 1
1221 call init (this%anavar%b(nanavarb), btable=dato%btable)
1223 nanavard = nanavard + 1
1224 call init (this%anavar%d(nanavard), btable=dato%btable)
1226 nanavarc = nanavarc + 1
1227 call init (this%anavar%c(nanavarc), btable=dato%btable)
1241 do i =1 ,
size(anastarvars%dcv)
1242 associate(dato => anastarvars%dcv(i)%dat)
1245 nanaattrr = nanaattrr + 1
1246 call init (this%anaattr%r(nanaattrr), btable=dato%btable)
1248 nanaattri = nanaattri + 1
1249 call init (this%anaattr%i(nanaattri), btable=dato%btable)
1251 nanaattrb = nanaattrb + 1
1252 call init (this%anaattr%b(nanaattrb), btable=dato%btable)
1254 nanaattrd = nanaattrd + 1
1255 call init (this%anaattr%d(nanaattrd), btable=dato%btable)
1257 nanaattrc = nanaattrc + 1
1258 call init (this%anaattr%c(nanaattrc), btable=dato%btable)
1265 do i =1,
size(vars%dcv)
1266 associate(dato => vars%dcv(i)%dat)
1267 if ( ndativarattri > 0 )
call init(this%dativarattr%i(i),btable=dato%btable)
1268 if ( ndativarattrr > 0 )
call init(this%dativarattr%r(i),btable=dato%btable)
1269 if ( ndativarattrd > 0 )
call init(this%dativarattr%d(i),btable=dato%btable)
1270 if ( ndativarattrb > 0 )
call init(this%dativarattr%b(i),btable=dato%btable)
1271 if ( ndativarattrc > 0 )
call init(this%dativarattr%c(i),btable=dato%btable)
1275 do i =1,
size(anavars%dcv)
1276 associate(dato => anavars%dcv(i)%dat)
1277 if ( nanavarattri > 0 )
call init(this%anavarattr%i(i),btable=dato%btable)
1278 if ( nanavarattrr > 0 )
call init(this%anavarattr%r(i),btable=dato%btable)
1279 if ( nanavarattrd > 0 )
call init(this%anavarattr%d(i),btable=dato%btable)
1280 if ( nanavarattrb > 0 )
call init(this%anavarattr%b(i),btable=dato%btable)
1281 if ( nanavarattrc > 0 )
call init(this%anavarattr%c(i),btable=dato%btable)
1286 call vol7d_set_attr_ind(this)
1288 call vol7d_alloc_vol (this)
1297 do i =1,
size(metaanddatav)
1299 indana = index_sorted(this%ana, metaanddatav(i)%metadata%ana%vol7d_ana)
1304 indnetwork = index_sorted(this%network, metaanddatav(i)%metadata%network%vol7d_network)
1307 if (c_e(metaanddatav(i)%metadata%datetime%datetime) .and. &
1308 c_e(metaanddatav(i)%metadata%timerange%vol7d_timerange) .and. &
1309 c_e(metaanddatav(i)%metadata%level%vol7d_level) )
then 1311 indtime = index_sorted(this%time, metaanddatav(i)%metadata%datetime%datetime)
1312 indtimerange = index_sorted(this%timerange, metaanddatav(i)%metadata%timerange%vol7d_timerange)
1313 indlevel = index_sorted(this%level, metaanddatav(i)%metadata%level%vol7d_level)
1315 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
1317 associate(dato => metaanddatav(i)%dataattrv%dataattr(j)%dat)
1320 inddativar = firsttrue(dato%btable == this%dativar%i%btable)
1322 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1326 inddativar = firsttrue(dato%btable == this%dativar%r%btable)
1328 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1332 inddativar = firsttrue(dato%btable == this%dativar%d%btable)
1334 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1338 inddativar = firsttrue(dato%btable == this%dativar%b%btable)
1340 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1344 inddativar = firsttrue(dato%btable == this%dativar%c%btable)
1346 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1353 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
1354 associate(attr => metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
1358 inddativarattr = firsttrue(dato%btable == this%dativarattr%i%btable)
1359 indattrvar = firsttrue(attr%btable == this%datiattr%i%btable)
1360 this%voldatiattri( &
1361 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1364 inddativarattr = firsttrue(dato%btable == this%dativarattr%r%btable)
1365 indattrvar = firsttrue(attr%btable == this%datiattr%r%btable)
1366 this%voldatiattrr( &
1367 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1370 inddativarattr = firsttrue(dato%btable == this%dativarattr%d%btable)
1371 indattrvar = firsttrue(attr%btable == this%datiattr%d%btable)
1372 this%voldatiattrd( &
1373 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1376 inddativarattr = firsttrue(dato%btable == this%dativarattr%b%btable)
1377 indattrvar = firsttrue(attr%btable == this%datiattr%b%btable)
1378 this%voldatiattrb( &
1379 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1382 inddativarattr = firsttrue(dato%btable == this%dativarattr%c%btable)
1383 indattrvar = firsttrue(attr%btable == this%datiattr%c%btable)
1384 this%voldatiattrc( &
1385 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1396 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
1398 associate(dato => metaanddatav(i)%dataattrv%dataattr(j)%dat)
1401 indanavar = firsttrue(dato%btable == this%anavar%i%btable)
1403 indana,indanavar,indnetwork &
1407 indanavar = firsttrue(dato%btable == this%anavar%r%btable)
1409 indana,indanavar,indnetwork &
1413 indanavar = firsttrue(dato%btable == this%anavar%d%btable)
1415 indana,indanavar,indnetwork &
1419 indanavar = firsttrue(dato%btable == this%anavar%b%btable)
1421 indana,indanavar,indnetwork &
1425 indanavar = firsttrue(dato%btable == this%anavar%c%btable)
1427 indana,indanavar,indnetwork &
1434 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
1435 associate(attr => metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
1439 indanavarattr = firsttrue(dato%btable == this%anavarattr%i%btable)
1440 indattrvar = firsttrue(attr%btable == this%anaattr%i%btable)
1442 indana,indanavarattr,indnetwork,indattrvar &
1445 indanavarattr = firsttrue(dato%btable == this%anavarattr%r%btable)
1446 indattrvar = firsttrue(attr%btable == this%anaattr%r%btable)
1448 indana,indanavarattr,indnetwork,indattrvar &
1451 indanavarattr = firsttrue(dato%btable == this%anavarattr%d%btable)
1452 indattrvar = firsttrue(attr%btable == this%anaattr%d%btable)
1454 indana,indanavarattr,indnetwork,indattrvar &
1457 indanavarattr = firsttrue(dato%btable == this%anavarattr%b%btable)
1458 indattrvar = firsttrue(attr%btable == this%anaattr%b%btable)
1460 indana,indanavarattr,indnetwork,indattrvar &
1463 indanavarattr = firsttrue(dato%btable == this%anavarattr%c%btable)
1464 indattrvar = firsttrue(attr%btable == this%anaattr%c%btable)
1466 indana,indanavarattr,indnetwork,indattrvar &
1521 end subroutine dba2v7d
1524 subroutine vol7d_dballe_import_dballevar(this)
1526 type(vol7d_var),
pointer :: this(:)
1529 IF (
associated(this))
return 1530 IF (
allocated(blocal))
then 1531 ALLOCATE(this(
size(blocal)))
1536 un = open_dballe_file(
'dballe.txt', filetype_data)
1539 call l4f_log(l4f_error,
"error open_dballe_file: dballe.txt")
1540 CALL raise_error(
"error open_dballe_file: dballe.txt")
1555 readline:
do i = 1 ,n
1556 READ(un,
'(1x,A6,1x,a65,a24,i4)')blocal(i)%btable,blocal(i)%description,blocal(i)%unit,&
1557 blocal(i)%scalefactor
1558 blocal(i)%btable(:1)=
"B" 1565 CALL l4f_log(l4f_info,
'Found '//trim(to_char(i-1))//
' variables in dballe master table')
1572 END SUBROUTINE vol7d_dballe_import_dballevar
1579 subroutine vol7d_dballe_set_var_du(this)
1583 type(vol7d_var),
pointer :: dballevar(:)
1586 call vol7d_dballe_import_dballevar(dballevar)
1588 #undef VOL7D_POLY_NAME 1589 #define VOL7D_POLY_NAME dativar 1592 #undef VOL7D_POLY_TYPES_V 1593 #define VOL7D_POLY_TYPES_V r 1594 #include "vol7d_dballe_class_var_du.F90" 1595 #undef VOL7D_POLY_TYPES_V 1596 #define VOL7D_POLY_TYPES_V i 1597 #include "vol7d_dballe_class_var_du.F90" 1598 #undef VOL7D_POLY_TYPES_V 1599 #define VOL7D_POLY_TYPES_V b 1600 #include "vol7d_dballe_class_var_du.F90" 1601 #undef VOL7D_POLY_TYPES_V 1602 #define VOL7D_POLY_TYPES_V d 1603 #include "vol7d_dballe_class_var_du.F90" 1604 #undef VOL7D_POLY_TYPES_V 1605 #define VOL7D_POLY_TYPES_V c 1606 #include "vol7d_dballe_class_var_du.F90" 1607 #undef VOL7D_POLY_TYPES_V 1609 #undef VOL7D_POLY_NAME 1610 #define VOL7D_POLY_NAME anavar 1613 #undef VOL7D_POLY_TYPES_V 1614 #define VOL7D_POLY_TYPES_V r 1615 #include "vol7d_dballe_class_var_du.F90" 1616 #undef VOL7D_POLY_TYPES_V 1617 #define VOL7D_POLY_TYPES_V i 1618 #include "vol7d_dballe_class_var_du.F90" 1619 #undef VOL7D_POLY_TYPES_V 1620 #define VOL7D_POLY_TYPES_V b 1621 #include "vol7d_dballe_class_var_du.F90" 1622 #undef VOL7D_POLY_TYPES_V 1623 #define VOL7D_POLY_TYPES_V d 1624 #include "vol7d_dballe_class_var_du.F90" 1625 #undef VOL7D_POLY_TYPES_V 1626 #define VOL7D_POLY_TYPES_V c 1627 #include "vol7d_dballe_class_var_du.F90" 1628 #undef VOL7D_POLY_TYPES_V 1631 #undef VOL7D_POLY_NAME 1632 #define VOL7D_POLY_NAME datiattr 1635 #undef VOL7D_POLY_TYPES_V 1636 #define VOL7D_POLY_TYPES_V r 1637 #include "vol7d_dballe_class_var_du.F90" 1638 #undef VOL7D_POLY_TYPES_V 1639 #define VOL7D_POLY_TYPES_V i 1640 #include "vol7d_dballe_class_var_du.F90" 1641 #undef VOL7D_POLY_TYPES_V 1642 #define VOL7D_POLY_TYPES_V b 1643 #include "vol7d_dballe_class_var_du.F90" 1644 #undef VOL7D_POLY_TYPES_V 1645 #define VOL7D_POLY_TYPES_V d 1646 #include "vol7d_dballe_class_var_du.F90" 1647 #undef VOL7D_POLY_TYPES_V 1648 #define VOL7D_POLY_TYPES_V c 1649 #include "vol7d_dballe_class_var_du.F90" 1650 #undef VOL7D_POLY_TYPES_V 1653 #undef VOL7D_POLY_NAME 1654 #define VOL7D_POLY_NAME anaattr 1657 #undef VOL7D_POLY_TYPES_V 1658 #define VOL7D_POLY_TYPES_V r 1659 #include "vol7d_dballe_class_var_du.F90" 1660 #undef VOL7D_POLY_TYPES_V 1661 #define VOL7D_POLY_TYPES_V i 1662 #include "vol7d_dballe_class_var_du.F90" 1663 #undef VOL7D_POLY_TYPES_V 1664 #define VOL7D_POLY_TYPES_V b 1665 #include "vol7d_dballe_class_var_du.F90" 1666 #undef VOL7D_POLY_TYPES_V 1667 #define VOL7D_POLY_TYPES_V d 1668 #include "vol7d_dballe_class_var_du.F90" 1669 #undef VOL7D_POLY_TYPES_V 1670 #define VOL7D_POLY_TYPES_V c 1671 #include "vol7d_dballe_class_var_du.F90" 1672 #undef VOL7D_POLY_TYPES_V 1675 deallocate(dballevar)
1679 end subroutine vol7d_dballe_set_var_du