// In this case py::overload_cast operator has been used. The reason is that otherwise compiler can not know which method to use and thus produces the error.
// In Python method overloading does not exist in the same way like in c++ (there is no overloading resolution by the compiler obviously), thus we use py::overload_cast.
// Wrapping SystemEvoution class
py::class_<SystemEvolution>(m,"SystemEvolution")
.def("setNSteps",&SystemEvolution::setNSteps)
.def("setDumpFreq",&SystemEvolution::setDumpFreq)
.def("evolve",&SystemEvolution::evolve)
.def("addCompute",&SystemEvolution::addCompute)
.def("getSystem",&SystemEvolution::getSystem,
py::return_value_policy::reference)
;
// Wrapping the system writer (CSV files)
py::class_<CsvWriter>(m,"CsvWriter")
.def(py::init<conststd::string&>())
.def("write",&CsvWriter::write)
;
py::class_<System>(m,"System");
// Wrapping ComputeTemperature class
// To read protected classes variables in Python, it is necessary to use "getsmt" methods, instead of reading them directly.