libsim  Versione6.3.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 1743 del file vol7d_dballe_class.F03.

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

Generated with Doxygen.