Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions pySPlisHSPlasH/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ target_link_libraries(pysplishsplash PRIVATE SimulatorBase)
add_dependencies(pysplishsplash SimulatorBase)

add_custom_target(pysplishsplash_install
${PYTHON_EXECUTABLE} setup.py bdist_wheel
COMMAND ${PYTHON_EXECUTABLE} -m pip install -I build/dist/py*.whl
${Python_EXECUTABLE} setup.py bdist_wheel
COMMAND ${Python_EXECUTABLE} -m pip install -I build/dist/py*.whl
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})

OPTION(USE_EMBEDDED_PYTHON "Enable embedded Python support" OFF)
Expand Down Expand Up @@ -80,6 +80,7 @@ if (USE_EMBEDDED_PYTHON)
ExporterModule.cpp
ExtrasModule.cpp
PBDModule.cpp
XSPHModule.cpp
)

target_compile_definitions(pysplishsplash_embed PUBLIC -DUSE_EMBEDDED_PYTHON)
Expand Down
4 changes: 4 additions & 0 deletions pySPlisHSPlasH/Embedded.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,15 @@ void DFSPHModule(py::module);
void DragModule(py::module);
void ElasticityModule(py::module);
void IISPHModule(py::module);
void ICSPHModule(py::module);
void PBFModule(py::module);
void PCISPHModule(py::module);
void PFModule(py::module);
void SurfaceTensionModule(py::module);
void ViscosityModule(py::module);
void VorticityModule(py::module);
void WCSPHModule(py::module);
void XSPHModule(py::module);

void ExtrasModule(py::module);

Expand All @@ -98,6 +100,7 @@ PYBIND11_EMBEDDED_MODULE(splishsplash, m) {
DragModule(m);
ElasticityModule(m);
IISPHModule(m);
ICSPHModule(m);
PBFModule(m);
PCISPHModule(m);
PFModule(m);
Expand All @@ -107,6 +110,7 @@ PYBIND11_EMBEDDED_MODULE(splishsplash, m) {
WCSPHModule(m);
GUIModule(m);
ExporterModule(m);
XSPHModule(m);

ExtrasModule(m);
}
Expand Down
9 changes: 4 additions & 5 deletions pySPlisHSPlasH/FluidModelModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@
#include "common.h"

#include <SPlisHSPlasH/FluidModel.h>
#include <SPlisHSPlasH/XSPH.h>
#include <SPlisHSPlasH/EmitterSystem.h>
#include <SPlisHSPlasH/SurfaceTension/SurfaceTensionBase.h>
#include <SPlisHSPlasH/Viscosity/ViscosityBase.h>
#include <SPlisHSPlasH/Vorticity/VorticityBase.h>
#include <SPlisHSPlasH/Drag/DragBase.h>
#include <SPlisHSPlasH/Elasticity/ElasticityBase.h>
#include <SPlisHSPlasH/NonPressureForceBase.h>

#include <pybind11/pybind11.h>
#include <pybind11/functional.h>
#include <pybind11/stl.h>
#include <pybind11/stl_bind.h>
#include <pybind11/numpy.h>

Expand Down Expand Up @@ -158,6 +156,7 @@ void FluidModelModule(py::module m_sub){
.def("getVorticityBase", &SPH::FluidModel::getVorticityBase, py::return_value_policy::reference_internal)
.def("getDragBase", &SPH::FluidModel::getDragBase, py::return_value_policy::reference_internal)
.def("getElasticityBase", &SPH::FluidModel::getElasticityBase, py::return_value_policy::reference_internal)
.def("getXSPH", &SPH::FluidModel::getXSPH, py::return_value_policy::reference_internal)

.def("setDragMethodChangedCallback", &SPH::FluidModel::setDragMethodChangedCallback)
.def("setSurfaceMethodChangedCallback", &SPH::FluidModel::setSurfaceMethodChangedCallback)
Expand Down
26 changes: 21 additions & 5 deletions pySPlisHSPlasH/SimulationModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ void SimulationModule(py::module m_sub){
.value("IISPH", SPH::SimulationMethods::IISPH)
.value("DFSPH", SPH::SimulationMethods::DFSPH)
.value("PF", SPH::SimulationMethods::PF)
.value("ICSPH", SPH::SimulationMethods::ICSPH)
.value("NumSimulationMethods", SPH::SimulationMethods::NumSimulationMethods);

// ---------------------------------------
Expand All @@ -83,10 +84,12 @@ void SimulationModule(py::module m_sub){
.value("Bender2019", SPH::BoundaryHandlingMethods::Bender2019)
.value("NumSimulationMethods", SPH::BoundaryHandlingMethods::NumSimulationMethods);



// ---------------------------------------
// Class Simulation
// ---------------------------------------
py::class_<SPH::Simulation, GenParam::ParameterObject>(m_sub, "Simulation")
auto sim = py::class_<SPH::Simulation, GenParam::ParameterObject>(m_sub, "Simulation")
.def_readwrite_static("SIM_2D", &SPH::Simulation::SIM_2D)
.def_readwrite_static("PARTICLE_RADIUS", &SPH::Simulation::PARTICLE_RADIUS)
.def_readwrite_static("GRAVITATION", &SPH::Simulation::GRAVITATION)
Expand Down Expand Up @@ -189,18 +192,29 @@ void SimulationModule(py::module m_sub){
.def("getNeighborhoodSearch", &SPH::Simulation::getNeighborhoodSearch, py::return_value_policy::reference_internal)
.def("saveState", &SPH::Simulation::saveState)
.def("loadState", &SPH::Simulation::loadState)
.def("addDragMethod", &SPH::Simulation::addDragMethod)
.def("getDragMethods", &SPH::Simulation::getDragMethods)
.def("addElasticityMethod", &SPH::Simulation::addElasticityMethod)
.def("getElasticityMethods", &SPH::Simulation::getElasticityMethods)
.def("addSurfaceTensionMethod", &SPH::Simulation::addSurfaceTensionMethod)
.def("getSurfaceTensionMethods", &SPH::Simulation::getSurfaceTensionMethods)
.def("addViscosityMethod", &SPH::Simulation::addViscosityMethod)
.def("getViscosityMethods", &SPH::Simulation::getViscosityMethods)
.def("addVorticityMethod", &SPH::Simulation::addVorticityMethod)
.def("getVorticityMethods", &SPH::Simulation::getVorticityMethods)
.def("addDragMethod", &SPH::Simulation::addDragMethod)
.def("getDragMethods", &SPH::Simulation::getDragMethods)
.def("numberOfPointSets", &SPH::Simulation::numberOfPointSets)
.def("numberOfNeighbors", &SPH::Simulation::numberOfNeighbors)
.def("getNeighbor", &SPH::Simulation::getNeighbor)
.def("getNeighborList", &SPH::Simulation::getNeighborList); // TODO: Might not work because of array pointer


// ---------------------------------------
// Class Non Pressure Force Method
// ---------------------------------------
py::class_<SPH::Simulation::NonPressureForceMethod>(sim, "NonPressureForceMethod")
.def_readonly("id", &SPH::Simulation::NonPressureForceMethod::m_id)
.def_readonly("name", &SPH::Simulation::NonPressureForceMethod::m_name);


// ---------------------------------------
// EXEC SUBMODULE
Expand Down Expand Up @@ -267,7 +281,8 @@ void SimulationModule(py::module m_sub){
"stopAt"_a = -1.0,
"param"_a = "")
.def("initSimulation", &SPH::SimulatorBase::initSimulation)
.def("runSimulation", &SPH::SimulatorBase::runSimulation)
.def("initParameters", &SPH::SimulatorBase::initParameters)
.def("runSimulation", &SPH::SimulatorBase::runSimulation)
.def("cleanup", &SPH::SimulatorBase::cleanup)

.def("reset", &SPH::SimulatorBase::reset)
Expand Down Expand Up @@ -336,8 +351,9 @@ void SimulationModule(py::module m_sub){
.def("getRigidBodyExporters", &SPH::SimulatorBase::getRigidBodyExporters)

.def("activateExporter", &SPH::SimulatorBase::activateExporter)
.def("createExporters", &SPH::SimulatorBase::createExporters)

.def("setTimeStepCB", &SPH::SimulatorBase::setTimeStepCB)
.def("setTimeStepCB", &SPH::SimulatorBase::setTimeStepCB)
.def("setResetCB", &SPH::SimulatorBase::setResetCB);

// ---------------------------------------
Expand Down
4 changes: 4 additions & 0 deletions pySPlisHSPlasH/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ void DFSPHModule(py::module);
void DragModule(py::module);
void ElasticityModule(py::module);
void IISPHModule(py::module);
void ICSPHModule(py::module);
void PBFModule(py::module);
void PCISPHModule(py::module);
void PFModule(py::module);
void SurfaceTensionModule(py::module);
void ViscosityModule(py::module);
void VorticityModule(py::module);
void WCSPHModule(py::module);
void XSPHModule(py::module);

void ExtrasModule(py::module);

Expand All @@ -62,6 +64,7 @@ PYBIND11_MODULE(pysplishsplash, m) {
DragModule(m);
ElasticityModule(m);
IISPHModule(m);
ICSPHModule(m);
PBFModule(m);
PCISPHModule(m);
PFModule(m);
Expand All @@ -71,6 +74,7 @@ PYBIND11_MODULE(pysplishsplash, m) {
WCSPHModule(m);
GUIModule(m);
ExporterModule(m);
XSPHModule(m);

ExtrasModule(m);
}