forked from pysit/pysit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install_petsc4py_linux.sh
183 lines (173 loc) · 4.4 KB
/
install_petsc4py_linux.sh
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#! /bin/bash
echo -n "Check if gcc is installed : "
Status=$(which gcc)
if [[ $Status == "" ]]; then
read -r -p "gcc is not install do you want to install it ? [y/N] " response
case $response in
[yY][eE][sS]|[yY])
sudo apt-get install gcc
;;
*)
exit
;;
esac
else
echo "OK"
fi
echo -n "Check if g++ is installed : "
Status=$(which g++)
if [[ $Status == "" ]]; then
read -r -p "g++ is not install do you want to install it ? [y/N] " response
case $response in
[yY][eE][sS]|[yY])
sudo apt-get install g++
;;
*)
exit
;;
esac
else
echo "OK"
fi
echo -n "Check if gfortran is installed : "
Status=$(which gfortran)
if [[ $Status == "" ]]; then
read -r -p "gfortran is not install do you want to install it ? [y/N] " response
case $response in
[yY][eE][sS]|[yY])
sudo apt-get install gfortran
;;
*)
exit
;;
esac
else
echo "OK"
fi
echo -n "Check if bison is installed : "
Status=$(which bison)
if [[ $Status == "" ]]; then
read -r -p "bison is not install do you want to install it ? [y/N] " response
case $response in
[yY][eE][sS]|[yY])
sudo apt-get install bison
;;
*)
exit
;;
esac
else
echo "OK"
fi
echo -n "Check if flex is installed : "
Status=$(which flex)
if [[ $Status == "" ]]; then
read -r -p "flex is not install do you want to install it ? [y/N] " response
case $response in
[yY][eE][sS]|[yY])
sudo apt-get install flex
;;
*)
exit
;;
esac
else
echo "OK"
fi
echo -n "Check if valgrind is installed : "
Status=$(which valgrind)
if [[ "$Status" == "" ]]; then
read -r -p "valgrind is not install do you want to install it ? [y/N] " response
case $response in
[yY][eE][sS]|[yY])
sudo apt-get install valgrind
;;
*)
exit
;;
esac
else
echo "OK"
fi
echo -n "Check if curl is installed : "
Status=$(which curl)
if [[ "$Status" == "" ]]; then
read -r -p "curl is not install do you want to install it ? [y/N] " response
case $response in
[yY][eE][sS]|[yY])
sudo apt-get install curl
;;
*)
exit
;;
esac
else
echo "OK"
fi
echo -n "Check if pip is installed : "
Status=$(which pip)
if [[ "$Status" == "" ]]; then
echo "pip is not install you have to install it in order to finish the installation"
exit
else
echo "OK"
fi
# Now we can start the installation of petsc
while [[ true ]]; do
read -p "Please specify an installation path or press enter to install petsc in the curent directory $(pwd) : " path_petsc
if [[ "$path_petsc" == "" ]]; then
break
elif [[ -d "$path_petsc" ]]; then
cd $path_petsc
break
else
echo "the path specified do not exit please re type it again"
fi
done
echo "dowloading petsc :"
#curl http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.9.1.tar.gz | tar xz
curl https://files.pythonhosted.org/packages/e6/6c/555ad15fd1f9f2d8a044577c2df9fe855a7cd0f47d2716ebf478a2ca0a37/petsc-3.9.1.tar.gz | tar xz
cd petsc-3.9.1
if [[ $? -ne 0 ]]; then
exit
fi
./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-cmake --download-fblaslapack --download-mpich --download-ptscotch --with-scalar-type=complex --download-metis --download-parmetis --download-suitesparse --download-triangle --download-superlu --download-superlu_dist --download-scalapack --download-mumps --with-shared-libraries --with-python --PETSC_ARCH=arch-linux
if [[ $? -ne 0 ]]; then
exit
fi
export PETSC_DIR=$(pwd)
export PETSC_ARCH=arch-linux
make all
if [[ $? -ne 0 ]]; then
exit
fi
make test
if [[ $? -ne 0 ]]; then
exit
fi
make streams NPMAX=8
if [[ $? -ne 0 ]]; then
exit
fi
export PATH=$PETSC_DIR/$PETSC_ARCH/bin:$PATH
export PATH=$PETSC_DIR/$PETSC_ARCH/lib:$PATH
export PATH=$PETSC_DIR/$PETSC_ARCH/include:$PATH
pip uninstall mpi4py
pip install mpi4py --user
echo "Installing petsc4py"
cd ..
curl https://files.pythonhosted.org/packages/91/8c/2c5d593b5dc7aff46bd56b7c71fc5550bd342c8295440eb8c9cb255f2e71/petsc4py-3.9.1.tar.gz | tar xz
cd petsc4py-3.9.1
python setup.py install
if [[ $? -ne 0 ]]; then
exit
fi
cd ..
rm -r petsc4py-3.9.1
#To insure that MPI4Py uses the right lib check the mpi.cfg
#it is in : your_anaconda_dir/lib/python2.7/site-packages/mpi4py/mpi.cfg
#it should be :
#mpicc = YOUR_PETSc_DIR/arch-linux/bin/mpicc
#mpicxx = YOUR_PETSc_DIR/arch-linux/bin/mpicxx
#mpif77 = YOUR_PETSc_DIR/arch-linux/bin/mpif77
#mpif90 = YOUR_PETSc_DIR/arch-linux/bin/mpif90