libsim  Versione7.2.6

◆ 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 1736 del file vol7d_dballe_class.F03.

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

Generated with Doxygen.