Skip to content

Commit

Permalink
Merge branch 'main' into review_tina
Browse files Browse the repository at this point in the history
  • Loading branch information
AnnikaLau committed Dec 18, 2023
2 parents e110149 + 3ed7ecf commit 666ed74
Show file tree
Hide file tree
Showing 10 changed files with 223 additions and 5 deletions.
4 changes: 3 additions & 1 deletion .mlc_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
{"pattern":"^https://github.com/just-the-docs/just-the-docs-template/generate"},
{"pattern": "^http://cosmo-model.org/"},
{"pattern": "agupubs.onlinelibrary.wiley.com"},
{"pattern": ^https://link.springer.com/article},
{"pattern": "^https://github.com/C2SM/spice"},
{"pattern": "^https://wiki.iac.ethz.ch/Climphys/ProjectCESM2SetupControlRun"},
{"pattern": "^https://wiki.iac.ethz.ch/Climphys/ProjectCESM122SetupControlRun"}
{"pattern": "^https://wiki.iac.ethz.ch/Climphys/ProjectCESM122SetupControlRun"},
{"pattern": "^https://wiki.iac.ethz.ch/IT/LinuxNetCDF"}
]}
16 changes: 15 additions & 1 deletion announcements/index.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,24 @@
---
title: Announcements
layout: default
nav_order: 7
nav_order: 8
has_children: false
---

# COSMO/ICON User Workshop

published 30/11/2023
{: .label .label-grey}

We are pleased to announce the COSMO/ICON User Workshop on **Monday February 12th, 2024** as a physical meeting.
It will take place at the **Radisson Blu Hotel**, next to MeteoSwiss.

The COSMO/ICON User Workshop is a rather informal one-day event, whose goal is to bring together users and developers of these two models,
to share experience and knowledge, and to get insights into some projects involving these models.

Please register for the workshop by email to _[email protected]_ by **December 18th, 2023**.
You are strongly encouraged to present a poster or to give a talk at this informal event! Please include a preliminary title in your email if you plan to do so.

# Climate model and climate data workshop

published 09/11/2023
Expand Down
81 changes: 81 additions & 0 deletions coding/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
title: Coding Best Practices
layout: default
nav_order: 6
has_children: false
---

# Coding Best Practices
{: .no_toc }

<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
- TOC
{:toc}
</details>

Whether you're new to coding or already working on it, there are two important things to remember: always **use version control** and **add automatic testing**. These steps will make things easier for you and everyone you work with. Also, try out tools that can make coding easier for you.

## Version Control with Git
**Git** is a popular tool for managing source code. C2SM repositories are hosted on GitHub, which uses Git as its version control system.

If you're new to Git or want to improve your Git skills, we recommend attending our annual **Git for Beginners** and/or **Git for Advanced** courses.
Additionally, all course materials are publicly available and can be used throughout the year.
For more details, please visit [Technical Events - Git Courses](https://c2sm.github.io/events/git_courses.html).

### Key Concepts of Git

- **Repository (Repo)**: A Git repository is a container for a software project. It stores the complete history of the project, including all files, directories, and changes made over time. Repositories can be hosted locally or remotely on platforms like GitHub, GitLab, or Bitbucket.
- **Commit**: A commit is a fundamental concept in Git, representing a snapshot of the codebase at a particular point in time. Each commit is identified by a unique SHA-1 hash, contains a descriptive message explaining the changes, and references the previous commit, forming a version history.
- **Branches**: Branches allow developers to work on separate lines of development. The primary branch is usually called 'master' or 'main', while feature branches enable the development of new features or bug-fix branches for addressing issues without affecting the main codebase.
- **Merge**: Merging is the process of combining changes from one branch into another. Git provides tools to automatically or manually resolve conflicts that may arise when merging different branches.

### GitHub Workflow
When working together with Git, follow these simple steps for a smooth collaborative process:
1. **Clone**: Get a copy of the remote repository you want to work on.
2. **Branch Out**: Create a branch with a name that describes your development.
3. **Development Zone**: Work on your feature within that branch.
4. **Pull Request (PR)**: When you are finished, open a pull request from your feature branch to the main one. Request a review.
5. **Refinement**: Make any necessary changes until it's approved.
6. **Merge Time**: Once the revisions are done and the tests are green, merge your feature branch into the main branch.

## Automatic Testing
Code testing is a critical step in software development. It's about finding and fixing problems to make sure the software works well, is of high quality and reliable.
Testing involves checking different parts of the code to make sure the software is strong and free of bugs.
The specific tests you need will depend on your project and its requirements. Here is a list of tests that are usually very useful.
### Unit Tests
These tests are for testing individual components or functions of your code to ensure they work correctly in isolation.
Find an [example for unit tests](https://github.com/C2SM/spack-c2sm/blob/main/test/unit_test.py) in our spack-c2sm repository.
### Integrations Tests
These tests are to check how different parts of your code work together and communicate with each other.
Find an [example for integration tests](https://github.com/C2SM/spack-c2sm/blob/main/test/integration_test.py) in our spack-c2sm repository.
### System Tests
These tests are performed to ensure that all the components and modules of a software system work together as intended and that the system meets its specified requirements and functions correctly in its operational environment.
Find an [example for system tests](https://github.com/C2SM/spack-c2sm/blob/main/test/system_test.py) in our spack-c2sm repository.
### Tolerance tests
These tests are used in the development of ICON, specifically when code is ported from CPU to GPU. The results when running on CPU and GPU are not bit identical, therefore a tolerance range is accepted when comparing a test case to the CPU reference. The accepted tolerance range is created by running an ensemble of the same test case with different perturbations. MeteoSwiss has developed [probtest](https://github.com/MeteoSwiss/probtest) for handling everything related to tolerance tests with ICON. If you have a DKRZ account and are working with ICON-NWP, you can also check out the manual for [Generating tolerances for non-standard tests](https://gitlab.dkrz.de/icon/wiki/-/wikis/GPU-development/Validating-with-probtest-without-buildbot-references-(Generating-tolerances-for-non-standard-tests)).
### Git Hooks & GitHub Actions
Git Hooks are local scripts in Git that make sure things get done right when you work on your code. GitHub Actions, on the other hand, are integrated with GitHub and allow you to automate code management workflows. They can be run automatically on GitHub whenever something is committed.

Check out our Git course for examples of [Custom Git Hooks](https://github.com/C2SM/git-course/blob/main/advanced/Exercise_7_git-hooks.md) hooks, and read GitHub's [documentation on GitHub Actions](https://docs.github.com/en/actions).


## Useful tools for coding
Two popular tools for coding are [Visual Studio (VS) Code](https://code.visualstudio.com) and [PyCharm](https://www.jetbrains.com/pycharm/). Here are instructions for setting up and using Visual Studio Code with SSH on a CSCS machine.
### VS Code
1. [Download](https://code.visualstudio.com/download) and install VS Code on your computer.
2. Install extensions:
- Open VS Code.
- Look for the 'Extensions' icon in the sidebar (it looks like four small squares).
- Install the extensions you need for your coding work. We recommend:
- Python: for Python development support
- GitLens: to improve Git functionality
- vim: if you prefer Vim keybindings
- Remote-SSH: to connect to remote machines
3. Use VS Code with SSH on CSCS:
- Install the "Remote-SSH" extension.
- Ensure VS Code remains active when working on CSCS:
- Activate the "Remote.SSH: Remote Server Listen On Socket" option in "Remote-SSH: Settings".
71 changes: 71 additions & 0 deletions data-guidelines/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
title: Data Guidelines
layout: default
nav_order: 6
has_children: false
---

# Data Handling Best Practives
{: .no_toc }

<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
- TOC
{:toc}
</details>

## C2SM data management guidelines
[C2SM Data Management Recommendations 2020](https://polybox.ethz.ch/index.php/s/pyZRPF4FfJJ47g1)

## ETH Links
* [Research Data at ETH Zurich](https://ethz.ch/staffnet/en/service/a-to-z/research-data.html)
* [New Guidelines for Research Data Management](https://ethz.ch/staffnet/en/news-and-events/internal-news/archive/2022/10/new-guidelines-for-research-data-management.html) -> [PDF](https://rechtssammlung.sp.ethz.ch/Dokumente/414.2en.pdf)
* [Forschungsdatenmanagement und Datenerhalt](https://documentation.library.ethz.ch/display/DD/Forschungsdatenmanagement+und+Datenerhalt)
* [ETH Guidelines for Research Integrity](https://doi.org/10.3929/ethz-b-000179298)
* [ETH Research Collection](https://www.research-collection.ethz.ch)
* [Add your ORCID ID to your ETH account](https://documentation.library.ethz.ch/display/RC/Assign+ORCID+iD)
* [ETH Guidelines for data management plans](https://unlimited.ethz.ch/pages/viewpage.action?pageId=194127962)

## ETH Contacts
* DMPs: Digital Curation Office, ETH Library, ETH Zurich, [ETH Digital Curation Webpage](http://www.library.ethz.ch/en/ms/Digital-Curation-at-ETH-Zurich)
* Research Collection: Barbara Hirschmann, ETH Research Collection, ETH Library, ETH Zurich, [ETH Research Collection Webpage](https://library.ethz.ch/en/publishing-and-archiving/publishing-and-registering/publishing-in-the-research-collection.html)
* openBIS software: Dr. Caterina Barillari, ETH SIS, [ETH Personal Page](https://www.ethz.ch/en/the-eth-zurich/organisation/departments/informatikdienste/personen/person-detail.html?persid=185758)

## Data repositories
* [C2SM datasets](https://c2sm.github.io/datasets/)
* [Directory of data repositories](https://www.re3data.org)
* [ETH research collection](https://www.research-collection.ethz.ch)
* [Zenodo](https://zenodo.org)
* [IAC data pool](http://data.iac.ethz.ch/atmos/)
* [IAC gitlab](https://git.iac.ethz.ch)

## Open access journals
* [Directory of open access journals](https://www.doaj.org)
* [Check specific journal access policy](https://v2.sherpa.ac.uk/romeo/)

## Funding agencies open access policies
* [Open research data @SNSF](http://www.snf.ch/en/theSNSF/research-policies/open_research_data/Pages/default.aspx)
* [Check specific funder archiving mandates](https://v2.sherpa.ac.uk/juliet/)

## Licensing
* [Advices on how to license research data](http://www.dcc.ac.uk/resources/how-guides/license-research-data)
* [Creative commons licenses](https://creativecommons.org)
* [Open data commons licenses](https://opendatacommons.org)
* [GNU licenses](https://www.gnu.org/licenses/gpl.html)
* [Open definition for data](https://opendefinition.org)
* [Creative commons and open science](https://zenodo.org/record/840652#.XHm1Vi17TOQ)
* [Copyleft definition](https://en.wikipedia.org/wiki/Copyleft)
* [Why avoiding non-commercial licenses?](https://freedomdefined.org/Licenses/NC)
* [Advices on how to cite datasets](http://www.dcc.ac.uk/resources/how-guides/cite-datasets)
* [SPDX (standard for easy sofware licensing](https://spdx.org/ids)

## Help on improving NetCDF metadata
* [IAC internal documentation on NetCDF in general](https://wiki.iac.ethz.ch/IT/LinuxNetCDF) (!with IAC login only)
* [Climate and Forecast (CF) conventions](http://cfconventions.org)
* [Python CF checker](https://github.com/cedadev/cf-checker)
* [CMIP6 controlled vocabularies](https://cmor.llnl.gov/mydoc_cmor3_CV/)


21 changes: 21 additions & 0 deletions events/climate_model_workshop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
title: Climate Model and Climate Data Workshop
layout: default
nav_order: 2
parent: Technical Events
---

# Climate Model and Climate Data Workshop
C2SM is offering a climate model and climate data workshop for the C2SM Impacts community.
This workshop is part of our [technical training](https://c2sm.ethz.ch/education/technical-training.html).
The workshop provides an introduction to the concept and functionality of climate models and includes a short hands-on session.
We answer questions like "How do climate models work?", talk about considerations when using climate model data and give a short introduction to
re-​analysis and observational data.

The course took place for the first time December 6th 2023 and we are planning to repeat it annually.

## Links

- [climate-model-workshop repository (exercises)](https://github.com/C2SM/climate-model-workshop)
- [Slides 2023](https://www.polybox.ethz.ch/index.php/s/Chp2ReEWYMjq1n0)

2 changes: 1 addition & 1 deletion events/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Technical Events
layout: default
nav_order: 6
nav_order: 7
has_children: true
---

Expand Down
26 changes: 26 additions & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,23 @@ nav_order: -1
---

# Center for Climate Systems Modeling (C2SM)
{: .no_toc }

**Welcome to the C2SM User Landing Page!**

Here we collect helpful information for scientists and partners
about the C2SM core team, tasks, support, models, tools, datasets
and much more.

<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
- TOC
{:toc}
</details>

## Core Team

The C2SM Core Team - or C2SM's Executive Office - currently employs six scientific programmers. Their work is distributed among the following areas:
Expand All @@ -23,10 +33,12 @@ The C2SM Core Team - or C2SM's Executive Office - currently employs six scientif
- Organisation of workshops

### Executive Director
{: .no_toc }

- [Christina Schnadt Poberaj](https://iac.ethz.ch/people-iac/person-detail.html?persid=116573) (CHN M 15.2)

### Scientific Programmers
{: .no_toc }

- [Jonas Jucker](https://c2sm.ethz.ch/the-center/people/person-detail.html?persid=210923) (CHN M 15.1)
- [Michael Jähn](https://c2sm.ethz.ch/the-center/people/person-detail.html?persid=286091) (CHN M 15.1)
Expand All @@ -36,17 +48,31 @@ The C2SM Core Team - or C2SM's Executive Office - currently employs six scientif
- [Urs Beyerle](https://c2sm.ethz.ch/the-center/people/person-detail.html?persid=49918) (CHN N 16.2)

### Further staff
{: .no_toc }

Further information about C2SM project staff and previous core team members can be found at our [ETH website](https://c2sm.ethz.ch/the-center/people/executive-office.html).

## How to get Access

Please follow the step-by-step instructions below to get access to the C2SM organisation.
This will allow you to submit new tasks, receive support from the C2SM Core Team and have access to supported models and tools.

1. Create an account on [GitHub](https://github.com/signup).
2. Get access to the [C2SM GitHub organisation](https://github.com/C2SM).
- Reach out to your group’s technical contact and provide them with your GitHub account name.
They will be responsible for adding you to the appropriate user group.
- If you do not know who your group's technical contact is, please send an email to [[email protected]](mailto:[email protected]).

## C2SM on GitHub

C2SM maintains two GitHub organizations to distribute code to the community.

### [C2SM](https://github.com/C2SM)
{: .no_toc }

This is our main GitHub organisation, which contains many repositories, including ICON. [How to get access](https://c2sm.github.io/models/icon.html#access)

### [C2SM-RCM](https://github.com/C2SM-RCM)
{: .no_toc }

The C2SM-RCM organisation contains all codes related to COSMO and tools like EXTPAR. For questions and access, please contact [Jonas Jucker](mailto:[email protected]).
4 changes: 2 additions & 2 deletions models/icon.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ C2SM facilitates the utilisation of ICON on the [Piz Daint](https://www.cscs.ch/
The latest release distributed by C2SM, currently `2.6.6`, is continuously being tested on both Piz Daint and Euler and receives patches when necessary.

## Access
To gain access to the [ICON repository](https://github.com/C2SM/icon) hosted on the C2SM GitHub organisation, please contact your group's technical contact. They will be responsible for adding you to the appropriate user group.
The ICON repository is hosted on the C2SM GitHub organisation. If you don't have access, please follow the instructions under [How to get Access](https://c2sm.github.io/#how-to-get-access).

Once you have access, clone the repository from GitHub using the SSH protocol:
Once you have access, clone the repository from GitHub using the SSH protocol:

```bash
git clone --recurse-submodules [email protected]:C2SM/icon.git
Expand Down
2 changes: 2 additions & 0 deletions support/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@ User Support refers to the Core Team's efforts to ensure that all supported soft

To request regular support, please [use our discussion forum](https://github.com/C2SM/Tasks-Support/discussions/categories/support). The Core Team will be notified and will try to respond as soon as possible. In addition, all C2SM members can participate in these discussions and help as well.

If you don't have access to the support forum, please follow the instructions under [How to get Access](https://c2sm.github.io/#how-to-get-access).

![](assets/Support_Forum.png)
*Different threads in our discussion forum*
1 change: 1 addition & 0 deletions tasks/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ The Core Team accepts tasks from the three different areas mentioned above each
{: .attention-title }

Please submit concrete tasks by following the instructions on our GitHub repository [Tasks-Support](https://github.com/C2SM/Tasks-Support).
If you do not have access, please follow the instructions under [How to get Access](https://c2sm.github.io/#how-to-get-access).


### Requirements for Tasks
Expand Down

0 comments on commit 666ed74

Please sign in to comment.