Replies: 9 comments 1 reply
-
the perturb option generates an ensemble of states from a single state. i don't know if it makes sense to write out an input or forecast file that is only a single member and then the rest of the files are a full ensemble. i'd have to think about that one for a while. it might be that the right thing to do is point out that when generating an ensemble by using perturbations, that the input and forecast outputs include those. |
Beta Was this translation helpful? Give feedback.
-
if you run 'perturb_single_instance' first and then run filter, i would think you should see the same files and same values in the 'forecast' output as you'd do if you had filter do the perturb. |
Beta Was this translation helpful? Give feedback.
-
Ideally, filter should be able to write out the ensemble:
'input' is a good name for 1. @nancycollins raised an issue (offline) in the case where filter is asked to perturb a single state
|
Beta Was this translation helpful? Give feedback.
-
I'm picturing running perturb_single_instance before running the ensemble hindcast, |
Beta Was this translation helpful? Give feedback.
-
hi kevin, i'm a little confused. you are picturing running perturb_single_instance which generates N files. you have the perturbed data in those files. but if you run a "hindcast" (the model advance?), now you have evolved, advanced-in-time files. you have the initial files that went into your model, and you have the output from your model. you are no longer perturbing and then running filter immediately. i'm talking about perturbing a single state and immediately running filter, vs running filter and perturbing inside it. those should product the same forecast file. am i misunderstanding your case? i think what is happening right now in the code is both the most useful for people and the least surprising. so i'm trying to understand exactly what problem you're trying to solve here. this code also has to do reasonable things when putting all ensemble members, mean, sd, etc into a single DART-defined-format netcdf file. it all works fine right now. i see no need to change things other than making the documentation more explicit here. n. |
Beta Was this translation helpful? Give feedback.
-
KR; correct.
KR In the case with no model advance I agree that running perturb_single_instance and then
KR In a CAM multi-cycling context I always do a model advance first.
KR If I use perturb_single_instance before the first model advance, then I will not have a problem.
KR I don't see how it could make any functional difference whether we write to a single file;
It's the same data volume and structure, just different values. I'd say that it works fine in the sense that no one before me has brought it up. |
Beta Was this translation helpful? Give feedback.
-
@kdraeder thinks that stage 'input' should be written before perturbations are added in filter (small localized code change). |
Beta Was this translation helpful? Give feedback.
-
2017 todo in filter_mod: call set_perturb_members DART/assimilation_code/modules/assimilation/filter_mod.f90 Lines 2450 to 2456 in 4dadee7 |
Beta Was this translation helpful? Give feedback.
-
@kdraeder First of, sorry I'm late to the party. I think the issue Nancy might be referring to here if all members in the input stage are the same as the provided file, then the input_sd is 0. I have no preference, but logically I would expect the input to be the provided version by the user so all members are the same. But then when you add perturbations to it, why would we call that ensemble a forecast one? Personally, in WRF-Hydro I've always started from a single state. The way I do it is I run filter with a single obs dummy file that has uninformative observation. I use that result to then integrate the model and apply filter updates. You could also run filter with perturb_single_instance set to true and only evaluate your obs as the first step. Obviously, this can be done in many different ways and it comes down to what makes more sense to different people. @hkershaw-brown is this todo related to the discussion here? It seems ancient. |
Beta Was this translation helpful? Give feedback.
-
Describe the bug
What was the expected outcome?
Writing stage input andor forecast should archive the ensemble of states that resulted from the model hindcast.
https://docs.dart.ucar.edu/en/latest/guide/controlling-files-output.html describes it as "the ensemble forecast"
with no mention of perturbations.
The 'input' stage is not described there for the case where single_file_out = .false.
What actually happened?
The model states have been perturbed by perturb_from_single_instance = .true. and any perturbation code in model_mod.
Error Message
None
Which model(s) are you working with?
Any
Version of DART
v10.8.2
Have you modified the DART code?
No
Build information
Any build
Comments,
Filter perturbs the read-in state in create_ensemble_from_single_file, which immediately follows read_state.
This precedes the writes of "input" before the time loop and "forecast" in the time loop.
This may have been an intentional design choice, or there might not have been better names for those stages,
but we should at least note this in the documention and tell people to turn off the perturbations if they want to see the state(s) read into filter.
It can be useful to see the state with the perturbations, so maybe the 'forecast' stage should continue to fill that role, but 'input' seems unsuitable for that.
Does the ensemble need to be created before filter_generate_copy_meta_data?
Sections after that are about the observations to use and the time window, which don't require a complete or perturbed ensemble.
Then compute_copy_mean_sd is called, and stage "input" is written.
Is it possible to put the call to create_ensemble_from_single_file after the write of "input"?
How about after the write of "forecast"?
Beta Was this translation helpful? Give feedback.
All reactions