Page MenuHomec4science

bem.cpp
No OneTemporary

File Metadata

Created
Mon, Jul 8, 01:48
/**
* @file
*
* @author Lucas Frérot <lucas.frerot@epfl.ch>
*
* @section LICENSE
*
* Copyright (©) 2017 EPFL (Ecole Polytechnique Fédérale de
* Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des
* Solides)
*
* Tamaas 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.
*
* Tamaas 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 Tamaas. If not, see <http://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"
/* -------------------------------------------------------------------------- */
__BEGIN_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
__END_TAMAAS__

Event Timeline