Skip to content
Snippets Groups Projects
Commit fdd11444 authored by Hkorb's avatar Hkorb
Browse files

update pythonbindings

parent 46a8f376
No related branches found
No related tags found
1 merge request!170Kernel templetization and efficiency improvements
#include <pybind11/pybind11.h>
#include <basics/config/ConfigurationFile.h>
#include "basics/config/ConfigurationFile.h"
namespace configuration
{
......@@ -10,6 +10,18 @@ namespace configuration
py::class_<vf::basics::ConfigurationFile>(parentModule, "ConfigurationFile")
.def(py::init<>())
.def("load", &vf::basics::ConfigurationFile::load)
.def("getValue", &vf::basics::ConfigurationFile::getValue);
.def("contains", &vf::basics::ConfigurationFile::contains)
.def("get_int_value" , static_cast<int (vf::basics::ConfigurationFile::*)(const std::string&) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_int_value" , static_cast<int (vf::basics::ConfigurationFile::*)(const std::string&, int ) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_uint_value" , static_cast<uint (vf::basics::ConfigurationFile::*)(const std::string&) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_uint_value" , static_cast<uint (vf::basics::ConfigurationFile::*)(const std::string&, uint ) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_float_value" , static_cast<float (vf::basics::ConfigurationFile::*)(const std::string&) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_float_value" , static_cast<float (vf::basics::ConfigurationFile::*)(const std::string&, float ) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_double_value", static_cast<double (vf::basics::ConfigurationFile::*)(const std::string&) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_double_value", static_cast<double (vf::basics::ConfigurationFile::*)(const std::string&, double ) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_bool_value" , static_cast<bool (vf::basics::ConfigurationFile::*)(const std::string&) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_bool_value" , static_cast<bool (vf::basics::ConfigurationFile::*)(const std::string&, bool ) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_string_value", static_cast<std::string (vf::basics::ConfigurationFile::*)(const std::string&) const>(&vf::basics::ConfigurationFile::getValue))
.def("get_string_value", static_cast<std::string (vf::basics::ConfigurationFile::*)(const std::string&, std::string) const>(&vf::basics::ConfigurationFile::getValue));
}
}
\ No newline at end of file
......@@ -10,6 +10,8 @@
#include "submodules/precursor_writer.cpp"
#include "submodules/grid_provider.cpp"
#include "submodules/grid_generator.cpp"
#include "submodules/turbulence_models.cpp"
#include "submodules/velocity_setter.cpp"
namespace gpu
{
......@@ -23,12 +25,14 @@ namespace gpu
pre_collision_interactor::makeModule(gpuModule);
actuator_line::makeModule(gpuModule);
boundary_conditions::makeModule(gpuModule);
velocity_setter::makeModule(gpuModule);
communicator::makeModule(gpuModule);
cuda_memory_manager::makeModule(gpuModule);
probes::makeModule(gpuModule);
precursor_writer::makeModule(gpuModule);
grid_generator::makeModule(gpuModule);
grid_provider::makeModule(gpuModule);
turbulence_model::makeModule(gpuModule);
return gpuModule;
}
}
\ No newline at end of file
#include <pybind11/pybind11.h>
#include <gpu/GridGenerator/grid/BoundaryConditions/Side.h>
#include "gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h"
namespace boundary_conditions
{
......@@ -14,7 +15,52 @@ namespace boundary_conditions
.value("PY", SideType::PY)
.value("MZ", SideType::MZ)
.value("PZ", SideType::PZ)
.value("GEOMETRY", SideType::GEOMETRY)
.export_values();
.value("GEOMETRY", SideType::GEOMETRY);
py::class_<BoundaryConditionFactory>(parentModule, "BoundaryConditionFactory")
.def("set_velocity_boundary_condition", &BoundaryConditionFactory::setVelocityBoundaryCondition)
.def("set_no_slip_boundary_condition", &BoundaryConditionFactory::setNoSlipBoundaryCondition)
.def("set_slip_boundary_condition", &BoundaryConditionFactory::setSlipBoundaryCondition)
.def("set_pressure_boundary_condition", &BoundaryConditionFactory::setPressureBoundaryCondition)
.def("set_stress_boundary_condition", &BoundaryConditionFactory::setStressBoundaryCondition)
.def("set_geometry_boundary_condition", &BoundaryConditionFactory::setGeometryBoundaryCondition);
py::enum_<BoundaryConditionFactory::VelocityBC>(parentModule, "VelocityBC")
.value("VelocitySimpleBounceBackCompressible", BoundaryConditionFactory::VelocityBC::VelocitySimpleBounceBackCompressible)
.value("VelocityIncompressible", BoundaryConditionFactory::VelocityBC::VelocityIncompressible)
.value("VelocityCompressible", BoundaryConditionFactory::VelocityBC::VelocityCompressible)
.value("VelocityAndPressureCompressible", BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible)
.value("NotSpecified", BoundaryConditionFactory::VelocityBC::NotSpecified);
py::enum_<BoundaryConditionFactory::NoSlipBC>(parentModule, "NoSlipBC")
.value("NoSlipImplicitBounceBack", BoundaryConditionFactory::NoSlipBC::NoSlipImplicitBounceBack)
.value("NoSlipBounceBack", BoundaryConditionFactory::NoSlipBC::NoSlipBounceBack)
.value("NoSlipIncompressible", BoundaryConditionFactory::NoSlipBC::NoSlipIncompressible)
.value("NoSlipCompressible", BoundaryConditionFactory::NoSlipBC::NoSlipCompressible)
.value("NoSlip3rdMomentsCompressible", BoundaryConditionFactory::NoSlipBC::NoSlip3rdMomentsCompressible);
py::enum_<BoundaryConditionFactory::SlipBC>(parentModule, "SlipBC")
.value("SlipIncompressible", BoundaryConditionFactory::SlipBC::SlipIncompressible)
.value("SlipCompressible", BoundaryConditionFactory::SlipBC::SlipCompressible)
.value("SlipBounceBack", BoundaryConditionFactory::SlipBC::SlipBounceBack)
.value("SlipCompressibleTurbulentViscosity", BoundaryConditionFactory::SlipBC::SlipCompressibleTurbulentViscosity)
.value("SlipPressureCompressibleTurbulentViscosity", BoundaryConditionFactory::SlipBC::SlipPressureCompressibleTurbulentViscosity)
.value("NotSpecified", BoundaryConditionFactory::SlipBC::NotSpecified);
py::enum_<BoundaryConditionFactory::PressureBC>(parentModule, "PressureBC")
.value("PressureEquilibrium", BoundaryConditionFactory::PressureBC::PressureEquilibrium)
.value("PressureEquilibrium2", BoundaryConditionFactory::PressureBC::PressureEquilibrium2)
.value("PressureNonEquilibriumIncompressible", BoundaryConditionFactory::PressureBC::PressureNonEquilibriumIncompressible)
.value("PressureNonEquilibriumCompressible", BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible)
.value("OutflowNonReflective", BoundaryConditionFactory::PressureBC::OutflowNonReflective)
.value("OutflowNonReflectivePressureCorrection", BoundaryConditionFactory::PressureBC::OutflowNonReflectivePressureCorrection)
.value("NotSpecified", BoundaryConditionFactory::PressureBC::NotSpecified);
py::enum_<BoundaryConditionFactory::StressBC>(parentModule, "StressBC")
.value("StressCompressible", BoundaryConditionFactory::StressBC::StressCompressible)
.value("StressBounceBack", BoundaryConditionFactory::StressBC::StressBounceBack)
.value("StressPressureBounceBack", BoundaryConditionFactory::StressBC::StressPressureBounceBack)
.value("NotSpecified", BoundaryConditionFactory::StressBC::NotSpecified);
}
}
\ No newline at end of file
......@@ -51,6 +51,7 @@ namespace grid_generator
.def("set_pressure_boundary_condition", &LevelGridBuilder::setPressureBoundaryCondition)
.def("set_periodic_boundary_condition", &LevelGridBuilder::setPeriodicBoundaryCondition)
.def("set_no_slip_boundary_condition", &LevelGridBuilder::setNoSlipBoundaryCondition)
.def("set_precursor_boundary_condition", &LevelGridBuilder::setPrecursorBoundaryCondition)
.def("set_stress_boundary_condition", &LevelGridBuilder::setStressBoundaryCondition);
py::class_<MultipleGridBuilder, LevelGridBuilder, std::shared_ptr<MultipleGridBuilder>>(gridGeneratorModule, "MultipleGridBuilder")
......
......@@ -13,42 +13,44 @@ namespace parameter
{
py::class_<Parameter, std::shared_ptr<Parameter>>(parentModule, "Parameter")
.def(py::init<
const vf::basics::ConfigurationFile&,
int,
int
>(),
"config_data",
int,
std::optional<const vf::basics::ConfigurationFile*>>(),
"number_of_processes",
"my_ID",
"config_data")
.def(py::init<int, int>(),
"number_of_processes",
"my_ID")
.def(py::init<const vf::basics::ConfigurationFile*>(), "config_data")
.def("set_forcing", &Parameter::setForcing)
.def("set_quadric_limiters", &Parameter::setQuadricLimiters)
.def("set_diff_on", &Parameter::setDiffOn)
.def("set_comp_on", &Parameter::setCompOn)
.def("set_max_level", &Parameter::setMaxLevel)
.def("set_t_end", &Parameter::setTEnd)
.def("set_t_out", &Parameter::setTOut)
.def("set_t_start_out", &Parameter::setTStartOut)
.def("set_timestep_end", &Parameter::setTimestepEnd)
.def("set_timestep_out", &Parameter::setTimestepOut)
.def("set_timestep_start_out", &Parameter::setTimestepStartOut)
.def("set_timestep_of_coarse_level", &Parameter::setTimestepOfCoarseLevel)
.def("set_calc_turbulence_intensity", &Parameter::setCalcTurbulenceIntensity)
.def("set_output_path", &Parameter::setOutputPath)
.def("set_output_prefix", &Parameter::setOutputPrefix)
.def("set_f_name", &Parameter::setFName)
.def("set_print_files", &Parameter::setOutflowPressureCorrectionFactor)
.def("set_print_files", &Parameter::setPrintFiles)
.def("set_temperature_init", &Parameter::setTemperatureInit)
.def("set_temperature_BC", &Parameter::setTemperatureBC)
.def("set_viscosity", &Parameter::setViscosity)
.def("set_velocity", &Parameter::setVelocity)
.def("set_viscosity_LB", &Parameter::setViscosityLB)
.def("set_velocity_LB", &Parameter::setVelocityLB)
.def("set_viscosity_ratio", &Parameter::setViscosityRatio)
.def("set_velocity_ratio", &Parameter::setVelocityRatio)
.def("set_density_ratio", &Parameter::setDensityRatio)
.def("set_devices", &Parameter::setDevices)
.def("set_is_body_force", &Parameter::setIsBodyForce)
.def("set_use_AMD", &Parameter::setUseAMD)
.def("set_use_Wale", &Parameter::setUseWale)
.def("set_turbulence_model", &Parameter::setTurbulenceModel)
.def("set_SGS_constant", &Parameter::setSGSConstant)
.def("set_main_kernel", &Parameter::setMainKernel)
.def("set_AD_kernel", &Parameter::setADKernel)
.def("set_use_AMD", &Parameter::setUseAMD)
.def("set_use_Wale", &Parameter::setUseWale)
.def("set_SGS_constant", &Parameter::setSGSConstant)
.def("set_has_wall_monitor", &Parameter::setHasWallModelMonitor)
.def("set_initial_condition", [](Parameter &para, std::function<std::vector<float>(real, real, real)> &init_func)
{
para.setInitialCondition([init_func](real coordX, real coordY, real coordZ, real& rho, real& vx, real& vy, real& vz)
......@@ -70,8 +72,6 @@ namespace parameter
.def("get_viscosity_ratio", &Parameter::getViscosityRatio)
.def("get_density_ratio", &Parameter::getDensityRatio)
.def("get_force_ratio", &Parameter::getForceRatio)
.def("get_use_AMD", &Parameter::getUseAMD)
.def("get_use_Wale", &Parameter::getUseWale)
.def("get_SGS_constant", &Parameter::getSGSConstant)
.def("get_is_body_force", &Parameter::getIsBodyForce)
.def("set_has_wall_model_monitor", &Parameter::setHasWallModelMonitor)
......
......@@ -8,6 +8,8 @@
#include <gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h>
#include <gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h>
#include <gpu/VirtualFluids_GPU/Output/DataWriter.h>
#include "gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h"
#include "gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h"
namespace simulation
{
......@@ -20,11 +22,25 @@ namespace simulation
.def(py::init< std::shared_ptr<Parameter>,
std::shared_ptr<CudaMemoryManager>,
vf::gpu::Communicator &,
GridProvider &>(),
GridProvider &,
BoundaryConditionFactory*>(),
"parameter",
"memoryManager",
"communicator",
"gridProvider")
"gridProvider",
"bcFactory")
.def(py::init< std::shared_ptr<Parameter>,
std::shared_ptr<CudaMemoryManager>,
vf::gpu::Communicator &,
GridProvider &,
BoundaryConditionFactory*,
std::shared_ptr<TurbulenceModelFactory>>(),
"parameter",
"memoryManager",
"communicator",
"gridProvider",
"bcFactory",
"tmFactory")
.def("run", &Simulation::run)
.def("addKineticEnergyAnalyzer", &Simulation::addKineticEnergyAnalyzer)
.def("addEnstrophyAnalyzer", &Simulation::addEnstrophyAnalyzer);
......
#include "pybind11/pybind11.h"
#include "gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h"
#include "gpu/VirtualFluids_GPU/LBM/LB.h"
namespace turbulence_model
{
namespace py = pybind11;
void makeModule(py::module_ &parentModule)
{
py::enum_<TurbulenceModel>(parentModule, "TurbulenceModel")
.value("Smagorinsky", TurbulenceModel::Smagorinsky)
.value("AMD", TurbulenceModel::AMD)
.value("QR", TurbulenceModel::QR)
.value("None", TurbulenceModel::None);
py::class_<TurbulenceModelFactory, std::shared_ptr<TurbulenceModelFactory>>(parentModule, "TurbulenceModelFactory")
.def(py::init< std::shared_ptr<Parameter>>(), "para")
.def("set_turbulence_model", &TurbulenceModelFactory::setTurbulenceModel)
.def("set_model_constant", &TurbulenceModelFactory::setModelConstant)
.def("read_config_file", &TurbulenceModelFactory::readConfigFile);
}
}
\ No newline at end of file
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <pybind11/numpy.h>
#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h>
#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/VelocitySetter.h>
#include <gpu/GridGenerator/VelocitySetter/VelocitySetter.h>
namespace velocity_setter
{
......@@ -10,21 +7,12 @@ namespace velocity_setter
void makeModule(py::module_ &parentModule)
{
py::class_<VelocityReader, std::shared_ptr<VelocityReader>>(parentModule, "VelocityReader")
.def(py::init < std::string,
std::string,
real,
real,
real,
real>(),
"precursor_file_prefix",
"precursor_file_suffix",
"y_start",
"y_end",
"z_start",
"z_end")
.def("read_slice", &VelocityReader::readSlice);
py::enum_<FileType>(parentModule, "FileType")
.value("VTK", FileType::VTK);
py::class_<VelocitySetter, PrecollisionInteractor, std::shared_ptr<VelocitySetter>>(parentModule, "VelocitySetter")
parentModule.def("create_file_collection", &createFileCollection);
py::class_<VTKFileCollection, VelocityFileCollection, std::shared_ptr<VTKFileCollection>>(parentModule, "VTKFileCollection")
.def(py::init <std::string>(), "prefix");
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment