Subversion Repositories OpenSees

Rev

Rev 4212 | Blame | Compare with Previous | Last modification | View Log | RSS feed

############################################################################
#
#  Program:  OpenSees
#
#  Purpose:  A Top-level Makefile to create the libraries needed
#            to use the OpenSees framework.
#
#   version created for SDSC datastar sequential
#
#  Written: fmk
#  Created: 01/2003
#
#
############################################################################

# %---------------------------------%
# |  SECTION 1: PROGRAM             |
# %---------------------------------%
#
# Specify the location and name of the OpenSees interpreter program
# that will be created (if this all works!)

#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
#GRAPHICS = UsingOpenGL
GRAPHICS = NONE


#DEBUG_MODE = DEBUG, NO_DEBUG
DEBUG_MODE = NO_DEBUG

#RELIABILITY = YES_RELIABILITY, NO_RELIABILITY
RELIABILITY = NO_RELIABILITY


# %---------------------------------%
# |  SECTION 3: PATHS               |
# %---------------------------------%
#
# Note: if vendor supplied BLAS and LAPACK libraries or if you have
# any of the libraries already leave the directory location blank AND
# remove the directory from DIRS.

BASE  = 
#  PUT YOUR HOME DIRECTOREY HERE
HOME  = /u/ac/fmckenna
FE    = $(HOME)/OpenSees/SRC


AMDdir      = $(HOME)/OpenSees/OTHER/AMD
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        = $(BLASdir) \
              $(CBLASdir) \
              $(AMDdir) \
              $(LAPACKdir) \
              $(SUPERLUdir) \
              $(SUPERLU_DISTdir) \
              $(ARPACKdir) \
              $(UMFPACKdir) \
              $(METISdir) \
              $(SRCdir) 

# %-------------------------------------------------------%
# | 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
AMD_LIBRARY          = $(HOME)/lib/libAMD.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      = $(HOME)/lib/libLapack.a
BLAS_LIBRARY        = $(HOME)/lib/libBlas.a
SUPERLU_LIBRARY     = $(HOME)/lib/libSuperLU.a
CBLAS_LIBRARY       = $(HOME)/lib/libCBlas.a
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

TCL_LIBRARY         = /usr/local/tcl8.4/lib64/libtcl8.4.so \
                /usr/local/tk8.4/lib64/libtk8.4.so

GRAPHIC_LIBRARY     = -L/usr/include/GL -lGL -lGLU 


#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) \
           $(AMD_LIBRARY) \
           $(ARPACK_LIBRARY) \
           $(DISTRIBUTED_SUPERLU_LIBRARY) \
           $(SUPERLU_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
# ################################################### 

#CC++            =  xlC_r
#CC              =  xlc_r
#FC              =  xlf_r

#F90             =  xlf90_r
#LINKER          =  xlC_r

CC++            =  mpicxx
CC              =  mpicc
FC              =  mpif77

F90             =  mpif90
FORTRAN             =  $(FC)

LINKER          =  $(CC++)

AR              = ar 
ARCH            = ar 

ARFLAGS         = -v -q
#ARCHFLAGS       = cqls
ARCHFLAGS       = -v -q

RANLIB          = ranlib

RANLIBFLAGS     = 


GRAPHIC_FLAG = -D_NOGRAPHICS -D_GLX
GRAPHIC_FLAG = -D_NOGRAPHICS
PROGRAMMING_FLAG = 

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 =

OPT_FLAG = -O3
#-qstrict  -q64 
PROF_FLAG = 
#-g -pg
COMP_FLAG = -D_TCL84 -DMPICH_IGNORE_CXX_SEEK 
#-qnoipa 
C++FLAGS         = -D_LINUX -D_UNIX  $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(OPT_FLAG) $(COMP_FLAG)\
                $(PROGRAMMING_FLAG) $(MUMPS_FLAG) -D_KAI  -cpp $(PROF_FLAG)

CFLAGS          = $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG)  $(MUMPS_FLAG) -D_KAI -D_PARALLEL_PROCESSING $(OPT_FLAG) $(COMP_FLAG) $(PROF_FLAG)
FFLAGS          = -qextname $(OPT_FLAG) $(COMP_FLAG) $(PROF_FLAG)
LINKFLAGS       = $(PROF_FLAG) 

#-bnoquiet -bbigtoc

# 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 


HAVEPETSC = NO
PETSCINC =
PETSC_LIB = 
PETSC_FLAG = 

ifeq ($(HAVEPETSC), YES)

PETSC_DIR = /usr/local/apps/petsc-2.2.1-64
PETSC_ARCH = rs6000_64
BOPT = O

PETSC = YES
PETSC_FLAG = -D_PETSC
PETSCINC = -I$(PETSC_DIR)/include -I$(PETSC_DIR)/bmake/$(PETSC_ARCH) -D_PETSC -DPETSC_USE_BOPT_g -DPETSC_USE_EXTERN_CXX


PETSC_LIB =  -L$(PETSC_DIR)/lib/libg/$(PETSC_ARCH) \
        -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc \
        $(FE)/system_of_eqn/linearSOE/petsc/PetscSOE.o \
        $(FE)/system_of_eqn/linearSOE/petsc/PetscSolver.o \
        $(FE)/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o 

endif

HAVEMUMPS = YES
MUMPS_INCLUDE =
MUMPS_LIB = 

ifeq ($(HAVEMUMPS), YES)

MUMPS_DIR = $(HOME)/MUMPS_4.7.3
MUMPS = YES
MUMPS_FLAG = -D_MUMPS
MUMPS_LIB = -L$(MUMPS_DIR)/lib \
        -ldmumps -lpord  -lpesslsmp -lblacssmp \
        $(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

MUMPS_INCLUDE = $(MUMPS_DIR)/include

endif

#PARALLEL_LIB =         $(FE)/system_of_eqn/linearSOE/diagonal/DistributedDiagonalSOE.o \
#       $(FE)/system_of_eqn/linearSOE/diagonal/DistributedDiagonalSolver.o \
#       $(FE)/system_of_eqn/linearSOE/diagonal/DistributedDiagonalSolver.o \
#       $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
#       $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o 
        

PARALLEL_LIB =  $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \
        $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
        $(FE)/system_of_eqn/linearSOE/diagonal/MPIDiagonalSOE.o \
        $(FE)/system_of_eqn/linearSOE/diagonal/MPIDiagonalSolver.o \
        $(FE)/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSolver.o \
        $(DISTRIBUTED_SUPERLU_LIBRARY) $(MUMPS_LIB) $(SCALAP_LIB) $(METIS_LIBRARY) \
        -L /usr/apps/math/scalapack/scalapack-1.8.0 \
        -lscalapack-mvapich2-intel \
        -L /usr/apps/math/blacs/BLACS/LIB \
        -lblacsF77init_MPI-mvapich2-intel-0 -lblacs_MPI-mvapich2-intel-0 \
        -lblacsCinit_MPI-mvapich2-intel-0       -lblacsF77init_MPI-mvapich2-intel-0 -lblacs_MPI-mvapich2-intel-0




ifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS)

PARALLEL_LIB =  $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \
        $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
        $(FE)/system_of_eqn/linearSOE/diagonal/MPIDiagonalSOE.o \
        $(FE)/system_of_eqn/linearSOE/diagonal/MPIDiagonalSolver.o \
        $(DISTRIBUTED_SUPERLU_LIBRARY) $(MUMPS_LIB) $(SCALAP_LIB) $(METIS_LIBRARY) \
        -L /usr/apps/math/scalapack/scalapack-1.8.0 \
        -lscalapack-mvapich2-intel \
        -L /usr/apps/math/blacs/BLACS/LIB \
        -lblacsF77init_MPI-mvapich2-intel-0 -lblacs_MPI-mvapich2-intel-0 \
        -lblacsCinit_MPI-mvapich2-intel-0       -lblacsF77init_MPI-mvapich2-intel-0 -lblacs_MPI-mvapich2-intel-0

endif

HPM_LIB = 

MACHINE_NUMERICAL_LIBS  = -lm \
  $(ARPACK_LIBRARY) \
  $(SUPERLU_LIBRARY) \
  $(AMD_LIBRARY) \
  $(UMFPACK_LIBRARY) \
  $(LAPACK_LIBRARY)  \
  $(BLAS_LIBRARY) \
  $(CBLAS_LIBRARY) \
  $(GRAPHIC_LIBRARY)\
  $(RELIABILITY_LIBRARY) \
  $(DISTRIBUTED_SUPERLU_LIBRARY) \
  $(METIS_LIBRARY) $(PARALLEL_LIB) $(PETSC_LIB) $(HPM_LIB)


MACHINE_SPECIFIC_LIBS = -L${MKL_HOME}/lib/em64t -lmkl -lguide -lpthread -lmkl_gfortran -lmkl_lapack \
        -L${INTEL_HOME}/lib -lifport -lifcore -lsvml -lipgo -lirc -lirc_s -ldl



#MACHINE_SPECIC_LIBS = -L /usr/apps/math/scalapack/scalapack-1.8.0 -lscalapack-mvapich2-intel -L /usr/apps/math/blacs/BLACS/LIB \
#-lblacsF77init _MPI-mvapich2-intel-0 -lblacs_MPI-mvapich2-intel-0 -L ${MKL_HOME}/lib/em64t -lmkl_lapack \
#-lmkl_em64t -lguide -lirc -limf -lm -lpthread

# %---------------------------------------------------------%
# | SECTION 8: INCLUDE FILES                                |
# |                                                         |
# | The following macros specify include files needed for   |
# | compilation.                                            |
# %---------------------------------------------------------%



MACHINE_INCLUDES        = -I/usr/local/BerkeleyDB.4.0/include \
        -I/usr/include/mysql \
        -I/usr/local/apps/hpm/include \
        -I$(HOME)/include   \
        -I$(UMFPACKdir) \
        -I$(SUPERLUdir) \
        -I$(MUMPS_INCLUDE) \
        -I$(SUPERLU_DISTdir) \
        -I/usr/lpp/ppe.poe/include \
        $(PETSCINC)
 


# 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)