aboutsummaryrefslogtreecommitdiff
path: root/PETSc.sh
diff options
context:
space:
mode:
authorschnetter <schnetter@fc86f234-e40e-4302-a95b-5e02f8c343c9>2005-11-21 23:18:03 +0000
committerschnetter <schnetter@fc86f234-e40e-4302-a95b-5e02f8c343c9>2005-11-21 23:18:03 +0000
commit57728aa4a31603a561cc3fdf5b510565d96a8d3b (patch)
tree696d353374f3b31d44cedab4d4cd1486532999fb /PETSc.sh
parent2e0f6cfd36cb8ec59d6731195525408375925a74 (diff)
Rename petsc.sh to PETSc.sh
git-svn-id: http://svn.cactuscode.org/arrangements/CactusExternal/PETSc/trunk@20 fc86f234-e40e-4302-a95b-5e02f8c343c9
Diffstat (limited to 'PETSc.sh')
-rwxr-xr-xPETSc.sh115
1 files changed, 115 insertions, 0 deletions
diff --git a/PETSc.sh b/PETSc.sh
new file mode 100755
index 0000000..af1953e
--- /dev/null
+++ b/PETSc.sh
@@ -0,0 +1,115 @@
+#! /bin/sh
+#/*@@
+# @file petsc.sh
+# @date Fri 29 Aug 2003
+# @author Thomas Radke
+# @desc
+# Setup for an external PETSc installation
+# @enddesc
+# @@*/
+
+# /*@@
+# @routine CCTK_Search
+# @date Wed Jul 21 11:16:35 1999
+# @author Tom Goodale
+# @desc
+# Used to search for something in various directories
+# @enddesc
+#@@*/
+
+CCTK_Search()
+{
+ eval $1=""
+ if test $# -lt 4 ; then
+ cctk_basedir=""
+ else
+ cctk_basedir="$4/"
+ fi
+ for cctk_place in $2
+ do
+# echo $ac_n " Looking in $cctk_place""...$ac_c" #1>&6
+ if test -r "$cctk_basedir$cctk_place/$3" ; then
+# echo "$ac_t""... Found" #1>&6
+ eval $1="$cctk_place"
+ break
+ fi
+ if test -d "$cctk_basedir$cctk_place/$3" ; then
+# echo "$ac_t""... Found" #1>&6
+ eval $1="$cctk_place"
+ break
+ fi
+# echo "$ac_t"" No" #1>&6
+ done
+
+ return
+}
+
+
+# Check that MPI is there
+if [ -z "$MPI" -o "$MPI" = 'none' ]; then
+ echo "BEGIN ERROR"
+ echo 'Thorn PETSc requires MPI. Please configure with MPI ' \
+ 'or remove PETSc from your configuration ThornList.'
+ echo "END ERROR"
+ exit 2
+fi
+
+# Work out PETSc's installation directory
+if [ -z "$PETSC_DIR" ]; then
+ echo "BEGIN MESSAGE"
+ echo 'PETSc selected but no PETSC_DIR set. Checking some places...'
+ echo "END MESSAGE"
+ CCTK_Search PETSC_DIR '/usr /usr/local /usr/local/petsc /usr/local/packages/petsc /usr/local/apps/petsc' include/petsc.h
+ if [ -z "$PETSC_DIR" ] ; then
+ echo "BEGIN ERROR"
+ echo 'Thorn PETSc requires an external installation of the PETSc ' \
+ 'library. Please set PETSC_DIR to the directory of this ' \
+ 'installation, or remove PETSc from your configuration ThornList.'
+ echo "END ERROR"
+ exit 2
+ fi
+ echo "BEGIN MESSAGE"
+ echo "Found a PETSc package in $PETSC_DIR"
+ echo "END MESSAGE"
+else
+ echo "BEGIN MESSAGE"
+ echo "Using PETSc package in $PETSC_DIR"
+ echo "END MESSAGE"
+fi
+
+# Set platform-specific libraries
+if [ -z "$PETSC_ARCH_LIBS" ]; then
+ case "$PETSC_ARCH" in
+ alpha) PETSC_ARCH_LIBS='dxml' ;;
+ IRIX64) PETSC_ARCH_LIBS='fpe blas complib.sgimath' ;;
+ linux) PETSC_ARCH_LIBS='flapack fblas g2c mpich' ;;
+ linux_intel) PETSC_ARCH_LIBS='mkl_lapack mkl_def guide' ;;
+ linux-gnu) PETSC_ARCH_LIBS='mkl_lapack mkl_def guide' ;;
+ linux64_intel) PETSC_ARCH_LIBS='mkl_lapack mkl guide' ;;
+ rs6000_64) PETSC_ARCH_LIBS='essl' ;;
+ *) echo 'BEGIN ERROR'
+ echo "No PETSc support for architecture '$PETSC_ARCH'."
+ echo 'Please set the variable PETSC_ARCH_LIBS manually,'
+ echo 'and/or send a request to <cactusmaint@cactuscode.org>.'
+ echo 'END ERROR'
+ exit 2
+ esac
+fi
+
+# Set the PETSc libs, libdirs and includedirs
+PETSC_INC_DIRS='$(PETSC_DIR)/include $(PETSC_DIR)/bmake/$(PETSC_ARCH)'
+PETSC_LIB_DIRS='$(PETSC_DIR)/lib/libO/$(PETSC_ARCH)'
+PETSC_LIBS="petscts petscsnes petscsles petscdm petscmat petscvec petsc $PETSC_ARCH_LIBS"
+
+echo 'BEGIN MAKE_DEFINITION'
+echo "PETSC_DIR = $PETSC_DIR"
+echo "PETSC_ARCH = $PETSC_ARCH"
+echo "PETSC_INC_DIRS = $PETSC_INC_DIRS"
+echo "PETSC_LIB_DIRS = $PETSC_LIB_DIRS"
+echo "PETSC_LIBS = $PETSC_LIBS"
+echo 'END MAKE_DEFINITION'
+
+# Write the data out to the headers and makefiles
+echo 'INCLUDE_DIRECTORY $(PETSC_INC_DIRS)'
+echo 'LIBRARY_DIRECTORY $(PETSC_LIB_DIRS) $(X_LIB_DIR)'
+echo 'LIBRARY $(PETSC_LIBS) X11 $(MPI_LIBS)'