.. _env-files-gnu: ################################################ Sample environment file for GNU 12.2.0 compilers ################################################ Below is a sample environment file (based on an enviroment file for the Harvard Cannon computer cluster). This file will load software libraries built with the `GNU 12.2.0 compilers `_. .. note:: This environment file shown below assumes that required software packages for :program:`GEOS-Chem Classic` are available as pre-built modules. If your computer system does not have these packages pre-installed, you can build them with Spack. Please see our :ref:`spackguide` supplemental guide for detailed instructions. Save the code below (with any appropriate modifications for your own computer system) to a file named :file:`~/gcclassic.gnu12.env`. .. code-block:: bash ############################################################################### # # Environment file for GCClassic + GNU Compiler Collection 12.2.0 # ############################################################################### # Display message (if we are in a terminal window) if [[ $- = *i* ]] ; then echo "Loading modules for GEOS-Chem Classic, please wait ..." fi #============================================================================== # Unload all previously-unloaded software #============================================================================== # Unload packages loaded with "module load" module purge #============================================================================== # Load software packages for GNU 12.2.0 #============================================================================== if [[ $- = *i* ]] ; then echo "... Loading FASRC-built software, please wait ..." fi # Pre-built modules needed for GEOS-Chem # (NOTE: These may be named differently on your system) module load gcc/12.2.0-fasrc01 # gcc / g++ / gfortran module load openmpi/4.1.4-fasrc01 # MPI module load netcdf-c/4.9.2-fasrc01 # netcdf-c module load netcdf-fortran/4.6.0-fasrc02 # netcdf-fortran module load flex/2.6.4-fasrc01 # Flex lexer (needed for KPP) module load cmake/3.25.2-fasrc01 # CMake (needed to compile) #============================================================================== # Environment variables and related settings # (NOTE: Lmod will define _HOME variables for each loaded module) #============================================================================== # Make all files world-readable by default umask 022 # Set number of threads for OpenMP. If running in a SLURM environment, # use the number of requested cores. Otherwise use 8 cores for OpenMP. if [[ "x${SLURM_CPUS_PER_TASK}" == "x" ]]; then export OMP_NUM_THREADS=8 else export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK}" fi # Max out the stacksize memory limit export OMP_STACKSIZE="500m" # Compilers export CC="gcc" export CXX="g++" export FC="gfortran" export F77="${FC}" # netCDF if [[ "x${NETCDF_HOME}" == "x" ]]; then export NETCDF_HOME="${NETCDF_C_HOME}" fi export NETCDF_C_ROOT="${NETCDF_HOME}" export NETCDF_FORTRAN_ROOT=${NETCDF_FORTRAN_HOME} # KPP 3.0.0+ export KPP_FLEX_LIB_DIR=${FLEX_HOME}/lib64 #============================================================================== # Set limits #============================================================================== ulimit -c unlimited # coredumpsize ulimit -u 50000 # maxproc ulimit -v unlimited # vmemoryuse ulimit -s unlimited # stacksize #============================================================================== # Print information #============================================================================== module list echo "" echo "Environment:" echo "" echo "CC : ${CC}" echo "CXX : ${CXX}" echo "FC : ${FC}" echo "KPP_FLEX_LIB_DIR : ${KPP_FLEX_LIB_DIR}" echo "MPI_HOME : ${MPI_HOME}" echo "NETCDF_HOME : ${NETCDF_HOME}" echo "NETCDF_FORTRAN_HOME : ${NETCDF_FORTRAN_HOME}" echo "OMP_NUM_THREADS : ${OMP_NUM_THREADS}" echo "" echo "Done sourcing ${BASH_SOURCE[0]}" To activate the settings contained in the environment file, type: .. code-block:: console $ . ~/gcclassic.gnu12.env You may also place the above command within your :ref:`GEOS-Chem run script `, which will be discussed in a subsequent chapter.