diff --git a/packages/python_interface.cmake b/packages/python_interface.cmake index 0cdb0fc5e..a94ab468b 100644 --- a/packages/python_interface.cmake +++ b/packages/python_interface.cmake @@ -1,83 +1,81 @@ #=============================================================================== # @file python_interface.cmake # # @author Guillaume Anciaux # @author Nicolas Richart # # @date creation: Tue Nov 29 2011 # @date last modification: Fri Jan 22 2016 # # @brief package description for the python interface # # @section LICENSE # # Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de # Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des # Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # #=============================================================================== package_declare(python_interface DESCRIPTION "Akantu's python interface" DEPENDS PythonLibs) package_declare_sources(python_interface python/python_functor.cc python/python_functor.hh python/python_functor_inline_impl.cc - model/boundary_condition_python_functor.hh - model/boundary_condition_python_functor.cc model/solid_mechanics/materials/material_python/material_python.cc model/solid_mechanics/materials/material_python/material_python.hh ) set(AKANTU_PYTHON_INTERFACE_IMPL "swig" CACHE STRING "Specifies the implementation of the python interface") set_property(CACHE AKANTU_PYTHON_INTERFACE_IMPL PROPERTY STRINGS pybind11 swig all ) if(AKANTU_PYTHON_INTERFACE_IMPL MATCHES "swig" OR AKANTU_PYTHON_INTERFACE_IMPL MATCHES "all") package_add_dependencies(python_interface PRIVATE SWIG) else() package_remove_dependencies(python_interface SWIG) endif() -if(AKANTU_PYTHON_INTERFACE_IMPL MATCHES "swig" OR AKANTU_PYTHON_INTERFACE_IMPL MATCHES "all") +if(AKANTU_PYTHON_INTERFACE_IMPL MATCHES "pybind11" OR AKANTU_PYTHON_INTERFACE_IMPL MATCHES "all") package_add_dependencies(python_interface PUBLIC pybind11) else() package_remove_dependencies(python_interface pybind11) endif() package_set_package_system_dependency(python_interface deb-src swig3.0) package_declare_documentation(python_interface "This package enables the python interface of Akantu. It relies on swig3.0 to generate the code" "" "Under Ubuntu (14.04 LTS) the installation can be performed using the commands:" "\\begin{command}" " > sudo apt-get install swig3.0" "\\end{command}" "" ) package_declare_documentation_files(python_interface manual-python.tex ) diff --git a/python/pybind11/py_aka_boundary_conditions.cc b/python/pybind11/py_aka_boundary_conditions.cc index 119f6bf63..c40670a23 100644 --- a/python/pybind11/py_aka_boundary_conditions.cc +++ b/python/pybind11/py_aka_boundary_conditions.cc @@ -1,66 +1,66 @@ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" /* -------------------------------------------------------------------------- */ #include #include #include /* -------------------------------------------------------------------------- */ -#include "boundary_condition_python_functor.hh" +#include "boundary_condition_functor.hh" /* -------------------------------------------------------------------------- */ namespace py = pybind11; namespace _aka = akantu; namespace { /* -------------------------------------------------------------------------- */ class PyDirichletFunctor : public _aka::BC::DirichletFunctor { public: /* Inherit the constructors */ using _aka::BC::DirichletFunctor::DirichletFunctor; /* Trampoline (need one for each virtual function) */ void operator()(_aka::UInt node, _aka::Vector & flags, _aka::Vector<_aka::Real> & primal, const _aka::Vector<_aka::Real> & coord) const override { PYBIND11_OVERLOAD_NAME(void, _aka::BC::DirichletFunctor, "__call__", operator(), node, flags, primal, coord); } }; /* -------------------------------------------------------------------------- */ class PyNeumannFunctor : public _aka::BC::NeumannFunctor { public: /* Inherit the constructors */ using _aka::BC::NeumannFunctor::NeumannFunctor; /* Trampoline (need one for each virtual function) */ void operator()(const _aka::IntegrationPoint & quad_point, _aka::Vector<_aka::Real> & dual, const _aka::Vector<_aka::Real> & coord, const _aka::Vector<_aka::Real> & normals) const override { PYBIND11_OVERLOAD_PURE_NAME(void, _aka::BC::NeumannFunctor, "__call__", operator(), quad_point, dual, coord, normals); } }; /* -------------------------------------------------------------------------- */ py::module & register_boundary_conditions(py::module & mod) { py::class_<_aka::BC::Functor>(mod, "BCFunctor"); py::class_<_aka::BC::DirichletFunctor, PyDirichletFunctor, _aka::BC::Functor>( mod, "DirichletFunctor") .def(py::init()) .def(py::init<_aka::SpatialDirection>()); py::class_<_aka::BC::NeumannFunctor, PyNeumannFunctor, _aka::BC::Functor>( mod, "NeumannFunctor") .def(py::init()); return mod; } // namespace } // namespace