From e23e66de00328603dd5b2d15d8b7884e60ff98d2 Mon Sep 17 00:00:00 2001 From: bathmann <jasper.bathmann@ufz.de> Date: Thu, 13 Sep 2018 13:02:58 +0200 Subject: [PATCH] [HC] documentation updated --- .../Fluid/Density/CreateFluidDensityModel.cpp | 22 ++++---- ...ConcentrationAndPressureDependentDensity.h | 56 ++++++++++++------- .../ComponentTransportProcess.h | 37 +++++++----- .../ogs5_H_2D/2D1P-GWFlow_1_reference.vtu | 4 +- 4 files changed, 72 insertions(+), 47 deletions(-) diff --git a/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp b/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp index 68bd2075638..6823cbeaaa8 100644 --- a/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp +++ b/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp @@ -16,8 +16,8 @@ #include "BaseLib/Error.h" #include "IdealGasLaw.h" -#include "LinearConcentrationDependentDensity.h" #include "LinearConcentrationAndPressureDependentDensity.h" +#include "LinearConcentrationDependentDensity.h" #include "LinearTemperatureDependentDensity.h" #include "LiquidDensity.h" #include "WaterDensityIAPWSIF97Region1.h" @@ -92,34 +92,36 @@ static std::unique_ptr<FluidProperty> createLinearConcentrationDependentDensity( reference_concentration, fluid_density_difference_ratio); } -static std::unique_ptr<FluidProperty> createLinearConcentrationAndPressureDependentDensity( +static std::unique_ptr<FluidProperty> +createLinearConcentrationAndPressureDependentDensity( BaseLib::ConfigTree const& config) { //! \ogs_file_param{material__fluid__density__type} config.checkConfigParameter("type", "ConcentrationAndPressureDependent"); const double reference_density = - //! \ogs_file_param{material__fluid__density__ConcentrationDependent__reference_density} + //! \ogs_file_param{material__fluid__density__ConcentrationDependent__reference_density} config.getConfigParameter<double>("reference_density"); const double reference_concentration = - //! \ogs_file_param{material__fluid__density__ConcentrationDependent__reference_concentration} + //! \ogs_file_param{material__fluid__density__ConcentrationDependent__reference_concentration} config.getConfigParameter<double>("reference_concentration"); const double fluid_density_concentration_difference_ratio = - //! \ogs_file_param{material__fluid__density__ConcentrationDependent__fluid_density_concentration_difference_ratio} - config.getConfigParameter<double>("fluid_density_concentration_difference_ratio"); + //! \ogs_file_param{material__fluid__density__ConcentrationDependent__fluid_density_concentration_difference_ratio} + config.getConfigParameter<double>( + "fluid_density_concentration_difference_ratio"); const double reference_pressure = - //! \ogs_file_param{material__fluid__density__ConcentrationDependent__reference_pressure} + //! \ogs_file_param{material__fluid__density__ConcentrationDependent__reference_pressure} config.getConfigParameter<double>("reference_pressure"); const double fluid_density_pressure_difference_ratio = - //! \ogs_file_param{material__fluid__density__ConcentrationDependent__fluid_density_pressure_difference_ratio} - config.getConfigParameter<double>("fluid_density_pressure_difference_ratio"); + //! \ogs_file_param{material__fluid__density__ConcentrationDependent__fluid_density_pressure_difference_ratio} + config.getConfigParameter<double>( + "fluid_density_pressure_difference_ratio"); return std::make_unique<LinearConcentrationAndPressureDependentDensity>( reference_density, reference_concentration, fluid_density_concentration_difference_ratio, reference_pressure, fluid_density_pressure_difference_ratio); - } std::unique_ptr<FluidProperty> createFluidDensityModel( diff --git a/MaterialLib/Fluid/Density/LinearConcentrationAndPressureDependentDensity.h b/MaterialLib/Fluid/Density/LinearConcentrationAndPressureDependentDensity.h index 90052a3ea65..f4917144750 100644 --- a/MaterialLib/Fluid/Density/LinearConcentrationAndPressureDependentDensity.h +++ b/MaterialLib/Fluid/Density/LinearConcentrationAndPressureDependentDensity.h @@ -21,24 +21,26 @@ namespace Fluid { /// Linear concentration dependent density model. /// \f[ \varrho = \varrho_{\text{ref}} -/// (1 + \bar \alpha (C - C_{\text{ref}}) + \bar \beta (p - p_{\text{ref}}) ) \f] -/// where +/// (1 + \bar \alpha (C - C_{\text{ref}}) + \bar \beta (p - p_{\text{ref}}) ) +/// \f] where /// - \f$ \varrho_{\text{ref}}\f$ is the reference density /// - \f$ \bar \alpha\f$ is the fluid density concentration difference ratio /// - \f$ C_{\text{ref}}\f$ is the reference concentration /// - \f$ \bar \beta\f$ is the fluid density pressure difference ratio /// - \f$ p_{\text{ref}}\f$ is the reference pressure -class LinearConcentrationAndPressureDependentDensity final : public FluidProperty +class LinearConcentrationAndPressureDependentDensity final + : public FluidProperty { public: /** * @param reference_density \f$\rho_0\f$ * @param reference_concentration \f$C_0\f$ - * @param fluid_density_concentration_difference_ratio \f$ \bar \alpha \f$ in reference + * @param fluid_density_concentration_difference_ratio \f$ \bar \alpha \f$ + * in reference * @param reference_pressure \f$p_0\f$ - * @param fluid_density_pressure_difference_ratio \f$ \bar \beta \f$ in reference - * Coupled groundwater flow and transport: 2. Thermohaline and 3D convection - * systems + * @param fluid_density_pressure_difference_ratio \f$ \bar \beta \f$ in + * reference Coupled groundwater flow and transport: 2. Thermohaline and 3D + * convection systems */ explicit LinearConcentrationAndPressureDependentDensity( const double reference_density, double reference_concentration, @@ -47,9 +49,11 @@ public: const double fluid_density_pressure_difference_ratio) : _reference_density(reference_density), _reference_concentration(reference_concentration), - _fluid_density_concentration_difference_ratio(fluid_density_concentration_difference_ratio), + _fluid_density_concentration_difference_ratio( + fluid_density_concentration_difference_ratio), _reference_pressure(reference_pressure), - _fluid_density_pressure_difference_ratio(fluid_density_pressure_difference_ratio) + _fluid_density_pressure_difference_ratio( + fluid_density_pressure_difference_ratio) { } @@ -66,11 +70,12 @@ public: { const double C = var_vals[static_cast<int>(PropertyVariableType::C)]; const double p = var_vals[static_cast<int>(PropertyVariableType::p)]; - return _reference_density * (1 + - _fluid_density_concentration_difference_ratio * - (C - _reference_concentration)+ - _fluid_density_pressure_difference_ratio * - (p - _reference_pressure)); + return _reference_density * + (1 + + _fluid_density_concentration_difference_ratio * + (C - _reference_concentration) + + _fluid_density_pressure_difference_ratio * + (p - _reference_pressure)); } /// Get the partial differential of the density with respect to @@ -81,11 +86,20 @@ public: double getdValue(const ArrayType& /*var_vals*/, const PropertyVariableType var) const override { - if (var == PropertyVariableType::C){ - return _reference_density * _fluid_density_concentration_difference_ratio;} - else if (var == PropertyVariableType::p){ - return _reference_density * _fluid_density_pressure_difference_ratio;} - else{return 0;} + if (var == PropertyVariableType::C) + { + return _reference_density * + _fluid_density_concentration_difference_ratio; + } + else if (var == PropertyVariableType::p) + { + return _reference_density * + _fluid_density_pressure_difference_ratio; + } + else + { + return 0; + } } private: @@ -96,5 +110,5 @@ private: const double _fluid_density_pressure_difference_ratio; }; -} // end namespace -} // end namespace +} // namespace Fluid +} // namespace MaterialLib diff --git a/ProcessLib/ComponentTransport/ComponentTransportProcess.h b/ProcessLib/ComponentTransport/ComponentTransportProcess.h index 0a883ad38df..d6492c48e42 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportProcess.h +++ b/ProcessLib/ComponentTransport/ComponentTransportProcess.h @@ -25,11 +25,17 @@ namespace ComponentTransport * * The flow process is described by * \f[ - * S \frac{\partial p}{\partial t} - * - \nabla \cdot \left[\frac{\kappa}{\mu(C)} \nabla \left( p + \rho g z \right)\right] - * - Q_p = 0, + * \phi \frac{\partial \rho}{\partial p} \frac{\partial p}{\partial t} + * + \phi \frac{\partial \rho}{\partial C} \frac{\partial C}{\partial t} + * - \nabla \cdot \left[\frac{\kappa}{\mu(C)} \rho \nabla \left( p + \rho g + * z \right)\right] + * + Q_p = 0, * \f] - * where \f$S\f$ is the storage, \f$p\f$ is the pressure, + * where the storage \f$S\f$ has been substituted by + * \phi \frac{\partial \rho}{\partial p}, + * \f$\phi\f$ is the porosity, + * \f$C\f$ is the concentration, + * \f$p\f$ is the pressure, * \f$\kappa\f$ is permeability, * \f$\mu\f$ is viscosity of the fluid, * \f$\rho\f$ is the density of the fluid, and @@ -37,14 +43,17 @@ namespace ComponentTransport * * The mass transport process is described by * \f[ - * \phi R \frac{\partial C}{\partial t} - + \nabla \cdot \left(\vec{q} C - D \nabla C \right) - + \phi R \vartheta C - Q_C = 0 + * \phi R C \frac{\partial \rho}{\partial p} \frac{\partial p}{\partial t} + * + \phi R \left(\rho + C \frac{\partial \rho}{\partial C}\right) + * \frac{\partial C}{\partial t} + * - \nabla \cdot \left[\frac{\kappa}{\mu(C)} \rho C \nabla \left( p + \rho + * g z \right) + * + \rho D \nabla C\right] + * + Q_C + R \vartheta \phi \rho C = 0, + * * \f] - * where \f$\phi\f$ is the porosity, - * \f$R\f$ is the retardation factor, - * \f$C\f$ is the concentration, - * \f$\vec{q} = \frac{\kappa}{\mu(C)} \nabla \left( p + \rho g z \right)\f$ + * where \f$R\f$ is the retardation factor, + * \f$\vec{q} = -\frac{\kappa}{\mu(C)} \nabla \left( p + \rho g z \right)\f$ * is the Darcy velocity, * \f$D\f$ is the hydrodynamic dispersion tensor, * \f$\vartheta\f$ is the decay rate. @@ -70,9 +79,9 @@ namespace ComponentTransport * flow couples the H process to the C process. * * \note At the moment there is not any coupling by source or sink terms, i.e., - * the coupling is implemented only by density changes due to concentration - * changes in the buoyance term in the groundwater flow. This coupling schema is - * referred to as the Boussinesq approximation. + * the coupling is implemented only by density and viscosity changes due to + * concentration changes as well as by the temporal derivatives of each + * variable. * */ class ComponentTransportProcess final : public Process { diff --git a/Tests/Data/Parabolic/ComponentTransport/heterogeneous/ogs5_H_2D/2D1P-GWFlow_1_reference.vtu b/Tests/Data/Parabolic/ComponentTransport/heterogeneous/ogs5_H_2D/2D1P-GWFlow_1_reference.vtu index 70c55c1a477..567a2b8836d 100644 --- a/Tests/Data/Parabolic/ComponentTransport/heterogeneous/ogs5_H_2D/2D1P-GWFlow_1_reference.vtu +++ b/Tests/Data/Parabolic/ComponentTransport/heterogeneous/ogs5_H_2D/2D1P-GWFlow_1_reference.vtu @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1036f8d8f4cff121f36f9cd6466fc501bb957ceb698a933b4e8b9e116744942 -size 1073708 +oid sha256:e2d7de577cffae5ed6e7b6256768f9755095c951886a02be676343a63fdfd3cc +size 490884 -- GitLab