v0.16.0
Loading...
Searching...
No Matches
AnalyticalExprPython.hpp
Go to the documentation of this file.
1/**
2 * \file AnalyticalExprPython.hpp
3 * \brief Analytical expression Python bridge
4 */
5
6#ifndef __ANALYTICAL_EXPR_PYTHON_HPP__
7#define __ANALYTICAL_EXPR_PYTHON_HPP__
8
9#ifdef ENABLE_PYTHON_BINDING
10 #include <boost/python.hpp>
11 #include <boost/python/def.hpp>
12 #include <boost/python/numpy.hpp>
13
14namespace bp = boost::python;
15namespace np = boost::python::numpy;
16
17namespace EshelbianPlasticity {
18
19struct AnalyticalExprPython {
20 AnalyticalExprPython() = default;
21 virtual ~AnalyticalExprPython() = default;
22
23 MoFEMErrorCode analyticalExprInit(const std::string py_file);
24 MoFEMErrorCode evalAnalyticalDisp(double delta_t, double t, np::ndarray x,
25 np::ndarray y, np::ndarray z,
26 np::ndarray nx, np::ndarray ny,
27 np::ndarray nz,
28 const std::string &block_name,
29 np::ndarray &analytical_expr);
30 MoFEMErrorCode evalAnalyticalTraction(double delta_t, double t, np::ndarray x,
31 np::ndarray y, np::ndarray z,
32 np::ndarray nx, np::ndarray ny,
33 np::ndarray nz,
34 const std::string &block_name,
35 np::ndarray &analytical_expr);
36
37 MoFEMErrorCode evalAnalyticalExternalStrain(double delta_t, double t,
38 np::ndarray x, np::ndarray y,
39 np::ndarray z,
40 const std::string &block_name,
41 np::ndarray &analytical_expr);
42
43 MoFEMErrorCode evalAnalyticalElastic(double delta_t, double t,
44 np::ndarray x, np::ndarray y,
45 np::ndarray z,
46 const std::string &block_name,
47 np::ndarray &analytical_expr);
48
49 template <typename T>
50 inline std::vector<T>
51 py_list_to_std_vector(const boost::python::object &iterable) {
52 return std::vector<T>(boost::python::stl_input_iterator<T>(iterable),
53 boost::python::stl_input_iterator<T>());
54 }
55
56private:
57 bp::object mainNamespace;
58 bp::object analyticalDispFun;
59 bp::object analyticalTractionFun;
60 bp::object analyticalExternalStrainFun;
61 bp::object analyticalElasticFun;
62};
63
64extern boost::weak_ptr<AnalyticalExprPython> AnalyticalExprPythonWeakPtr;
65
66} // namespace EshelbianPlasticity
67#endif // ENABLE_PYTHON_BINDING
68
69#endif // __ANALYTICAL_EXPR_PYTHON_HPP__
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
constexpr double t
plate stiffness
Definition plate.cpp:58