Skip to content
Snippets Groups Projects
Commit d2a60da5 authored by Tom Fischer's avatar Tom Fischer
Browse files

[PL] RichardsComponentTransport: Add relative perm.

parent 48c74c37
No related branches found
No related tags found
No related merge requests found
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "MaterialLib/PorousMedium/Permeability/createPermeabilityModel.h" #include "MaterialLib/PorousMedium/Permeability/createPermeabilityModel.h"
#include "MaterialLib/PorousMedium/Porosity/createPorosityModel.h" #include "MaterialLib/PorousMedium/Porosity/createPorosityModel.h"
#include "MaterialLib/PorousMedium/Storage/createStorageModel.h" #include "MaterialLib/PorousMedium/Storage/createStorageModel.h"
#include "MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.h"
#include "MeshLib/Mesh.h" #include "MeshLib/Mesh.h"
...@@ -33,6 +34,9 @@ PorousMediaProperties createPorousMediaProperties( ...@@ -33,6 +34,9 @@ PorousMediaProperties createPorousMediaProperties(
porosity_models; porosity_models;
std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>> std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>
storage_models; storage_models;
std::vector<
std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
relative_permeability_models;
std::vector<int> mat_ids; std::vector<int> mat_ids;
for (auto const& porous_medium_config : for (auto const& porous_medium_config :
...@@ -63,6 +67,13 @@ PorousMediaProperties createPorousMediaProperties( ...@@ -63,6 +67,13 @@ PorousMediaProperties createPorousMediaProperties(
porous_medium_config.getConfigSubtree("storage"); porous_medium_config.getConfigSubtree("storage");
storage_models.emplace_back( storage_models.emplace_back(
MaterialLib::PorousMedium::createStorageModel(storage_config)); MaterialLib::PorousMedium::createStorageModel(storage_config));
auto const& krel_config =
//! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium__porous_medium__relative_permeability}
porous_medium_config.getConfigSubtree("relative_permeability");
auto krel = MaterialLib::PorousMedium::createRelativePermeabilityModel(
krel_config);
relative_permeability_models.emplace_back(std::move(krel));
} }
BaseLib::reorderVector(intrinsic_permeability_models, mat_ids); BaseLib::reorderVector(intrinsic_permeability_models, mat_ids);
...@@ -79,10 +90,10 @@ PorousMediaProperties createPorousMediaProperties( ...@@ -79,10 +90,10 @@ PorousMediaProperties createPorousMediaProperties(
material_ids.begin()); material_ids.begin());
} }
return PorousMediaProperties{std::move(porosity_models), return PorousMediaProperties{
std::move(intrinsic_permeability_models), std::move(porosity_models), std::move(intrinsic_permeability_models),
std::move(storage_models), std::move(storage_models), std::move(relative_permeability_models),
std::move(material_ids)}; std::move(material_ids)};
} }
} // namespace ComponentTransport } // namespace ComponentTransport
......
...@@ -16,10 +16,9 @@ ...@@ -16,10 +16,9 @@
#include <Eigen/Dense> #include <Eigen/Dense>
#include "BaseLib/reorderVector.h" #include "BaseLib/reorderVector.h"
#include "MaterialLib/PorousMedium/Porosity/Porosity.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h"
#include "MaterialLib/PorousMedium/Storage/Storage.h" #include "MaterialLib/PorousMedium/Storage/Storage.h"
#include "MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h"
#include "ProcessLib/Parameter/SpatialPosition.h" #include "ProcessLib/Parameter/SpatialPosition.h"
namespace ProcessLib namespace ProcessLib
...@@ -36,11 +35,16 @@ public: ...@@ -36,11 +35,16 @@ public:
std::vector<Eigen::MatrixXd>&& intrinsic_permeability_models, std::vector<Eigen::MatrixXd>&& intrinsic_permeability_models,
std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>&& std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>&&
specific_storage_models, specific_storage_models,
std::vector<
std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>&&
relative_permeability_models,
std::vector<int>&& material_ids) std::vector<int>&& material_ids)
: _porosity_models(std::move(porosity_models)), : _porosity_models(std::move(porosity_models)),
_intrinsic_permeability_models( _intrinsic_permeability_models(
std::move(intrinsic_permeability_models)), std::move(intrinsic_permeability_models)),
_specific_storage_models(std::move(specific_storage_models)), _specific_storage_models(std::move(specific_storage_models)),
_relative_permeability_models(
std::move(relative_permeability_models)),
_material_ids(std::move(material_ids)) _material_ids(std::move(material_ids))
{ {
} }
...@@ -49,6 +53,8 @@ public: ...@@ -49,6 +53,8 @@ public:
: _porosity_models(std::move(other._porosity_models)), : _porosity_models(std::move(other._porosity_models)),
_intrinsic_permeability_models(other._intrinsic_permeability_models), _intrinsic_permeability_models(other._intrinsic_permeability_models),
_specific_storage_models(std::move(other._specific_storage_models)), _specific_storage_models(std::move(other._specific_storage_models)),
_relative_permeability_models(
std::move(other._relative_permeability_models)),
_material_ids(other._material_ids) _material_ids(other._material_ids)
{ {
} }
...@@ -62,6 +68,9 @@ public: ...@@ -62,6 +68,9 @@ public:
MaterialLib::PorousMedium::Storage const& getSpecificStorage( MaterialLib::PorousMedium::Storage const& getSpecificStorage(
double t, SpatialPosition const& pos) const; double t, SpatialPosition const& pos) const;
MaterialLib::PorousMedium::RelativePermeability const&
getRelativePermeability(double t, SpatialPosition const& pos) const;
private: private:
int getMaterialID(SpatialPosition const& pos) const; int getMaterialID(SpatialPosition const& pos) const;
private: private:
...@@ -70,6 +79,9 @@ private: ...@@ -70,6 +79,9 @@ private:
std::vector<Eigen::MatrixXd> _intrinsic_permeability_models; std::vector<Eigen::MatrixXd> _intrinsic_permeability_models;
std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>> std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>
_specific_storage_models; _specific_storage_models;
std::vector<
std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
_relative_permeability_models;
std::vector<int> _material_ids; std::vector<int> _material_ids;
}; };
......
...@@ -222,6 +222,9 @@ public: ...@@ -222,6 +222,9 @@ public:
auto const& K = auto const& K =
_process_data.porous_media_properties.getIntrinsicPermeability( _process_data.porous_media_properties.getIntrinsicPermeability(
t, pos); t, pos);
auto const& k_rel =
_process_data.porous_media_properties.getRelativePermeability(
t, pos).getValue(Sw);
// Use the viscosity model to compute the viscosity // Use the viscosity model to compute the viscosity
auto const mu = _process_data.fluid_properties->getValue( auto const mu = _process_data.fluid_properties->getValue(
MaterialLib::Fluid::FluidPropertyType::Viscosity, vars); MaterialLib::Fluid::FluidPropertyType::Viscosity, vars);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment