ddfem 1.0.10__py3-none-any.whl → 1.0.12__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.
Files changed (111) hide show
  1. ddfem/__init__.py +9 -5
  2. ddfem/__main__.py +12 -13
  3. ddfem/boundary.py +2 -2
  4. ddfem/data/2.11.dev20250709/extra.modules +14 -0
  5. ddfem/data/2.11.dev20250709/femscheme_0bb54cd4f1cd1df2477f5f59393c6a2e.cc +43 -0
  6. ddfem/data/2.11.dev20250709/femscheme_5c9e2700386c07226eb4db155fa5ef14.cc +43 -0
  7. ddfem/data/2.11.dev20250709/femscheme_765ef00d995a939c34bdc0d0cc4847ca.cc +43 -0
  8. ddfem/data/2.11.dev20250709/femspace_11b3436cb033df683615c50d5d4239bd_f14dd0b3b474c0cd816334330f55ad72.cc +45 -0
  9. ddfem/data/2.11.dev20250709/femspace_f4f043307753c8e74af23c94c28a3b0d_438586e783f51d84a82e82b0d8daceea.cc +45 -0
  10. ddfem/data/2.11.dev20250709/{integrands_3bde0abfafcf45a3cff4d1029568ab5cv1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_0003e4cbb961fd653fe295d2c4fa50a7v1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +367 -14
  11. ddfem/data/2.11.dev20250709/{integrands_2e6d4e3b5cff269867d26022ac7cee09v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_0fa4a1c37449cf574971977e10cf682av1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
  12. ddfem/data/2.11.dev20250709/{integrands_96ea175da69be26acf1a8d94dc0b3c93v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_29b696aa653181a57d036f771efa8be9v1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
  13. ddfem/data/2.11.dev20250709/integrands_536f9ba0ea4ecd1f7d4e2bc43ef29d08v1_3_a524c1196983e65de1c06d7d6afdeb44.cc +453 -0
  14. ddfem/data/2.11.dev20250709/{integrands_008eefa148b772fa3192dd3c1728c140v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_5907ab5c70328c21dd308abf09e529aev1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
  15. ddfem/data/2.11.dev20250709/{integrands_59ef814e4fbd86ef9c0aeac61e84e9a7v1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_68eba4e963a61031a52da3365f515585v1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
  16. ddfem/data/2.11.dev20250709/integrands_83927be37e79b291517b827b9ddc1983v1_3_a524c1196983e65de1c06d7d6afdeb44.cc +533 -0
  17. ddfem/data/2.11.dev20250709/integrands_8ed2f23c088e3a3d82a3259b663796c7v1_3_a524c1196983e65de1c06d7d6afdeb44.cc +533 -0
  18. ddfem/data/2.11.dev20250709/integrands_af3bbe7d629df162ef8c570e1503bf62v1_3_a524c1196983e65de1c06d7d6afdeb44.cc +762 -0
  19. ddfem/data/2.11.dev20250709/{integrands_00ee9b3b89e4e44212e5b7ad7948a24ev1_3_a524c1196983e65de1c06d7d6afdeb44.cc → integrands_d0634430f14d3432dae186e57ec5aecav1_3_a524c1196983e65de1c06d7d6afdeb44.cc} +8 -8
  20. ddfem/data/2.11.dev20250709/intro.modules +33 -102
  21. ddfem/data/2.11.dev20250709/localfunction_10f9d7a54f79c12d6ca923b9ee56b80d_a524c1196983e65de1c06d7d6afdeb44.cc +324 -0
  22. ddfem/data/2.11.dev20250709/localfunction_10f9d7a54f79c12d6ca923b9ee56b80d_af122c1df944c95cd395ec0f91d0f970.cc +322 -0
  23. ddfem/data/2.11.dev20250709/localfunction_1c20e613977d8cea4cf5227c12aa68a6_a524c1196983e65de1c06d7d6afdeb44.cc +164 -0
  24. ddfem/data/2.11.dev20250709/{localfunction_191355e6250b2d2e260d96f519ad9976_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_217e4bf8b368a7768c4897cf58f71d84_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
  25. ddfem/data/2.11.dev20250709/localfunction_22e797a8f3e8c322f33c41e07bd15165_a524c1196983e65de1c06d7d6afdeb44.cc +1445 -0
  26. ddfem/data/2.11.dev20250709/localfunction_2e2afc8df6107683d574a8d96d5249f4_af122c1df944c95cd395ec0f91d0f970.cc +512 -0
  27. ddfem/data/2.11.dev20250709/localfunction_32613626342183eafa360dc1f0f18924_a524c1196983e65de1c06d7d6afdeb44.cc +1425 -0
  28. ddfem/data/2.11.dev20250709/localfunction_37174cfc9d6bf565336cac0d2ea785f5_a524c1196983e65de1c06d7d6afdeb44.cc +786 -0
  29. ddfem/data/2.11.dev20250709/{localfunction_d75993d7ae5919d23117b153e900840d_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_3d957c5b2628e5120636b8e3f461bc0d_a524c1196983e65de1c06d7d6afdeb44.cc} +64 -29
  30. ddfem/data/2.11.dev20250709/localfunction_3ecaa105be9e3abddf3a85d8adc5d36f_a524c1196983e65de1c06d7d6afdeb44.cc +697 -0
  31. ddfem/data/2.11.dev20250709/{localfunction_f626cd43dc8558135fe0b32cde016644_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_3ecaf7de7505b53bb0b5fb6d78549387_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
  32. ddfem/data/2.11.dev20250709/{localfunction_1d27a90a52b9053192c9cc902283f79b_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_4192604521151252f1c8fa56a1f9f226_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
  33. ddfem/data/2.11.dev20250709/localfunction_4976bbef3267846b59f3a26497ffe9db_a524c1196983e65de1c06d7d6afdeb44.cc +474 -0
  34. ddfem/data/2.11.dev20250709/{localfunction_a8c726f728cd35d137188b33301aeef1_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_4adfaf8a08fac23151af0b1e790db1f7_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
  35. ddfem/data/2.11.dev20250709/{localfunction_00f2e5593eeb23f01906255d67244f6e_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_4f6a526abfe63959f81b09a5796c5eb1_a524c1196983e65de1c06d7d6afdeb44.cc} +44 -29
  36. ddfem/data/2.11.dev20250709/localfunction_5591a2c803b9658084d8f11d44bf3ae1_a524c1196983e65de1c06d7d6afdeb44.cc +485 -0
  37. ddfem/data/2.11.dev20250709/localfunction_6363af791dde11d699a9a3d876cc5d9a_a524c1196983e65de1c06d7d6afdeb44.cc +549 -0
  38. ddfem/data/2.11.dev20250709/localfunction_6363af791dde11d699a9a3d876cc5d9a_af122c1df944c95cd395ec0f91d0f970.cc +547 -0
  39. ddfem/data/2.11.dev20250709/localfunction_6eccfc8fd91ce34d81e7c3962ece5d94_a524c1196983e65de1c06d7d6afdeb44.cc +766 -0
  40. ddfem/data/2.11.dev20250709/localfunction_762aa49bc5a47ad3d8d8bbde36b42ee5_a524c1196983e65de1c06d7d6afdeb44.cc +723 -0
  41. ddfem/data/2.11.dev20250709/localfunction_76e8db0f046ac9e37a793e0bb13eea7b_a524c1196983e65de1c06d7d6afdeb44.cc +292 -0
  42. ddfem/data/2.11.dev20250709/localfunction_7792f4273b0fd848c5a0fc9d6f12683e_a524c1196983e65de1c06d7d6afdeb44.cc +280 -0
  43. ddfem/data/2.11.dev20250709/localfunction_7f7ef99c50708814ba5a82b0956b0aed_a524c1196983e65de1c06d7d6afdeb44.cc +461 -0
  44. ddfem/data/2.11.dev20250709/localfunction_898de4ae138e0ed305ef1399c66aa10a_a524c1196983e65de1c06d7d6afdeb44.cc +313 -0
  45. ddfem/data/2.11.dev20250709/{localfunction_1d13146d4bff10e178aba773fe2a9f1d_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_a99a0c7f35b06ac5a1fa7f081b5e64f9_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
  46. ddfem/data/2.11.dev20250709/{localfunction_82d7cb9338bf118426fac2abf41a91a4_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_cda923259a47bb19861404a9fdb64303_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -14
  47. ddfem/data/2.11.dev20250709/localfunction_d3d9b8a21e3075c9ff40117c5244f28e_a524c1196983e65de1c06d7d6afdeb44.cc +381 -0
  48. ddfem/data/2.11.dev20250709/localfunction_d4b9ca85d48735ee01f395a42eaa0cee_af122c1df944c95cd395ec0f91d0f970.cc +774 -0
  49. ddfem/data/2.11.dev20250709/localfunction_dd1fb4bd60f2d8b3a062dbbdaedb9fee_a524c1196983e65de1c06d7d6afdeb44.cc +869 -0
  50. ddfem/data/2.11.dev20250709/localfunction_dd5ab085a9d94f578c1f3d337ea360a3_a524c1196983e65de1c06d7d6afdeb44.cc +161 -0
  51. ddfem/data/2.11.dev20250709/{localfunction_aeb3d963412cdc65630e0a4c3c0dde0f_a524c1196983e65de1c06d7d6afdeb44.cc → localfunction_e2b19c5987f9b6fb0cd5453bfa7f4f9f_a524c1196983e65de1c06d7d6afdeb44.cc} +14 -30
  52. ddfem/examples/beam.py +43 -50
  53. ddfem/examples/chemical_reaction.py +1 -1
  54. ddfem/examples/five_circle_flat.py +42 -28
  55. ddfem/examples/linear_elasticity.py +5 -1
  56. ddfem/examples/triple_circle.py +86 -83
  57. ddfem/examples/triple_circle_beam.py +71 -61
  58. ddfem-1.0.12.dist-info/METADATA +78 -0
  59. ddfem-1.0.12.dist-info/RECORD +123 -0
  60. ddfem/data/2.11.dev20250709/boundary.modules +0 -9
  61. ddfem/data/2.11.dev20250709/femspace_90f0a9524a8cb701e8ee5027b7658a0e_0faf32f13b591f4f60f83c591507b9be.cc +0 -40
  62. ddfem/data/2.11.dev20250709/geometry.modules +0 -84
  63. ddfem/data/2.11.dev20250709/hierarchicalgrid_472c2c2d007bf5604887ab2f16b7eb13.cc +0 -30
  64. ddfem/data/2.11.dev20250709/hierarchicalgrid_966e2a5c8356c5b278ccd3acad180f0a.cc +0 -30
  65. ddfem/data/2.11.dev20250709/localfunction_10ad0a2d88c74db5f4bf5f81e138974f_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
  66. ddfem/data/2.11.dev20250709/localfunction_1460b632dc5919e94a2147108f4f34f4_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -468
  67. ddfem/data/2.11.dev20250709/localfunction_161bbe6dde741c6e3f90c2919b8d17a4_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -171
  68. ddfem/data/2.11.dev20250709/localfunction_268716e3e3ec528038367ee04d335ea1_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -289
  69. ddfem/data/2.11.dev20250709/localfunction_29566243d89228735978e58471af60be_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -246
  70. ddfem/data/2.11.dev20250709/localfunction_2a890b2a64788a92607670296c0d37ac_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -311
  71. ddfem/data/2.11.dev20250709/localfunction_2bbefabe87db948827d02bdb8d69a7d1_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -240
  72. ddfem/data/2.11.dev20250709/localfunction_34a46b87fa5c0a5a4f0bc44949f2eda9_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -239
  73. ddfem/data/2.11.dev20250709/localfunction_3c10414582133a0fa8e341c4544a97c7_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -220
  74. ddfem/data/2.11.dev20250709/localfunction_3dfb73430ddb90a26b6f50f85e52e2a4_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -216
  75. ddfem/data/2.11.dev20250709/localfunction_3e323e81c52891c0ecb656eac273e52f_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
  76. ddfem/data/2.11.dev20250709/localfunction_465e17370f4344b8997151adacf7aec6_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -403
  77. ddfem/data/2.11.dev20250709/localfunction_57e9651c5364ef528f41cf138e126115_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -272
  78. ddfem/data/2.11.dev20250709/localfunction_5c2a00bf7ec417475a0a378ed462beeb_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -350
  79. ddfem/data/2.11.dev20250709/localfunction_5d71e054c405bc6584738437908af804_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -364
  80. ddfem/data/2.11.dev20250709/localfunction_6343878b30d190cc70b631d882009dec_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -342
  81. ddfem/data/2.11.dev20250709/localfunction_639a3f3873411f43337e687cb070368f_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -230
  82. ddfem/data/2.11.dev20250709/localfunction_6661b21a0e1340a9a9f7b32da595f130_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -468
  83. ddfem/data/2.11.dev20250709/localfunction_75e876499fa3b7abc096aa08f88a1c2d_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -213
  84. ddfem/data/2.11.dev20250709/localfunction_8647b4efdf8a37595f73652bc1905df2_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -335
  85. ddfem/data/2.11.dev20250709/localfunction_86a0670f34bf2ac8155423a1c1bc2e75_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
  86. ddfem/data/2.11.dev20250709/localfunction_98b32c4b5bc0d8083f3d2c394aa33429_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -340
  87. ddfem/data/2.11.dev20250709/localfunction_9b741917efb5aa6a09e375272e4ae3aa_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -317
  88. ddfem/data/2.11.dev20250709/localfunction_a369aff055312b472a92ee7e257534ff_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -392
  89. ddfem/data/2.11.dev20250709/localfunction_a6cc88a79948487ce95a6c3f22487b36_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -395
  90. ddfem/data/2.11.dev20250709/localfunction_aa506761997f291dfd2e62b678f010b2_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -280
  91. ddfem/data/2.11.dev20250709/localfunction_b5edf0c36f0fc96cc6f5f3677c6557a1_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -214
  92. ddfem/data/2.11.dev20250709/localfunction_bdfb7ddf42a423f7d0791458634d4b8f_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
  93. ddfem/data/2.11.dev20250709/localfunction_c3d0902cf8bb4b86b62a2293de2b74e9_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -1131
  94. ddfem/data/2.11.dev20250709/localfunction_cf4a29dc25e72137baf2f8fb8b8d3c50_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -267
  95. ddfem/data/2.11.dev20250709/localfunction_d40efa41ac661ff77278d2ae4812b06d_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -377
  96. ddfem/data/2.11.dev20250709/localfunction_e69118a51208cfab8a028711e966e76c_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -236
  97. ddfem/data/2.11.dev20250709/localfunction_e9c8d4f4cedd30cab76a588b95bbccab_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -325
  98. ddfem/data/2.11.dev20250709/localfunction_f0d3fe89de368f7ea295a1982a807bd8_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -281
  99. ddfem/data/2.11.dev20250709/localfunction_f4b1d42cbb447375f39ed834570cd3f0_a524c1196983e65de1c06d7d6afdeb44.cc +0 -135
  100. ddfem/data/2.11.dev20250709/localfunction_fb15e1ad2c62e6660c67949fcf166d81_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -339
  101. ddfem/data/2.11.dev20250709/localfunction_fb17410b0b5d479dce9ffc6f9d61ab37_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -317
  102. ddfem/data/2.11.dev20250709/localfunction_fc22d5adaf3b9563160dc2aec55e8ba1_19659fe2f2f74bcfb5d532f1a0d38be9.cc +0 -113
  103. ddfem/data/2.11.dev20250709/referenceelements_fe266b8abf61f4601198949ea6b0dfd3.cc +0 -24
  104. ddfem/data/2.11.dev20250709/transformers.modules +0 -13
  105. ddfem/data/2.11.dev20250709/yaspcoordinates_dim2_ctdouble.cc +0 -55
  106. ddfem/data/2.11.dev20250709/yaspcoordinates_dim3_ctdouble.cc +0 -55
  107. ddfem-1.0.10.dist-info/METADATA +0 -101
  108. ddfem-1.0.10.dist-info/RECORD +0 -138
  109. {ddfem-1.0.10.dist-info → ddfem-1.0.12.dist-info}/WHEEL +0 -0
  110. {ddfem-1.0.10.dist-info → ddfem-1.0.12.dist-info}/licenses/LICENSE +0 -0
  111. {ddfem-1.0.10.dist-info → ddfem-1.0.12.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,292 @@
1
+ #ifndef GUARD_76e8db0f046ac9e37a793e0bb13eea7b
2
+ #define GUARD_76e8db0f046ac9e37a793e0bb13eea7b
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_76e8db0f046ac9e37a793e0bb13eea7b
24
+ {
25
+
26
+ // UFLLocalFunction
27
+ // ----------------
28
+
29
+ template< class GridPart, class Coeff_tmp >
30
+ struct UFLLocalFunction
31
+ : public Dune::Fem::BindableGridFunctionWithSpace<GridPart,Dune::Dim<1>>
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<1>> BaseType;
37
+ typedef Dune::Fem::GridFunctionSpace<GridPartType,Dune::Dim<1>> 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 double Conlmbda;
44
+ typedef std::tuple< std::shared_ptr< Conlmbda > > ConstantTupleType;
45
+ template< std::size_t i >
46
+ using ConstantsRangeType = typename std::tuple_element_t< i, ConstantTupleType >::element_type;
47
+ typedef std::tuple< Dune::Fem::GridFunctionSpace< GridPartType, Dune::FieldVector< double, 2 > > > CoefficientFunctionSpaceTupleType;
48
+ typedef std::tuple< Coeff_tmp > CoefficientTupleType;
49
+ template< std::size_t i >
50
+ using CoefficientFunctionSpaceType = std::tuple_element_t< i, CoefficientFunctionSpaceTupleType >;
51
+ template< std::size_t i >
52
+ using CoefficientRangeType = typename CoefficientFunctionSpaceType< i >::RangeType;
53
+ template< std::size_t i >
54
+ using CoefficientJacobianRangeType = typename CoefficientFunctionSpaceType< i >::JacobianRangeType;
55
+ static constexpr bool gridPartValid = Dune::Fem::checkGridPartValid<GridPartType,Dune::Fem::ConstLocalFunction<Coeff_tmp>>();
56
+ template< std::size_t i >
57
+ using CoefficientType = std::tuple_element_t< i, CoefficientTupleType >;
58
+ template< std::size_t i >
59
+ using ConstantType = typename std::tuple_element_t< i, ConstantTupleType >::element_type;
60
+ using BaseType::entity;
61
+ using BaseType::geometry;
62
+
63
+ UFLLocalFunction ( const GridPartType &gridPart, const std::string &name, int order, const Coeff_tmp &coeff_tmp, const Dune::Fem::ParameterReader &parameter = Dune::Fem::Parameter::container() )
64
+ : BaseType(gridPart,name,order),
65
+ coefficients_( Dune::Fem::ConstLocalFunction< Coeff_tmp >( coeff_tmp ) )
66
+ {
67
+ std::get< 0 >( constants_ ) = std::make_shared< Conlmbda >( (Conlmbda(0)) );
68
+ }
69
+
70
+ void bind ( const IntersectionType &intersection, Side side )
71
+ {
72
+ BaseType::bind(intersection, side);
73
+ std::get< 0 >( coefficients_ ).bind( this->entity() );
74
+ }
75
+
76
+ void bind ( const EntityType &entity )
77
+ {
78
+ BaseType::bind(entity);
79
+ std::get< 0 >( coefficients_ ).bind( this->entity() );
80
+ }
81
+
82
+ void unbind ()
83
+ {
84
+ BaseType::unbind();
85
+ std::get< 0 >( coefficients_ ).unbind();
86
+ }
87
+
88
+ template< class Point >
89
+ void evaluate ( const Point &x, typename FunctionSpaceType::RangeType &result ) const
90
+ {
91
+ using std::max;
92
+ using std::min;
93
+ using std::sqrt;
94
+ GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
95
+ const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
96
+ const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
97
+ const auto tmp3 = tmp2 + tmp1;
98
+ const auto tmp4 = 1e-10 + tmp3;
99
+ const auto tmp5 = std::sqrt( tmp4 );
100
+ const auto tmp6 = -0.4 + tmp5;
101
+ const auto tmp7 = 0.15 + tmp0[ 1 ];
102
+ const auto tmp8 = tmp7 * tmp7;
103
+ const auto tmp9 = 0.15 + tmp0[ 0 ];
104
+ const auto tmp10 = tmp9 * tmp9;
105
+ const auto tmp11 = tmp10 + tmp8;
106
+ const auto tmp12 = 1e-10 + tmp11;
107
+ const auto tmp13 = std::sqrt( tmp12 );
108
+ const auto tmp14 = -0.3 + tmp13;
109
+ const auto tmp15 = -0.15 + tmp0[ 1 ];
110
+ const auto tmp16 = tmp15 * tmp15;
111
+ const auto tmp17 = -0.15 + tmp0[ 0 ];
112
+ const auto tmp18 = tmp17 * tmp17;
113
+ const auto tmp19 = tmp18 + tmp16;
114
+ const auto tmp20 = 1e-10 + tmp19;
115
+ const auto tmp21 = std::sqrt( tmp20 );
116
+ const auto tmp22 = -0.3 + tmp21;
117
+ const auto tmp23 = std::min( tmp22, tmp14 );
118
+ const auto tmp24 = std::max( tmp23, tmp6 );
119
+ double tmp25 = constant< 0 >();
120
+ const auto tmp26 = tmp25 / 2;
121
+ typename CoefficientFunctionSpaceType< 0 >::JacobianRangeType tmp27 = jacobianCoefficient< 0 >( x );
122
+ const auto tmp28 = (tmp27[ 0 ])[ 1 ] * (tmp27[ 0 ])[ 1 ];
123
+ const auto tmp29 = (tmp27[ 0 ])[ 0 ] * (tmp27[ 0 ])[ 0 ];
124
+ const auto tmp30 = tmp29 + tmp28;
125
+ const auto tmp31 = tmp30 * tmp26;
126
+ typename CoefficientFunctionSpaceType< 0 >::RangeType tmp32 = evaluateCoefficient< 0 >( x );
127
+ const auto tmp33 = tmp32[ 0 ] * tmp32[ 0 ];
128
+ const auto tmp34 = 100 * tmp33;
129
+ const auto tmp35 = -1 * tmp32[ 0 ];
130
+ const auto tmp36 = 1 + tmp35;
131
+ const auto tmp37 = tmp36 * tmp36;
132
+ const auto tmp38 = tmp37 * tmp34;
133
+ const auto tmp39 = tmp38 + tmp31;
134
+ const auto tmp40 = tmp39 * (tmp24 <= 0.0 ? 1 : 0.0);
135
+ result[ 0 ] = tmp40;
136
+ }
137
+
138
+ template< class Point >
139
+ void jacobian ( const Point &x, typename FunctionSpaceType::JacobianRangeType &result ) const
140
+ {
141
+ using std::max;
142
+ using std::min;
143
+ using std::sqrt;
144
+ GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
145
+ const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
146
+ const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
147
+ const auto tmp3 = tmp2 + tmp1;
148
+ const auto tmp4 = 1e-10 + tmp3;
149
+ const auto tmp5 = std::sqrt( tmp4 );
150
+ const auto tmp6 = -0.4 + tmp5;
151
+ const auto tmp7 = 0.15 + tmp0[ 1 ];
152
+ const auto tmp8 = tmp7 * tmp7;
153
+ const auto tmp9 = 0.15 + tmp0[ 0 ];
154
+ const auto tmp10 = tmp9 * tmp9;
155
+ const auto tmp11 = tmp10 + tmp8;
156
+ const auto tmp12 = 1e-10 + tmp11;
157
+ const auto tmp13 = std::sqrt( tmp12 );
158
+ const auto tmp14 = -0.3 + tmp13;
159
+ const auto tmp15 = -0.15 + tmp0[ 1 ];
160
+ const auto tmp16 = tmp15 * tmp15;
161
+ const auto tmp17 = -0.15 + tmp0[ 0 ];
162
+ const auto tmp18 = tmp17 * tmp17;
163
+ const auto tmp19 = tmp18 + tmp16;
164
+ const auto tmp20 = 1e-10 + tmp19;
165
+ const auto tmp21 = std::sqrt( tmp20 );
166
+ const auto tmp22 = -0.3 + tmp21;
167
+ const auto tmp23 = std::min( tmp22, tmp14 );
168
+ const auto tmp24 = std::max( tmp23, tmp6 );
169
+ double tmp25 = constant< 0 >();
170
+ const auto tmp26 = tmp25 / 2;
171
+ typename CoefficientFunctionSpaceType< 0 >::HessianRangeType tmp27 = hessianCoefficient< 0 >( x );
172
+ typename CoefficientFunctionSpaceType< 0 >::JacobianRangeType tmp28 = jacobianCoefficient< 0 >( x );
173
+ const auto tmp29 = (tmp28[ 0 ])[ 1 ] * ((tmp27[ 0 ])[ 1 ])[ 0 ];
174
+ const auto tmp30 = ((tmp27[ 0 ])[ 1 ])[ 0 ] * (tmp28[ 0 ])[ 1 ];
175
+ const auto tmp31 = tmp30 + tmp29;
176
+ const auto tmp32 = (tmp28[ 0 ])[ 0 ] * ((tmp27[ 0 ])[ 0 ])[ 0 ];
177
+ const auto tmp33 = ((tmp27[ 0 ])[ 0 ])[ 0 ] * (tmp28[ 0 ])[ 0 ];
178
+ const auto tmp34 = tmp33 + tmp32;
179
+ const auto tmp35 = tmp34 + tmp31;
180
+ const auto tmp36 = tmp35 * tmp26;
181
+ typename CoefficientFunctionSpaceType< 0 >::RangeType tmp37 = evaluateCoefficient< 0 >( x );
182
+ const auto tmp38 = tmp37[ 0 ] * tmp37[ 0 ];
183
+ const auto tmp39 = 100 * tmp38;
184
+ const auto tmp40 = -1 * (tmp28[ 0 ])[ 0 ];
185
+ const auto tmp41 = -1 * tmp37[ 0 ];
186
+ const auto tmp42 = 1 + tmp41;
187
+ const auto tmp43 = tmp42 * tmp40;
188
+ const auto tmp44 = tmp43 + tmp43;
189
+ const auto tmp45 = tmp44 * tmp39;
190
+ const auto tmp46 = tmp37[ 0 ] * (tmp28[ 0 ])[ 0 ];
191
+ const auto tmp47 = tmp46 + tmp46;
192
+ const auto tmp48 = 100 * tmp47;
193
+ const auto tmp49 = tmp42 * tmp42;
194
+ const auto tmp50 = tmp49 * tmp48;
195
+ const auto tmp51 = tmp50 + tmp45;
196
+ const auto tmp52 = tmp51 + tmp36;
197
+ const auto tmp53 = tmp52 * (tmp24 <= 0.0 ? 1 : 0.0);
198
+ const auto tmp54 = (tmp28[ 0 ])[ 1 ] * ((tmp27[ 0 ])[ 1 ])[ 1 ];
199
+ const auto tmp55 = ((tmp27[ 0 ])[ 1 ])[ 1 ] * (tmp28[ 0 ])[ 1 ];
200
+ const auto tmp56 = tmp55 + tmp54;
201
+ const auto tmp57 = (tmp28[ 0 ])[ 0 ] * ((tmp27[ 0 ])[ 0 ])[ 1 ];
202
+ const auto tmp58 = ((tmp27[ 0 ])[ 0 ])[ 1 ] * (tmp28[ 0 ])[ 0 ];
203
+ const auto tmp59 = tmp58 + tmp57;
204
+ const auto tmp60 = tmp59 + tmp56;
205
+ const auto tmp61 = tmp60 * tmp26;
206
+ const auto tmp62 = -1 * (tmp28[ 0 ])[ 1 ];
207
+ const auto tmp63 = tmp42 * tmp62;
208
+ const auto tmp64 = tmp63 + tmp63;
209
+ const auto tmp65 = tmp64 * tmp39;
210
+ const auto tmp66 = tmp37[ 0 ] * (tmp28[ 0 ])[ 1 ];
211
+ const auto tmp67 = tmp66 + tmp66;
212
+ const auto tmp68 = 100 * tmp67;
213
+ const auto tmp69 = tmp49 * tmp68;
214
+ const auto tmp70 = tmp69 + tmp65;
215
+ const auto tmp71 = tmp70 + tmp61;
216
+ const auto tmp72 = tmp71 * (tmp24 <= 0.0 ? 1 : 0.0);
217
+ (result[ 0 ])[ 0 ] = tmp53;
218
+ (result[ 0 ])[ 1 ] = tmp72;
219
+ }
220
+
221
+ template< class Point >
222
+ void hessian ( const Point &x, typename FunctionSpaceType::HessianRangeType &result ) const
223
+ {
224
+ DUNE_THROW(Dune::NotImplemented,"hessian method could not be generated for local function (TooHighDerivative('CodeGenerator does not allow for third order derivatives, yet.'))");
225
+ result=typename FunctionSpaceType::HessianRangeType(0);
226
+ }
227
+
228
+ template< std::size_t i >
229
+ const ConstantType< i > &constant () const
230
+ {
231
+ return *std::get< i >( constants_ );
232
+ }
233
+
234
+ template< std::size_t i >
235
+ ConstantType< i > &constant ()
236
+ {
237
+ return *std::get< i >( constants_ );
238
+ }
239
+
240
+ const Conlmbda &conlmbda () const
241
+ {
242
+ return *std::get< 0 >( constants_ );
243
+ }
244
+
245
+ Conlmbda &conlmbda ()
246
+ {
247
+ return *std::get< 0 >( constants_ );
248
+ }
249
+
250
+ template< std::size_t i, class Point >
251
+ typename CoefficientFunctionSpaceType< i >::RangeType evaluateCoefficient ( const Point &x ) const
252
+ {
253
+ typename CoefficientFunctionSpaceType< i >::RangeType result;
254
+ std::get< i >( coefficients_ ).evaluate( x, result );;
255
+ return result;
256
+ }
257
+
258
+ template< std::size_t i, class Point >
259
+ typename CoefficientFunctionSpaceType< i >::JacobianRangeType jacobianCoefficient ( const Point &x ) const
260
+ {
261
+ typename CoefficientFunctionSpaceType< i >::JacobianRangeType result;
262
+ std::get< i >( coefficients_ ).jacobian( x, result );;
263
+ return result;
264
+ }
265
+
266
+ template< std::size_t i, class Point >
267
+ typename CoefficientFunctionSpaceType< i >::HessianRangeType hessianCoefficient ( const Point &x ) const
268
+ {
269
+ typename CoefficientFunctionSpaceType< i >::HessianRangeType result;
270
+ std::get< i >( coefficients_ ).hessian( x, result );;
271
+ return result;
272
+ }
273
+ ConstantTupleType constants_;
274
+ std::tuple< Dune::Fem::ConstLocalFunction< Coeff_tmp > > coefficients_;
275
+ };
276
+
277
+ } // namespace UFLLocalFunctions_76e8db0f046ac9e37a793e0bb13eea7b
278
+
279
+ PYBIND11_MODULE( localfunction_76e8db0f046ac9e37a793e0bb13eea7b_a524c1196983e65de1c06d7d6afdeb44, module )
280
+ {
281
+ typedef UFLLocalFunctions_76e8db0f046ac9e37a793e0bb13eea7b::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, 2 > > > LocalFunctionType;
282
+ if constexpr( LocalFunctionType::gridPartValid )
283
+ {
284
+ auto cls = Dune::Python::insertClass<LocalFunctionType>(module,"UFLLocalFunction",Dune::Python::GenerateTypeName("UFLLocalFunctions_76e8db0f046ac9e37a793e0bb13eea7b::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, 2 > > >"), Dune::Python::IncludeFiles({"python/dune/generated/localfunction_76e8db0f046ac9e37a793e0bb13eea7b_a524c1196983e65de1c06d7d6afdeb44.cc"})).first;
285
+ Dune::FemPy::registerUFLLocalFunction( module, cls );
286
+ 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, 2 > > &coeff_tmp ) {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, coeff_tmp); } ), pybind11::keep_alive< 1, 2 >(), pybind11::keep_alive< 1, 3 >() );
287
+ cls.def_property( "lmbda", [] ( LocalFunctionType &self ) -> UFLLocalFunctions_76e8db0f046ac9e37a793e0bb13eea7b::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, 2 > > >::Conlmbda { return self.conlmbda(); }, [] ( LocalFunctionType &self, const UFLLocalFunctions_76e8db0f046ac9e37a793e0bb13eea7b::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, 2 > > >::Conlmbda &v ) { self.conlmbda() = v; } );
288
+ cls.def_property_readonly( "virtualized", [] ( LocalFunctionType& ) -> bool { return true;});
289
+ }
290
+ }
291
+
292
+ #endif
@@ -0,0 +1,280 @@
1
+ #ifndef GUARD_7792f4273b0fd848c5a0fc9d6f12683e
2
+ #define GUARD_7792f4273b0fd848c5a0fc9d6f12683e
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_7792f4273b0fd848c5a0fc9d6f12683e
24
+ {
25
+
26
+ // UFLLocalFunction
27
+ // ----------------
28
+
29
+ template< class GridPart, class Coeffu_h >
30
+ struct UFLLocalFunction
31
+ : public Dune::Fem::BindableGridFunctionWithSpace<GridPart,Dune::Dim<3>>
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<3>> BaseType;
37
+ typedef Dune::Fem::GridFunctionSpace<GridPartType,Dune::Dim<3>> 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, 3 > > > CoefficientFunctionSpaceTupleType;
45
+ typedef std::tuple< Coeffu_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<Coeffu_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 Coeffu_h &coeffu_h, const Dune::Fem::ParameterReader &parameter = Dune::Fem::Parameter::container() )
61
+ : BaseType(gridPart,name,order),
62
+ coefficients_( Dune::Fem::ConstLocalFunction< Coeffu_h >( coeffu_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
+ using std::max;
87
+ using std::min;
88
+ using std::sqrt;
89
+ GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
90
+ const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
91
+ const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
92
+ const auto tmp3 = tmp2 + tmp1;
93
+ const auto tmp4 = 1e-10 + tmp3;
94
+ const auto tmp5 = std::sqrt( tmp4 );
95
+ const auto tmp6 = -0.4 + tmp5;
96
+ const auto tmp7 = 0.15 + tmp0[ 1 ];
97
+ const auto tmp8 = tmp7 * tmp7;
98
+ const auto tmp9 = 0.15 + tmp0[ 0 ];
99
+ const auto tmp10 = tmp9 * tmp9;
100
+ const auto tmp11 = tmp10 + tmp8;
101
+ const auto tmp12 = 1e-10 + tmp11;
102
+ const auto tmp13 = std::sqrt( tmp12 );
103
+ const auto tmp14 = -0.3 + tmp13;
104
+ const auto tmp15 = -0.15 + tmp0[ 1 ];
105
+ const auto tmp16 = tmp15 * tmp15;
106
+ const auto tmp17 = -0.15 + tmp0[ 0 ];
107
+ const auto tmp18 = tmp17 * tmp17;
108
+ const auto tmp19 = tmp18 + tmp16;
109
+ const auto tmp20 = 1e-10 + tmp19;
110
+ const auto tmp21 = std::sqrt( tmp20 );
111
+ const auto tmp22 = -0.3 + tmp21;
112
+ const auto tmp23 = std::min( tmp22, tmp14 );
113
+ const auto tmp24 = std::max( tmp23, tmp6 );
114
+ typename CoefficientFunctionSpaceType< 0 >::RangeType tmp25 = evaluateCoefficient< 0 >( x );
115
+ const auto tmp26 = tmp25[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
116
+ const auto tmp27 = tmp25[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
117
+ const auto tmp28 = tmp25[ 2 ] * (tmp24 <= 0.0 ? 1 : 0.0);
118
+ result[ 0 ] = tmp26;
119
+ result[ 1 ] = tmp27;
120
+ result[ 2 ] = tmp28;
121
+ }
122
+
123
+ template< class Point >
124
+ void jacobian ( const Point &x, typename FunctionSpaceType::JacobianRangeType &result ) const
125
+ {
126
+ using std::max;
127
+ using std::min;
128
+ using std::sqrt;
129
+ GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
130
+ const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
131
+ const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
132
+ const auto tmp3 = tmp2 + tmp1;
133
+ const auto tmp4 = 1e-10 + tmp3;
134
+ const auto tmp5 = std::sqrt( tmp4 );
135
+ const auto tmp6 = -0.4 + tmp5;
136
+ const auto tmp7 = 0.15 + tmp0[ 1 ];
137
+ const auto tmp8 = tmp7 * tmp7;
138
+ const auto tmp9 = 0.15 + tmp0[ 0 ];
139
+ const auto tmp10 = tmp9 * tmp9;
140
+ const auto tmp11 = tmp10 + tmp8;
141
+ const auto tmp12 = 1e-10 + tmp11;
142
+ const auto tmp13 = std::sqrt( tmp12 );
143
+ const auto tmp14 = -0.3 + tmp13;
144
+ const auto tmp15 = -0.15 + tmp0[ 1 ];
145
+ const auto tmp16 = tmp15 * tmp15;
146
+ const auto tmp17 = -0.15 + tmp0[ 0 ];
147
+ const auto tmp18 = tmp17 * tmp17;
148
+ const auto tmp19 = tmp18 + tmp16;
149
+ const auto tmp20 = 1e-10 + tmp19;
150
+ const auto tmp21 = std::sqrt( tmp20 );
151
+ const auto tmp22 = -0.3 + tmp21;
152
+ const auto tmp23 = std::min( tmp22, tmp14 );
153
+ const auto tmp24 = std::max( tmp23, tmp6 );
154
+ typename CoefficientFunctionSpaceType< 0 >::JacobianRangeType tmp25 = jacobianCoefficient< 0 >( x );
155
+ const auto tmp26 = (tmp25[ 0 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
156
+ const auto tmp27 = (tmp25[ 0 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
157
+ const auto tmp28 = (tmp25[ 1 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
158
+ const auto tmp29 = (tmp25[ 1 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
159
+ const auto tmp30 = (tmp25[ 2 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
160
+ const auto tmp31 = (tmp25[ 2 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
161
+ (result[ 0 ])[ 0 ] = tmp26;
162
+ (result[ 0 ])[ 1 ] = tmp27;
163
+ (result[ 1 ])[ 0 ] = tmp28;
164
+ (result[ 1 ])[ 1 ] = tmp29;
165
+ (result[ 2 ])[ 0 ] = tmp30;
166
+ (result[ 2 ])[ 1 ] = tmp31;
167
+ }
168
+
169
+ template< class Point >
170
+ void hessian ( const Point &x, typename FunctionSpaceType::HessianRangeType &result ) const
171
+ {
172
+ using std::max;
173
+ using std::min;
174
+ using std::sqrt;
175
+ GlobalCoordinateType tmp0 = geometry().global( Dune::Fem::coordinate( x ) );
176
+ const auto tmp1 = tmp0[ 1 ] * tmp0[ 1 ];
177
+ const auto tmp2 = tmp0[ 0 ] * tmp0[ 0 ];
178
+ const auto tmp3 = tmp2 + tmp1;
179
+ const auto tmp4 = 1e-10 + tmp3;
180
+ const auto tmp5 = std::sqrt( tmp4 );
181
+ const auto tmp6 = -0.4 + tmp5;
182
+ const auto tmp7 = 0.15 + tmp0[ 1 ];
183
+ const auto tmp8 = tmp7 * tmp7;
184
+ const auto tmp9 = 0.15 + tmp0[ 0 ];
185
+ const auto tmp10 = tmp9 * tmp9;
186
+ const auto tmp11 = tmp10 + tmp8;
187
+ const auto tmp12 = 1e-10 + tmp11;
188
+ const auto tmp13 = std::sqrt( tmp12 );
189
+ const auto tmp14 = -0.3 + tmp13;
190
+ const auto tmp15 = -0.15 + tmp0[ 1 ];
191
+ const auto tmp16 = tmp15 * tmp15;
192
+ const auto tmp17 = -0.15 + tmp0[ 0 ];
193
+ const auto tmp18 = tmp17 * tmp17;
194
+ const auto tmp19 = tmp18 + tmp16;
195
+ const auto tmp20 = 1e-10 + tmp19;
196
+ const auto tmp21 = std::sqrt( tmp20 );
197
+ const auto tmp22 = -0.3 + tmp21;
198
+ const auto tmp23 = std::min( tmp22, tmp14 );
199
+ const auto tmp24 = std::max( tmp23, tmp6 );
200
+ typename CoefficientFunctionSpaceType< 0 >::HessianRangeType tmp25 = hessianCoefficient< 0 >( x );
201
+ const auto tmp26 = ((tmp25[ 0 ])[ 0 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
202
+ const auto tmp27 = ((tmp25[ 0 ])[ 0 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
203
+ const auto tmp28 = ((tmp25[ 0 ])[ 1 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
204
+ const auto tmp29 = ((tmp25[ 0 ])[ 1 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
205
+ const auto tmp30 = ((tmp25[ 1 ])[ 0 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
206
+ const auto tmp31 = ((tmp25[ 1 ])[ 0 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
207
+ const auto tmp32 = ((tmp25[ 1 ])[ 1 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
208
+ const auto tmp33 = ((tmp25[ 1 ])[ 1 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
209
+ const auto tmp34 = ((tmp25[ 2 ])[ 0 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
210
+ const auto tmp35 = ((tmp25[ 2 ])[ 0 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
211
+ const auto tmp36 = ((tmp25[ 2 ])[ 1 ])[ 0 ] * (tmp24 <= 0.0 ? 1 : 0.0);
212
+ const auto tmp37 = ((tmp25[ 2 ])[ 1 ])[ 1 ] * (tmp24 <= 0.0 ? 1 : 0.0);
213
+ ((result[ 0 ])[ 0 ])[ 0 ] = tmp26;
214
+ ((result[ 0 ])[ 0 ])[ 1 ] = tmp27;
215
+ ((result[ 0 ])[ 1 ])[ 0 ] = tmp28;
216
+ ((result[ 0 ])[ 1 ])[ 1 ] = tmp29;
217
+ ((result[ 1 ])[ 0 ])[ 0 ] = tmp30;
218
+ ((result[ 1 ])[ 0 ])[ 1 ] = tmp31;
219
+ ((result[ 1 ])[ 1 ])[ 0 ] = tmp32;
220
+ ((result[ 1 ])[ 1 ])[ 1 ] = tmp33;
221
+ ((result[ 2 ])[ 0 ])[ 0 ] = tmp34;
222
+ ((result[ 2 ])[ 0 ])[ 1 ] = tmp35;
223
+ ((result[ 2 ])[ 1 ])[ 0 ] = tmp36;
224
+ ((result[ 2 ])[ 1 ])[ 1 ] = tmp37;
225
+ }
226
+
227
+ template< std::size_t i >
228
+ const ConstantType< i > &constant () const
229
+ {
230
+ return *std::get< i >( constants_ );
231
+ }
232
+
233
+ template< std::size_t i >
234
+ ConstantType< i > &constant ()
235
+ {
236
+ return *std::get< i >( constants_ );
237
+ }
238
+
239
+ template< std::size_t i, class Point >
240
+ typename CoefficientFunctionSpaceType< i >::RangeType evaluateCoefficient ( const Point &x ) const
241
+ {
242
+ typename CoefficientFunctionSpaceType< i >::RangeType result;
243
+ std::get< i >( coefficients_ ).evaluate( x, result );;
244
+ return result;
245
+ }
246
+
247
+ template< std::size_t i, class Point >
248
+ typename CoefficientFunctionSpaceType< i >::JacobianRangeType jacobianCoefficient ( const Point &x ) const
249
+ {
250
+ typename CoefficientFunctionSpaceType< i >::JacobianRangeType result;
251
+ std::get< i >( coefficients_ ).jacobian( x, result );;
252
+ return result;
253
+ }
254
+
255
+ template< std::size_t i, class Point >
256
+ typename CoefficientFunctionSpaceType< i >::HessianRangeType hessianCoefficient ( const Point &x ) const
257
+ {
258
+ typename CoefficientFunctionSpaceType< i >::HessianRangeType result;
259
+ std::get< i >( coefficients_ ).hessian( x, result );;
260
+ return result;
261
+ }
262
+ ConstantTupleType constants_;
263
+ std::tuple< Dune::Fem::ConstLocalFunction< Coeffu_h > > coefficients_;
264
+ };
265
+
266
+ } // namespace UFLLocalFunctions_7792f4273b0fd848c5a0fc9d6f12683e
267
+
268
+ PYBIND11_MODULE( localfunction_7792f4273b0fd848c5a0fc9d6f12683e_a524c1196983e65de1c06d7d6afdeb44, module )
269
+ {
270
+ typedef UFLLocalFunctions_7792f4273b0fd848c5a0fc9d6f12683e::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, 3 > > > LocalFunctionType;
271
+ if constexpr( LocalFunctionType::gridPartValid )
272
+ {
273
+ auto cls = Dune::Python::insertClass<LocalFunctionType>(module,"UFLLocalFunction",Dune::Python::GenerateTypeName("UFLLocalFunctions_7792f4273b0fd848c5a0fc9d6f12683e::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, 3 > > >"), Dune::Python::IncludeFiles({"python/dune/generated/localfunction_7792f4273b0fd848c5a0fc9d6f12683e_a524c1196983e65de1c06d7d6afdeb44.cc"})).first;
274
+ Dune::FemPy::registerUFLLocalFunction( module, cls );
275
+ 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, 3 > > &coeffu_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, coeffu_h); } ), pybind11::keep_alive< 1, 2 >(), pybind11::keep_alive< 1, 3 >() );
276
+ cls.def_property_readonly( "virtualized", [] ( LocalFunctionType& ) -> bool { return true;});
277
+ }
278
+ }
279
+
280
+ #endif