Skip to content
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

Full ocean namelist values #32

Open
aidanheerdegen opened this issue Jul 28, 2023 · 2 comments
Open

Full ocean namelist values #32

aidanheerdegen opened this issue Jul 28, 2023 · 2 comments

Comments

@aidanheerdegen
Copy link
Contributor

Currently the summary is finding all namelist variables that are defined in the various model namelists, e.g. ocean/input.nml, ice/cice_in.nml etc.

Whilst the cice namelists seem to have most (all?) of the namelist variables in the namelist files, MOM5 only has a small subset of the variables, so we're not capturing the default values of many variables.

From the point of view of having a database of everything that went into a model this is a significant knowledge gap.

One option is to add some code to output the namelists before they are updated by reading from the namelist files. Whilst this is potentially a good idea for the future, it doesn't help with historical runs.

We can recover all the ocean namelist variables from the stdout logfile, as MOM5 outputs them from there using f90nml, e.g.

f90nml --format nml <( awk '1;/CICE_COMMIT_HASH/{exit}'  archive/output731/access-om2.out )

This produces 68 namelist groups, with 1434 lines of output.

Note I've used awk to cut down the amount of text f90nml has to parse, with some of the larger files it could take a long time to pull out the namelists which are just at the beginning of the file.

@aidanheerdegen
Copy link
Contributor Author

From an implementation perspective it is probably better to use the f90nml python interface and take care of only passing the required part of the file in python.

@aidanheerdegen
Copy link
Contributor Author

@aekiss

I ran these on 01deg_jra55v13_ryf9091 01deg_jra55v140_iaf_cycle4 and dumped them into a couple of yaml files. When I diff them I get reasonable results

$ diff /g/data/tm70/aph502/control_runs/*/input_namelist_complete.yml
4134,4135c4134,4135
<   - 80
<   - 75
---
>   - 150
>   - 100
4142a4143
>   cmip_version: 5
4163c4164
<   min_thickness: 1.0
---
>   min_thickness: 0.001
4841a4843,4861
> ocean_passive_nml:
>   debug_this_module: false
>   common_init_condition: patch
>   layer_value: 1.0
>   layer_ztop: 100.0
>   layer_zbot: 200.0
>   wall_value: 1.0
>   wall_ratio_south: 0.33333
>   wall_ratio_north: 0.66666
>   patch_value: 1.0
>   patch_ztop: 0.0
>   patch_zbot: 200.0
>   patch_ratio1: 0.33333
>   patch_ratio2: 0.66666
>   patch_init_klevel_gaussian: false
>   efold_depth: 1000.0
>   exponential_value: 1.0
>   shelfbowl_north: 70.0
>   shelf_value: 1.0
4844c4864
<   max_advection_velocity: 0.2
---
>   max_advection_velocity: 0.3
4950a4971
>   read_diff_cbt_file: false
5203c5224
<   ncar_boundary_scaling: true
---
>   ncar_boundary_scaling: false
5342a5364,5365
>   do_ustar_correction: true
>   do_frazil_redist: true
5348c5371
<   cdbot: 0.001
---
>   cdbot: 0.0025
5378c5401
<   zmax_pen: 300.0
---
>   zmax_pen: 1000000.0
5519c5542
<   overexch_npts: 4
---
>   overexch_npts: 1
5524c5547
<   overflow_umax: 5.0
---
>   overflow_umax: 1.0
5642c5665
<   num_fields_in: 15
---
>   num_fields_in: 17
5658a5682,5683
>   - licefw
>   - liceht
5660c5685
<     \0"
---
>     \0\0\0\0\0\0\0\0\0"
5671a5697,5700
>   frac_vis_dir: 0.215
>   frac_vis_dif: 0.215
>   frac_nir_dir: 0.285
>   frac_nir_dif: 0.285

There are a few changes as a result of 01deg_jra55v13_ryf9091using a significantly older codebase. The following are only in the01deg_jra55v140_iaf_cycle4` experiment:

01deg_jra55v140_iaf_cycle4 also has passive tracers, which the RYF experiment does not, hence ocean_passive_nml doesn't feature.

There are other differences, notably in zmax_pen, cdbot, near_boundary_scaling, overexh_npts, overflow_umax, max_advection_velocity and min_thickness.

Does that accord with what you thought the differences ought to be @aekiss? Has it missed anything you know about?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant