From ab1f227df408c3003c12cc30c4612f9c8480edbb Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Wed, 6 Dec 2017 14:20:43 +0100 Subject: [PATCH] [PL] LIE/HM: Separate FractureProperty for HM. --- ProcessLib/LIE/Common/FractureProperty.h | 6 ++++++ .../LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp | 4 ++-- ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h | 5 ++--- .../HydroMechanicsLocalAssemblerFracture-impl.h | 6 +++--- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ProcessLib/LIE/Common/FractureProperty.h b/ProcessLib/LIE/Common/FractureProperty.h index 5762392a594..4d4181f113d 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 eb08b52f095..4b0421a9e09 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 27c46ee08c6..7290c324466 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 6a009bdb979..303878dca3d 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 -- GitLab