From 9b18d1ef1ddf666dcfa63f39da4e6e7a417a6162 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Thu, 23 Mar 2017 09:53:24 +0100
Subject: [PATCH] [Mat/Fluid] Use LinearConcentrationDependentDensitity model.

---
 .../Fluid/Density/CreateFluidDensityModel.cpp | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp b/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp
index d13aaa66810..34f87172b33 100644
--- a/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp
+++ b/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp
@@ -16,6 +16,7 @@
 #include "BaseLib/Error.h"
 
 #include "IdealGasLaw.h"
+#include "LinearConcentrationDependentDensity.h"
 #include "LinearTemperatureDependentDensity.h"
 #include "LiquidDensity.h"
 #include "WaterDensityIAPWSIF97Region1.h"
@@ -72,6 +73,28 @@ static std::unique_ptr<FluidProperty> createLinearTemperatureDependentDensity(
         new LinearTemperatureDependentDensity(rho0, T0, beta));
 }
 
+static std::unique_ptr<FluidProperty> createLinearConcentrationDependentDensity(
+    BaseLib::ConfigTree const& config)
+{
+    //! \ogs_file_param{material__fluid__density__type}
+    config.checkConfigParameter("type", "ConcentrationDependent");
+
+    const double 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}
+        config.getConfigParameter<double>("reference_concentration");
+    const double fluid_density_difference_ratio =
+    //! \ogs_file_param{material__fluid__density__ConcentrationDependent__fluid_density_difference_ratio}
+        config.getConfigParameter<double>("fluid_density_difference_ratio");
+    return std::unique_ptr<FluidProperty>(
+        new LinearConcentrationDependentDensity(
+            reference_density,
+            reference_concentration,
+            fluid_density_difference_ratio));
+}
+
 std::unique_ptr<FluidProperty> createFluidDensityModel(
     BaseLib::ConfigTree const& config)
 {
@@ -90,6 +113,8 @@ std::unique_ptr<FluidProperty> createFluidDensityModel(
         return createLiquidDensity(config);
     else if (type == "TemperatureDependent")
         return createLinearTemperatureDependentDensity(config);
+    else if (type == "ConcentrationDependent")
+        return createLinearConcentrationDependentDensity(config);
     else if (type == "IdealGasLaw")
     {
         //! \ogs_file_param{material__fluid__density__type}
-- 
GitLab