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
@@ -1,5 +1,5 @@
|
|
1
|
-
#ifndef
|
2
|
-
#define
|
1
|
+
#ifndef GuardIntegrands_bf510277401791ad5e30831b49a8ed7cv1_3
|
2
|
+
#define GuardIntegrands_bf510277401791ad5e30831b49a8ed7cv1_3
|
3
3
|
#define USING_DUNE_PYTHON 1
|
4
4
|
#include <config.h>
|
5
5
|
#include <dune/alugrid/dgf.hh>
|
@@ -17,7 +17,7 @@
|
|
17
17
|
#include <dune/fempy/geometry/edgelength.hh>
|
18
18
|
#include <dune/fempy/py/integrands.hh>
|
19
19
|
|
20
|
-
namespace
|
20
|
+
namespace Integrands_bf510277401791ad5e30831b49a8ed7cv1_3
|
21
21
|
{
|
22
22
|
|
23
23
|
|
@@ -142,12 +142,13 @@ namespace Integrands_2339be3c67df1d67b18125c34ced69c2v1_3
|
|
142
142
|
}
|
143
143
|
switch( bndId )
|
144
144
|
{
|
145
|
+
case 1:
|
146
|
+
{
|
147
|
+
return true;
|
148
|
+
}
|
149
|
+
break;
|
145
150
|
default:
|
146
151
|
{
|
147
|
-
{
|
148
|
-
std::fill( dirichletComponent.begin(), dirichletComponent.end(), 1 );
|
149
|
-
return true;
|
150
|
-
}
|
151
152
|
return false;
|
152
153
|
}
|
153
154
|
}
|
@@ -158,7 +159,7 @@ namespace Integrands_2339be3c67df1d67b18125c34ced69c2v1_3
|
|
158
159
|
{
|
159
160
|
switch( bndId )
|
160
161
|
{
|
161
|
-
|
162
|
+
case 1:
|
162
163
|
{
|
163
164
|
using std::sin;
|
164
165
|
auto tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
|
@@ -169,6 +170,11 @@ namespace Integrands_2339be3c67df1d67b18125c34ced69c2v1_3
|
|
169
170
|
const auto tmp5 = tmp4 * tmp2;
|
170
171
|
result[ 0 ] = tmp5;
|
171
172
|
}
|
173
|
+
break;
|
174
|
+
default:
|
175
|
+
{
|
176
|
+
result = RRangeType( 0 );
|
177
|
+
}
|
172
178
|
}
|
173
179
|
}
|
174
180
|
|
@@ -177,7 +183,7 @@ namespace Integrands_2339be3c67df1d67b18125c34ced69c2v1_3
|
|
177
183
|
{
|
178
184
|
switch( bndId )
|
179
185
|
{
|
180
|
-
|
186
|
+
case 1:
|
181
187
|
{
|
182
188
|
using std::cos;
|
183
189
|
using std::sin;
|
@@ -195,6 +201,11 @@ namespace Integrands_2339be3c67df1d67b18125c34ced69c2v1_3
|
|
195
201
|
(result[ 0 ])[ 0 ] = tmp6;
|
196
202
|
(result[ 0 ])[ 1 ] = tmp10;
|
197
203
|
}
|
204
|
+
break;
|
205
|
+
default:
|
206
|
+
{
|
207
|
+
result = RJacobianRangeType( 0 );
|
208
|
+
}
|
198
209
|
}
|
199
210
|
}
|
200
211
|
|
@@ -226,19 +237,19 @@ namespace Integrands_2339be3c67df1d67b18125c34ced69c2v1_3
|
|
226
237
|
std::tuple< > coefficients_;
|
227
238
|
};
|
228
239
|
|
229
|
-
} // namespace
|
240
|
+
} // namespace Integrands_bf510277401791ad5e30831b49a8ed7cv1_3
|
230
241
|
|
231
|
-
PYBIND11_MODULE(
|
242
|
+
PYBIND11_MODULE( integrands_bf510277401791ad5e30831b49a8ed7cv1_3_a524c1196983e65de1c06d7d6afdeb44, module )
|
232
243
|
{
|
233
244
|
typedef 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 > > GridPart;
|
234
|
-
typedef
|
245
|
+
typedef Integrands_bf510277401791ad5e30831b49a8ed7cv1_3::Integrands< GridPart > Integrands;
|
235
246
|
if constexpr( Integrands::gridPartValid )
|
236
247
|
{
|
237
|
-
auto cls = Dune::Python::insertClass<Integrands>(module,"Integrands",Dune::Python::GenerateTypeName("
|
248
|
+
auto cls = Dune::Python::insertClass<Integrands>(module,"Integrands",Dune::Python::GenerateTypeName("Integrands_bf510277401791ad5e30831b49a8ed7cv1_3::Integrands< GridPart >"), Dune::Python::IncludeFiles({"python/dune/generated/integrands_bf510277401791ad5e30831b49a8ed7cv1_3_a524c1196983e65de1c06d7d6afdeb44.cc"})).first;
|
238
249
|
Dune::FemPy::registerIntegrands< Integrands >( module, cls );
|
239
250
|
cls.def( pybind11::init( [] () { return new Integrands(); } ) );
|
240
251
|
cls.def_property_readonly( "virtualized", [] ( Integrands& ) -> bool { return true;});
|
241
252
|
cls.def_property_readonly( "hasDirichletBoundary", [] ( Integrands& ) -> bool { return true;});
|
242
253
|
}
|
243
254
|
}
|
244
|
-
#endif //
|
255
|
+
#endif // GuardIntegrands_bf510277401791ad5e30831b49a8ed7cv1_3
|
@@ -0,0 +1,587 @@
|
|
1
|
+
#ifndef GuardIntegrands_d0634430f14d3432dae186e57ec5aecav1_3
|
2
|
+
#define GuardIntegrands_d0634430f14d3432dae186e57ec5aecav1_3
|
3
|
+
#define USING_DUNE_PYTHON 1
|
4
|
+
#include <config.h>
|
5
|
+
#include <dune/alugrid/dgf.hh>
|
6
|
+
#include <dune/alugrid/grid.hh>
|
7
|
+
#include <dune/fem/gridpart/adaptiveleafgridpart.hh>
|
8
|
+
#include <dune/fem/gridpart/filter/simple.hh>
|
9
|
+
#include <dune/fem/gridpart/filteredgridpart.hh>
|
10
|
+
#include <dune/fempy/py/gridview.hh>
|
11
|
+
#include <dune/python/grid/gridview.hh>
|
12
|
+
#include <dune/python/grid/hierarchical.hh>
|
13
|
+
#include <cmath>
|
14
|
+
#include <tuple>
|
15
|
+
#include <dune/python/pybind11/pybind11.h>
|
16
|
+
#include <dune/python/pybind11/extensions.h>
|
17
|
+
#include <dune/fempy/py/grid/gridpart.hh>
|
18
|
+
#include <dune/fempy/geometry/edgelength.hh>
|
19
|
+
#include <dune/fempy/py/integrands.hh>
|
20
|
+
|
21
|
+
namespace Integrands_d0634430f14d3432dae186e57ec5aecav1_3
|
22
|
+
{
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
// Integrands
|
28
|
+
// ----------
|
29
|
+
|
30
|
+
template< class GridPart >
|
31
|
+
struct Integrands
|
32
|
+
{
|
33
|
+
typedef GridPart GridPartType;
|
34
|
+
typedef typename GridPartType::GridViewType GridView;
|
35
|
+
typedef typename GridView::ctype ctype;
|
36
|
+
typedef typename GridPartType::template Codim< 0 >::EntityType EntityType;
|
37
|
+
typedef typename GridPartType::IntersectionType IntersectionType;
|
38
|
+
typedef typename EntityType::Geometry Geometry;
|
39
|
+
typedef typename Geometry::GlobalCoordinate GlobalCoordinateType;
|
40
|
+
typedef Dune::Fem::IntersectionSide Side;
|
41
|
+
typedef std::tuple<> ConstantTupleType;
|
42
|
+
typedef std::tuple<> CoefficientTupleType;
|
43
|
+
static constexpr bool gridPartValid = true;
|
44
|
+
template< std::size_t i >
|
45
|
+
using CoefficientType = std::tuple_element_t< i, CoefficientTupleType >;
|
46
|
+
template< std::size_t i >
|
47
|
+
using ConstantType = typename std::tuple_element_t< i, ConstantTupleType >::element_type;
|
48
|
+
|
49
|
+
Integrands ( const Dune::Fem::ParameterReader ¶meter = Dune::Fem::Parameter::container() )
|
50
|
+
{}
|
51
|
+
|
52
|
+
bool init ( const EntityType &entity )
|
53
|
+
{
|
54
|
+
entity_ = entity;
|
55
|
+
geometry_.emplace( this->entity().geometry() );
|
56
|
+
return true;
|
57
|
+
}
|
58
|
+
|
59
|
+
void unbind ()
|
60
|
+
{}
|
61
|
+
|
62
|
+
bool init ( const IntersectionType &intersection )
|
63
|
+
{
|
64
|
+
intersection_ = intersection;
|
65
|
+
return (intersection.boundary() && init( intersection.inside() ));
|
66
|
+
}
|
67
|
+
typedef std::tuple< Dune::FieldVector< double, 1 >, Dune::FieldMatrix< double, 1, 2 > > DomainValueType;
|
68
|
+
typedef std::tuple< Dune::FieldVector< double, 1 >, Dune::FieldMatrix< double, 1, 2 > > RangeValueType;
|
69
|
+
static constexpr bool _nonlinear = false;
|
70
|
+
|
71
|
+
bool nonlinear () const
|
72
|
+
{
|
73
|
+
return _nonlinear;
|
74
|
+
}
|
75
|
+
|
76
|
+
template< class Point >
|
77
|
+
RangeValueType interior ( const Point &x, const DomainValueType &u ) const
|
78
|
+
{
|
79
|
+
using std::sin;
|
80
|
+
using std::sqrt;
|
81
|
+
using std::tanh;
|
82
|
+
GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
|
83
|
+
const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
|
84
|
+
const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
|
85
|
+
const auto tmp3 = tmp2 + tmp1;
|
86
|
+
const auto tmp4 = 1e-10 + tmp3;
|
87
|
+
const auto tmp5 = std::sqrt( tmp4 );
|
88
|
+
const auto tmp6 = 2 * tmp5;
|
89
|
+
const auto tmp7 = tmp0[ 1 ] + tmp0[ 1 ];
|
90
|
+
const auto tmp8 = tmp7 / tmp6;
|
91
|
+
const auto tmp9 = -1 * tmp8;
|
92
|
+
const auto tmp10 = -1 + tmp5;
|
93
|
+
const auto tmp11 = tmp10 * tmp9;
|
94
|
+
const auto tmp12 = tmp0[ 1 ] + tmp11;
|
95
|
+
const auto tmp13 = tmp12 * tmp12;
|
96
|
+
const auto tmp14 = tmp0[ 0 ] + tmp0[ 0 ];
|
97
|
+
const auto tmp15 = tmp14 / tmp6;
|
98
|
+
const auto tmp16 = -1 * tmp15;
|
99
|
+
const auto tmp17 = tmp10 * tmp16;
|
100
|
+
const auto tmp18 = tmp0[ 0 ] + tmp17;
|
101
|
+
const auto tmp19 = tmp18 * tmp18;
|
102
|
+
const auto tmp20 = tmp19 + tmp13;
|
103
|
+
const auto tmp21 = 1e-10 + tmp20;
|
104
|
+
const auto tmp22 = std::sqrt( tmp21 );
|
105
|
+
const auto tmp23 = -1 + tmp22;
|
106
|
+
const auto tmp24 = 3 * tmp23;
|
107
|
+
const auto tmp25 = tmp24 / 0.225;
|
108
|
+
const auto tmp26 = std::tanh( tmp25 );
|
109
|
+
const auto tmp27 = -1 * tmp26;
|
110
|
+
const auto tmp28 = 1 + tmp27;
|
111
|
+
const auto tmp29 = 0.5 * tmp28;
|
112
|
+
const auto tmp30 = -1 * tmp29;
|
113
|
+
const auto tmp31 = 1 + tmp30;
|
114
|
+
const auto tmp32 = tmp31 * tmp29;
|
115
|
+
const auto tmp33 = 1e-10 + tmp32;
|
116
|
+
const auto tmp34 = 3.141592653589793 * tmp12;
|
117
|
+
const auto tmp35 = std::sin( tmp34 );
|
118
|
+
const auto tmp36 = 3.141592653589793 * tmp18;
|
119
|
+
const auto tmp37 = std::sin( tmp36 );
|
120
|
+
const auto tmp38 = tmp37 * tmp35;
|
121
|
+
const auto tmp39 = -1 * tmp38;
|
122
|
+
const auto tmp40 = std::get< 0 >( u );
|
123
|
+
const auto tmp41 = tmp40[ 0 ] + tmp39;
|
124
|
+
const auto tmp42 = tmp41 * tmp32;
|
125
|
+
const auto tmp43 = tmp42 / tmp33;
|
126
|
+
const auto tmp44 = 3 * tmp10;
|
127
|
+
const auto tmp45 = tmp44 / 0.225;
|
128
|
+
const auto tmp46 = std::tanh( tmp45 );
|
129
|
+
const auto tmp47 = -1 * tmp46;
|
130
|
+
const auto tmp48 = 1 + tmp47;
|
131
|
+
const auto tmp49 = 0.5 * tmp48;
|
132
|
+
const auto tmp50 = 0.9999999999 * tmp49;
|
133
|
+
const auto tmp51 = 1e-10 + tmp50;
|
134
|
+
const auto tmp52 = -1 * tmp51;
|
135
|
+
const auto tmp53 = 1 + tmp52;
|
136
|
+
const auto tmp54 = tmp53 * tmp43;
|
137
|
+
const auto tmp55 = tmp54 / 0.011390625000000001;
|
138
|
+
const auto tmp56 = -1 * tmp55;
|
139
|
+
const auto tmp57 = 3 * tmp56;
|
140
|
+
const auto tmp58 = -1 * tmp57;
|
141
|
+
const auto tmp59 = 0.1 * tmp56;
|
142
|
+
const auto tmp60 = 0.01 * tmp40[ 0 ];
|
143
|
+
const auto tmp61 = -1 * tmp60;
|
144
|
+
const auto tmp62 = -1 * (tmp10 <= 0.0 ? 1 : 0.0);
|
145
|
+
const auto tmp63 = 1 + tmp62;
|
146
|
+
const auto tmp64 = tmp63 * tmp11;
|
147
|
+
const auto tmp65 = tmp0[ 1 ] + tmp64;
|
148
|
+
const auto tmp66 = tmp65 * tmp65;
|
149
|
+
const auto tmp67 = tmp63 * tmp17;
|
150
|
+
const auto tmp68 = tmp0[ 0 ] + tmp67;
|
151
|
+
const auto tmp69 = tmp68 * tmp68;
|
152
|
+
const auto tmp70 = tmp69 + tmp66;
|
153
|
+
const auto tmp71 = -1 * tmp70;
|
154
|
+
const auto tmp72 = 1 + tmp71;
|
155
|
+
const auto tmp73 = 0.1 * tmp72;
|
156
|
+
const auto tmp74 = tmp73 + tmp61;
|
157
|
+
const auto tmp75 = tmp74 * tmp51;
|
158
|
+
const auto tmp76 = tmp75 + tmp59;
|
159
|
+
const auto tmp77 = -1 * tmp76;
|
160
|
+
const auto tmp78 = tmp77 + tmp58;
|
161
|
+
const auto tmp79 = 3 * tmp65;
|
162
|
+
const auto tmp80 = tmp40[ 0 ] * tmp79;
|
163
|
+
const auto tmp81 = tmp51 * tmp80;
|
164
|
+
const auto tmp82 = -1 * tmp81;
|
165
|
+
const auto tmp83 = 0.05 * tmp70;
|
166
|
+
const auto tmp84 = -1 * tmp83;
|
167
|
+
const auto tmp85 = 0.1 + tmp84;
|
168
|
+
const auto tmp86 = std::get< 1 >( u );
|
169
|
+
const auto tmp87 = (tmp86[ 0 ])[ 0 ] * tmp85;
|
170
|
+
const auto tmp88 = tmp51 * tmp87;
|
171
|
+
const auto tmp89 = tmp88 + tmp82;
|
172
|
+
const auto tmp90 = -1 * tmp68;
|
173
|
+
const auto tmp91 = 3 * tmp90;
|
174
|
+
const auto tmp92 = tmp40[ 0 ] * tmp91;
|
175
|
+
const auto tmp93 = tmp51 * tmp92;
|
176
|
+
const auto tmp94 = -1 * tmp93;
|
177
|
+
const auto tmp95 = (tmp86[ 0 ])[ 1 ] * tmp85;
|
178
|
+
const auto tmp96 = tmp51 * tmp95;
|
179
|
+
const auto tmp97 = tmp96 + tmp94;
|
180
|
+
return RangeValueType{ { tmp78 }, { { tmp89, tmp97 } } };
|
181
|
+
}
|
182
|
+
|
183
|
+
template< class Point >
|
184
|
+
auto linearizedInterior ( const Point &x, const DomainValueType &u ) const
|
185
|
+
{
|
186
|
+
using std::sqrt;
|
187
|
+
using std::tanh;
|
188
|
+
GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
|
189
|
+
const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
|
190
|
+
const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
|
191
|
+
const auto tmp3 = tmp2 + tmp1;
|
192
|
+
const auto tmp4 = 1e-10 + tmp3;
|
193
|
+
const auto tmp5 = std::sqrt( tmp4 );
|
194
|
+
const auto tmp6 = 2 * tmp5;
|
195
|
+
const auto tmp7 = tmp0[ 1 ] + tmp0[ 1 ];
|
196
|
+
const auto tmp8 = tmp7 / tmp6;
|
197
|
+
const auto tmp9 = -1 * tmp8;
|
198
|
+
const auto tmp10 = -1 + tmp5;
|
199
|
+
const auto tmp11 = tmp10 * tmp9;
|
200
|
+
const auto tmp12 = tmp0[ 1 ] + tmp11;
|
201
|
+
const auto tmp13 = tmp12 * tmp12;
|
202
|
+
const auto tmp14 = tmp0[ 0 ] + tmp0[ 0 ];
|
203
|
+
const auto tmp15 = tmp14 / tmp6;
|
204
|
+
const auto tmp16 = -1 * tmp15;
|
205
|
+
const auto tmp17 = tmp10 * tmp16;
|
206
|
+
const auto tmp18 = tmp0[ 0 ] + tmp17;
|
207
|
+
const auto tmp19 = tmp18 * tmp18;
|
208
|
+
const auto tmp20 = tmp19 + tmp13;
|
209
|
+
const auto tmp21 = 1e-10 + tmp20;
|
210
|
+
const auto tmp22 = std::sqrt( tmp21 );
|
211
|
+
const auto tmp23 = -1 + tmp22;
|
212
|
+
const auto tmp24 = 3 * tmp23;
|
213
|
+
const auto tmp25 = tmp24 / 0.225;
|
214
|
+
const auto tmp26 = std::tanh( tmp25 );
|
215
|
+
const auto tmp27 = -1 * tmp26;
|
216
|
+
const auto tmp28 = 1 + tmp27;
|
217
|
+
const auto tmp29 = 0.5 * tmp28;
|
218
|
+
const auto tmp30 = -1 * tmp29;
|
219
|
+
const auto tmp31 = 1 + tmp30;
|
220
|
+
const auto tmp32 = tmp31 * tmp29;
|
221
|
+
const auto tmp33 = 1e-10 + tmp32;
|
222
|
+
const auto tmp34 = tmp32 / tmp33;
|
223
|
+
const auto tmp35 = 3 * tmp10;
|
224
|
+
const auto tmp36 = tmp35 / 0.225;
|
225
|
+
const auto tmp37 = std::tanh( tmp36 );
|
226
|
+
const auto tmp38 = -1 * tmp37;
|
227
|
+
const auto tmp39 = 1 + tmp38;
|
228
|
+
const auto tmp40 = 0.5 * tmp39;
|
229
|
+
const auto tmp41 = 0.9999999999 * tmp40;
|
230
|
+
const auto tmp42 = 1e-10 + tmp41;
|
231
|
+
const auto tmp43 = -1 * tmp42;
|
232
|
+
const auto tmp44 = 1 + tmp43;
|
233
|
+
const auto tmp45 = tmp44 * tmp34;
|
234
|
+
const auto tmp46 = tmp45 / 0.011390625000000001;
|
235
|
+
const auto tmp47 = -1 * tmp46;
|
236
|
+
const auto tmp48 = 3 * tmp47;
|
237
|
+
const auto tmp49 = -1 * tmp48;
|
238
|
+
const auto tmp50 = 0.1 * tmp47;
|
239
|
+
const auto tmp51 = -0.01 * tmp42;
|
240
|
+
const auto tmp52 = tmp51 + tmp50;
|
241
|
+
const auto tmp53 = -1 * tmp52;
|
242
|
+
const auto tmp54 = tmp53 + tmp49;
|
243
|
+
const auto tmp55 = -1 * (tmp10 <= 0.0 ? 1 : 0.0);
|
244
|
+
const auto tmp56 = 1 + tmp55;
|
245
|
+
const auto tmp57 = tmp56 * tmp11;
|
246
|
+
const auto tmp58 = tmp0[ 1 ] + tmp57;
|
247
|
+
const auto tmp59 = 3 * tmp58;
|
248
|
+
const auto tmp60 = tmp42 * tmp59;
|
249
|
+
const auto tmp61 = -1 * tmp60;
|
250
|
+
const auto tmp62 = tmp56 * tmp17;
|
251
|
+
const auto tmp63 = tmp0[ 0 ] + tmp62;
|
252
|
+
const auto tmp64 = -1 * tmp63;
|
253
|
+
const auto tmp65 = 3 * tmp64;
|
254
|
+
const auto tmp66 = tmp42 * tmp65;
|
255
|
+
const auto tmp67 = -1 * tmp66;
|
256
|
+
const auto tmp68 = tmp58 * tmp58;
|
257
|
+
const auto tmp69 = tmp63 * tmp63;
|
258
|
+
const auto tmp70 = tmp69 + tmp68;
|
259
|
+
const auto tmp71 = 0.05 * tmp70;
|
260
|
+
const auto tmp72 = -1 * tmp71;
|
261
|
+
const auto tmp73 = 0.1 + tmp72;
|
262
|
+
const auto tmp74 = tmp73 * tmp42;
|
263
|
+
return [ tmp54, tmp61, tmp67, tmp74 ] ( const DomainValueType &phi ) {
|
264
|
+
return RangeValueType{ { tmp54 * (std::get< 0 >( phi ))[ 0 ] }, { { tmp61 * (std::get< 0 >( phi ))[ 0 ] + tmp74 * ((std::get< 1 >( phi ))[ 0 ])[ 0 ], tmp67 * (std::get< 0 >( phi ))[ 0 ] + tmp74 * ((std::get< 1 >( phi ))[ 0 ])[ 1 ] } } };
|
265
|
+
};
|
266
|
+
}
|
267
|
+
typedef Dune::FieldVector< double, 1 > RRangeType;
|
268
|
+
typedef Dune::FieldMatrix< double, 1, GridPartType::dimension > RJacobianRangeType;
|
269
|
+
typedef Dune::Fem::BoundaryIdProvider< typename GridPartType::GridType > BoundaryIdProviderType;
|
270
|
+
typedef std::array<int,1> DirichletComponentType;
|
271
|
+
|
272
|
+
bool hasDirichletBoundary () const
|
273
|
+
{
|
274
|
+
return true;
|
275
|
+
}
|
276
|
+
|
277
|
+
bool isDirichletIntersection ( const IntersectionType &intersection, DirichletComponentType &dirichletComponent ) const
|
278
|
+
{
|
279
|
+
const int bndId = BoundaryIdProviderType::boundaryId( intersection );
|
280
|
+
{
|
281
|
+
std::fill( dirichletComponent.begin(), dirichletComponent.end(), bndId );
|
282
|
+
}
|
283
|
+
switch( bndId )
|
284
|
+
{
|
285
|
+
default:
|
286
|
+
{
|
287
|
+
int domainId;
|
288
|
+
{
|
289
|
+
using std::sqrt;
|
290
|
+
auto tmp0 = intersection.geometry().center( );
|
291
|
+
const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
|
292
|
+
const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
|
293
|
+
const auto tmp3 = tmp2 + tmp1;
|
294
|
+
const auto tmp4 = 1e-10 + tmp3;
|
295
|
+
const auto tmp5 = std::sqrt( tmp4 );
|
296
|
+
const auto tmp6 = -1 + tmp5;
|
297
|
+
domainId = (tmp6 <= 0.0 ? 1 : 0.0) < 0.5;
|
298
|
+
if (domainId)
|
299
|
+
{
|
300
|
+
std::fill( dirichletComponent.begin(), dirichletComponent.end(), 2 );
|
301
|
+
return true;
|
302
|
+
}
|
303
|
+
}
|
304
|
+
return false;
|
305
|
+
}
|
306
|
+
}
|
307
|
+
}
|
308
|
+
|
309
|
+
template< class Point >
|
310
|
+
void dirichlet ( int bndId, const Point &x, RRangeType &result ) const
|
311
|
+
{
|
312
|
+
switch( bndId )
|
313
|
+
{
|
314
|
+
case 2:
|
315
|
+
{
|
316
|
+
using std::sin;
|
317
|
+
using std::sqrt;
|
318
|
+
using std::tanh;
|
319
|
+
auto tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
|
320
|
+
const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
|
321
|
+
const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
|
322
|
+
const auto tmp3 = tmp2 + tmp1;
|
323
|
+
const auto tmp4 = 1e-10 + tmp3;
|
324
|
+
const auto tmp5 = std::sqrt( tmp4 );
|
325
|
+
const auto tmp6 = 2 * tmp5;
|
326
|
+
const auto tmp7 = tmp0[ 1 ] + tmp0[ 1 ];
|
327
|
+
const auto tmp8 = tmp7 / tmp6;
|
328
|
+
const auto tmp9 = -1 * tmp8;
|
329
|
+
const auto tmp10 = -1 + tmp5;
|
330
|
+
const auto tmp11 = tmp10 * tmp9;
|
331
|
+
const auto tmp12 = tmp0[ 1 ] + tmp11;
|
332
|
+
const auto tmp13 = tmp12 * tmp12;
|
333
|
+
const auto tmp14 = tmp0[ 0 ] + tmp0[ 0 ];
|
334
|
+
const auto tmp15 = tmp14 / tmp6;
|
335
|
+
const auto tmp16 = -1 * tmp15;
|
336
|
+
const auto tmp17 = tmp10 * tmp16;
|
337
|
+
const auto tmp18 = tmp0[ 0 ] + tmp17;
|
338
|
+
const auto tmp19 = tmp18 * tmp18;
|
339
|
+
const auto tmp20 = tmp19 + tmp13;
|
340
|
+
const auto tmp21 = 1e-10 + tmp20;
|
341
|
+
const auto tmp22 = std::sqrt( tmp21 );
|
342
|
+
const auto tmp23 = -1 + tmp22;
|
343
|
+
const auto tmp24 = 3 * tmp23;
|
344
|
+
const auto tmp25 = tmp24 / 0.225;
|
345
|
+
const auto tmp26 = std::tanh( tmp25 );
|
346
|
+
const auto tmp27 = -1 * tmp26;
|
347
|
+
const auto tmp28 = 1 + tmp27;
|
348
|
+
const auto tmp29 = 0.5 * tmp28;
|
349
|
+
const auto tmp30 = -1 * tmp29;
|
350
|
+
const auto tmp31 = 1 + tmp30;
|
351
|
+
const auto tmp32 = tmp31 * tmp29;
|
352
|
+
const auto tmp33 = 1e-10 + tmp32;
|
353
|
+
const auto tmp34 = 3.141592653589793 * tmp12;
|
354
|
+
const auto tmp35 = std::sin( tmp34 );
|
355
|
+
const auto tmp36 = 3.141592653589793 * tmp18;
|
356
|
+
const auto tmp37 = std::sin( tmp36 );
|
357
|
+
const auto tmp38 = tmp37 * tmp35;
|
358
|
+
const auto tmp39 = -1 * tmp38;
|
359
|
+
const auto tmp40 = tmp32 * tmp39;
|
360
|
+
const auto tmp41 = tmp40 / tmp33;
|
361
|
+
const auto tmp42 = -1 * tmp41;
|
362
|
+
result[ 0 ] = tmp42;
|
363
|
+
}
|
364
|
+
break;
|
365
|
+
default:
|
366
|
+
{
|
367
|
+
result = RRangeType( 0 );
|
368
|
+
}
|
369
|
+
}
|
370
|
+
}
|
371
|
+
|
372
|
+
template< class Point >
|
373
|
+
void dDirichlet ( int bndId, const Point &x, RJacobianRangeType &result ) const
|
374
|
+
{
|
375
|
+
switch( bndId )
|
376
|
+
{
|
377
|
+
case 2:
|
378
|
+
{
|
379
|
+
using std::cos;
|
380
|
+
using std::cosh;
|
381
|
+
using std::pow;
|
382
|
+
using std::sin;
|
383
|
+
using std::sqrt;
|
384
|
+
using std::tanh;
|
385
|
+
auto tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
|
386
|
+
const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
|
387
|
+
const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
|
388
|
+
const auto tmp3 = tmp2 + tmp1;
|
389
|
+
const auto tmp4 = 1e-10 + tmp3;
|
390
|
+
const auto tmp5 = std::sqrt( tmp4 );
|
391
|
+
const auto tmp6 = 2 * tmp5;
|
392
|
+
const auto tmp7 = tmp0[ 1 ] + tmp0[ 1 ];
|
393
|
+
const auto tmp8 = tmp7 / tmp6;
|
394
|
+
const auto tmp9 = -1 * tmp8;
|
395
|
+
const auto tmp10 = -1 + tmp5;
|
396
|
+
const auto tmp11 = tmp10 * tmp9;
|
397
|
+
const auto tmp12 = tmp0[ 1 ] + tmp11;
|
398
|
+
const auto tmp13 = tmp12 * tmp12;
|
399
|
+
const auto tmp14 = tmp0[ 0 ] + tmp0[ 0 ];
|
400
|
+
const auto tmp15 = tmp14 / tmp6;
|
401
|
+
const auto tmp16 = -1 * tmp15;
|
402
|
+
const auto tmp17 = tmp10 * tmp16;
|
403
|
+
const auto tmp18 = tmp0[ 0 ] + tmp17;
|
404
|
+
const auto tmp19 = tmp18 * tmp18;
|
405
|
+
const auto tmp20 = tmp19 + tmp13;
|
406
|
+
const auto tmp21 = 1e-10 + tmp20;
|
407
|
+
const auto tmp22 = std::sqrt( tmp21 );
|
408
|
+
const auto tmp23 = -1 + tmp22;
|
409
|
+
const auto tmp24 = 3 * tmp23;
|
410
|
+
const auto tmp25 = tmp24 / 0.225;
|
411
|
+
const auto tmp26 = std::tanh( tmp25 );
|
412
|
+
const auto tmp27 = -1 * tmp26;
|
413
|
+
const auto tmp28 = 1 + tmp27;
|
414
|
+
const auto tmp29 = 0.5 * tmp28;
|
415
|
+
const auto tmp30 = -1 * tmp29;
|
416
|
+
const auto tmp31 = 1 + tmp30;
|
417
|
+
const auto tmp32 = tmp31 * tmp29;
|
418
|
+
const auto tmp33 = 1e-10 + tmp32;
|
419
|
+
const auto tmp34 = 3.141592653589793 * tmp12;
|
420
|
+
const auto tmp35 = std::sin( tmp34 );
|
421
|
+
const auto tmp36 = 3.141592653589793 * tmp18;
|
422
|
+
const auto tmp37 = std::sin( tmp36 );
|
423
|
+
const auto tmp38 = tmp37 * tmp35;
|
424
|
+
const auto tmp39 = -1 * tmp38;
|
425
|
+
const auto tmp40 = tmp32 * tmp39;
|
426
|
+
const auto tmp41 = tmp40 / tmp33;
|
427
|
+
const auto tmp42 = 2.0 * tmp25;
|
428
|
+
const auto tmp43 = std::cosh( tmp42 );
|
429
|
+
const auto tmp44 = 1.0 + tmp43;
|
430
|
+
const auto tmp45 = std::cosh( tmp25 );
|
431
|
+
const auto tmp46 = 2.0 * tmp45;
|
432
|
+
const auto tmp47 = tmp46 / tmp44;
|
433
|
+
const auto tmp48 = std::pow( tmp47, 2 );
|
434
|
+
const auto tmp49 = 2 * tmp22;
|
435
|
+
const auto tmp50 = tmp9 * tmp15;
|
436
|
+
const auto tmp51 = 2 * tmp15;
|
437
|
+
const auto tmp52 = tmp51 * tmp8;
|
438
|
+
const auto tmp53 = -1 * tmp52;
|
439
|
+
const auto tmp54 = tmp53 / tmp6;
|
440
|
+
const auto tmp55 = -1 * tmp54;
|
441
|
+
const auto tmp56 = tmp10 * tmp55;
|
442
|
+
const auto tmp57 = tmp56 + tmp50;
|
443
|
+
const auto tmp58 = tmp12 * tmp57;
|
444
|
+
const auto tmp59 = tmp58 + tmp58;
|
445
|
+
const auto tmp60 = tmp16 * tmp15;
|
446
|
+
const auto tmp61 = tmp51 * tmp15;
|
447
|
+
const auto tmp62 = -1 * tmp61;
|
448
|
+
const auto tmp63 = 2 + tmp62;
|
449
|
+
const auto tmp64 = tmp63 / tmp6;
|
450
|
+
const auto tmp65 = -1 * tmp64;
|
451
|
+
const auto tmp66 = tmp10 * tmp65;
|
452
|
+
const auto tmp67 = tmp66 + tmp60;
|
453
|
+
const auto tmp68 = 1 + tmp67;
|
454
|
+
const auto tmp69 = tmp68 * tmp18;
|
455
|
+
const auto tmp70 = tmp69 + tmp69;
|
456
|
+
const auto tmp71 = tmp70 + tmp59;
|
457
|
+
const auto tmp72 = tmp71 / tmp49;
|
458
|
+
const auto tmp73 = 3 * tmp72;
|
459
|
+
const auto tmp74 = tmp73 / 0.225;
|
460
|
+
const auto tmp75 = tmp74 * tmp48;
|
461
|
+
const auto tmp76 = -1 * tmp75;
|
462
|
+
const auto tmp77 = 0.5 * tmp76;
|
463
|
+
const auto tmp78 = tmp31 * tmp77;
|
464
|
+
const auto tmp79 = -1 * tmp77;
|
465
|
+
const auto tmp80 = tmp29 * tmp79;
|
466
|
+
const auto tmp81 = tmp80 + tmp78;
|
467
|
+
const auto tmp82 = tmp81 * tmp41;
|
468
|
+
const auto tmp83 = -1 * tmp82;
|
469
|
+
const auto tmp84 = tmp81 * tmp39;
|
470
|
+
const auto tmp85 = std::cos( tmp36 );
|
471
|
+
const auto tmp86 = 3.141592653589793 * tmp68;
|
472
|
+
const auto tmp87 = tmp86 * tmp85;
|
473
|
+
const auto tmp88 = tmp87 * tmp35;
|
474
|
+
const auto tmp89 = std::cos( tmp34 );
|
475
|
+
const auto tmp90 = 3.141592653589793 * tmp57;
|
476
|
+
const auto tmp91 = tmp90 * tmp89;
|
477
|
+
const auto tmp92 = tmp91 * tmp37;
|
478
|
+
const auto tmp93 = tmp92 + tmp88;
|
479
|
+
const auto tmp94 = -1 * tmp93;
|
480
|
+
const auto tmp95 = tmp94 * tmp32;
|
481
|
+
const auto tmp96 = tmp95 + tmp84;
|
482
|
+
const auto tmp97 = tmp96 + tmp83;
|
483
|
+
const auto tmp98 = tmp97 / tmp33;
|
484
|
+
const auto tmp99 = -1 * tmp98;
|
485
|
+
const auto tmp100 = tmp16 * tmp8;
|
486
|
+
const auto tmp101 = 2 * tmp8;
|
487
|
+
const auto tmp102 = tmp101 * tmp15;
|
488
|
+
const auto tmp103 = -1 * tmp102;
|
489
|
+
const auto tmp104 = tmp103 / tmp6;
|
490
|
+
const auto tmp105 = -1 * tmp104;
|
491
|
+
const auto tmp106 = tmp10 * tmp105;
|
492
|
+
const auto tmp107 = tmp106 + tmp100;
|
493
|
+
const auto tmp108 = tmp18 * tmp107;
|
494
|
+
const auto tmp109 = tmp108 + tmp108;
|
495
|
+
const auto tmp110 = tmp9 * tmp8;
|
496
|
+
const auto tmp111 = tmp101 * tmp8;
|
497
|
+
const auto tmp112 = -1 * tmp111;
|
498
|
+
const auto tmp113 = 2 + tmp112;
|
499
|
+
const auto tmp114 = tmp113 / tmp6;
|
500
|
+
const auto tmp115 = -1 * tmp114;
|
501
|
+
const auto tmp116 = tmp10 * tmp115;
|
502
|
+
const auto tmp117 = tmp116 + tmp110;
|
503
|
+
const auto tmp118 = 1 + tmp117;
|
504
|
+
const auto tmp119 = tmp118 * tmp12;
|
505
|
+
const auto tmp120 = tmp119 + tmp119;
|
506
|
+
const auto tmp121 = tmp120 + tmp109;
|
507
|
+
const auto tmp122 = tmp121 / tmp49;
|
508
|
+
const auto tmp123 = 3 * tmp122;
|
509
|
+
const auto tmp124 = tmp123 / 0.225;
|
510
|
+
const auto tmp125 = tmp124 * tmp48;
|
511
|
+
const auto tmp126 = -1 * tmp125;
|
512
|
+
const auto tmp127 = 0.5 * tmp126;
|
513
|
+
const auto tmp128 = tmp31 * tmp127;
|
514
|
+
const auto tmp129 = -1 * tmp127;
|
515
|
+
const auto tmp130 = tmp29 * tmp129;
|
516
|
+
const auto tmp131 = tmp130 + tmp128;
|
517
|
+
const auto tmp132 = tmp131 * tmp41;
|
518
|
+
const auto tmp133 = -1 * tmp132;
|
519
|
+
const auto tmp134 = tmp131 * tmp39;
|
520
|
+
const auto tmp135 = 3.141592653589793 * tmp107;
|
521
|
+
const auto tmp136 = tmp135 * tmp85;
|
522
|
+
const auto tmp137 = tmp136 * tmp35;
|
523
|
+
const auto tmp138 = 3.141592653589793 * tmp118;
|
524
|
+
const auto tmp139 = tmp138 * tmp89;
|
525
|
+
const auto tmp140 = tmp139 * tmp37;
|
526
|
+
const auto tmp141 = tmp140 + tmp137;
|
527
|
+
const auto tmp142 = -1 * tmp141;
|
528
|
+
const auto tmp143 = tmp142 * tmp32;
|
529
|
+
const auto tmp144 = tmp143 + tmp134;
|
530
|
+
const auto tmp145 = tmp144 + tmp133;
|
531
|
+
const auto tmp146 = tmp145 / tmp33;
|
532
|
+
const auto tmp147 = -1 * tmp146;
|
533
|
+
(result[ 0 ])[ 0 ] = tmp99;
|
534
|
+
(result[ 0 ])[ 1 ] = tmp147;
|
535
|
+
}
|
536
|
+
break;
|
537
|
+
default:
|
538
|
+
{
|
539
|
+
result = RJacobianRangeType( 0 );
|
540
|
+
}
|
541
|
+
}
|
542
|
+
}
|
543
|
+
|
544
|
+
template< std::size_t i >
|
545
|
+
const ConstantType< i > &constant () const
|
546
|
+
{
|
547
|
+
return *std::get< i >( constants_ );
|
548
|
+
}
|
549
|
+
|
550
|
+
template< std::size_t i >
|
551
|
+
ConstantType< i > &constant ()
|
552
|
+
{
|
553
|
+
return *std::get< i >( constants_ );
|
554
|
+
}
|
555
|
+
|
556
|
+
const EntityType &entity () const
|
557
|
+
{
|
558
|
+
return entity_;
|
559
|
+
}
|
560
|
+
|
561
|
+
const Geometry &geometry () const
|
562
|
+
{
|
563
|
+
return *geometry_;
|
564
|
+
}
|
565
|
+
EntityType entity_;
|
566
|
+
IntersectionType intersection_;
|
567
|
+
std::optional< Geometry > geometry_;
|
568
|
+
ConstantTupleType constants_;
|
569
|
+
std::tuple< > coefficients_;
|
570
|
+
};
|
571
|
+
|
572
|
+
} // namespace Integrands_d0634430f14d3432dae186e57ec5aecav1_3
|
573
|
+
|
574
|
+
PYBIND11_MODULE( integrands_d0634430f14d3432dae186e57ec5aecav1_3_a524c1196983e65de1c06d7d6afdeb44, module )
|
575
|
+
{
|
576
|
+
typedef 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 > > GridPart;
|
577
|
+
typedef Integrands_d0634430f14d3432dae186e57ec5aecav1_3::Integrands< GridPart > Integrands;
|
578
|
+
if constexpr( Integrands::gridPartValid )
|
579
|
+
{
|
580
|
+
auto cls = Dune::Python::insertClass<Integrands>(module,"Integrands",Dune::Python::GenerateTypeName("Integrands_d0634430f14d3432dae186e57ec5aecav1_3::Integrands< GridPart >"), Dune::Python::IncludeFiles({"python/dune/generated/integrands_d0634430f14d3432dae186e57ec5aecav1_3_a524c1196983e65de1c06d7d6afdeb44.cc"})).first;
|
581
|
+
Dune::FemPy::registerIntegrands< Integrands >( module, cls );
|
582
|
+
cls.def( pybind11::init( [] () { return new Integrands(); } ) );
|
583
|
+
cls.def_property_readonly( "virtualized", [] ( Integrands& ) -> bool { return true;});
|
584
|
+
cls.def_property_readonly( "hasDirichletBoundary", [] ( Integrands& ) -> bool { return true;});
|
585
|
+
}
|
586
|
+
}
|
587
|
+
#endif // GuardIntegrands_d0634430f14d3432dae186e57ec5aecav1_3
|