﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
174	ropp_io_rangecheck - limits on FM input data requirements	Huw Lewis	Huw Lewis	"Email from Axel:


{{{
I noticed that the ropp_fm_bg2ro_1d requires input geopotentials on
 model levels when using ECMWF hybrid levels. These geopotentials 
are actually calculated from temp, pres, surf. geop within the 
forward model, so they shouldn't be required as input. The operator 
is correctly writing out the calculated geopotentials though. I 
suggest to remove this input requirement (setting input geopot. to 
dummy values also fails, so one has to pass in some sensible 
numbers).


}}}

My response

{{{
You are correct in your comments. Off the top of my head, geop is 
not a requirement of the FM routines. However, model geopoptential 
data are used in the ropp_io module (ropp_io_rangecheck) to 
determine whether there are any valid Level2b (i.e. background) 
data. Many of the issues with ROPP performance seem to come back to
 the implicit assumptions made in this routine!!



I agree with you that this behaviour is not ideal. I am putting your
 comments in a Trac ticket and will apply a fix for release ROPP-4.
 In the meantime, I suggest you edit your local copy of 
/ropp_io/ropp/ropp_io_rangecheck.f90 (Section 7). I
 think it is easiest to run the check on using only those levels
 where you have valid ROdata%Lev2b%Shum rather than geop (this would
 be a common requirement for both ECMWF and Met Office backgrounds
 for example). You could alternatively comment the whole section
out, and rely on the assumption that you will always have 91 valid
 background values in your input.



! Every level must have a valid geopotential height value; 
! if all are missing, then set whole L2b profile to zero length.

! If only some heights are missing, filter them out



    idx => WHERE ( ROdata%Lev2b%Geop > ropp_io_mdtv, nidx )

    IF ( nidx == 0 ) THEN

      ROdata%Lev2b%Npoints = 0

    ELSE IF ( nidx < ROdata%Lev2b%Npoints ) THEN

      ROdata%Lev2b%Npoints             = nidx

      ROdata%Lev2b%Geop(1:nidx)        = ROdata%Lev2b%Geop(idx)
...etc

}}}

Need to review ropp_io_rangecheck to test whether 'required data' tests to define the number of valid points in each data level are reasonable. e.g. may wish to specify requirement of shum for valid background data (rather than geop), valid refrac data (rather than alt_refrac) etc. Otherwise, we are relying on all elements of a data level being valid in the input from users when this need not be the case.

Review code and provide fix for ROPP-4 relelase. "	enhancement	closed	normal	4.0	ROPP (all)	3.0	fixed	rangecheck	
