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:
akva
2011-02-17 16:09:06 +00:00
committed by Knut Morten Okstad
parent 9333737c50
commit 189a1e34df
33 changed files with 716 additions and 369 deletions

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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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/

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
View 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
View 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>.

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

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

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

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

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

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

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

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

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

View File

@@ -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
}

View File

@@ -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

View File

@@ -19,6 +19,8 @@
#ifdef HAS_PETSC
#include "LinSolParams.h"
#include "petscksp.h"
#endif
#ifdef HAS_SLEPC
#include "slepceps.h"
#endif

View File

@@ -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"

View File

@@ -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

View File

@@ -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