diff --git a/ProcessLib/LIE/Common/FractureProperty.h b/ProcessLib/LIE/Common/FractureProperty.h index 5762392a5945e986acead383886c937b94540853..4d4181f113d65fa58bdfdd41cc9c1df8b23a945a 100644 --- a/ProcessLib/LIE/Common/FractureProperty.h +++ b/ProcessLib/LIE/Common/FractureProperty.h @@ -36,6 +36,12 @@ struct FractureProperty Eigen::MatrixXd R; /// Initial aperture ProcessLib::Parameter<double> const* aperture0 = nullptr; + + virtual ~FractureProperty() = default; +}; + +struct FracturePropertyHM : public FractureProperty +{ ProcessLib::Parameter<double> const* specific_storage = nullptr; ProcessLib::Parameter<double> const* biot_coefficient = nullptr; }; diff --git a/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp index eb08b52f095a072364604b5678cd901d81e3ff37..4b0421a9e09c886335288d050bac9aab2a0d7111 100644 --- a/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp +++ b/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp @@ -257,7 +257,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( } // Fracture properties - std::unique_ptr<FractureProperty> frac_prop = nullptr; + std::unique_ptr<FracturePropertyHM> frac_prop = nullptr; auto opt_fracture_properties_config = //! \ogs_file_param{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__fracture_properties} config.getConfigSubtreeOptional("fracture_properties"); @@ -265,7 +265,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( { auto& fracture_properties_config = *opt_fracture_properties_config; - frac_prop = std::make_unique<ProcessLib::LIE::FractureProperty>(); + frac_prop = std::make_unique<ProcessLib::LIE::FracturePropertyHM>(); frac_prop->mat_id = //! \ogs_file_param{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__fracture_properties__material_id} fracture_properties_config.getConfigParameter<int>("material_id"); diff --git a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h index 27c46ee08c6db1a525571db9952c1f4e56fbb8ec..7290c32446604f7519efa628c134e1d7b99b9d19 100644 --- a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h +++ b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h @@ -49,7 +49,7 @@ struct HydroMechanicsProcessData specific_body_force_, std::unique_ptr<MaterialLib::Fracture::FractureModelBase<GlobalDim>>&& fracture_model, - std::unique_ptr<FractureProperty>&& fracture_prop, + std::unique_ptr<FracturePropertyHM>&& fracture_prop, Parameter<double> const& initial_effective_stress_, Parameter<double> const& initial_fracture_effective_stress_, bool const deactivate_matrix_in_flow_) @@ -113,8 +113,7 @@ struct HydroMechanicsProcessData Eigen::Matrix<double, GlobalDim, 1> const specific_body_force; std::unique_ptr<MaterialLib::Fracture::FractureModelBase<GlobalDim>> fracture_model; - std::unique_ptr<FractureProperty> fracture_property; - + std::unique_ptr<FracturePropertyHM> fracture_property; Parameter<double> const& initial_effective_stress; Parameter<double> const& initial_fracture_effective_stress; diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h index 6a009bdb9795e10469ffcba73c361320449f0f9d..303878dca3d46c1e66ee723791cf6a65dd9a8b8e 100644 --- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h +++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h @@ -61,7 +61,7 @@ HydroMechanicsLocalAssemblerFracture<ShapeFunctionDisplacement, IntegrationMethod, GlobalDim>(e, is_axially_symmetric, integration_method); - auto const& frac_prop = *_process_data.fracture_property.get(); + auto const& frac_prop = *_process_data.fracture_property; SpatialPosition x_position; x_position.setElementID(e.getID()); @@ -164,7 +164,7 @@ void HydroMechanicsLocalAssemblerFracture<ShapeFunctionDisplacement, Eigen::Ref<Eigen::MatrixXd> J_gp) { - FractureProperty const& frac_prop = *_process_data.fracture_property; + auto const& frac_prop = *_process_data.fracture_property; auto const& R = frac_prop.R; double const& dt = _process_data.dt; @@ -326,7 +326,7 @@ void HydroMechanicsLocalAssemblerFracture<ShapeFunctionDisplacement, auto const nodal_p = local_x.segment(pressure_index, pressure_size); auto const nodal_g = local_x.segment(displacement_index, displacement_size); - FractureProperty const& frac_prop = *_process_data.fracture_property; + auto const& frac_prop = *_process_data.fracture_property; auto const& R = frac_prop.R; // the index of a normal (normal to a fracture plane) component // in a displacement vector