-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: MOM6 interface #451
Comments
Q. For vertical location should we use Layer pseudo-depth?
Q. Is
|
I think this is similar to what goes on with eta (or hybrid eta/pressure)
coordinates in the atmosphere. The actual depth in meters of a given grid
point can vary with other aspects of the state. In atmospheric models, this
is normally the surface pressure. We probably need to talk with the
modelers to understand this better. As I recall, our response in
atmospheric models has been to use the ensemble mean to do the computations
of vertical location?
…On Wed, Feb 15, 2023 at 2:27 PM hkershaw-brown ***@***.***> wrote:
Q. For vertical location should we use Layer pseudo-depth?
double Layer(Layer) ;
Layer:long_name = "Layer pseudo-depth, -z*" ;
Layer:units = "meter" ;
Layer:axis = "Z" ;
Layer:positive = "up" ;
Q. Is Layer pseudo-depth per ensemble member?
Q. Layer pseudo-depth is only 1D (Layer), h Layer Thickness is 3D (Layer,
lath, lonh). What is going on here?
double h(Time, Layer, lath, lonh) ;
h:long_name = "Layer Thickness" ;
h:units = "m" ;
h:checksum = "B012521BB74AB9DA" ;
—
Reply to this email directly, view it on GitHub
<#451 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ANDHUISFAHFPIQXLGJFCEYTWXVC53ANCNFSM6AAAAAAUSZZY5A>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
The kids are home today so I'm mostly away, but Helen let's put this on the
agenda for our meeting with Alper tomorrow afternoon.
Dan
…On Wed, Feb 15, 2023 at 2:54 PM jlaucar ***@***.***> wrote:
I think this is similar to what goes on with eta (or hybrid eta/pressure)
coordinates in the atmosphere. The actual depth in meters of a given grid
point can vary with other aspects of the state. In atmospheric models, this
is normally the surface pressure. We probably need to talk with the
modelers to understand this better. As I recall, our response in
atmospheric models has been to use the ensemble mean to do the computations
of vertical location?
On Wed, Feb 15, 2023 at 2:27 PM hkershaw-brown ***@***.***>
wrote:
> Q. For vertical location should we use Layer pseudo-depth?
>
> double Layer(Layer) ;
> Layer:long_name = "Layer pseudo-depth, -z*" ;
> Layer:units = "meter" ;
> Layer:axis = "Z" ;
> Layer:positive = "up" ;
>
> Q. Is Layer pseudo-depth per ensemble member?
> Q. Layer pseudo-depth is only 1D (Layer), h Layer Thickness is 3D (Layer,
> lath, lonh). What is going on here?
>
> double h(Time, Layer, lath, lonh) ;
> h:long_name = "Layer Thickness" ;
> h:units = "m" ;
> h:checksum = "B012521BB74AB9DA" ;
>
> —
> Reply to this email directly, view it on GitHub
> <#451 (comment)>, or
> unsubscribe
> <
https://github.com/notifications/unsubscribe-auth/ANDHUISFAHFPIQXLGJFCEYTWXVC53ANCNFSM6AAAAAAUSZZY5A
>
> .
> You are receiving this because you are subscribed to this thread.Message
> ID: ***@***.***>
>
—
Reply to this email directly, view it on GitHub
<#451 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADCQXR2V46XSTYUR6ZSL2YLWXVGCHANCNFSM6AAAAAAUSZZY5A>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
ignoring per ensemble member pseudo-depths for now, see #451 for discussion on depth
just for completeness, after chatting with Dan and Alper, |
My ignorant assumption is that yes, they could be in different 'layers' for
different ensemble members. I think I recall coding this capability when
writing the first draft of the forward operators for CAM when we were
moving to Manhattan? Can we just implement the same capability for MOM?
…On Fri, Feb 17, 2023 at 11:09 AM hkershaw-brown ***@***.***> wrote:
I think this is similar to what goes on with eta (or hybrid eta/pressure)
coordinates in the atmosphere. The actual depth in meters of a given grid
point can vary with other aspects of the state. In atmospheric models, this
is normally the surface pressure. We probably need to talk with the
modelers to understand this better. As I recall, our response in
atmospheric models has been to use the ensemble mean to do the computations
of vertical location?
just for completeness, after chatting with Dan and Alper,
Yes inside filter_assim, get_close vertical calculations are with the
ensemble mean. The subtlety is for the forward operator, e.g. can an
observation at depth X be in level 3 for one ensemble member and level 4
for another.
—
Reply to this email directly, view it on GitHub
<#451 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ANDHUIUJ6YE23TT6TFXBJ2TWX65GVANCNFSM6AAAAAAUSZZY5A>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
yup you are correct. |
Maybe Helen wrote that code and I'm just remembering discussions about the
issue with different layers.
…On Fri, Feb 17, 2023 at 11:30 AM Jeffrey Anderson ***@***.***> wrote:
My ignorant assumption is that yes, they could be in different 'layers'
for different ensemble members. I think I recall coding this capability
when writing the first draft of the forward operators for CAM when we were
moving to Manhattan? Can we just implement the same capability for MOM?
On Fri, Feb 17, 2023 at 11:09 AM hkershaw-brown ***@***.***>
wrote:
> I think this is similar to what goes on with eta (or hybrid eta/pressure)
> coordinates in the atmosphere. The actual depth in meters of a given grid
> point can vary with other aspects of the state. In atmospheric models, this
> is normally the surface pressure. We probably need to talk with the
> modelers to understand this better. As I recall, our response in
> atmospheric models has been to use the ensemble mean to do the computations
> of vertical location?
>
> just for completeness, after chatting with Dan and Alper,
> Yes inside filter_assim, get_close vertical calculations are with the
> ensemble mean. The subtlety is for the forward operator, e.g. can an
> observation at depth X be in level 3 for one ensemble member and level 4
> for another.
>
> —
> Reply to this email directly, view it on GitHub
> <#451 (comment)>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ANDHUIUJ6YE23TT6TFXBJ2TWX65GVANCNFSM6AAAAAAUSZZY5A>
> .
> You are receiving this because you commented.Message ID:
> ***@***.***>
>
|
yeah it is kind of pain with the vectorized forward operators. DART/assimilation_code/modules/utilities/distributed_state_mod.f90 Lines 35 to 39 in 224698d
|
re: forwards operators and different vertical levels in different ensemble members the wrf model_mod has this code already (written by helen originally) and mpas has it, too. |
For masking out land. ocean_geometry.nc (example in /glade/scratch/hkershaw/c.e22.CMOM.T62_t061.nuopc.001)
|
MOM6 does a check checksums for the variables in restart files. Example, here is me filling 'Temp' with junk:
This is the error you get cesm.log.8706019.chadmin1.ib0.cheyenne.ucar.edu.230223-070401
DART is going to change the variables, so the checksums aren't going to match. What is the best thing to do here? Switch off the checking checksums? Update the checksum attribute so the restart file is consistent? Remove the checksum attribute from the restart file? I think I should be able to switch of the checksum check by namelist in
|
Hi @alperaltuntas |
Advice from Alper on the restart files appearing to be variable(lat,lon):
ocean_geometry.nc
At some point hopefully the MOM6 grid docs get fleshed out: https://mom6.readthedocs.io/en/main/grids.html |
boom 💥 c.e22.CMOM.T62_t061.nuopc.001.mom6.static.nc is what you want. example: /glade/scratch/hkershaw/c.e22.CMOM.T62_t061.nuopc.001/run/c.e22.CMOM.T62_t061.nuopc.001.mom6.static.nc
|
see #451 for discusion on which files the grids are stored in. Be aware MOM6 is in development. Note wet (ocean or land) is available for T,U,V. Still just using T in this commit. Also fixes on_t_grid if statement logic
Note on layer thickness which varies across the ensemble. For this example run: restart files have 60 layers (61 interfaces)
and h as layer thickness
history files have fewer layers?
where h is layer thickness
Note, layer thickness may be called I'm going with restart file layers since we are using the restart file data as the state. |
> Should the thickness be part of the state and get updated by
assimilation?
No, I don't think so. I talked with Frank about this. The ALE coordinate is
not tied to any conservation laws as would be an isopycnal model, where
e.g. if you changed temperature might have to alter layer thickness for
consistency. MOM6 will do its own remapping based on the restart file it
gets based on that previous set of coordinates.
If I'm wrong, hopefully something horrific will happen and we'll know
quickly ;-)
…On Thu, Mar 9, 2023 at 8:57 AM hkershaw-brown ***@***.***> wrote:
Note on layer thickness which varies across the ensemble.
For this example run:
/glade/scratch/hkershaw/c.e22.GMOM.T62_g16.nuopc.001/run
restart files have 60 layers (61 interfaces)
netcdf c.e22.GMOM.T62_g16.nuopc.001.mom6.r.0001-01-06-00000 {
dimensions:
lath = 384 ;
lonh = 320 ;
latq = 384 ;
lonq = 320 ;
Layer = 60 ;
Interface = 61 ;
Time = UNLIMITED ; // (1 currently)
and h as layer thickness
double h(Time, Layer, lath, lonh) ;
h:long_name = "Layer Thickness" ;
h:units = "m" ;
history files have fewer layers?
netcdf c.e22.GMOM.T62_g16.nuopc.001.mom6.h_0001_09 {
dimensions:
xq = 320 ;
yh = 384 ;
z_l = 34 ;
z_i = 35 ;
where h is layer thickness
float h(time, z_l, yh, xh) ;
h:long_name = "Layer Thickness" ;
h:units = "m" ;
Note, layer thickness may be called e in some MOM6 versions, I think it
is h here.
I'm going with restart file layers since we are using the restart file
data as the state.
Should the thickness be part of the state and get updated by assimilation?
—
Reply to this email directly, view it on GitHub
<#451 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADCQXRZNWAJCRBDCBWC3NODW3H4V7ANCNFSM6AAAAAAUSZZY5A>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Notes on the scripting for MOM6 Looking at the cam-fv various scripts I'm not sure what the goal is of having a no_assimilate.csh and an assimilate.csh e.g setup_advanced
DART.config.template
|
Looking at where the DATA_ASSIMILATION_SCRIPT is called in case_run.py: and use the case module to access al the xml variables (DATA_ASSIMILATION_SCRIPT in python)? |
There is a data assimilation true/false for each component, but only one data_assimilation_script
data_assimilation logical a function in case_run.py |
🐛 MOM6 model_mod read_time is currently just reading the time from the MOM6 restart file. This is years from 1 (or maybe 0?). The obs_seq files have the dart time (1601 + X). |
Not sure if this is a bug on our end or Cheyenne network problems. June 6 2023 Edit: this was a bug, not catching observations that are too deep: fixed in #492 |
Was this closed by #467? |
Hi @TomNicholas the scripting for running a MOM6-DART with CESM is not done yet. Let us know if you are interested in running MOM6-DART or if you have scripts/code that you want to contribute. |
Derecho: CESM tag to use cesm2_3_alpha16g |
Use case
Data assimilation with MOM6 and DART
Is your feature request related to a problem?
Currently no interface for MOM6 for dart.
Describe your preferred solution
To do:
Describe any alternatives you have considered
There is some work here https://github.com/amrhein/DART/tree/mom6 where Dan and I looked at starting with the POP model_mod. POP has the KMU KMT files for bathymetry and uses its own structure for finding the enclosing grid point (vs. the new quad_interp_mod). MOM6 has variables on T,U,V.
Here is the branch for the latest work on MOM6 model_mod.released in v10.7https://github.com/NCAR/DART/tree/mom6-cesm
Note restart files we have, have 1d lon, lat vs. 2d lon,lat. Watch out for this, we may need to have two versions of the quad interp calls.The 1d lon,lat are nominal. The 2d lon,lats are in the geolon variables.The text was updated successfully, but these errors were encountered: