Contribute model

Revision as of 19:04, 26 January 2017 by WikiSysop (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Contribute models

Submitting your source code to the CSDMS repository is an easy three-step process:

  1. Choose a license for your model
  2. Fill out a model questionnaire
  3. Zip / tar your source code and email the compressed file to


  1. Implement a Basic Model Interface (BMI) for your model
  2. Use CSDMS Standard Names that map input and output variable names.

Watch how to contribute a model

Choose an open-source license for your model

Once you have decided to make your model freely available on the CSDMS website, it is important to choose a license for your source code. CSDMS requires that all source code that is freely available through the CSDMS model repository is licensed. Read more about how to choose the proper license and how to integrate the license into your source code.

Why is there a model questionnaire?

You first need to provide basic information about your model to the CSDMS community before you can submit the source code. This will make it easier for people to understand how to use your model, what they are allowed to do with your source code and what not. It also provides the opportunity to advertise papers that describe the model in more detail.
Therefore, please complete this questionnaire. Feel free to contact us or use the wiki if you want to update the information about a model that is already in the repository.

Submit source code to the CSDMS repository

Submitting the source code of your model is very straightforward. Zip or tar the source code and email it to Let us know if the files are too large -- we can open our FTP site for you so you can upload your model. A CSDMS staff member will do a few checks (compiling, running code), once you have submitted your source code. The source code will be posted in the repository once the testing is done (most of the times within a few days). Mention in your email if you want to make use of the CSDMS GitHub repository (csdms-contrib) (source code version control) that CSDMS makes available to all its members.

Implement a Basic Model Interface for your model

CSDMS has created the Basic Model Interface (BMI), which makes it possible to couple modules to each other. Implementing a BMI for your model makes your model a plug-and-play component in the CSDMS framework. Adding a BMI introduces no dependencies into your model; therefore, your model can still be used in a "stand-alone" manner.

CSDMS Standard Names

CSDMS developed standards to be able to map input and output variable names, so that models can be coupled to each other. These standards make it possible to automatically determine whether an input variable in one model (or database) is equivalent to (or compatible with) an output variable in another model (or database). Applying these standards does not require to have these standard names to be used within your model. However, CSDMS requires model contributors to implement the BMI, and this includes mapping each of the model's input and output variables to a CSDMS Standard Name. More...