changed: use a cmake based build system
git-svn-id: http://svn.sintef.no/trondheim/IFEM/trunk@804 e10b68d5-8a6e-419e-a041-bce267b0401d
This commit is contained in:
132
Apps/FiniteDefElasticity/CMakeLists.txt
Normal file
132
Apps/FiniteDefElasticity/CMakeLists.txt
Normal file
@@ -0,0 +1,132 @@
|
||||
PROJECT(FiniteDefElasticity)
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
||||
|
||||
# Required defines
|
||||
SET(CMAKE_CXX_FLAGS "-Dreal=double")
|
||||
|
||||
IF(NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE Release)
|
||||
ENDIF(NOT CMAKE_BUILD_TYPE)
|
||||
|
||||
# Add local modules
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
|
||||
$ENV{HOME}/cmake/Modules/
|
||||
${PROJECT_SOURCE_DIR}/../../cmake/Modules)
|
||||
|
||||
enable_language(Fortran)
|
||||
IF(CMAKE_Fortran_COMPILER MATCHES ifort)
|
||||
SET(LANGUAGE_LIBS -lifcore)
|
||||
ENDIF(CMAKE_Fortran_COMPILER MATCHES ifort)
|
||||
enable_language(CXX)
|
||||
IF(CMAKE_CXX_COMPILER MATCHES icpc)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_MKL")
|
||||
ELSE()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_CBLAS")
|
||||
ENDIF(CMAKE_CXX_COMPILER MATCHES icpc)
|
||||
|
||||
# Required packages
|
||||
FIND_PACKAGE(Boost REQUIRED)
|
||||
FIND_PACKAGE(GoTools REQUIRED)
|
||||
FIND_PACKAGE(GoTrivariate REQUIRED)
|
||||
FIND_PACKAGE(Arpack REQUIRED)
|
||||
FIND_PACKAGE(BLAS REQUIRED)
|
||||
FIND_PACKAGE(LAPACK REQUIRED)
|
||||
FIND_PACKAGE(IFEM REQUIRED)
|
||||
|
||||
# Optional packages
|
||||
IF(${ENABLE_PETSC})
|
||||
FIND_PACKAGE(Petsc)
|
||||
ENDIF(${ENABLE_PETSC})
|
||||
IF(${ENABLE_SUPERLU})
|
||||
FIND_PACKAGE(SuperLU)
|
||||
ENDIF(${ENABLE_SUPERLU})
|
||||
IF(${ENABLE_SAMG})
|
||||
FIND_PACKAGE(SAMG)
|
||||
ENDIF(${ENABLE_SAMG})
|
||||
IF(${ENABLE_VTFWRITER})
|
||||
FIND_PACKAGE(VTFWriter)
|
||||
ENDIF(${ENABLE_VTFWRITER})
|
||||
|
||||
# Required libraries
|
||||
SET(DEPLIBS ${IFEM_LIBRARIES} ${Boost_LIBRARIES} ${GoTrivariate_LIBRARIES}
|
||||
${GoTools_LIBRARIES} ${BLAS_LIBRARIES}
|
||||
${Arpack_LIBRARIES} ${LANGUAGE_LIBS}
|
||||
)
|
||||
|
||||
# Required include directories
|
||||
SET(INCLUDES
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${GoTools_INCLUDE_DIRS}
|
||||
${GoTrivariate_INCLUDE_DIRS}
|
||||
${Arpack_INCLUDES}
|
||||
${IFEM_INCLUDES}
|
||||
${PROJECT_SOURCE_DIR}/../
|
||||
)
|
||||
|
||||
IF(SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES)
|
||||
FIND_PACKAGE(Threads REQUIRED)
|
||||
SET(DEPLIBS ${DEPLIBS} ${SuperLU_MT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
SET(INCLUDES ${INCLUDES} ${SuperLU_MT_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SUPERLU_MT")
|
||||
ENDIF(SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES)
|
||||
|
||||
IF(NOT (SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES))
|
||||
IF(SuperLU_LIBRARIES AND SuperLU_INCLUDES)
|
||||
SET(DEPLIBS ${DEPLIBS} ${SuperLU_LIBRARIES})
|
||||
SET(INCLUDES ${INCLUDES} ${SuperLU_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SUPERLU")
|
||||
ENDIF(SuperLU_LIBRARIES AND SuperLU_INCLUDES)
|
||||
ENDIF(NOT (SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES))
|
||||
|
||||
IF(PETSC_LIBRARIES AND PETSC_INCLUDE_DIR)
|
||||
SET(INCLUDES ${INCLUDES} ${PETSC_INCLUDE_DIR})
|
||||
SET(DEPLIBS ${DEPLIBS} ${PETSC_LIBRARIES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_PETSC")
|
||||
FIND_PACKAGE(MPI REQUIRED)
|
||||
SET(INCLUDES ${INCLUDES} ${MPI_INCLUDE_PATH})
|
||||
SET(DEPLIBS ${DEPLIBS} ${MPI_LIBRARIES})
|
||||
FIND_PACKAGE(SLEPc)
|
||||
IF(SLEPC_LIBRARIES AND SLEPC_INCLUDES)
|
||||
SET(INCLUDES ${INCLUDES} ${SLEPC_INCLUDES})
|
||||
SET(DEPLIBS ${DEPLIBS} ${SLEPC_LIBRARIES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SLEPC")
|
||||
ENDIF(SLEPC_LIBRARIES AND SLEPC_INCLUDES)
|
||||
ENDIF(PETSC_LIBRARIES AND PETSC_INCLUDE_DIR)
|
||||
|
||||
IF(SAMG_LIBRARIES AND SAMG_INCLUDES)
|
||||
SET(DEPLIBS ${DEPLIBS} ${SAMG_LIBRARIES})
|
||||
SET(INCLUDES ${INCLUDES} ${SAMG_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SAMG -DSAMG_UNIX_LINUX=1 -DSAMG_LCASE_USCORE")
|
||||
ENDIF(SAMG_LIBRARIES AND SAMG_INCLUDES)
|
||||
|
||||
IF(VTFWRITER_LIBRARIES AND VTFWRITER_INCLUDES)
|
||||
SET(DEPLIBS ${DEPLIBS} ${VTFWRITER_LIBRARIES})
|
||||
SET(INCLUDES ${INCLUDES} ${VTFWRITER_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_VTFAPI=1")
|
||||
ENDIF(VTFWRITER_LIBRARIES AND VTFWRITER_INCLUDES)
|
||||
|
||||
INCLUDE_DIRECTORIES(${INCLUDES})
|
||||
SET(EXECUTABLE_OUTPUT_PATH bin)
|
||||
|
||||
# This line may be needed only on AMD 64 bit... @jbt
|
||||
# 091120: Adding this because GUV-plugins will need it. (J.O.)
|
||||
IF(NOT WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||
ENDIF(NOT WIN32)
|
||||
|
||||
FILE(GLOB_RECURSE NonLinEl_SRCS ${PROJECT_SOURCE_DIR}/../SIMLinEl2D.C
|
||||
${PROJECT_SOURCE_DIR}/../SIMLinEl3D.C
|
||||
*.C
|
||||
*.f
|
||||
Material/*.f)
|
||||
|
||||
ADD_EXECUTABLE(NonLinEl ${NonLinEl_SRCS})
|
||||
TARGET_LINK_LIBRARIES(NonLinEl ${DEPLIBS})
|
||||
|
||||
# 'install' target
|
||||
IF(WIN32)
|
||||
# TODO
|
||||
ELSE(WIN32)
|
||||
# TODO
|
||||
ENDIF(WIN32)
|
||||
@@ -1,71 +0,0 @@
|
||||
# $Id: Makefile,v 1.7 2011-02-08 09:32:18 kmo Exp $
|
||||
#===============================================================================
|
||||
#
|
||||
# File: Makefile
|
||||
#
|
||||
# Created: Jan 12 2010
|
||||
#
|
||||
# Author: Knut Morten Okstad / SINTEF
|
||||
#
|
||||
# Description:
|
||||
# Makefile for spline-based isogeometric finite element simulation applications.
|
||||
#
|
||||
#===============================================================================
|
||||
|
||||
CSRC = main_NonLinEl.C NonlinearElasticityTL.C NonlinearElasticityUL.C \
|
||||
NonlinearElasticityULMX.C NonlinearElasticityULMixed.C \
|
||||
NonlinearElasticity.C NeoHookeElasticity.C \
|
||||
SIMFiniteDefEl.C ../SIMLinEl2D.C ../SIMLinEl3D.C
|
||||
FSRC = accKM.f accKMx.f stiff_TL.f
|
||||
OBJS = $(CSRC:.C=.o) $(FSRC:.f=.o)
|
||||
|
||||
APP = nonlinel
|
||||
|
||||
CXX = g++
|
||||
FC = gfortran
|
||||
|
||||
MYLIB = ../../libSplineFEM.a libMaterial.a
|
||||
GOTLIB = -L../../GoTools/lib -lGoTrivariate -lGoToolsCore
|
||||
VTFLIB = -L../../GLviewExpressWriter/lib -lVTFExpressAPI
|
||||
BLASLIB = -larpack -llapack -lblas
|
||||
SLULIB = -lsuperlu
|
||||
#SLULIB = -L../../SuperLU_MT/lib -lsuperlu_mt_PTHREAD -lpthread
|
||||
#SAMGLIB = -L../../SAMG/samg -lamg_coo
|
||||
LIBS = $(MYLIB) $(GOTLIB) $(VTFLIB) $(SAMGLIB) $(SLULIB) $(BLASLIB)
|
||||
|
||||
#CDEBUG = -g -DINDEX_CHECK=2 -DINT_DEBUG=2
|
||||
CDEBUG = -O2
|
||||
|
||||
FFLAGS = -O3 -funroll-loops
|
||||
CXXFLAGS = $(CDEBUG) -Dreal=double -DUSE_CBLAS -DUSE_FTNMAT \
|
||||
-I. -I.. -I../../Integrands -I../../SIM -I../../ASM \
|
||||
-I../../LinAlg -I../../Utility
|
||||
|
||||
all: $(APP)
|
||||
|
||||
$(APP): $(OBJS) $(MYLIB) Makefile
|
||||
$(CXX) -o $@ $(OBJS) $(LIBS) -lgfortran
|
||||
|
||||
../../libSplineFEM.a:
|
||||
cd ../..; make
|
||||
|
||||
libMaterial.a:
|
||||
cd Material; make
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS)
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile > /dev/null
|
||||
mv Makefile.tmp Makefile
|
||||
|
||||
depend:
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile > /dev/null
|
||||
$(CXX) -M $(CXXFLAGS) *.C >> Makefile.tmp
|
||||
mv Makefile Makefile.bak
|
||||
mv Makefile.tmp Makefile
|
||||
|
||||
tar: clean
|
||||
tar cfv FDSolve.tar Makefile $(FSRC) $(CSRC) *.h \
|
||||
Material/Makefile Material/*.[fh]
|
||||
gzip FDSolve.tar
|
||||
|
||||
# DO NOT DELETE
|
||||
@@ -1,23 +0,0 @@
|
||||
# $Id: Makefile,v 1.1 2010-12-18 20:03:54 kmo Exp $
|
||||
|
||||
LIB = ../libMaterial.a
|
||||
|
||||
SRC = amat3d.f cons2d.f cons3d.f eigs3d.f ieps3d.f liel3d.f mdma3d.f \
|
||||
monh3d.f pcst3d.f push3d.f stnh3d.f vfnh3d.f wlog3d.f rprin0.f
|
||||
OBJS = $(SRC:.f=.o)
|
||||
|
||||
FC = gfortran
|
||||
FFLAGS = -O3
|
||||
#FFLAGS = -g
|
||||
|
||||
all: feninc $(LIB)
|
||||
|
||||
clean:
|
||||
-rm $(OBJS)
|
||||
|
||||
$(LIB): $(OBJS)
|
||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
feninc:
|
||||
ln -s . include
|
||||
ln -s . feninc
|
||||
@@ -61,7 +61,7 @@ C
|
||||
C
|
||||
real*8 taup(3), aap(6,6), q(6,6), tau(6), aa(6,6), vi(6)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -77,7 +77,7 @@ C
|
||||
real*8 Bmod, Emod, Pratio, Smod
|
||||
logical incomp
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -68,7 +68,7 @@ C
|
||||
real*8 g, h, aij, sm, thresh, t, c, s, tau,
|
||||
* v(3,3), d(3), a(3), b(3), z(3)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -68,7 +68,7 @@ C
|
||||
real*8 aap(6,6), b(6), bpr(6), Cstv, detFi, EngU, EngW,
|
||||
& epsd(3), Press, q(6,6), qen(3,3), taup(3)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -72,7 +72,7 @@ C
|
||||
real*8 c1, c2
|
||||
real*8 GLe(6), PK2(6), Cmt(6,6)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -63,7 +63,7 @@ C
|
||||
real*8 DD(7,7), P_bar, P_mix, Sig(6)
|
||||
real*8 fac1, Sig_D(6)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -83,7 +83,7 @@ C
|
||||
real*8 detF, Engy, F(3,3), Bmod, Smod, Sig(6), Cst(6,6)
|
||||
real*8 c1, c2, c3, Cstv, bm(6), detFi, Press, trbm3
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -61,7 +61,7 @@ C
|
||||
integer ipswb3, iwr, j
|
||||
real*8 aa(6,6), dd(7,7)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C
|
||||
C Entry section
|
||||
|
||||
@@ -63,7 +63,7 @@ C
|
||||
real*8 detF, F(3,3), PK2(6), Cmt(6,6), Sig(6), Cst(6,6)
|
||||
real*8 detFi, Tmat(6,6)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
data i1 /1,2,3,1,2,3/
|
||||
data i2 /1,2,3,2,3,1/
|
||||
|
||||
@@ -84,7 +84,7 @@ C
|
||||
real*8 detF, Engy, F(3,3), lambda, mu, Sig(6), Cst(6,6)
|
||||
real*8 c1, c2, b(6), Cstv, detFi, Press
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -73,7 +73,7 @@ C
|
||||
real*8 detF, detFi, lambda,
|
||||
& detF2, detFi2, detFm1, U, Up, Upp
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
C Entry section
|
||||
C
|
||||
|
||||
@@ -67,7 +67,7 @@ C
|
||||
real*8 jthird, mu, twomu, fourmu, w, tol,
|
||||
& bpr(3), lamt(3), epsd(3), taup(3), aap(6,6)
|
||||
C
|
||||
include 'include/feninc/const.h'
|
||||
include 'const.h'
|
||||
C
|
||||
data tol / 1.0d-08 /
|
||||
C
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
# $Id: Makefile,v 1.13 2011-02-04 17:31:40 kmo Exp $
|
||||
#===============================================================================
|
||||
#
|
||||
# File: Makefile
|
||||
#
|
||||
# Created: Jan 12 2010
|
||||
#
|
||||
# Author: Knut Morten Okstad / SINTEF
|
||||
#
|
||||
# Description:
|
||||
# Makefile for spline-based isogeometric finite element simulation applications.
|
||||
#
|
||||
#===============================================================================
|
||||
|
||||
# Comment in this line if PETSc and SLEPc is used
|
||||
#include ${SLEPC_DIR}/conf/slepc_common_variables
|
||||
|
||||
SRCS0 = SIMLinEl2D.C SIMLinEl3D.C \
|
||||
FiniteDefElasticity/NonlinearElasticity.C \
|
||||
FiniteDefElasticity/NonlinearElasticityTL.C
|
||||
SRCS1 = main_LinEl3D.C $(SRCS0)
|
||||
SRCS2 = main_LinElStep.C $(SRCS0)
|
||||
OBJS1 = $(SRCS1:.C=.o) FiniteDefElasticity/stiff_TL.o
|
||||
OBJS2 = $(SRCS2:.C=.o) FiniteDefElasticity/stiff_TL.o
|
||||
APP1 = linel3D
|
||||
APP2 = linelStep
|
||||
|
||||
MYLIB = ../libSplineFEM.a
|
||||
GOTLIB = -L../GoTools/lib -lGoTrivariate -lGoToolsCore
|
||||
BLASLIB = -larpack -llapack -lblas
|
||||
SLULIB = -lsuperlu
|
||||
#SLULIB = -L../SuperLU_MT/lib -lsuperlu -lpthread
|
||||
#SAMLIB = -L../SAM -lSPR -lASM -lEIG -lMAT -lMDR -lUTL
|
||||
#SAMGLIB = -L../SAMG/samg -lamg_coo
|
||||
# Comment in this line if PETSc and SLEPc is used
|
||||
#PETSCOPT = -DHAS_PETSC $(CC_INCLUDES)
|
||||
# Comment in this line if parallel PETSc and SLEPc are used
|
||||
#PETSCOPT = -DHAS_PETSC -DPARALLEL_PETSC $(CC_INCLUDES)
|
||||
VTFLIB = -L../GLviewExpressWriter/lib -lVTFExpressAPI
|
||||
LIBS = $(MYLIB) $(GOTLIB) $(VTFLIB) \
|
||||
$(SAMLIB) $(SAMGLIB) $(SLULIB) $(SLEPC_LIB) $(BLASLIB)
|
||||
|
||||
FC = gfortran
|
||||
CXX = g++
|
||||
|
||||
#CDEBUG = -g -DINDEX_CHECK
|
||||
CDEBUG = -O2
|
||||
|
||||
FFLAGS = -O3 -funroll-loops
|
||||
CXXFLAGS = $(CDEBUG) -Dreal=double -DUSE_CBLAS \
|
||||
-I. -I../Integrands -I../SIM -I../ASM -I../LinAlg -I../Utility \
|
||||
-IFiniteDefElasticity $(PETSCOPT)
|
||||
|
||||
all: $(APP1) $(APP2)
|
||||
|
||||
$(APP1): $(OBJS1) $(MYLIB) Makefile
|
||||
$(CXX) -o $@ $(OBJS1) $(LIBS) -lgfortran
|
||||
|
||||
$(APP2): $(OBJS2) $(MYLIB) Makefile
|
||||
$(CXX) -o $@ $(OBJS2) $(LIBS) -lgfortran
|
||||
|
||||
../libSplineFEM.a:
|
||||
cd ..; make
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS1) $(OBJS2) $(OBJS3)
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile > /dev/null
|
||||
mv Makefile.tmp Makefile
|
||||
|
||||
depend:
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile > /dev/null
|
||||
$(CXX) -M $(CXXFLAGS) *.C >> Makefile.tmp
|
||||
mv Makefile Makefile.bak
|
||||
mv Makefile.tmp Makefile
|
||||
|
||||
# DO NOT DELETE
|
||||
155
CMakeLists.txt
Normal file
155
CMakeLists.txt
Normal file
@@ -0,0 +1,155 @@
|
||||
PROJECT(IFEM)
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
||||
|
||||
# Required defines
|
||||
SET(CMAKE_CXX_FLAGS "-Dreal=double")
|
||||
|
||||
ENABLE_LANGUAGE(Fortran)
|
||||
IF(CMAKE_Fortran_COMPILER MATCHES ifort)
|
||||
SET(LANGUAGE_LIBS -lifcore)
|
||||
ENDIF(CMAKE_Fortran_COMPILER MATCHES ifort)
|
||||
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
IF(CMAKE_CXX_COMPILER MATCHES icpc)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_MKL")
|
||||
ELSE(CMAKE_CXX_COMPILER MATCHES icpc)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_CBLAS")
|
||||
ENDIF(CMAKE_CXX_COMPILER MATCHES icpc)
|
||||
|
||||
# Add local modules
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
|
||||
${CMAKE_SOURCE_DIR}/cmake/Modules)
|
||||
|
||||
# Required packages
|
||||
FIND_PACKAGE(Boost REQUIRED)
|
||||
FIND_PACKAGE(GoTools REQUIRED)
|
||||
FIND_PACKAGE(GoTrivariate REQUIRED)
|
||||
FIND_PACKAGE(Arpack REQUIRED)
|
||||
FIND_PACKAGE(BLAS REQUIRED)
|
||||
FIND_PACKAGE(LAPACK REQUIRED)
|
||||
|
||||
# Optional packages
|
||||
IF(${ENABLE_PETSC})
|
||||
FIND_PACKAGE(Petsc)
|
||||
ENDIF(${ENABLE_PETSC})
|
||||
IF(${ENABLE_SUPERLU})
|
||||
FIND_PACKAGE(SuperLU)
|
||||
ENDIF(${ENABLE_SUPERLU})
|
||||
IF(${ENABLE_SAMG})
|
||||
FIND_PACKAGE(SAMG)
|
||||
ENDIF(${ENABLE_SAMG})
|
||||
IF(${ENABLE_VTFWRITER})
|
||||
FIND_PACKAGE(VTFWriter)
|
||||
ENDIF(${ENABLE_VTFWRITER})
|
||||
|
||||
# Required libraries
|
||||
SET(DEPLIBS ${Boost_LIBRARIES} ${GoTrivariate_LIBRARIES}
|
||||
${GoTools_LIBRARIES} ${BLAS_LIBRARIES}
|
||||
${Arpack_LIBRARIES} ${LANGUAGE_LIBS}
|
||||
)
|
||||
|
||||
# Required include directories
|
||||
SET(INCLUDES
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${GoTools_INCLUDE_DIRS}
|
||||
${GoTrivariate_INCLUDE_DIRS}
|
||||
${Arpack_INCLUDES}
|
||||
${PROJECT_SOURCE_DIR}/src/ASM
|
||||
${PROJECT_SOURCE_DIR}/src/Eig
|
||||
${PROJECT_SOURCE_DIR}/src/Integrands
|
||||
${PROJECT_SOURCE_DIR}/src/LinAlg
|
||||
${PROJECT_SOURCE_DIR}/src/SIM
|
||||
${PROJECT_SOURCE_DIR}/src/Utility
|
||||
${PROJECT_SOURCE_DIR}/Apps
|
||||
)
|
||||
|
||||
IF(SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES)
|
||||
FIND_PACKAGE(Threads REQUIRED)
|
||||
SET(DEPLIBS ${DEPLIBS} ${SuperLU_MT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
SET(INCLUDES ${INCLUDES} ${SuperLU_MT_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SUPERLU_MT")
|
||||
ENDIF(SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES)
|
||||
|
||||
IF(NOT (SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES))
|
||||
IF(SuperLU_LIBRARIES AND SuperLU_INCLUDES)
|
||||
SET(DEPLIBS ${DEPLIBS} ${SuperLU_LIBRARIES})
|
||||
SET(INCLUDES ${INCLUDES} ${SuperLU_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SUPERLU")
|
||||
ENDIF(SuperLU_LIBRARIES AND SuperLU_INCLUDES)
|
||||
ENDIF(NOT (SuperLU_MT_LIBRARIES AND SuperLU_MT_INCLUDES))
|
||||
|
||||
IF(PETSC_LIBRARIES AND PETSC_INCLUDE_DIR)
|
||||
SET(INCLUDES ${INCLUDES} ${PETSC_INCLUDE_DIR})
|
||||
SET(DEPLIBS ${DEPLIBS} ${PETSC_LIBRARIES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_PETSC")
|
||||
FIND_PACKAGE(MPI REQUIRED)
|
||||
SET(INCLUDES ${INCLUDES} ${MPI_INCLUDE_PATH})
|
||||
SET(DEPLIBS ${DEPLIBS} ${MPI_LIBRARIES})
|
||||
FIND_PACKAGE(SLEPc)
|
||||
IF(SLEPC_LIBRARIES AND SLEPC_INCLUDES)
|
||||
SET(INCLUDES ${INCLUDES} ${SLEPC_INCLUDES})
|
||||
SET(DEPLIBS ${DEPLIBS} ${SLEPC_LIBRARIES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SLEPC")
|
||||
ENDIF(SLEPC_LIBRARIES AND SLEPC_INCLUDES)
|
||||
ENDIF(PETSC_LIBRARIES AND PETSC_INCLUDE_DIR)
|
||||
|
||||
IF(SAMG_LIBRARIES AND SAMG_INCLUDES)
|
||||
SET(DEPLIBS ${DEPLIBS} ${SAMG_LIBRARIES})
|
||||
SET(INCLUDES ${INCLUDES} ${SAMG_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_SAMG -DSAMG_UNIX_LINUX=1 -DSAMG_LCASE_USCORE")
|
||||
ENDIF(SAMG_LIBRARIES AND SAMG_INCLUDES)
|
||||
|
||||
IF(VTFWRITER_LIBRARIES AND VTFWRITER_INCLUDES)
|
||||
SET(DEPLIBS ${DEPLIBS} ${VTFWRITER_LIBRARIES})
|
||||
SET(INCLUDES ${INCLUDES} ${VTFWRITER_INCLUDES})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAS_VTFAPI=1")
|
||||
ENDIF(VTFWRITER_LIBRARIES AND VTFWRITER_INCLUDES)
|
||||
|
||||
INCLUDE_DIRECTORIES(${INCLUDES})
|
||||
|
||||
SET(EXECUTABLE_OUTPUT_PATH bin)
|
||||
SET(LIBRARY_OUTPUT_PATH lib)
|
||||
|
||||
# This line may be needed only on AMD 64 bit... @jbt
|
||||
# 091120: Adding this because GUV-plugins will need it. (J.O.)
|
||||
IF(NOT WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||
ENDIF(NOT WIN32)
|
||||
|
||||
# Make the IFEM library
|
||||
|
||||
FILE(GLOB_RECURSE IFEM_SRCS src/ASM/*.C src/Eig/*.C
|
||||
src/Eig/*.f src/Integrands/*.C
|
||||
src/LinAlg/*.C src/SIM/*.C src/Utility/*.C)
|
||||
ADD_LIBRARY(IFEM ${IFEM_SRCS})
|
||||
TARGET_LINK_LIBRARIES(IFEM ${DEPLIBS})
|
||||
|
||||
# Make the Apps
|
||||
FILE(GLOB_RECURSE Poisson_SRCS ${PROJECT_SOURCE_DIR}/Apps/Poisson/*.C)
|
||||
ADD_EXECUTABLE(Poisson ${Poisson_SRCS})
|
||||
TARGET_LINK_LIBRARIES(Poisson IFEM ${DEPLIBS})
|
||||
|
||||
IF(NOT IFEM_INSTALL_PREFIX)
|
||||
SET(IFEM_INSTALL_PREFIX $ENV{HOME})
|
||||
ENDIF(NOT IFEM_INSTALL_PREFIX)
|
||||
|
||||
# 'install' target
|
||||
IF(WIN32)
|
||||
# TODO
|
||||
ELSE(WIN32)
|
||||
# lib
|
||||
INSTALL(TARGETS IFEM DESTINATION ${IFEM_INSTALL_PREFIX}/lib)
|
||||
|
||||
# headers
|
||||
FILE(GLOB_RECURSE IFEM_HEADERS src/ASM/*.h src/Eig/*.h
|
||||
src/Eig/*.h src/Integrands/*.h
|
||||
src/LinAlg/*.h src/SIM/*.h src/Utility/*.h)
|
||||
INSTALL(FILES ${IFEM_HEADERS}
|
||||
DESTINATION ${IFEM_INSTALL_PREFIX}/include/IFEM)
|
||||
|
||||
FILE(GLOB_RECURSE LOCAL_CMAKE_MODULES cmake/Modules/*.cmake)
|
||||
|
||||
# cmake modules
|
||||
INSTALL(FILES ${LOCAL_CMAKE_MODULES} DESTINATION ${IFEM_INSTALL_PREFIX}/cmake/Modules)
|
||||
ENDIF(WIN32)
|
||||
43
HOWTO
Normal file
43
HOWTO
Normal file
@@ -0,0 +1,43 @@
|
||||
Dette må gjøres for å kompilere denne versjonen:
|
||||
|
||||
sudo apt-get install libblas-dev
|
||||
sudo apt-get install liblapack-dev
|
||||
sudo apt-get install libarpack2-dev
|
||||
sudo apt-get install libsuperlu3-dev
|
||||
sudo apt-get install libboost-dev
|
||||
sudo apt-get install libpetsc3.0.0-dev
|
||||
sudo apt-get install libslepc3.0.0-dev
|
||||
|
||||
Installer GoToolsCore, SISL og GoTrivariate fra GoTools-svn.
|
||||
Gjør så cmake ., make og sudo make install i disse katalogene
|
||||
|
||||
CMake og out-of-tree builds:
|
||||
CMake støtter debug og release-builds samtidig vi det som kalles
|
||||
out-of-tree builds. In-tree builds av App'ene forventer at har byggefilene
|
||||
i en underkatalog med samme navn som bygge-typen. Feks for å bygge Debug
|
||||
gjør vi:
|
||||
cd <root of tree>
|
||||
mkdir Debug
|
||||
cd Debug
|
||||
cmake .. -DCMAKE_BUILD_TYPE:STRING=Debug
|
||||
|
||||
På samme måte kan vi lage en release-katalog.
|
||||
|
||||
Merk: Hvis du har en CMakeCache.txt i root når du prøver dette, vil
|
||||
det ikke fungere.
|
||||
|
||||
Flagg av interesse:
|
||||
Per default lenker vi mot et minimum av bibliotek. Det betyr ingen
|
||||
PETSc, ingen SuperLU, ingen VTFWriter og ingen SAMG. Disse kan slås på
|
||||
med opsjoner:
|
||||
|
||||
-DENABLE_SUPERLU:BOOL=1, -DENABLE_PETSC:BOOL=1, -DENABLE_VTFWRITER:BOOL=1
|
||||
og -DENABLE_SAMG:BOOL=1.
|
||||
|
||||
Vi bygger kun libIFEM og Apps/Poisson.
|
||||
Stokes og FiniteDefElasticity har egen CMakeLists.txt. Disse er
|
||||
satt opp til å bruke in-tree kopi av libIFEM per default, men sjekker
|
||||
system hvis den ikke finner in-tree. Du kan tvinge system med
|
||||
-DFORCE_SYSTEM_IFEM:BOOL=1. Merk at in-tree sjekkes både for <root>/<type> og
|
||||
i <root>.
|
||||
|
||||
26
cmake/Modules/FindArpack.cmake
Normal file
26
cmake/Modules/FindArpack.cmake
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
IF (Arpack_LIBRARIES)
|
||||
SET(Arpack_FIND_QUIETLY TRUE)
|
||||
ENDIF (Arpack_LIBRARIES)
|
||||
|
||||
FIND_PATH(Arpack_INCLUDES
|
||||
NAMES
|
||||
arpack++/arpackf.h
|
||||
PATHS
|
||||
$ENV{HOME}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(Arpack_LIBRARIES arpack
|
||||
PATHS
|
||||
$ENV{HOME}/lib
|
||||
)
|
||||
|
||||
IF(Arpack_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(Arpack_LIBRARIES ${Arpack_LIBRARIES})
|
||||
ENDIF(Arpack_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Arpack DEFAULT_MSG
|
||||
Arpack_LIBRARIES)
|
||||
|
||||
MARK_AS_ADVANCED(Arpack_LIBRARIES)
|
||||
41
cmake/Modules/FindGoTools.cmake
Normal file
41
cmake/Modules/FindGoTools.cmake
Normal file
@@ -0,0 +1,41 @@
|
||||
# - Tries to find the GoTools Core library
|
||||
#
|
||||
# Written by: jan.b.thomassen@sintef.no
|
||||
#
|
||||
|
||||
|
||||
# 'GoTools_BUILD_ALL' will be defined in the top-level CMakeLists.txt
|
||||
# file if we are building all of GoTools in one project.
|
||||
IF(GoTools_BUILD_ALL)
|
||||
# Header files
|
||||
SET(GoTools_INCLUDE_DIRS ${GoToolsCore_SOURCE_DIR}/include
|
||||
CACHE PATH "Path to GoTools Core header files")
|
||||
# Library
|
||||
SET(GoTools_LIBRARIES GoToolsCore
|
||||
CACHE FILE "GoTools Core library")
|
||||
ENDIF(GoTools_BUILD_ALL)
|
||||
|
||||
|
||||
# Find header files
|
||||
FIND_PATH(GoTools_INCLUDE_DIRS "GoTools/geometry/SplineSurface.h"
|
||||
"$ENV{HOME}/include"
|
||||
"$ENV{HOME}/install/include"
|
||||
"C:/Program Files (x86)/GoTools/include"
|
||||
)
|
||||
|
||||
|
||||
# Find library
|
||||
FIND_LIBRARY(GoTools_LIBRARIES
|
||||
NAMES GoToolsCore
|
||||
PATHS "$ENV{HOME}/lib"
|
||||
"$ENV{HOME}/install/lib"
|
||||
"C:/Program Files (x86)/GoTools/lib"
|
||||
PATH_SUFFIXES GoTools
|
||||
)
|
||||
|
||||
|
||||
# Check that we have found everything
|
||||
SET(GoTools_FOUND FALSE)
|
||||
IF(GoTools_INCLUDE_DIRS AND GoTools_LIBRARIES)
|
||||
SET(GoTools_FOUND TRUE)
|
||||
ENDIF(GoTools_INCLUDE_DIRS AND GoTools_LIBRARIES)
|
||||
41
cmake/Modules/FindGoTrivariate.cmake
Normal file
41
cmake/Modules/FindGoTrivariate.cmake
Normal file
@@ -0,0 +1,41 @@
|
||||
# - Tries to find the GoTools Trivariate library
|
||||
#
|
||||
# Written by: jan.b.thomassen@sintef.no
|
||||
#
|
||||
|
||||
# 'GoTools_BUILD_ALL' will be defined in the top-level CMakeLists.txt
|
||||
# file if we are building all of GoTools in one project.
|
||||
IF(GoTools_BUILD_ALL)
|
||||
# Header files
|
||||
SET(GoTrivariate_INCLUDE_DIRS ${GoTrivariate_SOURCE_DIR}/include
|
||||
CACHE PATH "Path to GoTools Trivariate header files")
|
||||
# Library
|
||||
SET(GoTrivariate_LIBRARIES GoTrivariate
|
||||
CACHE FILE "GoTools Trivariate library")
|
||||
ENDIF(GoTools_BUILD_ALL)
|
||||
|
||||
|
||||
# Find header files
|
||||
FIND_PATH(GoTrivariate_INCLUDE_DIRS
|
||||
"GoTools/trivariate/SplineVolume.h"
|
||||
"$ENV{HOME}/include"
|
||||
"$ENV{HOME}/install/include"
|
||||
"/usr/local/include"
|
||||
"C:/Program Files (x86)/GoTools/include"
|
||||
)
|
||||
|
||||
# Find library
|
||||
FIND_LIBRARY(GoTrivariate_LIBRARIES
|
||||
NAMES GoTrivariate
|
||||
PATHS "$ENV{HOME}/lib"
|
||||
"$ENV{HOME}/install/lib"
|
||||
"C:/Program Files (x86)/GoTools/lib"
|
||||
"/usr/local/lib"
|
||||
PATH_SUFFIXES GoTools
|
||||
)
|
||||
|
||||
# Check that we have found everything
|
||||
SET(GoTrivariate_FOUND FALSE)
|
||||
IF(GoTrivariate_INCLUDE_DIRS AND GoTrivariate_LIBRARIES)
|
||||
SET(GoTrivariate_FOUND TRUE)
|
||||
ENDIF(GoTrivariate_INCLUDE_DIRS AND GoTrivariate_LIBRARIES)
|
||||
53
cmake/Modules/FindIFEM.cmake
Normal file
53
cmake/Modules/FindIFEM.cmake
Normal file
@@ -0,0 +1,53 @@
|
||||
IF(IFEM_INCLUDES AND IFEM_LIBRARIES)
|
||||
SET(IFEM_FIND_QUIETLY TRUE)
|
||||
ENDIF(IFEM_INCLUDES AND IFEM_LIBRARIES)
|
||||
|
||||
IF((NOT DEFINED(FORCE_SYSTEM_IFEM)) OR (NOT ${FORCE_SYSTEM_IFEM}))
|
||||
FIND_PATH(IFEM_INCLUDES
|
||||
NAMES
|
||||
SIMbase.h
|
||||
PATHS
|
||||
${PROJECT_SOURCE_DIR}/../../src/
|
||||
PATH_SUFFIXES SIM)
|
||||
ENDIF((NOT DEFINED(FORCE_SYSTEM_IFEM)) OR (NOT ${FORCE_SYSTEM_IFEM}))
|
||||
|
||||
# Build is in-tree
|
||||
IF(IFEM_INCLUDES)
|
||||
SET(IFEM_INCLUDES
|
||||
${PROJECT_SOURCE_DIR}/../../src/ASM
|
||||
${PROJECT_SOURCE_DIR}/../../src/Eig
|
||||
${PROJECT_SOURCE_DIR}/../../src/Integrands
|
||||
${PROJECT_SOURCE_DIR}/../../src/LinAlg
|
||||
${PROJECT_SOURCE_DIR}/../../src/SIM
|
||||
${PROJECT_SOURCE_DIR}/../../src/Utility)
|
||||
MESSAGE(STATUS "Using in-tree libIFEM")
|
||||
FIND_LIBRARY(IFEM_LIBRARIES
|
||||
IFEM
|
||||
PATHS
|
||||
${PROJECT_SOURCE_DIR}/../../${CMAKE_BUILD_TYPE}/lib
|
||||
${PROJECT_SOURCE_DIR}/../../lib
|
||||
NO_DEFAULT_PATH)
|
||||
IF(NOT IFEM_LIBRARIES)
|
||||
MESSAGE(WARNING "Could not find the in-tree libIFEM library, we assume "
|
||||
"it will be built into a build-type dir")
|
||||
SET(IFEM_LIBRARIES ${PROJECT_SOURCE_DIR}/../../${CMAKE_BUILD_TYPE}/lib/libIFEM.a)
|
||||
ENDIF(NOT IFEM_LIBRARIES)
|
||||
ELSE(IFEM_INCLUDES)
|
||||
MESSAGE(STATUS "No in-tree libIFEM found, looking for system library")
|
||||
FIND_PATH(IFEM_INCLUDES
|
||||
NAMES
|
||||
SIMbase.h
|
||||
PATHS
|
||||
$ENV{HOME}/include
|
||||
PATH_SUFFIXES IFEM)
|
||||
FIND_LIBRARY(IFEM_LIBRARIES
|
||||
IFEM
|
||||
PATHS
|
||||
$ENV{HOME}/lib)
|
||||
ENDIF(IFEM_INCLUDES)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(IFEM DEFAULT_MSG
|
||||
IFEM_INCLUDES IFEM_LIBRARIES)
|
||||
|
||||
MARK_AS_ADVANCED(IFEM_INCLUDES IFEM_LIBRARIES)
|
||||
59
cmake/Modules/FindPetsc.cmake
Normal file
59
cmake/Modules/FindPetsc.cmake
Normal file
@@ -0,0 +1,59 @@
|
||||
FIND_PATH(
|
||||
PETSC_INCLUDE_DIR
|
||||
NAMES petsc.h
|
||||
PATHS /usr/include/petsc/
|
||||
$ENV{PETSC_DIR}
|
||||
)
|
||||
FIND_PATH(
|
||||
PETSCCONF_INCLUDE_DIR
|
||||
NAMES petscconf.h
|
||||
PATHS /usr/include/petsc/
|
||||
)
|
||||
|
||||
IF( PETSCCONF_INCLUDE_DIR EQUAL PETSC_INCLUDE_DIR )
|
||||
SET(CMAKE_REQUIRED_INCLUDES "${PETSC_INCLUDE_DIR};${CMAKE_REQUIRED_INCLUDES}")
|
||||
ELSE( PETSCCONF_INCLUDE_DIR EQUAL PETSC_INCLUDE_DIR )
|
||||
SET(CMAKE_REQUIRED_INCLUDES "${PETSC_INCLUDE_DIR};${PETSCCONF_INCLUDE_DIR};${CMAKE_REQUIRED_INCLUDES}")
|
||||
ENDIF( PETSCCONF_INCLUDE_DIR EQUAL PETSC_INCLUDE_DIR )
|
||||
|
||||
#MESSAGE( STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}")
|
||||
|
||||
INCLUDE (CheckIncludeFiles)
|
||||
CHECK_INCLUDE_FILES(petscconf.h HAVE_PETSCCONF_H)
|
||||
CHECK_INCLUDE_FILES(petsc.h HAVE_PETSC_H)
|
||||
IF ( HAVE_PETSC_H )
|
||||
ADD_DEFINITIONS( -DHAVE_PETSC_H -DHAVE_PETSC )
|
||||
ENDIF( HAVE_PETSC_H )
|
||||
|
||||
|
||||
#FIND_LIBRARY(PETSC_LIB_MPIUNI mpiuni PATHS /usr/local/petsc-2.3.3-p8/lib/linux-gnu-c-debug QUIET )
|
||||
FIND_LIBRARY(PETSC_LIB_PETSC petsc PATHS /usr/lib)
|
||||
FIND_LIBRARY(PETSC_LIB_PETSCDM petscdm PATHS /usr/lib)
|
||||
FIND_LIBRARY(PETSC_LIB_PETSCVEC petscvec PATHS /usr/lib)
|
||||
FIND_LIBRARY(PETSC_LIB_PETSCMAT petscmat PATHS /usr/lib)
|
||||
FIND_LIBRARY(PETSC_LIB_PETSCKSP petscksp PATHS /usr/lib)
|
||||
FIND_LIBRARY(PETSC_LIB_PETSCSNES petscsnes PATHS /usr/lib)
|
||||
|
||||
IF(PETSC_LIB_PETSC)
|
||||
SET(PETSC_LIBRARIES ${PETSC_LIBRARIES} ${PETSC_LIB_PETSC})
|
||||
ENDIF(PETSC_LIB_PETSC)
|
||||
|
||||
IF(PETSC_LIB_PETSCDM)
|
||||
SET(PETSC_LIBRARIES ${PETSC_LIBRARIES} ${PETSC_LIB_PETSCDM})
|
||||
ENDIF(PETSC_LIB_PETSCDM)
|
||||
|
||||
IF(PETSC_LIB_PETSCVEC)
|
||||
SET(PETSC_LIBRARIES ${PETSC_LIBRARIES} ${PETSC_LIB_PETSCVEC})
|
||||
ENDIF(PETSC_LIB_PETSCVEC)
|
||||
|
||||
IF(PETSC_LIB_PETSCMAT)
|
||||
SET(PETSC_LIBRARIES ${PETSC_LIBRARIES} ${PETSC_LIB_PETSCMAT})
|
||||
ENDIF(PETSC_LIB_PETSCMAT)
|
||||
|
||||
IF(PETSC_LIB_PETSCKSP)
|
||||
SET(PETSC_LIBRARIES ${PETSC_LIBRARIES} ${PETSC_LIB_PETSCKSP})
|
||||
ENDIF(PETSC_LIB_PETSCKSP)
|
||||
|
||||
IF(PETSC_LIB_PETSCSNES)
|
||||
SET(PETSC_LIBRARIES ${PETSC_LIBRARIES} ${PETSC_LIB_PETSCSNES})
|
||||
ENDIF(PETSC_LIB_PETSCSNES)
|
||||
21
cmake/Modules/FindSAMG.cmake
Normal file
21
cmake/Modules/FindSAMG.cmake
Normal file
@@ -0,0 +1,21 @@
|
||||
IF (SAMG_LIBRARIES)
|
||||
SET(SAMG_FIND_QUIETLY TRUE)
|
||||
ENDIF(SAMG_LIBRARIES)
|
||||
|
||||
FIND_PATH(SAMG_INCLUDES
|
||||
NAMES
|
||||
samg.h
|
||||
PATHS
|
||||
$ENV{HOME}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(SAMG_LIBRARIES amg_coo
|
||||
PATHS
|
||||
$ENV{HOME}/lib
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(SAMG DEFAULT_MSG
|
||||
SAMG_LIBRARIES)
|
||||
|
||||
MARK_AS_ADVANCED(SAMG_LIBRARIES)
|
||||
41
cmake/Modules/FindSLEPc.cmake
Normal file
41
cmake/Modules/FindSLEPc.cmake
Normal file
@@ -0,0 +1,41 @@
|
||||
# -*- mode: cmake -*-
|
||||
#
|
||||
# This file is part of the Feel library
|
||||
#
|
||||
# Author(s): Christophe Prud'homme <christophe.prudhomme@ujf-grenoble.fr>
|
||||
# Date: 2010-01-22
|
||||
#
|
||||
# Copyright (C) 2010 Universit<69> Joseph Fourier
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 3.0 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
find_path (SLEPC_DIR include/slepc.h
|
||||
HINTS ENV SLEPC_DIR
|
||||
PATHS
|
||||
/usr/lib/slepcdir/3.0.0 # Debian
|
||||
$ENV{HOME}/slepc
|
||||
DOC "SLEPc Directory")
|
||||
|
||||
SET(SLEPC_INCLUDE_DIR "${SLEPC_DIR}/include/")
|
||||
CHECK_INCLUDE_FILES( ${SLEPC_INCLUDE_DIR}/slepc.h HAVE_SLEPC_H )
|
||||
FIND_LIBRARY(SLEPC_LIB_SLEPC slepc )
|
||||
SET(SLEPC_LIBRARIES ${SLEPC_LIB_SLEPC} CACHE STRING "SLEPc libraries" FORCE)
|
||||
# message( "*** SLEPc directory : ${SLEPC_DIR}" )
|
||||
if (HAVE_SLEPC_H AND SLEPC_DIR AND SLEPC_LIBRARIES )
|
||||
set(HAVE_SLEPC 1)
|
||||
set(SLEPC_FOUND ON)
|
||||
endif()
|
||||
set(SLEPC_INCLUDES ${SLEPC_INCLUDE_DIR} CACHE STRING "SLEPc include path" FORCE)
|
||||
MARK_AS_ADVANCED( SLEPC_DIR SLEPC_LIB_SLEPC SLEPC_INCLUDES SLEPC_LIBRARIES )
|
||||
50
cmake/Modules/FindSuperLU.cmake
Normal file
50
cmake/Modules/FindSuperLU.cmake
Normal file
@@ -0,0 +1,50 @@
|
||||
IF(SuperLU_INCLUDES AND SuperLU_LIBRARIES)
|
||||
SET(SUPERLU_FIND_QUIETLY TRUE)
|
||||
ENDIF(SuperLU_INCLUDES AND SuperLU_LIBRARIES)
|
||||
|
||||
FIND_PATH(SuperLU_INCLUDES
|
||||
NAMES
|
||||
supermatrix.h
|
||||
PATHS
|
||||
$ENV{HOME}/include
|
||||
PATH_SUFFIXES superlu
|
||||
)
|
||||
|
||||
FIND_PATH(SuperLU_MT_INCLUDES
|
||||
NAMES
|
||||
slu_mt_machines.h
|
||||
PATHS
|
||||
$ENV{HOME}/include
|
||||
PATH_SUFFIXES superlu
|
||||
)
|
||||
|
||||
FIND_LIBRARY(SuperLU_LIBRARIES superlu
|
||||
PATHS
|
||||
$ENV{HOME}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(SuperLU_MT_LIBRARIES superlu_mt
|
||||
PATHS
|
||||
$ENV{HOME}/lib
|
||||
)
|
||||
|
||||
IF(SuperLU_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(SuperLU_LIBRARIES ${SuperLU_LIBRARIES} -lgfortran)
|
||||
ENDIF(SuperLU_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
|
||||
IF(SuperLU_MT_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(SuperLU_MT_LIBRARIES ${SuperLU_MT_LIBRARIES} -lgfortran)
|
||||
ENDIF(SuperLU_MT_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
IF(SuperLU_LIBRARIES)
|
||||
find_package_handle_standard_args(SuperLU DEFAULT_MSG
|
||||
SuperLU_INCLUDES SuperLU_LIBRARIES)
|
||||
ENDIF(SuperLU_LIBRARIES)
|
||||
IF(SuperLU_MT_LIBRARIES)
|
||||
find_package_handle_standard_args(SuperLU DEFAULT_MSG
|
||||
SuperLU_MT_INCLUDES SuperLU_MT_LIBRARIES)
|
||||
ENDIF(SuperLU_MT_LIBRARIES)
|
||||
|
||||
MARK_AS_ADVANCED(SuperLU_INCLUDES SuperLU_LIBRARIES
|
||||
SuperLU_MT_INCLUDES SuperLU_MT_LIBRARIES)
|
||||
26
cmake/Modules/FindVTFWriter.cmake
Normal file
26
cmake/Modules/FindVTFWriter.cmake
Normal file
@@ -0,0 +1,26 @@
|
||||
IF(VTFWRITER_INCLUDES AND VTFWRITER_LIBRARIES)
|
||||
SET(VTFWRITER_FIND_QUIETLY TRUE)
|
||||
ENDIF(VTFWRITER_INCLUDES AND VTFWRITER_LIBRARIES)
|
||||
|
||||
FIND_PATH(VTFWRITER_INCLUDES
|
||||
NAMES
|
||||
VTFAPI.h
|
||||
PATHS
|
||||
$ENV{HOME}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(VTFWRITER_LIBRARIES
|
||||
VTFExpressAPI
|
||||
PATHS
|
||||
$ENV{HOME}/lib
|
||||
)
|
||||
|
||||
IF(VTFWRITER_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(VTFWRITER_LIBRARIES ${VTFWRITER_LIBRARIES})
|
||||
ENDIF(VTFWRITER_LIBRARIES AND CMAKE_COMPILER_IS_GNUCXX)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(VTFWRITER DEFAULT_MSG
|
||||
VTFWRITER_INCLUDES VTFWRITER_LIBRARIES)
|
||||
|
||||
MARK_AS_ADVANCED(VTFWRITER_INCLUDES VTFWRITER_LIBRARIES)
|
||||
@@ -13,15 +13,19 @@
|
||||
|
||||
#include "LinAlgInit.h"
|
||||
#ifdef HAS_PETSC
|
||||
#include "slepceps.h"
|
||||
#include "petscksp.h"
|
||||
#endif
|
||||
#ifdef HAS_SLEPC
|
||||
#include "slepceps.h"
|
||||
#endif
|
||||
|
||||
|
||||
LinAlgInit::LinAlgInit (int argc, char** argv)
|
||||
{
|
||||
#ifdef HAS_PETSC
|
||||
#ifdef HAS_SLEPC
|
||||
SlepcInitialize(&argc,&argv,(char*)0,PETSC_NULL);
|
||||
#endif
|
||||
#ifdef HAS_PETSC
|
||||
//PetscInitialize(&argc,&argv,(char*)0,PETSC_NULL);
|
||||
#endif
|
||||
#ifdef PARALLEL_PETSC
|
||||
@@ -34,8 +38,10 @@ LinAlgInit::LinAlgInit (int argc, char** argv)
|
||||
|
||||
LinAlgInit::~LinAlgInit ()
|
||||
{
|
||||
#ifdef HAS_PETSC
|
||||
#ifdef HAS_SLEPC
|
||||
SlepcFinalize();
|
||||
#endif
|
||||
#ifdef HAS_PETSC
|
||||
//PetscFinalize();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -562,6 +562,8 @@ bool PETScMatrix::solve (SystemVector& B, bool newLHS)
|
||||
bool PETScMatrix::solveEig(PETScMatrix& B, RealArray& val,
|
||||
Matrix& vec, int nv, real shift, int iop)
|
||||
{
|
||||
#ifdef HAS_SLEPC
|
||||
return false;
|
||||
int i;
|
||||
ST st;
|
||||
PetscInt m, n, nconv;
|
||||
@@ -614,6 +616,8 @@ bool PETScMatrix::solveEig(PETScMatrix& B, RealArray& val,
|
||||
EPSDestroy(eps);
|
||||
|
||||
return true;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif // HAS_PETSC
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#ifdef HAS_PETSC
|
||||
#include "LinSolParams.h"
|
||||
#include "petscksp.h"
|
||||
#endif
|
||||
#ifdef HAS_SLEPC
|
||||
#include "slepceps.h"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#if defined(HAS_SUPERLU_MT)
|
||||
#include "superlu/pdsp_defs.h"
|
||||
#elif defined(HAS_SUPERLU)
|
||||
#include "slu_ddefs.h"
|
||||
#include "superlu/slu_ddefs.h"
|
||||
#endif
|
||||
#ifdef HAS_SAMG
|
||||
#include "samg.h"
|
||||
|
||||
114
src/Makefile
114
src/Makefile
@@ -1,114 +0,0 @@
|
||||
# $Id: Makefile,v 1.49 2011-02-08 13:10:06 rho Exp $
|
||||
#===============================================================================
|
||||
#
|
||||
# File: Makefile
|
||||
#
|
||||
# Created: Jan 12 2010
|
||||
#
|
||||
# Author: Knut Morten Okstad / SINTEF
|
||||
#
|
||||
# Description:
|
||||
# Makefile for the spline-based isogeometric finite element toolbox, IFEM.
|
||||
#
|
||||
#===============================================================================
|
||||
|
||||
# Comment in this line if PETSc and SLEPc are used
|
||||
#include ${SLEPC_DIR}/conf/slepc_common_variables
|
||||
|
||||
FSRC = Eig/eig_drv1.f Eig/eig_drv2.f Eig/eig_drv3.f \
|
||||
Eig/eig_drv4.f Eig/eig_drv5.f Eig/eig_drv6.f
|
||||
CSRC = SIM/SIMinput.C SIM/SIMbase.C SIM/SIM3D.C SIM/SIM2D.C SIM/SIM1D.C \
|
||||
SIM/NonLinSIM.C SIM/SIMparameters.C ASM/Lagrange.C \
|
||||
ASM/AlgEqSystem.C ASM/ASMbase.C ASM/ASMmxBase.C ASM/ASMstruct.C \
|
||||
ASM/ASMs3D.C ASM/ASMs3DLag.C ASM/ASMs3DSpec.C \
|
||||
ASM/ASMs3Dmx.C ASM/ASMs3DmxLag.C \
|
||||
ASM/ASMs2D.C ASM/ASMs2DLag.C ASM/ASMs2DSpec.C \
|
||||
ASM/ASMs2Dmx.C ASM/ASMs2DmxLag.C \
|
||||
ASM/ASMs1D.C ASM/ASMs1DLag.C ASM/ASMs1DSpec.C \
|
||||
Integrands/AnalyticSolutions.C Integrands/AnalyticSolutionsStokes.C \
|
||||
Integrands/Poisson.C \
|
||||
Integrands/LinearElasticity.C Integrands/Elasticity.C Integrands/Stokes.C \
|
||||
Integrands/StabilizedStokes.C Integrands/StabilizedNavierStokes.C \
|
||||
Integrands/NavierStokesG2.C Integrands/NavierStokesG2CN.C \
|
||||
Integrands/NavierStokesG2MP.C Integrands/NavierStokesG2GenTheta.C \
|
||||
Integrands/ChorinVelPred.C Integrands/ChorinVelPredBE.C \
|
||||
Integrands/ChorinVelPredBDF2.C \
|
||||
Integrands/ChorinPressCorr.C Integrands/ChorinVelCorr.C \
|
||||
LinAlg/SystemMatrix.C LinAlg/DenseMatrix.C LinAlg/SPRMatrix.C \
|
||||
LinAlg/SparseMatrix.C LinAlg/PETScMatrix.C LinAlg/LinSolParams.C \
|
||||
LinAlg/LinAlgInit.C LinAlg/MatVec.C LinAlg/SAM.C \
|
||||
Eig/EigSolver.C ASM/SAMpatch.C ASM/SAMpatchPara.C ASM/GlbNorm.C \
|
||||
Utility/CoordinateMapping.C Utility/MPC.C \
|
||||
Utility/GaussQuadrature.C Utility/Legendre.C \
|
||||
Utility/ElementBlock.C Utility/VTF.C \
|
||||
Utility/Vec3Oper.C Utility/Tensor.C Utility/Function.C \
|
||||
Utility/Utilities.C Utility/Profiler.C Utility/Functions.C \
|
||||
Utility/AnaSol.C
|
||||
|
||||
OBJS = $(CSRC:.C=.o) $(FSRC:.f=.o)
|
||||
HDRS = $(CSRC:.C=.h) SIM/SIMenums.h SIM/Property.h \
|
||||
ASM/TimeDomain.h ASM/ElmMats.h ASM/ElmNorm.h \
|
||||
ASM/GlobalIntegral.h ASM/LocalIntegral.h ASM/IntegrandBase.h \
|
||||
Utility/MPCLess.h Utility/Vec3.h LinAlg/matrix.h
|
||||
|
||||
LIB = libSplineFEM.a
|
||||
|
||||
CXX = g++
|
||||
FC = gfortran
|
||||
|
||||
GOTOPT = -IGoTools/include
|
||||
VTFOPT = -DHAS_VTFAPI -IGLviewExpressWriter/include
|
||||
BLASOPT = -DUSE_CBLAS
|
||||
SLUOPT = -DHAS_SUPERLU -I/usr/include/superlu
|
||||
#SLUOPT = -DHAS_SUPERLU_MT -ISuperLU_MT/SRC
|
||||
#SAMOPT = -DHAS_SPR -DUSE_F77SAM
|
||||
#SAMGOPT = -DHAS_SAMG -DSAMG_UNIX_LINUX -DSAMG_LCASE_USCORE -ISAMG
|
||||
# Comment in this line if PETSc and SLEPc are used
|
||||
#PETSCOPT = -DHAS_PETSC $(CC_INCLUDES)
|
||||
# Comment in this line if parallel PETSc and SLEPc are used
|
||||
#PETSCOPT = -DHAS_PETSC -DPARALLEL_PETSC $(CC_INCLUDES)
|
||||
|
||||
#CDEBUG = -g -DINDEX_CHECK -DSP_DEBUG=3
|
||||
CDEBUG = -O2
|
||||
|
||||
#FFLAGS = -g
|
||||
FFLAGS = -O3 -funroll-loops
|
||||
CXXFLAGS = $(CDEBUG) -Dreal=double -DepsZ=1.0e-12 -DPROFILE_LEVEL=3 \
|
||||
-ISIM -IASM -IEig -IIntegrands -ILinAlg -IUtility \
|
||||
$(GOTOPT) $(SAMOPT) $(SAMGOPT) $(SLUOPT) $(PETSCOPT) $(BLASOPT) \
|
||||
$(VTFOPT)
|
||||
|
||||
all: $(LIB)
|
||||
|
||||
libs:
|
||||
if [ -d ARPACK ]; cd ARPACK; make lib DIRS='$(PWD)/ARPACK/SRC $(PWD)/ARPACK/UTIL'
|
||||
if [ -d SAM ]; then cd SAM/ASM; make; cd ../SPR; make; fi
|
||||
if [ -d SuperLU ]; then cd SuperLU/SRC; make double; fi
|
||||
if [ -d SuperLU_MT ]; then cd SuperLU_MT/SRC; make double; fi
|
||||
if [ -d SAMG ]; then cd SAMG/samg; make; fi
|
||||
if [ -d GLviewExpressWriter ]; then \
|
||||
cd GLviewExpressWriter/source; make install; fi
|
||||
|
||||
$(LIB): $(OBJS) Makefile
|
||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS)
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile > /dev/null
|
||||
mv Makefile.tmp Makefile
|
||||
|
||||
depend:
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile > /dev/null
|
||||
$(CXX) -M $(CXXFLAGS) $(CSRC) >> Makefile.tmp
|
||||
mv Makefile Makefile.bak
|
||||
mv Makefile.tmp Makefile
|
||||
for dir in ASM Eig Integrands LinAlg SIM Utility; do \
|
||||
sed -i "/^[A-Za-z].*: $$dir/s/.*:/$$dir\/&/" Makefile; done
|
||||
|
||||
tar: clean
|
||||
cd Apps; make clean
|
||||
tar cfv SplineFEM.tar README Makefile $(FSRC) $(CSRC) $(HDRS) \
|
||||
Apps/Makefile Apps/*.[Ch]
|
||||
gzip SplineFEM.tar
|
||||
|
||||
# DO NOT DELETE
|
||||
@@ -1,69 +0,0 @@
|
||||
# $Id: Makefile.proto,v 1.3 2010-03-16 08:57:47 kmo Exp $
|
||||
#===============================================================================
|
||||
#
|
||||
# File: Makefile.proto
|
||||
#
|
||||
# Created: Oct 31 2008
|
||||
#
|
||||
# Author: Knut Morten Okstad / SINTEF
|
||||
#
|
||||
# Description:
|
||||
# Makefile for the spline-based elasticity solver (prototype), Linux platform.
|
||||
#
|
||||
#===============================================================================
|
||||
|
||||
CSRC = main_LinEl.C LinearEl.C VolumePatch.C LinEqSystem.C SAMSpline.C
|
||||
OBJS = $(CSRC:.C=.o)
|
||||
|
||||
PROGRAM = splineSolve.proto
|
||||
|
||||
MYLIB = -L. -lSplineFEM
|
||||
GOTOPT = -IGoTools/include
|
||||
GOTLIB = -LGoTools/lib -lGoTrivariate -lGoToolsCore
|
||||
BLASOPT = -DUSE_CBLAS
|
||||
BLASLIB = -LARPACK -larpack -llapack -lblas
|
||||
SLUOPT = -DHAS_SUPERLU -ISuperLU/SRC
|
||||
SLULIB = -LSuperLU/lib -lsuperlu
|
||||
SAMOPT = -DHAS_SPR -DUSE_F77SAM
|
||||
SAMLIB = -LSAM -lSPR -lASM
|
||||
SAMGOPT = -DHAS_SAMG -DSAMG_UNIX_LINUX -DSAMG_LCASE_USCORE -ISAMG
|
||||
SAMGLIB = -LSAMG/samg -lamg_coo
|
||||
VTFOPT = -DHAS_VTFAPI -IGLviewExpressWriter/include
|
||||
VTFLIB = -LGLviewExpressWriter/lib -lVTFExpressAPI
|
||||
LIBS = $(MYLIB) $(GOTLIB) $(SAMLIB) $(SAMGLIB) $(VTFLIB) $(SLULIB) $(BLASLIB)
|
||||
|
||||
CXX = g++
|
||||
|
||||
#CDEBUG = -g -DINDEX_CHECK -DSP_DEBUG=3
|
||||
CDEBUG = -O2
|
||||
|
||||
CXXFLAGS = $(CDEBUG) -Dreal=double -IIntegrands -IEig -ILinAlg -IUtility \
|
||||
$(GOTOPT) $(BLASOPT)
|
||||
|
||||
all: $(PROGRAM)
|
||||
|
||||
libs:
|
||||
cd ARPACK; make lib DIRS='$(PWD)/ARPACK/SRC $(PWD)/ARPACK/UTIL'
|
||||
if [ -d SAM ]; then cd SAM/ASM; make; cd ../SPR; make; fi
|
||||
if [ -d SuperLU ]; then cd SuperLU/SRC; make double; fi
|
||||
if [ -d SAMG ]; then cd SAMG/samg; make; fi
|
||||
if [ -d GLviewEpxressWriter ]; then \
|
||||
cd GLviewExpressWriter/source; make install; fi
|
||||
|
||||
$(PROGRAM): $(OBJS) Makefile
|
||||
$(CXX) -o $@ $(OBJS) $(LIBS) -lgfortran
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS)
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile.proto > /dev/null
|
||||
mv Makefile.tmp Makefile.proto
|
||||
|
||||
depend:
|
||||
sed '1,/^# DO NOT DELETE/w Makefile.tmp' < Makefile.proto > /dev/null
|
||||
$(CXX) -M $(CXXFLAGS) $(MAIN) $(CSRC) >> Makefile.tmp
|
||||
mv Makefile.proto Makefile.bak
|
||||
mv Makefile.tmp Makefile.proto
|
||||
for dir in Eig LinAlg Utility; do \
|
||||
sed -i "/^[A-Za-z].*: $$dir/s/.*:/$$dir\/&/" Makefile.proto; done
|
||||
|
||||
# DO NOT DELETE
|
||||
Reference in New Issue
Block a user