| New file |
| 0,0 → 1,442 |
| ############################################################################ |
| # |
| # Program: OpenSees |
| # |
| # Purpose: A Top-level Makefile to create the libraries needed |
| # to use the OpenSees framework. |
| # |
| # version created for TACC ranger & their Portland Group Compilers |
| # |
| # Written: fmk |
| # Created: 02/2008 |
| # |
| # |
| ############################################################################ |
| |
| |
| # you nooed load module petsc in .bashrc |
| |
| |
| # PUT YOUR HOME DIRECTOREY HERE IF NOT THE DEFAULT ONE IN |
| # HOME = /gpfs/fmk |
| |
| BASE = |
| |
| FE = $(HOME)/OpenSees/SRC |
| |
| #PROGRAMMING_MODE = SEQUENTIAL |
| #PROGRAMMING_MODE = PARALLEL |
| PROGRAMMING_MODE = PARALLEL_INTERPRETERS |
| |
| OpenSees_PROGRAM = $(HOME)/bin/OpenSees |
| |
| ifeq ($(PROGRAMMING_MODE), PARALLEL) |
| OpenSees_PROGRAM = $(HOME)/bin/OpenSeesSP |
| endif |
| ifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS) |
| OpenSees_PROGRAM = $(HOME)/bin/OpenSeesMP |
| endif |
| |
| # %---------------------------------% |
| # | SECTION 2: MAKEFILE CONSTANTS | |
| # %---------------------------------% |
| # |
| # Specify the constants the are used as control structure variables in the Makefiles. |
| |
| OPERATING_SYSTEM = LINUX |
| |
| #DEBUG_MODE = DEBUG, NO_DEBUG |
| DEBUG_MODE = NO_DEBUG |
| |
| RELIABILITY = NO_RELIABILITY |
| |
| GRAPHICS = NONE |
| |
| |
| BLASdir = $(HOME)/OpenSees/OTHER/BLAS |
| CBLASdir = $(HOME)/OpenSees/OTHER/CBLAS |
| LAPACKdir = $(HOME)/OpenSees/OTHER/LAPACK |
| ARPACKdir = $(HOME)/OpenSees/OTHER/ARPACK |
| UMFPACKdir = $(HOME)/OpenSees/OTHER/UMFPACK |
| METISdir = $(HOME)/OpenSees/OTHER/METIS |
| SRCdir = $(HOME)/OpenSees/SRC |
| SUPERLUdir = $(HOME)/OpenSees/OTHER/SuperLU_3.0/SRC |
| SUPERLU_DISTdir = $(HOME)/OpenSees/OTHER/SuperLU_DIST_2.0/SRC |
| |
| DIRS = $(SUPERLUdir) \ |
| $(SUPERLU_DISTdir) \ |
| $(ARPACKdir) \ |
| $(UMFPACKdir) \ |
| $(METISdir) \ |
| $(SRCdir) |
| |
| ifeq ($(PROGRAMMING_MODE), SEQUENTIAL) |
| |
| DIRS = \ |
| $(SUPERLUdir) \ |
| $(ARPACKdir) \ |
| $(UMFPACKdir) \ |
| $(METISdir) \ |
| $(SRCdir) |
| endif |
| |
| # %-------------------------------------------------------% |
| # | SECTION 4: LIBRARIES | |
| # | | |
| # | The following section defines the libraries that will | |
| # | be created and/or linked with when the libraries are | |
| # | being created or linked with. | |
| # %-------------------------------------------------------% |
| # |
| # Note: if vendor supplied BLAS and LAPACK libraries leave the |
| # libraries blank. You have to get your own copy of the tcl/tk |
| # library!! |
| # |
| # Note: For libraries that will be created (any in DIRS above) |
| # make sure the directory exsists where you want the library to go! |
| |
| FE_LIBRARY = $(HOME)/lib/libOpenSees.a |
| NDARRAY_LIBRARY = $(HOME)/lib/libndarray.a # BJ_UCD jeremic@ucdavis.edu |
| MATMOD_LIBRARY = $(HOME)/lib/libmatmod.a # BJ_UCD jeremic@ucdavis.edu |
| BJMISC_LIBRARY = $(HOME)/lib/libBJmisc.a # BJ_UCD jeremic@ucdavis.edu |
| LAPACK_LIBRARY = |
| BLAS_LIBRARY = |
| SUPERLU_LIBRARY = $(HOME)/lib/libSuperLU.a |
| CBLAS_LIBRARY = |
| ARPACK_LIBRARY = $(HOME)/lib/libArpack.a |
| UMFPACK_LIBRARY = $(HOME)/lib/libUmfpack.a |
| METIS_LIBRARY = $(HOME)/lib/libMetis.a |
| |
| DISTRIBUTED_SUPERLU_LIBRARY = $(HOME)/lib/libDistributedSuperLU.a |
| |
| ifeq ($(PROGRAMMING_MODE), SEQUENTIAL) |
| DISTRIBUTED_SUPERLU_LIBRARY = |
| endif |
| |
| TCL_LIBRARY = -ltcl8.4 |
| |
| GRAPHIC_LIBRARY = |
| |
| #RELIABILITY_LIBRARY = $(HOME)/lib/libReliability.a |
| RELIABILITY_LIBRARY = |
| |
| # WATCH OUT .. These libraries are removed when 'make wipe' is invoked. |
| |
| WIPE_LIBS = $(FE_LIBRARY) \ |
| $(NDARRAY_LIBRARY) \ |
| $(MATMOD_LIBRARY) \ |
| $(SUPERLU_LIBRARY) \ |
| $(ARPACK_LIBRARY) \ |
| $(UMFPACK_LIBRARY) \ |
| $(METIS_LIBRARY) \ |
| $(LAPACK_LIBRARY) \ |
| $(BLAS_LIBRARY) \ |
| $(CBLAS_LIBRARY) \ |
| $(RELIABILITY_LIBRARY) |
| |
| # %---------------------------------------------------------% |
| # | SECTION 5: COMPILERS | |
| # | | |
| # | The following macros specify compilers, linker/loaders, | |
| # | the archiver, and their options. You need to make sure | |
| # | these are correct for your system. | |
| # %---------------------------------------------------------% |
| |
| # ################################################### |
| # # Compilers |
| # ################################################### |
| |
| TACC_MKL_INCLUDE=/opt/apps/intel/mkl/10.0.1.014/include |
| TACC_MKL_LIB=/opt/apps/intel/mkl/10.0.1.014/lib/em64t |
| |
| IFC_LIB=/opt/apps/intel/10.1/fc/lib |
| IFC_INC=/opt/apps/intel/10.1/fc/include |
| IFC_BIN=/opt/apps/intel/10.1/fc/bin |
| |
| ICC_INC=/opt/apps/intel/10.1/cc/include |
| ICC_LIB=/opt/apps/intel/10.1/cc/lib |
| ICC_BIN=/opt/apps/intel/10.1/cc/bin |
| |
| IIDB_BIN=/opt/apps/intel/10.1/idb/bin |
| IIDB_DIR=/opt/apps/intel/10.1/idb |
| |
| MPI_DIR = /share/apps/intel10_1/mvapich2/1.0 |
| MPI_BIN = /share/apps/intel10_1/mvapich2/1.0/bin |
| |
| ifeq ($(PROGRAMMING_MODE), SEQUENTIAL) |
| |
| CC++ = $(ICC_BIN)/icpc |
| CC = $(ICC_BIN)/icc |
| FC = $(IFC_BIN)/ifort |
| LINKER = $(CC++) |
| |
| else |
| |
| CC++ = $(MPI_BIN)/mpicxx |
| CC = $(MPI_BIN)/mpicc |
| FC = $(MPI_BIN)/mpif90 |
| F90 = $(MPI_BIN)/mpif90 |
| FORTRAN = $(FC) |
| |
| LINKER = $(CC++) |
| |
| endif |
| |
| AR = ar |
| ARCH = ar |
| |
| ARFLAGS = -q |
| #ARCHFLAGS = cqls |
| ARCHFLAGS = -v -q |
| |
| RANLIB = ranlib |
| |
| RANLIBFLAGS = |
| |
| |
| GRAPHIC_FLAG = -D_NOGRAPHICS |
| PROGRAMMING_FLAG = |
| |
| ifeq ($(PROGRAMMING_MODE), PARALLEL) |
| PROGRAMMING_FLAG = -D_PARALLEL_PROCESSING |
| endif |
| |
| ifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS) |
| PROGRAMMING_FLAG = -D_PARALLEL_INTERPRETERS |
| endif |
| |
| #RELIABILITY_FLAG = -D_RELIABILITY |
| RELIABILITY_FLAG = |
| |
| #DEBUG_FLAG = -D_G3DEBUG |
| DEBUG_FLAG = |
| |
| MUMPS_FLAG = |
| PETSC_FLAG = |
| |
| OPT_FLAG = -O2 -xW |
| |
| COMP_FLAG = |
| |
| C++FLAGS = -D_LINUX -D_UNIX $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(OPT_FLAG) $(COMP_FLAG)\ |
| $(PROGRAMMING_FLAG) $(PETSC_FLAG) $(MUMPS_FLAG) \ |
| -D_TCL84 -D_BLAS |
| |
| CFLAGS = $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG)$(PROGRAMMING_FLAG) $(OPT_FLAG) $(COMP_FLAG) -D_TCL84 -D_BLAS |
| FFLAGS = $(OPT_FLAG) $(COMP_FLAG) |
| LINKFLAGS = |
| |
| |
| # Misc |
| MAKE = /usr/bin/gmake |
| CD = cd |
| ECHO = echo |
| RM = rm |
| RMFLAGS = -f |
| SHELL = /bin/sh |
| |
| # %---------------------------------------------------------% |
| # | SECTION 6: COMPILATION | |
| # | | |
| # | The following macros specify the macros used in | |
| # | to compile the source code into object code. | |
| # %---------------------------------------------------------% |
| |
| .SUFFIXES: |
| .SUFFIXES: .C .c .f .f90 .cpp .o .cpp |
| |
| # |
| # %------------------% |
| # | Default command. | |
| # %------------------% |
| # |
| .DEFAULT: |
| @$(ECHO) "Unknown target $@, try: make help" |
| # |
| # %-----------------------------------------------% |
| # | Command to build .o files from source files. | |
| # %-----------------------------------------------% |
| # |
| |
| |
| .cpp.o: |
| @$(ECHO) Making $@ from $< $@ with $(CC++) $(C++FLAGS) $(INCLUDES) -c $< |
| @$(CC++) $(C++FLAGS) $(INCLUDES) -c $< |
| |
| |
| .C.o: |
| @$(ECHO) Making $@ from $< |
| $(CC++) $(C++FLAGS) $(INCLUDES) -c $< |
| |
| .c.o: |
| @$(ECHO) Making $@ from $< |
| $(CC) $(CFLAGS) -c $< |
| |
| .f.o: |
| @$(ECHO) Making $@ from $< |
| $(FC) $(FFLAGS) -c $< |
| |
| .f77.o: |
| @$(ECHO) Making $@ from $< |
| $(FC) $(FFLAGS) -c $< |
| |
| .f90.o: |
| @$(ECHO) Making $@ from $< |
| $(FC90) $(FFLAGS) -c $< |
| |
| # %---------------------------------------------------------% |
| # | SECTION 7: OTHER LIBRARIES | |
| # | | |
| # | The following macros specify other libraries that must | |
| # | be linked with when creating executables. These are | |
| # | platform specific and typically order does matter!! | |
| # %---------------------------------------------------------% |
| MACHINE_LINKLIBS = -L$(BASE)/lib \ |
| -L$(HOME)/lib |
| |
| |
| # PETSC |
| HAVEPETSC = NO |
| PETSCINC = |
| PETSC_LIB = |
| |
| ifeq ($(PROGRAMMMING_MODE), SEQUENTIAL) |
| HAVEPETSC = NO |
| endif |
| |
| |
| ifeq ($(HAVEPETSC), YES) |
| |
| PETSC = YES |
| PETSC_FLAG = -D_PETSC |
| PETSC_DIR = $(TACC_PETSC_DIR) |
| |
| BOPT = O |
| |
| PETSC_INC = -I$(PETSC_DIR)/include -I$(PETSC_DIR)/bmake/$(PETSC_ARCH) -D_PETSC |
| PETSC_LIB = -L$(PETSC_DIR)/lib/libO_c++/$(PETSC_ARCH) \ |
| $(FE)/system_of_eqn/linearSOE/petsc/PetscSOE.o \ |
| $(FE)/system_of_eqn/linearSOE/petsc/PetscSolver.o \ |
| $(FE)/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o \ |
| -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc \ |
| -L/usr/X11/lib -lX11 -lGL |
| |
| endif |
| |
| |
| HAVEMUMPS = YES |
| MUMPS_INCLUDE = |
| MUMPS_LIB = |
| |
| |
| ifeq ($(PROGRAMMMING_MODE), SEQUENTIAL) |
| HAVEMUMPS = NO |
| endif |
| |
| ifeq ($(HAVEMUMPS), YES) |
| |
| MUMPS = YES |
| MUMPS_FLAG = -D_MUMPS |
| #MUMPS_DIR = /gpfs/fmk/MUMPS_4.6.4 |
| MUMPS_DIR = $(HOME)/MUMPS_4.7.3 |
| |
| PLAT = MPICHGM-INTEL80 |
| |
| SCALAP = $(BLACSlib) $(SCALAPlib) $(BLACSlib) |
| |
| MUMPS_LIB = -L$(MUMPS_DIR)/lib \ |
| $(FE)/system_of_eqn/linearSOE/mumps/MumpsSOE.o \ |
| $(FE)/system_of_eqn/linearSOE/mumps/MumpsSolver.o \ |
| $(FE)/system_of_eqn/linearSOE/mumps/MumpsParallelSOE.o \ |
| $(FE)/system_of_eqn/linearSOE/mumps/MumpsParallelSolver.o \ |
| -ldmumps$(PLAT) \ |
| -lpord$(PLAT) \ |
| $(SCALAP) |
| |
| MUMPS_INCLUDE = -I$(MUMPS_DIR)/include |
| |
| endif |
| |
| PARALLEL_LIB = $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \ |
| $(FE)/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.o \ |
| $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \ |
| -Wl,-rpath,$(TACC_MKL_LIB) \ |
| -L$(TACC_MKL_LIB) \ |
| $(TACC_MKL_LIB)/libmkl_scalapack_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_blacs_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_intel_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_sequential.a \ |
| $(TACC_MKL_LIB)/libmkl_core.a \ |
| $(TACC_MKL_LIB)/libmkl_sequential.a \ |
| $(TACC_MKL_LIB)/libmkl_core.a |
| |
| ifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS) |
| PARALLEL_LIB = \ |
| $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \ |
| $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \ |
| -Wl,-rpath,$(TACC_MKL_LIB) \ |
| -L$(TACC_MKL_LIB) \ |
| $(TACC_MKL_LIB)/libmkl_scalapack_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_blacs_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_intel_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_sequential.a \ |
| $(TACC_MKL_LIB)/libmkl_core.a \ |
| $(TACC_MKL_LIB)/libmkl_sequential.a \ |
| $(TACC_MKL_LIB)/libmkl_core.a |
| |
| endif |
| |
| |
| ifeq ($(PROGRAMMING_MODE), SEQUENTIAL) |
| PARALLEL_LIB = -Wl,-rpath,$TACC_MKL_LIB \ |
| -L$(TACC_MKL_LIB) \ |
| $(TACC_MKL_LIB)/libmkl_lapack_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_intel_lp64.a \ |
| $(TACC_MKL_LIB)/libmkl_sequential.a \ |
| $(TACC_MKL_LIB)/libmkl_core.a \ |
| $(TACC_MKL_LIB)/libmkl_sequential.a \ |
| $(TACC_MKL_LIB)/libmkl_core.a |
| endif |
| |
| |
| |
| HPM_LIB = |
| |
| |
| MACHINE_NUMERICAL_LIBS = -lm \ |
| $(ARPACK_LIBRARY) \ |
| $(SUPERLU_LIBRARY) \ |
| $(UMFPACK_LIBRARY) \ |
| $(GRAPHIC_LIBRARY)\ |
| $(RELIABILITY_LIBRARY) \ |
| $(DISTRIBUTED_SUPERLU_LIBRARY) \ |
| $(METIS_LIBRARY) $(PETSC_LIB) $(MUMPS_LIB) $(PARALLEL_LIB) |
| |
| MACHINE_SPECIFIC_LIBS = -static-intel -L$(IFC_LIB) -lifcore |
| |
| #MACHINE_SPECIFIC_LIBS = -L${MKL_HOME}/lib/64 -lmkl_lapack -lmkl_ipf -lguide -lpthread \ |
| /usr/local/apps/intel/compiler8/lib/libifcoremt.a |
| |
| # %---------------------------------------------------------% |
| # | SECTION 8: INCLUDE FILES | |
| # | | |
| # | The following macros specify include files needed for | |
| # | compilation. | |
| # %---------------------------------------------------------% |
| |
| MACHINE_INCLUDES = -I$(MPICH_HOME)/include \ |
| -I/usr/local/BerkeleyDB.4.0/include \ |
| -I/usr/include/mysql \ |
| -I$(HOME)/include \ |
| -I$(UMFPACKdir) \ |
| -I$(SUPERLUdir) \ |
| -I$(SUPERLU_DISTdir) \ |
| $(PETSC_INC) $(MUMPS_INCLUDE) |
| |
| |
| # this file contains all the OpenSees/SRC includes |
| include $(FE)/Makefile.incl |
| |
| #TCL_INCLUDES = -I/home/fmk/tcl8.3.3/generic |
| |
| INCLUDES = $(MACHINE_INCLUDES) $(TCL_INCLUDES) $(FE_INCLUDES) |