Skip to content
Snippets Groups Projects
Commit 2fe391a6 authored by Christoph Lehmann's avatar Christoph Lehmann
Browse files

[PL/RM] Extracted some constitutive setting evaluations

... from assembleWithJacobian() into a separate method.
I added some constitutive data structs and reused some from TRM.
parent 066b01f0
No related branches found
No related tags found
No related merge requests found
Showing
with 410 additions and 180 deletions
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#pragma once #pragma once
#include "BaseLib/StrongType.h"
#include "MaterialLib/MPL/Medium.h" #include "MaterialLib/MPL/Medium.h"
#include "MathLib/KelvinVector.h" #include "MathLib/KelvinVector.h"
#include "ParameterLib/SpatialPosition.h" #include "ParameterLib/SpatialPosition.h"
...@@ -63,13 +64,7 @@ struct MediaData ...@@ -63,13 +64,7 @@ struct MediaData
MaterialPropertyLib::Phase const& solid; MaterialPropertyLib::Phase const& solid;
}; };
template <int DisplacementDim> using TemperatureData = BaseLib::StrongType<double, struct TemperatureDataTag>;
struct TemperatureData
{
double T;
double T_prev;
Eigen::Vector<double, DisplacementDim> grad_T;
};
template <int DisplacementDim> template <int DisplacementDim>
struct CapillaryPressureData struct CapillaryPressureData
......
...@@ -10,7 +10,17 @@ ...@@ -10,7 +10,17 @@
#pragma once #pragma once
#include "Density.h"
#include "LiquidDensity.h"
#include "ProcessLib/ConstitutiveRelations/Base.h" #include "ProcessLib/ConstitutiveRelations/Base.h"
#include "ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/Biot.h"
#include "ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.h"
#include "ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityData.h"
#include "ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/Porosity.h"
#include "ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/Saturation.h"
#include "ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/SolidCompressibilityData.h"
#include "SaturationSecantDerivative.h"
#include "StiffnessTensor.h"
namespace ProcessLib::RichardsMechanics namespace ProcessLib::RichardsMechanics
{ {
...@@ -29,7 +39,18 @@ using OutputData = std::tuple<>; ...@@ -29,7 +39,18 @@ using OutputData = std::tuple<>;
/// Data that is needed for the equation system assembly. /// Data that is needed for the equation system assembly.
template <int DisplacementDim> template <int DisplacementDim>
using ConstitutiveData = std::tuple<>; using ConstitutiveData = std::tuple<
// TODO (CL) check if all that data should stay here
StiffnessTensor<DisplacementDim>,
ProcessLib::ThermoRichardsMechanics::PorosityData, Density, LiquidDensity,
ProcessLib::ThermoRichardsMechanics::BiotData,
ProcessLib::ThermoRichardsMechanics::SaturationDataDeriv,
ProcessLib::ThermoRichardsMechanics::LiquidViscosityData,
ProcessLib::ThermoRichardsMechanics::SolidCompressibilityData,
ProcessLib::ThermoRichardsMechanics::BishopsData,
PrevState<ProcessLib::ThermoRichardsMechanics::BishopsData>,
ProcessLib::ThermoRichardsMechanics::PermeabilityData<DisplacementDim>,
SaturationSecantDerivative>;
/// Data that stores intermediate values, which are not needed outside the /// Data that stores intermediate values, which are not needed outside the
/// constitutive setting. /// constitutive setting.
......
...@@ -14,19 +14,19 @@ namespace ProcessLib::RichardsMechanics ...@@ -14,19 +14,19 @@ namespace ProcessLib::RichardsMechanics
{ {
template <int DisplacementDim> template <int DisplacementDim>
void ConstitutiveSetting<DisplacementDim>::eval( void ConstitutiveSetting<DisplacementDim>::eval(
ConstitutiveModels<DisplacementDim>& models, double const t, ConstitutiveModels<DisplacementDim>& /*models*/, double const /*t*/,
double const dt, ParameterLib::SpatialPosition const& x_position, double const /*dt*/, ParameterLib::SpatialPosition const& /*x_position*/,
MaterialPropertyLib::Medium const& medium, MaterialPropertyLib::Medium const& /*medium*/,
TemperatureData<DisplacementDim> const& T_data, TemperatureData const /*T_data*/,
CapillaryPressureData<DisplacementDim> const& p_cap_data, CapillaryPressureData<DisplacementDim> const& /*p_cap_data*/,
KelvinVector<DisplacementDim> const& eps_arg, KelvinVector<DisplacementDim> const& /*eps_arg*/,
StatefulData<DisplacementDim>& state, StatefulData<DisplacementDim>& /*state*/,
StatefulDataPrev<DisplacementDim> const& prev_state, StatefulDataPrev<DisplacementDim> const& /*prev_state*/,
ProcessLib::ThermoRichardsMechanics::MaterialStateData<DisplacementDim>& ProcessLib::ThermoRichardsMechanics::MaterialStateData<DisplacementDim>&
mat_state, /*mat_state*/,
ConstitutiveTempData<DisplacementDim>& tmp, ConstitutiveTempData<DisplacementDim>& /*tmp*/,
OutputData<DisplacementDim>& out, OutputData<DisplacementDim>& /*out*/,
ConstitutiveData<DisplacementDim>& cd) const ConstitutiveData<DisplacementDim>& /*cd*/) const
{ {
} }
......
...@@ -24,8 +24,7 @@ struct ConstitutiveSetting ...@@ -24,8 +24,7 @@ struct ConstitutiveSetting
void eval( void eval(
ConstitutiveModels<DisplacementDim>& models, double const t, ConstitutiveModels<DisplacementDim>& models, double const t,
double const dt, ParameterLib::SpatialPosition const& x_position, double const dt, ParameterLib::SpatialPosition const& x_position,
MaterialPropertyLib::Medium const& medium, MaterialPropertyLib::Medium const& medium, TemperatureData const T_data,
TemperatureData<DisplacementDim> const& T_data,
CapillaryPressureData<DisplacementDim> const& p_cap_data, CapillaryPressureData<DisplacementDim> const& p_cap_data,
KelvinVector<DisplacementDim> const& eps_arg, KelvinVector<DisplacementDim> const& eps_arg,
StatefulData<DisplacementDim>& state, StatefulData<DisplacementDim>& state,
......
/**
* \file
* \copyright
* Copyright (c) 2012-2024, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include "BaseLib/StrongType.h"
namespace ProcessLib::RichardsMechanics
{
// effective density of both the solid and fluid phases
using Density = BaseLib::StrongType<double, struct DensityTag>;
} // namespace ProcessLib::RichardsMechanics
/**
* \file
* \copyright
* Copyright (c) 2012-2024, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include "BaseLib/StrongType.h"
namespace ProcessLib::RichardsMechanics
{
using EffectivePorePressure =
BaseLib::StrongType<double, struct EffectivePorePressureTag>;
} // namespace ProcessLib::RichardsMechanics
/**
* \file
* \copyright
* Copyright (c) 2012-2024, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include "BaseLib/StrongType.h"
namespace ProcessLib::RichardsMechanics
{
using LiquidDensity = BaseLib::StrongType<double, struct LiquidDensityTag>;
} // namespace ProcessLib::RichardsMechanics
/**
* \file
* \copyright
* Copyright (c) 2012-2024, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include "Base.h"
namespace ProcessLib::RichardsMechanics
{
struct SaturationSecantDerivative
{
double DeltaS_L_Deltap_cap = nan;
};
} // namespace ProcessLib::RichardsMechanics
/**
* \file
* \copyright
* Copyright (c) 2012-2024, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include "Base.h"
namespace ProcessLib::RichardsMechanics
{
template <int DisplacementDim>
using StiffnessTensor = BaseLib::StrongType<KelvinMatrix<DisplacementDim>,
struct StiffnessTensorTag>;
} // namespace ProcessLib::RichardsMechanics
This diff is collapsed.
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
#include <memory> #include <memory>
#include <vector> #include <vector>
#include "ConstitutiveRelations/Base.h"
#include "ConstitutiveRelations/ConstitutiveData.h"
#include "IntegrationPointData.h" #include "IntegrationPointData.h"
#include "LocalAssemblerInterface.h" #include "LocalAssemblerInterface.h"
#include "MaterialLib/MPL/VariableType.h" #include "MaterialLib/MPL/VariableType.h"
...@@ -328,6 +330,14 @@ private: ...@@ -328,6 +330,14 @@ private:
getMaterialStateVariablesAt(unsigned integration_point) const override; getMaterialStateVariablesAt(unsigned integration_point) const override;
private: private:
void assembleWithJacobianEvalConstitutiveSetting(
double const t, double const dt,
ParameterLib::SpatialPosition const& x_position, IpData& ip_data,
MPL::VariableArray& variables, MPL::VariableArray& variables_prev,
MPL::Medium const* const medium, TemperatureData const T_data,
CapillaryPressureData<DisplacementDim> const& p_cap_data,
ConstitutiveData<DisplacementDim>& CD);
RichardsMechanicsProcessData<DisplacementDim>& _process_data; RichardsMechanicsProcessData<DisplacementDim>& _process_data;
std::vector<IpData, Eigen::aligned_allocator<IpData>> _ip_data; std::vector<IpData, Eigen::aligned_allocator<IpData>> _ip_data;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment