Description
After metadata generation #1273 has been implemented, add code to generate synthetic weather data for test purposes. This is a sub-issue of numbered item 1 from the description of #1218,
The data will need to contain:
- values within sensible maximum/minimum range for each parameter
- some spatial variation across the grid eg. not a constant value or random white noise
- variation with validity time and between ensemble members
- basic following of meteorological and physical principles eg. temperature is generally cooler at higher altitude
Using an underlying mathematical function with max/min range, latitude, longitude, altitude, time and realisation inputs may be useful as a flexible and generalisable starting point.
Start with ancillaries (eg. land-sea mask and orography) then use these as a basis for building up other parameters in a semi-consistent synthetic world. Extend the CLI from #1273 or add a separate CLI for combined metadata+data generation.
Consultation and discussion with IMPROVER scientists will be needed to decide on methods for producing sufficiently realistic weather data to adequately test other processing code in IMPROVER.
If in doubt, start with a simple, general method and add more specialisation and complexity when issues are identified with the synthetic data being too simple to adequately test post-processing code for a particular weather parameter. The testing functions from #1274 should make it easy to update test cases if there are later updates to the synthetic data generation method.
This work would be best tackled as a series of pull requests incrementally adding functionality (eg. a weather parameter or related group at a time), so that it is manageable for review, rather than one large pull request.