Commit 213332e4 authored by Dmitry Yu. Naumov's avatar Dmitry Yu. Naumov

[PL/RM] Add micro pressure and saturation sec. out

parent 26050545
......@@ -64,6 +64,22 @@ struct LocalAssemblerInterface : public ProcessLib::LocalAssemblerInterface,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
std::vector<double>& cache) const = 0;
virtual std::vector<double> getMicroSaturation() const = 0;
virtual std::vector<double> const& getIntPtMicroSaturation(
const double t,
std::vector<GlobalVector*> const& x,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
std::vector<double>& cache) const = 0;
virtual std::vector<double> getMicroPressure() const = 0;
virtual std::vector<double> const& getIntPtMicroPressure(
const double t,
std::vector<GlobalVector*> const& x,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
std::vector<double>& cache) const = 0;
virtual std::vector<double> getPorosity() const = 0;
virtual std::vector<double> const& getIntPtPorosity(
......
......@@ -1250,6 +1250,58 @@ std::vector<double> const& RichardsMechanicsLocalAssembler<
_ip_data, &IpData::saturation, cache);
}
template <typename ShapeFunctionDisplacement, typename ShapeFunctionPressure,
typename IntegrationMethod, int DisplacementDim>
std::vector<double> RichardsMechanicsLocalAssembler<
ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod,
DisplacementDim>::getMicroSaturation() const
{
std::vector<double> result;
getIntPtMicroSaturation(0, {}, {}, result);
return result;
}
template <typename ShapeFunctionDisplacement, typename ShapeFunctionPressure,
typename IntegrationMethod, int DisplacementDim>
std::vector<double> const& RichardsMechanicsLocalAssembler<
ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod,
DisplacementDim>::
getIntPtMicroSaturation(
const double /*t*/,
std::vector<GlobalVector*> const& /*x*/,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& /*dof_table*/,
std::vector<double>& cache) const
{
return ProcessLib::getIntegrationPointScalarData(
_ip_data, &IpData::saturation_m, cache);
}
template <typename ShapeFunctionDisplacement, typename ShapeFunctionPressure,
typename IntegrationMethod, int DisplacementDim>
std::vector<double> RichardsMechanicsLocalAssembler<
ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod,
DisplacementDim>::getMicroPressure() const
{
std::vector<double> result;
getIntPtMicroPressure(0, {}, {}, result);
return result;
}
template <typename ShapeFunctionDisplacement, typename ShapeFunctionPressure,
typename IntegrationMethod, int DisplacementDim>
std::vector<double> const& RichardsMechanicsLocalAssembler<
ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod,
DisplacementDim>::
getIntPtMicroPressure(
const double /*t*/,
std::vector<GlobalVector*> const& /*x*/,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& /*dof_table*/,
std::vector<double>& cache) const
{
return ProcessLib::getIntegrationPointScalarData(
_ip_data, &IpData::liquid_pressure_m, cache);
}
template <typename ShapeFunctionDisplacement, typename ShapeFunctionPressure,
typename IntegrationMethod, int DisplacementDim>
std::vector<double> RichardsMechanicsLocalAssembler<
......
......@@ -189,6 +189,20 @@ public:
std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
std::vector<double>& cache) const override;
std::vector<double> getMicroSaturation() const override;
std::vector<double> const& getIntPtMicroSaturation(
const double t,
std::vector<GlobalVector*> const& x,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
std::vector<double>& cache) const override;
std::vector<double> getMicroPressure() const override;
std::vector<double> const& getIntPtMicroPressure(
const double t,
std::vector<GlobalVector*> const& x,
std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
std::vector<double>& cache) const override;
std::vector<double> getPorosity() const override;
std::vector<double> const& getIntPtPorosity(
const double t,
......
......@@ -314,6 +314,12 @@ void RichardsMechanicsProcess<DisplacementDim>::initializeConcreteProcess(
add_secondary_variable("saturation", 1,
&LocalAssemblerIF::getIntPtSaturation);
add_secondary_variable("micro_saturation", 1,
&LocalAssemblerIF::getIntPtMicroSaturation);
add_secondary_variable("micro_pressure", 1,
&LocalAssemblerIF::getIntPtMicroPressure);
add_secondary_variable("porosity", 1,
&LocalAssemblerIF::getIntPtPorosity);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment