Issues with building OpenSeesMP with petsc support.

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Issues with building OpenSeesMP with petsc support.

Post by bramesh »

I am trying to build OpenSeesMP with petsc support. I am running into this problem when doing so. Any help on this is appreciated.


PetscSOE.cpp:251: error: invalid conversion from 'int' to '_p_Mat**'
/apps/packages/petsc-2.3.3-p15/include/petscmat.h:106: error: too many arguments to function 'PetscErrorCode MatCreate(ompi_communicator_t*, _p_Mat**)'
PetscSOE.cpp:251: error: at this point in file
make[4]: *** [PetscSOE.o] Error 1
make[4]: Leaving directory `/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC'
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Makefile.def

Post by bramesh »

Makefile.def

############################################################################
#
# Program: OpenSees
#
# Purpose: A Top-level Makefile to create the libraries needed
# to use the OpenSees framework.
#
# version created for Redhat 8.0 LINUX distribution
#
# 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

HOME = $(HOME)/ARC/OpenSees
OpenSees_PROGRAM = $(HOME)/bin/OpenSees
OpenSees_PROGRAM_MPI = $(HOME)/bin/OpenSeesMPI

# %---------------------------------%
# | SECTION 2: MAKEFILE CONSTANTS |
# %---------------------------------%
#
# Specify the constants the are used as control structure variables in the Makefiles.

OPERATING_SYSTEM = LINUX
PROGRAMMING_MODE = PARALLEL_INTERPRETERS
RELIABILITY = NO_RELIABILITY
GRAPHICS = NONE
DEBUG_MODE = NO_DEBUG


#PROGRAMMING_MODE = PARALLEL, SEQUENTIAL
#GRAPHICS = NONE, UsingOpenGL
#RELIABILITY = YES_RELIABILITY, NO_RELIABILITY
#DEBUG_MODE = DEBUG, NO_DEBUG


# %---------------------------------%
# | 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 = /home/bramesh/ARC/Ozgur_Atlayan
FE = $(HOME)/OpenSees/SRC

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) \
$(SUPERLUdir) \
$(LAPACKdir) \
$(ARPACKdir) \
$(UMFPACKdir) \
$(METISdir) \
$(SUPERLU_DISTdir) \
$(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
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/lib/libtk8.4.so /usr/lib/libtcl8.4.so
#TCL_LIBRARY = /home/bramesh/ARC/tcl_tk/libtk8.5.so /home/bramesh/ARC/tcl_tk/libtcl8.5.so

ifeq ($(RELIABILITY), YES_RELIABILITY)
RELIABILITY_LIBRARY = $(HOME)/lib/libReliability.a
else
RELIABILITY_LIBRARY =
endif

# WATCH OUT .. These libraries are removed when 'make wipe' is invoked.

WIPE_LIBS = $(FE_LIBRARY) \
$(NDARRAY_LIBRARY) \
$(MATMOD_LIBRARY) \
$(DISTRIBUTED_SUPERLU_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
# ###################################################

CC++ = /local/bin/g++
CC = /local/bin/gcc
FC = /local/bin/gfortran
FORTRAN = /local/bin/gfortran
F90 =
LINKER = /apps/packages/openmpi-1.3.2-32/bin/mpicxx

AR = ar
ARFLAGS = cqls
ARCH = ar
ARCHFLAGS = cqls
RANLIB = ranlib
RANLIBFLAGS =

PROGRAMMING_FLAG =

ifeq ($(PROGRAMMING_MODE), PARALLEL)
OpenSees_PROGRAM = $(HOME)/bin/OpenSeesSP
PROGRAMMING_FLAG = -D_PARALLEL_PROCESSING
endif

ifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS)
OpenSees_PROGRAM = $(HOME)/bin/OpenSeesMP
PROGRAMMING_FLAG = -D_PARALLEL_INTERPRETERS
endif

ifeq ($(GRAPHICS), UsinOpenGl)
GRAPHIC_FLAG = -D_GLX
GRAPHIC_LIBRARY = -L/usr/X11/R6/lib -lGL -lGLU
else
GRAPHIC_FLAG = -D_NOGRAPHICS
GRAPHIC_LIBRARY =
endif

ifeq ($(RELIABILITY), YES_RELIABILITY)
RELIABILITY_FLAG = -D_RELIABILITY
else
RELIABILITY_FLAG =
endif

ifeq ($(DEBUG_MODE), DEBUG)
DEBUG_FLAG = -D_G3DEBUG
else
DEBUG_FLAG =
endif

ifeq ($(DEBUG_MODE), DEBUG)

C++FLAGS = -Wall -g -pg -D_LINUX -D_UNIX $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -D_TCL84
#C++FLAGS = -Wall -g -pg -D_LINUX -D_UNIX $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -D_TCL85
CFLAGS = -Wall -g -pg $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG)
FFLAGS = -Wall
LINKFLAGS = -rdynamic -g -pg

else

C++FLAGS = -Wall -O2 -D_LINUX -D_UNIX -D_TCL84 -Wall $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -ffloat-store
#C++FLAGS = -Wall -O2 -D_LINUX -D_UNIX -D_TCL85 -Wall $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -ffloat-store

CFLAGS = -Wall $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(PROGRAMMING_FLAG)
FFLAGS = -Wall
LINKFLAGS = -rdynamic

endif

# Misc
MAKE = make
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 $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@

.C.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@

.c.o:
@$(ECHO) Making $@ from $<
$(CC) $(CFLAGS) -c $<

.f.o:
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@

.f77.o:
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@

.f90.o:
@$(ECHO) Making $@ from $<
$(FC90) $(FFLAGS) -c $< -o $@

# %---------------------------------------------------------%
# | 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 \




MACHINE_NUMERICAL_LIBS = -lm \
$(ARPACK_LIBRARY) \
$(DISTRIBUTED_SUPERLU_LIBRARY) \
$(SUPERLU_LIBRARY) \
$(UMFPACK_LIBRARY) \
$(LAPACK_LIBRARY) \
$(BLAS_LIBRARY) \
$(CBLAS_LIBRARY) \
$(GRAPHIC_LIBRARY)\
$(METIS_LIBRARY)\
$(RELIABILITY_LIBRARY)\
$(PETSC_LIB)\
-lgfortran -ldl
# -lg2c -ldl

MPICC = mpicc
MPIINC = -I/apps/packages/openmpi-1.3.2-32/include
MPILIB = -L/apps/packages/openmpi-1.3.2-32/lib -lmpi

PARALLEL_LIB = $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \
$(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
$(DISTRIBUTED_SUPERLU_LIBRARY)

PETSC = YES

PETSCINC = -I/apps/packages/petsc-2.3.3-p15/include -I/apps/packages/petsc-2.3.3-p15/bmake/linux-gnu-c-debug -D_PETSC -DPETSC_USE_BOPT_g -DPETSC_USE_EXTERN_CXX

PETSC_LIB = $(FE)/system_of_eqn/linearSOE/petsc/PetscSOE.o \
$(FE)/system_of_eqn/linearSOE/petsc/PetscSolver.o \
$(FE)/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o \
$(HOME)/OpenSees/OTHER/LAPACK/dgebak.o \
$(HOME)/OpenSees/OTHER/LAPACK/dgebal.o \
$(HOME)/OpenSees/OTHER/LAPACK/dgeev.o \
$(HOME)/OpenSees/OTHER/LAPACK/dgehd2.o \
$(HOME)/OpenSees/OTHER/LAPACK/dgehrd.o \
$(HOME)/OpenSees/OTHER/LAPACK/dhseqr.o \
$(HOME)/OpenSees/OTHER/LAPACK/dlahrd.o \
$(HOME)/OpenSees/OTHER/LAPACK/dorg2r.o \
$(HOME)/OpenSees/OTHER/LAPACK/dorghr.o \
$(HOME)/OpenSees/OTHER/LAPACK/dorgqr.o \
$(HOME)/OpenSees/OTHER/LAPACK/dpotrf.o \
$(HOME)/OpenSees/OTHER/LAPACK/dpotrs.o \
/apps/packages/petsc-2.3.3-p15/lib/linux-gnu-c-debug/libpetscsnes.a \
/apps/packages/petsc-2.3.3-p15/lib/linux-gnu-c-debug/libpetscksp.a \
/apps/packages/petsc-2.3.3-p15/lib/linux-gnu-c-debug/libpetscdm.a \
/apps/packages/petsc-2.3.3-p15/lib/linux-gnu-c-debug/libpetscmat.a \
/apps/packages/petsc-2.3.3-p15/lib/linux-gnu-c-debug/libpetscvec.a \
/apps/packages/petsc-2.3.3-p15/lib/linux-gnu-c-debug/libpetsc.a
## -L/apps/packages/petsc-2.3.3-p15/lib/linux-gnu-c-debug
## -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc

ifeq ($(PROGRAMMING_MODE), THREADS)
MACHINE_SPECIFIC_LIBS = -lpthread
else
#MACHINE_SPECIFIC_LIBS = -ldl -lieee -lm -lc -lg2c -Wl,-rpath,/usr/lib -lpng $(MPILIB)
MACHINE_SPECIFIC_LIBS = -ldl -lieee -lm -lc -lgfortran -Wl,-rpath,/local/lib -lpng $(MPILIB)
endif


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


MACHINE_INCLUDES = $(MPIINC) \
-I/usr/local/BerkeleyDB.4.0/include \
-I/usr/include/mysql \
-I$(HOME)/include \
-I$(UMFPACKdir) \
-I$(SUPERLUdir) \
-I$(SUPERLU_DISTdir) $(PETSCINC)


# this file contains all the OpenSees/SRC includes
include $(FE)/Makefile.incl

#TCL_INCLUDES = -I/home/fmk/tcl8.3.3/generic
#TCL_INCLUDES = -I/home/bramesh/ARC/packages/tcl8.5.7/generic

INCLUDES = $(MACHINE_INCLUDES) $(TCL_INCLUDES) $(FE_INCLUDES)
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

what version of Petsc are you linking too .. the error message is saying that the function takes additional arguments .. obviously petsc likes to change thir interface on releases .. question is which release are you linking too and which is the one opensees is built with.
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Post by bramesh »

Sorry for the late reply.

The version of petsc I am running is petsc-2.3.3-p15.

Would this require a separate patch?
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Post by bramesh »

I am trying to use petsc-2.2.1 and I am getting the following error when linking.

/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/tcl/commands.o: In function `opsRecv(void*, Tcl_Interp*, int, char const**)':
commands.cpp:(.text+0x1426): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x143e): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1442): undefined reference to `recv_ct'
commands.cpp:(.text+0x144e): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x1452): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x145a): undefined reference to `recv_ct'
commands.cpp:(.text+0x1462): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x1466): undefined reference to `recv_len'
commands.cpp:(.text+0x146a): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x149e): undefined reference to `recv_ct'
commands.cpp:(.text+0x14a6): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x14aa): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x14b2): undefined reference to `recv_len'
commands.cpp:(.text+0x14fa): undefined reference to `recv_len'
commands.cpp:(.text+0x152a): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x154e): undefined reference to `recv_ct'
commands.cpp:(.text+0x155a): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x1582): undefined reference to `recv_ct'
commands.cpp:(.text+0x158a): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x158e): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1596): undefined reference to `recv_len'
commands.cpp:(.text+0x15de): undefined reference to `recv_len'
commands.cpp:(.text+0x177a): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1792): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x179a): undefined reference to `recv_ct'
commands.cpp:(.text+0x17a6): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x17ae): undefined reference to `recv_ct'
commands.cpp:(.text+0x17b6): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x17ba): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x17be): undefined reference to `recv_len'
commands.cpp:(.text+0x17c6): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x17f2): undefined reference to `recv_ct'
commands.cpp:(.text+0x17fa): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x17fe): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1806): undefined reference to `recv_len'
commands.cpp:(.text+0x184e): undefined reference to `recv_len'
commands.cpp:(.text+0x18be): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x18da): undefined reference to `recv_ct'
commands.cpp:(.text+0x18e6): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x190e): undefined reference to `recv_ct'
commands.cpp:(.text+0x1916): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x191a): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1922): undefined reference to `recv_len'
commands.cpp:(.text+0x196a): undefined reference to `recv_len'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/tcl/commands.o: In function `opsSend(void*, Tcl_Interp*, int, char const**)':
commands.cpp:(.text+0x1bbe): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1bc2): undefined reference to `send_ct'
commands.cpp:(.text+0x1be6): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1bea): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x1bf2): undefined reference to `send_ct'
commands.cpp:(.text+0x1bfa): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x1bfe): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x1c0a): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x1c12): undefined reference to `send_len'
commands.cpp:(.text+0x1c36): undefined reference to `send_ct'
commands.cpp:(.text+0x1c42): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1c4e): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x1c6a): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1c7a): undefined reference to `send_len'
commands.cpp:(.text+0x1cb2): undefined reference to `send_len'
commands.cpp:(.text+0x1cba): undefined reference to `send_ct'
commands.cpp:(.text+0x1cc2): undefined reference to `PETSC_DUMMY'
commands.cpp:(.text+0x1cee): undefined reference to `send_ct'
commands.cpp:(.text+0x1cfa): undefined reference to `PETSC_DUMMY_SIZE'
commands.cpp:(.text+0x1d02): undefined reference to `PETSC_DUMMY_COUNT'
commands.cpp:(.text+0x1d0e): undefined reference to `send_len'
commands.cpp:(.text+0x1d4a): undefined reference to `send_len'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSOE.o: In function `PetscSOE::zeroA()':
PetscSOE.cpp:(.text+0x700): undefined reference to `MatZeroEntries'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSOE.o: In function `PetscSOE::~PetscSOE()':
PetscSOE.cpp:(.text+0x854): undefined reference to `MatDestroy'
PetscSOE.cpp:(.text+0x864): undefined reference to `VecDestroy'
PetscSOE.cpp:(.text+0x874): undefined reference to `VecDestroy'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSOE.o: In function `PetscSOE::~PetscSOE()':
PetscSOE.cpp:(.text+0x9c4): undefined reference to `MatDestroy'
PetscSOE.cpp:(.text+0x9d4): undefined reference to `VecDestroy'
PetscSOE.cpp:(.text+0x9e4): undefined reference to `VecDestroy'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSOE.o: In function `PetscSOE::~PetscSOE()':
PetscSOE.cpp:(.text+0xb24): undefined reference to `MatDestroy'
PetscSOE.cpp:(.text+0xb34): undefined reference to `VecDestroy'
PetscSOE.cpp:(.text+0xb44): undefined reference to `VecDestroy'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSOE.o: In function `PetscSOE::addA(Matrix const&, ID const&, double)':
PetscSOE.cpp:(.text+0x1358): undefined reference to `MatSetValues'
PetscSOE.cpp:(.text+0x1470): undefined reference to `PetscError'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSOE.o: In function `PetscSOE::setSize(Graph&)':
PetscSOE.cpp:(.text+0x14fa): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1528): undefined reference to `PetscInitialize'
PetscSOE.cpp:(.text+0x152e): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x153a): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x16e4): undefined reference to `MatDestroy'
PetscSOE.cpp:(.text+0x16f4): undefined reference to `VecDestroy'
PetscSOE.cpp:(.text+0x1704): undefined reference to `VecDestroy'
PetscSOE.cpp:(.text+0x1828): undefined reference to `PetscOptionsGetInt'
PetscSOE.cpp:(.text+0x1864): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1952): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1962): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1968): undefined reference to `MatCreate'
PetscSOE.cpp:(.text+0x1978): undefined reference to `MatSetFromOptions'
PetscSOE.cpp:(.text+0x19b4): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1bc0): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1c0a): undefined reference to `PETSC_COMM_SELF'
PetscSOE.cpp:(.text+0x1c1a): undefined reference to `PETSC_COMM_SELF'
PetscSOE.cpp:(.text+0x1c28): undefined reference to `MatCreateSeqBAIJ'
PetscSOE.cpp:(.text+0x1c36): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1c44): undefined reference to `VecCreateSeqWithArray'
PetscSOE.cpp:(.text+0x1c80): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1c98): undefined reference to `MatGetOwnershipRange'
PetscSOE.cpp:(.text+0x1cb6): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1cc8): undefined reference to `VecCreateMPIWithArray'
PetscSOE.cpp:(.text+0x1d04): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1d12): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1d22): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1d24): undefined reference to `VecCreateSeqWithArray'
PetscSOE.cpp:(.text+0x1d98): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1dd4): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1de2): undefined reference to `PETSC_COMM_SELF'
PetscSOE.cpp:(.text+0x1df2): undefined reference to `PETSC_COMM_SELF'
PetscSOE.cpp:(.text+0x1df8): undefined reference to `MatCreateSeqAIJ'
PetscSOE.cpp:(.text+0x1e34): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1e70): undefined reference to `PetscError'
PetscSOE.cpp:(.text+0x1e8e): undefined reference to `PETSC_COMM_WORLD'
PetscSOE.cpp:(.text+0x1ea0): undefined reference to `VecCreateMPIWithArray'
PetscSOE.cpp:(.text+0x1edc): undefined reference to `PetscError'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSolver.o: In function `PetscSolver::setSize()':
PetscSolver.cpp:(.text+0x1ba): undefined reference to `PETSC_COMM_WORLD'
PetscSolver.cpp:(.text+0x1ce): undefined reference to `PETSC_COMM_WORLD'
PetscSolver.cpp:(.text+0x1d0): undefined reference to `KSPCreate'
PetscSolver.cpp:(.text+0x1e8): undefined reference to `KSPSetOperators'
PetscSolver.cpp:(.text+0x1f4): undefined reference to `KSPSetType'
PetscSolver.cpp:(.text+0x230): undefined reference to `PetscError'
PetscSolver.cpp:(.text+0x27c): undefined reference to `KSPSetTolerances'
PetscSolver.cpp:(.text+0x288): undefined reference to `KSPGetPC'
PetscSolver.cpp:(.text+0x294): undefined reference to `PCSetType'
PetscSolver.cpp:(.text+0x2d0): undefined reference to `PetscError'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSolver.o: In function `PetscSolver::~PetscSolver()':
PetscSolver.cpp:(.text+0x318): undefined reference to `KSPDestroy'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSolver.o: In function `PetscSolver::~PetscSolver()':
PetscSolver.cpp:(.text+0x398): undefined reference to `KSPDestroy'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSolver.o: In function `PetscSolver::~PetscSolver()':
PetscSolver.cpp:(.text+0x408): undefined reference to `KSPDestroy'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSolver.o: In function `PetscSolver::solve()':
PetscSolver.cpp:(.text+0xea8): undefined reference to `MatAssemblyBegin'
PetscSolver.cpp:(.text+0xee4): undefined reference to `PetscError'
PetscSolver.cpp:(.text+0xf3c): undefined reference to `MatAssemblyEnd'
PetscSolver.cpp:(.text+0xf78): undefined reference to `PetscError'
PetscSolver.cpp:(.text+0x10c4): undefined reference to `KSPSolve'
PetscSolver.cpp:(.text+0x11d8): undefined reference to `PetscError'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::setSize()':
PetscSparseSeqSolver.cpp:(.text+0x140): undefined reference to `PetscOptionsGetInt'
PetscSparseSeqSolver.cpp:(.text+0x17c): undefined reference to `PetscError'
PetscSparseSeqSolver.cpp:(.text+0x1b2): undefined reference to `PETSC_COMM_WORLD'
PetscSparseSeqSolver.cpp:(.text+0x1c2): undefined reference to `PETSC_COMM_WORLD'
PetscSparseSeqSolver.cpp:(.text+0x1c4): undefined reference to `VecCreateSeqWithArray'
PetscSparseSeqSolver.cpp:(.text+0x200): undefined reference to `PetscError'
PetscSparseSeqSolver.cpp:(.text+0x232): undefined reference to `PETSC_COMM_WORLD'
PetscSparseSeqSolver.cpp:(.text+0x240): undefined reference to `VecCreateSeqWithArray'
PetscSparseSeqSolver.cpp:(.text+0x252): undefined reference to `PETSC_COMM_WORLD'
PetscSparseSeqSolver.cpp:(.text+0x268): undefined reference to `MatCreateSeqAIJWithArrays'
PetscSparseSeqSolver.cpp:(.text+0x26e): undefined reference to `PETSC_COMM_WORLD'
PetscSparseSeqSolver.cpp:(.text+0x274): undefined reference to `KSPCreate'
PetscSparseSeqSolver.cpp:(.text+0x288): undefined reference to `KSPSetOperators'
PetscSparseSeqSolver.cpp:(.text+0x294): undefined reference to `KSPSetType'
PetscSparseSeqSolver.cpp:(.text+0x2d0): undefined reference to `PetscError'
PetscSparseSeqSolver.cpp:(.text+0x310): undefined reference to `PetscError'
PetscSparseSeqSolver.cpp:(.text+0x36c): undefined reference to `KSPSetTolerances'
PetscSparseSeqSolver.cpp:(.text+0x378): undefined reference to `KSPGetPC'
PetscSparseSeqSolver.cpp:(.text+0x384): undefined reference to `PCSetType'
PetscSparseSeqSolver.cpp:(.text+0x398): undefined reference to `KSPSetInitialGuessNonzero'
PetscSparseSeqSolver.cpp:(.text+0x3d4): undefined reference to `PetscError'
PetscSparseSeqSolver.cpp:(.text+0x40c): undefined reference to `PetscError'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::getNumIterations()':
PetscSparseSeqSolver.cpp:(.text+0x43c): undefined reference to `KSPGetIterationNumber'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::solve()':
PetscSparseSeqSolver.cpp:(.text+0x488): undefined reference to `KSPSolve'
PetscSparseSeqSolver.cpp:(.text+0x4c4): undefined reference to `PetscError'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::~PetscSparseSeqSolver()':
PetscSparseSeqSolver.cpp:(.text+0x508): undefined reference to `MatDestroy'
PetscSparseSeqSolver.cpp:(.text+0x510): undefined reference to `VecDestroy'
PetscSparseSeqSolver.cpp:(.text+0x518): undefined reference to `VecDestroy'
PetscSparseSeqSolver.cpp:(.text+0x520): undefined reference to `KSPDestroy'
PetscSparseSeqSolver.cpp:(.text+0x528): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
PetscSparseSeqSolver.cpp:(.text+0x554): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::~PetscSparseSeqSolver()':
PetscSparseSeqSolver.cpp:(.text+0x588): undefined reference to `MatDestroy'
PetscSparseSeqSolver.cpp:(.text+0x590): undefined reference to `VecDestroy'
PetscSparseSeqSolver.cpp:(.text+0x598): undefined reference to `VecDestroy'
PetscSparseSeqSolver.cpp:(.text+0x5a0): undefined reference to `KSPDestroy'
PetscSparseSeqSolver.cpp:(.text+0x5a8): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
PetscSparseSeqSolver.cpp:(.text+0x5cc): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::~PetscSparseSeqSolver()':
PetscSparseSeqSolver.cpp:(.text+0x608): undefined reference to `MatDestroy'
PetscSparseSeqSolver.cpp:(.text+0x610): undefined reference to `VecDestroy'
PetscSparseSeqSolver.cpp:(.text+0x618): undefined reference to `VecDestroy'
PetscSparseSeqSolver.cpp:(.text+0x620): undefined reference to `KSPDestroy'
PetscSparseSeqSolver.cpp:(.text+0x628): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
PetscSparseSeqSolver.cpp:(.text+0x64c): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*, double, double, double, int)':
PetscSparseSeqSolver.cpp:(.text+0x69c): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x6e8): undefined reference to `PetscInitialize'
PetscSparseSeqSolver.cpp:(.text+0x71c): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*, double, double, double, int)':
PetscSparseSeqSolver.cpp:(.text+0x76c): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x7b8): undefined reference to `PetscInitialize'
PetscSparseSeqSolver.cpp:(.text+0x7ec): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*)':
PetscSparseSeqSolver.cpp:(.text+0x828): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x864): undefined reference to `PetscInitialize'
PetscSparseSeqSolver.cpp:(.text+0x898): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*)':
PetscSparseSeqSolver.cpp:(.text+0x8d8): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x914): undefined reference to `PetscInitialize'
PetscSparseSeqSolver.cpp:(.text+0x948): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o:(.rodata._ZTI20PetscSparseSeqSolver[typeinfo for PetscSparseSeqSolver]+0x8): undefined reference to `typeinfo for SparseGenRowLinSolver'
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Post by bramesh »

The Makefile.def I am using is as follows:

############################################################################
#
# Program: OpenSees
#
# Purpose: A Top-level Makefile to create the libraries needed
# to use the OpenSees framework.
#
# version created for Redhat 8.0 LINUX distribution
#
# 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

HOME = $(HOME)/ARC/OpenSees
OpenSees_PROGRAM = $(HOME)/bin/OpenSees
OpenSees_PROGRAM_MPI = $(HOME)/bin/OpenSeesMPI

# %---------------------------------%
# | SECTION 2: MAKEFILE CONSTANTS |
# %---------------------------------%
#
# Specify the constants the are used as control structure variables in the Makefiles.

OPERATING_SYSTEM = LINUX
PROGRAMMING_MODE = PARALLEL_INTERPRETERS
RELIABILITY = NO_RELIABILITY
GRAPHICS = NONE
DEBUG_MODE = NO_DEBUG


#PROGRAMMING_MODE = PARALLEL, SEQUENTIAL
#GRAPHICS = NONE, UsingOpenGL
#RELIABILITY = YES_RELIABILITY, NO_RELIABILITY
#DEBUG_MODE = DEBUG, NO_DEBUG


# %---------------------------------%
# | 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 = /home/bramesh/ARC/Ozgur_Atlayan
FE = $(HOME)/OpenSees/SRC

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) \
$(SUPERLUdir) \
$(LAPACKdir) \
$(ARPACKdir) \
$(UMFPACKdir) \
$(METISdir) \
$(SUPERLU_DISTdir) \
$(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
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/lib/libtk8.4.so /usr/lib/libtcl8.4.so
#TCL_LIBRARY = /home/bramesh/ARC/tcl_tk/libtk8.5.so /home/bramesh/ARC/tcl_tk/libtcl8.5.so

ifeq ($(RELIABILITY), YES_RELIABILITY)
RELIABILITY_LIBRARY = $(HOME)/lib/libReliability.a
else
RELIABILITY_LIBRARY =
endif

# WATCH OUT .. These libraries are removed when 'make wipe' is invoked.
WIPE_LIBS = $(FE_LIBRARY) \
$(NDARRAY_LIBRARY) \
$(MATMOD_LIBRARY) \
$(DISTRIBUTED_SUPERLU_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
# ###################################################

CC++ = /local/bin/g++
CC = /local/bin/gcc
FC = /local/bin/gfortran
FORTRAN = /local/bin/gfortran
F90 =
LINKER = /apps/packages/openmpi-1.3.2-32/bin/mpicxx

AR = ar
ARFLAGS = cqls
ARCH = ar
ARCHFLAGS = cqls
RANLIB = ranlib
RANLIBFLAGS =

PROGRAMMING_FLAG =

ifeq ($(PROGRAMMING_MODE), PARALLEL)
OpenSees_PROGRAM = $(HOME)/bin/OpenSeesSP
PROGRAMMING_FLAG = -D_PARALLEL_PROCESSING
endif

ifeq ($(PROGRAMMING_MODE), PARALLEL_INTERPRETERS)
OpenSees_PROGRAM = $(HOME)/bin/OpenSeesMP
PROGRAMMING_FLAG = -D_PARALLEL_INTERPRETERS
endif

ifeq ($(GRAPHICS), UsinOpenGl)
GRAPHIC_FLAG = -D_GLX
GRAPHIC_LIBRARY = -L/usr/X11/R6/lib -lGL -lGLU
else
GRAPHIC_FLAG = -D_NOGRAPHICS
GRAPHIC_LIBRARY =
endif

ifeq ($(RELIABILITY), YES_RELIABILITY)
RELIABILITY_FLAG = -D_RELIABILITY
else
RELIABILITY_FLAG =
endif

ifeq ($(DEBUG_MODE), DEBUG)
DEBUG_FLAG = -D_G3DEBUG
else
DEBUG_FLAG =
endif

ifeq ($(DEBUG_MODE), DEBUG)

C++FLAGS = -Wall -g -pg -D_LINUX -D_UNIX $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -D_TCL84
#C++FLAGS = -Wall -g -pg -D_LINUX -D_UNIX $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -D_TCL85
CFLAGS = -Wall -g -pg $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG)
FFLAGS = -Wall
LINKFLAGS = -rdynamic -g -pg

else

C++FLAGS = -Wall -O2 -D_LINUX -D_UNIX -D_TCL84 -Wall $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -ffloat-store
#C++FLAGS = -Wall -O2 -D_LINUX -D_UNIX -D_TCL85 -Wall $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) -ffloat-store

CFLAGS = -Wall $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(PROGRAMMING_FLAG)
FFLAGS = -Wall
LINKFLAGS = -rdynamic

endif

# Misc
MAKE = make
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 $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@

.C.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@

.c.o:
@$(ECHO) Making $@ from $<
$(CC) $(CFLAGS) -c $<

.f.o:
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@

.f77.o:
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@

.f90.o:
@$(ECHO) Making $@ from $<
$(FC90) $(FFLAGS) -c $< -o $@

# %---------------------------------------------------------%
# | 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 \




MACHINE_NUMERICAL_LIBS = -lm \
$(ARPACK_LIBRARY) \
$(DISTRIBUTED_SUPERLU_LIBRARY) \
$(SUPERLU_LIBRARY) \
$(UMFPACK_LIBRARY) \
$(LAPACK_LIBRARY) \
$(BLAS_LIBRARY) \
$(CBLAS_LIBRARY) \
$(GRAPHIC_LIBRARY)\
$(METIS_LIBRARY)\
$(RELIABILITY_LIBRARY)\
$(PETSC_LIB)\
-lgfortran -ldl
# -lg2c -ldl

MPICC = mpicc
MPIINC = -I/apps/packages/openmpi-1.3.2-32/include
MPILIB = -L/apps/packages/openmpi-1.3.2-32/lib -lmpi

PARALLEL_LIB = $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \
$(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
$(DISTRIBUTED_SUPERLU_LIBRARY)

#PARALLEL_LIB = $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \
# $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
# $(FE)/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.o \
# $(DISTRIBUTED_SUPERLU_LIBRARY)

#PETSC_INC = -I/scratch/fmckenna/petsc-2.2.1 \
# -I/scratch/fmckenna/petsc-2.2.1/bmake/linux-gnu \
# -I/scratch/fmckenna/petsc-2.2.1/include \
# -I/scratch/fmckenna/petsc-2.2.1/include/mpiuni \
# -DPETSC_USE_BOPT_g -DPETSC_USE_EXTERN_CXX


#PETSCINC = -I/scratch/fmckenna/OpenSees/SRC/system_of_eqn/linear/petsc/petsc-2.2.1 -I/scratch/fmckenna/OpenSees/SRC/system_of_eqn/linear/petsc/petsc-2.2.1/bmake/linux-gnu -I/scratch/fmckenna/OpenSees/SRC/system_of_eqn/linear/petsc/petsc-2.2.1/include \
# -I/scratch/fmckenna/petsc-2.2.1/include/mpiuni -DPETSC_USE_BOPT_g -DPETSC_USE_EXTERN_CXX

#PETSCINC = -I/scratch/fmckenna/petsc-2.2.1/include -D_PETSC -I/scratch/fmckenna/petsc-2.2.1/bmake/linux-gnu -DPETSC_USE_BOPT_g -DPETSC_USE_EXTERN_CXX


# $(FE)/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o \


#PETSC_LIB = $(FE)/system_of_eqn/linearSOE/petsc/PetscSOE.o \
# $(FE)/system_of_eqn/linearSOE/petsc/PetscSolver.o \
# $(FE)/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgebak.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgebal.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgeev.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgehd2.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgehrd.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dhseqr.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dlahrd.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dorg2r.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dorghr.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dorgqr.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dpotrf.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dpotrs.o \
# /scratch/fmckenna/petsc-2.2.1/lib/libg/linux-gnu/libpetscsnes.a \
# /scratch/fmckenna/petsc-2.2.1/lib/libg/linux-gnu/libpetscksp.a \
# /scratch/fmckenna/petsc-2.2.1/lib/libg/linux-gnu/libpetscdm.a \
# /scratch/fmckenna/petsc-2.2.1/lib/libg/linux-gnu/libpetscmat.a \
# /scratch/fmckenna/petsc-2.2.1/lib/libg/linux-gnu/libpetscvec.a \
# /scratch/fmckenna/petsc-2.2.1/lib/libg/linux-gnu/libpetsc.a

# -L/scratch/fmckenna/petsc-2.2.1/lib/libg/linux-gnu/
# -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc

PETSC = YES

PETSCINC = -I/apps/packages/petsc-2.2.1_gnu/include -I/apps/packages/petsc-2.2.1_gnu/bmake/linux-gnu -D_PETSC -DPETSC_USE_BOPT_g -DPETSC_USE_EXTERN_CXX

PETSC_LIB = $(FE)/system_of_eqn/linearSOE/petsc/PetscSOE.o \
$(FE)/system_of_eqn/linearSOE/petsc/PetscSolver.o \
$(FE)/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgebak.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgebal.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgeev.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgehd2.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dgehrd.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dhseqr.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dlahrd.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dorg2r.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dorghr.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dorgqr.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dpotrf.o \
# $(HOME)/OpenSees/OTHER/LAPACK/dpotrs.o \
/apps/packages/petsc-2.2.1_gnu/lib/libg/linux-gnu/libpetscsnes.a \
/apps/packages/petsc-2.2.1_gnu/lib/libg/linux-gnu/libpetscksp.a \
/apps/packages/petsc-2.2.1_gnu/lib/libg/linux-gnu/libpetscdm.a \
/apps/packages/petsc-2.2.1_gnu/lib/libg/linux-gnu/libpetscmat.a \
/apps/packages/petsc-2.2.1_gnu/lib/libg/linux-gnu/libpetscvec.a \
/apps/packages/petsc-2.2.1_gnu/lib/libg/linux-gnu/libpetsc.a
## -L/apps/packages/petsc-2.2.1_gnu/lib/libg/linux-gnu
## -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc

ifeq ($(PROGRAMMING_MODE), THREADS)
MACHINE_SPECIFIC_LIBS = -lpthread
else
#MACHINE_SPECIFIC_LIBS = -ldl -lieee -lm -lc -lg2c -Wl,-rpath,/usr/lib -lpng $(MPILIB)
MACHINE_SPECIFIC_LIBS = -ldl -lieee -lm -lc -lgfortran -Wl,-rpath,/local/lib -lpng $(MPILIB)
endif


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


MACHINE_INCLUDES = $(MPIINC) \
-I/usr/local/BerkeleyDB.4.0/include \
-I/usr/include/mysql \
-I$(HOME)/include \
-I$(UMFPACKdir) \
-I$(SUPERLUdir) \
-I$(SUPERLU_DISTdir) $(PETSCINC)


# this file contains all the OpenSees/SRC includes
include $(FE)/Makefile.incl

#TCL_INCLUDES = -I/home/fmk/tcl8.3.3/generic
#TCL_INCLUDES = -I/home/bramesh/ARC/packages/tcl8.5.7/generic

INCLUDES = $(MACHINE_INCLUDES) $(TCL_INCLUDES) $(FE_INCLUDES)
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

you are not linking to the petsc library .. you need to find a library with all the missing symbols .. suggest you look wherever petsc is installed on your machine.
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Post by bramesh »

Thats weird because in my Makefile.def I am including petsc libraries as part of PETSC_LIB. When I list the symbols using nm I see that those symbols are part of the library that is included PETSC_LIB variable.
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

have a look at the comand when you type make to ensure that the petsc lib is there .. the only other thing i can suggest is moving the order of linking around .. i have noticed that on some linux machines i have to change the order of the libs to build it and sometimes include a lib twice!
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Post by bramesh »

I forced the linking of the library in the manually and end up with these new undefined refrences.

/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::~PetscSparseSeqSolver()':
PetscSparseSeqSolver.cpp:(.text+0x528): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
PetscSparseSeqSolver.cpp:(.text+0x554): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::~PetscSparseSeqSolver()':
PetscSparseSeqSolver.cpp:(.text+0x5a8): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
PetscSparseSeqSolver.cpp:(.text+0x5cc): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::~PetscSparseSeqSolver()':
PetscSparseSeqSolver.cpp:(.text+0x628): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o:PetscSparseSeqSolver.cpp:(.text+0x64c): more undefined references to `SparseGenRowLinSolver::~SparseGenRowLinSolver()' follow
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*, double, double, double, int)':
PetscSparseSeqSolver.cpp:(.text+0x69c): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x71c): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*, double, double, double, int)':
PetscSparseSeqSolver.cpp:(.text+0x76c): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x7ec): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*)':
PetscSparseSeqSolver.cpp:(.text+0x828): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x898): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o: In function `PetscSparseSeqSolver::PetscSparseSeqSolver(char*, char*)':
PetscSparseSeqSolver.cpp:(.text+0x8d8): undefined reference to `SparseGenRowLinSolver::SparseGenRowLinSolver(int)'
PetscSparseSeqSolver.cpp:(.text+0x948): undefined reference to `SparseGenRowLinSolver::~SparseGenRowLinSolver()'
/home/bramesh/ARC/Ozgur_Atlayan/OpenSees/SRC/system_of_eqn/linearSOE/petsc/PetscSparseSeqSolver.o:(.rodata._ZTI20PetscSparseSeqSolver[typeinfo for PetscSparseSeqSolver]+0x8): undefined reference to `typeinfo for SparseGenRowLinSolver'
bramesh
Posts: 20
Joined: Thu Sep 10, 2009 7:26 am
Location: Blacksburg, VA

Post by bramesh »

I solved that issue by manually adding sparseGEN object files.
Post Reply