diff --git a/bindings/Mandos/python/RigidBody.cpp b/bindings/Mandos/python/RigidBody.cpp index 4d03a55765020082a98fe73d4ad3ead63f244fad..3ffecdc7316d3d5da1017bef0e5c580877c92a99 100644 --- a/bindings/Mandos/python/RigidBody.cpp +++ b/bindings/Mandos/python/RigidBody.cpp @@ -129,7 +129,11 @@ void wrapRigidBody(::py::module_ &m) .def("clear_fixing", &RigidBodyCloud3D::clearFixing) .def("fixed_dof_vector", &RigidBodyCloud3D::getFixedDofVector); - ::py::class_(m, "CosseratRod").def("set_parameters", &CosseratRod::setParameters); + ::py::class_(m, "CosseratRod") + .def("set_parameters", &CosseratRod::setParameters) + .def_property("Ks", &CosseratRod::getKs, &CosseratRod::setKs) + .def_property("stiffness_tensor", &CosseratRod::getStiffnessTensor, &CosseratRod::setStiffnessTensor) + .def_property("cosserat_stiffness", &CosseratRod::getCosseratStiffness, &CosseratRod::setCosseratStiffness); } void CosseratRod::setParameters(const std::vector &Ks, @@ -158,6 +162,36 @@ void CosseratRod::setParameters(const std::vector &Ks, m_cosseratRodEnergy.setParameters(indices, listL0, Ks, cosseratStiffness, stiffnessTensor); } +const std::vector &CosseratRod::getKs() const +{ + return m_cosseratRodEnergy.getKs(); +} + +void CosseratRod::setKs(std::vector &ks) +{ + m_cosseratRodEnergy.setKs(ks); +} + +const std::vector &CosseratRod::getStiffnessTensor() const +{ + return m_cosseratRodEnergy.getStiffnessTensor(); +} + +void CosseratRod::setStiffnessTensor(std::vector &stiffnessTensor) +{ + m_cosseratRodEnergy.setStiffnessTensor(stiffnessTensor); +} + +const std::vector &CosseratRod::getCosseratStiffness() const +{ + return m_cosseratRodEnergy.getCosseratStiffness(); +} + +void CosseratRod::setCosseratStiffness(std::vector &cosseratStiffness) +{ + m_cosseratRodEnergy.setCosseratStiffness(cosseratStiffness); +} + template RigidBody3D::RigidBody3D(core::SimulationObjectHandle handle) : m_handle(handle) diff --git a/bindings/Mandos/python/RigidBody.hpp b/bindings/Mandos/python/RigidBody.hpp index adc41d327d807e617c69815867f12442b9ab8727..7118db76e830282e2fd49e938f8083a8579ead8d 100644 --- a/bindings/Mandos/python/RigidBody.hpp +++ b/bindings/Mandos/python/RigidBody.hpp @@ -25,6 +25,15 @@ struct CosseratRod { void setParameters(const std::vector &Ks, const std::vector &cosseratStiffness, const std::vector &stiffnessTensor); + + const std::vector &getKs() const; + void setKs(std::vector &ks); + + const std::vector &getStiffnessTensor() const; + void setStiffnessTensor(std::vector &stiffnessTensor); + + const std::vector &getCosseratStiffness() const; + void setCosseratStiffness(std::vector &cosseratStiffness); mandos::core::CosseratRodEnergy &m_cosseratRodEnergy; mandos::core::MechanicalState &m_mstate; diff --git a/src/Mandos/Core/Energies/CosseratRodEnergy.hpp b/src/Mandos/Core/Energies/CosseratRodEnergy.hpp index 4ce99f42ab2fbdfbaa8d6d7d4edc031d113bc619..dd70919e0bbf6a8651aab02ec1d095a06fe8d61d 100644 --- a/src/Mandos/Core/Energies/CosseratRodEnergy.hpp +++ b/src/Mandos/Core/Energies/CosseratRodEnergy.hpp @@ -81,6 +81,21 @@ public: return m_rotationDamping; } + inline void setKs(std::vector &ks) + { + m_Ks = ks; + } + + inline void setStiffnessTensor(std::vector &stiffnessTensor) + { + m_stiffnessTensor = stiffnessTensor; + } + + inline void setCosseratStiffness(std::vector &cosseratStiffness) + { + m_cosseratStiffness = cosseratStiffness; + } + private: // Conectivity Eigen::Matrix m_indices;