diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp b/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp
index b58e8307ee515e087c798b45e52810e0970ae883..6ddf552e438391d9d986b90539e6d9ae2b1bc466 100644
--- a/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp
+++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp
@@ -33,7 +33,9 @@ void checkMPLProperties(
         MaterialPropertyLib::PropertyType::saturation,
         MaterialPropertyLib::PropertyType::relative_permeability,
         MaterialPropertyLib::PropertyType::
-            relative_permeability_nonwetting_phase};
+            relative_permeability_nonwetting_phase,
+        MaterialPropertyLib::PropertyType::longitudinal_dispersivity,
+        MaterialPropertyLib::PropertyType::transversal_dispersivity};
 
     std::array const required_property_solid_phase = {
         MaterialPropertyLib::PropertyType::specific_heat_capacity,
diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h
index cef9638904e6b1e31487f2f0e6417003bdb0df46..db2aa24f26c5860c4f8c3903911d9c1036f4bb8a 100644
--- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h
+++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPLocalAssembler-impl.h
@@ -191,6 +191,10 @@ void ThermalTwoPhaseFlowWithPPLocalAssembler<
         Eigen::Map<const NodalVectorType>(&local_x[num_nodes], num_nodes);
 
     MaterialPropertyLib::VariableArray vars;
+
+    GlobalDimMatrixType const& I(
+        GlobalDimMatrixType::Identity(GlobalDim, GlobalDim));
+
     for (unsigned ip = 0; ip < n_integration_points; ip++)
     {
         auto const& ip_data = _ip_data[ip];
@@ -657,6 +661,34 @@ void ThermalTwoPhaseFlowWithPPLocalAssembler<
                          w * N.transpose() * heat_capacity_water * density_wet *
                              velocity_wet.transpose() * dNdx;
 
+        auto const solute_dispersivity_transverse =
+            medium.template value<double>(
+                MaterialPropertyLib::PropertyType::transversal_dispersivity);
+        auto const solute_dispersivity_longitudinal =
+            medium.template value<double>(
+                MaterialPropertyLib::PropertyType::longitudinal_dispersivity);
+
+        double const velocity_wet_magnitude = velocity_wet.norm();
+        GlobalDimMatrixType const hydrodynamic_dispersion =
+            velocity_wet_magnitude != 0.0
+                ? GlobalDimMatrixType(
+                      (porosity * Sw * diffusion_coeff_contam_wet +
+                       solute_dispersivity_transverse *
+                           velocity_wet_magnitude) *
+                          I +
+                      (solute_dispersivity_longitudinal -
+                       solute_dispersivity_transverse) /
+                          velocity_wet_magnitude * velocity_wet *
+                          velocity_wet.transpose())
+                : GlobalDimMatrixType(
+                      (porosity * Sw * diffusion_coeff_contam_wet +
+                       solute_dispersivity_transverse *
+                           velocity_wet_magnitude) *
+                      I);
+
+        auto const dispersion_operator =
+            dNdx.transpose() * hydrodynamic_dispersion * dNdx * w;
+
         // The sum of all diffusive fluxes in either phase must equal to zero
         Kap.noalias() +=
             (mol_density_nonwet * x_air_nonwet * lambda_nonwet) *
@@ -718,34 +750,26 @@ void ThermalTwoPhaseFlowWithPPLocalAssembler<
             (mol_density_wet * x_contam_wet * lambda_wet +
              mol_density_nonwet * x_contam_nonwet * lambda_nonwet) *
                 laplace_operator +
-            porosity *
-                (Sw * mol_density_wet * diffusion_coeff_contam_wet *
-                     d_x_contam_wet_dpg +
-                 (1 - Sw) * mol_density_nonwet * diffusion_coeff_contam_nonwet *
-                     d_x_contam_nonwet_dpg) *
+            mol_density_wet * dispersion_operator * d_x_contam_wet_dpg +
+            porosity * (1 - Sw) * mol_density_nonwet *
+                diffusion_coeff_contam_nonwet * d_x_contam_nonwet_dpg *
                 diffusion_operator;
         Kcpc.noalias() +=
             -mol_density_wet * x_contam_wet * lambda_wet * laplace_operator +
-            porosity *
-                (Sw * mol_density_wet * diffusion_coeff_contam_wet *
-                     d_x_contam_wet_dpc +
-                 (1 - Sw) * mol_density_nonwet * diffusion_coeff_contam_nonwet *
-                     d_x_contam_nonwet_dpc) *
+            mol_density_wet * dispersion_operator * d_x_contam_wet_dpc +
+            porosity * (1 - Sw) * mol_density_nonwet *
+                diffusion_coeff_contam_nonwet * d_x_contam_nonwet_dpc *
                 diffusion_operator;
         Kcx.noalias() +=
-            porosity *
-            (Sw * mol_density_wet * diffusion_coeff_contam_wet *
-                 d_x_contam_wet_dXc +
-             (1 - Sw) * mol_density_nonwet * diffusion_coeff_contam_nonwet *
-                 d_x_contam_nonwet_dXc) *
-            diffusion_operator;
+            mol_density_wet * dispersion_operator * d_x_contam_wet_dXc +
+            porosity * (1 - Sw) * mol_density_nonwet *
+                diffusion_coeff_contam_nonwet * d_x_contam_nonwet_dXc *
+                diffusion_operator;
         Kct.noalias() +=
-            porosity *
-            (Sw * mol_density_wet * diffusion_coeff_contam_wet *
-                 d_x_contam_wet_dT +
-             (1 - Sw) * mol_density_nonwet * diffusion_coeff_contam_nonwet *
-                 d_x_contam_nonwet_dT) *
-            diffusion_operator;
+            mol_density_wet * dispersion_operator * d_x_contam_wet_dT +
+            porosity * (1 - Sw) * mol_density_nonwet *
+                diffusion_coeff_contam_nonwet * d_x_contam_nonwet_dT *
+                diffusion_operator;
 
         Kep.noalias() += (lambda_nonwet * density_nonwet * enthalpy_nonwet +
                           lambda_wet * density_wet * enthalpy_wet) *