MCPcopy Create free account
hub / github.com/KratosMultiphysics/Kratos / AddDofsToPython

Function AddDofsToPython

kratos/python/add_dofs_to_python.cpp:24–93  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22namespace Kratos::Python {
23
24void AddDofsToPython(pybind11::module& m)
25{
26 namespace py = pybind11;
27
28 py::class_<Dof<double>, std::unique_ptr<Dof<double>, py::nodelete>>(m,"Dof")
29 .def("GetVariable", &Dof<double>::GetVariable, py::return_value_policy::reference_internal)
30 .def("GetReaction", &Dof<double>::GetReaction, py::return_value_policy::reference_internal)
31 .def("Id", &Dof<double>::Id)
32 .def("GetSolutionStepValue", [](const Dof<double>& self) {
33 return self.GetSolutionStepValue();
34 })
35 .def("SetSolutionStepValue", [](Dof<double>& self, const double value) {
36 return self.GetSolutionStepValue() = value;
37 })
38 .def_property("EquationId", &Dof<double>::EquationId, &Dof<double>::SetEquationId)
39 .def_property("EffectiveEquationId", &Dof<double>::EffectiveEquationId, &Dof<double>::SetEffectiveEquationId)
40 .def("Fix", &Dof<double>::FixDof)
41 .def("Free", &Dof<double>::FreeDof)
42 .def("IsFixed", &Dof<double>::IsFixed)
43 .def("__lt__", [](Dof<double>& dof1, Dof<double>& dof2){return dof1<dof2; })
44 .def("__gt__", [](Dof<double>& dof1, Dof<double>& dof2){return dof1>dof2; })
45 .def("__le__", [](Dof<double>& dof1, Dof<double>& dof2){return dof1<=dof2; })
46 .def("__ge__", [](Dof<double>& dof1, Dof<double>& dof2){return dof1>=dof2; })
47 .def("__eq__", [](Dof<double>& dof1, Dof<double>& dof2){return dof1==dof2; })
48 .def("__ne__", [](Dof<double>& dof1, Dof<double>& dof2){return !(dof1==dof2); })
49 .def("__str__", PrintObject<Dof<double>>)
50 ;
51
52 py::class_<ModelPart::DofsArrayType, ModelPart::DofsArrayType::Pointer>(m, "DofsArrayType")
53 .def(py::init<>())
54 .def("__len__", [](ModelPart::DofsArrayType &self) {
55 return self.size();
56 })
57 .def("__iter__", [](ModelPart::DofsArrayType &self){
58 return py::make_iterator(self.begin(), self.end());
59 }, py::keep_alive<0, 1>())
60 .def("append", [](ModelPart::DofsArrayType &self, Dof<double> &value) {
61 self.push_back(&value);
62 })
63 .def("unique", [](ModelPart::DofsArrayType &self) {
64 self.Unique();
65 })
66 .def("GetValues", [](ModelPart::DofsArrayType &self) {
67 Vector values(self.size());
68 int counter = 0;
69 for (auto &r_dof : self)
70 {
71 values[counter++] = r_dof.GetSolutionStepValue();
72 }
73 return values;
74 })
75 .def("GetEquationIds", [](ModelPart::DofsArrayType &self) {
76 std::vector<std::size_t> values(self.size());
77 int counter = 0;
78 for (auto &r_dof : self)
79 {
80 values[counter++] = r_dof.EquationId();
81 }

Callers 1

PYBIND11_MODULEFunction · 0.85

Calls 8

make_iteratorFunction · 0.85
GetSolutionStepValueMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45
UniqueMethod · 0.45
EquationIdMethod · 0.45

Tested by

no test coverage detected