The Cryosphere model Comparison tool (CmCt) compares ice sheet models against remote sensing observations. Currently, the tool supports a comparison of (1) modeled mass change against reconciled mass change from the Ice sheet Mass Balance Inter-comparison Exercise (IMBIE), (2) modeled mass change against observations from satellite gravimetry, and (3) modeled surface elevation against observations from satellite radar and laser altimetry. In the future, the CmCt tool will also be expanded to perform comparisons of other variables such as surface elevation change using laser altimetry observations and surface velocity using various observations.
To use the CmCt, you will need the code in this repository and the associated datasets (described below). The mass change comparisons use Jupyter notebooks to configure and run the comparisons, with supporting functions in Python scripts. The surface elevation comparison uses Jupyter notebooks to configure and run the comparisons, with supporting functions in Fortran code that needs to be compiled. If you do not need the surface elevation comparison, you can skip the Fortran compilation steps below.
- Clone this repository:
git clone git@github.com:NASA-Cryospheric-Sciences-Laboratory/CmCt.git
- Create a virtual environment (NOTE that this requires conda):
conda create --name CmCt --file requirements.txt
- Activate the environment:
conda activate CmCt
- Run the
test/create_lithk_netcdfs.ipynb
notebook to create test model data for both ice sheets. - Run the
notebooks/IMBIE/imbie_comparison.ipynb
notebook, which will compare the test input data against IMBIE observations. This can be run for both ice sheets by changing the options in the notebook.
If you have an account on CryoCloud, you can launch CmCt directly on their JupyterHub using this link.
TBD
The CmCt requires ice sheet model files to follow the ISMIP6 conventions for model output variables. Currently, the models MUST be defined on a rectangular X-Y grid in the ISMIP6 standard projected polar-stereographic space. Details on this can be found on the ISMIP6 Wiki.
Thanks for your interest in contributing! There are many ways to contribute to this project. Get started here.
The surface elevation comparison calculates differences between modeled surface elevations and observations from satellite laser (ICESat (Ice, Cloud, and land Elevation Satellite)) and radar (ERS-1, ERS-2 (European Remote-Sensing Satellite), and Envisat (Environmental Satellite)) altimetry.
To install the surface elevation comparison code:
conda activate CmCt
conda install -c conda-forge netcdf-fortran
mkdir externalpackages
cd externalpackages
git clone git@github.com:josephalevin/fson.git
cd fson
make
export LD_LIBRARY_PATH=${HOME}/CmCt/externalpackages/fson/dist:${HOME}/.conda_envs/CmCt/lib
... NOTE that you may want to add this to your ~./bashrcmkdir externalpackages/jq
cd externalpackages/jq
wget https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64
- For each CMCT code directory (i.e., CMCT_ENVISAT), run
make
inside of that directory
To download surface elevation datasets:
- Install Globus Connect Personal: https://docs.globus.org/globus-connect-personal/install/linux/
- Start Globus Connect Personal (without GUI):
./globusconnectpersonal -start &
- Browse to the web-based Globus File Manager: https://app.globus.org/file-manager
- Create a datasets directory
- Transfer data from the GHub-CmCt-Data endpoint to the local endpoint (datasets directory)
To configure and run the surface elevation comparison:
- Create the directory for RUNS folder
- Update RUNDIRS for RUNS folder in cmct_launch_config.ksh file
- Update the tar variable path in cmct_launch_config.ksh file
Work on the CmCt has been supported by NASA's Cryospheric Sciences Program, the NASA Sea-Level Change Team, and the NASA Earth Information System project.