diff --git a/CMakeLists.txt b/CMakeLists.txt
index c342d580f8a8002d05a1ca9c03954980026709a7..b25f6220e0feb38db355b698ae6d60b929053a53 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,6 +11,9 @@ set(SE_CLASS2 CACHE BOOL "Activate compilation with SE_CLASS2")
 set(SE_CLASS3 CACHE BOOL "Activate compilation with SE_CLASS3")
 set(ENV{HDF5_ROOT} ${HDF5_ROOT})
 set(OPENFPM_PDATA_DIR CACHE PATH "OpenFPM_pdata dirs")
+set(PETSC_ROOT CACHE PATH "If compiling with linear algebra indicate the PETSC root directory")
+set(ENV{PETSC_DIR} ${PETSC_ROOT})
+
 
 set (CMAKE_CXX_STANDARD 11)
 set (CMAKE_CUDA_STANDARD 11)
@@ -42,6 +45,7 @@ find_package(Boost 1.66.0 REQUIRED COMPONENTS unit_test_framework iostreams prog
 find_package(MPI REQUIRED)
 find_package(HDF5 REQUIRED)
 find_package(TinyObjLoader )
+find_package(PETSc)
 
 if(CUDA_FOUND)
 	set(OPENFPM_INIT_FILE "initialize/initialize_wrapper_cuda.cu")
@@ -73,6 +77,10 @@ else()
 	message( FATAL_ERROR "MPI is required in order to install OpenFPM" )
 endif()
 
+if(PETSC_FOUND)
+        set(DEFINE_HAVE_PETSC "#define HAVE_PETSC")
+endif()
+
 if (Boost_FOUND)
 	set(DEFINE_HAVE_BOOST "#define HAVE_BOOST")
 	set(DEFINE_HAVE_BOOST_IOSTREAMS "#define HAVE_BOOST_IOSTREAMS")