7 #include "imstkIsotropicHyperelasticFeForceModel.h" 8 #include "imstkLogger.h" 10 #include <MooneyRivlinIsotropicMaterial.h> 11 #include <neoHookeanIsotropicMaterial.h> 12 #include <StVKIsotropicMaterial.h> 17 std::shared_ptr<vega::VolumetricMesh> mesh,
18 const double inversionThreshold,
const bool withGravity,
const double gravity) : InternalForceModel()
20 auto tetMesh = std::dynamic_pointer_cast<vega::TetMesh>(mesh);
22 const int enableCompressionResistance = 1;
23 const double compressionResistance = 500;
26 case HyperElasticMaterialType::StVK:
27 m_isotropicMaterial = std::make_shared<vega::StVKIsotropicMaterial>(
29 enableCompressionResistance,
30 compressionResistance);
33 case HyperElasticMaterialType::NeoHookean:
34 m_isotropicMaterial = std::make_shared<vega::NeoHookeanIsotropicMaterial>(
36 enableCompressionResistance,
37 compressionResistance);
40 case HyperElasticMaterialType::MooneyRivlin:
41 m_isotropicMaterial = std::make_shared<vega::MooneyRivlinIsotropicMaterial>(
43 enableCompressionResistance,
44 compressionResistance);
48 LOG(WARNING) <<
"Error: Invalid hyperelastic material type.";
52 m_isotropicHyperelasticFem = std::make_shared<vega::IsotropicHyperelasticFEM>(
54 m_isotropicMaterial.get(),