#/===========================================================================/ # Copyright (c) 2007, The University of Massachusetts Dartmouth # Produced at the School of Marine Science & Technology # Marine Ecosystem Dynamics Modeling group # All rights reserved. # # FVCOM has been developed by the joint UMASSD-WHOI research team. For # details of authorship and attribution of credit please see the FVCOM # technical manual or contact the MEDM group. # # # This file is part of FVCOM. For details, see http://fvcom.smast.umassd.edu # The full copyright notice is contained in the file COPYRIGHT located in the # root directory of the FVCOM code. This original header must be maintained # in all distributed versions. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. # #/---------------------------------------------------------------------------/ # CVS VERSION INFORMATION # $Id$ # $Name$ # $Revision$ #/===========================================================================/ #========================================================================== # # 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 = /home/gugum/Documents/fvcom-4.1/FVCOM4.1/FVCOM_source #EXAMPLE # TOPDIR = /home/user/cchen/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 = -lnetcdf #-L/hosts/mao/usr/medm/install/netcdf/3.6.3/em64t/lib -lnetcdf # IOINCS = #-I/hosts/mao/usr/medm/install/netcdf/3.6.3/em64t/include # IOLIBS = -L/usr/local/install/netcdf/gcc_ifort/3.6.2/lib -lnetcdf # IOINCS = -I/usr/local/install/netcdf/gcc_ifort/3.6.2/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 #-------------------------------------------------------------------------- # 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/usr/local/lib -lmetis #-------------------------------------------------------------------------- # 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 = -lfproj4 -lproj -lm # PROJINCS = #-------------------------------------------------------------------------- # 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/usr/local/share/Intel-Compilers/mkl/lib/em64t -lmkl_lapack -lmkl_em64t -lguide -lpthread # 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 # FLAG_8 = -DLIMITED_1 # FLAG_8 = -DLIMITED_2 #-------------------------------------------------------------------------- # 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 # !!!!!! ONLY ONE OF THE FLAGS BELOW CAN BE AND MUST BE CHOSEN #--------------------------------------------------------------------------- FLAG_10 = -DGCN # FLAG_10 = -DGCY1 # FLAG_10 = -DGCY2 #-------------------------------------------------------------------------- # 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 #-------------------------------------------------------------------------- # 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 #-------------------------------------------------------------------------- # FLAG_21 = -DSEDIMENT # FLAG_22 = -DOFFLINE_SEDIMENT #-------------------------------------------------------------------------- # 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 = -DBioGen # BIOLIB = -L$(TOPDIR)/BIO_source -lbiomodule # BIOINCS = -I$(TOPDIR)/BIO_source/ #-------------------------------------------------------------------------- # Dynamic/Thermodynamic Ice #-------------------------------------------------------------------------- # NOTE: Must use -DSPHERICAL and -DHEAT_FLUX ----- only for old version v2.7 # FLAG_26 = -DICE #-------------------------------------------------------------------------- # CALCULATE THE NET HEAT FLUX IN MODEL #-------------------------------------------------------------------------- # FLAG_27 = -DHEATING_CALCULATED #-------------------------------------------------------------------------- # 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 #-------------------------------------------------------------------------- # 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 Compiler Definitions #-------------------------------------------------------------------------- CPP = /opt/intel/bin/icc COMPILER = -DIFORT FC = /opt/intel/bin/ifort CC = icc CXX = icc CFLAGS = -O3 DEBFLGS = #-check all # Use 'OPT = -O0 -g' for fast compile to test the 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) #-------------------------------------------------------------------------- #========================================================================== # 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_LAM)\ $(FLAG_101) $(FLAG_102) $(FLAG_103) $(FLAG_104) $(FLAG_105) #-------------------------------------------------------------------------- # 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)