#!/bin bash set -euo pipefail STAGE=${1:-} function help() { echo "Need to provide a integer for the stage we want to run." echo " e.g." echo " - 0: Build Icon and python environemnts" echo " - 1: Run the ideal case used to initialize a real run from" echo " - 2: Run the real case" echo " - 3: postprocess outputs" } if [ -z "$STAGE" ]; then help exit 1 fi if [[ "$STAGE" -lt 0 ]] || [[ "$STAGE" -gt 3 ]]; then echo "invalid stage id: $STAGE" help exit 2 fi AUTOSUBMIT_VERSION="4.0.76" SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" PROJECT_ROOT=$(readlink -f $SCRIPTDIR/../) OUTPUTDIR=$PROJECT_ROOT/output mkdir -p $OUTPUTDIR WORKDIR=$SCRATCH/autosubmit_rundir PROJECTNAME='ls-mayer' mkdir -p $WORKDIR/$PROJECTNAME/$(whoami) virtualenv -p python3 pyenv . pyenv/bin/activate cat > requirements.txt <<EOF autosubmit==$AUTOSUBMIT_VERSION EOF pip install -r requirements.txt if [ ! -e ./.autosubmitrc ] || [ ! -e autosubmit ] ; then # Note that we create autosubmit here with --local to create the .autosubmitrc not in the home dir # This requires to run all autosubmit calls from within this root dir. autosubmit configure --local -db $(pwd)/autosubmit -dbf autosubmit.db -lr $(pwd)/autosubmit fi if [ ! -e autosubmit/autosubmit.db ]; then autosubmit install fi PROJECT_ORIGIN="https://gitlab.physik.uni-muenchen.de/w2w/autosubmit-icon-today.git" PROJECT_BRANCH="master" EXPID=rfi001 if [ ! -e autosubmit/$EXPID/ ]; then mkdir -p autosubmit/$EXPID/ autosubmit expid -min -H lmu -d myiconsim -repo $PROJECT_ORIGIN -b $PROJECT_BRANCH &> >(tee autosubmit/$EXPID/log.autosubmit.expid) AUTOID=$(grep Experiment autosubmit/$EXPID/log.autosubmit.expid | awk '{print $2}') mv -v autosubmit/$AUTOID/* autosubmit/$EXPID rmdir -v autosubmit/$AUTOID fi cat > autosubmit/$EXPID/conf/minimal.yml <<EOF ICON_CASE: "real-from-ideal" CONFIG: AUTOSUBMIT_VERSION: "$AUTOSUBMIT_VERSION" TOTALJOBS: 20 MAXWAITINGJOBS: 20 DEFAULT: EXPID: "$EXPID" HPCARCH: "LOCAL" # use LMU to run on cluster CUSTOM_CONFIG: PRE: - "%PROJDIR%/conf/common" - "%PROJDIR%/conf/%ICON_CASE%" PROJECT: PROJECT_TYPE: "git" PROJECT_DESTINATION: "autosubmit-icon-today" GIT: PROJECT_ORIGIN: "$PROJECT_ORIGIN" PROJECT_BRANCH: "$PROJECT_BRANCH" PROJECT_COMMIT: "" PROJECT_SUBMODULES: "" FETCH_SINGLE_BRANCH: True EOF cat > autosubmit/${EXPID}/conf/myplatforms.yml <<EOF #Platforms: # LMU: # TYPE: slurm # HOST: $HOSTNAME # PROJECT: $PROJECTNAME # USER: $(whoami) # SCRATCH_DIR: $WORKDIR # ADD_PROJECT_TO_HOST: False # MAX_WALLCLOCK: '48:00' # TEMP_DIR: '' # CUSTOM_DIRECTIVES: "#SBATCH --export=ALL,OMPI_MCA_btl_tcp_if_include=10.0.0.0/8" # # LRZ: # # TYPE: slurm # TYPE: ps # HOST: LRZ-kcs # PROJECT: lxcusers # USER: ra57nun # SCRATCH_DIR: /dss/dssfs02/lwp-dss-0001/uh211/uh211-dss-0000/ra57nun # ADD_PROJECT_TO_HOST: False # MAX_WALLCLOCK: '48:00' # TEMP_DIR: '' EOF cat > autosubmit/${EXPID}/conf/myconf.yml <<EOF spack: init: "" # command to load spack environment, e.g. module load spack, use spack/setup-env.sh if empty url: https://github.com/spack/spack.git # url to download spack if necessary branch: develop # if downloaded, branch name to use compiler: "gcc@11.3.0" # desired compiler for spack root: "%HPCROOTDIR%/../spack" # path to a spack install, will be downloaded to if not present externals: "slurm" user_cache_path: "%HPCROOTDIR%/../spack_user_cache_path" # spack puts data here when bootstrapping, leave empty to use home folder user_config_path: "%HPCROOTDIR%/../spack_user_config_path" # spack puts data here when bootstrapping, leave empty to use home folder disable_local_config: false # if true, spack installs into spack source dir upstreams: "/software/opt/focal/x86_64/spack/2023.02" icon: #build_cmd: "icon-nwp@%ICON.VERSION%% %SPACK.COMPILER%+debug+petsc target=x86_64_v2 ^openmpi+pmi+legacylaunchers schedulers=slurm fabrics=ucx ucx+dc+dm+ib_hw_tm+mlx5_dv+rc+rdmacm+thread_multiple+ud+verbs" build_cmd: "icon-nwp@%ICON.VERSION%% %SPACK.COMPILER%+debug target=x86_64_v2 source=dkrz_https" version: psp data_management: # Where do we put the output files afterwards? local_destination_folder: $OUTPUTDIR/ atmosphere_namelist: | nwp_phy_nml: psp_mode: 1 atmosphere_namelist_ideal: | nwp_phy_nml: psp_mode: 1 EOF if [ "$STAGE" -eq 0 ]; then echo "Running Stage 0" autosubmit create ${EXPID} -np autosubmit refresh ${EXPID} autosubmit setstatus ${EXPID} -ft PREPARE_EXPERIMENT -t SUSPENDED -s -np autosubmit run ${EXPID} fi if [ "$STAGE" -eq 1 ]; then echo "Running Stage 1" autosubmit setstatus ${EXPID} -fs SUSPENDED -t WAITING -s -np autosubmit setstatus ${EXPID} -ft EXTPAR_FROM_IDEALIZED FG_ANA_FROM_IDEALIZED -t SUSPENDED -s -np autosubmit run ${EXPID} fi if [ "$STAGE" -eq 2 ]; then echo "Running Stage 2" autosubmit setstatus ${EXPID} -fs SUSPENDED -t WAITING -s -np autosubmit setstatus ${EXPID} -ft TRANSFER -t SUSPENDED -s -np autosubmit run ${EXPID} fi if [ "$STAGE" -eq 3 ]; then echo "Running Stage 3" autosubmit setstatus ${EXPID} -fs SUSPENDED -t WAITING -s -np autosubmit run ${EXPID} fi