Page MenuHomec4science

bem.cpp
No OneTemporary

File Metadata

Created
Sat, Jul 20, 07:43
/**
* @file
* @section LICENSE
*
* Copyright (©) 2016-19 EPFL (École Polytechnique Fédérale de Lausanne),
* Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/* -------------------------------------------------------------------------- */
#include "bem_fft_base.hh"
#include "bem_gigipol.hh"
#include "bem_grid.hh"
#include "bem_grid_condat.hh"
#include "bem_grid_polonski.hh"
#include "bem_kato.hh"
#include "bem_polonski.hh"
#include "wrap.hh"
/* -------------------------------------------------------------------------- */
namespace tamaas {
namespace wrap {
using namespace py::literals;
/* -------------------------------------------------------------------------- */
void wrapBEM(py::module& mod) {
py::class_<BemFFTBase>(mod, "BemFFTBase")
.def("computeDisplacementsFromTractions",
&BemFFTBase::computeDisplacementsFromTractions)
.def("computeTractionsFromDisplacements",
&BemFFTBase::computeTractionsFromDisplacements)
.def("applyInfluenceFunctions", &BemFFTBase::applyInfluenceFunctions)
.def("applyInverseInfluenceFunctions",
&BemFFTBase::applyInverseInfluenceFunctions)
.def("computeSpectralInfluenceOverDisplacements",
&BemFFTBase::computeSpectralInfluenceOverDisplacement)
.def("computeTrueDisplacements", &BemFFTBase::computeTrueDisplacements)
.def("computeGaps", &BemFFTBase::computeGaps)
.def("getSpectralInfluenceOverDisplacement",
&BemFFTBase::getSpectralInfluenceOverDisplacement)
.def("getTractions", &BemFFTBase::getTractions,
py::return_value_policy::reference_internal)
.def("getDisplacements", &BemFFTBase::getDisplacements,
py::return_value_policy::reference_internal)
.def("getTrueDisplacements", &BemFFTBase::getTrueDisplacements,
py::return_value_policy::reference_internal)
.def("getGap", &BemFFTBase::getGap,
py::return_value_policy::reference_internal)
.def("setEffectiveModulus", &BemFFTBase::setEffectiveModulus, "E_star"_a)
.def("getEffectiveModulus", &BemFFTBase::getEffectiveModulus)
.def("setMaxIterations", &BemFFTBase::setMaxIterations)
.def("getMaxIterations", &BemFFTBase::getMaxIterations)
.def("setDumpFreq", &BemFFTBase::setDumpFreq)
.def("getDumpFreq", &BemFFTBase::getDumpFreq);
py::class_<BemPolonski, BemFFTBase>(mod, "BemPolonski")
.def(py::init<Surface<Real>&>())
.def("computeEquilibrium", &BemPolonski::computeEquilibrium)
.def("computeEquilibriuminit", &BemPolonski::computeEquilibriuminit)
.def("computeMeanGapsInContact", &BemPolonski::computeMeanGapsInContact)
.def("setMaxPressure", &BemPolonski::setMaxPressure)
.def("getNbIterations", &BemPolonski::getNbIterations);
py::class_<BemKato, BemFFTBase>(mod, "BemKato")
.def(py::init<Surface<Real>&>())
.def("computeEquilibrium", &BemKato::computeEquilibrium)
.def("setMaxPressure", &BemKato::setMaxPressure);
py::class_<BemGigipol, BemFFTBase>(mod, "BemGigiPol")
.def(py::init<Surface<Real>&>())
.def("computeEquilibrium", &BemGigipol::computeEquilibrium)
.def("computeEquilibrium2", &BemGigipol::computeEquilibrium2)
.def("computeEquilibriuminit", &BemGigipol::computeEquilibriuminit)
.def("computeEquilibrium2init", &BemGigipol::computeEquilibrium2init)
.def("computeTractionsFromDisplacements",
&BemGigipol::computeTractionsFromDisplacements);
py::class_<BemGrid>(mod, "BemGrid")
.def("computeDisplacementsFromTractions",
&BemGrid::computeDisplacementsFromTractions)
.def("computeSurfaceNormals", &BemGrid::computeSurfaceNormals)
.def("computeInfluence", &BemGrid::computeInfluence)
.def("setElasticity", &BemGrid::setElasticity)
.def("getTractions", &BemGrid::getTractions,
py::return_value_policy::reference_internal)
.def("getDisplacements", &BemGrid::getDisplacements,
py::return_value_policy::reference_internal)
.def("getSurfaceNormals", &BemGrid::getSurfaceNormals,
py::return_value_policy::reference_internal);
py::class_<BemGridPolonski, BemGrid>(mod, "BemGridPolonski")
.def(py::init<Surface<Real>&>());
py::class_<BemGridCondat, BemGrid>(mod, "BemGridCondat")
.def(py::init<Surface<Real>&>())
.def("computeEquilibrium", &BemGridCondat::computeEquilibrium);
}
} // namespace wrap
} // namespace tamaas

Event Timeline