diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp
index 054015bfee0c402ad31b85dd7e783f4c453c46f7..e9d3bc5bc60df6b5df9fe465cbd3291db93cb33f 100644
--- a/Applications/ApplicationsLib/ProjectData.cpp
+++ b/Applications/ApplicationsLib/ProjectData.cpp
@@ -519,7 +519,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config,
             process = ProcessLib::LiquidFlow::createLiquidFlowProcess(
                 name, *_mesh_vec[0], std::move(jacobian_assembler),
                 _process_variables, _parameters, integration_order,
-                process_config);
+                process_config, _mesh_vec, output_directory);
         }
         else
 #endif
diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp
index e35096b916406af1f647e0b2094c1a27d9be0949..4ae75493d11566131ffbaa2284c62d7eb01ea1c5 100644
--- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp
+++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp
@@ -31,7 +31,9 @@ std::unique_ptr<Process> createLiquidFlowProcess(
     std::vector<ProcessVariable> const& variables,
     std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     unsigned const integration_order,
-    BaseLib::ConfigTree const& config)
+    BaseLib::ConfigTree const& config,
+    std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes,
+    std::string const& output_directory)
 {
     //! \ogs_file_param{prj__processes__process__type}
     config.checkConfigParameter("type", "LIQUID_FLOW");
@@ -99,11 +101,21 @@ std::unique_ptr<Process> createLiquidFlowProcess(
         INFO("The liquid flow is in homogeneous porous media.");
     }
 
+    std::unique_ptr<ProcessLib::SurfaceFluxData> surfaceflux;
+    auto calculatesurfaceflux_config =
+        //! \ogs_file_param{prj__processes__process__calculatesurfaceflux}
+        config.getConfigSubtreeOptional("calculatesurfaceflux");
+    if (calculatesurfaceflux_config)
+    {
+        surfaceflux = ProcessLib::SurfaceFluxData::createSurfaceFluxData(
+            *calculatesurfaceflux_config, meshes, output_directory);
+    }
+
     return std::make_unique<LiquidFlowProcess>(
         std::move(name), mesh, std::move(jacobian_assembler), parameters,
         integration_order, std::move(process_variables),
         std::move(secondary_variables), material_ids, gravity_axis_id, g,
-        reference_temperature, mat_config);
+        reference_temperature, mat_config, std::move(surfaceflux));
 }
 
 }  // namespace LiquidFlow
diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h
index 18adc164b64fded253b6e76ab645959ac68f9102..db1ff098a5d8b13d0ad6eb17ff8d7d615a190f5b 100644
--- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h
+++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h
@@ -26,6 +26,8 @@ std::unique_ptr<Process> createLiquidFlowProcess(
     std::vector<ProcessVariable> const& variables,
     std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     unsigned const integration_order,
-    BaseLib::ConfigTree const& config);
+    BaseLib::ConfigTree const& config,
+    std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes,
+    std::string const& output_directory);
 }  // namespace LiquidFlow
 }  // namespace ProcessLib
diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h
index d35c32b83640ae384004c3e5c4ff667e7fe36253..63a60f7737186c674ca6bd0c29ff4be954365929 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h
+++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h
@@ -54,6 +54,47 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
     }
 }
 
+template <typename ShapeFunction, typename IntegrationMethod,
+          unsigned GlobalDim>
+Eigen::Vector3d
+LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::getFlux(
+    MathLib::Point3d const& p_local_coords, double const t,
+    std::vector<double> const& local_x) const
+{
+    // eval dNdx and invJ at p
+    auto const fe =
+        NumLib::createIsoparametricFiniteElement<ShapeFunction,
+                                                 ShapeMatricesType>(_element);
+
+    typename ShapeMatricesType::ShapeMatrices shape_matrices(
+        ShapeFunction::DIM, GlobalDim, ShapeFunction::NPOINTS);
+
+    // Note: Axial symmetry is set to false here, because we only need dNdx
+    // here, which is not affected by axial symmetry.
+    fe.computeShapeFunctions(p_local_coords.getCoords(), shape_matrices,
+                             GlobalDim, false);
+
+    // create pos object to access the correct media property
+    ParameterLib::SpatialPosition pos;
+    pos.setElementID(_element.getID());
+    const int material_id = _material_properties.getMaterialID(pos);
+
+    double pressure = 0.0;
+    NumLib::shapeFunctionInterpolate(local_x, shape_matrices.N, pressure);
+    const Eigen::MatrixXd& permeability = _material_properties.getPermeability(
+        material_id, t, pos, _element.getDimension(), pressure,
+        _reference_temperature);
+    const double mu =
+        _material_properties.getViscosity(pressure, _reference_temperature);
+
+    Eigen::Vector3d flux(0.0, 0.0, 0.0);
+    flux.head<GlobalDim>() =
+        -permeability / mu * shape_matrices.dNdx *
+        Eigen::Map<const NodalVectorType>(local_x.data(), local_x.size());
+
+    return flux;
+}
+
 template <typename ShapeFunction, typename IntegrationMethod,
           unsigned GlobalDim>
 template <typename LaplacianGravityVelocityCalculator>
diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h
index 4cbd7559c7509eafa6779b3df2875bf3cebbaff1..7295ebc69905e4733d3594bc8673f39c226a8134 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h
+++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h
@@ -128,6 +128,12 @@ public:
                   std::vector<double>& local_K_data,
                   std::vector<double>& local_b_data) override;
 
+    /// Computes the flux in the point \c p_local_coords that is given in local
+    /// coordinates using the values from \c local_x.
+    Eigen::Vector3d getFlux(MathLib::Point3d const& p_local_coords,
+                            double const t,
+                            std::vector<double> const& local_x) const override;
+
     Eigen::Map<const Eigen::RowVectorXd> getShapeMatrix(
         const unsigned integration_point) const override
     {
diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp
index bc76bfd561e33acafc85352f224b087d041f089c..2daa63dbdc4716de6e5168a9e6b792c01f9fedf8 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp
+++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp
@@ -18,6 +18,8 @@
 #include "LiquidFlowLocalAssembler.h"
 #include "LiquidFlowMaterialProperties.h"
 #include "MeshLib/PropertyVector.h"
+// TODO(TF) used for output of flux, if output classes are ready this has to be changed
+#include "MeshLib/IO/writeMeshToFile.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
 
 namespace ProcessLib
@@ -37,7 +39,8 @@ LiquidFlowProcess::LiquidFlowProcess(
     int const gravitational_axis_id,
     double const gravitational_acceleration,
     double const reference_temperature,
-    BaseLib::ConfigTree const& config)
+    BaseLib::ConfigTree const& config,
+    std::unique_ptr<ProcessLib::SurfaceFluxData>&& surfaceflux)
     : Process(std::move(name), mesh, std::move(jacobian_assembler), parameters,
               integration_order, std::move(process_variables),
               std::move(secondary_variables)),
@@ -45,7 +48,8 @@ LiquidFlowProcess::LiquidFlowProcess(
       _gravitational_acceleration(gravitational_acceleration),
       _reference_temperature(reference_temperature),
       _material_properties(
-          createLiquidFlowMaterialProperties(config, parameters, material_ids))
+          createLiquidFlowMaterialProperties(config, parameters, material_ids)),
+      _surfaceflux(std::move(surfaceflux))
 {
     DBUG("Create Liquid flow process.");
 }
@@ -121,5 +125,39 @@ void LiquidFlowProcess::computeSecondaryVariableConcrete(const double t,
         x, _coupled_solutions);
 }
 
+Eigen::Vector3d LiquidFlowProcess::getFlux(
+    std::size_t const element_id,
+    MathLib::Point3d const& p,
+    double const t,
+    std::vector<GlobalVector*> const& x) const
+{
+    // fetch local_x from primary variable
+    std::vector<GlobalIndexType> indices_cache;
+    auto const r_c_indices = NumLib::getRowColumnIndices(
+        element_id, *_local_to_global_index_map, indices_cache);
+    constexpr int process_id = 0;  // monolithic scheme.
+    std::vector<double> local_x(x[process_id]->get(r_c_indices.rows));
+
+    return _local_assemblers[element_id]->getFlux(p, t, local_x);
+}
+
+// this is almost a copy of the implementation in the GroundwaterFlow
+void LiquidFlowProcess::postTimestepConcreteProcess(
+    std::vector<GlobalVector*> const& x,
+    const double t,
+    const double /*dt*/,
+    int const process_id)
+{
+    if (!_surfaceflux)  // computing the surfaceflux is optional
+    {
+        return;
+    }
+
+    ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];
+    _surfaceflux->integrate(x, t, *this, process_id, _integration_order, _mesh,
+                            pv.getActiveElementIDs());
+    _surfaceflux->save(t);
+}
+
 }  // namespace LiquidFlow
 }  // namespace ProcessLib
diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.h b/ProcessLib/LiquidFlow/LiquidFlowProcess.h
index 719791cc43c70244d9f2bacf08853f163890549e..7c80706ae914a9aff36de9537e4a54c91fc09d27 100644
--- a/ProcessLib/LiquidFlow/LiquidFlowProcess.h
+++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.h
@@ -19,6 +19,7 @@
 #include "MaterialLib/Fluid/FluidProperties/FluidProperties.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "ProcessLib/Process.h"
+#include "ProcessLib/SurfaceFlux/SurfaceFluxData.h"
 
 namespace MeshLib
 {
@@ -69,19 +70,31 @@ public:
         int const gravitational_axis_id,
         double const gravitational_acceleration,
         double const reference_temperature,
-        BaseLib::ConfigTree const& config);
+        BaseLib::ConfigTree const& config,
+        std::unique_ptr<ProcessLib::SurfaceFluxData>&& surfaceflux);
 
     void computeSecondaryVariableConcrete(double const t,
                                           GlobalVector const& x,
                                           int const process_id) override;
 
     bool isLinear() const override { return true; }
+
+    Eigen::Vector3d getFlux(std::size_t const element_id,
+                            MathLib::Point3d const& p,
+                            double const t,
+                            std::vector<GlobalVector*> const& x) const override;
+
     int getGravitationalAxisID() const { return _gravitational_axis_id; }
     double getGravitationalAcceleration() const
     {
         return _gravitational_acceleration;
     }
 
+    void postTimestepConcreteProcess(std::vector<GlobalVector*> const& x,
+                                     const double t,
+                                     const double dt,
+                                     int const process_id) override;
+
 private:
     void initializeConcreteProcess(
         NumLib::LocalToGlobalIndexMap const& dof_table,
@@ -105,6 +118,8 @@ private:
 
     std::vector<std::unique_ptr<LiquidFlowLocalAssemblerInterface>>
         _local_assemblers;
+
+    std::unique_ptr<ProcessLib::SurfaceFluxData> _surfaceflux;
 };
 
 }  // namespace LiquidFlow
diff --git a/ProcessLib/LiquidFlow/Tests.cmake b/ProcessLib/LiquidFlow/Tests.cmake
index b0c7df40850436911324e3ca502db88e3e410ab3..bc1354b31c70e0c4e8d5c6a3e9aba94d1f42cf96 100644
--- a/ProcessLib/LiquidFlow/Tests.cmake
+++ b/ProcessLib/LiquidFlow/Tests.cmake
@@ -364,3 +364,33 @@ AddTest(
     time_dependent_heterogeneous_source_term_pcs_0_ts_120_t_1200.000000.vtu time_dependent_heterogeneous_source_term_pcs_0_ts_120_t_1200.000000.vtu pressure pressure 1e-7 1e-13
     time_dependent_heterogeneous_source_term_pcs_0_ts_200_t_2000.000000.vtu time_dependent_heterogeneous_source_term_pcs_0_ts_200_t_2000.000000.vtu pressure pressure 1e-7 1e-13
 )
+
+AddTest(
+    NAME LiquidFlow_Flux_3D
+    PATH Parabolic/LiquidFlow/Flux
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS cube_1e3_calculatesurfaceflux.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS NOT OGS_USE_MPI
+    DIFF_DATA
+    cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000.vtu specific_flux specific_flux 1e-7 1e-13
+    cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000.vtu specific_flux specific_flux 1e-7 1e-13
+    LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000.vtu pressure pressure 1e-7 1e-13
+    LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000.vtu pressure pressure 1e-7 1e-13
+)
+
+AddTest(
+    NAME LiquidFlow_Flux_2D
+    PATH Parabolic/LiquidFlow/Flux/2D
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS square_1e1_calculatesurfaceflux.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS NOT OGS_USE_MPI
+    DIFF_DATA
+    square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.432000.vtu specific_flux specific_flux 1e-7 1e-13
+    square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.864000.vtu specific_flux specific_flux 1e-7 1e-13
+    LF_square_1e1_surfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu LF_square_1e1_surfaceflux_pcs_0_ts_1_t_0.432000.vtu pressure pressure 1e-7 1e-13
+    LF_square_1e1_surfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu LF_square_1e1_surfaceflux_pcs_0_ts_2_t_0.864000.vtu pressure pressure 1e-7 1e-13
+)
diff --git a/ProcessLib/SurfaceFlux/SurfaceFluxLocalAssembler.h b/ProcessLib/SurfaceFlux/SurfaceFluxLocalAssembler.h
index a3cbb1543164f751880555a2e3871cecd28b0ae0..79c07180d884565135a1b72e2c1298d0f05a658c 100644
--- a/ProcessLib/SurfaceFlux/SurfaceFluxLocalAssembler.h
+++ b/ProcessLib/SurfaceFlux/SurfaceFluxLocalAssembler.h
@@ -120,13 +120,34 @@ public:
                        std::vector<GlobalVector*> const&)>
                        getFlux) override
     {
-        auto surface_element_normal =
-            MeshLib::FaceRule::getSurfaceNormal(&_surface_element);
-        surface_element_normal.normalize();
-        // At the moment (2016-09-28) the surface normal is not oriented
-        // according to the right hand rule
-        // for correct results it is necessary to multiply the normal with -1
-        surface_element_normal *= -1;
+        auto get_surface_normal =
+            [this, &bulk_mesh](
+                MeshLib::Element const& surface_element) -> MathLib::Vector3 {
+            MathLib::Vector3 surface_element_normal;
+            if (surface_element.getGeomType() == MeshLib::MeshElemType::LINE)
+            {
+                auto const bulk_normal = MeshLib::FaceRule::getSurfaceNormal(
+                    bulk_mesh.getElements()[_bulk_element_id]);
+                MathLib::Vector3 const line{*_surface_element.getNodes()[0],
+                                            *_surface_element.getNodes()[1]};
+                surface_element_normal =
+                    MathLib::crossProduct(bulk_normal, line);
+            }
+            else
+            {
+                surface_element_normal =
+                    MeshLib::FaceRule::getSurfaceNormal(&surface_element);
+            }
+            surface_element_normal.normalize();
+            // At the moment (2016-09-28) the surface normal is not oriented
+            // according to the right hand rule
+            // for correct results it is necessary to multiply the normal
+            // with -1
+            surface_element_normal *= -1;
+            return surface_element_normal;
+        };
+        auto const surface_element_normal =
+            get_surface_normal(_surface_element);
 
         double element_area = 0.0;
         std::size_t const n_integration_points =
@@ -142,7 +163,6 @@ public:
                 bulk_mesh, _bulk_element_id, _bulk_face_id, wp);
             auto const bulk_flux =
                 getFlux(_bulk_element_id, bulk_element_point, t, x);
-
             for (int component_id(0);
                  component_id < specific_flux.getNumberOfComponents();
                  ++component_id)
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/LF_square_1e1_surfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/LF_square_1e1_surfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..7e3987acfb3ce9767c9d4fe13e83def1030ebf25
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/LF_square_1e1_surfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a09fca3e1cf6cc900db49ed46c6bb874a291a41cead6e334b24f35504003510b
+size 3284
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/LF_square_1e1_surfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/LF_square_1e1_surfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..92c9ace5027ed8f1076adc7fa3c3c43c312879d7
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/LF_square_1e1_surfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:960089f24280fbce95e7f376a4fb9a1caa3da98457fcc83ed4b3736e19c3df54
+size 3256
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1e1_calculatesurfaceflux.prj b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1e1_calculatesurfaceflux.prj
new file mode 100644
index 0000000000000000000000000000000000000000..4cf7d704cada8c92fe450fa9cef57112e6236532
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1e1_calculatesurfaceflux.prj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <meshes>
+        <mesh>square_1x1_quad_1e1.vtu</mesh>
+        <mesh>square_1x1_quad_1e1_complete_surface.vtu</mesh>
+        <mesh>square_1x1_quad_1e1_left.vtu</mesh>
+        <mesh>square_1x1_quad_1e1_right.vtu</mesh>
+    </meshes>
+    <processes>
+        <process>
+            <name>LiquidFlow</name>
+            <type>LIQUID_FLOW</type>
+            <integration_order>2</integration_order>
+            <darcy_gravity>
+                <!-- axis_id: 0, 1, or the dimension of space minus one -->
+                <axis_id>0</axis_id>
+                <!-- g>=0. g=0: non gravity term -->
+                <g>0.</g>
+            </darcy_gravity>
+            <process_variables>
+                <process_variable>pressure</process_variable>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable internal_name="darcy_velocity" output_name="v"/>
+            </secondary_variables>
+            <calculatesurfaceflux>
+                <mesh>square_1x1_quad_1e1_complete_surface</mesh>
+                <property_name>specific_flux</property_name>
+                <output_mesh>square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux.vtu</output_mesh>
+            </calculatesurfaceflux>
+            <material_property>
+                <fluid>
+                    <density>
+                        <type>Constant</type>
+                        <value> 78.68 </value>
+                    </density>
+                    <viscosity>
+                        <type>Constant</type>
+                        <value> 1.295e-4 </value>
+                    </viscosity>
+                </fluid>
+                <porous_medium>
+                    <porous_medium id="0">
+                        <permeability>
+                            <permeability_tensor_entries>kappa1</permeability_tensor_entries>
+                            <type>Constant</type>
+                        </permeability>
+                        <porosity>
+                            <type>Constant</type>
+                            <porosity_parameter>constant_porosity_parameter</porosity_parameter>
+                        </porosity>
+                        <storage>
+                            <type>Constant</type>
+                            <value> 8.05e-10 </value>
+                        </storage>
+                    </porous_medium>
+                </porous_medium>
+            </material_property>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="LiquidFlow">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <abstol>1.e-10</abstol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial> 0.0 </t_initial>
+                    <t_end> 0.864 </t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>2</repeat>
+                            <delta_t>0.432</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>LF_square_1e1_surfaceflux</prefix>
+            <timesteps>
+                <pair>
+                    <repeat> 1 </repeat>
+                    <each_steps> 1 </each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+                <variable> pressure </variable>
+                <variable> v </variable>
+            </variables>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <name>p0</name>
+            <type>Constant</type>
+            <value>5e6</value>
+        </parameter>
+        <parameter>
+            <name>p_Dirichlet_left</name>
+            <type>Constant</type>
+            <value>1e7</value>
+        </parameter>
+        <parameter>
+            <name>p_Dirichlet_right</name>
+            <type>Constant</type>
+            <value>1e6</value>
+        </parameter>
+        <parameter>
+            <name>constant_porosity_parameter</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>kappa1</name>
+            <type>Constant</type>
+            <values>9.2e-12 0 0 9.2e-12</values>
+        </parameter>
+        <parameter>
+            <name>p_spatial</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+    </parameters>
+    <process_variables>
+        <process_variable>
+            <name>pressure</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>p0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>square_1x1_quad_1e1_left</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p_Dirichlet_left</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>square_1x1_quad_1e1_right</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p_Dirichlet_right</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_picard</name>
+            <type>Picard</type>
+            <max_iter>10</max_iter>
+            <linear_solver>general_linear_solver</linear_solver>
+        </nonlinear_solver>
+    </nonlinear_solvers>
+    <linear_solvers>
+        <linear_solver>
+            <name>general_linear_solver</name>
+            <lis>-i cg -p jacobi -tol 1e-16 -maxiter 10000</lis>
+            <eigen>
+                <solver_type>CG</solver_type>
+                <precon_type>DIAGONAL</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-16</error_tolerance>
+            </eigen>
+            <petsc>
+                <prefix>lf</prefix>
+                <parameters>-lf_ksp_type cg -lf_pc_type bjacobi -lf_ksp_rtol 1e-16 -lf_ksp_max_it 10000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..830ecc4b5589b969669e6eb03a1cc93221c47918
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16b826f3e01dafe34f447332b39a2a01cfa9e330c9ff7706190d0f420570c364
+size 2276
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..2098258b30e31e1c8a8b09fa398519e73107d74b
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:17da3e834d5c3aa33c7bcd5f69eeffe45226d10070ec1efde9d0b1d515f6c892
+size 3535
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..f80be5ffeb55fbb35e977680f923fc092aefc63c
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf38c54df6739ac7ab831bf2605ed356f0519e3d382a31dfb49d08bddffea466
+size 4030
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..b271da6628e131ed048c825d65839f92abb86328
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c2583ec787a3ee56c18217b09b34bdda1de66008c9f4ecd9e0c653dd187cb8a
+size 4030
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_left.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_left.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..5bb68bcde16a3f147172f076812d256be47094fe
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_left.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb3a7aa685ad561fdf455dd462467cab1e124fedc44e6c0f14befe33d83e6cd5
+size 3637
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_right.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_right.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..4dacd3f1682870cf9f130ed7b54c6e7261a372e6
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/2D/square_1x1_quad_1e1_right.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e39f78e2cabffd2f4f1313b774ca9464b8ffdf7fc97aa94b66bae80d162c850
+size 3659
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_0_t_0.000000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_0_t_0.000000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..1bd0b3bfdf2645457f36b5b7ac66ea7af9677573
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_0_t_0.000000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3928650be26b5dc4a48e0a635fdfc20eaa912e48c32d6d8c6533c87fee70622b
+size 39859
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..03b608491d059f3a5df79c37ba27566a2e823c4a
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_1_t_0.432000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4b22d3aa39091be0e2b9a1759f9824855175de911f58344b6686f59e43cd6f2
+size 46835
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..8fff68e1f419f1749e3f9f48de19849d5b2908f4
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/LF_cube_1e3_calculatesurfaceflux_pcs_0_ts_2_t_0.864000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01b5c7d2ce1ccedbb1a4fbe5a544ad502bf36ef47772db4cec78afc3c8e4f182
+size 46755
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1e3_calculatesurfaceflux.prj b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1e3_calculatesurfaceflux.prj
new file mode 100644
index 0000000000000000000000000000000000000000..b1b890a967422118e6b3d7e74759ff9046dbd1c0
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1e3_calculatesurfaceflux.prj
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <meshes>
+        <mesh>cube_1x1x1_hex_1e3.vtu</mesh>
+        <mesh>cube_1x1x1_hex_1e3_complete_surface.vtu</mesh>
+        <mesh>cube_1x1x1_hex_1e3_left.vtu</mesh>
+        <mesh>cube_1x1x1_hex_1e3_right.vtu</mesh>
+    </meshes>
+    <processes>
+        <process>
+            <name>LiquidFlow</name>
+            <type>LIQUID_FLOW</type>
+            <integration_order>2</integration_order>
+            <darcy_gravity>
+                <!-- axis_id: 0, 1, or the dimension of space minus one -->
+                <axis_id>0</axis_id>
+                <!-- g>=0. g=0: non gravity term -->
+                <g>0.</g>
+            </darcy_gravity>
+            <process_variables>
+                <process_variable>pressure</process_variable>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable internal_name="darcy_velocity" output_name="v"/>
+            </secondary_variables>
+            <calculatesurfaceflux>
+                <mesh>cube_1x1x1_hex_1e3_complete_surface</mesh>
+                <property_name>specific_flux</property_name>
+                <output_mesh>cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux.vtu</output_mesh>
+            </calculatesurfaceflux>
+            <material_property>
+                <fluid>
+                    <density>
+                        <type>Constant</type>
+                        <value> 78.68 </value>
+                    </density>
+                    <viscosity>
+                        <type>Constant</type>
+                        <value> 1.295e-4 </value>
+                    </viscosity>
+                </fluid>
+                <porous_medium>
+                    <porous_medium id="0">
+                        <permeability>
+                            <permeability_tensor_entries>kappa1</permeability_tensor_entries>
+                            <type>Constant</type>
+                        </permeability>
+                        <porosity>
+                            <type>Constant</type>
+                            <porosity_parameter>constant_porosity_parameter</porosity_parameter>
+                        </porosity>
+                        <storage>
+                            <type>Constant</type>
+                            <value> 8.05e-10 </value>
+                        </storage>
+                    </porous_medium>
+                </porous_medium>
+            </material_property>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="LiquidFlow">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <abstol>1.e-10</abstol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial> 0.0 </t_initial>
+                    <t_end> 0.864 </t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>2</repeat>
+                            <delta_t>0.432</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>LF_cube_1e3_calculatesurfaceflux</prefix>
+            <timesteps>
+                <pair>
+                    <repeat> 1 </repeat>
+                    <each_steps> 1 </each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+                <variable> pressure </variable>
+                <variable> v </variable>
+            </variables>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <name>p0</name>
+            <type>Constant</type>
+            <value>5e6</value>
+        </parameter>
+        <parameter>
+            <name>p_Dirichlet_left</name>
+            <type>Constant</type>
+            <value>1e7</value>
+        </parameter>
+        <parameter>
+            <name>p_Dirichlet_right</name>
+            <type>Constant</type>
+            <value>1e6</value>
+        </parameter>
+        <parameter>
+            <name>constant_porosity_parameter</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>kappa1</name>
+            <type>Constant</type>
+            <values>9.2e-12 0 0 0 9.2e-12 0 0 0 9.2e-12</values>
+        </parameter>
+        <parameter>
+            <name>p_spatial</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+    </parameters>
+    <process_variables>
+        <process_variable>
+            <name>pressure</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>p0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <mesh>cube_1x1x1_hex_1e3_left</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p_Dirichlet_left</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <mesh>cube_1x1x1_hex_1e3_right</mesh>
+                    <type>Dirichlet</type>
+                    <parameter>p_Dirichlet_right</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_picard</name>
+            <type>Picard</type>
+            <max_iter>10</max_iter>
+            <linear_solver>general_linear_solver</linear_solver>
+        </nonlinear_solver>
+    </nonlinear_solvers>
+    <linear_solvers>
+        <linear_solver>
+            <name>general_linear_solver</name>
+            <lis>-i cg -p jacobi -tol 1e-16 -maxiter 10000</lis>
+            <eigen>
+                <solver_type>CG</solver_type>
+                <precon_type>DIAGONAL</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-16</error_tolerance>
+            </eigen>
+            <petsc>
+                <prefix>lf</prefix>
+                <parameters>-lf_ksp_type cg -lf_pc_type bjacobi -lf_ksp_rtol 1e-16 -lf_ksp_max_it 10000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..500d9f815a5726e303aa4f8c220220c9bb517c7d
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f3e77b980dc0a4cefc19ba02eca4ad07ded3dc97497a01f169c719fc738a6bc9
+size 23197
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..303a9f426e18ba598faa5a55f8538f6f5d306b24
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f405c070ea2cab30321345825eff7421fb1a5401cc2887a68da26e4e04d0b70
+size 65673
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..d2018339442f61f182df59373021b6109e692dfa
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.432000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c40d5de97b2704c8260f3afec3d5d381b6614b3b6121518535a90ec738764cac
+size 79556
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..4b51b65f9ec78cd50e344735f893baf7e1ec2932
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_complete_surface_left_right_dirichlet_specific_flux_t_0.864000_expected.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e2fb642aa3ca416db53112da6cbceed72e2a74369297c48bd26964ee95dcdb6
+size 79556
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_left.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_left.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..0c67788fb0ebf2ae70ceb7434487759729ccbb57
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_left.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b76bf4e7791dcd0431554367369cd2c49fd24c6d0784b73d55333667b73d1bc
+size 12897
diff --git a/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_right.vtu b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_right.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..cb08cfb5227fb22b26a87ee682d0ba2e5a4f393a
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/Flux/cube_1x1x1_hex_1e3_right.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:efcc5a635b6616ee00d7f8df481c3dfedbab2984a2e5ffb317386095681d19e4
+size 12898