| MVLib - Short Writeup - Version 4.0 Example Number 14 - Comparison of observed and MM5 predicted time series | This example shows how to compare MM5 predicted and IIRA (or other source)
observed time series.
The routine museoanagrafica allows to retrieve information for the
selected record (variables rec of fortran code)
The value of observed temperature
are retieved by 
the routine museotimeseries that "fill" the vector iira
with the time series of one year for the record specified by the first argument.
The subset of data starting form the first MM5 time slice are then stored
in the vector y1.
The MM5 model output is read by the routine 
mm5readfld and are interpolated
on a specific point (variables xlat and xlon of fortran
code) by the real function ginterp, such value are the stored
in the vector y2. The real vectors y1 and y2 are then
plotted by the two calls to plottavw routine.
The MVLib internal flag "Asse x" is set to 1
in order to have the day hours on x axis.
The MVLib functions bias and rmse are also used to 
calculate the bias and the root mean square error; such values are
also written on the plot writing them on the character variable title
and calling the utility scrivisulplot with this variable as
first argument.
The first call to displayplot produces the graphic file specified as
firs argument, the second call to this routine
(with empty first argument) display the plot. The source code to produce these plots is available here and the complete script running the code is available here. | |||||||
|   | ||||||||
| 
 | ||||||||
| 
	parameter (ixm=100,jxm=100,kxm=23,nh=48)
	real t(ixm,jxm,kxm),lat(ixm,jxm),lon(ixm,jxm)
	real x1(366*4*24),iira(366*4*24),x(nh),y1(nh),y2(nh),xlat,xlon
	integer rec,ora,giorno,mese,anno 
	character com*64,sens*32,data*64,title*80
	call mvsetflags('data style',2.0)
	rec=207
	call museoanagrafica ('iira',rec,com,sens,xlat,xlon)
	open (40,file='tmp/MMOUTP_DOMAIN3',form='unformatted',status='old')
	n=0
	call mm5readfld (40,'latitdot' ,n,lat,ixm,jxm,1,ix,jx,kx) 
	call mm5readfld (40,'longidot' ,n,lon,ixm,jxm,1,ix,jx,kx)
	mm5index=mm5mif(1,mm5mif(1,1))
	call gmafrommm5index(mm5index,ora,giorno,mese,anno)
	anno=2010
	call ugt2localtime(ora,giorno,mese,anno)
	call museotimeseries ('iira',rec,anno,x1,iira,n)
	ifirst=index15m(00,ora,giorno,mese,anno)
	xtime=ora-1
	do i=1,nh
	   xtime=xtime+1
	   x(i)=xtime 
	   y1(i)=iira(ifirst+(i-1)*4)
	enddo
	call mvsetflags('Dominio ',3.0)
	n=0 ; call mvsetflags('Check Landuse',1.0)
	do i=1,nh
	   call mm5readfld (40,'ground t',n,t  ,ixm,jxm,kxm,ix,jx,kx)
	   y2(i)=ginterp(t,lat,lon,ixm,jxm,xlat,xlon)-273.15
	enddo
	call mvsetflags('size delle linee',3.)
	call mvsetflags('Asse x',1.)
	call plottaframe(x(1)-1,nh+1.0,2.0,max(vecmax(y1,nh),vecmax(y2,nh))+1)
	call mvsetflags('Colore plotta',13.)
	call plottavw(x,y2,nh,' ')
	call legend(0.5,0.86,1.0,13,'MM5 prediction')
	call mvsetflags('Colore plotta',14.)
	call plottavw(x,y1,nh,' ')
	call legend(0.5,0.84,1.0,14,'IIRA observation')
	write(title,'(2(a,f4.1))')'RMSE=',rmst(y1,y2,nh),' bias=',bias(y1,y2,nh)
	call scrivisulplot(title,0.45,0.22)
	call scrivisulplot('daytime (CUT)',0.8,0.15)
	write(title,'(a)') com(1:lenstr(com))//' - '//sens
	call datafromhour (ora,giorno,mese,anno,data)
	call displayexample('example14',title,'Data since '//data)
	end
    | ||||||||