====== Ice Sheet & Sea Level System Model ====== > ISSM is open source and is funded by the NASA Cryosphere, IceBridge Research and MAP (Modeling Analysis and Prediction) programs, JPL R&TD (Research, Technology and Development) and the National Science Foundation. > > Large scale ice flow models are necessary that can accurately model the evolution of Greenland and Antarctica in a warming climate. In order to achieve this goal, and improve projections of future sea level rise, ISSM relies on state of the art technologies. * For more information: https://issm.jpl.nasa.gov/ * User guide: https://issmteam.github.io/ISSM-Documentation/using-issm/ * Github: https://github.com/ISSMteam/ISSM ---- ===== Running ISSM on Comet ===== As ISSM has a large number of dependencies, including //specific// versions of Python, as such it has been installed on Comet as an **Apptainer** //container image//. The ISSM container is stored in the ''/nobackup/shared/containers'' directory and is accessible to __all__ users of Comet. You do //not// need to take a copy of the container file; it should be left in its original location. You can find the container files here: * ''/nobackup/shared/containers/issm.2026.03.sif'' We //normally// recommend using the latest version of the container, in the case of ISSM, the version numbers represent the date the container was created. **Container Image Versions** We //may// reference a specific container file, such as **issm.2026.03.sif**, but you should always check whether this is the most recent version of the container available. Simply ''ls'' the ''/nobackup/shared/containers'' directory and you will be able to see if there are any newer versions listed. We have provided a convenience script that will automate **all** of steps needed to run applications inside the container as well as access your ''$HOME'', ''/scratch'' and ''/nobackup'' directories to just two simple commands. * ''/nobackup/shared/containers/issm.2026.03.sh'' There is a corresponding ''.sh'' script for //each version// of the container image we make available. Just ''source'' this file and it will take care of loading ''apptainer'', setting up your ''bind'' directories and calling the ''exec'' command for you - and give you a single command called ''container.run'' (instead of the really long //apptainer exec// command) to then //run// anything you want inside the container, for example to see the help page for ''issm.exe'': $ source /nobackup/shared/containers/issm.2026.03.sh $ container.run issm.exe -help ────────────────────────────────────────────────────────────────────── Ice-sheet and Sea-level System Model (ISSM) version 2026.1 GitHub: https://github.com/ISSMteam/ISSM/ Documentation: https://issmteam.github.io/ISSM-Documentation/ ────────────────────────────────────────────────────────────────────── ---------------------------------------- Petsc Release Version 3.22.3, Jan 29, 2025 The PETSc Team petsc-maint@mcs.anl.gov https://petsc.org/ See https://petsc.org/release/changes for recent updates. See https://petsc.org/release/faq for problems. See https://petsc.org/release/manualpages for help. Libraries linked from /home/jenkins/workspace/Debian_Linux-Binaries-Python_3/externalpackages/petsc/install/lib ---------------------------------------- Options for all PETSc programs: -version: prints PETSc version ... $ ---- ===== Basic use of ISSM commands ===== ISSM is installed to ''/opt/ISSM-Linux-Python-3/bin'' //within// the container and this is added to the ''$PATH'' variable so that you do not need to enter the full path to the commands, simply call ''container.run'' with the ISSM command you want to run as per the example below. $ source /nobackup/shared/containers/issm.2026.03.sh $ container.run issm.exe * See https://issmteam.github.io/ISSM-Documentation/using-issm/ ---- ===== Accessing ISSM in Python ===== You need to use the version of Python installed //within// the ISSM container to run your scripts if you intend to use the ISSM Python modules. Following the [[https://issmteam.github.io/ISSM-Documentation/using-issm/getting-started/loading-issm|ISSM getting started]] guide we can verify ISSM Python modules are available with the following commands: $ source /nobackup/shared/containers/issm.2026.03.sh $ container.run python The Python runtime //inside// the container will start: Python 3.11.0rc1 (main, Aug 12 2022, 10:02:14) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> Now enter the following: from issmversion import issmversion The normal output from ISSM should be shown, indicating that the Python modules are working correctly: Ice-sheet and Sea-level System Model (ISSM) Version 2026.1 (website: https://issmteam.github.io/ISSM-Documentation/ contact: https://github.com/ISSMteam/ISSM/) Build date: Fri Mar 20 06:13:00 PDT 2026 Copyright (c) 2009-2026 California Institute of Technology (3-Clause BSD License) >>> Assuming you have written a Python script called ''myscript.py'' to use the ISSM Python modules/functions, and it is in your home directory, you can use ''python'' inside the ISSM container to run it as follows: $ source /nobackup/shared/containers/issm.2026.03.sh $ container.run python $HOME/myscript.py Note that you //do not// have to set up the ''$ISSM_DIR'' environment variable, alter the ''$PYTHONPATH'' or any of the other initial //setup// steps as found in the Getting Started guide - this is all done for you within the container. ---- ===== Accessing Data ===== As long as you use the ''container.run'' method to launch the applications, you will automatically be able to read and write to files in your ''$HOME'', ''/scratch'' and ''/nobackup'' directories. If you run any of the applications inside the container manually, without using the ''container.run'' helper you will need to use the ''--bind'' argument to ''apptainer'' to ensure that all relevant directories are exposed within the container. Do remember that the container filesystem itself cannot be changed - so you won't be able to write or update to ''/usr/local'', ''/opt'', ''/etc'' or any other internal folders - keep output directories restricted to the three areas listed above. ---- ===== Building ISSM for Comet ===== **Important!** The information in this section is for RSE HPC admin staff or users who are interested in how the software is installed. If you are only interested in //using// ISSM, stop reading now. **Build script** #!/bin/bash IMAGE_DATE=`date +%Y.%m` echo "Loading modules..." module load apptainer echo "" echo "Building container..." export APPTAINER_TMPDIR=/scratch echo "" echo "Container will have date suffix $IMAGE_DATE" SOURCE_DIR=`pwd` apptainer build --bind $SOURCE_DIR:/mnt issm.$IMAGE_DATE.sif issm.def 2>&1 | tee issm.log **Container definition** Note that we use //Ubuntu 22// instead of the more recent //Ubuntu 24//, as ISSM binaries are built against Python 3.11 - which is not available in the more recent release of Ubuntu. Bootstrap: docker From: ubuntu:jammy #################################################################### # # ISSM Container # ================== # This is a runtime environment for the Ice-sheet and Sea-level System Model # Please see: # https://hpc.researchcomputing.ncl.ac.uk/dokuwiki/dokuwiki/doku.php?id=advanced:software:issm # #################################################################### %post # Prevent interactive prompts export DEBIAN_FRONTEND=noninteractive #################################################################### # # Basic system packages # #################################################################### # Update & install only necessary packages apt-get update apt-get install -y apt-utils wget tar aptitude less openmpi-bin openmpi-common vim python3.11-full python3.11-venv libpython3.11 python3-pip # Make Python3.11 the default, as needed by ISSM ln -sf /usr/bin/python3.11 /usr/bin/python3 ln -sf /usr/bin/python3 /usr/bin/python # Clean up APT cache to save space apt-get clean # Any Python modules installed via pip go here # pip install NAME --break-system-packages # Remove any Python cache files after pip pip cache purge ################################################################################# # # This is all the custom stuff needed to build the various ISSM tools # ################################################################################# # Src and opt mkdir -p /src/zipped mkdir -p /opt/bin echo "" echo "INSTALL ISSM" echo "============" echo "" wget -q https://ross.ics.uci.edu/ISSM-Linux-Python-3.tar.gz -O /src/zipped/ISSM-Linux-Python-3.tar.gz cd /opt tar -zxf /src/zipped/ISSM-Linux-Python-3.tar.gz # Remove all src packages echo "" echo "FINAL CLEAN UP" echo "==============" echo "" cd / rm -rf /src pip cache purge %environment export ISSM_DIR=/opt/ISSM-Linux-Python-3 export PYTHONPATH=$ISSM_DIR/bin:$ISSM_DIR/lib:$ISSM_DIR/share:$ISSM_DIR/share/proj:$PYTHONPATH export PATH=/opt/bin:$ISSM_DIR/bin:$PATH %runscript **Helper script** #!/bin/bash module load apptainer IMAGE_NAME=/nobackup/shared/containers/issm.2026.03.sif container.run() { # Run a command inside the container... # automatically bind the /scratch and /nobackup dirs # pass through any additional parameters given on the command line apptainer exec --bind /scratch:/scratch --bind /nobackup:/nobackup ${IMAGE_NAME} $@ } ---- [[:advanced:software|Back to software]]