aboutsummaryrefslogtreecommitdiff
path: root/petsc.sh
blob: ff2472f80ee916a34681fdd370d2970cf097b0bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#! /bin/sh
#/*@@
#  @file   setup.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
}


choose_petsc=`echo $PETSC | tr '[:upper:]' '[:lower:]'`

# Work out PETSc's installation directory
if [ -z "$PETSC_DIR" ]; then
  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
     exit 2
  fi
fi


# Check what architecture is available
if [ -z "$PETSC_ARCH" ]; then
  if [ ! -d "$PETSC_DIR/lib/libg" ]; then
    exit 2
  fi
  PETSC_ARCH=`/bin/ls -1 $PETSC_DIR/lib/libg | head -n1`
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 "  No PETSc support for architecture '$PETSC_ARCH' !"
                 echo '  Please file a bug report to cactusmaint@cactuscode.org.'
                 exit 2
  esac
fi

# Set the PETSc libs, libdirs and includedirs
PETSC_LIB_DIRS='$(PETSC_DIR)/lib/libO/$(PETSC_ARCH)'
PETSC_INC_DIRS='$(PETSC_DIR)/include $(PETSC_DIR)/bmake/$(PETSC_ARCH)'
PETSC_LIBS="petscts petscsnes petscsles petscdm petscmat petscvec petsc $PETSC_ARCH_LIBS"

echo "BEGIN DEFINE"
echo "#define CCTK_PETSC 1"
echo "END DEFINE"

echo "BEGIN DEFINITION"
echo "HAVE_PETSC     = 1"
echo "PETSC_DIR      = $PETSC_DIR"
echo "PETSC_ARCH     = $PETSC_ARCH"
echo "PETSC_LIBS     = $PETSC_LIBS"
echo "PETSC_LIB_DIRS = $PETSC_LIB_DIRS"
echo "PETSC_INC_DIRS = $PETSC_INC_DIRS"
echo "END DEFINITION"


echo 'LIBRARY $(PETSC_LIBS) X11 $(MPI_LIBS)'
echo 'LIBRARY_DIRECTORY $(PETSC_LIB_DIRS) $(X_LIB_DIR)'
echo 'INCLUDE_DIRECTORY $(PETSC_INC_DIRS)'