libsim  Versione8.0.0

◆ vol7d_dballe_set_var_du()

subroutine, public vol7d_dballe_class::vol7d_dballe_set_var_du ( type(vol7d)  this)

Integra il vettore delle variabili in vol7d con le descrizioni e le unità di misura eventualmente mancanti.

Parametri
thisoggetto vol7d con le variabili da completare

Definizione alla linea 1742 del file vol7d_dballe_class.F03.

1742 
1743 unit = getunit()
1744 IF (unit == -1) RETURN
1745 
1746 OPEN(unit, file=path, status='old', iostat = i)
1747 IF (i == 0) THEN
1748  CALL l4f_log(l4f_info, 'dballe file '//trim(path)//' opened')
1749  RETURN
1750 ENDIF
1751 
1752 CALL l4f_log(l4f_error, 'dballe file '//trim(filename)//' not found')
1753 CALL raise_error()
1754 unit = -1
1755 
1756 END FUNCTION open_dballe_file
1757 
1758 
1763 
1764 
1765 !!! TODO manage attr_only
1766 !!! attention template migrated in init
1767 !SUBROUTINE vol7d_dballe_export(this, network, coordmin, coordmax,&
1768 ! timei, timef,level,timerange,var,attr,anavar,anaattr,attr_only,ana,dataonly)
1769 
1770 SUBROUTINE vol7d_dballe_export_old(this, network, coordmin, coordmax,&
1771  timei, timef,level,timerange,var,attr,anavar,anaattr,ana,dataonly,anaonly,template,attr_only)
1772 
1773 TYPE(vol7d_dballe),INTENT(inout) :: this
1774 character(len=network_name_len),INTENT(in),optional :: network
1777 TYPE(geo_coord),INTENT(in),optional :: coordmin,coordmax
1779 TYPE(datetime),INTENT(in),optional :: timei, timef
1780 TYPE(vol7d_level),INTENT(in),optional :: level
1781 TYPE(vol7d_timerange),INTENT(in),optional :: timerange
1784 CHARACTER(len=*),INTENT(in),OPTIONAL :: var(:),attr(:),anavar(:),anaattr(:)
1785 !!$!> permette di riscrivere su un DSN letto precedentemente, modificando solo gli attributi ai dati,
1786 !!$!! ottimizzando enormente le prestazioni: gli attributi riscritti saranno quelli con this%data_id definito
1787 !!$!! (solitamente ricopiato dall'oggetto letto)
1788 !!$logical,intent(in),optional :: attr_only
1789 TYPE(vol7d_ana),INTENT(inout),optional :: ana
1790 logical, intent(in),optional :: dataonly
1791 logical, intent(in),optional :: anaonly
1794 character(len=*),intent(in),optional :: template
1795 logical, intent(in),optional :: attr_only
1796 
1797 
1798 type(dbadcv) :: vars,starvars,anavars,anastarvars
1799 type(dbafilter) :: filter
1800 type(dbacoord) :: mydbacoordmin, mydbacoordmax
1801 type(dbaana) :: mydbaana
1802 type(dbadatetime) :: mydatetimemin, mydatetimemax
1803 type(dbatimerange) :: mydbatimerange
1804 type(dbalevel) :: mydbalevel
1805 type(dbanetwork) :: mydbanetwork
1806 
1807 integer :: i
1808 LOGICAL :: lattr, lanaattr
1809 integer :: nanaattr,nattr,nanavar,nvar
1810 
1811 
1812  ! ------------- prepare filter options
1813 
1814 !!
1815 !! translate export option for dballe2003 api
1816 !!
1817 
1818 if (present(var)) then
1819  nvar=count(c_e(var))
1820  if (nvar > 0) then
1821  allocate (vars%dcv(nvar))
1822  do i=1,size(var)
1823  if (c_e(var(i)))then
1824  allocate (vars%dcv(i)%dat,source=dbadatac(var(i))) !char is default
1825  end if
1826  end do
1827  end if
1828 end if
1829 
1830 if (present(anavar)) then
1831  nanavar=count(c_e(anavar))
1832  if (nanavar > 0) then
1833  allocate (anavars%dcv(nanavar))
1834  do i=1,size(anavar)
1835  if (c_e(anavar(i)))then
1836  allocate (anavars%dcv(i)%dat,source=dbadatac(anavar(i))) !char is default
1837  end if
1838  end do
1839  end if
1840 end if
1841 
1842 lattr = .false.
1843 if (present(attr)) then
1844  nattr=count(c_e(attr))
1845  if (nattr > 0) then
1846  lattr = .true.
1847  allocate (starvars%dcv(nattr))
1848  do i=1,size(attr)
1849  if (c_e(attr(i)))then
1850  allocate (starvars%dcv(i)%dat,source=dbadatac(attr(i))) !char is default
1851  end if
1852  end do
1853  end if
1854 end if
1855 
1856 lanaattr = .false.
1857 if (present(anaattr)) then
1858  nanaattr=count(c_e(anaattr))
1859  if (nanaattr > 0) then
1860  lanaattr = .true.
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))) !char is default
1865  end if
1866  end do
1867  end if
1868 end if
1869 
1870 
1871  ! like a cast
1872 mydbacoordmin=dbacoord()
1873 if (present(coordmin)) mydbacoordmin%geo_coord=coordmin
1874 mydbacoordmax=dbacoord()
1875 if (present(coordmax)) mydbacoordmax%geo_coord=coordmax
1876 mydbaana=dbaana()
1877 if (present(ana)) mydbaana%vol7d_ana=ana
1878 mydatetimemin=dbadatetime()
1879 if (present(timei)) mydatetimemin%datetime=timei
1880 mydatetimemax=dbadatetime()
1881 if (present(timef)) mydatetimemax%datetime=timef
1882 mydbatimerange=dbatimerange()
1883 if (present(timerange)) mydbatimerange%vol7d_timerange=timerange
1884 mydbalevel=dbalevel()
1885 if (present(level)) mydbalevel%vol7d_level=level
1886 mydbanetwork=dbanetwork()
1887 if (present(network)) call init(mydbanetwork%vol7d_network,name=network)
1888 
1889 !!
1890 !! here we have options ready for filter
1891 !!
1892 filter=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)
1897 
1898 !!$ print *, "filter:"
1899 !!$ call filter%display()
1900 
1901 call export (this, filter,template,attr_only)
1902 
1903 end SUBROUTINE vol7d_dballe_export_old
1904 
1905 
1906 subroutine vol7d_dballe_export (this, filter, template, attr_only)
1907 
1908 TYPE(vol7d_dballe),INTENT(inout) :: this
1909 type(dbafilter),intent(in) :: filter
1912 character(len=*),intent(in),optional :: template
1913 logical, intent(in),optional :: attr_only
1914 
1915 character(len=40) :: ltemplate
1916 
1917 type(dbametaanddatalist) :: metaanddatal
1918 logical :: stat
1919 
1920 metaanddatal=dbametaanddatalist()
1921 
1922 call v7d2dba(this%vol7d,metaanddatal)
1923 !call metaanddatal%display()
1924 
1925 !clean memdb
1926 if (this%file) call this%handle%remove_all()
1927 
1928 ! using filter here can limit memory use for memdb
1929 call metaanddatal%extrude(session=this%handle,filter=filter,attronly=attr_only,template=template)
1930 
1931 if (this%file) then
1932  !!!!! this if we have written in memdb and now we have to write the file
1933 
1934  !filter is already in extrude
1935  !this%handle%set(filter=filter)
1936 
1937  ! export to file
1938  !! TODO : revert template from init to export !!!!!!!!!!!!!!!!!!!!!
1939  !!call this%handle%messages_write_next(template)
1940 
1941  ! note that you can use unsetall hera because the filter was used in extrude
1942  call filter%dbaset(this%handle)
1943 
1944  ltemplate=this%handle%template
1945  if (present(template))then
1946  ltemplate=template
1947  end if
1948 
1949  call this%handle%messages_write_next(ltemplate)
1950 
1951  !clean memdb
1952  call this%handle%remove_all()
1953 
1954 end if
1955 
1956 stat = metaanddatal%delete()
1957 
1958 end subroutine vol7d_dballe_export
1959 
1960 
1961 subroutine v7d2dba(v7d,metaanddatal)
1962 TYPE(vol7d),INTENT(in) :: v7d !!!!!! dovrebbe essere intent(in)
1963 type(dbametaanddatalist),intent(inout) :: metaanddatal
1964 
1965 TYPE(vol7d_serialize_dballe) :: serialize
1966 
1967 serialize = vol7d_serialize_dballe_new()
1968 serialize%anaonly=.true.
1969 call serialize%vol7d_serialize_setup(v7d)
1970 call serialize%vol7d_serialize_export(metaanddatal)
1971 
1972 serialize = vol7d_serialize_dballe_new()
1973 serialize%dataonly=.true.
1974 call serialize%vol7d_serialize_setup(v7d)
1975 call serialize%vol7d_serialize_export(metaanddatal)
1976 
1977 end subroutine v7d2dba
1978 
1979 
1980 end MODULE vol7d_dballe_class
1981 
1985 
1990 
1995 
classe per import ed export di volumi da e in DB-All.e

Generated with Doxygen.