Platform Configuration

Overview

This wiki page outlines the configuration files required by HARMONIE for successful compilation and running of the system.

Basic requirements

All experiments require a valid host to "setup" an experiment using the Harmonie script. Recall from the quick start instructions that in order to setup a new experiment on your platform, called YOURHOST, using HARMONIE downloaded to PATH_TO_HARMONIE one must issue the following command:

cd hm_home/my_exp
PATH_TO_HARMONIE/config-sh/Harmonie setup -r PATH_TO_HARMONIE -h YOURHOST

hm_home/my_exp contains:

Env_submit -> config-sh/submit.YOURHOST           ## YOURHOST platform specific settings
Env_system -> config-sh/config.YOURHOST           ## YOURHOST task submission settings
./config-sh/hm_rev                                ## contains PATH_TO_HARMONIE
./config-sh/Main                                  ## The script used to run HARMONIE
./config-sh/submit.YOURHOST                       ## YOURHOST platform specific settings
./config-sh/config.YOURHOST                       ## YOURHOST task submission settings
./suites/harmonie.pm                              ## perl module to define ensemble settings
./ecf/config_exp.h                                ## your experiment definition (scientific type options)
./scr/include.ass                                 ## assimilation specific settings

But, what if your host configuration is not available in the HARMONIE system? Host specific configuration files in PATH_TO_HARMONIE/config-sh must be available for your host and configuration files for the compilation of the code must be available. This documentation attempts to describe what is required.

Host config files

Env_system -> config-sh/config.YOURHOST

The config.YOURHOST file defines host specific variables such as some input directory locations. If your YOURHOST is not already included in HARMONIE it may be work looking at config.* files in config-sh/ to see what other people have done. The table below outlines variables set in config-sh/config-sh.YOURHOST and what the variables do:

Variable nameDescription
COMPCENTREcontrols special ECMWF solutions (such as MARS) where required. Set to LOCAL if you are unsure
HARMONIE_CONFIGdefines the config file used by Makeup compilation
MAKEUP_BUILD_DIRlocation of where Makeup compiles the HARMONIE code
MAKE_OWN_PRECOMPILEDyes=>install pre-compiled code in $PRECOMPILED
PRECOMPILEDlocation of (optional) pre-compiled HARMONIE code
E923_DATA_PATHlocation of input data for E923, climate generation
PGD_DATA_PATHlocation of input data for PGD, surfex climate generation
ECOSG_DATA_PATHlocation of input data for ECOCLIMAP2G
GMTED2010_DATA_PATHlocation of HRES DEM
SOILGRID_DATA_PATHlocation of SOILGRID data
HM_SAT_CONSTlocation of constants for satellite assimilation
RTTOV_COEFDIRlocation of RTTOV coefficients
HM_DATAlocation of top working directory for the experiment
HM_LIBlocation of src/scripts and compiled code
TASK_LIMITMaximum number of jobs submitted by ECFLOW
RSYNC_EXCLUDEused to exclude .git* sub-directories from copy of source code for compilation
DR_HOOK_IGNORE_SIGNALSenvironment variable used by Dr Hook to ignore certain "signals"
HOST0define primary host name
HOSTNdefine other host name(s)
HOST_INSTALL0=> install on HOST0, 0:...:N => install on HOST0,...,HOSTN
MAKEmake command may need to be explicity defined. Set to make for most platforms
MKDIRmkdir command (default: mkdir -p)
JOBOUTDIRwhere ECFLOW writes its log files
ECCODES_DEFINITION_PATHlocation of local ecCodes definition files
BUFR_TABLESlocation of local BUFR tables

Env_submit -> config-sh/submit.YOURHOST

The Env_submit file uses perl to tell the HARMONIE scheduler how to execute programs - which programs should be run on multiple processors and define batch submissions if required.

perldescription
%backg_jobdefines variables for jobs run in the background on HOST0
%scalar_jobdefines variables for single processor batch jobs
%par_jobdefines variables for multi-processor batch jobs
@backg_listlist of tasks to be submitted as a background job
@scalar_listlist of tasks to be submitted as a scalar job
@par_listlist of tasks to be submitted as parallel job
default"wildcard" task name to defined default type of job for unlisted tasks

Host summary

YOURHOSTHost typebatchContactNotes
AEMET.cirrus.gnu
AEMET.nimbus.ifort.mpi
biSMHI
centos8
cirrus
debian11
ecgbswitched off
ecgb-ccaECMWF HPC with MPI dual hostslurm/PBSswitched off
ECMWF.atosECMWF Atos HPC with MPIslurm
fedora33
fedora34
KNMI.bullx_b720KNMI Atos HPC with MPIslurmBert van Ulft
LinuxPCGeneral Linux PC no MPInone
LinuxPC-MPIGeneral Linux PC with MPInone
LinuxPC-MPI-KNMIKNMI Linux workstation (Fedora)none
LinuxPC-MPI-ubuntuUbuntu Linux PC with MPInone
LinuxPC-serial
METIE.LinuxPCMETIE CentOS 6 PC with MPInoneEoin Whelan
METIE.LinuxPC8
METIE.LinuxRH7gnuMETIE Redhat 7 server with MPInoneEoin Whelan
METIE.LinuxRH7gnu-dev
METIE.reaserve8
METIE.reaserve8musc
nebula
nebula-gnu
opensuse
SMHI.Linda4SMHI
SMHI.Linda5SMHI
stratus
teho
ubuntu18
ubuntu20
ubuntu20_nompi
ubuntu2204.GNUpodman containernoneEoin Whelancontainer
ubuntu2304.GNUpodman containernoneEoin Whelancontainer
ubuntu2310.GNUpodman containernoneEoin Whelancontainer
ubuntu2404.GNUpodman containernoneEoin Whelancontainer
ubuntu2410.GNUpodman containernoneEoin Whelancontainer
voima

Compilation config files

Makeup

config files required for compilation of code using Makeup ...

More information on Makeup is available here: Build with Makeup

Obsmon

For config files required for compilation of obsmon check util/obsmon/config