diff --git a/examples/lens_immiscible_ecfv_ad_23.cpp b/examples/lens_immiscible_ecfv_ad_23.cpp
new file mode 100644
index 000000000..b3b7f89dc
--- /dev/null
+++ b/examples/lens_immiscible_ecfv_ad_23.cpp
@@ -0,0 +1,91 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*
+ This file is part of the Open Porous Media project (OPM).
+
+ OPM is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ OPM is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OPM. If not, see .
+
+ Consult the COPYING file in the top-level source directory of this
+ module for the precise wording of the license and the list of
+ copyright holders.
+*/
+/*!
+ * \file
+ *
+ * \brief Two-phase test for the immiscible model which uses the element-centered finite
+ * volume discretization in conjunction with automatic differentiation
+ */
+#include "config.h"
+
+#include "lens_immiscible_ecfv_ad.hh"
+
+#include
+#include
+
+BEGIN_PROPERTIES
+
+// Use Dune-grid's GeometryGrid< YaspGrid >
+SET_PROP(LensProblemEcfvAd, Grid )
+{
+ template< class ctype, unsigned int dim, unsigned int dimworld >
+ class IdentityCoordFct
+ : public Dune::AnalyticalCoordFunction
+ < ctype, dim, dimworld, IdentityCoordFct< ctype, dim, dimworld > >
+ {
+ typedef IdentityCoordFct< ctype, dim, dimworld > This;
+ typedef Dune::AnalyticalCoordFunction< ctype, dim, dimworld, This > Base;
+
+ public:
+ typedef typename Base :: DomainVector DomainVector;
+ typedef typename Base :: RangeVector RangeVector;
+
+ template< typename... Args >
+ IdentityCoordFct( Args&... )
+ {}
+
+ RangeVector operator()(const DomainVector& x) const
+ {
+ RangeVector y;
+ evaluate( x, y );
+ return y;
+ }
+
+ void evaluate( const DomainVector &x, RangeVector &y ) const
+ {
+ y = 0;
+ for( unsigned int i = 0; i MyYaspGrid;
+
+public:
+ //typedef MyYaspGrid type;
+ typedef Dune::GeometryGrid< MyYaspGrid,
+ IdentityCoordFct< typename MyYaspGrid::ctype,
+ MyYaspGrid::dimension,
+ MyYaspGrid::dimensionworld+1> > type;
+};
+
+END_PROPERTIES
+
+#include
+
+int main(int argc, char **argv)
+{
+ typedef TTAG(LensProblemEcfvAd) ProblemTypeTag;
+ return Ewoms::start(argc, argv);
+}