Commit 2ca98b78 authored by GILLES Sebastien's avatar GILLES Sebastien
Browse files

#873 [DOES NOT COMPILE ALL MODELS] Parameter: add time dependency template...

#873 [DOES NOT COMPILE ALL MODELS] Parameter: add time dependency template parameter, and time dependency argument in
each Parameter constructor.
parent 9de96b7d
......@@ -14565,6 +14565,7 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
......@@ -14572,9 +14573,9 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
OTHER_LDFLAGS = (
"-lmpi",
"-llua",
"-lyuni-static-core",
"-lmpi",
"-lpetsc",
);
PRODUCT_NAME = "$(TARGET_NAME)";
......@@ -14590,12 +14591,13 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
ENABLE_NS_ASSERTIONS = NO;
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
OTHER_LDFLAGS = (
"-lmpi",
"-llua",
"-lyuni-static-core",
"-lmpi",
"-lpetsc",
);
PRODUCT_NAME = "$(TARGET_NAME)";
......@@ -14845,7 +14847,7 @@
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEAD_CODE_STRIPPING = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
......@@ -14921,6 +14923,7 @@
"-llua",
"-lyuni-static-core",
"-lmpi",
"-lmpi_cxx",
"-lpetsc",
);
PRESERVE_DEAD_CODE_INITS_AND_TERMS = NO;
......@@ -14937,6 +14940,7 @@
"-Wno-exit-time-destructors",
"-Wno-global-constructors",
"-Wno-documentation-unknown-command",
"-Wno-documentation",
);
};
name = Debug;
......@@ -15030,6 +15034,7 @@
"-llua",
"-lyuni-static-core",
"-lmpi",
"-lmpi_cxx",
"-lpetsc",
);
PRESERVE_DEAD_CODE_INITS_AND_TERMS = NO;
......@@ -15045,6 +15050,7 @@
"-Wno-exit-time-destructors",
"-Wno-global-constructors",
"-Wno-documentation-unknown-command",
"-Wno-documentation",
);
};
name = Release;
......@@ -15092,6 +15098,7 @@
OTHER_LDFLAGS = (
"-lyuni-static-core",
"-lmpi",
"-lmpi_cxx",
"-lpetsc",
"-llua",
);
......@@ -15112,6 +15119,7 @@
OTHER_LDFLAGS = (
"-lyuni-static-core",
"-lmpi",
"-lmpi_cxx",
"-lpetsc",
"-llua",
);
......@@ -15842,7 +15850,11 @@
GCC_VERSION = "";
HEADER_SEARCH_PATHS = /Users/Shared/Library/Yuni/src;
LIBRARY_SEARCH_PATHS = /Users/Shared/Library/Yuni/src/build/debug/lib;
OTHER_LDFLAGS = "-lyuni-static-core";
OTHER_LDFLAGS = (
"-lyuni-static-core",
"-lmpi",
"-lpetsc",
);
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
......@@ -15854,7 +15866,11 @@
GCC_VERSION = "";
HEADER_SEARCH_PATHS = /Users/Shared/Library/Yuni/src;
LIBRARY_SEARCH_PATHS = /Users/Shared/Library/Yuni/src/build/release/lib;
OTHER_LDFLAGS = "-lyuni-static-core";
OTHER_LDFLAGS = (
"-lyuni-static-core",
"-lmpi",
"-lpetsc",
);
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
......@@ -42,7 +42,13 @@ namespace HappyHeart
* (i.e. the index N called in InputParameter::TransientSource<N> template instantiation).
* \tparam SurfacicIndexT Same as VolumicIndexT for the surfacic force.
*/
template<class DerivedT, unsigned int VolumicIndexT, unsigned int SurfacicIndexT>
template
<
class DerivedT,
unsigned int VolumicIndexT,
unsigned int SurfacicIndexT,
class TimeDependencyT
>
class VolumicAndSurfacicSource
{
......@@ -93,6 +99,7 @@ namespace HappyHeart
const Unknown& unknown,
unsigned int geom_mesh_region_dimension,
const quadrature_rule_per_topology_type& quadrature_rule_set,
TimeDependencyT&& time_dependency,
DoComputeProcessorWiseLocal2Global do_compute_processor_wise_local2global);
......@@ -111,30 +118,34 @@ namespace HappyHeart
* It is assumed this operator is activated; this can be checked beforehand by IsOperatorActivated() method.
*/
template<SourceType SourceTypeT>
const GlobalVariationalOperatorNS::TransientSource& GetForceOperator() const noexcept;
const GlobalVariationalOperatorNS::TransientSource<TimeDependencyT>& GetForceOperator() const noexcept;
//! Access to the volumic force parameter (if relevant).
const Parameter<ParameterNS::Type::vector>& GetVolumicForceParameter() const;
const Parameter<ParameterNS::Type::vector, TimeDependencyT>& GetVolumicForceParameter() const;
//! Access to the surfacic force parameter (if relevant).
const Parameter<ParameterNS::Type::vector>& GetSurfacicForceParameter() const;
const Parameter<ParameterNS::Type::vector, TimeDependencyT>& GetSurfacicForceParameter() const;
private:
//! Volumic force operator. Might stay nullptr if is_nature is 'ignore' in the input parameter file.
GlobalVariationalOperatorNS::TransientSource::const_unique_ptr volumic_force_operator_ = nullptr;
typename GlobalVariationalOperatorNS::TransientSource<TimeDependencyT>::const_unique_ptr
volumic_force_operator_ = nullptr;
//! Surfacic force operator. Might stay nullptr if nature is 'ignore' in the input parameter file.
GlobalVariationalOperatorNS::TransientSource::const_unique_ptr surfacic_force_operator_ = nullptr;
typename GlobalVariationalOperatorNS::TransientSource<TimeDependencyT>::const_unique_ptr
surfacic_force_operator_ = nullptr;
//! Volumic force operator. Might stay nullptr if nature is 'ignore' in the input parameter file.
Parameter<ParameterNS::Type::vector>::unique_ptr volumic_force_parameter_ = nullptr;
typename Parameter<ParameterNS::Type::vector, TimeDependencyT>::unique_ptr
volumic_force_parameter_ = nullptr;
//! Surfacic force operator. Might stay nullptr if nature is 'ignore' in the input parameter file.
Parameter<ParameterNS::Type::vector>::unique_ptr surfacic_force_parameter_ = nullptr;
typename Parameter<ParameterNS::Type::vector, TimeDependencyT>::unique_ptr
surfacic_force_parameter_ = nullptr;
};
......
......@@ -20,22 +20,29 @@ namespace HappyHeart
{
template<class DerivedT, unsigned int VolumicIndexT, unsigned int SurfacicIndexT>
template
<
class DerivedT,
unsigned int VolumicIndexT,
unsigned int SurfacicIndexT,
class TimeDependencyT
>
template<SourceType SourceTypeT, class T, class InputParameterDataT>
void VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT>
void VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT, TimeDependencyT>
::SetIfTaggedAsActivated(T&& name,
const InputParameterDataT& input_parameter_data,
const FEltSpace& felt_space,
const Unknown& unknown,
const unsigned int geom_mesh_region_dimension,
const quadrature_rule_per_topology_type& quadrature_rule_set,
TimeDependencyT&& time_dependency,
DoComputeProcessorWiseLocal2Global do_compute_processor_wise_local2global)
{
namespace GVO = GlobalVariationalOperatorNS;
namespace IPL = Utilities::InputParameterListNS;
GVO::TransientSource::const_unique_ptr global_operator = nullptr;
Parameter<ParameterNS::Type::vector>::unique_ptr parameter_ptr = nullptr;
typename GVO::TransientSource<TimeDependencyT>::const_unique_ptr global_operator = nullptr;
typename Parameter<ParameterNS::Type::vector, TimeDependencyT>::unique_ptr parameter_ptr = nullptr;
// If tagged as activated, compute here the global variational operator.
{
......@@ -49,17 +56,19 @@ namespace HappyHeart
parameter_ptr = InitThreeDimensionalParameter<parameter_type>(std::forward<T>(name),
geometric_mesh_region,
input_parameter_data);
input_parameter_data,
std::move(time_dependency));
if (parameter_ptr == nullptr)
return;
global_operator = std::make_unique<GVO::TransientSource>(felt_space,
unknown,
geom_mesh_region_dimension,
quadrature_rule_set,
do_compute_processor_wise_local2global,
*parameter_ptr);
global_operator =
std::make_unique<GVO::TransientSource<TimeDependencyT>>(felt_space,
unknown,
geom_mesh_region_dimension,
quadrature_rule_set,
do_compute_processor_wise_local2global,
*parameter_ptr);
}
// Assign properly the created global variational operator.
......@@ -78,9 +87,14 @@ namespace HappyHeart
template<class DerivedT, unsigned int VolumicIndexT, unsigned int SurfacicIndexT>
template<SourceType SourceTypeT>
bool VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT>::IsOperatorActivated() const noexcept
template
<
class DerivedT,
unsigned int VolumicIndexT,
unsigned int SurfacicIndexT,
class TimeDependencyT
> template<SourceType SourceTypeT>
bool VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT, TimeDependencyT>::IsOperatorActivated() const noexcept
{
switch (SourceTypeT)
{
......@@ -94,10 +108,16 @@ namespace HappyHeart
}
template<class DerivedT, unsigned int VolumicIndexT, unsigned int SurfacicIndexT>
template
<
class DerivedT,
unsigned int VolumicIndexT,
unsigned int SurfacicIndexT,
class TimeDependencyT
>
template<SourceType SourceTypeT>
inline const GlobalVariationalOperatorNS::TransientSource&
VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT>::GetForceOperator() const noexcept
inline const GlobalVariationalOperatorNS::TransientSource<TimeDependencyT>&
VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT, TimeDependencyT>::GetForceOperator() const noexcept
{
assert(IsOperatorActivated<SourceTypeT>());
......@@ -120,8 +140,15 @@ namespace HappyHeart
}
template<class DerivedT, unsigned int VolumicIndexT, unsigned int SurfacicIndexT>
const Parameter<ParameterNS::Type::vector>& VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT>
template
<
class DerivedT,
unsigned int VolumicIndexT,
unsigned int SurfacicIndexT,
class TimeDependencyT
>
const Parameter<ParameterNS::Type::vector, TimeDependencyT>&
VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT, TimeDependencyT>
::GetVolumicForceParameter() const
{
assert(!(!volumic_force_parameter_));
......@@ -129,8 +156,15 @@ namespace HappyHeart
}
template<class DerivedT, unsigned int VolumicIndexT, unsigned int SurfacicIndexT>
const Parameter<ParameterNS::Type::vector>& VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT>
template
<
class DerivedT,
unsigned int VolumicIndexT,
unsigned int SurfacicIndexT,
class TimeDependencyT
>
const Parameter<ParameterNS::Type::vector, TimeDependencyT>&
VolumicAndSurfacicSource<DerivedT, VolumicIndexT, SurfacicIndexT, TimeDependencyT>
::GetSurfacicForceParameter() const
{
assert(!(!surfacic_force_parameter_));
......
......@@ -213,7 +213,8 @@ namespace HappyHeart
const GlobalVariationalOperatorNS::NonLinearSource<ReactionLawNameT>& GetTranscellularIonSourceOperator() const noexcept;
//! Current applied operator on square.
const GlobalVariationalOperatorNS::TransientSource& GetTranscellularCurrentAppliedOnSquareOperator() const noexcept;
const GlobalVariationalOperatorNS::TransientSource<ParameterNS::TimeDependencyNS::None>&
GetTranscellularCurrentAppliedOnSquareOperator() const noexcept;
private:
......@@ -254,19 +255,19 @@ namespace HappyHeart
///@{
//! Diffusion density,
const ScalarParameter& GetTranscellularDiffusionDensity() const noexcept;
const ScalarParameter<>& GetTranscellularDiffusionDensity() const noexcept;
//! Intracellular Diffusion tensor.
const ScalarParameter& GetIntracelluarTransDiffusionTensor() const noexcept;
const ScalarParameter<>& GetIntracelluarTransDiffusionTensor() const noexcept;
//! Extracellular Diffusion tensor.
const ScalarParameter& GetExtracelluarTransDiffusionTensor() const noexcept;
const ScalarParameter<>& GetExtracelluarTransDiffusionTensor() const noexcept;
//! Intracellular Diffusion tensor.
const ScalarParameter& GetIntracelluarFiberDiffusionTensor() const noexcept;
const ScalarParameter<>& GetIntracelluarFiberDiffusionTensor() const noexcept;
//! Extracellular Diffusion tensor.
const ScalarParameter& GetExtracelluarFiberDiffusionTensor() const noexcept;
const ScalarParameter<>& GetExtracelluarFiberDiffusionTensor() const noexcept;
///@}
......@@ -311,7 +312,8 @@ namespace HappyHeart
typename non_linear_source_operator_type::const_unique_ptr transcellular_ion_source_operator_ = nullptr;
//! Transcellular Current applied on square operator.
GlobalVariationalOperatorNS::TransientSource::const_unique_ptr transcellular_current_applied_on_square_operator_ = nullptr;
GlobalVariationalOperatorNS::TransientSource<ParameterNS::TimeDependencyNS::None>::const_unique_ptr
transcellular_current_applied_on_square_operator_ = nullptr;
///@}
......@@ -319,7 +321,8 @@ namespace HappyHeart
///@{
//! Current applied source parameter.
Parameter<ParameterNS::Type::vector>::unique_ptr transcellular_current_applied_on_square_parameter_ = nullptr;
Parameter<ParameterNS::Type::vector, ParameterNS::TimeDependencyNS::None>::unique_ptr
transcellular_current_applied_on_square_parameter_ = nullptr;
///@}
......@@ -358,19 +361,19 @@ namespace HappyHeart
///@{
//! Intracellular Trans Diffusion tensor.
ScalarParameter::unique_ptr intracellular_trans_diffusion_tensor_ = nullptr;
ScalarParameter<>::unique_ptr intracellular_trans_diffusion_tensor_ = nullptr;
//! Extracellular Trans Diffusion tensor.
ScalarParameter::unique_ptr extracellular_trans_diffusion_tensor_ = nullptr;
ScalarParameter<>::unique_ptr extracellular_trans_diffusion_tensor_ = nullptr;
//! Intracellular Fiber Diffusion tensor.
ScalarParameter::unique_ptr intracellular_fiber_diffusion_tensor_ = nullptr;
ScalarParameter<>::unique_ptr intracellular_fiber_diffusion_tensor_ = nullptr;
//! Extracellular Fiber Diffusion tensor.
ScalarParameter::unique_ptr extracellular_fiber_diffusion_tensor_ = nullptr;
ScalarParameter<>::unique_ptr extracellular_fiber_diffusion_tensor_ = nullptr;
//! Density.
ScalarParameter::unique_ptr transcellular_density_ = nullptr;
ScalarParameter<>::unique_ptr transcellular_density_ = nullptr;
///@}
......
......@@ -64,11 +64,34 @@ namespace HappyHeart
const auto& mesh = god_of_dof.GetGeometricMeshRegion();
using Diffusion = InputParameter::Diffusion;
intracellular_trans_diffusion_tensor_ = InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::intracellular_trans_diffusion_tensor)>>("Intracellular Trans Diffusion tensor", mesh, input_parameter_data);
extracellular_trans_diffusion_tensor_ = InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::extracellular_trans_diffusion_tensor)>>("Extracellular Trans Diffusion tensor", mesh, input_parameter_data);
intracellular_fiber_diffusion_tensor_ = InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::intracellular_fiber_diffusion_tensor)>>("Intracellular Fiber Diffusion tensor", mesh, input_parameter_data);
extracellular_fiber_diffusion_tensor_ = InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::extracellular_fiber_diffusion_tensor)>>("Extracellular Fiber Diffusion tensor", mesh, input_parameter_data);
transcellular_density_ = InitScalarParameter<Diffusion::Density>("Transcellular Density", mesh, input_parameter_data);
using no_time_dep = ParameterNS::TimeDependencyNS::None;
intracellular_trans_diffusion_tensor_ =
InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::intracellular_trans_diffusion_tensor)>>("Intracellular Trans Diffusion tensor",
mesh,
input_parameter_data,
no_time_dep());
extracellular_trans_diffusion_tensor_ =
InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::extracellular_trans_diffusion_tensor)>>("Extracellular Trans Diffusion tensor",
mesh,
input_parameter_data,
no_time_dep());
intracellular_fiber_diffusion_tensor_ =
InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::intracellular_fiber_diffusion_tensor)>>("Intracellular Fiber Diffusion tensor",
mesh,
input_parameter_data,
no_time_dep());
extracellular_fiber_diffusion_tensor_ =
InitScalarParameter<Diffusion::Tensor<EnumUnderlyingType(TensorIndex::extracellular_fiber_diffusion_tensor)>>("Extracellular Fiber Diffusion tensor",
mesh,
input_parameter_data,
no_time_dep());
transcellular_density_ =
InitScalarParameter<Diffusion::Density>("Transcellular Density",
mesh,
input_parameter_data,
no_time_dep());
if (!GetTranscellularDiffusionDensity().IsConstant())
throw Exception("Current Bidomain model is restricted to a constant diffusion density.",
......@@ -173,20 +196,23 @@ namespace HappyHeart
default_quadrature_rule_set,
GetNonCstReactionLaw());
using no_time_dep = ParameterNS::TimeDependencyNS::None;
using parameter_type_on_square = InputParameter::TransientSource<EnumUnderlyingType(ForceIndexList::transcellular_current_applied_on_square)>;
transcellular_current_applied_on_square_parameter_ =
InitThreeDimensionalParameter<parameter_type_on_square>("Current Applied On Square",
mesh,
input_parameter_data);
InitThreeDimensionalParameter<parameter_type_on_square>("Current Applied On Square",
mesh,
input_parameter_data,
no_time_dep());
if (transcellular_current_applied_on_square_parameter_ != nullptr)
{
transcellular_current_applied_on_square_operator_ = std::make_unique<GVO::TransientSource>(felt_space_highest_dimension,
transcellular_potential,
mesh_dimension,
default_quadrature_rule_set,
DoComputeProcessorWiseLocal2Global::yes,
*transcellular_current_applied_on_square_parameter_);
transcellular_current_applied_on_square_operator_ =
std::make_unique<GVO::TransientSource<no_time_dep>>(felt_space_highest_dimension,
transcellular_potential,
mesh_dimension,
default_quadrature_rule_set,
DoComputeProcessorWiseLocal2Global::yes,
*transcellular_current_applied_on_square_parameter_);
}
}
......@@ -486,7 +512,7 @@ namespace HappyHeart
template <ReactionLawNS::ReactionLawName ReactionLawNameT>
inline const GlobalVariationalOperatorNS::TransientSource&
inline const GlobalVariationalOperatorNS::TransientSource<ParameterNS::TimeDependencyNS::None>&
BidomainVariationalFormulation<ReactionLawNameT>::GetTranscellularCurrentAppliedOnSquareOperator() const noexcept
{
assert(!(!transcellular_current_applied_on_square_operator_));
......@@ -586,14 +612,14 @@ namespace HappyHeart
}
template <ReactionLawNS::ReactionLawName ReactionLawNameT>
inline const ScalarParameter& BidomainVariationalFormulation<ReactionLawNameT>::GetTranscellularDiffusionDensity() const noexcept
inline const ScalarParameter<>& BidomainVariationalFormulation<ReactionLawNameT>::GetTranscellularDiffusionDensity() const noexcept
{
assert(!(!transcellular_density_));
return *transcellular_density_;
}
template <ReactionLawNS::ReactionLawName ReactionLawNameT>
inline const ScalarParameter& BidomainVariationalFormulation<ReactionLawNameT>::GetIntracelluarTransDiffusionTensor() const noexcept
inline const ScalarParameter<>& BidomainVariationalFormulation<ReactionLawNameT>::GetIntracelluarTransDiffusionTensor() const noexcept
{
assert(!(!intracellular_trans_diffusion_tensor_));
return *intracellular_trans_diffusion_tensor_;
......@@ -601,7 +627,7 @@ namespace HappyHeart
template <ReactionLawNS::ReactionLawName ReactionLawNameT>
inline const ScalarParameter& BidomainVariationalFormulation<ReactionLawNameT>::GetExtracelluarTransDiffusionTensor() const noexcept
inline const ScalarParameter<>& BidomainVariationalFormulation<ReactionLawNameT>::GetExtracelluarTransDiffusionTensor() const noexcept
{
assert(!(!extracellular_trans_diffusion_tensor_));
return *extracellular_trans_diffusion_tensor_;
......@@ -609,7 +635,7 @@ namespace HappyHeart
template <ReactionLawNS::ReactionLawName ReactionLawNameT>
inline const ScalarParameter& BidomainVariationalFormulation<ReactionLawNameT>::GetIntracelluarFiberDiffusionTensor() const noexcept
inline const ScalarParameter<>& BidomainVariationalFormulation<ReactionLawNameT>::GetIntracelluarFiberDiffusionTensor() const noexcept
{
assert(!(!intracellular_fiber_diffusion_tensor_));
return *intracellular_fiber_diffusion_tensor_;
......@@ -617,7 +643,7 @@ namespace HappyHeart
template <ReactionLawNS::ReactionLawName ReactionLawNameT>
inline const ScalarParameter& BidomainVariationalFormulation<ReactionLawNameT>::GetExtracelluarFiberDiffusionTensor() const noexcept
inline const ScalarParameter<>& BidomainVariationalFormulation<ReactionLawNameT>::GetExtracelluarFiberDiffusionTensor() const noexcept
{
assert(!(!extracellular_fiber_diffusion_tensor_));
return *extracellular_fiber_diffusion_tensor_;
......
......@@ -25,20 +25,25 @@ namespace HappyHeart
const auto& god_of_dof = this->GetGodOfDof();
const auto& mesh = god_of_dof.GetGeometricMeshRegion();
using no_time_dep = ParameterNS::TimeDependencyNS::None;
volumic_mass_ = InitScalarParameter<InputParameter::Solid::VolumicMass>("Volumic mass",
mesh,
input_parameter_data);
input_parameter_data,
no_time_dep());
if (!GetVolumicMass().IsConstant())
throw Exception("Current elastic model is restricted to a constant volumic mass!", __FILE__, __LINE__);
young_modulus_ = InitScalarParameter<InputParameter::Solid::YoungModulus>("Young modulus",
mesh,
input_parameter_data);
input_parameter_data,
no_time_dep());
poisson_ratio_ = InitScalarParameter<InputParameter::Solid::PoissonRatio>("Poisson ratio",
mesh,
input_parameter_data);
input_parameter_data,
no_time_dep());
{
// \todo #583: Temporary to make code work; quite stupid nonetheless!
......@@ -276,12 +281,15 @@ namespace HappyHeart
const auto& default_quadrature_rule_set = this->GetQuadratureRulePerTopologyType();
using no_time_dep = ParameterNS::TimeDependencyNS::None;
this->template SetIfTaggedAsActivated<SourceType::volumic>("Volumic force",
input_parameter_data,
felt_space_highest_dimension,
displacement,
mesh_dimension,
default_quadrature_rule_set,
no_time_dep(),
DoComputeProcessorWiseLocal2Global::no);
this->template SetIfTaggedAsActivated<SourceType::surfacic>("Surfacic force",
......@@ -290,6 +298,7 @@ namespace HappyHeart
displacement,
mesh_dimension,
default_quadrature_rule_set,
no_time_dep(),
DoComputeProcessorWiseLocal2Global::no);
namespace GVO = GlobalVariationalOperatorNS;
......
......@@ -48,8 +48,9 @@ namespace HappyHeart
<
VariationalFormulationElasticity,
EnumUnderlyingType(SourceIndex::volumic),
EnumUnderlyingType(SourceIndex::surfacic)
>
EnumUnderlyingType(SourceIndex::surfacic),
ParameterNS::TimeDependencyNS::None
>
{
private:
......@@ -65,6 +66,9 @@ namespace HappyHeart
//! Alias to unique pointer.
using unique_ptr = std::unique_ptr<self>;
using solid_scalar_parameter = ScalarParameter<ParameterNS::TimeDependencyNS::None>;
public:
......@@ -263,13 +267,13 @@ namespace HappyHeart
///@{