Skip to content

2019 MARBL Dev team meetings

Michael Levy edited this page Nov 5, 2019 · 46 revisions

November 5, 2019

General discussion

  1. Kristen's tuning runs (status update from Matt?)
  2. MARBL paper for CESM 2 Special Edition
    • Finalizing intake-esm collections for various datasets
    • CESM 1 runs will be moved to campaign storage
      • Definitely moving historical (b40.20th.1deg.bdrd.001)
      • Any other datasets useful to have?
      • ocn/proc only, right? (No need for other output from other components?)
      • I've asked the data task force team for guidance on where to keep the output
      • For now we'll require cesm2-marbl users to run on casper, which can access campaign storage directly

MARBL Software Updates

POP Software Updates

MOM Software Updates


October 22, 2019

MOM Software Updates

  1. Not much progress, as I realized I wanted to finish the stand-alone driver first

MARBL Software Updates

  1. Update on #156
    • Kanban board shows we're almost done
    • Still need to finish documentation, but that's close
    • Still need to document how the initial condition file was created
    • Probably going to skip the Travis CI cleanup
  2. Question for Keith: what needs to be done for CESM 2.1.2?

General discussion

  1. I added this to the science group agenda as well, but should we be worried about how Magdalena can't reproduce her CESM 1 results in CESM 2? My concern is that it's a sign of poor tuning or something else going wrong in the current code base.

September 24, 2019

General discussion

  1. SIParCS student? (Summer Internships in Parallel Computational Science)
    • PRO: Would be nice to get a student involved in MARBL development
    • CON: I don't know what issue(s) would be appropriate for a student in this program
    • Requires a co-sponsor in CISL
    • 2020 Internship Statements of Work - due by October 9, 2019

MARBL Software Updates

  1. Close to finished with stand-alone test of compute subroutines
    • Code has been reviewed, post-review clean-up done as well
    • Still need to update documentation
    • Still need to include scripts for generating initial conditions / forcing fields from a POP run

POP Software Updates

MOM Software Updates

  1. Lots of infrastructure updates
    • New C1850MOMECO and G1850MOMECO compsets that turn MARBL on out of the box
    • Updated PE layouts for cheyenne to reduce runtime
    • Write MARBL log to stdout
    • buildnml runs MARBL scripts to generate marbl_in, which is read by MOM
      • Currently using default settings for CESM_x1 grid
  2. Working on initial condition file / forcings

No Meeting

  • September 10, 2019 (CGD town hall during regular meeting time)

August 27, 2019

General discussion

  1. Kristen's up and running with preformed tracers
    • Kludgy addition to POP, rather than new tracer module in MARBL
    • Will be a good resource when finally tackling relevant issue ticket (#85)

MARBL Software Updates

  1. Started review process for testing the compute() functions (PR #338) by looking at the Fortran code

    • Some small changes in the library itself
    • New code I introduced to handle netCDF I/O in the driver needs more attention
    • Future reviews will look at the infrastructure changes that support the Fortran (done) and updates to the documentation ("in progress" is a generous statement, but documentation is not done yet)
  2. Need to update tolerances in netcdf_comparison.py, hobart (with nag) exceeds current threshold (cheyenne with intel)

    $ ./netcdf_comparison.py -b ../tests/input_files/baselines/compute_cols.history.nc -n ../tests/regression_tests/compute_cols/history_1inst.nc --strict loose
    Comparing ../tests/regression_tests/compute_cols/history_1inst.nc to the baseline ../tests/input_files/baselines/compute_cols.history.nc
    
    Variable: CaCO3_ALT_CO2_REMIN
    ... Max relative error (1.269977619739531e-12) exceeds 1e-12
    
    Variable: CaCO3_REMIN
    ... Max relative error (1.269977619739531e-12) exceeds 1e-12
    
    Variable: J_diatChl
    ... Max relative error (1.3781065128061617e-12) exceeds 1e-12
    
    Differences found between files!

POP Software Updates

MOM Software Updates

  1. Will get back to this towards the end of the week, and plan on making MOM driver my focus for September while A. Shao is here

August 13, 2019

General discussion

  1. Follow-up: I asked why MARBL and CVMix are in the CESM Externals.cfg file in the CESM branch that also provides MOM as an active component (rather than letting MOM and POP each decide on their own what version to use)
    • Short answer: decision was not set in stone, it's fine to go back to MOM and POP maintaining their own externals

MARBL Software Updates

  1. Testing the compute() routines with Travis uncovered an old GNU compiler bug
    • Similar to a bug that Keith reported (which I don't actually think has been fixed)
    • gfortran 4.8, which is what we have access to on TravisCI, messes up marbl_co2calc_mod.F90 subroutines due to associate statements pointing to derived type elements
    • Problem was resolved in 4.9 and beyond
    • I don't see an easy way to update gfortran version on Travis without breaking netCDF (also needed for stand-alone test of compute() routines
    • See a quick repo I put together

POP Software Updates

MOM Software Updates


No Meeting

  • July 30, 2019 (Matt out of town; Keith and Mike chatted informally)

July 16, 2019

General discussion

  1. Updates on marbl-diags
    • Worked on it at the early June hackathon
    • Uses latest esmlab: I found a bug in the latest release (Apr 27, 2019); Anderson and I fixed it, but until another release is made the diagnostic tools require master

MARBL Software Updates

  1. Kristen's PR (#330) to bring in explicit calcifiers:
    • Merged onto development!
  2. Single column test progress
    • Should I add MARBL_TEND_[tracer_sname] and MARBL_SFLUX_[tracer_sname] to diagnostics? I have a notebook that compares diagnostic output from single column test with a single timestep of POP... but variables like TEND_NO3 in POP contain lots more than just the MARBL contribution (horizontal operators, vertical mixing, etc)

POP Software Updates

  1. Kristen's explicit calcifier branch: POP pull request #13
    • There's another PR open, waiting to hear from Alper about the right order to merge the PRs
    • No urgency on my part, CSEG is just now updating CESM tags to point to github instead of subversion

MOM Software Updates

  1. Mike started work on the MOM driver
    1. Alper's fork of CESM now includes MARBL as an external
    2. The buildlib script in the MOM6 interface builds MARBL
    3. Setting USE_MARBL_TRACERS = True runs marbl_instances%init() and registers the 32 resulting tracers
      • No initial conditions provided, so tracers are all set to 0
      • Need a namelist flag somewhere to set num_PAR_subcols (current init sets value to 1)
      • Need to figure out how many active cells can be passed to surface_flux_compute() at a time (i.e. the MOM6 equivalent to the number of active cells on a POP block)

No Meetings

  • July 2, 2019 (Matt out of town; Keith and Mike chatted informally)
  • June 18, 2019 (CESM Workshop)
  • June 4, 2019 (Python hackathon at NCAR)
  • May 21, 2019 (Mike out of town)

May 7, 2019

General discussion

  1. Diagnostics: I have a notebook to compare JRA and CORE: a few time series of global means
    1. What variables would be useful to look at in this framework? (adding additional 2D fields is trivial, adding 3D fields will just require a vertical integral that I assume esmlab can do)
    2. Should we generate these plots in marbl-diags?
    3. I converted Who's single cycle of the JRA-forced hindcast to time series in order to make these plots -- should I copy them from my scratch space into /glade/p/cgd/oce/projects/JRA55/IAF so they don't get scrubbed? It's roughly 1 TB of data.
  2. MOM driver as a priority ahead of A. Shao visit this summer?

MARBL Software Updates

  1. Single column test progress

    • more robust build system (for turning on netCDF support if needed)

    • not sure of the best way to store input data, tempted to just keep it in the MARBL repo (current version is a 2-column file and 98 KB, so even adding 4 or 5 more columns is probably not a burden for git). Test currently fails on TravisCI due to lack of file to read:

      (run_exe): Running following command:
      (run_exe): /home/travis/build/mnlevy1981/MARBL/tests/driver_exe/marbl.exe -n test.nml
      Beginning compute_cols test...
      MARBL ERROR (marbl_io_mod:netcdf_check): netCDF error: No such file or directory
      MARBL ERROR (marbl_io_mod:marbl_io_open): Error reported from nf90_open(marbl.nc)
      MARBL ERROR (marbl_compute_cols_drv:initalize): Error reported from marbl_io_open
      MARBL ERROR (marbl_compute_cols_drv:test): Error reported from initialize
  2. Kristen is happy with her update to make her coccolithophore branch CESM 2.1 compatible (and that's been tagged), but we haven't found time to bring her up to date with the latest MARBL development: that's holding up #330

  3. PGI latest community edition (i.e. free version) is available - PGI 19.4 includes macos mojave support (18.10, the last community edition, runs on macos 10.13 but not 10.14). No issues building out of the box with it.

POP Software Updates

  1. Keith and I talked about what moving POP to git means for MARBL development -- will abandon the idea of a marbl_dev branch and just push our changes directly to master. This is in line with the typical git workflow, and I think MARBL is stable enough that we've outgrown the need for marbl_dev anyway.

No Meeting

  • April 23, 2019 (Mike home with a sick kid)

April 9, 2019

General discussion

MARBL Software Updates

  1. Merged #328, which adds Arrhenius temperature scaling option and finer-grained grazing diagnostics (Jessica's SPECTRA code should run out-of-the-box now)
    • Answer-changing on some compilers (including intel), so only available in CESM 2.2 or later (not in 2.1)
  2. Upcoming work:
    • After cesm2_2_beta02 tag is made, Kristen and I will work on getting her explicit calcifier work onto development (#330)
    • Sounds like #146 (adding latitude and other variables to marbl_domain_type) is a priority now as well

POP Software Updates

  1. cesm_pop_2_1_20190322 has changes necessary to run SPECTRA (larger max tavg count, different initial condition file when running SPECTRA)

  2. Working on updates to both CESM 2.1 release branch and CESM 2.2 development to run with poorly-balanced PE layouts

    • Run when nblocks_clinic < max_blocks_clinic on some tasks
    • Run in the special case of above when nblocks_clinic = 0 on some tasks

    Note that this issue affect the base POP code as well as the MARBL driver... so Keith fixed the base code and I'm getting the C1850ECO tests to pass


No Meetings

  • March 26, 2019 (everyone out of town for local school spring break)
  • March 12, 2019 (goodbye party for J. Luo)

February 26, 2019

General discussion

  1. Diagnostics
    • Current work -- (a) & (b) done a few minutes ago, I'd like to review; (c) not yet started:
      1. Restructure YAML configuration files for better extensibility
      2. Update existing annual climatology plots
        • add contour lines
        • better colormaps (rainbow for tracer values (?), definitely need improved scaling for non-uniform scales; bwr, centered at 0, for difference plots)
      3. Additional diagnostic plot options
        • E.g. fields Keith looked at in comparing JRA & CORE: nitrogen fixation and other fields under the heading "Ecosystem: Maps" in CESM 1.3 BGC diags
    • I talked with Alice, have a much better grasp on how marbl-diags will interact with CESM_postprocessing. In the meantime, jinja2 in marbl-diags to generate stand-alone HTML?
  2. MARBL-adjacent projects
    • Kristen is looking for a way to smooth SSH before computing some correlations, Matt asked me to investigate Loess filter as option. I found an existing python package, but have some concerns:
      1. I'm not sure I can shoehorn in global data (was thinking about applying filter region-by-region, using POP's region mask)
      2. It's an expensive method (filter weights at a grid point are based on distance to nearest neighbors)
      3. I need to read up a little more on the parameters controlling the filter (first attempt at filtering a global dataset didn't come out looking so great)

MARBL Software Updates

  1. New PR: #330 has Kristen's explicit calcifier updates to allow adding coccolithophores
  2. Single column testing update: mostly stalled as I focus on other work
    • Decent notes should allow me to pick it back up again when I have the time
    • I'd like to get the explicit calcifiers and size-resolved plankton settings onto development before coming back to the single-column tests (requires code review and more thorough CESM test suite; I think both PRs can be done in a bit-for-bit manner but that might require moving Fortran parameters into MARBL's input settings file)

POP Software Updates


January 29, 2019

General discussion

MARBL Software Updates

  1. Stand-alone driver:
    • Adding a regression test that calls surface_flux_compute() and interior_tendency_compute() is top priority
      • Planning on pulling initial conditions / forcing data from a single column of POP, as I am not aware of any applicable analytic test case
      • up for debate: driver can read a netcdf file, or I can hard-code values in Fortran (downside to netcdf is the need to make it available for anyone running the test)
      • I like the idea of hard-coding values from a shallow-ish (5 - 10 level?) column if no
    • Will need to update documentation to refer back to this test
    • This test will be a good launching point for a true stand-alone driver that includes time-stepping
      • No need for that driver to be Fortran -- maybe take advantage of python ODE solvers?
      • Another advantage to python-based driver: jupyter could incorporate a simple test case AND generate plots
  2. Diagnostics:
    • Did a little more tweaking to plot generation, see PR #11
    • Currently on back-burner waiting for Alice B to come back and answer some questions (I have local copy of text document, no need to get into details of what the questions are)
    • When I come back to this, will work closely with Matt to ensure we're on the same page

POP Software Updates


January 15, 2019

General discussion

  1. Update on marbl-diags and CESM_postprocessing:
    • Working on a branch with a goal of recreating ecosys sections of CESM 1.3 diags
    • First step: Ecosystem: Maps at Depth section, goal is plots similar to NO3 an 0m and Fe at 0m
    • Second step: I don't think the current workflow in marbl-diags will play nicely with the way CESM_postprocessing parallelizes tasks, so it might be worth rethinking workflow. It shouldn't be too hard to introduce a new interface that lets us loop over variables to plot at the driver layer, which I think is the goal.
    • Still unclear of how to generate HTML (Alice B has been working remotely and I've been focusing on the plot generation, but pretty soon I'll be ready to make the web pages)
    • Planning to compare to WOA 2013 -- I originally wanted to also include WOA2005 to make sure statistics are being computed correctly, but /glade/p/cesm/bgcwg/obgc_diag/data/obs_data/WOA2005/WOA05_ann_avg_gx1v6.nc doesn't match the min / max from the links above and I don't know if it's worthwhile to track down the dataset used in those original plots.

MARBL Software Updates

  1. DOIs: after setting up a DOI for Kristen, went ahead and got DOIs for MARBL in CESM 2.x releases:
  2. Documentation: I think this should get bumped up in priority -- our github.io page is missing the CESM 2.1 documentation (and there have been several interface changes so some pages are out of date)

POP Software Updates


No Meeting

  • January 1, 2019 (NCAR closed for New Year's Day)