diff --git a/CMakeLists.txt b/CMakeLists.txt
index c62529345b6975043d9021cac0465bee94adcad2..47c1b5dacf2ec22a7c9fb576a02da7a1dadbf528 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,6 +56,10 @@ OPTION(OGS_NO_EXTERNAL_LIBS "Builds OGS without any external dependencies." OFF)
 # Linear solvers
 OPTION(OGS_USE_LIS "Use Lis" OFF)
 
+# Eigen
+OPTION(OGS_USE_EIGEN "Use EIGEN for local matrix and vector" ON)
+OPTION(EIGEN_NO_DEBUG "Disables Eigen's assertions" ON)
+
 # Logging
 OPTION(OGS_DISABLE_LOGGING "Disables all logog messages." OFF)
 
@@ -105,6 +109,15 @@ IF(OGS_USE_LIS)
     ADD_DEFINITIONS(-DUSE_LIS)
 ENDIF()
 
+IF(OGS_USE_EIGEN)
+#	ADD_DEFINITIONS(-DEIGEN_DEFAULT_DENSE_INDEX_TYPE=std::size_t)
+	ADD_DEFINITIONS(-DEIGEN_INITIALIZE_MATRICES_BY_ZERO)
+	ADD_DEFINITIONS(-DOGS_USE_EIGEN)
+	IF (EIGEN_NO_DEBUG)
+		ADD_DEFINITIONS(-DEIGEN_NO_DEBUG)
+	ENDIF()
+ENDIF()
+
 ADD_SUBDIRECTORY( AssemblerLib )
 ADD_SUBDIRECTORY( BaseLib )
 # TODO This is a hack but we have to make sure that Boost is built first
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index 2cc014e3b5ea33f3fdfa546adc21b1bf2203af96..1295af1ffbdc6ade270e946b93159b2c504197fa 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -163,5 +163,10 @@ ENDIF() # Shapelib_FOUND
 
 ## lis ##
 IF(OGS_USE_LIS)
-    FIND_PACKAGE( LIS REQUIRED )
+	FIND_PACKAGE( LIS REQUIRED )
+ENDIF()
+
+## Eigen ##
+IF(OGS_USE_EIGEN)
+	FIND_PACKAGE( Eigen3 REQUIRED )
 ENDIF()