From 374a8e2a4c8d0c965948e58186bec1383457d3e6 Mon Sep 17 00:00:00 2001 From: Varyngoth Date: Tue, 31 Mar 2026 21:46:46 -0300 Subject: [PATCH] First push --- ioapi-3.2/Makefile | 263 +++++++++++++ .../ioapi/Makeinclude.Linux2_x86_64ifort | 116 ++++++ skyply.def | 357 ++++++++++++++++++ 3 files changed, 736 insertions(+) create mode 100644 ioapi-3.2/Makefile create mode 100644 ioapi-3.2/ioapi/Makeinclude.Linux2_x86_64ifort create mode 100644 skyply.def diff --git a/ioapi-3.2/Makefile b/ioapi-3.2/Makefile new file mode 100644 index 0000000..13cf538 --- /dev/null +++ b/ioapi-3.2/Makefile @@ -0,0 +1,263 @@ +#......................................................................... +# VERSION "$Id: Makefile.template 1 2017-06-10 18:05:20Z coats $" +# EDSS/Models-3 I/O API Version 3.2. +#......................................................................... +# COPYRIGHT +# (C) 1992-2002 MCNC and Carlie J. Coats, Jr., and +# (C) 2003-2004 by Baron Advanced Meteorological Systems, +# (C) 2005-2014 Carlie J. Coats, Jr., and +# (C) 2014- UNC Institute for the Environment +# Distributed under the GNU Lesser PUBLIC LICENSE version 2.1 +# See file "LGPL.txt" for conditions of use. +#......................................................................... +# Usage: +# Either edit this Makefile to un-comment the options you want, or +# override the options by environment or command-line variables. +# For example: +# +# setenv BIN Linux2_x86_64ifort +# setenv BASEDIR /wherever/I-ve/un-tarred/the/code +# setenv CPLMODE nocpl +# make +# +# or: +# +# make BIN=Linux2_x86_64pg CPLMODE=pncf INSTALL=/foo/bar +# +#......................................................................... +# Environment/Command-line Variables: +# +# BIN machine/OS/compiler/mode type. Shows up as suffix +# for "$(IODIR)/Makeinclude.$(BIN)" to determine compilation +# flags, and in $(OBJDIR) and $(INSTALL) to determine +# binary directories +# +# INSTALL installation-directory root, used for "make install": +# "libioapi.a" and the tool executables will be installed +# in $(INSTALL)/$(BIN) +# +# LIBINST overrides $(INSTALL)/$(BIN) for libioapi.a +# +# BININST overrides $(INSTALL)/$(BIN) for M3TOOLS executables +#......................................................................... +# Directories: +# +# $(BASEDIR) is the root directory for the I/O API library source, +# the M3Tools and M3Test source,the HTML documentation, +# and the (machine/compiler/flag-specific) binary +# object/library/executable directories. +# $(HTMLDIR) is the web documentation +# $(IODIR) is the I/O API library source +# $(TOOLDIR) is the "M3TOOLS" source +# $(OBJDIR) is the current machine/compiler/flag-specific +# build-directory +# $(INSTALL) installation-directory root, used for "make install": +# "libioapi.a" and the tool executables will be installed +# in $(INSTALL)/$(BIN) object/library/executable directory +#......................................................................... +# Note On Library Versions and configuration: +# +# Environment variable "BIN" specifies library version up to +# link- and compile-flag compatibility. Dependecies upon machine, +# OS, and compiler are found in file "Makeinclude.$(BIN)". +# Command-line "make BIN=..." overrides environment +# variable "% setenv BIN " which overrides the +# make-variable default below. +# +# IN PARTICULAR, pay attention to the notes for various versions +# that may be built for Linux x86 with the Portland Group +# compilers: see comments in $(IODIR)/include 'MAKEINCLUDE'.Linux2_x86pg +#......................................................................... +# Special Make-targets +# +# configure: "Makefile"s, with the definitions indicated below. +# all: OBJDIR, FIXDIR, libioapi.a, and executables, with +# the current mode. +# lib: OBJDIR, FIXDIR, libioapi.a +# clean: remove .o's, libioapi.a, and executables from OBJDIR +# rmexe: remove executables from OBJDIR +# relink: rebuild executables from OBJDIR +# install: copy "libioapi.a" and executables to $(INSTDIR) +# dirs: make OBJDIR and FIXDIR directories +# fix: FIXDIR and extended-fixed-source INCLUDE-files +# gtar: GZipped tar-file of the source and docs +# nametest: test of name-mangling compatibility (requires that +# libnetcdff.a be manually placed into $(OBJDIR)) +# +###################################################################### +# ---------- Definitions for "make configure" ------------------ +# +# VERSIONING DEFINITIONS: the preprocessor definitions in $(IOAPIDEFS) +# (below) govern I/O API behavior; versions with distinct combinations +# of these options are NOT library- nor object-compatible and should +# be built in *distinct* $(OBJDIR)s: +# +# Defining IOAPICPL turns on PVM-enabled "coupling mode" and +# requires "libpvm3.a" for linking. +# +# Defining IOAPI_PNCF turns on PnetCDF based distributed I/O +# and requires libpnetcdf.a and libmpi.a for linking; it should +# be used only with an MPI-based ${BIN} (e.g., Linux2_x86_64ifortmpi) +# +# Defining IOAPI_NCF4 turns on full netCDF-4 interfaces, including +# support for INTEGER*8 variables and attributes. It requires +# extra libraries for linking, which can be found by running the +# commands "nf-config --flibs" and "nc-config --libs" +# +# Defining IOAPI_NO_STDOUT suppresses WRITEs to the screen in +# routines INIT3(), M3MSG2(), M3MESG(), M3PARAG(), and M3ABORT(). +# This also helps control the "double-printed-message" behavior +# caused by recent SGI compilers. +# +# Defining IO_360 creates the 360-day "global climate" version +# of the library. +# +# Defining BIN3_DEBUG turns on trace-messages for native-binary +# mode routines. +###################################################################### +# ---------- Default/fall-back Definitions -------------------- +# For POSIX "make", environment variables override these; +# variable setting on the command line ("make VAR=VALUE ...") +# overrides that. +# +# GNU "make" DOES NOT FOLLOW POSIX, AND INSTEAD DOES ITS OWN +# WRONG-HEADED THING, MAKING IT IMPOSSIBLE TO HAVE DEFAULTS +# THAT ARE THEN OVER-RIDDEN BY THE ENVIRONMENT !! +# +# BIN : Use 64-bit gcc/gfortran +# BASEDIR : source under this current directory +# INSTALL : installation directly under ${HOME} +# LIBINST : for installation of library +# BININST : for installation of m3tools executables +# CPLMODE : nocpl +# IOAPIDEFS : none (can override for climo-year, etc. +# PVMINCL : none +# NCFLIBS : assumes netCDF-4-style separate libs +# +# +# BIN = Linux2_x86_64 +# BASEDIR = ${PWD} +# INSTALL = ${HOME} +# LIBINST = $(INSTALL)/$(BIN) +# BININST = $(INSTALL)/$(BIN) +# CPLMODE = nocpl +# IOAPIDEFS = +# PVMINCL = +# NCFLIBS = -lnetcdff -lnetcdf +# +# **** Variants **** +# +# BASEDIR = ${HOME}/ioapi-3.2 # fall-back to versioned source under this directory +# +# CPLMODE = cpl # turn on PVM coupling mode +# PVMINCL = $(PVM_ROOT)/conf/$(PVM_ARCH).def +# IOAPIDEFS = "-DIOAPICPL" +# +# CPLMODE = pncf # turn on PnetCDF distributed-file mode +# NCFLIBS = -lpnetcdf -lnetcdff -lnetcdf +# IOAPIDEFS = "-DIOAPI_PNCF" +# +# NCFLIBS = -lnetcdf # Assumes netcdf-3-style unified libs +# IOAPIDEFS = "-DIOAPI_PNCF" +# +# NCFLIBS = -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz # netcdf-4 with HDF but not DAP +# IOAPIDEFS = "-DIOAPI_NCF4" +# +# NCFLIBS = -lpnetcdf -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz # PnetCDF+netcdf-4 with HDF but not DAP +# IOAPIDEFS = "-DIOAPI_PNCF -DIOAPI_NCF4" +# +# NCFLIBS = "-lnetcdff -lnetcdf -lhdf5hl_fortran -lhdf5_fortran -lhdf5_hl -lhdf5 -lmfhdf -ldf -ljpeg -lm -lz -lcurl -lsz" # all-out netcdf-4 +# +# NCFLIBS = "`nf-config --flibs` `nc-config --libs`" # general-case netcdf-4 with NetCDF "bin" in ${path} +# +# INSTALL = -- what GNU "configure" calls "--prefix=..." +# LIBINST = $(INSTALL)/lib +# BININST = $(INSTALL)/bin + +# ---------- Edit-command used by "make configure" to customize the "*/Makefile*" + +SEDCMD = \ +-e 's|IOAPI_BASE|$(BASEDIR)|' \ +-e 's|LIBINSTALL|$(LIBINST)|' \ +-e 's|BININSTALL|$(BININST)|' \ +-e 's|IOAPI_DEFS|$(IOAPIDEFS)|' \ +-e 's|NCFLIBS|$(NCFLIBS)|' \ +-e 's|MAKEINCLUDE|include $(IODIR)/Makeinclude|' \ +-e 's|PVMINCLUDE|include $(PVMINCL)|' + + +# ---------- I/O API Build System directory definitions -------- + +VERSION = 3.2-${CPLMODE} +BASEDIR = ${PWD} +NCFLIBS = -lnetcdff -lnetcdf +IODIR = $(BASEDIR)/ioapi +FIXDIR = $(IODIR)/fixed_src +HTMLDIR = $(BASEDIR)/HTML +TOOLDIR = $(BASEDIR)/m3tools +OBJDIR = $(BASEDIR)/$(BIN) + + +# ---------------------- TOP-LEVEL TARGETS: ------------------ +# +all: dirs fix configure + (cd $(IODIR) ; make BIN=${BIN} all) + (cd $(TOOLDIR) ; make BIN=${BIN} all) + +test: + (cd $(BASEDIR)/tests; ioapitest.csh ${BASEDIR} ${BIN} ) + +configure: ${IODIR}/Makefile ${TOOLDIR}/Makefile + (cd $(IODIR) ; sed $(SEDCMD) < Makefile.$(CPLMODE).sed > Makefile ) + (cd $(TOOLDIR) ; sed $(SEDCMD) < Makefile.$(CPLMODE).sed > Makefile ) + +bins: dirs + (cd $(IODIR) ; make bins) + (cd $(TOOLDIR) ; make bins) + +clean: + (cd $(IODIR) ; make BIN=${BIN} -i clean) + (cd $(TOOLDIR) ; make BIN=${BIN} -i clean) + +binclean: dirs + (cd $(IODIR) ; make binclean) + (cd $(TOOLDIR) ; make binclean) + +relink: + (cd $(TOOLDIR) ; make BIN=${BIN} relink) + +binrelink: + (cd $(TOOLDIR) ; make binrelink) + +install: $(LIBINST) $(BININST) + echo "Installing I/O API and M3TOOLS in $(LIBINST) and $(BININST)" + (cd $(IODIR) ; make BIN=${BIN} INSTDIR=${LIBINST} install) + (cd $(TOOLDIR) ; make BIN=${BIN} INSTDIR=${BININST} install) + +dirs: $(OBJDIR) $(FIXDIR) + +fix: + (cd $(IODIR) ; make fixed_src) + +gtar: + cd $(BASEDIR); date > VERSION.txt; \ +gtar cvfz ioapi-$(VERSION).tar.gz --dereference -X exclude \ +Makefile* *.txt exclude ioapi HTML m3tools tests + +lib: dirs + (cd $(IODIR) ; make all) + +nametest: lib $(OBJDIR)/libnetcdff.a + (cd $(IODIR) ; make nametest) + +$(FIXDIR): + mkdir -p $(FIXDIR) + +$(OBJDIR): + mkdir -p $(OBJDIR) + +$(LIBINST): $(INSTALL) + cd $(INSTALL); mkdir -p $(LIBINST) + +$(BININST): $(INSTALL) + cd $(INSTALL); mkdir -p $(BININST) diff --git a/ioapi-3.2/ioapi/Makeinclude.Linux2_x86_64ifort b/ioapi-3.2/ioapi/Makeinclude.Linux2_x86_64ifort new file mode 100644 index 0000000..3e67748 --- /dev/null +++ b/ioapi-3.2/ioapi/Makeinclude.Linux2_x86_64ifort @@ -0,0 +1,116 @@ +# Version "$Id: Makeinclude.Linux2_x86_64ifort 1 2017-06-10 18:05:20Z coats $" +# +# Michael Bane (UManchester UK) reports that for ifort version 9, +# -stack_temps -safe_cray_ptr are not supported and that there are +# problems with "-unroll" without an unroll-count (bug reported +# to Intel) + +AR = ar +CC = icc +CXX = icpc +FC = ifort -auto -warn notruncated_source -Bstatic -static-intel +M4 = m4 +LINK = $(CC) + +## Module-include-directory command +MODI = -I +E132 = -extend-source 132 + +# MFLAGS = -traceback # generic +# MFLAGS = -traceback -msse4.1 -xSSE4.1 # penryn +# MFLAGS = -traceback -mavx2 -xAVX -march=corei7-avx # SandyBridge +# MFLAGS = -traceback -mavx -xAVX2 -march=corei7-avx2 # Haswell +MFLAGS = -traceback -xHost # this-machine + +OMPFLAGS = -openmp # for Intel compilers, version 15 or earlier +OMPLIBS = -openmp +# OMPFLAGS = -openmp -qopenmp +# OMPLIBS = -openmp -qopenmp -qopenmp-link=static -shared_intel + +COPTFLAGS = -O3 ${MFLAGS} +FOPTFLAGS = -O3 -unroll -stack_temps -safe_cray_ptr \ + -convert big_endian -assume byterecl ${MFLAGS} +FPPFLAGS = -DF90=1 +FSFLAGS = -save +ARCHFLAGS = \ + -DAUTO_ARRAYS=1 \ + -DF90=1 -DFLDMN=1 \ + -DFSTR_L=int \ + -DIOAPI_NO_STDOUT=1 \ + -DAVOID_FLUSH=1 -DBIT32=1 +PARFLAGS = +ARCHLIB = -Bstatic + +# M4DEFFILE = $(PVM_ROOT)/conf/$(PVM_ARCH).m4 +# PVMLIBS = -L$(PVM_ROOT)/lib/$(PVM_ARCH) -lpvm3 + +PVMLIBS = + + + + + + + + + + + + + + + + + + + +AR = ar +CC = icc +CXX = icpc +FC = ifort + +M4 = m4 +LINK = $(FC) + +MODI = -I +E132 = -extend-source 132 + +# Optimization +MFLAGS = -traceback -xHost + +# OpenMP (modern Intel) +OMPFLAGS = -qopenmp +OMPLIBS = -qopenmp + +# Compiler flags +COPTFLAGS = -O3 $(MFLAGS) + +FOPTFLAGS = -O3 -unroll \ + -convert big_endian -assume byterecl \ + $(MFLAGS) + +FPPFLAGS = -DF90=1 +FSFLAGS = -save + +# Architecture flags +ARCHFLAGS = \ + -DAUTO_ARRAYS=1 \ + -DF90=1 -DFLDMN=1 \ + -DFSTR_L=int \ + -DIOAPI_NO_STDOUT=1 \ + -DAVOID_FLUSH=1 + +# MPI + NetCDF (IMPORTANT) +PARFLAGS = -DIOAPI_PNCF=1 + +# Remove static linking (containers hate this) +ARCHLIB = + +# Libraries (you must link these) +NETCDFLIB = -L$(NETCDF_LIBDIR) -lnetcdff -lnetcdf +MPILIBS = -lmpi + +# Combine +LIBS = $(NETCDFLIB) $(MPILIBS) $(OMPLIBS) + +PVMLIBS = \ No newline at end of file diff --git a/skyply.def b/skyply.def new file mode 100644 index 0000000..b2f9f62 --- /dev/null +++ b/skyply.def @@ -0,0 +1,357 @@ +########################################################################### +########################################################################### +## +## Apptainer Build File: Skyply +## Function: Fully-integrated Simulation stack for WRF, CMAQ, & SCICHEM +## +## Documentation: +## +########################################################################### +########################################################################### + +Bootstrap: docker +From: rockylinux:9 + +%labels + Author HPCStack + Version 1.0 + Description "Rocky 9 base with development tools for WRF/CMAQ" + +%environment +############################################################ +## Compiler Settings +############################################################ + +# Intel Compiler +#export CC=icc +#export CXX=icpc +#export FC=ifort +#export F77=ifort + +# GNU Compiler +export CC=gcc +export CXX=g++ +export FC=gfortran +export F77=gfortran + +############################################################ +## General +############################################################ +export HPC_PATH=/opt/hpc +export MODEL_PATH=/opt/models + + +############################################################ +## OpenMPI Settings +############################################################ +export MPI=/opt/hpc/mpi + + +############################################################ +## OpenMP Settings +############################################################ +export OMP_NUM_THREADS=1 +export OMP_PROC_BIND=spread +export OMP_PLACES=cores + + +############################################################ +## HDF5 Settings +############################################################ +export HDF5=$HPC_PATH/hdf5 +export PHDF5=$HDF5 + + +############################################################ +## NetCDF Settings +############################################################ +export NETCDF_INCDIR +export NETCDF_LIBDIR +export NETCDF=$HPC_PATH/netcdf +export NETCDF=$NETCDF + + +############################################################ +## IO/API Settings +############################################################ +export MPI_HOME=$HPC_PATH/mpi +export IOAPI=$HPC_PATH/ioapi + + +############################################################ +## WRF Settings +############################################################ +export WRF_DIR=$MODEL_PATH/wrf +export PATH=$MPI_HOME/bin:$NETCDF/bin:$PATH +export LD_LIBRARY_PATH=$MPI_HOME/lib:$HDF5/lib:$NETCDF/lib:$IOAPI/lib:$LD_LIBRARY_PATH + +############################################################ +## WPS Settings +############################################################ +export WPS_DIR=$MODEL_PATH/wps + +############################################################ +## CMAQ Settings +############################################################ +export CMAQ_DIR=$MODEL_PATH/cmaq + + +export JASPERLIB=/usr/lib64 +export JASPERINC=/usr/include + + + + +%post +# Update system and enable CRB repository +dnf -y install epel-release +dnf config-manager --set-enabled crb +dnf -y update + +# Install development packages +dnf -y install \ + gcc gcc-gfortran gcc-c++ \ + python3 python3-pip \ + R R-devel \ + git wget which file time \ + make cmake automake autoconf libtool \ + libcurl-devel \ + tar bzip2 bzip2-devel \ + perl tcsh csh m4 \ + jasper jasper-devel \ + libpng libpng-devel \ + zlib zlib-devel \ + libxml2 libxml2-devel \ + xz xz-devel \ + zstd \ + sudo \ + unzip \ + diffutils \ + patch \ + --allowerasing \ + && dnf clean all + +mkdir -p /opt/src /opt/hpc /opt/models + +# ------------------------------------------------- +# Create non-root user +# ------------------------------------------------- + +USERNAME="hpcuser" +USER_UID=1000 +USER_GID=1000 + +# Create group and user +groupadd -g ${USER_GID} ${USERNAME} +useradd -m -u ${USER_UID} -g ${USER_GID} -s /bin/bash ${USERNAME} + +# Set password (optional; often not needed for batch jobs) +echo "${USERNAME}:password" | chpasswd + +# Give ownership of relevant directories +chown -R ${USERNAME}:${USERNAME} /opt/src + + +%post +# ------------------------------------------------- +# Define package URLs +# ------------------------------------------------- + +OPENMPI_URL="https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.6.tar.gz" +HDF5_URL="https://support.hdfgroup.org/releases/hdf5/v1_14/v1_14_6/downloads/hdf5-1.14.6.tar.gz" +NETCDF_C_URL="https://downloads.unidata.ucar.edu/netcdf-c/4.10.0/netcdf-c-4.10.0.tar.gz" +NETCDF_FORTRAN_URL="https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.2.tar.gz" +IOAPI_URL="https://www.cmascenter.org/ioapi/download/ioapi-3.2.tar.gz" +WRF_URL="https://github.com/wrf-model/WRF/releases/download/v4.6.0/v4.6.0.tar.gz" +WPS_URL="https://github.com/wrf-model/WPS/archive/refs/tags/v4.6.0.tar.gz" + +SRC_DIR="/opt/src" +mkdir -p ${SRC_DIR} + +# ------------------------------------------------- +# Package list (name + URL) +# ------------------------------------------------- + +packages=( + "openmpi:${OPENMPI_URL}" + "hdf5:${HDF5_URL}" + "netcdf-c:${NETCDF_C_URL}" + "netcdf-fortran:${NETCDF_FORTRAN_URL}" + "ioapi:${IOAPI_URL}" + "wrf:${WRF_URL}" + "wps:${WPS_URL}" +) + +# ------------------------------------------------- +# Download loop +# ------------------------------------------------- + +for pkg in "${packages[@]}"; do + NAME="${pkg%%:*}" + URL="${pkg#*:}" + + echo "Downloading ${NAME}..." + + mkdir -p ${SRC_DIR}/${NAME} + cd ${SRC_DIR}/${NAME} + + wget ${URL} +done + +%post + + export HPC_PATH=/opt/hpc + export MODEL_PATH=/opt/models + + export MPI_HOME=$HPC_PATH/mpi + export HDF5=$HPC_PATH/hdf5 + export NETCDF=$HPC_PATH/netcdf + export IOAPI=$HPC_PATH/ioapi + + export PATH=$MPI_HOME/bin:$NETCDF/bin:$PATH + export LD_LIBRARY_PATH=$MPI_HOME/lib:$HDF5/lib:$NETCDF/lib:$LD_LIBRARY_PATH + +# ------------------------------------------------- +# Build HDF5 (parallel) +# ------------------------------------------------- + cd /opt/src + tar -xzf hdf5-1.14.6.tar.gz + cd hdf5-1.14.6 + + CC=mpicc FC=mpif90 ./configure --prefix=$HDF5 --enable-parallel --enable-fortran + make -j$(nproc) + make install + +# ------------------------------------------------- +# Build NetCDF-C +# ------------------------------------------------- + + cd /opt/src + export CC=/opt/hpc/mpi/bin/mpicc + export CXX=/opt/hpc/mpi/bin/mpicxx + export CPPFLAGS="-I/opt/hpc/hdf5/include" + export LDFLAGS="-L/opt/hpc/hdf5/lib" + export LD_LIBRARY_PATH=/opt/hpc/hdf5/lib:$LD_LIBRARY_PATH + tar -xzf netcdf-c-4.10.0.tar.gz + cd netcdf-c-4.10.0 + + ./configure --prefix=/opt/hpc/netcdf --enable-parallel-tests + make -j$(nproc) + make install + +# ------------------------------------------------- +# Build NetCDF-Fortran +# ------------------------------------------------- + cd /opt/src + tar -xzf v4.6.2.tar.gz + cd netcdf-fortran-4.6.2 + + CPPFLAGS="-I$NETCDF/include" \ + LDFLAGS="-L$NETCDF/lib" \ + ./configure --prefix=$NETCDF --enable-large-files + + make -j$(nproc) + make install + +# ------------------------------------------------- +# Build OpenMPI +# ------------------------------------------------- +cd /opt/src + tar -xzf openmpi-4.1.6.tar.gz + cd openmpi-4.1.6 + + ./configure --prefix=$MPI_HOME + make -j$(nproc) + make install + +# ------------------------------------------------- +# Install WRF +# ------------------------------------------------- + +cd /opt/src +tar -xzf v4.6.0.tar.gz +mv WRFV4.6.0 /opt/models/wrf + +cd /opt/models/wrf + +printf "34\n1\n" | ./configure + +ulimit -s unlimited + +./compile em_real -j $(nproc) 2>&1 | tee compile.log || true + +ls -lh main || true +ls -lh run || true + +# ------------------------------------------------- +# Install WPS +# ------------------------------------------------- + +cd /opt/src +wget https://github.com/wrf-model/WPS/archive/refs/tags/v4.6.0.tar.gz + +# Extract WPS source +tar -xzf v4.6.0.tar.gz +mv WPS-4.6.0 /opt/models/wps + +cd /opt/models/wps + +# Tell WPS where WRF is installed +export WRF_DIR=/opt/models/wrf + +# Configure automatically (choose Linux + gfortran) +printf "1\n" | ./configure + +# Compile WPS +./compile 2>&1 | tee compile.log || true + +# Verify binaries +ls -lh geogrid/src/geogrid.exe || true +ls -lh ungrib/src/ungrib.exe || true +ls -lh metgrid/src/metgrid.exe || true + + + + + + + + + + + +# ------------------------- +# Install I/O API +# ------------------------- +git clone https://github.com/cjcoats/ioapi-3.2.git +cd ioapi-3.2 + +export FC=gfortran +export CC=gcc +export NETCDF=/usr + +# Configure (Linux2_x86_64gfort is typical) +make config +# Choose: Linux2_x86_64gfort + +make -j$(nproc) + +echo "export IOAPI=/opt/ioapi-3.2" >> /environment + + +# ------------------------- +# Install CMAQ +# ------------------------- +cd /opt +git clone https://github.com/USEPA/CMAQ.git +cd CMAQ + +# Checkout stable release (optional) +# git checkout 5.3.3 + +echo "export CMAQ_HOME=/opt/CMAQ" >> /environment + +# CMAQ build scripts expect tcsh +echo "CMAQ installed. Build manually via bldit scripts." > /opt/README + +