487 allocate (anastarvars%dcv(i)%dat,source=
dbadatar(anaattr(i)))
489 allocate (anastarvars%dcv(i)%dat,source=
dbadatai(anaattr(i)))
491 allocate (anastarvars%dcv(i)%dat,source=
dbadatab(anaattr(i)))
493 allocate (anastarvars%dcv(i)%dat,source=
dbadatad(anaattr(i)))
495 allocate (anastarvars%dcv(i)%dat,source=
dbadatac(anaattr(i)))
498 CALL raise_fatal_error()
501 allocate (anastarvars%dcv(i)%dat,source=
dbadatac(anaattr(i)))
512if (
present(coordmin)) mydbacoordmin%geo_coord=coordmin
514if (
present(coordmax)) mydbacoordmax%geo_coord=coordmax
516if (
present(ana)) mydbaana%vol7d_ana=ana
518if (
present(timei)) mydatetimemin%datetime=timei
520if (
present(timef)) mydatetimemax%datetime=timef
522if (
present(timerange)) mydbatimerange%vol7d_timerange=timerange
524if (
present(level)) mydbalevel%vol7d_level=level
526if (
present(network)) mydbanetwork%vol7d_network=network
531filter=
dbafilter(coordmin=mydbacoordmin,coordmax=mydbacoordmax,ana=mydbaana, &
532 datetimemin=mydatetimemin,datetimemax=mydatetimemax, &
533 timerange=mydbatimerange,level=mydbalevel,network=mydbanetwork,query=query,&
534 vars=vars,starvars=starvars,anavars=anavars,anastarvars=anastarvars,&
535 dataonly=dataonly,anaonly=anaonly)
539call import(this,filter,set_network)
542END SUBROUTINE vol7d_dballe_import_old
547subroutine vol7d_dballe_import(this,filter,set_network)
551TYPE(vol7d_network),
INTENT(in),
OPTIONAL :: set_network
553TYPE(
vol7d) :: vol7dtmp
559if ( .not. filter%dataonly)
then
561 myfilter=
dbafilter(filter=filter,contextana=.true.,query=cmiss)
565 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe ingest for constant station data')
567 call this%handle%ingest(metaanddatav,filter=myfilter)
568 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe ingest')
569 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe dba2v7d')
570 call dba2v7d(this%vol7d, metaanddatav,this%time_definition,set_network)
571 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe dba2v7d')
573 deallocate (metaanddatav)
577 call init(this%vol7d)
578 call vol7d_alloc(this%vol7d)
579 call vol7d_alloc_vol(this%vol7d)
583if ( .not. filter%anaonly)
then
585 myfilter=
dbafilter(filter=filter,contextana=.false.)
590 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe ingest for station data')
592 call this%handle%ingest(metaanddatav,filter=myfilter)
593 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe ingest')
594 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe dba2v7d')
595 call dba2v7d(vol7dtmp,metaanddatav,this%time_definition,set_network)
596 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe dba2v7d')
598 deallocate (metaanddatav)
600 CALL vol7d_merge(this%vol7d, vol7dtmp,
sort=.true.)
606call vol7d_dballe_set_var_du(this%vol7d)
635this%data_id(indana,indtime,indlevel,indtimerange,indnetwork)=buffer(i)%data_id
638ier=idba_set(this%handle,
"*context_id",buffer(i)%data_id)
639ier=idba_set(this%handle,
"*var_related",buffer(i)%btable)
641ier=idba_set(this%handle,
"*varlist",starvarlist )
642ier=idba_voglioancora(this%handle,nn)
649end subroutine vol7d_dballe_import
655SUBROUTINE vol7d_dballe_delete(this, preserveidbhandle)
657logical,
intent(in),
optional :: preserveidbhandle
659# ifndef F2003_FULL_FEATURES
660call this%handle%delete()
662if (.not. optio_log(preserveidbhandle))
call this%idbhandle%delete()
673call l4f_category_delete(this%category)
676END SUBROUTINE vol7d_dballe_delete
682subroutine dba2v7d(this,metaanddatav,time_definition, set_network)
685TYPE(
vol7d),
INTENT(inout) :: this
686integer,
INTENT(in),
OPTIONAL :: time_definition
687TYPE(vol7d_network),
INTENT(in),
OPTIONAL :: set_network
691type(
dbadcv) :: anastarvars
695integer :: indana,indtime,indlevel,indtimerange,inddativar,indnetwork,indattrvar
697integer :: nana,ntime,ntimerange,nlevel,nnetwork
700integer :: inddativarattr
701integer :: nanavar, indanavar,indanavarattr,nanavarattr
703integer :: ndativarr, ndativari, ndativarb, ndativard, ndativarc
704integer :: ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc
705integer :: ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc
707integer :: nanavarr, nanavari, nanavarb, nanavard, nanavarc
708integer :: nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc
709integer :: nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc
711integer :: ndativar,ndativarattr
713type(
characterlist) :: dativarl,dativarattrl,anavarl,anavarattrl
715character(len=listcharmaxlen),
allocatable :: dativara(:),dativarattra(:),anavara(:),anavarattra(:)
717integer :: ltime_definition
719type(datetime),
allocatable :: tmptime(:)
720type(vol7d_network),
allocatable :: tmpnetwork(:)
721type(vol7d_level),
allocatable :: tmplevel(:)
722type(vol7d_timerange),
allocatable :: tmptimerange(:)
723type(vol7d_ana),
allocatable :: tmpana(:)
726ltime_definition=optio_i(time_definition)
727if (.not.
c_e(ltime_definition)) ltime_definition = 1
834status = dativarattrl%delete()
835allocate(starvars%dcv(ndativarattr))
837nanavarattr = count_distinct(toarray_charl(anavarattrl) , back=.true.)
838allocate(anavarattra(nanavarattr))
839call pack_distinct_c (toarray_charl(anavarattrl) , anavarattra , back=.true.)
840status = anavarattrl%delete()
841allocate(anastarvars%dcv(nanavarattr))
844cn:
do n=1,ndativarattr
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)
860dn:
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)
895allocate (tmptime(
size(metaanddatav(:))),&
896 source=metaanddatav(:)%metadata%datetime%datetime)
898ntime = count_distinct_sorted(tmptime,mask=
c_e(tmptime))
902allocate (tmptimerange(
size(metaanddatav(:))),&
903 source=metaanddatav(:)%metadata%timerange%vol7d_timerange)
904call sort(tmptimerange)
905ntimerange = count_distinct_sorted(tmptimerange,mask=
c_e(tmptimerange))
909allocate (tmplevel(
size(metaanddatav(:))),&
910 source=metaanddatav(:)%metadata%level%vol7d_level)
912nlevel = count_distinct_sorted(tmplevel,mask=
c_e(tmplevel))
915allocate (tmpana(
size(metaanddatav(:))),&
916 source=metaanddatav(:)%metadata%ana%vol7d_ana)
918nana = count_distinct_sorted(tmpana)
938do 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
964do 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
990do 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
1016do 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
1042if (ndatiattrr > 0 ) ndativarattrr=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1043if (ndatiattri > 0 ) ndativarattri=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1044if (ndatiattrb > 0 ) ndativarattrb=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1045if (ndatiattrd > 0 ) ndativarattrd=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1046if (ndatiattrc > 0 ) ndativarattrc=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1055if (nanaattrr > 0 ) nanavarattrr=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1056if (nanaattri > 0 ) nanavarattri=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1057if (nanaattrb > 0 ) nanavarattrb=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1058if (nanaattrd > 0 ) nanavarattrd=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1059if (nanaattrc > 0 ) nanavarattrc=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1062CALL init(this,time_definition=ltime_definition)
1077call vol7d_alloc (this, &
1078nana=nana, ntime=ntime, ntimerange=ntimerange, &
1079nlevel=nlevel, nnetwork=nnetwork, &
1080ndativarr=ndativarr, ndativari=ndativari, ndativarb=ndativarb, ndativard=ndativard, ndativarc=ndativarc,&
1081ndatiattrr=ndatiattrr, ndatiattri=ndatiattri, ndatiattrb=ndatiattrb, ndatiattrd=ndatiattrd, ndatiattrc=ndatiattrc,&
1082ndativarattrr=ndativarattrr, &
1083ndativarattri=ndativarattri, &
1084ndativarattrb=ndativarattrb, &
1085ndativarattrd=ndativarattrd, &
1086ndativarattrc=ndativarattrc,&
1087nanavarr=nanavarr, nanavari=nanavari, nanavarb=nanavarb, nanavard=nanavard, nanavarc=nanavarc,&
1088nanaattrr=nanaattrr, nanaattri=nanaattri, nanaattrb=nanaattrb, nanaattrd=nanaattrd, nanaattrc=nanaattrc,&
1089nanavarattrr=nanavarattrr, &
1090nanavarattri=nanavarattri, &
1091nanavarattrb=nanavarattrb, &
1092nanavarattrd=nanavarattrd, &
1093nanavarattrc=nanavarattrc)
1100this%ana=pack_distinct_sorted(tmpana, nana)
1108this%time=pack_distinct_sorted(tmptime, ntime,mask=c_e(tmptime))
1116this%timerange=pack_distinct_sorted(tmptimerange, ntimerange,mask=c_e(tmptimerange))
1117deallocate(tmptimerange)
1124this%level=pack_distinct_sorted(tmplevel, nlevel,mask=c_e(tmplevel))
1130 ALLOCATE(this%network(1))
1131 this%network(1)=set_network
1135 this%network=pack_distinct_sorted(tmpnetwork, nnetwork)
1136 deallocate(tmpnetwork)
1148do 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)
1179do 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)
1210do 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)
1241do 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)
1265do 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)
1275do 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)
1286call vol7d_set_attr_ind(this)
1288call vol7d_alloc_vol (this)
1297do 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 &
1521end subroutine dba2v7d
1524subroutine vol7d_dballe_import_dballevar(this)
1526type(vol7d_var),
pointer :: this(:)
1529IF (
associated(this))
return
1530IF (
allocated(blocal))
then
1531 ALLOCATE(this(
size(blocal)))
1536un = 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')
1572END SUBROUTINE vol7d_dballe_import_dballevar
1579subroutine vol7d_dballe_set_var_du(this)
1583type(vol7d_var),
pointer :: dballevar(:)
1586call 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
1732FUNCTION open_dballe_file(filename, filetype)
RESULT(unit)
1733CHARACTER(len=*),
INTENT(in) :: filename
1734INTEGER,
INTENT(in) :: filetype
1737CHARACTER(len=512) :: path
1740path=get_dballe_filepath(filename, filetype)
1741IF (path ==
'')
RETURN
1744IF (unit == -1)
RETURN
1746OPEN(unit, file=path, status=
'old', iostat = i)
1748 CALL l4f_log(l4f_info,
'dballe file '//trim(path)//
' opened')
1752CALL l4f_log(l4f_error,
'dballe file '//trim(filename)//
' not found')
1756END FUNCTION open_dballe_file
1770SUBROUTINE vol7d_dballe_export_old(this, network, coordmin, coordmax,&
1771 timei, timef,level,timerange,var,attr,anavar,anaattr,ana,dataonly,anaonly,template,attr_only)
1774character(len=network_name_len),
INTENT(in),
optional :: network
1777TYPE(geo_coord),
INTENT(in),
optional :: coordmin,coordmax
1779TYPE(datetime),
INTENT(in),
optional :: timei, timef
1780TYPE(vol7d_level),
INTENT(in),
optional :: level
1781TYPE(vol7d_timerange),
INTENT(in),
optional :: timerange
1784CHARACTER(len=*),
INTENT(in),
OPTIONAL :: var(:),attr(:),anavar(:),anaattr(:)
1789TYPE(vol7d_ana),
INTENT(inout),
optional :: ana
1790logical,
intent(in),
optional :: dataonly
1791logical,
intent(in),
optional :: anaonly
1794character(len=*),
intent(in),
optional :: template
1795logical,
intent(in),
optional :: attr_only
1798type(dbadcv) :: vars,starvars,anavars,anastarvars
1799type(dbafilter) :: filter
1800type(dbacoord) :: mydbacoordmin, mydbacoordmax
1801type(dbaana) :: mydbaana
1802type(dbadatetime) :: mydatetimemin, mydatetimemax
1803type(dbatimerange) :: mydbatimerange
1804type(dbalevel) :: mydbalevel
1805type(dbanetwork) :: mydbanetwork
1808LOGICAL :: lattr, lanaattr
1809integer :: nanaattr,nattr,nanavar,nvar
1818if (
present(var))
then
1819 nvar=count(c_e(var))
1821 allocate (vars%dcv(nvar))
1823 if (c_e(var(i)))
then
1824 allocate (vars%dcv(i)%dat,source=dbadatac(var(i)))
1830if (
present(anavar))
then
1831 nanavar=count(c_e(anavar))
1832 if (nanavar > 0)
then
1833 allocate (anavars%dcv(nanavar))
1835 if (c_e(anavar(i)))
then
1836 allocate (anavars%dcv(i)%dat,source=dbadatac(anavar(i)))
1843if (
present(attr))
then
1844 nattr=count(c_e(attr))
1847 allocate (starvars%dcv(nattr))
1849 if (c_e(attr(i)))
then
1850 allocate (starvars%dcv(i)%dat,source=dbadatac(attr(i)))
1857if (
present(anaattr))
then
1858 nanaattr=count(c_e(anaattr))
1859 if (nanaattr > 0)
then
1861 allocate (anastarvars%dcv(nanaattr))
1862 do i=1,
size(anaattr)
1863 if (c_e(anaattr(i)))
then
1864 allocate (anastarvars%dcv(i)%dat,source=dbadatac(anaattr(i)))
1872mydbacoordmin=dbacoord()
1873if (
present(coordmin)) mydbacoordmin%geo_coord=coordmin
1874mydbacoordmax=dbacoord()
1875if (
present(coordmax)) mydbacoordmax%geo_coord=coordmax
1877if (
present(ana)) mydbaana%vol7d_ana=ana
1878mydatetimemin=dbadatetime()
1879if (
present(timei)) mydatetimemin%datetime=timei
1880mydatetimemax=dbadatetime()
1881if (
present(timef)) mydatetimemax%datetime=timef
1882mydbatimerange=dbatimerange()
1883if (
present(timerange)) mydbatimerange%vol7d_timerange=timerange
1884mydbalevel=dbalevel()
1885if (
present(level)) mydbalevel%vol7d_level=level
1886mydbanetwork=dbanetwork()
1887if (
present(network))
call init(mydbanetwork%vol7d_network,name=network)
1892filter=dbafilter(coordmin=mydbacoordmin,coordmax=mydbacoordmax,ana=mydbaana, &
1893 datetimemin=mydatetimemin,datetimemax=mydatetimemax, &
1894 timerange=mydbatimerange,level=mydbalevel,network=mydbanetwork,&
1895 vars=vars,starvars=starvars,anavars=anavars,anastarvars=anastarvars,&
1896 dataonly=dataonly,anaonly=anaonly)
1901call export (this, filter,template,attr_only)
1903end SUBROUTINE vol7d_dballe_export_old
1906subroutine vol7d_dballe_export (this, filter, template, attr_only)
1909type(dbafilter),
intent(in) :: filter
1912character(len=*),
intent(in),
optional :: template
1913logical,
intent(in),
optional :: attr_only
1915character(len=40) :: ltemplate
1917type(dbametaanddatalist) :: metaanddatal
1920metaanddatal=dbametaanddatalist()
1922call v7d2dba(this%vol7d,metaanddatal)
1926if (this%file)
call this%handle%remove_all()
1929call metaanddatal%extrude(session=this%handle,filter=filter,attronly=attr_only,template=template)
1942 call filter%dbaset(this%handle)
1944 ltemplate=this%handle%template
1945 if (
present(template))
then
1949 call this%handle%messages_write_next(ltemplate)
1952 call this%handle%remove_all()
1956stat = metaanddatal%delete()
1958end subroutine vol7d_dballe_export
1961subroutine v7d2dba(v7d,metaanddatal)
1962TYPE(vol7d),
INTENT(in) :: v7d
1963type(dbametaanddatalist),
intent(inout) :: metaanddatal
1965TYPE(vol7d_serialize_dballe) :: serialize
1967serialize = vol7d_serialize_dballe_new()
1968serialize%anaonly=.true.
1969call serialize%vol7d_serialize_setup(v7d)
1970call serialize%vol7d_serialize_export(metaanddatal)
1972serialize = vol7d_serialize_dballe_new()
1973serialize%dataonly=.true.
1974call serialize%vol7d_serialize_setup(v7d)
1975call serialize%vol7d_serialize_export(metaanddatal)
1977end subroutine v7d2dba