diff --git a/configure.ac b/configure.ac
index 91242b72b446585360eba0f5490cbadd9af2a9e2..a3921e37fc031a04a8f47261efefdf3dcf91daca 100644
--- a/configure.ac
+++ b/configure.ac
@@ -150,6 +150,8 @@ AC_CHECK_LIB(quadmath, sinq, [AC_DEFINE(HAVE_LIBQUADMATH,[],[Have quad math lib]
 AC_SUBST(OPENMP_CFLAGS)
 AC_SUBST(OPENMP_LDFLAGS)
 
+echo "$OPENMP_CFLAGS" > openmp_flags
+
 ########
 
 ## Enable scan coverty
diff --git a/example/Numerics/Stoke_flow/1_3D_incompressible/Makefile b/example/Numerics/Stoke_flow/1_3D_incompressible/Makefile
index a1e97c05ca5515c6bee845f11beb4918268dda4d..9c140474e01096c6caec16ac50405fdaffda7a12 100644
--- a/example/Numerics/Stoke_flow/1_3D_incompressible/Makefile
+++ b/example/Numerics/Stoke_flow/1_3D_incompressible/Makefile
@@ -8,7 +8,7 @@ OBJ_EIGEN = main_eigen.o
 OBJ_PETSC = main_petsc.o
 
 %.o: %.cpp
-	$(CC) -fext-numeric-literals  -O3 -c --std=c++11 -o $@ $< $(INCLUDE_PATH)
+	$(CC) -fopenmp -fext-numeric-literals  -O3 -c --std=c++11 -o $@ $< $(INCLUDE_PATH)
 
 all: stokes_3d_eigen stokes_3d_petsc
 
diff --git a/install b/install
index 70799d68cc492a31eb0e20e07b13b12998ae5652..776b7382ac3bf74c3350737fb340a11a654270dc 100755
--- a/install
+++ b/install
@@ -6,6 +6,7 @@ source script/show_solutions
 source script/pre_req
 source script/remove_old
 source script/set_mpi
+source script/conf_PETSC
 
 ## Check that your home is not empty
 
@@ -166,48 +167,6 @@ fi
 lin_alg_dir=""
 lin_alg_lib=""
 lin_alg_inc=""
-if [ -d "$i_dir/PETSC" ]; then
-    configure_options="$configure_options --with-petsc=$i_dir/PETSC "
-    lin_alg_dir="$lin_alg_dir -L$i_dir/PETSC/lib"
-    lin_alg_lib="$lin_alg_lib -lpetsc"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/PETSC/include"
-fi
-if [ -d "$i_dir/HYPRE" ]; then
-    lin_alg_dir="$lin_alg_dir -L$i_dir/HYPRE/lib"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/HYPRE/include"
-fi
-if [ -d "$i_dir/MUMPS" ]; then
-    lin_alg_dir="$lin_alg_dir -L$i_dir/MUMPS/lib"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/MUMPS/include"
-fi
-if [ -d "$i_dir/OPENBLAS" ]; then
-    lin_alg_dir="$lin_alg_dir -L$i_dir/OPENBLAS/lib"
-    lin_alg_lib="$lin_alg_lib -lopenblas"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/OPENBLAS/include"
-    configure_blas_option="--with-blas=-L$i_dir/OPENBLAS/lib -lopenblas"
-fi
-if [ -d "$i_dir/SCALAPACK" ]; then
-    lin_alg_dir="$lin_alg_dir -L$i_dir/SCALAPACK/lib"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/SCALAPACK/include"
-fi
-if [ -d "$i_dir/SUPERLU_DIST" ]; then
-    lin_alg_dir="$lin_alg_dir -L$i_dir/SUPERLU_DIST/lib"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/SUPERLU_DIST/include"
-fi
-if [ -d "$i_dir/TRILINOS" ]; then
-    lin_alg_dir="$lin_alg_dir -L$i_dir/TRILINOS/lib"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/TRILINOS/include"
-fi
-if [ -d "$i_dir/SUITESPARSE" ]; then
-    lin_alg_dir="$lin_alg_dir -L$i_dir/SUITESPARSE/lib"
-    lin_alg_inc="$lin_alg_inc -I$i_dir/SUITESPARSE/include"
-    lin_alg_lib="$lin_alg_lib -lumfpack -lamd -lbtf -lcamd -lccolamd -lcholmod -lcolamd -lcxsparse -lklu -ldl -lrbio -lspqr -lsuitesparseconfig"
-    configure_options="$configure_options --with-suitesparse=$i_dir/SUITESPARSE "
-fi
-if [ -d "$i_dir/EIGEN" ]; then
-    configure_options=" $configure_options --with-eigen=$i_dir/EIGEN "
-    lin_alg_inc="$lin_alg_inc -I$i_dir/EIGEN"
-fi
 if [ -d "$i_dir/METIS" ]; then
     configure_options=" $configure_options --with-metis=$i_dir/METIS "
 fi
@@ -259,7 +218,7 @@ LIBHILBERT_installed=0
 conf_err=1
 
 if [ $install_req -eq 0 ]; then
-    ./configure $options $configure_options $configure_blas_option
+    ./configure $options $configure_options "$configure_blas_option"
 else
     while [ $conf_err -ne 0 ]
     do
@@ -332,24 +291,21 @@ else
 
     if [ x"$inst_lin_alg" == x"y" ]; then
         ./script/install_EIGEN.sh $i_dir $ncore
-        if [ $? -eq 0 ]; then
-            configure_options=" $configure_options --with-eigen=$i_dir/EIGEN --with-suitesparse=$i_dir/SUITESPARSE  "
-            configure_blas_option=" --with-blas=\"$i_dir/OPENBLAS/lib -lopenblas\"  "
-        fi
         ./script/install_PETSC.sh $i_dir $ncore
-        if [ $? -eq 0 ]; then
-            configure_options=" $configure_options --with-petsc=$i_dir/PETSC "
-        fi
     fi
 
-    ./configure $options $configure_options $configure_blas_option
+	### collect PETSC configuration options
+	conf_PETSC
+
+    ./configure $options $configure_options "$configure_blas_option"
 
 fi
 
 ### Create example.mk
 install_base=$(cat install_dir)
-echo "INCLUDE_PATH=-I. -I$install_base/openfpm_numerics/include -I$install_base/openfpm_pdata/include/config -I$install_base/openfpm_pdata/include -I$install_base/openfpm_data/include -I$install_base/openfpm_vcluster/include -I$install_base/openfpm_io/include -I$install_base/openfpm_devices/include -I$i_dir/METIS/include -I$i_dir/PARMETIS/include -I$i_dir/BOOST/include -I$i_dir/HDF5/include -I$i_dir/LIBHILBERT/include  $lin_alg_inc" > example.mk
-echo "LIBS_PATH= -L$install_base/openfpm_devices/lib -L$install_base/openfpm_pdata/lib  -L$install_base/openfpm_vcluster/lib -L$i_dir/METIS/lib -L$i_dir/PARMETIS/lib  -L$i_dir/BOOST/lib -L$i_dir/HDF5/lib -L$i_dir/LIBHILBERT/lib  $lin_alg_dir" >> example.mk
+openmp_flags=$(cat openmp_flags)
+echo "INCLUDE_PATH= $openmp_flags  -I. -I$install_base/openfpm_numerics/include -I$install_base/openfpm_pdata/include/config -I$install_base/openfpm_pdata/include -I$install_base/openfpm_data/include -I$install_base/openfpm_vcluster/include -I$install_base/openfpm_io/include -I$install_base/openfpm_devices/include -I$i_dir/METIS/include -I$i_dir/PARMETIS/include -I$i_dir/BOOST/include -I$i_dir/HDF5/include -I$i_dir/LIBHILBERT/include  $lin_alg_inc" > example.mk
+echo "LIBS_PATH= $openmp_flags -L$install_base/openfpm_devices/lib -L$install_base/openfpm_pdata/lib  -L$install_base/openfpm_vcluster/lib -L$i_dir/METIS/lib -L$i_dir/PARMETIS/lib  -L$i_dir/BOOST/lib -L$i_dir/HDF5/lib -L$i_dir/LIBHILBERT/lib  $lin_alg_dir" >> example.mk
 echo "LIBS=-lvcluster -lofpm_pdata -lofpmmemory -lparmetis -lmetis -lboost_iostreams -lhdf5 -llibhilbert  $lin_alg_lib" >> example.mk
 echo "LIBS_SE2=-lvcluster -lofpmmemory_se2 -lparmetis -lmetis -lboost_iostreams -lhdf5 -llibhilbert $lin_alg_lib" >> example.mk
 cp example.mk src/example.mk
diff --git a/script/conf_PETSC b/script/conf_PETSC
new file mode 100755
index 0000000000000000000000000000000000000000..279caa26659af3c15efbcc8dcac662197b250878
--- /dev/null
+++ b/script/conf_PETSC
@@ -0,0 +1,48 @@
+#! /bin/bash
+
+function conf_PETSC()
+{
+if [ -d "$i_dir/PETSC" ]; then
+    configure_options="$configure_options --with-petsc=$i_dir/PETSC "
+    lin_alg_dir="$lin_alg_dir -L$i_dir/PETSC/lib"
+    lin_alg_lib="$lin_alg_lib -lpetsc"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/PETSC/include"
+fi
+if [ -d "$i_dir/HYPRE" ]; then
+    lin_alg_dir="$lin_alg_dir -L$i_dir/HYPRE/lib"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/HYPRE/include"
+fi
+if [ -d "$i_dir/MUMPS" ]; then
+    lin_alg_dir="$lin_alg_dir -L$i_dir/MUMPS/lib"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/MUMPS/include"
+fi
+if [ -d "$i_dir/OPENBLAS" ]; then
+    lin_alg_dir="$lin_alg_dir -L$i_dir/OPENBLAS/lib"
+    lin_alg_lib="$lin_alg_lib -lopenblas"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/OPENBLAS/include"
+    configure_blas_option="--with-blas=-L$i_dir/OPENBLAS/lib -lopenblas"
+fi
+if [ -d "$i_dir/SCALAPACK" ]; then
+    lin_alg_dir="$lin_alg_dir -L$i_dir/SCALAPACK/lib"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/SCALAPACK/include"
+fi
+if [ -d "$i_dir/SUPERLU_DIST" ]; then
+    lin_alg_dir="$lin_alg_dir -L$i_dir/SUPERLU_DIST/lib"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/SUPERLU_DIST/include"
+fi
+if [ -d "$i_dir/TRILINOS" ]; then
+    lin_alg_dir="$lin_alg_dir -L$i_dir/TRILINOS/lib"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/TRILINOS/include"
+fi
+if [ -d "$i_dir/SUITESPARSE" ]; then
+    lin_alg_dir="$lin_alg_dir -L$i_dir/SUITESPARSE/lib"
+    lin_alg_inc="$lin_alg_inc -I$i_dir/SUITESPARSE/include"
+    lin_alg_lib="$lin_alg_lib -lumfpack -lamd -lbtf -lcamd -lccolamd -lcholmod -lcolamd -lcxsparse -lklu -ldl -lrbio -lspqr -lsuitesparseconfig"
+    configure_options="$configure_options --with-suitesparse=$i_dir/SUITESPARSE "
+fi
+if [ -d "$i_dir/EIGEN" ]; then
+    configure_options=" $configure_options --with-eigen=$i_dir/EIGEN "
+    lin_alg_inc="$lin_alg_inc -I$i_dir/EIGEN"
+fi
+}
+
diff --git a/script/install_PETSC.sh b/script/install_PETSC.sh
index a3bbfb8f436034836b63a5243f7324495c17c842..e6537c72d9178fc24453c7c9d408363e9754a67b 100755
--- a/script/install_PETSC.sh
+++ b/script/install_PETSC.sh
@@ -298,4 +298,7 @@ make install
 # if empty remove the folder
 if [ ! "$(ls -A $1/PETSC)" ]; then
    rm -rf $1/PETSC
+else
+   exit 0
 fi
+