diff --git a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp index 8652773a330145eb3b47c8952624f78c7f304589..2a5b33ecb18e1e941935d96f5a9125424e1cec54 100644 --- a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp @@ -169,13 +169,6 @@ std::unique_ptr<Process> createHydroMechanicsProcess( "specific_gas_constant", std::numeric_limits<double>::quiet_NaN()); DBUG("Use 'specific_gas_constant' as specific gas constant."); - // Fluid compressibility - double const fluid_compressibility = - //! \ogs_file_param{prj__processes__process__HYDRO_MECHANICS__fluid_compressibility} - config.getConfigParameter<double>( - "fluid_compressibility", std::numeric_limits<double>::quiet_NaN()); - DBUG("Use 'fluid_compressibility' as fluid compressibility parameter."); - auto const fluid_type = FluidType::strToFluidType( //! \ogs_file_param{prj__processes__process__HYDRO_MECHANICS__fluid_type} @@ -193,8 +186,8 @@ std::unique_ptr<Process> createHydroMechanicsProcess( materialIDs(mesh), std::move(media_map), std::move(solid_constitutive_relations), initial_stress, specific_body_force, - fluid_compressibility, reference_temperature, - specific_gas_constant, fluid_type}; + reference_temperature, specific_gas_constant, + fluid_type}; SecondaryVariableCollection secondary_variables; diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h index 58d3263baf347ba99e1691ffba4ca7bda57756df..ef20b4c4919d99b2622d3db4b9cb0ae8df7b5b64 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h @@ -228,14 +228,14 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, auto const K_S = solid_material.getBulkModulus(t, x_position); auto const rho_sr = solid_phase.property(MPL::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) - ? N_p.dot(p) - : std::numeric_limits<double>::quiet_NaN(); - double const beta_p = _process_data.getFluidCompressibility(p_fr); + auto const rho_fr = gas_phase.property(MPL::PropertyType::density) .template value<double>(vars, x_position, t); + auto const beta_p = + gas_phase.property(MPL::PropertyType::density) + .template dValue<double>(vars, MPL::Variable::phase_pressure, + x_position, t) / rho_fr; + auto const porosity = solid_phase.property(MPL::PropertyType::porosity) .template value<double>(vars, x_position, t); auto const& identity2 = MathLib::KelvinVector::Invariants< @@ -450,14 +450,13 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, auto const alpha_b = solid_phase.property(MPL::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) - ? N_p.dot(p) - : std::numeric_limits<double>::quiet_NaN(); - double const beta_p = _process_data.getFluidCompressibility(p_fr); + auto const rho_fr = gas_phase.property(MPL::PropertyType::density) .template value<double>(vars, x_position, t); + auto const beta_p = + gas_phase.property(MPL::PropertyType::density) + .template dValue<double>(vars, MPL::Variable::phase_pressure, + x_position, t) / rho_fr; auto const porosity = solid_phase.property(MPL::PropertyType::porosity) .template value<double>(vars, x_position, t); auto const K_S = solid_material.getBulkModulus(t, x_position); diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h index f9cd065565a8db1ee13428c61e6310c72c973d74..af8a6fab75d2f71d9c7d4de07c3ba4309f761e60 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h @@ -56,11 +56,6 @@ struct HydroMechanicsProcessData /// A vector of displacement dimension's length. Eigen::Matrix<double, DisplacementDim, 1> const specific_body_force; - /// Fluid's compressibility. A scalar quantity. - /// Only used for compressible_fluid fluid_type - double const fluid_compressibility = - std::numeric_limits<double>::quiet_NaN(); - /// Reference Temperature. A scalar quantity. /// Only used for ideal_gas fluid_type double const reference_temperature = @@ -75,25 +70,6 @@ struct HydroMechanicsProcessData /// incompressible_fluid, compressible_fluid, ideal_gas FluidType::Fluid_Type const fluid_type; - - /// will be removed after linking with MPL - double getFluidCompressibility(double const& p_fr) - { - if (fluid_type == FluidType::Fluid_Type::INCOMPRESSIBLE_FLUID) - { - return 0.0; - } - if (fluid_type == FluidType::Fluid_Type::COMPRESSIBLE_FLUID) - { - return fluid_compressibility; - } - if (fluid_type == FluidType::Fluid_Type::IDEAL_GAS) - { - return 1.0 / p_fr; - } - OGS_FATAL("unknown fluid type %d", static_cast<int> (fluid_type)); - } - MeshLib::PropertyVector<double>* pressure_interpolated = nullptr; std::array<MeshLib::PropertyVector<double>*, 3> principal_stress_vector = { nullptr, nullptr, nullptr};