From 99bb0a0c249097557ba19a8ff402b67ec25ab0f1 Mon Sep 17 00:00:00 2001 From: Florian Zill <florian.zill@ufz.de> Date: Fri, 24 Jan 2020 13:52:47 +0100 Subject: [PATCH] [HM] adapted solid density and biot to MPL --- .../CreateHydroMechanicsProcess.cpp | 22 ++++-------------- .../HydroMechanics/HydroMechanicsFEM-impl.h | 23 +++++++++++++++---- .../HydroMechanicsProcessData.h | 4 ---- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp index 26ad711fb42..06496c002e2 100644 --- a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp @@ -128,21 +128,6 @@ std::unique_ptr<Process> createHydroMechanicsProcess( "fluid_density", parameters, 1, &mesh); DBUG("Use '%s' as fluid density parameter.", fluid_density.name.c_str()); - // Biot coefficient - auto& biot_coefficient = ParameterLib::findParameter<double>( - config, - //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS__biot_coefficient} - "biot_coefficient", parameters, 1, &mesh); - DBUG("Use '%s' as Biot coefficient parameter.", - biot_coefficient.name.c_str()); - - // Solid density - auto& solid_density = ParameterLib::findParameter<double>( - config, - //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS__solid_density} - "solid_density", parameters, 1, &mesh); - DBUG("Use '%s' as solid density parameter.", solid_density.name.c_str()); - // Specific body force Eigen::Matrix<double, DisplacementDim, 1> specific_body_force; { @@ -166,7 +151,9 @@ std::unique_ptr<Process> createHydroMechanicsProcess( MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh); std::array const requiredGasProperties = {MaterialPropertyLib::viscosity}; - std::array const requiredSolidProperties = {MaterialPropertyLib::porosity}; + std::array const requiredSolidProperties = { + MaterialPropertyLib::porosity, MaterialPropertyLib::biot_coefficient, + MaterialPropertyLib::density}; for (auto const& m : media) { m.second->phase("Gas").checkRequiredProperties(requiredGasProperties); @@ -220,8 +207,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( materialIDs(mesh), std::move(media_map), std::move(solid_constitutive_relations), initial_stress, intrinsic_permeability, - fluid_density, biot_coefficient, - solid_density, specific_body_force, + fluid_density, specific_body_force, fluid_compressibility, reference_temperature, specific_gas_constant, fluid_type}; diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h index d0527129ee6..dbee0bf33b5 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h @@ -220,9 +220,14 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, double const K_over_mu = _process_data.intrinsic_permeability(t, x_position)[0] / mu; - auto const alpha = _process_data.biot_coefficient(t, x_position)[0]; + auto const alpha = + solid_phase + .property(MaterialPropertyLib::PropertyType::biot_coefficient) + .template value<double>(vars, x_position, t); auto const K_S = solid_material.getBulkModulus(t, x_position); - auto const rho_sr = _process_data.solid_density(t, x_position)[0]; + auto const rho_sr = + solid_phase.property(MaterialPropertyLib::PropertyType::density) + .template value<double>(vars, x_position, t); // TODO (FZill) get fluid properties from GPML double const p_fr = (_process_data.fluid_type == FluidType::Fluid_Type::IDEAL_GAS) @@ -438,7 +443,10 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, double const K_over_mu = _process_data.intrinsic_permeability(t, x_position)[0] / mu; - auto const alpha_b = _process_data.biot_coefficient(t, x_position)[0]; + auto const alpha_b = + solid_phase + .property(MaterialPropertyLib::PropertyType::biot_coefficient) + .template value<double>(vars, x_position, t); // TODO (FZill) get fluid properties from GPML double const p_fr = (_process_data.fluid_type == FluidType::Fluid_Type::IDEAL_GAS) @@ -542,8 +550,13 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, auto& eps = _ip_data[ip].eps; auto const& sigma_eff = _ip_data[ip].sigma_eff; - auto const alpha = _process_data.biot_coefficient(t, x_position)[0]; - auto const rho_sr = _process_data.solid_density(t, x_position)[0]; + auto const alpha = + solid_phase + .property(MaterialPropertyLib::PropertyType::biot_coefficient) + .template value<double>(vars, x_position, t); + auto const rho_sr = + solid_phase.property(MaterialPropertyLib::PropertyType::density) + .template value<double>(vars, x_position, t); auto const rho_fr = _process_data.fluid_density(t, x_position)[0]; auto const porosity = solid_phase.property(MaterialPropertyLib::PropertyType::porosity) diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h index 7f1d59f54f9..74b694ec7c1 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h @@ -56,10 +56,6 @@ struct HydroMechanicsProcessData ParameterLib::Parameter<double> const& intrinsic_permeability; /// Fluid's density. A scalar quantity, ParameterLib::Parameter<double>. ParameterLib::Parameter<double> const& fluid_density; - /// Biot coefficient. A scalar quantity, ParameterLib::Parameter<double>. - ParameterLib::Parameter<double> const& biot_coefficient; - /// Solid's density. A scalar quantity, ParameterLib::Parameter<double>. - ParameterLib::Parameter<double> const& solid_density; /// Specific body forces applied to solid and fluid. /// It is usually used to apply gravitational forces. /// A vector of displacement dimension's length. -- GitLab