Install ERSEM
说明
官方文档写的是需要FVCOM UK version,实际使用的是FVCOM原版
由于intel2019编译器编译netcdf3.6.3时出现错误,所以使用netcdf4版本,
但是FVCOM-UK编译时报错,不确定是否是netcdf4的原因,多次测试无果之后
选择用FVCOM原版尝试,成功
文档上原来写的FABM=$CODE_DIR/fabm/src
需要改成FABM=$CODE_DIR/fabm/
注意更改编译器、NETCDF的路径
Install_ersem.sh
#!/usr/bin/env bash
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
CODE_DIR=$SCRIPT_DIR/code
INSTALL_DIR=$SCRIPT_DIR/model
num_cpu=$(nproc)
website=("https://github.com/UK-FVCOM-Usergroup/uk-fvcom.git" "https://github.com/pmlmodelling/ersem.git" "ghttps://github.com/fabm-model/fabm.git")
name=("uk-fvcom" "ersem" "fabm")
branch=("FVCOM-FABM" "master" "master")
mkdir $CODE_DIR
cd $CODE_DIR || exit
echo "Obtaining source code"
for i in 0 1 2
do
git clone ${website[i]} ${name[i]}
cd ${name[i]} || exit
git checkout ${branch[i]}
cd $CODE_DIR || exit
done
cd $SCRIPT_DIR || exit
FABM=$CODE_DIR/fabm
ERSEM=$CODE_DIR/ersem
FABM_INSTALL=$INSTALL_DIR/FABM-ERSEM
FC=$(which mpiifort)
mkdir -p $FABM_INSTALL
cd $FABM || exit
mkdir build
cd build || exit
# Production config:
cmake $FABM -DFABM_HOST=fvcom -DFABM_ERSEM_BASE=$ERSEM -DCMAKE_Fortran_COMPILER=$FC -DCMAKE_INSTALL_PREFIX=$FABM_INSTALL
# cmake ../../ -DFABM_HOST=fvcom -DFABM_ERSEM_BASE=/home/ocean/zcy/hhhhhh/code/ersem -DCMAKE_Fortran_COMPILER=mpifort -DCMAKE_INSTALL_PREFIX=/home/ocean/zcy/hhhhhh/model/FABM-ERSEM
make install -j $num_cpu
cd $SCRIPT_DIR || exit
sed -i 's|BASE_SETUP_DIR|'"$SCRIPT_DIR"'|g' make_ideal_estuary.inc
ln -s $SCRIPT_DIR/make_ideal_estuary.inc $SCRIPT_DIR/code/uk-fvcom/FVCOM_source/make.inc
# Installing FVCOM additional packages (METIS, Proj, etc)
##============UK版本============##
#cd $SCRIPT_DIR/code/uk-fvcom/FVCOM_source/libs || exit
#mv makefile makefile_
#ln -s makefile.CETO makefile
#make -j $num_cpu
##============US版本============##
#cd $SCRIPT_DIR/code/uk-fvcom/FVCOM_source/libs || exit
# 同fvcom编译lib方法
# Building FVCOM
cd ..
make -j $num_cpu
make_ideal_estuary.inc
#/===========================================================================/
#
# PML ceto makeinc for the ideal estuary model
#
#/===========================================================================/
#==========================================================================
#
# WELCOME TO FVCOM
#
# TO BUILD FVCOM, PLEASE SET THE FOLLOWING IN THIS FILE:
# TOPDIR - the directory this make.inc file is in
# LIBDIR - the directroy where libraries are installed
# INCIDR - the directroy where include files are installed
#
# CHOOSE YOUR MODEL OPTIONAS - The Def Flags!
#
# CHOOSE A COMPILER FROM THE LIST OR CREATE YOUR OWN
#
# You can also use the makefile to build and install some of the libraries
# used by fvcom. Set the INSTALLDIR and choose the 'LOCAL INSTALL' option
# below. Select an non-mpi compiler from the list and run 'make libs_ext'
#
# Good Luck!
#
#========== TOPDIR ========================================================
# TOPDIR is the directory in which this make file and the fvcom source reside
TOPDIR = BASE_SETUP_DIR/code/uk-fvcom/FVCOM_source
# TOPDIR must be set!
#========== INSTALLDIR =====================================================
# INSTALLDIR is the directory where you wish to install external libraries
# The default is in the $(TOPDIR)/libs/install, but you can choose...
INSTALLDIR = $(TOPDIR)/libs/install
#===========================================================================
# PREPROCESSOR OPTIONS FOR CPP
DEF_FLAGS = -P -traditional
#===========================================================================
####################### MEDM ENVIRONMENT #####################################
# Use the environmental variables, LIBPATH and INCLUDEPATH, set by MODULE
# to find the packages used by this build.
colon=:
empty=
dashI= $(empty) -I
dashL= $(empty) -L
# ### UNCOMMENT HERE!
# LIBDIR = -L$(subst $(colon),$(dashL),$(LIBPATH))
# INCDIR = -I$(subst $(colon),$(dashI),$(INCLUDEPATH))
###########################################################################
# LOCAL INSTAL
LIBDIR = -L$(INSTALLDIR)/lib
INCDIR = -I$(INSTALLDIR)/include
#--------------------------------------------------------------------------
# STANDARD LIBRARIES FOR DATA AND TIME IN fVCOM:
#
DTLIBS = -ljulian
DTINCS =
#
#--------------------------------------------------------------------------
# NETCDF OUTPUT NETCDF IS NOW REQUIRED TO COMPILE FVCOM
# DUMP OUTPUT INTO NETCDF FILES (yes/no)
# REQUIRES SYSTEM DEPENDENT NETCDF LIBRARIES
# COMPILED WITH SAME F90 COMPILER
# SET PATH TO LIBRARIES WITH IOLIBS
# SET PATH TO INCLUDE FILES (netcdf.mod) WITH IOINCS
#--------------------------------------------------------------------------
# IOLIBS = -L/gpfs1/apps/netcdf/intelmpi/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lm
# IOINCS = -I/gpfs1/apps/netcdf/intelmpi/include -I/gpfs1/apps/hdf5/intelmpi/include
IOLIBS = -L/opt/netcdf4/lib -lnetcdff -lnetcdf
IOINCS = -I/opt/netcdf4/include
#--------------------------------------------------------------------------
#==========================================================================
# BEGIN USER DEFINITION SECTION
#==========================================================================
# SELECT MODEL OPTIONS
# SELECT FROM THE FOLLOWING OPTIONS BEFORE COMPILING CODE
# SELECT/UNSELECT BY COMMENTING/UNCOMMENTING LINE (#)
# CODE MUST BE CLEANED (with "make clean") AND
# RECOMPILED IF NEW SET OF OPTIONS IS DESIRED
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# PRECISION DEFAULT PRECISION: SINGLE
# UNCOMMENT TO SELECT DOUBLE PRECISION
#--------------------------------------------------------------------------
# FLAG_1 = -DDOUBLE_PRECISION
## SINGLE PRECISION OUTPUT FOR VISIT
FLAG_1 = -DDOUBLE_PRECISION -DSINGLE_OUTPUT -DNETCDF4_COMPRESSION
# FLAG_1 = -DSINGLE_OUTPUT -DNETCDF4_COMPRESSION
#--------------------------------------------------------------------------
# SPHERICAL SELECT SPHERICAL COORDINATES FOR INTEGRATION
# DEFAULT: CARTESIAN
# UNCOMMENT TO SELECT SPHERICAL COORDINATES
#--------------------------------------------------------------------------
# FLAG_2 = -DSPHERICAL
#--------------------------------------------------------------------------
# FLOODYING/DRYING INCLUDE WET/DRY TREATMENT OF DOMAIN
# CAN BE ACTIVATED/DEACTIVATED AT RUN TIME WITH
# INPUT FILE CONTROL. (SEE exa_run.dat) FILE
# DEFAULT: NO FLOODYING/DRYING INCLUDED
# UNCOMMENT TO INCLUDE FLOODYING/DRYING
#--------------------------------------------------------------------------
FLAG_3 = -DWET_DRY
#--------------------------------------------------------------------------
# MULTI_PROCESSOR INCLUDES PARALLELIZATION WITH MPI
# REQUIRES LINKING MPI LIBRARIES OR COMPILING
# WITH A PRELINKED SCRIPT (mpif90/mpf90/etc)
# DEFAULT: NO PARALLEL CAPABILITY
# UNCOMMENT TO INCLUDE MPI PARALLEL CAPABILITY
#--------------------------------------------------------------------------
FLAG_4 = -DMULTIPROCESSOR
PARLIB = -lmetis -L$(LIBDIR)
#--------------------------------------------------------------------------
# WATER_QUALITY INCLUDE EPA WATER QUALITY MOD
# CAN BE ACTIVATED/DEACTIVATED AT RUN TIME WITH
# VARIABLE WQM_ON IN INPUT FILE
# DEFAULT: NO WATER QUALITY MODEL
# UNCOMMENT TO INCLUDE WATER QUALITY MODEL
#--------------------------------------------------------------------------
# FLAG_5 = -DWATER_QUALITY
#--------------------------------------------------------------------------
# PROJECTION A Fortran90 wrapper for the Cartographic projection
# Software, proj4.
# Proj can be obtained from:
# http://www.remotesensing.org/proj/
# Thanks to: USGS
#
# The Proj fortran bindings can be obtained from:
# http://forge.nesc.ac.uk/projects/glimmer/
# Thanks to: Magnus Hagdorn (Magnus.Hagdorn@ed.ac.uk)
#
# !! NOTE THAT THE PROJ 4 LIBRARY MUST BE IN YOUR
# LD_LIBRARY_PATH FOR DYNAMIC LOADING!!
#
#--------------------------------------------------------------------------
FLAG_6 = -DPROJ
PROJLIBS = -L$(LIBDIR) -lfproj4 -lproj -lm
PROJINCS = -I$(INCDIR)
#--------------------------------------------------------------------------
# DATA_ASSIMILATION INCLUDE NUDGING BASED DATA ASSIMILATION FOR
# CURRENT/TEMP/SALINITY/SST
# CAN BE ACTIVATED/DEACTIVATED AT RUN TIME WITH
# INPUT FILE CONTROL. (SEE exa_run.dat) FILE
# DEFAULT: NO DATA ASSIMILATION INCLUDED
# UNCOMMENT TO INCLUDE DATA ASSIMILATION
#--------------------------------------------------------------------------
# FLAG_7 = -DDATA_ASSIM
# include ${PETSC_DIR}/bmake/common/variables
# OILIB = -lmkl_lapack -lmkl_em64t -lguide -lpthread
# OILIB = -L/gpfs1/apps/intel/mkl/lib/em64t/ -lmkl_lapack95_ilp64 -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential
# For Build on em64t computer (Guppy)
# LIBDIR = $(LIBDIR) -L/usr/local/lib64
# For Build on Cluster (Typhoeus and Hydra)
# LIBDIR = $(LIBDIR) -L/usr/local/lib/em64t
# For i386 computers at SMAST (salmon and minke)
# NO NEED TO ADD ANYTHING LIBS ARE IN THE DEFAULT PATH
#--------------------------------------------------------------------------
# IN UPWIND LEAST SQUARE SCHEME:
# LIMITED_NO: NO LIMITATION
# LIMITED_1 : FIRST ORDER LIMITATION
# LIMITED_2 : SECOND ORDER LIMITATION( )
# !!!!!! ONLY ONE OF THE FLAGS BELOW CAN BE AND MUST BE CHOSEN
#--------------------------------------------------------------------------
FLAG_8 = -DLIMITED_NO
#--------------------------------------------------------------------------
# Semi-Implicit time stepping method
#--------------------------------------------------------------------------
# FLAG_9 = -DSEMI_IMPLICIT
# include ${PETSC_DIR}/bmake/common/variables
#---------------------------------------------------------------------------
# SOLID BOUNDARY IF GCN, NO GHOST CELL
# IF GCY1, GHOST CELL IS SYMMETRIC RELATIVE TO BOUNDARY
# CELL EDGE
# IF GCY2, GHOST CELL IS SYMMETRIC RELATIVE TO MIDDLE
# POINT OF THE BOUNDARY CELL EDGE
#---------------------------------------------------------------------------
FLAG_10 = -DGCN
#--------------------------------------------------------------------------
# TURBULENCE MODEL USE GOTM TURBULENCE MODEL INSTEAD OF THE ORIGINAL
# FVCOM MELLOR-YAMADA 2.5 IMPLEMENTATION
# UNCOMMENT TO USE GOTM TURBULENCE MODEL
# NOTE: You Must Build GOTM 4.x, GOTM 3.x used a different
# do_turbulence interface and will not work.
#--------------------------------------------------------------------------
# FLAG_11 = -DGOTM
# GOTMLIB = -L../GOTM_source/ -lturbulence -lutil -lmeanflow
# GOTMINCS = -I../GOTM_source/
#--------------------------------------------------------------------------
# EQUILIBRIUM TIDE
#--------------------------------------------------------------------------
# FLAG_12 = -DEQUI_TIDE
#--------------------------------------------------------------------------
# ATMOSPHERIC TIDE
#--------------------------------------------------------------------------
# FLAG_13 = -DATMO_TIDE
#--------------------------------------------------------------------------
# RIVER DISTRIBUTION OPTION:
# THE STANDARD NAME LIST USES A CHARACTER STRING TO SET A FUNCION
# DISTROBUTION. YOU CAN OPTIONALLY SPECIFY TO USE THE OLD STYLE,
# FLOATING POINT DISTROBUTION HERE. USE THIS WHEN CONVERTING OLD-STYLE
# RIVER INPUT FILES!
#--------------------------------------------------------------------------
# FLAG_14 = -DRIVER_FLOAT
#--------------------------------------------------------------------------
# Using A fully multidimensional positive definite advection
# transport algorithm with small implicit diffusion.
# Based on Smolarkiewicz, P. K; Journal of Computational
# Physics, 54, 325-362, 1984
#--------------------------------------------------------------------------
FLAG_15 = -DMPDATA -DTVD
#--------------------------------------------------------------------------
# Run Two-D Barotropic Mode Only
#--------------------------------------------------------------------------
# FLAG_16 = -DTWO_D_MODEL
#--------------------------------------------------------------------------
# Output 2-D Momentum Balance Checking
#--------------------------------------------------------------------------
# FLAG_17 = -DBALANCE_2D
#--------------------------------------------------------------------------
# OPEN BOUNDARY FORCING TYPE
# DEFAULT: OPEN BOUNDARY NODE WATER ELEVATION FORCING
# UNCOMMENT TO SELECT BOTH OPEN BOUNDARY NODE WATER ELEVATION
# FORCING AND OPEN BOUNDARY VOLUME TRANSPORT FORCING
#---------------------------------------------------------------------------
# FLAG_18 = -DMEAN_FLOW
#--------------------------------------------------------------------------
# OUTPUT TIDAL INFORMATION AT NTIDENODE and NTIDECELL
# FOR MEANFLOW CALCULATION.
#---------------------------------------------------------------------------
# FLAG_19 = -DTIDE_OUTPUT
#--------------------------------------------------------------------------
# dye release
#---------------------------------------------------------------------------
# FLAG_20 = -DDYE_RELEASE
#--------------------------------------------------------------------------
# SUSPENDED SEDIMENT MODEL: UNCOMMENT TO INCLUDE MODEL
# ORIG : the sediment transport model developed by Geoffey Cowles in v3.1-v3.2
# CSTMS: Community Sediment Transport Modeling System with cohesive model
# DELFT: Sediment modeling system as Delft Flow (not included)
#
# note: only one model should be chosen for modeling.
#
# Utilities:
# OFFLINE_SEDIMENT : run sediment with offline hydrodynamic forcing
# FLUID_MUD : activate the 2-D fluid mud at bed-water interface
#--------------------------------------------------------------------------
FLAG_21 = -DSEDIMENT
FLAG_211 = -DORIG_SED
# FLAG_211 = -DCSTMS_SED
#
# FLAG_22 = -DOFFLINE_SEDIMENT
# FLAG_43 = -DFLUID_MUD
#
#--------------------------------------------------------------------------
# KALMAN FILTERS
#--------------------------------------------------------------------------
# FLAG_23 = -DRRKF
# FLAG_23 = -DENKF
# include ${PETSC_DIR}/bmake/common/variables
# KFLIB = -lmkl_lapack -lmkl_em64t -lguide -llapack -lblas
# For Build on em64t computer (Guppy)
# LIBDIR = $(LIBDIR) -L/usr/local/lib64
# For Build on Cluster (Typhoeus and Hydra)
# LIBDIR = $(LIBDIR) -L/usr/local/lib/em64t
# For i386 computers at SMAST (salmon and minke)
# NO NEED TO ADD ANYTHING LIBS ARE IN THE DEFAULT PATH
#--------------------------------------------------------------------------
# Run One-D Mode with Biological Model
#--------------------------------------------------------------------------
# FLAG_24 = -DONE_D_MODEL
#--------------------------------------------------------------------------
# GENERAL BIOLOGICAL MODEL: UNCOMMENT TO INCLUDE MODEL
#--------------------------------------------------------------------------
FLAG_25 = -DFABM #-DOFFLINE_FABM # -DFABM_DIAG_OUT
BIOLIB = -LBASE_SETUP_DIR/model/FABM-ERSEM/lib -lfabm
BIOINCS = -IBASE_SETUP_DIR/model/FABM-ERSEM/include -IBASE_SETUP_DIR/model/FABM-ERSEM/include/yaml
#--------------------------------------------------------------------------
# Dynamic/Thermodynamic Ice
#--------------------------------------------------------------------------
# NOTE: Must use -DSPHERICAL and -DHEAT_FLUX ----- this note only for old version v2.7
# ICE_EMBEDDING must with SEMI_IMPLICIT
# FLAG_26 = -DICE
# FLAG_261 = -DICE_EMBEDDING
#--------------------------------------------------------------------------
# CALCULATE THE NET HEAT FLUX IN MODEL (THREE CHOICES):
# 1. CALCULATE THE NET HEAT FLUX USING COARE26Z
# 2. CALCULATE THE NET HEAT FLUX USING COARE26Z for Great Lake
# 3. CALCULATE THE NET HEAT FLUX USING SOLAR HEATING MODULE
#--------------------------------------------------------------------------
# FLAG_27 = -DHEATING_CALCULATED
# FLAG_27 = -DHEATING_CALCULATED_GL
# FLAG_27 = -DHEATING_SOLAR
#--------------------------------------------------------------------------
# AIR_PRESSURE FROM SURFACE FORCING
#--------------------------------------------------------------------------
# FLAG_28 = -DAIR_PRESSURE
#--------------------------------------------------------------------------
# Visit online simulation mode
#--------------------------------------------------------------------------
# FLAG_29 = -DVISIT
# VISITLIB = -lm -ldl -lsimf -lsim -lpthread
# VISITLIBPATH = $(LIBDIR)
# VISITINCPATH = $(INCDIR)
# USE DEVELOPER INSTALL VISIT
# VISITLIBPATH =
# VISITLIB = -lm -ldl -lsimf -lsim -lpthread
# VISITINC =
#--------------------------------------------------------------------------
# NON-HYDROSTATIC MODEL:
#--------------------------------------------------------------------------
# FLAG_30 = -DNH
# include ${PETSC_DIR}/bmake/common/variables
#--------------------------------------------------------------------------
# PARTICLE TRACKING
#--------------------------------------------------------------------------
# FLAG_31 = -DLAG_PARTICLE
#--------------------------------------------------------------------------
# WAVE-CURRENT INTERACTION
#--------------------------------------------------------------------------
# FLAG_32 = -DWAVE_CURRENT_INTERACTION
# FLAG_33 = -DPLBC
# NOTE! THis option is for wave code
# FLAG_34 = -DEXPLICIT
# WAVE ONLY
# FLAG_35 = -DWAVE_ONLY
# Svendsen Roller contribution
# FLAG_36 = -DWAVE_ROLLER
# FLAG_37 = -DWAVE_OFFLINE
# include ${PETSC_DIR}/bmake/common/variables
#--------------------------------------------------------------------------
# THIN-DAM MODEL
#--------------------------------------------------------------------------
# FLAG_38 = -DTHIN_DAM
#--------------------------------------------------------------------------
# PWP MIXED LAYER MODEL:
#--------------------------------------------------------------------------
# FLAG_39 = -DPWP
#--------------------------------------------------------------------------
# VERTICAL ADVECTION LIMITER:
# FOR S-COORDINATES, DON'T USE THIS FLAG
#--------------------------------------------------------------------------
# FLAG_40 = -DLIMITER_VER_ADV
#--------------------------------------------------------------------------
# PETSC Version
# If your PETSc is 2.3.2 or older, uncomment this flag
#--------------------------------------------------------------------------
# FLAG_41 = -DOLD_PETSC
#--------------------------------------------------------------------------
# SPECIAL PARTITION
# This flag can make sure the identical repeat run for same amount of CPUs
#--------------------------------------------------------------------------
FLAG_42 = -DPARTITION_SPECIAL
#--------------------------------------------------------------------------
# DEVELOPMENT FLAGS
# FOR BETA WORK ONLY
#--------------------------------------------------------------------------
# FLAG_101 = -DDEVELOP1
# FLAG_102 = -DDEVELOP2
# FLAG_103 = -DDEVELOP3
# FLAG_104 = -DDEVELOP4
# FLAG_105 = -DDEVELOP5
#--------------------------------------------------------------------------
# SELECT COMPILER/PLATFORM SPECIFIC DEFINITIONS
# SELECT FROM THE FOLLOWING PLATFORMS OR USE "OTHER" TO DEFINE
# THE FOLLOWING VARIABLES:
# CPP: PATH TO C PREPROCESSOR
# FC: PATH TO FORTRAN COMPILER (OR MPI COMPILE SCRIPT)
# OPT: COMPILER OPTIONS
# MPILIB: PATH TO MPI LIBRARIES (IF NOT LINKED THROUGH COMPILE SCRIPT)
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# Intel/MPI Compiler Definitions (PML)
#--------------------------------------------------------------------------
# CPP = mpiicc -E
# COMPILER = -DINTEL
# FC = mpiifort
# DEBFLGS = #-check all
# OPT = -O3 -L/gpfs1/apps/intel/compilers_and_libraries/linux/mpi/intel64/lib -I/gpfs1/apps/intel/compilers_and_libraries/linux/mpi/intel64/include/ -xHost #-init=zero -init=arrays -ftrapuv
# CLIB =
# CC = mpiicc
# CFLAGS =
#--------------------------------------------------------------------------
# Intel/MPI Compiler Definitions (PML) Debugging
#--------------------------------------------------------------------------
# COMPILER = -DIFORT
# CPP = /lib/cpp
# CPPFLAGS = $(DEF_FLAGS) -P -traditional -DINTEL CPPMACH=-DNOGUI -I/opt/mpi/mpibull2-current/include
# FC = ifort
# DEBFLGS = #-check all
# OPT = -I/opt/mpi/mpibull2-current/include -g -traceback -warn -nofor_main -fp-model precise -traceback -fpe0 -keep
# OILIB = -L/opt/intel/cmkl/10.0.1.014/lib/em64t -Wl,-rpath=/opt/intel/cmkl/10.0.1.014/lib/em64t -i-static -L/opt/mpi/mpibull2-current/lib -lmpi -L/usr/lib64 -libverbs -L/opt/mpi/mpibull2-current/lib/pmi -lpmi
# CC = icc
# CFLAGS = -g -I/opt/mpi/mpibull2-current/include -traceback
#--------------------------------------------------------------------------
# COMPAQ/ALPHA Definitions
#--------------------------------------------------------------------------
# COMPILER = -DCOMPAQ
# CPP = /bin/cpp
# FC = f90
# DEBFLGS = # -check bounds -check overflow -g
# OPT = -fast -arch ev6 -fpe1
#--------------------------------------------------------------------------
# CRAY Definitions
#--------------------------------------------------------------------------
# COMPILER = -DCRAY
# CPP = /opt/ctl/bin/cpp
# FC = f90
# DEBFLGS =
# OPT =
#--------------------------------------------------------------------------
# Linux/Portland Group Definitions
#--------------------------------------------------------------------------
# CPP = /usr/bin/cpp
# COMPILER =
# FC = pgf90
# DEBFLGS = -Mbounds -g -Mprof=func
# OPT = #-fast -Mvect=assoc,cachesize:512000,sse
#--------------------------------------------------------------------------
# Intel Compiler Definitions
#--------------------------------------------------------------------------
# CPP = /usr/bin/cpp
# COMPILER = -DIFORT
# FC = ifort
# CC = icc
# CXX = icc
# CFLAGS = -O3
# DEBFLGS = #-check all
# Use 'OPT = -O0 -g' for fast compile toBASE_SETUP_DIRthe make
# Use 'OPT = -xP' for fast run on em64t (Hydra and Guppy)
# Use 'OPT = -xN' for fast run on ia32 (Salmon and Minke)
# OPT = -O0 -g
# OPT = -xP
# Do not set static for use with visit!
# VISOPT = -Wl,--export-dynamic
# LDFLAGS = $(VISITLIBPATH)
#--------------------------------------------------------------------------
# Intel/MPI Compiler Definitions (SMAST)
#--------------------------------------------------------------------------
# CPP = /usr/bin/cpp
COMPILER = -DIFORT
CC = mpicc
CXX = mpicxx
CFLAGS = -O3
FC = mpif90
# DEBFLGS = -check all -traceback
# Use 'OPT = -O0 -g' for fast compile toBASE_SETUP_DIRthe make
# Use 'OPT = -xP' for fast run on em64t (Hydra and Guppy)
# Use 'OPT = -xN' for fast run on ia32 (Salmon and Minke)
# OPT = -O0 -g
# OPT = -axN -xN
# OPT = -O3
# Do not set static for use with visit!
# VISOPT = -Wl,--export-dynamic
# LDFLAGS = $(VISITLIBPATH)
#--------------------------------------------------------------------------
# gfortran defs
#--------------------------------------------------------------------------
# CPP = /usr/bin/cpp
# COMPILER = -DGFORTRAN
# FC = gfortran -O3
# DEBFLGS =
# OPT =
# CLIB =
#--------------------------------------------------------------------------
# absoft / mac os x defs
#--------------------------------------------------------------------------
# CPP = /usr/bin/cpp
# COMPILER = -DABSOFT
# FC = f90 -O3 -lU77
# DEBFLGS =
# OPT =
# CLIB =
#--------------------------------------------------------------------------
# IBM/AIX Definitions
#--------------------------------------------------------------------------
# COMPILER = -DAIX
# CPP = /usr/local/bin/cpp
# FC = mpxlf90 -qsuffix=f=f90
# DEBFLGS = # -qcheck -C -g
# OPT = -O -qarch=pwr4 -qtune=pwr4 -bmaxdata:0x80000000 -qhot -qmaxmem=8096
#--------------------------------------------------------------------------
# APPLE OS X/XLF Definitions (G5)
#--------------------------------------------------------------------------
# COMPILER = -DAIX
# CPP = /usr/bin/cpp
# FC = /opt/ibmcmp/xlf/8.1/bin/xlf90 -qsuffix=f=f90
# DEBFLGS = # -qcheck -C -g
# OPT = -O5 -qarch=g5 -qtune=g5 -qhot -qmaxmem=8096 -qunroll=yes -Wl,-stack_size,10000000
#--------------------------------------------------------------------------
# ARCHER Intel/MPI Compiler
#--------------------------------------------------------------------------
# CPP = /usr/bin/cpp
# COMPILER = -DIFORT
# CC = cc
# CXX = CC
# CFLAGS = -O3
# FC = ftn
## DEBFLGS = -check all
# OPT = -O3
# COPTIONS = -c89
#--------------------------------------------------------------------------
#==========================================================================
# END USER DEFINITION SECTION
#==========================================================================
CPPFLAGS = $(DEF_FLAGS) $(COMPILER)
FFLAGS = $(DEBFLGS) $(OPT)
MDEPFLAGS = --cpp --fext=f90 --file=-
RANLIB = ranlib
AR = ar rc
#--------------------------------------------------------------------------
# CAT Preprocessing Flags
#--------------------------------------------------------------------------
CPPARGS = $(CPPFLAGS) $(DEF_FLAGS) $(FLAG_1) $(FLAG_2) \
$(FLAG_3) $(FLAG_4) $(FLAG_5) $(FLAG_6) \
$(FLAG_7) $(FLAG_8) $(FLAG_9) $(FLAG_10) \
$(FLAG_11) $(FLAG_12) $(FLAG_13) $(FLAG_14) \
$(FLAG_15) $(FLAG_16) $(FLAG_17) $(FLAG_18) \
$(FLAG_19) $(FLAG_20) $(FLAG_21) $(FLAG_22) \
$(FLAG_23) $(FLAG_24) $(FLAG_25) $(FLAG_26) \
$(FLAG_27) $(FLAG_28) $(FLAG_29) $(FLAG_30) \
$(FLAG_31) $(FLAG_32) $(FLAG_33) $(FLAG_34) \
$(FLAG_35) $(FLAG_36) $(FLAG_37) $(FLAG_38) \
$(FLAG_39) $(FLAG_40) $(FLAG_41) $(FLAG_42) \
$(FLAG_43) $(FLAG_LAM)\
$(FLAG_101) $(FLAG_102) $(FLAG_103) $(FLAG_104) $(FLAG_105)\
$(FLAG_211) $(FLAG_212) $(FLAG_213) $(FLAG_251) $(FLAG_261)
#--------------------------------------------------------------------------
# Libraries
#--------------------------------------------------------------------------
LIBS = $(LIBDIR) $(CLIB) $(PARLIB) $(IOLIBS) $(DTLIBS)\
$(MPILIB) $(GOTMLIB) $(KFLIB) $(BIOLIB) \
$(OILIB) $(VISITLIB) $(PROJLIBS) $(PETSC_LIB)
INCS = $(INCDIR) $(IOINCS) $(GOTMINCS) $(BIOINCS)\
$(VISITINCPATH) $(PROJINCS) $(DTINCS) \
$(PETSC_FC_INCLUDES)