Build/install a Netcdf that works for E3SM

In case you find yourself in a situation where you have to build and install your own Netcdf in order to run E3SM, the instruction below will help.

# STEP ONE: DOWNLOAD HDF5, PNETCDF, NETCDF, and NETCDF-FORTRAN
 
HDF5: 1.8.11
NETCDF: 4.3.2
PNETCDF: 1.5.0
NETCDF-FORTRAN: 4.4.1
 
# STEP TWO: SETUP ENV
 
module purge
module load intel/13.0
module load openmpi-intel/1.6
 
export INSTALLAREA=<PATH TO NETCDF>
export HDF5HOME=<PATH TO HDF5>
export PATH=$HDF5HOME/bin:$PATH
 
export CC=mpicc
export CXX=mpicxx
export F77=mpif77
export FC=mpif90
export CFLAGS="-I$INSTALLAREA/include -I$HDF5HOME/include -fPIC -O2"
export CXXFLAGS="-I$INSTALLAREA/include -I$HDF5HOME/include -fPIC -O2"
export FFLAGS="-I$INSTALLAREA/include -I$HDF5HOME/include -fPIC -O2"
export FCFLAGS="-I$INSTALLAREA/include -I$HDF5HOME/include -fPIC -O2"
export F90FLAGS="-I$INSTALLAREA/include -I$HDF5HOME/include -fPIC -O2"
export FPPFLAGS="-I$INSTALLAREA/include -I$HDF5HOME/include -fPIC -O2"
export CPPFLAGS="-I$INSTALLAREA/include -I$HDF5HOME/include -fPIC -O2"
export LDFLAGS="-L$INSTALLAREA/lib -L$HDF5HOME/lib"
 
# STEP THREE: BUILD HDF5
 
./configure --enable-parallel --prefix=$HDF5HOME --disable-shared
make
install
 
# STEP FOUR: BUILD PNETCDF
 
# NOTE: For GCC installations you may need to add --disable-in-place-swap
./configure --prefix=$INSTALLAREA
make
make install
 
# STEP FIVE: BUILD NETCDF
 
./configure --enable-pnetcdf --enable-netcdf4 --prefix=$INSTALLAREA
make
make install
 
# STEP SIX: BUILD NETCDF-FORTRAN
 
./configure --prefix=$INSTALLAREA
make
make install