Commit 4ee6c235 authored by GILLES Sebastien's avatar GILLES Sebastien
Browse files

#1022 I modified the interface so that fluidmass quantities could be computed...

#1022 I modified the interface so that fluidmass quantities could be computed on the fluid mesh... for nothing: Newton converges much slowly this way, and rereading Bruno's mail we do not want to do that. So I'll keep some of them and revert others in next commit.
parent 4aca1fe9
......@@ -1873,8 +1873,6 @@
BECC34B61DCBA76400597517 /* ComputePatternHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BECC34AD1DCBA76400597517 /* ComputePatternHelper.cpp */; };
BECC34B71DCBA76400597517 /* ComputePatternHelper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BECC34AE1DCBA76400597517 /* ComputePatternHelper.hpp */; };
BECC34B81DCBA76400597517 /* ComputePatternHelper.hxx in Headers */ = {isa = PBXBuildFile; fileRef = BECC34AF1DCBA76400597517 /* ComputePatternHelper.hxx */; };
BECC34C11DCBA82500597517 /* PressureAtQuadPt.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BECC34BF1DCBA82500597517 /* PressureAtQuadPt.hpp */; };
BECC34C21DCBA82500597517 /* PressureAtQuadPt.hxx in Headers */ = {isa = PBXBuildFile; fileRef = BECC34C01DCBA82500597517 /* PressureAtQuadPt.hxx */; };
BED63A3E1D9D625A00AAC144 /* main_ensight_output.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED63A3D1D9D625A00AAC144 /* main_ensight_output.cpp */; };
BED699FE1D8F2F1500DF55CB /* WriteDataHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BED699FA1D8F2F1500DF55CB /* WriteDataHelper.cpp */; };
BED748EB190674B500BAB761 /* libCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE05B52916D238FE000E248D /* libCore.a */; };
......@@ -6483,8 +6481,6 @@
BECC34AD1DCBA76400597517 /* ComputePatternHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComputePatternHelper.cpp; sourceTree = "<group>"; };
BECC34AE1DCBA76400597517 /* ComputePatternHelper.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ComputePatternHelper.hpp; sourceTree = "<group>"; };
BECC34AF1DCBA76400597517 /* ComputePatternHelper.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ComputePatternHelper.hxx; sourceTree = "<group>"; };
BECC34BF1DCBA82500597517 /* PressureAtQuadPt.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = PressureAtQuadPt.hpp; sourceTree = "<group>"; };
BECC34C01DCBA82500597517 /* PressureAtQuadPt.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = PressureAtQuadPt.hxx; sourceTree = "<group>"; };
BECCA6D61C97F8F30061FAD3 /* M3DISIM-HappyHeart.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "M3DISIM-HappyHeart.xcodeproj"; path = "M3DISIM/M3DISIM-HappyHeart.xcodeproj"; sourceTree = "<group>"; };
BECCE67818EAE16A0043D5DB /* QuadraturePoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QuadraturePoint.cpp; sourceTree = "<group>"; };
BECCE67918EAE16A0043D5DB /* QuadraturePoint.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = QuadraturePoint.hpp; sourceTree = "<group>"; };
......@@ -12073,8 +12069,6 @@
BECC34BC1DCBA82500597517 /* Parameter */ = {
isa = PBXGroup;
children = (
BECC34BF1DCBA82500597517 /* PressureAtQuadPt.hpp */,
BECC34C01DCBA82500597517 /* PressureAtQuadPt.hxx */,
BE1D9E231DD086A900C1D355 /* UpdatePressureAtQuadPt.hpp */,
BE1D9E241DD086A900C1D355 /* UpdatePressureAtQuadPt.hxx */,
BECC34BD1DCBA82500597517 /* Local */,
......@@ -13141,12 +13135,10 @@
BEEE97991DCB279B0061727F /* SolidDeltaResidual.hxx in Headers */,
BEEE979D1DCB27A40061727F /* SolidDeltaResidual.hxx in Headers */,
BE71B9181DB75AE5005DCB59 /* VariationalFormulationAccessors.hxx in Headers */,
BECC34C21DCBA82500597517 /* PressureAtQuadPt.hxx in Headers */,
BE71B9401DB75AE5005DCB59 /* Policy.hxx in Headers */,
BEEE97AA1DCB28BA0061727F /* CauchyGreenAccess.hpp in Headers */,
BE71B93A1DB75AE5005DCB59 /* VariationalFormulation.hpp in Headers */,
BE1D9E2A1DD086B900C1D355 /* UpdatePressureAtQuadPt.hxx in Headers */,
BECC34C11DCBA82500597517 /* PressureAtQuadPt.hpp in Headers */,
BE71B9281DB75AE5005DCB59 /* T21.hpp in Headers */,
BE8DD6B11DB7AF7F005E9089 /* VariationalFormulationInit.hxx in Headers */,
BE1D9E261DD086A900C1D355 /* UpdatePressureAtQuadPt.hxx in Headers */,
......@@ -34,6 +34,15 @@ namespace HappyHeart
{
enum class TimeLabel
{
new_value = 0,
current,
former
};
/*!
* \brief Class in charge of holding the various fluid mass vectors and parameters that might be used in
* the model.
......@@ -166,6 +175,17 @@ namespace HappyHeart
* \brief Same as GetCurrentMinusFormerOnSolid() except no value returned.
*/
void ReevaluateCurrentMinusFormerOnSolid() const noexcept;
/*!
* \brief Same as GetNewMinusCurrentOnFluid() except no value returned.
*/
void ReevaluateNewMinusCurrentOnFluid() const noexcept;
/*!
* \brief Same as GetCurrentMinusFormerOnFluid() except no value returned.
*/
void ReevaluateCurrentMinusFormerOnFluid() const noexcept;
//! Access to new fluid mass parameter at iteration {n + 1}.
......@@ -182,6 +202,12 @@ namespace HappyHeart
//! Access to current minus former fluid mass parameter.
const ParameterAtDof<ParameterNS::Type::scalar>& GetCurrentMinusFormerOnSolidAsParam() const noexcept;
//! Access to new minus current fluid mass parameter.
const ParameterAtDof<ParameterNS::Type::scalar>& GetNewMinusCurrentOnFluidAsParam() const noexcept;
//! Access to current minus former fluid mass parameter.
const ParameterAtDof<ParameterNS::Type::scalar>& GetCurrentMinusFormerOnFluidAsParam() const noexcept;
/*!
......@@ -254,7 +280,18 @@ namespace HappyHeart
//! Interpolator holder.
const InterpolatorHolder& GetInterpolatorHolder() const noexcept;
/*!
* \brief Get the relevant difference given time label and mesh considered.
*
*/
template
<
MeshIndex MeshIndexT
>
const ParameterAtDof<ParameterNS::Type::scalar>& GetDifferenceAsParam(DataNS::TimeLabel time_label) const noexcept;
private:
......
......@@ -109,6 +109,30 @@ namespace HappyHeart
assert(!(!current_minus_former_as_param_[EnumUnderlyingType(InternalMeshIndex::solid)]));
return *current_minus_former_as_param_[EnumUnderlyingType(InternalMeshIndex::solid)];
}
inline const ParameterAtDof<ParameterNS::Type::scalar, ParameterNS::TimeDependencyNS::None>&
Fluidmass
::GetNewMinusCurrentOnFluidAsParam() const noexcept
{
ReevaluateNewMinusCurrentOnFluid();
assert(!(!new_minus_current_as_param_[EnumUnderlyingType(InternalMeshIndex::fluid)]));
return *new_minus_current_as_param_[EnumUnderlyingType(InternalMeshIndex::fluid)];
}
inline const ParameterAtDof<ParameterNS::Type::scalar, ParameterNS::TimeDependencyNS::None>&
Fluidmass
::GetCurrentMinusFormerOnFluidAsParam() const noexcept
{
ReevaluateCurrentMinusFormerOnFluid();
assert(!(!current_minus_former_as_param_[EnumUnderlyingType(InternalMeshIndex::fluid)]));
return *current_minus_former_as_param_[EnumUnderlyingType(InternalMeshIndex::fluid)];
}
inline const GlobalVector& Fluidmass::GetDeltaOnSolid() const noexcept
......@@ -144,12 +168,6 @@ namespace HappyHeart
}
inline void Fluidmass::ReevaluateNewMinusCurrentOnSolid() const noexcept
{
decltype(auto) new_value = GetNewMinusCurrentOnSolid(); // lazy reevaluation may occur here.
static_cast<void>(new_value);
}
inline const GlobalVector& Fluidmass::GetFormerOnFluid() const noexcept
{
......@@ -164,6 +182,14 @@ namespace HappyHeart
}
inline void Fluidmass::ReevaluateNewMinusCurrentOnSolid() const noexcept
{
decltype(auto) new_value = GetNewMinusCurrentOnSolid(); // lazy reevaluation may occur here.
static_cast<void>(new_value);
}
inline void Fluidmass::ReevaluateCurrentMinusFormerOnSolid() const noexcept
{
decltype(auto) new_value = GetCurrentMinusFormerOnSolid(); // lazy reevaluation may occur here.
......@@ -171,11 +197,65 @@ namespace HappyHeart
}
inline void Fluidmass::ReevaluateNewMinusCurrentOnFluid() const noexcept
{
decltype(auto) new_value = GetNewMinusCurrentOnFluid(); // lazy reevaluation may occur here.
static_cast<void>(new_value);
}
inline void Fluidmass::ReevaluateCurrentMinusFormerOnFluid() const noexcept
{
decltype(auto) new_value = GetCurrentMinusFormerOnFluid(); // lazy reevaluation may occur here.
static_cast<void>(new_value);
}
inline const InterpolatorHolder& Fluidmass::GetInterpolatorHolder() const noexcept
{
return interpolator_holder_;
}
template
<
MeshIndex MeshIndexT
>
const ParameterAtDof<ParameterNS::Type::scalar>& Fluidmass
::GetDifferenceAsParam(const DataNS::TimeLabel time_label) const noexcept
{
switch(MeshIndexT)
{
case MeshIndex::solid:
{
switch(time_label)
{
case DataNS::TimeLabel::new_value:
return GetNewMinusCurrentOnSolidAsParam();
case DataNS::TimeLabel::current:
return GetCurrentMinusFormerOnSolidAsParam();
case DataNS::TimeLabel::former:
assert(false && "Wouldn't make sense ('new_value' gives val{n+1} - val{n} and 'current'val{n} - val{n - 1}).");
exit(EXIT_FAILURE);
}
}
case MeshIndex::fluid:
{
switch(time_label)
{
case DataNS::TimeLabel::new_value:
return GetNewMinusCurrentOnFluidAsParam();
case DataNS::TimeLabel::current:
return GetCurrentMinusFormerOnFluidAsParam();
case DataNS::TimeLabel::former:
assert(false && "Wouldn't make sense ('new_value' gives val{n+1} - val{n} and 'current'val{n} - val{n - 1}).");
exit(EXIT_FAILURE);
}
}
} // switch(MeshIndexT)
assert(false);
exit(EXIT_FAILURE);
}
......
......@@ -40,9 +40,13 @@ namespace HappyHeart
ParameterAtQuadraturePoint<::HappyHeart::ParameterNS::Type::scalar>;
//! Alias to pressure parameter operator.
template<MeshIndex MeshIndexT>
template
<
MeshIndex MeshIndexT,
TimeLabel TimeLabelT
>
using pressure_parameter_operator_type =
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndexT>;
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndexT, TimeLabelT>;
//! \copydoc doxygen_hide_alias_self
using self = NewFluidPressure<HyperelasticLawT>;
......@@ -84,10 +88,10 @@ namespace HappyHeart
public:
//! Operator which updates pressure parameter on solid mesh.
pressure_parameter_operator_type<MeshIndex::solid>& GetNonCstUpdatePressureParamOnSolid() noexcept;
pressure_parameter_operator_type<MeshIndex::solid, TimeLabel::new_value>& GetNonCstUpdatePressureParamOnSolid() noexcept;
//! Operator which updates pressure parameter on solid mesh.
pressure_parameter_operator_type<MeshIndex::fluid>& GetNonCstUpdatePressureParamOnFluid() noexcept;
pressure_parameter_operator_type<MeshIndex::fluid, TimeLabel::new_value>& GetNonCstUpdatePressureParamOnFluid() noexcept;
//! Hyperelastic law.
const HyperelasticLawT& GetHyperelasticLaw() const noexcept;
......@@ -99,13 +103,13 @@ namespace HappyHeart
typename pressure_parameter_type::unique_ptr pressure_parameter_on_solid_ = nullptr;
//! Operator which updates pressure parameter.
typename pressure_parameter_operator_type<MeshIndex::solid>::unique_ptr update_pressure_param_on_solid_ = nullptr;
typename pressure_parameter_operator_type<MeshIndex::solid, TimeLabel::new_value>::unique_ptr update_pressure_param_on_solid_ = nullptr;
//! Pressure parameter.
typename pressure_parameter_type::unique_ptr pressure_parameter_on_fluid_ = nullptr;
//! Operator which updates pressure parameter.
typename pressure_parameter_operator_type<MeshIndex::fluid>::unique_ptr update_pressure_param_on_fluid_ = nullptr;
typename pressure_parameter_operator_type<MeshIndex::fluid, TimeLabel::new_value>::unique_ptr update_pressure_param_on_fluid_ = nullptr;
//! Hyperelastic law.
const HyperelasticLawT& hyperelastic_law_;
......
......@@ -66,7 +66,7 @@ namespace HappyHeart
decltype(auto) hyperelastic_law = GetHyperelasticLaw();
update_pressure_param_on_solid_ =
std::make_unique<pressure_parameter_operator_type<MeshIndex::solid>>(solid_felt_space,
std::make_unique<pressure_parameter_operator_type<MeshIndex::solid, TimeLabel::new_value>>(solid_felt_space,
solid_displacement_unknown,
*pressure_parameter_on_solid_,
hyperelastic_law,
......@@ -83,7 +83,7 @@ namespace HappyHeart
time_manager);
update_pressure_param_on_fluid_ =
std::make_unique<pressure_parameter_operator_type<MeshIndex::fluid>>(fluid_felt_space,
std::make_unique<pressure_parameter_operator_type<MeshIndex::fluid, TimeLabel::new_value>>(fluid_felt_space,
solid_displacement_unknown,
*pressure_parameter_on_fluid_,
hyperelastic_law,
......@@ -100,7 +100,7 @@ namespace HappyHeart
template<class HyperelasticLawT>
typename NewFluidPressure<HyperelasticLawT>::template pressure_parameter_operator_type<MeshIndex::solid>&
typename NewFluidPressure<HyperelasticLawT>::template pressure_parameter_operator_type<MeshIndex::solid, TimeLabel::new_value>&
NewFluidPressure<HyperelasticLawT>::GetNonCstUpdatePressureParamOnSolid() noexcept
{
assert(!(!update_pressure_param_on_solid_));
......@@ -109,7 +109,7 @@ namespace HappyHeart
template<class HyperelasticLawT>
typename NewFluidPressure<HyperelasticLawT>::template pressure_parameter_operator_type<MeshIndex::fluid>&
typename NewFluidPressure<HyperelasticLawT>::template pressure_parameter_operator_type<MeshIndex::fluid, TimeLabel::new_value>&
NewFluidPressure<HyperelasticLawT>::GetNonCstUpdatePressureParamOnFluid() noexcept
{
assert(!(!update_pressure_param_on_fluid_));
......
//! \file
//
//
// FluidmassEnum.hpp
// HappyHeart
//
// Created by Sebastien Gilles on 29/08/16.
// Copyright © 2016 Inria. All rights reserved.
//
#ifndef HAPPY_HEART_x_MODEL_INSTANCES_x_UNDER_DEVELOPMENT_x_POROMECHANICS_x_HYPERELASTIC_LAW_x_FLUIDMASS_ENUM_HPP_
# define HAPPY_HEART_x_MODEL_INSTANCES_x_UNDER_DEVELOPMENT_x_POROMECHANICS_x_HYPERELASTIC_LAW_x_FLUIDMASS_ENUM_HPP_
namespace HappyHeart
{
namespace PoromechanicsNS
{
namespace FluidmassNS
{
enum class TimeLabel
{
new_value = 0,
current
};
} // namespace FluidmassNS
} // namespace PoromechanicsNS
} // namespace HappyHeart
#endif // HAPPY_HEART_x_MODEL_INSTANCES_x_UNDER_DEVELOPMENT_x_POROMECHANICS_x_HYPERELASTIC_LAW_x_FLUIDMASS_ENUM_HPP_
......@@ -18,7 +18,6 @@
# include "Operators/LocalVariationalOperator/CauchyAndInvariant/InvariantHolder.hpp"
# include "ModelInstances/UnderDevelopment/Poromechanics/HyperelasticLaw/FluidmassEnum.hpp"
# include "ModelInstances/UnderDevelopment/Poromechanics/Data/Fluidmass.hpp"
......@@ -120,39 +119,39 @@ namespace HappyHeart
double W(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label = FluidmassNS::TimeLabel::new_value) const;
DataNS::TimeLabel time_label = DataNS::TimeLabel::new_value) const;
//! Part of W not present in the 'classic' PoroHyperelasticLaw law.
double Wbulk(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label = FluidmassNS::TimeLabel::new_value) const;
DataNS::TimeLabel time_label = DataNS::TimeLabel::new_value) const;
//! Derivative of W with respect of third invariant (dWdI3).
double FirstDerivativeWThirdInvariant(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label = FluidmassNS::TimeLabel::new_value) const;
DataNS::TimeLabel time_label = DataNS::TimeLabel::new_value) const;
//! Second derivative of W with respect of third invariant (d2WdI3dI3).
double SecondDerivativeWThirdInvariant(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label = FluidmassNS::TimeLabel::new_value) const;
DataNS::TimeLabel time_label = DataNS::TimeLabel::new_value) const;
//! Derivative of W with respect of fluid mass.
double FirstDerivativeWFluidMass(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label = FluidmassNS::TimeLabel::new_value) const;
DataNS::TimeLabel time_label = DataNS::TimeLabel::new_value) const;
//! Second derivative of W with respect of fluid mass.
double SecondDerivativeWwrtFluidMass(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label = FluidmassNS::TimeLabel::new_value) const;
DataNS::TimeLabel time_label = DataNS::TimeLabel::new_value) const;
//! Second derivative of W with respect of fluid mass and first invariant.
static constexpr double SecondDerivativeWwrtFirstInvariantAndFluidMass(const InvariantHolder& invariant_holder,
......@@ -168,7 +167,7 @@ namespace HappyHeart
double SecondDerivativeWwrtThirdInvariantAndFluidMass(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label = FluidmassNS::TimeLabel::new_value) const;
DataNS::TimeLabel time_label = DataNS::TimeLabel::new_value) const;
//! Accessor to fluidmass data.
......@@ -180,7 +179,7 @@ namespace HappyHeart
const ScalarParameter<>& GetBulkSolid() const noexcept;
//! Fluid mass.
const ParameterAtDof<ParameterNS::Type::scalar>& GetFluidMass(FluidmassNS::TimeLabel time_label) const noexcept;
const ParameterAtDof<ParameterNS::Type::scalar>& GetFluidMass(DataNS::TimeLabel time_label) const noexcept;
/*!
* \brief Initial porosity.
......
......@@ -50,7 +50,7 @@ namespace HappyHeart
double PoroHyperelasticLaw<HyperelasticLawT>::Wbulk(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label) const
DataNS::TimeLabel time_label) const
{
const double sqrt_I3 = std::sqrt(invariant_holder.GetInvariant<3>());
......@@ -84,7 +84,7 @@ namespace HappyHeart
double PoroHyperelasticLaw<HyperelasticLawT>::FirstDerivativeWThirdInvariant(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label) const
DataNS::TimeLabel time_label) const
{
double ret = GetOriginalLaw().FirstDerivativeWThirdInvariant(invariant_holder,
quadrature_point,
......@@ -116,7 +116,7 @@ namespace HappyHeart
double PoroHyperelasticLaw<HyperelasticLawT>::SecondDerivativeWThirdInvariant(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label) const
DataNS::TimeLabel time_label) const
{
double ret = GetOriginalLaw().SecondDerivativeWThirdInvariant(invariant_holder, quadrature_point, geom_elt);
......@@ -149,7 +149,7 @@ namespace HappyHeart
double PoroHyperelasticLaw<HyperelasticLawT>::FirstDerivativeWFluidMass(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label) const
DataNS::TimeLabel time_label) const
{
const double bulk_solid = GetBulkSolid().GetValue(quadrature_point, geom_elt);
......@@ -182,7 +182,7 @@ namespace HappyHeart
double PoroHyperelasticLaw<HyperelasticLawT>::SecondDerivativeWwrtFluidMass(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label) const
DataNS::TimeLabel time_label) const
{
const double bulk_solid = GetBulkSolid().GetValue(quadrature_point, geom_elt);
......@@ -210,7 +210,7 @@ namespace HappyHeart
::SecondDerivativeWwrtThirdInvariantAndFluidMass(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label) const
DataNS::TimeLabel time_label) const
{
const double bulk_solid = GetBulkSolid().GetValue(quadrature_point, geom_elt);
......@@ -231,14 +231,16 @@ namespace HappyHeart
template<class HyperelasticLawT>
const ParameterAtDof<ParameterNS::Type::scalar>& PoroHyperelasticLaw<HyperelasticLawT>
::GetFluidMass(FluidmassNS::TimeLabel time_label) const noexcept
::GetFluidMass(DataNS::TimeLabel time_label) const noexcept
{
switch(time_label)
{
case FluidmassNS::TimeLabel::new_value:
case DataNS::TimeLabel::new_value:
return fluid_mass_data_.GetNewAsParam();
case FluidmassNS::TimeLabel::current:
case DataNS::TimeLabel::current:
return fluid_mass_data_.GetCurrentAsParam();
case DataNS::TimeLabel::former:
return fluid_mass_data_.GetFormerAsParam();
}
assert(false);
......@@ -250,7 +252,7 @@ namespace HappyHeart
inline double PoroHyperelasticLaw<HyperelasticLawT>::W(const InvariantHolder& invariant_holder,
const QuadraturePoint& quadrature_point,
const GeometricElt& geom_elt,
FluidmassNS::TimeLabel time_label) const
DataNS::TimeLabel time_label) const
{
double ret = GetOriginalLaw().W(invariant_holder, quadrature_point, geom_elt);
ret += Wbulk(invariant_holder, quadrature_point, geom_elt, time_label);
......
......@@ -99,7 +99,7 @@ namespace HappyHeart
double internal_friction,
const HyperelasticLawT& law,
const cauchy_green_tensor_type& cauchy_green_tensor,
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid>& update_pressure_operator,
GlobalParameterOperatorNS:: UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid, DataNS::TimeLabel::new_value>& update_pressure_operator,
const TimeManager& time_manager,
const QuadratureRulePerTopology* const quadrature_rule_per_topology = nullptr);
......@@ -161,12 +161,12 @@ namespace HappyHeart
//! Update pressure operator.
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid>& GetNonCstUpdatePressureOperator() const noexcept;
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid, DataNS::TimeLabel::new_value>& GetNonCstUpdatePressureOperator() const noexcept;
private:
//! Update pressure operator.
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid>& update_pressure_operator_;
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid, DataNS::TimeLabel::new_value>& update_pressure_operator_;
};
......
......@@ -37,7 +37,7 @@ namespace HappyHeart
const double internal_friction,
const HyperelasticLawT& law,
const cauchy_green_tensor_type& cauchy_green_tensor,
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid>& update_pressure_operator,
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid, DataNS::TimeLabel::new_value>& update_pressure_operator,
const TimeManager& time_manager,
const QuadratureRulePerTopology* const quadrature_rule_per_topology)
: parent(felt_space,
......@@ -105,7 +105,7 @@ namespace HappyHeart
template<class HyperelasticLawT>
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid>&
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::fluid, DataNS::TimeLabel::new_value>&
Darcy<HyperelasticLawT>
::GetNonCstUpdatePressureOperator() const noexcept
{
......
......@@ -24,7 +24,6 @@
# include "ModelInstances/UnderDevelopment/Poromechanics/Crtp/Porosity.hpp"
# include "ModelInstances/UnderDevelopment/Poromechanics/Crtp/CauchyGreenAccess.hpp"
# include "ModelInstances/UnderDevelopment/Poromechanics/Parameter/PressureAtQuadPt.hpp"
namespace HappyHeart
......
......@@ -93,7 +93,7 @@ namespace HappyHeart
const Unknown& pressure_unknown,
const GlobalVector& current_solid_displacement,
const ScalarParameter<>& fluid_density,
GlobalParameterOperatorNS::UpdatePressureAtQuadPt<HyperelasticLawT, MeshIndex::solid>& update_pressure_operator,