Opened 15 years ago

Closed 15 years ago

#174 closed enhancement (fixed)

ropp_io_rangecheck - limits on FM input data requirements

Reported by: Huw Lewis Owned by: Huw Lewis
Priority: normal Milestone: 4.0
Component: ROPP (all) Version: 3.0
Keywords: rangecheck Cc:

Description

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.

Change history (1)

comment:1 by Huw Lewis, 15 years ago

Resolution: fixed
Status: newclosed

See #183.

For the time being, decided to maintain the current expectation that each level of data has associated valid level information defined. The only problem of this approach may be for checking input Level2b data where geopotentials may not be defined. It could therefore be possible to make checks for either valid level information or valid data for Level2b. Observation data should always have valid level information (and I guess this is the motivation for expressing the rangecheck routines in this way).

The -no_rangecheck command line option has been added at ROPP-4, which may help users in this way.

Release notes updated to include this as a 'limitation'.

Ticket closed as fixed.

Note: See TracTickets for help on using tickets.