From 5c8f13acdb9d30ab9e2012fa8e33e3377d9b06f4 Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Tue, 11 Oct 2016 12:08:12 +0200 Subject: [PATCH] [LF] Changed the names of one file and some variables, corrected a typo in one variable name, and made some other minor improvements according to the comments by Dima and Tom. --- ProcessLib/CMakeLists.txt | 2 +- ...-imp.h => LiquidFlowLocalAssembler-impl.h} | 9 +++--- .../LiquidFlow/LiquidFlowLocalAssembler.h | 12 +++---- .../LiquidFlowMaterialProperties.cpp | 31 +++++++++++++++---- .../LiquidFlow/LiquidFlowMaterialProperties.h | 20 +++--------- ProcessLib/LiquidFlow/LiquidFlowProcess.cpp | 17 +--------- ProcessLib/LiquidFlow/LiquidFlowProcess.h | 10 +----- .../TestLiquidFlowMaterialProperties.cpp | 8 ++--- 8 files changed, 46 insertions(+), 63 deletions(-) rename ProcessLib/LiquidFlow/{LiquidFlowLocalAssembler-imp.h => LiquidFlowLocalAssembler-impl.h} (94%) diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt index 5d52ac3280b..0dd7a458c2b 100644 --- a/ProcessLib/CMakeLists.txt +++ b/ProcessLib/CMakeLists.txt @@ -14,7 +14,7 @@ APPEND_SOURCE_FILES(SOURCES Parameter) add_subdirectory(GroundwaterFlow) APPEND_SOURCE_FILES(SOURCES GroundwaterFlow) -append_source_files(SOURCES LiquidFlow) +APPEND_SOURCE_FILES(SOURCES LiquidFlow) APPEND_SOURCE_FILES(SOURCES SmallDeformation) diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-imp.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h similarity index 94% rename from ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-imp.h rename to ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h index 0b393f1e005..786253238fa 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-imp.h +++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler-impl.h @@ -10,8 +10,8 @@ * Created on August 19, 2016, 2:28 PM */ -#ifndef OGS_LIQUIDFLOWLOCALASSEMBLER_IMP_H -#define OGS_LIQUIDFLOWLOCALASSEMBLER_IMP_H +#ifndef OGS_LIQUIDFLOWLOCALASSEMBLER_IMPL_H +#define OGS_LIQUIDFLOWLOCALASSEMBLER_IMPL_H #include "LiquidFlowLocalAssembler.h" @@ -45,7 +45,7 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: const unsigned mat_id = 0; // TODO for heterogeneous medium const Eigen::MatrixXd& perm = - _material_properties.intrinsic_permeabiliy[mat_id]; + _material_properties.intrinsic_permeability[mat_id]; // Note: For Inclined 1D in 2D/3D or 2D element in 3D, the first item in // the assert must be changed to perm.rows() == _element->getDimension() @@ -81,8 +81,7 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: const double mu = _material_properties.getViscosity(p, _temperature); // Assemble Laplacian, K, and RHS by the gravitational term - if (perm.size() == - 1) // Save the computing time for isotropic permeability. + if (perm.size() == 1) //Save the computing time for isotropic permeability. { // Use scalar number for isotropic permeability // to save the computation time. diff --git a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h index 0cb8b78a5b0..4d92ebb247a 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h +++ b/ProcessLib/LiquidFlow/LiquidFlowLocalAssembler.h @@ -65,17 +65,17 @@ public: LiquidFlowLocalAssembler( MeshLib::Element const& element, std::size_t const /*local_matrix_size*/, - bool is_axially_symmetric, + bool const is_axially_symmetric, unsigned const integration_order, - const bool compute_gravitational_term, - LiquidFlowMaterialProperties const& matetial_propertries) + bool const compute_gravitational_term, + LiquidFlowMaterialProperties const& material_propertries) : _element(element), _integration_method(integration_order), _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType, IntegrationMethod, GlobalDim>( element, is_axially_symmetric, _integration_method)), _compute_gravitational_term(compute_gravitational_term), - _material_properties(matetial_propertries) + _material_properties(material_propertries) { } @@ -127,12 +127,12 @@ private: const bool _compute_gravitational_term; LiquidFlowMaterialProperties const& _material_properties; - double _temperature; ///< Temperature. + double _temperature; }; } // end of namespace } // end of namespace -#include "LiquidFlowLocalAssembler-imp.h" +#include "LiquidFlowLocalAssembler-impl.h" #endif /* LIQUIDFLOWLOCALASSEMBLER_H */ diff --git a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp index a68a738f032..265f8d8b23a 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp +++ b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.cpp @@ -16,6 +16,7 @@ #include "MeshLib/Mesh.h" +#include "MaterialLib/Fluid/FluidProperty.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h" #include "MaterialLib/PorousMedium/Storage/Storage.h" @@ -34,7 +35,7 @@ LiquidFlowMaterialProperties::LiquidFlowMaterialProperties( // Get fluid properties //! \ogs_file_param{prj__material_property__fluid__density} auto const& rho_conf = fluid_config.getConfigSubtree("density"); - density_l = MaterialLib::Fluid::createFluidDensityModel(rho_conf); + liquid_density = MaterialLib::Fluid::createFluidDensityModel(rho_conf); //! \ogs_file_param{prj__material_property__fluid__viscosity} auto const& mu_conf = fluid_config.getConfigSubtree("viscosity"); viscosity = MaterialLib::Fluid::createViscosityModel(mu_conf); @@ -47,7 +48,7 @@ LiquidFlowMaterialProperties::LiquidFlowMaterialProperties( { //! \ogs_file_param{prj__material_property__porous_medium__porous_medium__permeability} auto const& perm_conf = conf.getConfigSubtree("permeability"); - intrinsic_permeabiliy.emplace_back( + intrinsic_permeability.emplace_back( MaterialLib::PorousMedium::createPermeabilityModel(perm_conf)); //! \ogs_file_param{prj__material_property__porous_medium__porous_medium__porosity} @@ -62,18 +63,36 @@ LiquidFlowMaterialProperties::LiquidFlowMaterialProperties( } } +double LiquidFlowMaterialProperties::getLiquidDensity(const double p, + const double T) const +{ + ArrayType vars; + vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T; + vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::pl)] = p; + return liquid_density->getValue(vars); +} + +double LiquidFlowMaterialProperties::getViscosity(const double p, + const double T) const +{ + ArrayType vars; + vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T; + vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::pl)] = p; + return viscosity->getValue(vars); +} + double LiquidFlowMaterialProperties::getMassCoefficient( const double porosity_variable, const double storage_variable, const double p, const double T, const unsigned material_group_id) const { ArrayType vars; - vars[0] = T; - vars[1] = p; + vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::T)] = T; + vars[static_cast<int>(MaterialLib::Fluid::PropertyVariableType::pl)] = p; return porosity[material_group_id]->getValue(porosity_variable, T) * - density_l->getdValue( + liquid_density->getdValue( vars, MaterialLib::Fluid::PropertyVariableType::pl) // Divided by rho_l because the PDE is scaled with rho_l - / density_l->getValue(vars) + + / liquid_density->getValue(vars) + storage[material_group_id]->getValue(storage_variable); } diff --git a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h index a0b63106fd0..3a3f6d9696d 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h +++ b/ProcessLib/LiquidFlow/LiquidFlowMaterialProperties.h @@ -64,29 +64,17 @@ struct LiquidFlowMaterialProperties const double storage_variable, const unsigned material_group_id = 0) const; - double getLiquidDensity(const double p, const double T) const - { - ArrayType vars; - vars[0] = T; - vars[1] = p; - return density_l->getValue(vars); - } + double getLiquidDensity(const double p, const double T) const; - double getViscosity(const double p, const double T) const - { - ArrayType vars; - vars[0] = T; - vars[1] = p; - return viscosity->getValue(vars); - } + double getViscosity(const double p, const double T) const; - std::unique_ptr<MaterialLib::Fluid::FluidProperty> density_l; + std::unique_ptr<MaterialLib::Fluid::FluidProperty> liquid_density; std::unique_ptr<MaterialLib::Fluid::FluidProperty> viscosity; /// Porous medium properties of different material zones. /// The vector is left empty if the property data are given in vtu file, /// e.g for heterogeneous medium. - std::vector<Eigen::MatrixXd> intrinsic_permeabiliy; + std::vector<Eigen::MatrixXd> intrinsic_permeability; std::vector<std::unique_ptr<MaterialLib::PorousMedium::Porosity>> porosity; std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>> storage; diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp index 368e1687363..c59dfdf1296 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp @@ -32,7 +32,7 @@ LiquidFlowProcess::LiquidFlowProcess( std::vector<std::reference_wrapper<ProcessVariable>>&& process_variables, SecondaryVariableCollection&& secondary_variables, NumLib::NamedFunctionCaller&& named_function_caller, - const bool compute_gravitational_term, + bool const compute_gravitational_term, BaseLib::ConfigTree const& config) : Process(mesh, std::move(jacobian_assembler), parameters, integration_order, @@ -105,20 +105,5 @@ void LiquidFlowProcess::assembleWithJacobianConcreteProcess( dx_dx, M, K, b, Jac); } -void LiquidFlowProcess::preTimestepConcreteProcess(GlobalVector const& x, - const double /*t*/, - const double /*delta_t*/) -{ - DBUG("New time step"); - - _p_previous_timestep = - MathLib::MatrixVectorTraits<GlobalVector>::newInstance(x); -} - -void LiquidFlowProcess::preIterationConcreteProcess(const unsigned /*iter*/, - GlobalVector const& /*x*/) -{ - // TODO -} } // end of namespace } // end of namespace diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.h b/ProcessLib/LiquidFlow/LiquidFlowProcess.h index 302602f106c..f19556e1294 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.h +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.h @@ -63,15 +63,9 @@ public: process_variables, SecondaryVariableCollection&& secondary_variables, NumLib::NamedFunctionCaller&& named_function_caller, - const bool compute_gravitational_term, + bool const compute_gravitational_term, BaseLib::ConfigTree const& config); - void preTimestepConcreteProcess(GlobalVector const& x, const double t, - const double delta_t) override; - - void preIterationConcreteProcess(const unsigned iter, - GlobalVector const& x) override; - bool isLinear() const override { return true; } private: void initializeConcreteProcess( @@ -92,8 +86,6 @@ private: std::vector<std::unique_ptr<LiquidFlowLocalAssemblerInterface>> _local_assemblers; - - std::unique_ptr<GlobalVector> _p_previous_timestep; }; } // end of namespace diff --git a/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp b/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp index 4ff94de527e..f948a6bcc5e 100644 --- a/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp +++ b/Tests/ProcessLib/LiquidFlow/TestLiquidFlowMaterialProperties.cpp @@ -81,16 +81,16 @@ TEST(ProcessLibLiquidFlow, checkLiquidFlowMaterialProperties) const double fac_T = 1. + beta * (T - T0); ASSERT_NEAR(rho0 / fac_T / (1. - (p - p0) / K), - lprop.density_l->getValue(vars), 1.e-10); + lprop.liquid_density->getValue(vars), 1.e-10); // Test the derivative with respect to temperature. ASSERT_NEAR(-beta * rho0 / (fac_T * fac_T) / (1. - (p - p0) / K), - lprop.density_l->getdValue(vars, PropertyVariableType::T), 1.e-10); + lprop.liquid_density->getdValue(vars, PropertyVariableType::T), 1.e-10); // Test the derivative with respect to pressure. const double fac_p = 1. - (p - p0) / K; ASSERT_NEAR(rho0 / (1. + beta * (T - T0)) / (fac_p * fac_p * K), - lprop.density_l->getdValue(vars, PropertyVariableType::pl), 1.e-10); + lprop.liquid_density->getdValue(vars, PropertyVariableType::pl), 1.e-10); // Check viscosity ArrayType vars1; @@ -101,7 +101,7 @@ TEST(ProcessLibLiquidFlow, checkLiquidFlowMaterialProperties) 1.e-5); // Check permeability - Eigen::MatrixXd& perm = lprop.intrinsic_permeabiliy[0]; + Eigen::MatrixXd& perm = lprop.intrinsic_permeability[0]; ASSERT_EQ(2.e-10, perm(0, 0)); ASSERT_EQ(0., perm(0, 1)); ASSERT_EQ(0., perm(0, 2)); -- GitLab