DART icon indicating copy to clipboard operation
DART copied to clipboard

Offline perfect_model_obs

Open hkershaw-brown opened this issue 7 months ago • 5 comments

Image

Can this be done with current PMO? Select timeslice?

hkershaw-brown avatar Jun 03 '25 20:06 hkershaw-brown

PMO provides state solution at the observation time specified in the obs_seq file, which are denoted by the red dots in the sketch. These can be irregular in time.

Can you provide more details? I'm not quite sure I understand the offline part.

mgharamti avatar Jun 03 '25 20:06 mgharamti

The case would be if I had an existing long model run so a netcdf file with a bunch (n) of timeslices, and I wanted to make synthetic obs for the whole period can I give perfect_model_obs a time-slice to use? So run n perfect_models, to get n obs_seqs. And since no time dependence run all n at once (n jobs).

hkershaw-brown avatar Jun 03 '25 21:06 hkershaw-brown

perfect_model_obs namelist docs for single_file is not helpful

hkershaw-brown avatar Jun 13 '25 14:06 hkershaw-brown

In cam-fv the time is handled by the run script (perfect_model.csh.template), which is run by CESM at the end of a hindcast. It harvests the time of the state data from a file name and then looks for an obs_seq.out file for that date. So it would be fairly straightforward to just specify the time from some list the user has and extract the state from the multi-time file. This would be slower than enabling perfect_model_obs to extract the time from the multi-time file, but easier to implement.

One additional requirement is that there be an obs_seq.output file for each date. That will depend on whether the obs network is constant, so a template file could be used with the current time pasted in, or it varies with time, so that the user would need to provide a separate obs_seq.final for each time.

There may be more complications . . .

kdraeder avatar Jul 22 '25 17:07 kdraeder

Here are a few of examples of possible use cases if this helps, two actual and one speculative (made up).

case 1. User has a long run (~10 years) of a model, that they then want to use to create synthetic observation input. The obs times and locations (daily) are from the e.g. World Ocean Database (which we have in obs_seq format already) Currently (couple of people have scripted this up): extract a slice from the monthly files into daily files running perfect_model_obs with the match obs_seq.

These steps are perfectly parallel so you can run all the slices at once.

case 2. There is (or will be) a 20 year MOM6 (NCAR) run and there is an existing 20 year MOM6 (GFDL) run, and people are interested in a model-to-obs comparison in observation space for all the observations that are available for the 20 years. So they use pmo to get the fwd ops (no added noise) for each model and do science. Not DA, but maybe a gateway drug to DA?

case 3 - speculative: If you wanted to create a bunch of "observations" from say ERA5 (or other long running product), is pmo the tool to do this?

p.s. @kdraeder put this hot take in your brain while you are thinking about this: filter and pmo are the same thing. :boom: #909

hkershaw-brown avatar Jul 22 '25 20:07 hkershaw-brown