-
Notifications
You must be signed in to change notification settings - Fork 25
2019 MARBL Dev team meetings
- December 31, 2019 (New Year's Eve)
- December 17, 2019 (CGD Holiday Party)
- December 3, 2019 (Conflict with another NCAR meeting)
- November 19, 2019
- Kristen's tuning runs (status update from Matt?)
-
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?
- This paper will only be based on
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 oncasper
, which can access campaign storage directly
- Definitely moving
- Finalizing
- Not much progress, as I realized I wanted to finish the stand-alone driver first
- I think I'll want to update the documentation (especially How to Use MARBL in a GCM)
- I do have a kanban board to track progress of the MOM driver
- 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
- Question for Keith: what needs to be done for CESM 2.1.2?
- Column of MARBL 1.0.0 project still accurate?
- Anything I can do to help?
- 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.
-
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
- 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
- Lots of infrastructure updates
- New
C1850MOMECO
andG1850MOMECO
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 generatemarbl_in
, which is read by MOM- Currently using default settings for
CESM_x1
grid
- Currently using default settings for
- New
- Working on initial condition file / forcings
- Both generating the files and figuring out how MOM6 reads them in
- September 10, 2019 (CGD town hall during regular meeting time)
- 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)
-
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)
-
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!
- 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
- 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
- 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 upmarbl_co2calc_mod.F90
subroutines due toassociate
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
- July 30, 2019 (Matt out of town; Keith and Mike chatted informally)
- 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 requiremaster
- Kristen's PR (#330) to bring in explicit calcifiers:
- Merged onto
development
!
- Merged onto
- Single column test progress
- Should I add
MARBL_TEND_[tracer_sname]
andMARBL_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 likeTEND_NO3
in POP contain lots more than just the MARBL contribution (horizontal operators, vertical mixing, etc)
- Should I add
- 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
- Mike started work on the MOM driver
- Alper's fork of CESM now includes MARBL as an external
- The
buildlib
script in the MOM6 interface builds MARBL - Setting
USE_MARBL_TRACERS = True
runsmarbl_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)
- 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)
- Diagnostics: I have a notebook to compare JRA and CORE: a few time series of global means
- 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) - Should we generate these plots in marbl-diags?
- 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.
- 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
- MOM driver as a priority ahead of A. Shao visit this summer?
-
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
-
-
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 -
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.
- 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 tomaster
. This is in line with the typical git workflow, and I think MARBL is stable enough that we've outgrown the need formarbl_dev
anyway.
- April 23, 2019 (Mike home with a sick kid)
- 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)
- Upcoming work:
-
cesm_pop_2_1_20190322 has changes necessary to run SPECTRA (larger max tavg count, different initial condition file when running SPECTRA)
-
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
- Run when
- March 26, 2019 (everyone out of town for local school spring break)
- March 12, 2019 (goodbye party for J. Luo)
- Diagnostics
- Current work -- (a) & (b) done a few minutes ago, I'd like to review; (c) not yet started:
- Restructure YAML configuration files for better extensibility
- Update existing annual climatology plots
- 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 withCESM_postprocessing
. In the meantime,jinja2
inmarbl-diags
to generate stand-alone HTML?
- Current work -- (a) & (b) done a few minutes ago, I'd like to review; (c) not yet started:
- 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:
- I'm not sure I can shoehorn in global data (was thinking about applying filter region-by-region, using POP's region mask)
- It's an expensive method (filter weights at a grid point are based on distance to nearest neighbors)
- 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)
- 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:
- New PR: #330 has Kristen's explicit calcifier updates to allow adding coccolithophores
- Also have open PRs for Jessica's size-resolved plankton model and a PGI compiler bugfix that is hard to test because PGI's latest community compiler doesn't run on the latest macOS (10.14 / Mojave)
- 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)
- Stand-alone driver:
- Adding a regression test that calls
surface_flux_compute()
andinterior_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
- Adding a regression test that calls
- 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
- 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 wayCESM_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.
- DOIs: after setting up a DOI for Kristen, went ahead and got DOIs for MARBL in CESM 2.x releases:
- 2.0.0: doi:10.5281/zenodo.2541008
- 2.0.1: doi:10.5281/zenodo.2541009
- 2.1.0: doi:10.5281/zenodo.2541010
- 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)
- January 1, 2019 (NCAR closed for New Year's Day)