Version 5 (modified by Jin Lee, 12 months ago) (diff)


Problems encountered when OPS reads observational data from obstore files

There are 2 ways to read data from obstores: one way is to let Ops_ExtractAndProcess to work out all settings from the obstore and read obs. Here's a list of things to keep in mind when running Ops_ExtractAndProcess this way:

  • It's safer to let OPS determine various parameters - e.g. batch numbers, buffer sizes, etc. - rather than setting them in extractcontrolnl namelist. This means in OPS app config file remove entire extractcontrolnl namelist as well as the file that normally holds the namelist
  • In order to not to use extractcontrolnl namelist at all not only do you need to remove the namelist and the file that contains it from app config file but you will also need to delete the file "<obstype>.nl" from Rose working directory,
<top-level Cylc directory on remotehost>/work/<cycletime>/glu_ops_process_background_<obstype>/ops_extract_control
  • Estimate the amount of memory required to read observations and allocate space within OPS program. Then use PBS resource request just enough to finish processing. This is based on my hunch that the reason for the failure stems from the fact that there might be not enough observations in some PE's and so OPS is allocating memory to certain variables during CX creation, which may be empty (Again this is only my hunch).

Another way is to let Ops_CreateODB read the obstore and then write out ODB1; then let Ops_ExtractAndProcess read ODB1 and then write back to ODB1. This method should be used as it produces updated ODB1 which can be used by VER. However it's hard to know whether OPS retrieved all the data from an obstore file correctly. To make sure that all data are retrieved use the first method and then put together the app config file using the second method while comparing the log output.


  • Susan opened an OPS ticket where a related issue is discussed