Skip to content

Purpose of this Developers Guide

Michael Levy edited this page Jun 8, 2014 · 5 revisions

CVMix is free software that provides a suite of Fortran vertical mixing parameterizations for use in numerical oceanography. This guide provides information necessary to develop new modules for inclusion into CVMix, and/or to make use of CVMix modules for inclusion into an ocean model.

How to contribute to CVMix, a 5 step process

One motivation for distributing CVMix is to provide a community-based platform for the improvement of existing vertical mixing parameterizations and for the sharing of new vertical mixing parameterizations. If CVMix is to become a long-term success, it will require engagement across the broad international ocean modeling community and a commitment to grow the functionality of CVMix.

So how do we set ourselves up for success?

Step 1 is to announce your new project to the CVMix community by addressing each of the following questions with a few sentences:

Q1. What is the proposed outcome of the CVMix project?

In addition to providing basic motivation for the project, the scope of the project should be addressed. For example, is the project going to add a new parameterization, modify existing parameterization, improve computational efficiency, add test cases to the existing regression suite, add metrics for the evaluation of parameterizations, etc.

Q2. What changes to the existing CVMix code-base are proposed?

In terms of software, what will be added, subtracted and modified. Will interfaces into existing parameterizations change? Will data structrures be added, subtraced or modified?

Q3. What is the broad software design for the project?

For the addition of new parameterizations, this question can be addressed by summarizing the points of entry into the new parameterization and the inputs (intent(in)) / output (intent(out)) for each of these points of entry. If the project intends to modify existing software, then a complete summary of 1) what will be changed? and 2) why will it be changed? is required.

Q4. How will the resulting software be tested for correctness?

In that, how will we all know when the project is deemed complete? New parameterizations need to include a test case as well as a demonstration that existing regression test were not broken in the development of the new project.

Step 2 is to solicit feedback on your proposed CVMix project. The intention here is to utilize the existing expertise with the CVMix development community to better define and carry out the new CVMix project.

Step 3 is to post the CVMix project on the “Current CVMix Projects” wiki.

Most of this document is related Step 4, i.e. to how to carry out the new CVMix project. After completion of the project that includes a successfully passing all regression tests, then Step 5 is to request that the project be added to the CVMix software distribution.

Who's Who?

The founding developers of CVmix code are: NCAR (Gokhan Danabasoglu, Bill Large, Mike Levy), LANL (Doug Jacobson, Todd Ringler), GFDL (Alistair Adcroft, Stephen Griffies, Robert Hallberg). Each has provided input into the science and engineering forming the CVMix software package. Further developers are welcome as the code evolves.