ddfem 1.0.9__py3-none-any.whl → 1.0.11__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ddfem/__init__.py +10 -6
- ddfem/__main__.py +12 -13
- ddfem/boundary.py +2 -2
- ddfem/data/2.11.dev20250709/extra.modules +14 -0
- ddfem/data/2.11.dev20250709/femscheme_0bb54cd4f1cd1df2477f5f59393c6a2e.cc +43 -0
- ddfem/data/2.11.dev20250709/femscheme_5c9e2700386c07226eb4db155fa5ef14.cc +43 -0
- ddfem/data/2.11.dev20250709/femscheme_765ef00d995a939c34bdc0d0cc4847ca.cc +43 -0
- ddfem/data/2.11.dev20250709/femspace_11b3436cb033df683615c50d5d4239bd_f14dd0b3b474c0cd816334330f55ad72.cc +45 -0
- ddfem/data/2.11.dev20250709/femspace_f4f043307753c8e74af23c94c28a3b0d_438586e783f51d84a82e82b0d8daceea.cc +45 -0
- ddfem/data/2.11.dev20250709/{integrands_3bde0abfafcf45a3cff4d1029568ab5cv1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_0003e4cbb961fd653fe295d2c4fa50a7v1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +367 -14
- ddfem/data/2.11.dev20250709/{integrands_f3ca00a2ef95c9a48de9ec1b807b1b30v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_0fa4a1c37449cf574971977e10cf682av1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
- ddfem/data/2.11.dev20250709/{integrands_2e5e6f48655bd358419554a0857f697bv1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_29b696aa653181a57d036f771efa8be9v1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
- ddfem/data/2.11.dev20250709/{integrands_5e1afa60a15644998389a84306246ea5v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_536f9ba0ea4ecd1f7d4e2bc43ef29d08v1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
- ddfem/data/2.11.dev20250709/{integrands_008eefa148b772fa3192dd3c1728c140v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_5907ab5c70328c21dd308abf09e529aev1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
- ddfem/data/2.11.dev20250709/{integrands_563572f4cb20b041e8198ba7d5f88584v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_68eba4e963a61031a52da3365f515585v1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
- ddfem/data/2.11.dev20250709/integrands_83927be37e79b291517b827b9ddc1983v1_3_a524c1196983e65de1c06d7d6afdeb44.cc +533 -0
- ddfem/data/2.11.dev20250709/integrands_8ed2f23c088e3a3d82a3259b663796c7v1_3_a524c1196983e65de1c06d7d6afdeb44.cc +533 -0
- ddfem/data/2.11.dev20250709/integrands_af3bbe7d629df162ef8c570e1503bf62v1_3_a524c1196983e65de1c06d7d6afdeb44.cc +762 -0
- ddfem/data/2.11.dev20250709/{integrands_2339be3c67df1d67b18125c34ced69c2v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_bf510277401791ad5e30831b49a8ed7cv1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +25 -14
- ddfem/data/2.11.dev20250709/integrands_d0634430f14d3432dae186e57ec5aecav1_3_a524c1196983e65de1c06d7d6afdeb44.cc +587 -0
- ddfem/data/2.11.dev20250709/intro.modules +34 -100
- ddfem/data/2.11.dev20250709/{localfunction_10ad0a2d88c74db5f4bf5f81e138974f_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_0cb4ca9e24e2891510640b0737aaab21_a524c1196983e65de1c06d7d6afdeb44.cc} +64 -29
- ddfem/data/2.11.dev20250709/localfunction_0f7b2106478c5d2af781b1f377a180d2_a524c1196983e65de1c06d7d6afdeb44.cc +393 -0
- ddfem/data/2.11.dev20250709/localfunction_10f9d7a54f79c12d6ca923b9ee56b80d_a524c1196983e65de1c06d7d6afdeb44.cc +324 -0
- ddfem/data/2.11.dev20250709/localfunction_10f9d7a54f79c12d6ca923b9ee56b80d_af122c1df944c95cd395ec0f91d0f970.cc +322 -0
- ddfem/data/2.11.dev20250709/localfunction_1c20e613977d8cea4cf5227c12aa68a6_a524c1196983e65de1c06d7d6afdeb44.cc +164 -0
- ddfem/data/2.11.dev20250709/{localfunction_191355e6250b2d2e260d96f519ad9976_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_217e4bf8b368a7768c4897cf58f71d84_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
- ddfem/data/2.11.dev20250709/localfunction_22e797a8f3e8c322f33c41e07bd15165_a524c1196983e65de1c06d7d6afdeb44.cc +1445 -0
- ddfem/data/2.11.dev20250709/localfunction_2a97db5a6a479d02138a836cb0890cf2_a524c1196983e65de1c06d7d6afdeb44.cc +173 -0
- ddfem/data/2.11.dev20250709/localfunction_2e2afc8df6107683d574a8d96d5249f4_af122c1df944c95cd395ec0f91d0f970.cc +512 -0
- ddfem/data/2.11.dev20250709/localfunction_32613626342183eafa360dc1f0f18924_a524c1196983e65de1c06d7d6afdeb44.cc +1425 -0
- ddfem/data/2.11.dev20250709/localfunction_37174cfc9d6bf565336cac0d2ea785f5_a524c1196983e65de1c06d7d6afdeb44.cc +786 -0
- ddfem/data/2.11.dev20250709/{localfunction_d75993d7ae5919d23117b153e900840d_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_3d957c5b2628e5120636b8e3f461bc0d_a524c1196983e65de1c06d7d6afdeb44.cc} +64 -29
- ddfem/data/2.11.dev20250709/localfunction_3ecaa105be9e3abddf3a85d8adc5d36f_a524c1196983e65de1c06d7d6afdeb44.cc +697 -0
- ddfem/data/2.11.dev20250709/{localfunction_f626cd43dc8558135fe0b32cde016644_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_3ecaf7de7505b53bb0b5fb6d78549387_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
- ddfem/data/2.11.dev20250709/{localfunction_1d27a90a52b9053192c9cc902283f79b_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_4192604521151252f1c8fa56a1f9f226_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
- ddfem/data/2.11.dev20250709/localfunction_4484607e3f9bd9999dbd7bb9d595a7b2_a524c1196983e65de1c06d7d6afdeb44.cc +173 -0
- ddfem/data/2.11.dev20250709/localfunction_4976bbef3267846b59f3a26497ffe9db_a524c1196983e65de1c06d7d6afdeb44.cc +474 -0
- ddfem/data/2.11.dev20250709/{localfunction_a8c726f728cd35d137188b33301aeef1_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_4adfaf8a08fac23151af0b1e790db1f7_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
- ddfem/data/2.11.dev20250709/{localfunction_00f2e5593eeb23f01906255d67244f6e_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_4f6a526abfe63959f81b09a5796c5eb1_a524c1196983e65de1c06d7d6afdeb44.cc} +44 -29
- ddfem/data/2.11.dev20250709/localfunction_5591a2c803b9658084d8f11d44bf3ae1_a524c1196983e65de1c06d7d6afdeb44.cc +485 -0
- ddfem/data/2.11.dev20250709/localfunction_6363af791dde11d699a9a3d876cc5d9a_a524c1196983e65de1c06d7d6afdeb44.cc +549 -0
- ddfem/data/2.11.dev20250709/localfunction_6363af791dde11d699a9a3d876cc5d9a_af122c1df944c95cd395ec0f91d0f970.cc +547 -0
- ddfem/data/2.11.dev20250709/localfunction_65bda5736a84d4aa0ef2d48ebcc90ed5_a524c1196983e65de1c06d7d6afdeb44.cc +173 -0
- ddfem/data/2.11.dev20250709/localfunction_6eccfc8fd91ce34d81e7c3962ece5d94_a524c1196983e65de1c06d7d6afdeb44.cc +766 -0
- ddfem/data/2.11.dev20250709/localfunction_762aa49bc5a47ad3d8d8bbde36b42ee5_a524c1196983e65de1c06d7d6afdeb44.cc +723 -0
- ddfem/data/2.11.dev20250709/localfunction_76e8db0f046ac9e37a793e0bb13eea7b_a524c1196983e65de1c06d7d6afdeb44.cc +292 -0
- ddfem/data/2.11.dev20250709/localfunction_7792f4273b0fd848c5a0fc9d6f12683e_a524c1196983e65de1c06d7d6afdeb44.cc +280 -0
- ddfem/data/2.11.dev20250709/localfunction_7d81d496538f240d504e5597484ee746_a524c1196983e65de1c06d7d6afdeb44.cc +462 -0
- ddfem/data/2.11.dev20250709/localfunction_7f7ef99c50708814ba5a82b0956b0aed_a524c1196983e65de1c06d7d6afdeb44.cc +461 -0
- ddfem/data/2.11.dev20250709/localfunction_898de4ae138e0ed305ef1399c66aa10a_a524c1196983e65de1c06d7d6afdeb44.cc +313 -0
- ddfem/data/2.11.dev20250709/localfunction_98b04b00bb93b8c6da99c91867e597ca_a524c1196983e65de1c06d7d6afdeb44.cc +639 -0
- ddfem/data/2.11.dev20250709/{localfunction_86a0670f34bf2ac8155423a1c1bc2e75_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_a46a988b5d8571e80fd401a36d7341b7_a524c1196983e65de1c06d7d6afdeb44.cc} +64 -29
- ddfem/data/2.11.dev20250709/{localfunction_1d13146d4bff10e178aba773fe2a9f1d_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_a99a0c7f35b06ac5a1fa7f081b5e64f9_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
- ddfem/data/2.11.dev20250709/{localfunction_e4557ecff74fe5b37313674e67db2782_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_a9bb07439605d560b583608f20441342_a524c1196983e65de1c06d7d6afdeb44.cc} +67 -29
- ddfem/data/2.11.dev20250709/{localfunction_82d7cb9338bf118426fac2abf41a91a4_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_cda923259a47bb19861404a9fdb64303_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
- ddfem/data/2.11.dev20250709/localfunction_d0f33c2dc1ae0e619d85a7621c8e83a6_a524c1196983e65de1c06d7d6afdeb44.cc +325 -0
- ddfem/data/2.11.dev20250709/localfunction_d3d9b8a21e3075c9ff40117c5244f28e_a524c1196983e65de1c06d7d6afdeb44.cc +381 -0
- ddfem/data/2.11.dev20250709/localfunction_d4b9ca85d48735ee01f395a42eaa0cee_af122c1df944c95cd395ec0f91d0f970.cc +774 -0
- ddfem/data/2.11.dev20250709/localfunction_dd1fb4bd60f2d8b3a062dbbdaedb9fee_a524c1196983e65de1c06d7d6afdeb44.cc +869 -0
- ddfem/data/2.11.dev20250709/localfunction_dd5ab085a9d94f578c1f3d337ea360a3_a524c1196983e65de1c06d7d6afdeb44.cc +161 -0
- ddfem/data/2.11.dev20250709/{localfunction_3e323e81c52891c0ecb656eac273e52f_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_e2b19c5987f9b6fb0cd5453bfa7f4f9f_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -30
- ddfem/data/2.11.dev20250709/{localfunction_e69118a51208cfab8a028711e966e76c_19659fe2f2f74bcfb5d532f1a0d38be9.cc → localfunction_e85b93fe9b8fcd40ee82782fc600b65b_a524c1196983e65de1c06d7d6afdeb44.cc} +89 -78
- ddfem/data/extra.modules +13 -0
- ddfem/examples/beam.py +43 -50
- ddfem/examples/chemical_reaction.py +1 -1
- ddfem/examples/five_circle_flat.py +42 -28
- ddfem/examples/linear_elasticity.py +5 -1
- ddfem/examples/triple_circle.py +86 -83
- ddfem/examples/triple_circle_beam.py +71 -61
- ddfem/geometry/primitive_base.py +1 -1
- {ddfem-1.0.9.dist-info → ddfem-1.0.11.dist-info}/METADATA +35 -3
- ddfem-1.0.11.dist-info/RECORD +124 -0
- ddfem/data/2.11.dev20250709/boundary.modules +0 -9
- ddfem/data/2.11.dev20250709/femspace_90f0a9524a8cb701e8ee5027b7658a0e_0faf32f13b591f4f60f83c591507b9be.cc +0 -40
- ddfem/data/2.11.dev20250709/geometry.modules +0 -84
- ddfem/data/2.11.dev20250709/hierarchicalgrid_966e2a5c8356c5b278ccd3acad180f0a.cc +0 -30
- ddfem/data/2.11.dev20250709/localfunction_aeb3d963412cdc65630e0a4c3c0dde0f_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
- ddfem/data/2.11.dev20250709/localfunction_bdfb7ddf42a423f7d0791458634d4b8f_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
- ddfem/data/2.11.dev20250709/localfunction_c5ebc4ae4b5d3bad6be770eb08c50d08_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -1131
- ddfem/data/2.11.dev20250709/localfunction_f4583c5cc10d24a8bdedf7510ce9da7b_a524c1196983e65de1c06d7d6afdeb44.cc +0 -299
- ddfem/data/2.11.dev20250709/localfunction_f4b1d42cbb447375f39ed834570cd3f0_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
- ddfem/data/2.11.dev20250709/localfunction_fc22d5adaf3b9563160dc2aec55e8ba1_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -113
- ddfem/data/2.11.dev20250709/transformers.modules +0 -13
- ddfem/data/2.11.dev20250709/yaspcoordinates_dim2_ctdouble.cc +0 -55
- ddfem-1.0.9.dist-info/RECORD +0 -96
- {ddfem-1.0.9.dist-info → ddfem-1.0.11.dist-info}/WHEEL +0 -0
- {ddfem-1.0.9.dist-info → ddfem-1.0.11.dist-info}/licenses/LICENSE +0 -0
- {ddfem-1.0.9.dist-info → ddfem-1.0.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,164 @@
|
|
1
|
+
#ifndef GUARD_1c20e613977d8cea4cf5227c12aa68a6
|
2
|
+
#define GUARD_1c20e613977d8cea4cf5227c12aa68a6
|
3
|
+
|
4
|
+
#define USING_DUNE_PYTHON 1
|
5
|
+
#include <config.h>
|
6
|
+
#include <dune/alugrid/dgf.hh>
|
7
|
+
#include <dune/alugrid/grid.hh>
|
8
|
+
#include <dune/fem/gridpart/adaptiveleafgridpart.hh>
|
9
|
+
#include <dune/fem/gridpart/filter/simple.hh>
|
10
|
+
#include <dune/fem/gridpart/filteredgridpart.hh>
|
11
|
+
#include <dune/fempy/py/gridview.hh>
|
12
|
+
#include <dune/python/grid/gridview.hh>
|
13
|
+
#include <dune/python/grid/hierarchical.hh>
|
14
|
+
#include <dune/fem/function/localfunction/bindable.hh>
|
15
|
+
#include <dune/fem/common/intersectionside.hh>
|
16
|
+
#include <dune/python/pybind11/pybind11.h>
|
17
|
+
#include <dune/python/pybind11/extensions.h>
|
18
|
+
#include <dune/fempy/py/grid/gridpart.hh>
|
19
|
+
#include <dune/common/exceptions.hh>
|
20
|
+
#include <dune/fempy/function/virtualizedgridfunction.hh>
|
21
|
+
#include <dune/fempy/py/ufllocalfunction.hh>
|
22
|
+
|
23
|
+
namespace UFLLocalFunctions_1c20e613977d8cea4cf5227c12aa68a6
|
24
|
+
{
|
25
|
+
|
26
|
+
// UFLLocalFunction
|
27
|
+
// ----------------
|
28
|
+
|
29
|
+
template< class GridPart, class Coeffpsi_h >
|
30
|
+
struct UFLLocalFunction
|
31
|
+
: public Dune::Fem::BindableGridFunctionWithSpace<GridPart,Dune::Dim<2>>
|
32
|
+
{
|
33
|
+
typedef GridPart GridPartType;
|
34
|
+
typedef typename GridPartType::GridViewType GridView;
|
35
|
+
typedef typename GridView::ctype ctype;
|
36
|
+
typedef Dune::Fem::BindableGridFunctionWithSpace<GridPart,Dune::Dim<2>> BaseType;
|
37
|
+
typedef Dune::Fem::GridFunctionSpace<GridPartType,Dune::Dim<2>> FunctionSpaceType;
|
38
|
+
typedef typename GridPartType::template Codim< 0 >::EntityType EntityType;
|
39
|
+
typedef typename GridPartType::IntersectionType IntersectionType;
|
40
|
+
typedef typename EntityType::Geometry Geometry;
|
41
|
+
typedef typename Geometry::GlobalCoordinate GlobalCoordinateType;
|
42
|
+
typedef Dune::Fem::IntersectionSide Side;
|
43
|
+
typedef std::tuple<> ConstantTupleType;
|
44
|
+
typedef std::tuple< Dune::Fem::GridFunctionSpace< GridPartType, Dune::FieldVector< double, 1 > > > CoefficientFunctionSpaceTupleType;
|
45
|
+
typedef std::tuple< Coeffpsi_h > CoefficientTupleType;
|
46
|
+
template< std::size_t i >
|
47
|
+
using CoefficientFunctionSpaceType = std::tuple_element_t< i, CoefficientFunctionSpaceTupleType >;
|
48
|
+
template< std::size_t i >
|
49
|
+
using CoefficientRangeType = typename CoefficientFunctionSpaceType< i >::RangeType;
|
50
|
+
template< std::size_t i >
|
51
|
+
using CoefficientJacobianRangeType = typename CoefficientFunctionSpaceType< i >::JacobianRangeType;
|
52
|
+
static constexpr bool gridPartValid = Dune::Fem::checkGridPartValid<GridPartType,Dune::Fem::ConstLocalFunction<Coeffpsi_h>>();
|
53
|
+
template< std::size_t i >
|
54
|
+
using CoefficientType = std::tuple_element_t< i, CoefficientTupleType >;
|
55
|
+
template< std::size_t i >
|
56
|
+
using ConstantType = typename std::tuple_element_t< i, ConstantTupleType >::element_type;
|
57
|
+
using BaseType::entity;
|
58
|
+
using BaseType::geometry;
|
59
|
+
|
60
|
+
UFLLocalFunction ( const GridPartType &gridPart, const std::string &name, int order, const Coeffpsi_h &coeffpsi_h, const Dune::Fem::ParameterReader ¶meter = Dune::Fem::Parameter::container() )
|
61
|
+
: BaseType(gridPart,name,order),
|
62
|
+
coefficients_( Dune::Fem::ConstLocalFunction< Coeffpsi_h >( coeffpsi_h ) )
|
63
|
+
{}
|
64
|
+
|
65
|
+
void bind ( const IntersectionType &intersection, Side side )
|
66
|
+
{
|
67
|
+
BaseType::bind(intersection, side);
|
68
|
+
std::get< 0 >( coefficients_ ).bind( this->entity() );
|
69
|
+
}
|
70
|
+
|
71
|
+
void bind ( const EntityType &entity )
|
72
|
+
{
|
73
|
+
BaseType::bind(entity);
|
74
|
+
std::get< 0 >( coefficients_ ).bind( this->entity() );
|
75
|
+
}
|
76
|
+
|
77
|
+
void unbind ()
|
78
|
+
{
|
79
|
+
BaseType::unbind();
|
80
|
+
std::get< 0 >( coefficients_ ).unbind();
|
81
|
+
}
|
82
|
+
|
83
|
+
template< class Point >
|
84
|
+
void evaluate ( const Point &x, typename FunctionSpaceType::RangeType &result ) const
|
85
|
+
{
|
86
|
+
typename CoefficientFunctionSpaceType< 0 >::JacobianRangeType tmp0 = jacobianCoefficient< 0 >( x );
|
87
|
+
const auto tmp1 = -1 * (tmp0[ 0 ])[ 1 ];
|
88
|
+
result[ 0 ] = tmp1;
|
89
|
+
result[ 1 ] = (tmp0[ 0 ])[ 0 ];
|
90
|
+
}
|
91
|
+
|
92
|
+
template< class Point >
|
93
|
+
void jacobian ( const Point &x, typename FunctionSpaceType::JacobianRangeType &result ) const
|
94
|
+
{
|
95
|
+
typename CoefficientFunctionSpaceType< 0 >::HessianRangeType tmp0 = hessianCoefficient< 0 >( x );
|
96
|
+
const auto tmp1 = -1 * ((tmp0[ 0 ])[ 1 ])[ 0 ];
|
97
|
+
const auto tmp2 = -1 * ((tmp0[ 0 ])[ 1 ])[ 1 ];
|
98
|
+
(result[ 0 ])[ 0 ] = tmp1;
|
99
|
+
(result[ 0 ])[ 1 ] = tmp2;
|
100
|
+
(result[ 1 ])[ 0 ] = ((tmp0[ 0 ])[ 0 ])[ 0 ];
|
101
|
+
(result[ 1 ])[ 1 ] = ((tmp0[ 0 ])[ 0 ])[ 1 ];
|
102
|
+
}
|
103
|
+
|
104
|
+
template< class Point >
|
105
|
+
void hessian ( const Point &x, typename FunctionSpaceType::HessianRangeType &result ) const
|
106
|
+
{
|
107
|
+
DUNE_THROW(Dune::NotImplemented,"hessian method could not be generated for local function (TooHighDerivative('CodeGenerator does not allow for third order derivatives, yet.'))");
|
108
|
+
result=typename FunctionSpaceType::HessianRangeType(0);
|
109
|
+
}
|
110
|
+
|
111
|
+
template< std::size_t i >
|
112
|
+
const ConstantType< i > &constant () const
|
113
|
+
{
|
114
|
+
return *std::get< i >( constants_ );
|
115
|
+
}
|
116
|
+
|
117
|
+
template< std::size_t i >
|
118
|
+
ConstantType< i > &constant ()
|
119
|
+
{
|
120
|
+
return *std::get< i >( constants_ );
|
121
|
+
}
|
122
|
+
|
123
|
+
template< std::size_t i, class Point >
|
124
|
+
typename CoefficientFunctionSpaceType< i >::RangeType evaluateCoefficient ( const Point &x ) const
|
125
|
+
{
|
126
|
+
typename CoefficientFunctionSpaceType< i >::RangeType result;
|
127
|
+
std::get< i >( coefficients_ ).evaluate( x, result );;
|
128
|
+
return result;
|
129
|
+
}
|
130
|
+
|
131
|
+
template< std::size_t i, class Point >
|
132
|
+
typename CoefficientFunctionSpaceType< i >::JacobianRangeType jacobianCoefficient ( const Point &x ) const
|
133
|
+
{
|
134
|
+
typename CoefficientFunctionSpaceType< i >::JacobianRangeType result;
|
135
|
+
std::get< i >( coefficients_ ).jacobian( x, result );;
|
136
|
+
return result;
|
137
|
+
}
|
138
|
+
|
139
|
+
template< std::size_t i, class Point >
|
140
|
+
typename CoefficientFunctionSpaceType< i >::HessianRangeType hessianCoefficient ( const Point &x ) const
|
141
|
+
{
|
142
|
+
typename CoefficientFunctionSpaceType< i >::HessianRangeType result;
|
143
|
+
std::get< i >( coefficients_ ).hessian( x, result );;
|
144
|
+
return result;
|
145
|
+
}
|
146
|
+
ConstantTupleType constants_;
|
147
|
+
std::tuple< Dune::Fem::ConstLocalFunction< Coeffpsi_h > > coefficients_;
|
148
|
+
};
|
149
|
+
|
150
|
+
} // namespace UFLLocalFunctions_1c20e613977d8cea4cf5227c12aa68a6
|
151
|
+
|
152
|
+
PYBIND11_MODULE( localfunction_1c20e613977d8cea4cf5227c12aa68a6_a524c1196983e65de1c06d7d6afdeb44, module )
|
153
|
+
{
|
154
|
+
typedef UFLLocalFunctions_1c20e613977d8cea4cf5227c12aa68a6::UFLLocalFunction< typename Dune::FemPy::GridPart< Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true > >, Dune::FemPy::VirtualizedGridFunction< Dune::FemPy::GridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>, Dune::FieldVector< double, 1 > > > LocalFunctionType;
|
155
|
+
if constexpr( LocalFunctionType::gridPartValid )
|
156
|
+
{
|
157
|
+
auto cls = Dune::Python::insertClass<LocalFunctionType>(module,"UFLLocalFunction",Dune::Python::GenerateTypeName("UFLLocalFunctions_1c20e613977d8cea4cf5227c12aa68a6::UFLLocalFunction< typename Dune::FemPy::GridPart< Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true > >, Dune::FemPy::VirtualizedGridFunction< Dune::FemPy::GridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>, Dune::FieldVector< double, 1 > > >"), Dune::Python::IncludeFiles({"python/dune/generated/localfunction_1c20e613977d8cea4cf5227c12aa68a6_a524c1196983e65de1c06d7d6afdeb44.cc"})).first;
|
158
|
+
Dune::FemPy::registerUFLLocalFunction( module, cls );
|
159
|
+
cls.def( pybind11::init( [] ( pybind11::object gridView, const std::string &name, int order, const Dune::FemPy::VirtualizedGridFunction< Dune::FemPy::GridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>, Dune::FieldVector< double, 1 > > &coeffpsi_h ) {return new LocalFunctionType( Dune::FemPy::gridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>(gridView),name,order, coeffpsi_h); } ), pybind11::keep_alive< 1, 2 >(), pybind11::keep_alive< 1, 3 >() );
|
160
|
+
cls.def_property_readonly( "virtualized", [] ( LocalFunctionType& ) -> bool { return true;});
|
161
|
+
}
|
162
|
+
}
|
163
|
+
|
164
|
+
#endif
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#ifndef
|
2
|
-
#define
|
1
|
+
#ifndef GUARD_217e4bf8b368a7768c4897cf58f71d84
|
2
|
+
#define GUARD_217e4bf8b368a7768c4897cf58f71d84
|
3
3
|
|
4
4
|
#define USING_DUNE_PYTHON 1
|
5
5
|
#include <config.h>
|
@@ -20,13 +20,13 @@
|
|
20
20
|
#include <dune/fempy/function/virtualizedgridfunction.hh>
|
21
21
|
#include <dune/fempy/py/ufllocalfunction.hh>
|
22
22
|
|
23
|
-
namespace
|
23
|
+
namespace UFLLocalFunctions_217e4bf8b368a7768c4897cf58f71d84
|
24
24
|
{
|
25
25
|
|
26
26
|
// UFLLocalFunction
|
27
27
|
// ----------------
|
28
28
|
|
29
|
-
template< class GridPart, class
|
29
|
+
template< class GridPart, class Coeffuh >
|
30
30
|
struct UFLLocalFunction
|
31
31
|
: public Dune::Fem::BindableGridFunctionWithSpace<GridPart,Dune::Dim<1>>
|
32
32
|
{
|
@@ -42,14 +42,14 @@ struct UFLLocalFunction
|
|
42
42
|
typedef Dune::Fem::IntersectionSide Side;
|
43
43
|
typedef std::tuple<> ConstantTupleType;
|
44
44
|
typedef std::tuple< Dune::Fem::GridFunctionSpace< GridPartType, Dune::FieldVector< double, 1 > > > CoefficientFunctionSpaceTupleType;
|
45
|
-
typedef std::tuple<
|
45
|
+
typedef std::tuple< Coeffuh > CoefficientTupleType;
|
46
46
|
template< std::size_t i >
|
47
47
|
using CoefficientFunctionSpaceType = std::tuple_element_t< i, CoefficientFunctionSpaceTupleType >;
|
48
48
|
template< std::size_t i >
|
49
49
|
using CoefficientRangeType = typename CoefficientFunctionSpaceType< i >::RangeType;
|
50
50
|
template< std::size_t i >
|
51
51
|
using CoefficientJacobianRangeType = typename CoefficientFunctionSpaceType< i >::JacobianRangeType;
|
52
|
-
static constexpr bool gridPartValid = Dune::Fem::checkGridPartValid<GridPartType,Dune::Fem::ConstLocalFunction<
|
52
|
+
static constexpr bool gridPartValid = Dune::Fem::checkGridPartValid<GridPartType,Dune::Fem::ConstLocalFunction<Coeffuh>>();
|
53
53
|
template< std::size_t i >
|
54
54
|
using CoefficientType = std::tuple_element_t< i, CoefficientTupleType >;
|
55
55
|
template< std::size_t i >
|
@@ -57,9 +57,9 @@ struct UFLLocalFunction
|
|
57
57
|
using BaseType::entity;
|
58
58
|
using BaseType::geometry;
|
59
59
|
|
60
|
-
UFLLocalFunction ( const GridPartType &gridPart, const std::string &name, int order, const
|
60
|
+
UFLLocalFunction ( const GridPartType &gridPart, const std::string &name, int order, const Coeffuh &coeffuh, const Dune::Fem::ParameterReader ¶meter = Dune::Fem::Parameter::container() )
|
61
61
|
: BaseType(gridPart,name,order),
|
62
|
-
coefficients_( Dune::Fem::ConstLocalFunction<
|
62
|
+
coefficients_( Dune::Fem::ConstLocalFunction< Coeffuh >( coeffuh ) )
|
63
63
|
{}
|
64
64
|
|
65
65
|
void bind ( const IntersectionType &intersection, Side side )
|
@@ -172,19 +172,19 @@ struct UFLLocalFunction
|
|
172
172
|
return result;
|
173
173
|
}
|
174
174
|
ConstantTupleType constants_;
|
175
|
-
std::tuple< Dune::Fem::ConstLocalFunction<
|
175
|
+
std::tuple< Dune::Fem::ConstLocalFunction< Coeffuh > > coefficients_;
|
176
176
|
};
|
177
177
|
|
178
|
-
} // namespace
|
178
|
+
} // namespace UFLLocalFunctions_217e4bf8b368a7768c4897cf58f71d84
|
179
179
|
|
180
|
-
PYBIND11_MODULE(
|
180
|
+
PYBIND11_MODULE( localfunction_217e4bf8b368a7768c4897cf58f71d84_a524c1196983e65de1c06d7d6afdeb44, module )
|
181
181
|
{
|
182
|
-
typedef
|
182
|
+
typedef UFLLocalFunctions_217e4bf8b368a7768c4897cf58f71d84::UFLLocalFunction< typename Dune::FemPy::GridPart< Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true > >, Dune::FemPy::VirtualizedGridFunction< Dune::FemPy::GridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>, Dune::FieldVector< double, 1 > > > LocalFunctionType;
|
183
183
|
if constexpr( LocalFunctionType::gridPartValid )
|
184
184
|
{
|
185
|
-
auto cls = Dune::Python::insertClass<LocalFunctionType>(module,"UFLLocalFunction",Dune::Python::GenerateTypeName("
|
185
|
+
auto cls = Dune::Python::insertClass<LocalFunctionType>(module,"UFLLocalFunction",Dune::Python::GenerateTypeName("UFLLocalFunctions_217e4bf8b368a7768c4897cf58f71d84::UFLLocalFunction< typename Dune::FemPy::GridPart< Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true > >, Dune::FemPy::VirtualizedGridFunction< Dune::FemPy::GridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>, Dune::FieldVector< double, 1 > > >"), Dune::Python::IncludeFiles({"python/dune/generated/localfunction_217e4bf8b368a7768c4897cf58f71d84_a524c1196983e65de1c06d7d6afdeb44.cc"})).first;
|
186
186
|
Dune::FemPy::registerUFLLocalFunction( module, cls );
|
187
|
-
cls.def( pybind11::init( [] ( pybind11::object gridView, const std::string &name, int order, const Dune::FemPy::VirtualizedGridFunction< Dune::FemPy::GridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>, Dune::FieldVector< double, 1 > > &
|
187
|
+
cls.def( pybind11::init( [] ( pybind11::object gridView, const std::string &name, int order, const Dune::FemPy::VirtualizedGridFunction< Dune::FemPy::GridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>, Dune::FieldVector< double, 1 > > &coeffuh ) {return new LocalFunctionType( Dune::FemPy::gridPart<Dune::Fem::FilteredGridPart< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > >, Dune::Fem::SimpleFilter< Dune::FemPy::GridPart< Dune::Fem::AdaptiveLeafGridPart< Dune::ALUGrid< 2, 2, Dune::simplex > > > >, true >>(gridView),name,order, coeffuh); } ), pybind11::keep_alive< 1, 2 >(), pybind11::keep_alive< 1, 3 >() );
|
188
188
|
cls.def_property_readonly( "virtualized", [] ( LocalFunctionType& ) -> bool { return true;});
|
189
189
|
}
|
190
190
|
}
|