netgen-mesher 6.2.2506.post35.dev0__cp314-cp314-win_amd64.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 (340) hide show
  1. netgen/NgOCC.py +7 -0
  2. netgen/__init__.py +114 -0
  3. netgen/__init__.pyi +22 -0
  4. netgen/__main__.py +53 -0
  5. netgen/cmake/NetgenConfig.cmake +79 -0
  6. netgen/cmake/netgen-targets-release.cmake +69 -0
  7. netgen/cmake/netgen-targets.cmake +146 -0
  8. netgen/config/__init__.py +1 -0
  9. netgen/config/__init__.pyi +52 -0
  10. netgen/config/__main__.py +4 -0
  11. netgen/config/config.py +68 -0
  12. netgen/config/config.pyi +54 -0
  13. netgen/csg.py +25 -0
  14. netgen/geom2d.py +178 -0
  15. netgen/gui.py +82 -0
  16. netgen/include/core/archive.hpp +1256 -0
  17. netgen/include/core/array.hpp +1760 -0
  18. netgen/include/core/autodiff.hpp +1131 -0
  19. netgen/include/core/autodiffdiff.hpp +733 -0
  20. netgen/include/core/bitarray.hpp +240 -0
  21. netgen/include/core/concurrentqueue.h +3619 -0
  22. netgen/include/core/exception.hpp +145 -0
  23. netgen/include/core/flags.hpp +199 -0
  24. netgen/include/core/hashtable.hpp +1281 -0
  25. netgen/include/core/localheap.hpp +318 -0
  26. netgen/include/core/logging.hpp +117 -0
  27. netgen/include/core/memtracer.hpp +221 -0
  28. netgen/include/core/mpi4py_pycapi.h +245 -0
  29. netgen/include/core/mpi_wrapper.hpp +643 -0
  30. netgen/include/core/ng_mpi.hpp +94 -0
  31. netgen/include/core/ng_mpi_generated_declarations.hpp +155 -0
  32. netgen/include/core/ng_mpi_native.hpp +25 -0
  33. netgen/include/core/ngcore.hpp +32 -0
  34. netgen/include/core/ngcore_api.hpp +152 -0
  35. netgen/include/core/ngstream.hpp +115 -0
  36. netgen/include/core/paje_trace.hpp +279 -0
  37. netgen/include/core/profiler.hpp +382 -0
  38. netgen/include/core/python_ngcore.hpp +457 -0
  39. netgen/include/core/ranges.hpp +109 -0
  40. netgen/include/core/register_archive.hpp +100 -0
  41. netgen/include/core/signal.hpp +82 -0
  42. netgen/include/core/simd.hpp +160 -0
  43. netgen/include/core/simd_arm64.hpp +407 -0
  44. netgen/include/core/simd_avx.hpp +394 -0
  45. netgen/include/core/simd_avx512.hpp +285 -0
  46. netgen/include/core/simd_generic.hpp +1053 -0
  47. netgen/include/core/simd_math.hpp +178 -0
  48. netgen/include/core/simd_sse.hpp +289 -0
  49. netgen/include/core/statushandler.hpp +37 -0
  50. netgen/include/core/symboltable.hpp +153 -0
  51. netgen/include/core/table.hpp +810 -0
  52. netgen/include/core/taskmanager.hpp +1161 -0
  53. netgen/include/core/type_traits.hpp +65 -0
  54. netgen/include/core/utils.hpp +385 -0
  55. netgen/include/core/version.hpp +102 -0
  56. netgen/include/core/xbool.hpp +47 -0
  57. netgen/include/csg/algprim.hpp +563 -0
  58. netgen/include/csg/brick.hpp +150 -0
  59. netgen/include/csg/csg.hpp +43 -0
  60. netgen/include/csg/csgeom.hpp +389 -0
  61. netgen/include/csg/csgparser.hpp +101 -0
  62. netgen/include/csg/curve2d.hpp +67 -0
  63. netgen/include/csg/edgeflw.hpp +112 -0
  64. netgen/include/csg/explicitcurve2d.hpp +113 -0
  65. netgen/include/csg/extrusion.hpp +185 -0
  66. netgen/include/csg/gencyl.hpp +70 -0
  67. netgen/include/csg/geoml.hpp +16 -0
  68. netgen/include/csg/identify.hpp +213 -0
  69. netgen/include/csg/manifold.hpp +29 -0
  70. netgen/include/csg/meshsurf.hpp +46 -0
  71. netgen/include/csg/polyhedra.hpp +121 -0
  72. netgen/include/csg/revolution.hpp +180 -0
  73. netgen/include/csg/singularref.hpp +84 -0
  74. netgen/include/csg/solid.hpp +295 -0
  75. netgen/include/csg/specpoin.hpp +194 -0
  76. netgen/include/csg/spline3d.hpp +99 -0
  77. netgen/include/csg/splinesurface.hpp +85 -0
  78. netgen/include/csg/surface.hpp +394 -0
  79. netgen/include/csg/triapprox.hpp +63 -0
  80. netgen/include/csg/vscsg.hpp +34 -0
  81. netgen/include/general/autodiff.hpp +356 -0
  82. netgen/include/general/autoptr.hpp +39 -0
  83. netgen/include/general/gzstream.h +121 -0
  84. netgen/include/general/hashtabl.hpp +1692 -0
  85. netgen/include/general/myadt.hpp +48 -0
  86. netgen/include/general/mystring.hpp +226 -0
  87. netgen/include/general/netgenout.hpp +205 -0
  88. netgen/include/general/ngarray.hpp +797 -0
  89. netgen/include/general/ngbitarray.hpp +149 -0
  90. netgen/include/general/ngpython.hpp +74 -0
  91. netgen/include/general/optmem.hpp +44 -0
  92. netgen/include/general/parthreads.hpp +138 -0
  93. netgen/include/general/seti.hpp +50 -0
  94. netgen/include/general/sort.hpp +47 -0
  95. netgen/include/general/spbita2d.hpp +59 -0
  96. netgen/include/general/stack.hpp +114 -0
  97. netgen/include/general/table.hpp +280 -0
  98. netgen/include/general/template.hpp +509 -0
  99. netgen/include/geom2d/csg2d.hpp +750 -0
  100. netgen/include/geom2d/geometry2d.hpp +280 -0
  101. netgen/include/geom2d/spline2d.hpp +234 -0
  102. netgen/include/geom2d/vsgeom2d.hpp +28 -0
  103. netgen/include/gprim/adtree.hpp +1392 -0
  104. netgen/include/gprim/geom2d.hpp +858 -0
  105. netgen/include/gprim/geom3d.hpp +749 -0
  106. netgen/include/gprim/geomfuncs.hpp +212 -0
  107. netgen/include/gprim/geomobjects.hpp +544 -0
  108. netgen/include/gprim/geomops.hpp +404 -0
  109. netgen/include/gprim/geomtest3d.hpp +101 -0
  110. netgen/include/gprim/gprim.hpp +33 -0
  111. netgen/include/gprim/spline.hpp +778 -0
  112. netgen/include/gprim/splinegeometry.hpp +73 -0
  113. netgen/include/gprim/transform3d.hpp +216 -0
  114. netgen/include/include/acisgeom.hpp +3 -0
  115. netgen/include/include/csg.hpp +1 -0
  116. netgen/include/include/geometry2d.hpp +1 -0
  117. netgen/include/include/gprim.hpp +1 -0
  118. netgen/include/include/incopengl.hpp +62 -0
  119. netgen/include/include/inctcl.hpp +13 -0
  120. netgen/include/include/incvis.hpp +6 -0
  121. netgen/include/include/linalg.hpp +1 -0
  122. netgen/include/include/meshing.hpp +1 -0
  123. netgen/include/include/myadt.hpp +1 -0
  124. netgen/include/include/mydefs.hpp +70 -0
  125. netgen/include/include/mystdlib.h +59 -0
  126. netgen/include/include/netgen_config.hpp +27 -0
  127. netgen/include/include/netgen_version.hpp +9 -0
  128. netgen/include/include/nginterface_v2_impl.hpp +395 -0
  129. netgen/include/include/ngsimd.hpp +1 -0
  130. netgen/include/include/occgeom.hpp +1 -0
  131. netgen/include/include/opti.hpp +1 -0
  132. netgen/include/include/parallel.hpp +1 -0
  133. netgen/include/include/stlgeom.hpp +1 -0
  134. netgen/include/include/visual.hpp +1 -0
  135. netgen/include/interface/rw_medit.hpp +11 -0
  136. netgen/include/interface/writeuser.hpp +80 -0
  137. netgen/include/linalg/densemat.hpp +414 -0
  138. netgen/include/linalg/linalg.hpp +29 -0
  139. netgen/include/linalg/opti.hpp +142 -0
  140. netgen/include/linalg/polynomial.hpp +47 -0
  141. netgen/include/linalg/vector.hpp +217 -0
  142. netgen/include/meshing/adfront2.hpp +274 -0
  143. netgen/include/meshing/adfront3.hpp +332 -0
  144. netgen/include/meshing/basegeom.hpp +370 -0
  145. netgen/include/meshing/bcfunctions.hpp +53 -0
  146. netgen/include/meshing/bisect.hpp +72 -0
  147. netgen/include/meshing/boundarylayer.hpp +113 -0
  148. netgen/include/meshing/classifyhpel.hpp +1984 -0
  149. netgen/include/meshing/clusters.hpp +46 -0
  150. netgen/include/meshing/curvedelems.hpp +274 -0
  151. netgen/include/meshing/delaunay2d.hpp +73 -0
  152. netgen/include/meshing/fieldlines.hpp +103 -0
  153. netgen/include/meshing/findip.hpp +198 -0
  154. netgen/include/meshing/findip2.hpp +103 -0
  155. netgen/include/meshing/geomsearch.hpp +69 -0
  156. netgen/include/meshing/global.hpp +54 -0
  157. netgen/include/meshing/hpref_hex.hpp +330 -0
  158. netgen/include/meshing/hpref_prism.hpp +3405 -0
  159. netgen/include/meshing/hpref_pyramid.hpp +154 -0
  160. netgen/include/meshing/hpref_quad.hpp +2082 -0
  161. netgen/include/meshing/hpref_segm.hpp +122 -0
  162. netgen/include/meshing/hpref_tet.hpp +4230 -0
  163. netgen/include/meshing/hpref_trig.hpp +848 -0
  164. netgen/include/meshing/hprefinement.hpp +366 -0
  165. netgen/include/meshing/improve2.hpp +178 -0
  166. netgen/include/meshing/improve3.hpp +151 -0
  167. netgen/include/meshing/localh.hpp +223 -0
  168. netgen/include/meshing/meshclass.hpp +1076 -0
  169. netgen/include/meshing/meshfunc.hpp +47 -0
  170. netgen/include/meshing/meshing.hpp +63 -0
  171. netgen/include/meshing/meshing2.hpp +163 -0
  172. netgen/include/meshing/meshing3.hpp +123 -0
  173. netgen/include/meshing/meshtool.hpp +90 -0
  174. netgen/include/meshing/meshtype.hpp +1930 -0
  175. netgen/include/meshing/msghandler.hpp +62 -0
  176. netgen/include/meshing/paralleltop.hpp +172 -0
  177. netgen/include/meshing/python_mesh.hpp +206 -0
  178. netgen/include/meshing/ruler2.hpp +172 -0
  179. netgen/include/meshing/ruler3.hpp +211 -0
  180. netgen/include/meshing/soldata.hpp +141 -0
  181. netgen/include/meshing/specials.hpp +17 -0
  182. netgen/include/meshing/surfacegeom.hpp +73 -0
  183. netgen/include/meshing/topology.hpp +1003 -0
  184. netgen/include/meshing/validate.hpp +21 -0
  185. netgen/include/meshing/visual_interface.hpp +71 -0
  186. netgen/include/mydefs.hpp +70 -0
  187. netgen/include/nginterface.h +474 -0
  188. netgen/include/nginterface_v2.hpp +406 -0
  189. netgen/include/nglib.h +697 -0
  190. netgen/include/nglib_occ.h +50 -0
  191. netgen/include/occ/occ_edge.hpp +47 -0
  192. netgen/include/occ/occ_face.hpp +52 -0
  193. netgen/include/occ/occ_solid.hpp +23 -0
  194. netgen/include/occ/occ_utils.hpp +376 -0
  195. netgen/include/occ/occ_vertex.hpp +30 -0
  196. netgen/include/occ/occgeom.hpp +659 -0
  197. netgen/include/occ/occmeshsurf.hpp +168 -0
  198. netgen/include/occ/vsocc.hpp +33 -0
  199. netgen/include/pybind11/LICENSE +29 -0
  200. netgen/include/pybind11/attr.h +722 -0
  201. netgen/include/pybind11/buffer_info.h +208 -0
  202. netgen/include/pybind11/cast.h +2361 -0
  203. netgen/include/pybind11/chrono.h +228 -0
  204. netgen/include/pybind11/common.h +2 -0
  205. netgen/include/pybind11/complex.h +74 -0
  206. netgen/include/pybind11/conduit/README.txt +15 -0
  207. netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  208. netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  209. netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  210. netgen/include/pybind11/critical_section.h +56 -0
  211. netgen/include/pybind11/detail/class.h +823 -0
  212. netgen/include/pybind11/detail/common.h +1348 -0
  213. netgen/include/pybind11/detail/cpp_conduit.h +75 -0
  214. netgen/include/pybind11/detail/descr.h +226 -0
  215. netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  216. netgen/include/pybind11/detail/exception_translation.h +71 -0
  217. netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
  218. netgen/include/pybind11/detail/init.h +538 -0
  219. netgen/include/pybind11/detail/internals.h +799 -0
  220. netgen/include/pybind11/detail/native_enum_data.h +209 -0
  221. netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  222. netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
  223. netgen/include/pybind11/detail/type_caster_base.h +1591 -0
  224. netgen/include/pybind11/detail/typeid.h +65 -0
  225. netgen/include/pybind11/detail/using_smart_holder.h +22 -0
  226. netgen/include/pybind11/detail/value_and_holder.h +90 -0
  227. netgen/include/pybind11/eigen/common.h +9 -0
  228. netgen/include/pybind11/eigen/matrix.h +723 -0
  229. netgen/include/pybind11/eigen/tensor.h +521 -0
  230. netgen/include/pybind11/eigen.h +12 -0
  231. netgen/include/pybind11/embed.h +320 -0
  232. netgen/include/pybind11/eval.h +161 -0
  233. netgen/include/pybind11/functional.h +147 -0
  234. netgen/include/pybind11/gil.h +199 -0
  235. netgen/include/pybind11/gil_safe_call_once.h +102 -0
  236. netgen/include/pybind11/gil_simple.h +37 -0
  237. netgen/include/pybind11/iostream.h +265 -0
  238. netgen/include/pybind11/native_enum.h +67 -0
  239. netgen/include/pybind11/numpy.h +2312 -0
  240. netgen/include/pybind11/operators.h +202 -0
  241. netgen/include/pybind11/options.h +92 -0
  242. netgen/include/pybind11/pybind11.h +3645 -0
  243. netgen/include/pybind11/pytypes.h +2680 -0
  244. netgen/include/pybind11/stl/filesystem.h +114 -0
  245. netgen/include/pybind11/stl.h +666 -0
  246. netgen/include/pybind11/stl_bind.h +858 -0
  247. netgen/include/pybind11/subinterpreter.h +299 -0
  248. netgen/include/pybind11/trampoline_self_life_support.h +65 -0
  249. netgen/include/pybind11/type_caster_pyobject_ptr.h +61 -0
  250. netgen/include/pybind11/typing.h +298 -0
  251. netgen/include/pybind11/warnings.h +75 -0
  252. netgen/include/stlgeom/meshstlsurface.hpp +67 -0
  253. netgen/include/stlgeom/stlgeom.hpp +491 -0
  254. netgen/include/stlgeom/stlline.hpp +193 -0
  255. netgen/include/stlgeom/stltool.hpp +331 -0
  256. netgen/include/stlgeom/stltopology.hpp +419 -0
  257. netgen/include/stlgeom/vsstl.hpp +58 -0
  258. netgen/include/visualization/meshdoc.hpp +42 -0
  259. netgen/include/visualization/mvdraw.hpp +325 -0
  260. netgen/include/visualization/vispar.hpp +128 -0
  261. netgen/include/visualization/visual.hpp +28 -0
  262. netgen/include/visualization/visual_api.hpp +10 -0
  263. netgen/include/visualization/vssolution.hpp +399 -0
  264. netgen/lib/libnggui.lib +0 -0
  265. netgen/lib/ngcore.lib +0 -0
  266. netgen/lib/nglib.lib +0 -0
  267. netgen/lib/togl.lib +0 -0
  268. netgen/libnggui.dll +0 -0
  269. netgen/libngguipy.lib +0 -0
  270. netgen/libngguipy.pyd +0 -0
  271. netgen/libngpy/_NgOCC.pyi +1545 -0
  272. netgen/libngpy/__init__.pyi +7 -0
  273. netgen/libngpy/_csg.pyi +259 -0
  274. netgen/libngpy/_geom2d.pyi +323 -0
  275. netgen/libngpy/_meshing.pyi +1111 -0
  276. netgen/libngpy/_stl.pyi +131 -0
  277. netgen/libngpy.lib +0 -0
  278. netgen/libngpy.pyd +0 -0
  279. netgen/meshing.py +65 -0
  280. netgen/ngcore.dll +0 -0
  281. netgen/nglib.dll +0 -0
  282. netgen/occ.py +52 -0
  283. netgen/read_gmsh.py +259 -0
  284. netgen/read_meshio.py +22 -0
  285. netgen/stl.py +2 -0
  286. netgen/togl.dll +0 -0
  287. netgen/version.py +2 -0
  288. netgen/webgui.py +529 -0
  289. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boundarycondition.geo +16 -0
  290. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boxcyl.geo +32 -0
  291. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/circle_on_cube.geo +27 -0
  292. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cone.geo +13 -0
  293. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cube.geo +16 -0
  294. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandring.geo +55 -0
  295. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandspheres.geo +21 -0
  296. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemcyl.geo +18 -0
  297. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemsphere.geo +19 -0
  298. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylinder.geo +12 -0
  299. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylsphere.geo +12 -0
  300. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/doc/ng4.pdf +0 -0
  301. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipsoid.geo +8 -0
  302. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipticcyl.geo +10 -0
  303. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/extrusion.geo +99 -0
  304. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/fichera.geo +24 -0
  305. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/frame.step +11683 -0
  306. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/hinge.stl +8486 -0
  307. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/lshape3d.geo +26 -0
  308. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes.geo +26 -0
  309. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes2.geo +26 -0
  310. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/matrix.geo +27 -0
  311. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ortho.geo +11 -0
  312. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/part1.stl +2662 -0
  313. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/period.geo +33 -0
  314. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/exportNeutral.py +26 -0
  315. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/mesh.py +19 -0
  316. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/shaft.geo +65 -0
  317. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/revolution.geo +18 -0
  318. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/screw.step +1694 -0
  319. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sculpture.geo +13 -0
  320. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shaft.geo +65 -0
  321. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shell.geo +10 -0
  322. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphere.geo +8 -0
  323. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphereincube.geo +17 -0
  324. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/square.in2d +35 -0
  325. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarecircle.in2d +48 -0
  326. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarehole.in2d +47 -0
  327. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/torus.geo +8 -0
  328. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/trafo.geo +57 -0
  329. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twobricks.geo +15 -0
  330. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocubes.geo +18 -0
  331. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocyl.geo +16 -0
  332. netgen_mesher-6.2.2506.post35.dev0.dist-info/METADATA +15 -0
  333. netgen_mesher-6.2.2506.post35.dev0.dist-info/RECORD +340 -0
  334. netgen_mesher-6.2.2506.post35.dev0.dist-info/WHEEL +5 -0
  335. netgen_mesher-6.2.2506.post35.dev0.dist-info/entry_points.txt +2 -0
  336. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/AUTHORS +1 -0
  337. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/LICENSE +504 -0
  338. netgen_mesher-6.2.2506.post35.dev0.dist-info/top_level.txt +2 -0
  339. pyngcore/__init__.py +1 -0
  340. pyngcore/pyngcore.cp314-win_amd64.pyd +0 -0
@@ -0,0 +1,4230 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+ enum VNUM { V1, V2, V3, V4,
9
+ E12, E13, E14,
10
+ E21, E23, E24,
11
+ E31, E32, E34,
12
+ E41, E42, E43,
13
+ F123, F124, F134,
14
+ F213, F214, F234,
15
+ F312, F314, F324,
16
+ F412, F413, F423
17
+ };
18
+
19
+ class El
20
+ {
21
+ public:
22
+ HPREF_ELEMENT_TYPE type;
23
+ std::vector<VNUM> vertices;
24
+
25
+ El (HPREF_ELEMENT_TYPE atype,
26
+ std::vector<VNUM> avertices)
27
+ : type(atype), vertices(avertices) { }
28
+ };
29
+
30
+ extern std::map<HPREF_ELEMENT_TYPE, HPRef_Struct*> & GetHPRegistry();
31
+
32
+ template <HPREF_ELEMENT_TYPE GEOM>
33
+ class HPRefStruct : public HPRef_Struct
34
+ {
35
+ typedef int int3[3];
36
+ typedef int int4[4];
37
+ typedef int int8[8];
38
+ std::vector<std::array<int,3>> refedges;
39
+ std::vector<std::array<int,4>> reffaces;
40
+ std::vector<HPREF_ELEMENT_TYPE> neweltypes_vec;
41
+ std::vector<std::array<int,8>> newelverts;
42
+
43
+ public:
44
+ HPRefStruct(HPREF_ELEMENT_TYPE type,
45
+ std::vector<El> list)
46
+ {
47
+ GetHPRegistry()[type] = this;
48
+
49
+ geom = GEOM;
50
+ std::map<VNUM, int> mapnums;
51
+ int ii = 0;
52
+ for (auto v : { V1, V2, V3, V4})
53
+ mapnums[v] = ++ii;
54
+
55
+ for (auto el : list)
56
+ for (auto v : el.vertices)
57
+ if (mapnums.count(v)==0)
58
+ mapnums[v] = ++ii;
59
+
60
+ int elist[][3] =
61
+ { { 1, 2, E12 },
62
+ { 1, 3, E13 },
63
+ { 1, 4, E14 },
64
+ { 2, 1, E21 },
65
+ { 2, 3, E23 },
66
+ { 2, 4, E24 },
67
+ { 3, 1, E31 },
68
+ { 3, 2, E32 },
69
+ { 3, 4, E34 },
70
+ { 4, 1, E41 },
71
+ { 4, 2, E42 },
72
+ { 4, 3, E43 }
73
+ };
74
+ int flist[][4] =
75
+ { { 1, 2, 3, F123 },
76
+ { 1, 2, 4, F124 },
77
+ { 1, 3, 4, F134 },
78
+ { 2, 1, 3, F213 },
79
+ { 2, 1, 4, F214 },
80
+ { 2, 3, 4, F234 },
81
+ { 3, 1, 2, F312 },
82
+ { 3, 1, 4, F314 },
83
+ { 3, 2, 4, F324 },
84
+ { 4, 1, 2, F412 },
85
+ { 4, 1, 3, F413 },
86
+ { 4, 2, 3, F423 }
87
+ };
88
+
89
+ /*
90
+ // too advanced ...
91
+ for (auto [i1,i2,inew] : elist)
92
+ if (mapnums.count(VNUM(inew)))
93
+ refedges.push_back( { i1, i2, mapnums[VNUM(inew)] });
94
+ */
95
+ for (int i = 0; i < size(elist); i++)
96
+ {
97
+ int i1 = elist[i][0];
98
+ int i2 = elist[i][1];
99
+ int inew = elist[i][2];
100
+ if (mapnums.count(VNUM(inew)))
101
+ refedges.push_back( { i1, i2, mapnums[VNUM(inew)] });
102
+ }
103
+
104
+ refedges.push_back( { 0, 0, 0 } );
105
+ splitedges = (int3*) &refedges[0][0];
106
+
107
+ /*
108
+ // too advanced ...
109
+ for (auto [i1,i2,i3,inew] : flist)
110
+ if (mapnums.count(VNUM(inew)))
111
+ reffaces.push_back( { i1, i2, i3, mapnums[VNUM(inew)] });
112
+ */
113
+ for (int i = 0; i < size(flist); i++)
114
+ {
115
+ int i1 = flist[i][0];
116
+ int i2 = flist[i][1];
117
+ int i3 = flist[i][2];
118
+ int inew = flist[i][3];
119
+ if (mapnums.count(VNUM(inew)))
120
+ reffaces.push_back( { i1, i2, i3, mapnums[VNUM(inew)] });
121
+ }
122
+
123
+
124
+
125
+ reffaces.push_back( { 0, 0, 0 } );
126
+ splitfaces = (int4*) &reffaces[0][0];
127
+
128
+
129
+
130
+ splitelements = nullptr;
131
+
132
+ for (auto el : list)
133
+ {
134
+ neweltypes_vec.push_back (el.type);
135
+ std::array<int,8> verts;
136
+ for (int j = 0; j < std::min(verts.size(), el.vertices.size()); j++)
137
+ verts[j] = mapnums[VNUM(el.vertices[j])];
138
+ newelverts.push_back(verts);
139
+ }
140
+
141
+ neweltypes_vec.push_back (HP_NONE);
142
+
143
+ neweltypes = &neweltypes_vec[0];
144
+ newels = (int8*) &newelverts[0][0];
145
+
146
+ /*
147
+ int ind = 0;
148
+ cout << "rule, split edges:" << endl;
149
+ while (splitedges[ind][0])
150
+ {
151
+ cout << splitedges[ind][0] << "-" << splitedges[ind][1] << ": " << splitedges[ind][2] << endl;
152
+ ind++;
153
+ }
154
+
155
+ ind = 0;
156
+ cout << "rule, split faces:" << endl;
157
+ while (splitfaces[ind][0])
158
+ {
159
+ cout << splitfaces[ind][0] << "-" << splitfaces[ind][1]
160
+ << "-" << splitfaces[ind][2] << ": " << splitfaces[ind][3] << endl;
161
+ ind++;
162
+ }
163
+
164
+ ind = 0;
165
+ cout << "rule, new els:" << endl;
166
+ while (neweltypes[ind] != HP_NONE)
167
+ {
168
+ cout << "new type " << neweltypes[ind] << ", verts: ";
169
+ for (int j = 0; j < 8; j++)
170
+ cout << newels[ind][j] << " ";
171
+ ind++;
172
+ }
173
+ */
174
+ }
175
+ };
176
+
177
+
178
+
179
+
180
+
181
+
182
+ // HP_NONETET
183
+ int refnonetet_splitedges[][3] =
184
+ {
185
+ { 0, 0, 0 }
186
+ };
187
+ HPREF_ELEMENT_TYPE refnonetet_newelstypes[] =
188
+ {
189
+ HP_TET,
190
+ HP_NONE,
191
+ };
192
+ int refnonetet_newels[][8] =
193
+ {
194
+ { 1, 1, 1, 1 },
195
+ };
196
+ HPRef_Struct refnonetet =
197
+ {
198
+ HP_TET,
199
+ refnonetet_splitedges,
200
+ 0, 0,
201
+ refnonetet_newelstypes,
202
+ refnonetet_newels
203
+ };
204
+
205
+
206
+
207
+
208
+
209
+ // HP_TET
210
+ int reftet_splitedges[][3] =
211
+ {
212
+ { 0, 0, 0 }
213
+ };
214
+ HPREF_ELEMENT_TYPE reftet_newelstypes[] =
215
+ {
216
+ HP_TET,
217
+ HP_NONE,
218
+ };
219
+ int reftet_newels[][8] =
220
+ {
221
+ { 1, 2, 3, 4 },
222
+ };
223
+ HPRef_Struct reftet =
224
+ {
225
+ HP_TET,
226
+ reftet_splitedges,
227
+ 0, 0,
228
+ reftet_newelstypes,
229
+ reftet_newels
230
+ };
231
+
232
+
233
+
234
+ /* *********** Tet - Refinement - 0 edges *************** */
235
+
236
+ // HP_TET_0E_1V
237
+ int reftet_0e_1v_splitedges[][3] =
238
+ {
239
+ { 1, 2, 5 },
240
+ { 1, 3, 6 },
241
+ { 1, 4, 7 },
242
+ { 0, 0, 0 }
243
+ };
244
+ HPREF_ELEMENT_TYPE reftet_0e_1v_newelstypes[] =
245
+ {
246
+ HP_TET_0E_1V,
247
+ HP_PRISM,
248
+ HP_NONE,
249
+ };
250
+ int reftet_0e_1v_newels[][8] =
251
+ {
252
+ { 1, 5, 6, 7 },
253
+ { 5, 6, 7, 2, 3, 4 }
254
+ };
255
+ HPRef_Struct reftet_0e_1v =
256
+ {
257
+ HP_TET,
258
+ reftet_0e_1v_splitedges,
259
+ 0, 0,
260
+ reftet_0e_1v_newelstypes,
261
+ reftet_0e_1v_newels
262
+ };
263
+
264
+ /*
265
+ // new syntax ???
266
+ HPRef_Struct2 str =
267
+ {
268
+ HP_TET_0E_1V, HP_TET,
269
+ El(HP_TET_0E_1V, { V1, V12, V13, V14 })
270
+ };
271
+ */
272
+
273
+
274
+
275
+
276
+ // HP_TET_0E_2V
277
+ int reftet_0e_2v_splitedges[][3] =
278
+ {
279
+ { 1, 2, 5 },
280
+ { 1, 3, 6 },
281
+ { 1, 4, 7 },
282
+ { 2, 1, 8 },
283
+ { 2, 3, 9 },
284
+ { 2, 4, 10 },
285
+ { 0, 0, 0 }
286
+ };
287
+ HPREF_ELEMENT_TYPE reftet_0e_2v_newelstypes[] =
288
+ {
289
+ HP_TET_0E_1V,
290
+ HP_TET_0E_1V,
291
+ HP_PRISM,
292
+ HP_PRISM,
293
+ HP_NONE,
294
+ };
295
+ int reftet_0e_2v_newels[][8] =
296
+ {
297
+ { 1, 5, 6, 7 },
298
+ { 2, 10, 9, 8 },
299
+ { 5, 6, 7, 8, 9, 10 },
300
+ { 4, 10, 7, 3, 9, 6 },
301
+ };
302
+ HPRef_Struct reftet_0e_2v =
303
+ {
304
+ HP_TET,
305
+ reftet_0e_2v_splitedges,
306
+ 0, 0,
307
+ reftet_0e_2v_newelstypes,
308
+ reftet_0e_2v_newels
309
+ };
310
+
311
+
312
+
313
+
314
+
315
+ // HP_TET_0E_3V
316
+ int reftet_0e_3v_splitedges[][3] =
317
+ {
318
+ { 1, 2, 5 },
319
+ { 1, 3, 6 },
320
+ { 1, 4, 7 },
321
+ { 2, 1, 8 },
322
+ { 2, 3, 9 },
323
+ { 2, 4, 10 },
324
+ { 3, 1, 11 },
325
+ { 3, 2, 12 },
326
+ { 3, 4, 13 },
327
+ { 0, 0, 0 }
328
+ };
329
+ int reftet_0e_3v_splitfaces[][4] =
330
+ {
331
+ { 1, 2, 3, 14 },
332
+ { 2, 3, 1, 15 },
333
+ { 3, 1, 2, 16 },
334
+ { 0, 0, 0, 0 },
335
+ };
336
+ HPREF_ELEMENT_TYPE reftet_0e_3v_newelstypes[] =
337
+ {
338
+ HP_PYRAMID_0E_1V,
339
+ HP_PYRAMID_0E_1V,
340
+ HP_PYRAMID_0E_1V,
341
+ HP_PRISM,
342
+ HP_PRISM,
343
+ HP_PRISM,
344
+ HP_PRISM,
345
+ HP_TET,
346
+ HP_NONE,
347
+ };
348
+ int reftet_0e_3v_newels[][8] =
349
+ {
350
+ { 1, 5, 14, 6, 7 },
351
+ { 2, 9, 15, 8, 10 },
352
+ { 3, 11, 16, 12, 13 },
353
+ { 5, 14, 7, 8, 15, 10 },
354
+ { 9, 15, 10, 12, 16, 13 },
355
+ { 6, 7, 14, 11, 13, 16 },
356
+ { 14, 15, 16, 7, 10, 13 },
357
+ { 7, 10, 13, 4 }
358
+ };
359
+ HPRef_Struct reftet_0e_3v =
360
+ {
361
+ HP_TET,
362
+ reftet_0e_3v_splitedges,
363
+ reftet_0e_3v_splitfaces,
364
+ 0,
365
+ reftet_0e_3v_newelstypes,
366
+ reftet_0e_3v_newels
367
+ };
368
+
369
+
370
+
371
+
372
+
373
+ // HP_TET_0E_4V
374
+ int reftet_0e_4v_splitedges[][3] =
375
+ {
376
+ { 1, 2, 5 },
377
+ { 1, 3, 6 },
378
+ { 1, 4, 7 },
379
+ { 2, 1, 8 },
380
+ { 2, 3, 9 },
381
+ { 2, 4, 10 },
382
+ { 3, 1, 11 },
383
+ { 3, 2, 12 },
384
+ { 3, 4, 13 },
385
+ { 4, 1, 14 },
386
+ { 4, 2, 15 },
387
+ { 4, 3, 16 },
388
+ { 0, 0, 0 }
389
+ };
390
+ int reftet_0e_4v_splitfaces[][4] =
391
+ {
392
+ { 1, 2, 3, 17 },
393
+ { 1, 2, 4, 18 },
394
+ { 1, 3, 4, 19 },
395
+
396
+ { 2, 1, 3, 20 },
397
+ { 2, 1, 4, 21 },
398
+ { 2, 3, 4, 22 },
399
+
400
+ { 3, 1, 2, 23 },
401
+ { 3, 1, 4, 24 },
402
+ { 3, 2, 4, 25 },
403
+
404
+ { 4, 1, 2, 26 },
405
+ { 4, 1, 3, 27 },
406
+ { 4, 2, 3, 28 },
407
+ { 0, 0, 0, 0 },
408
+ };
409
+ int reftet_0e_4v_splitelements[][5] =
410
+ {
411
+ { 1, 2, 3, 4, 29 },
412
+ { 2, 3, 4, 1, 30 },
413
+ { 3, 4, 1, 2, 31 },
414
+ { 4, 1, 2, 3, 32 },
415
+ { 0 },
416
+ };
417
+ HPREF_ELEMENT_TYPE reftet_0e_4v_newelstypes[] =
418
+ {
419
+ HP_HEX_0E_1V,
420
+ HP_HEX_0E_1V,
421
+ HP_HEX_0E_1V,
422
+ HP_HEX_0E_1V,
423
+ HP_PRISM, HP_PRISM,
424
+ HP_PRISM, HP_PRISM,
425
+ HP_PRISM, HP_PRISM,
426
+ HP_PRISM, HP_PRISM,
427
+ HP_PRISM, HP_PRISM,
428
+ HP_PRISM, HP_PRISM,
429
+ HP_PRISM,
430
+ HP_PRISM,
431
+ HP_PRISM,
432
+ HP_PRISM,
433
+ HP_TET,
434
+ HP_NONE,
435
+ };
436
+ int reftet_0e_4v_newels[][8] =
437
+ {
438
+ { 1, 5, 17, 6, 7, 18, 29, 19 },
439
+ { 2, 9, 20, 8, 10, 22, 30, 21 },
440
+ { 3, 11, 23, 12, 13, 24, 31, 25 },
441
+ { 4, 15, 26, 14, 16, 28, 32, 27 },
442
+ { 5, 17, 18, 8, 20, 21 },
443
+ { 18, 17, 29, 21, 20, 30 },
444
+ { 6, 19, 17, 11, 24, 23 },
445
+ { 17, 19, 29, 23, 24, 31 },
446
+ { 7, 18, 19, 14, 26, 27 },
447
+ { 19, 18, 29, 27, 26, 32 },
448
+ { 9, 20, 22, 12, 23, 25 },
449
+ { 22, 20, 30, 25, 23, 31 },
450
+ { 10, 22, 21, 15, 28, 26 },
451
+ { 21, 22, 30, 26, 28, 32 },
452
+ { 13, 24, 25, 16, 27, 28 },
453
+ { 25, 24, 31, 28, 27, 32 },
454
+ { 17, 20, 23, 29, 30, 31 },
455
+ { 18, 26, 21, 29, 32, 30 },
456
+ { 19, 24, 27, 29, 31, 32 },
457
+ { 22, 28, 25, 30, 32, 31 },
458
+ { 29, 30, 31, 32 },
459
+ };
460
+ HPRef_Struct reftet_0e_4v =
461
+ {
462
+ HP_TET,
463
+ reftet_0e_4v_splitedges,
464
+ reftet_0e_4v_splitfaces,
465
+ reftet_0e_4v_splitelements,
466
+ reftet_0e_4v_newelstypes,
467
+ reftet_0e_4v_newels
468
+ };
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+ /* *********** Tet - Refinement - 1 edge *************** */
487
+
488
+
489
+
490
+ // HP_TET_1E_0V
491
+ int reftet_1e_0v_splitedges[][3] =
492
+ {
493
+ { 1, 3, 5 },
494
+ { 1, 4, 6 },
495
+ { 2, 3, 7 },
496
+ { 2, 4, 8 },
497
+ { 0, 0, 0 }
498
+ };
499
+ HPREF_ELEMENT_TYPE reftet_1e_0v_newelstypes[] =
500
+ {
501
+ HP_PRISM_SINGEDGE,
502
+ HP_PRISM,
503
+ HP_NONE,
504
+ };
505
+ int reftet_1e_0v_newels[][8] =
506
+ {
507
+ { 1, 5, 6, 2, 7, 8 },
508
+ { 7, 3, 5, 8, 4, 6 }
509
+ };
510
+ HPRef_Struct reftet_1e_0v =
511
+ {
512
+ HP_TET,
513
+ reftet_1e_0v_splitedges,
514
+ 0, 0,
515
+ reftet_1e_0v_newelstypes,
516
+ reftet_1e_0v_newels
517
+ };
518
+
519
+
520
+
521
+
522
+
523
+ // HP_TET_1E_1VA
524
+ int reftet_1e_1va_splitedges[][3] =
525
+ {
526
+ { 1, 3, 5 },
527
+ { 1, 4, 6 },
528
+ { 2, 3, 7 },
529
+ { 2, 4, 8 },
530
+ { 1, 2, 9 },
531
+ { 0, 0, 0 }
532
+ };
533
+ HPREF_ELEMENT_TYPE reftet_1e_1va_newelstypes[] =
534
+ {
535
+ HP_TET_1E_1VA,
536
+ HP_PRISM_SINGEDGE,
537
+ HP_PRISM,
538
+ HP_NONE,
539
+ };
540
+ int reftet_1e_1va_newels[][8] =
541
+ {
542
+ { 1, 9, 5, 6 },
543
+ { 9, 5, 6, 2, 7, 8 },
544
+ { 7, 3, 5, 8, 4, 6 }
545
+ };
546
+ HPRef_Struct reftet_1e_1va =
547
+ {
548
+ HP_TET,
549
+ reftet_1e_1va_splitedges,
550
+ 0, 0,
551
+ reftet_1e_1va_newelstypes,
552
+ reftet_1e_1va_newels
553
+ };
554
+
555
+
556
+
557
+
558
+
559
+
560
+ // HP_TET_1E_1VB
561
+ int reftet_1e_1vb_splitedges[][3] =
562
+ {
563
+ { 1, 3, 5 },
564
+ { 1, 4, 6 },
565
+ { 2, 3, 7 },
566
+ { 2, 4, 8 },
567
+ { 4, 1, 9 },
568
+ { 4, 2, 10 },
569
+ { 4, 3, 11 },
570
+ { 0, 0, 0 }
571
+ };
572
+ int reftet_1e_1vb_splitelements[][5] =
573
+ {
574
+ { 4, 1, 2, 3, 12 },
575
+ { 0 }
576
+ };
577
+
578
+ HPREF_ELEMENT_TYPE reftet_1e_1vb_newelstypes[] =
579
+ {
580
+ HP_PRISM_SINGEDGE,
581
+ HP_TET_0E_1V,
582
+ HP_PYRAMID,
583
+ HP_TET,
584
+ HP_PYRAMID,
585
+ HP_TET,
586
+ HP_PYRAMID,
587
+ HP_TET,
588
+ HP_PYRAMID,
589
+ HP_TET,
590
+ HP_NONE,
591
+ };
592
+ int reftet_1e_1vb_newels[][8] =
593
+ {
594
+ { 1, 5, 6, 2, 7, 8 },
595
+ { 4, 11, 10, 9 },
596
+ { 7, 8, 10, 11, 12 },
597
+ { 3, 7, 11, 12 },
598
+ { 5, 11, 9, 6, 12 },
599
+ { 5, 3, 11, 12 },
600
+ { 6, 9, 10, 8, 12 },
601
+ { 5, 7, 3, 12 },
602
+ { 5, 6, 8, 7, 12 },
603
+ { 9, 11, 10, 12 }
604
+ };
605
+ HPRef_Struct reftet_1e_1vb =
606
+ {
607
+ HP_TET,
608
+ reftet_1e_1vb_splitedges,
609
+ 0,
610
+ reftet_1e_1vb_splitelements,
611
+ reftet_1e_1vb_newelstypes,
612
+ reftet_1e_1vb_newels
613
+ };
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+ // HP_TET_1E_2VA
623
+ int reftet_1e_2va_splitedges[][3] =
624
+ {
625
+ { 1, 2, 5 },
626
+ { 1, 3, 6 },
627
+ { 1, 4, 7 },
628
+ { 2, 1, 8 },
629
+ { 2, 3, 9 },
630
+ { 2, 4, 10 },
631
+ { 0, 0, 0 }
632
+ };
633
+ HPREF_ELEMENT_TYPE reftet_1e_2va_newelstypes[] =
634
+ {
635
+ HP_TET_1E_1VA,
636
+ HP_TET_1E_1VA,
637
+ HP_PRISM_SINGEDGE,
638
+ HP_PRISM,
639
+ HP_NONE,
640
+ };
641
+ int reftet_1e_2va_newels[][8] =
642
+ {
643
+ { 1, 5, 6, 7 },
644
+ { 2, 8, 10, 9 },
645
+ { 5, 6, 7, 8, 9, 10 },
646
+ { 4, 10, 7, 3, 9, 6 },
647
+ };
648
+ HPRef_Struct reftet_1e_2va =
649
+ {
650
+ HP_TET,
651
+ reftet_1e_2va_splitedges,
652
+ 0, 0,
653
+ reftet_1e_2va_newelstypes,
654
+ reftet_1e_2va_newels
655
+ };
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+ // HP_TET_1E_2VB
664
+ int reftet_1e_2vb_splitedges[][3] =
665
+ {
666
+ { 1, 2, 5 },
667
+ { 1, 3, 6 },
668
+ { 1, 4, 7 },
669
+ { 2, 3, 8 },
670
+ { 2, 4, 9 },
671
+ { 3, 1, 10 },
672
+ { 3, 2, 11 },
673
+ { 3, 4, 12 },
674
+ { 0, 0, 0 }
675
+ };
676
+ int reftet_1e_2vb_splitelements[][5] =
677
+ {
678
+ { 3, 4, 1, 2, 13 },
679
+ { 0 }
680
+ };
681
+
682
+ HPREF_ELEMENT_TYPE reftet_1e_2vb_newelstypes[] =
683
+ {
684
+ HP_TET_1E_1VA,
685
+ HP_PRISM_SINGEDGE,
686
+ HP_TET_0E_1V,
687
+ HP_PYRAMID,
688
+ HP_TET,
689
+ HP_PYRAMID,
690
+ HP_TET,
691
+ HP_PYRAMID,
692
+ HP_TET,
693
+ HP_PYRAMID,
694
+ HP_TET,
695
+ HP_NONE,
696
+ };
697
+ int reftet_1e_2vb_newels[][8] =
698
+ {
699
+ { 1, 5, 6, 7 },
700
+ { 5, 6, 7, 2, 8, 9 },
701
+ { 3, 10, 11, 12 },
702
+
703
+ { 8, 9, 12, 11, 13 },
704
+ { 4, 12, 9, 13 },
705
+ { 6, 10, 12, 7, 13 },
706
+ { 4, 7, 12, 13 },
707
+ { 6, 8, 11, 10, 13 },
708
+ { 4, 9, 7, 13 },
709
+ { 6, 7, 9, 8, 13 },
710
+ { 10, 11, 12, 13 },
711
+ };
712
+ HPRef_Struct reftet_1e_2vb =
713
+ {
714
+ HP_TET,
715
+ reftet_1e_2vb_splitedges,
716
+ 0,
717
+ reftet_1e_2vb_splitelements,
718
+ reftet_1e_2vb_newelstypes,
719
+ reftet_1e_2vb_newels
720
+ };
721
+
722
+
723
+
724
+
725
+
726
+
727
+ // HP_TET_1E_2VC
728
+ int reftet_1e_2vc_splitedges[][3] =
729
+ {
730
+ { 1, 2, 5 },
731
+ { 1, 3, 6 },
732
+ { 1, 4, 7 },
733
+ { 2, 3, 8 },
734
+ { 2, 4, 9 },
735
+ { 4, 1, 10 },
736
+ { 4, 2, 11 },
737
+ { 4, 3, 12 },
738
+ { 0, 0, 0 }
739
+ };
740
+ int reftet_1e_2vc_splitelements[][5] =
741
+ {
742
+ { 4, 1, 2, 3, 13 },
743
+ { 0 }
744
+ };
745
+
746
+ HPREF_ELEMENT_TYPE reftet_1e_2vc_newelstypes[] =
747
+ {
748
+ HP_TET_1E_1VA,
749
+ HP_PRISM_SINGEDGE,
750
+ HP_TET_0E_1V,
751
+ HP_PYRAMID,
752
+ HP_TET,
753
+ HP_PYRAMID,
754
+ HP_TET,
755
+ HP_PYRAMID,
756
+ HP_TET,
757
+ HP_PYRAMID,
758
+ HP_TET,
759
+ HP_NONE,
760
+ };
761
+ int reftet_1e_2vc_newels[][8] =
762
+ {
763
+ { 1, 5, 6, 7 },
764
+ { 5, 6, 7, 2, 8, 9 },
765
+ { 4, 11, 10, 12 },
766
+ { 8, 9, 11, 12, 13 },
767
+ { 3, 8, 12, 13 },
768
+ { 7, 6, 12, 10, 13 },
769
+ { 3, 12, 6, 13 },
770
+ { 9, 7, 10, 11, 13 },
771
+ { 3, 6, 8, 13 },
772
+ { 6, 7, 9, 8, 13 },
773
+ { 10, 12, 11, 13 }
774
+ };
775
+ HPRef_Struct reftet_1e_2vc =
776
+ {
777
+ HP_TET,
778
+ reftet_1e_2vc_splitedges,
779
+ 0,
780
+ reftet_1e_2vc_splitelements,
781
+ reftet_1e_2vc_newelstypes,
782
+ reftet_1e_2vc_newels
783
+ };
784
+
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+ /*
793
+
794
+ // HP_TET_1E_2VD
795
+ int reftet_1e_2vd_splitedges[][3] =
796
+ {
797
+ { 1, 3, 5 },
798
+ { 1, 4, 6 },
799
+ { 2, 3, 7 },
800
+ { 2, 4, 8 },
801
+ { 3, 1, 9 },
802
+ { 3, 2, 10 },
803
+ { 3, 4, 11 },
804
+ { 4, 1, 12 },
805
+ { 4, 2, 13 },
806
+ { 4, 3, 14 },
807
+ { 0, 0, 0 }
808
+ };
809
+ HPREF_ELEMENT_TYPE reftet_1e_2vd_newelstypes[] =
810
+ {
811
+ HP_PRISM_SINGEDGE,
812
+ HP_TET_0E_1V,
813
+ HP_TET_0E_1V,
814
+ HP_PRISM,
815
+ HP_HEX,
816
+ HP_NONE,
817
+ };
818
+ int reftet_1e_2vd_newels[][8] =
819
+ {
820
+ { 1, 5, 6, 2, 7, 8 },
821
+ { 4, 13, 12, 14 },
822
+ { 3, 10, 11, 9 },
823
+ { 14, 13, 12, 11, 10, 9 },
824
+ { 6, 12, 13, 8, 5, 9, 10, 7 },
825
+ };
826
+ HPRef_Struct reftet_1e_2vd =
827
+ {
828
+ HP_TET,
829
+ reftet_1e_2vd_splitedges,
830
+ 0, 0,
831
+ reftet_1e_2vd_newelstypes,
832
+ reftet_1e_2vd_newels
833
+ };
834
+
835
+ */
836
+
837
+
838
+
839
+
840
+ // HP_TET_1E_2VD, // 1 v on edge
841
+ int reftet_1e_2vd_splitedges[][3] =
842
+ {
843
+ // { 1, 2, 5 },
844
+ { 1, 3, 6 },
845
+ { 1, 4, 7 },
846
+ // { 2, 1, 8 },
847
+ { 2, 3, 9 },
848
+ { 2, 4, 10 },
849
+ { 3, 1, 11 },
850
+ { 3, 2, 12 },
851
+ { 3, 4, 13 },
852
+ { 4, 1, 14 },
853
+ { 4, 2, 15 },
854
+ { 4, 3, 16 },
855
+ { 0, 0, 0 }
856
+ };
857
+ int reftet_1e_2vd_splitfaces[][4] =
858
+ {
859
+ { 1, 3, 4, 19 },
860
+ { 2, 3, 4, 22 },
861
+ { 3, 1, 4, 24 },
862
+ { 3, 2, 4, 25 },
863
+ { 4, 1, 3, 27 },
864
+ { 4, 2, 3, 28 },
865
+ { 0, 0, 0, 0 }
866
+ };
867
+ HPREF_ELEMENT_TYPE reftet_1e_2vd_newelstypes[] =
868
+ {
869
+ HP_PRISM_SINGEDGE,
870
+ HP_TET_0E_1V,
871
+ HP_TET_0E_1V,
872
+ HP_PRISM,
873
+ HP_HEX,
874
+ HP_PYRAMID,
875
+ HP_HEX,
876
+ HP_PYRAMID,
877
+ HP_PRISM,
878
+ HP_PRISM,
879
+ HP_NONE,
880
+ };
881
+ int reftet_1e_2vd_newels[][8] =
882
+ {
883
+ { 1, 6, 7, 2, 9, 10 },
884
+ { 3, 11, 12, 13 },
885
+ { 4, 16, 15, 14 },
886
+ { 7, 6, 19, 10, 9, 22 },
887
+ { 7, 19, 27, 14, 10, 22, 28, 15 },
888
+ { 14, 15, 28, 27, 16 },
889
+ { 9, 6, 19, 22, 12, 11, 24, 25 },
890
+ { 12, 11, 24, 25, 13 },
891
+ { 19, 24, 27, 22, 25, 28 },
892
+ { 16, 28, 27, 13, 25, 24 }
893
+ };
894
+ HPRef_Struct reftet_1e_2vd =
895
+ {
896
+ HP_TET,
897
+ reftet_1e_2vd_splitedges,
898
+ reftet_1e_2vd_splitfaces,
899
+ 0,
900
+ reftet_1e_2vd_newelstypes,
901
+ reftet_1e_2vd_newels
902
+ };
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+ // HP_TET_1E_3VA
919
+ int reftet_1e_3va_splitedges[][3] =
920
+ {
921
+ { 1, 2, 5 },
922
+ { 1, 3, 6 },
923
+ { 1, 4, 7 },
924
+ { 2, 1, 8 },
925
+ { 2, 3, 9 },
926
+ { 2, 4, 10 },
927
+ { 3, 1, 11 },
928
+ { 3, 2, 12 },
929
+ { 3, 4, 13 },
930
+ { 0, 0, 0 }
931
+ };
932
+ int reftet_1e_3va_splitelements[][5] =
933
+ {
934
+ { 1, 2, 3, 4, 14 },
935
+ { 0 }
936
+ };
937
+
938
+ HPREF_ELEMENT_TYPE reftet_1e_3va_newelstypes[] =
939
+ {
940
+ HP_PRISM_SINGEDGE,
941
+ HP_TET_1E_1VA,
942
+ HP_TET_1E_1VA,
943
+ HP_TET_0E_1V,
944
+
945
+ HP_PYRAMID,
946
+ HP_TET,
947
+ HP_PYRAMID,
948
+ HP_TET,
949
+ HP_PYRAMID,
950
+ HP_TET,
951
+ HP_PYRAMID,
952
+ HP_TET,
953
+ HP_NONE,
954
+ };
955
+ int reftet_1e_3va_newels[][8] =
956
+ {
957
+ { 5, 6, 7, 8, 9, 10 },
958
+ { 1, 5, 6, 7 },
959
+ { 2, 8, 10, 9 },
960
+ { 3, 11, 12, 13 },
961
+
962
+ { 6, 7, 10, 9, 14 },
963
+ { 4, 10, 7, 14 },
964
+ { 9, 10, 13, 12, 14 },
965
+ { 4, 13, 10, 14 },
966
+ { 6, 11, 13, 7, 14 },
967
+ { 4, 7, 13, 14 },
968
+ { 6, 11, 12, 9, 14 },
969
+ { 11, 13, 12, 14 },
970
+ };
971
+
972
+ HPRef_Struct reftet_1e_3va =
973
+ {
974
+ HP_TET,
975
+ reftet_1e_3va_splitedges,
976
+ 0,
977
+ reftet_1e_3va_splitelements,
978
+ reftet_1e_3va_newelstypes,
979
+ reftet_1e_3va_newels
980
+ };
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+
1002
+
1003
+ // HP_TET_1E_3VB, // 1 v on edge
1004
+ int reftet_1e_3vb_splitedges[][3] =
1005
+ {
1006
+ { 1, 2, 5 },
1007
+ { 1, 3, 6 },
1008
+ { 1, 4, 7 },
1009
+ // { 2, 1, 8 },
1010
+ { 2, 3, 9 },
1011
+ { 2, 4, 10 },
1012
+ { 3, 1, 11 },
1013
+ { 3, 2, 12 },
1014
+ { 3, 4, 13 },
1015
+ { 4, 1, 14 },
1016
+ { 4, 2, 15 },
1017
+ { 4, 3, 16 },
1018
+ { 0, 0, 0 }
1019
+ };
1020
+ int reftet_1e_3vb_splitfaces[][4] =
1021
+ {
1022
+ { 1, 3, 4, 19 },
1023
+ { 2, 3, 4, 22 },
1024
+ { 3, 1, 4, 24 },
1025
+ { 3, 2, 4, 25 },
1026
+ { 4, 1, 3, 27 },
1027
+ { 4, 2, 3, 28 },
1028
+ { 0, 0, 0, 0 }
1029
+ };
1030
+ HPREF_ELEMENT_TYPE reftet_1e_3vb_newelstypes[] =
1031
+ {
1032
+ HP_TET_1E_1VA,
1033
+ HP_PRISM_SINGEDGE,
1034
+ HP_TET_0E_1V,
1035
+ HP_TET_0E_1V,
1036
+ HP_PRISM,
1037
+ HP_HEX,
1038
+ HP_PYRAMID,
1039
+ HP_HEX,
1040
+ HP_PYRAMID,
1041
+ HP_PRISM,
1042
+ HP_PRISM,
1043
+ HP_NONE,
1044
+ };
1045
+ int reftet_1e_3vb_newels[][8] =
1046
+ {
1047
+ { 1, 5, 6, 7 },
1048
+ { 5, 6, 7, 2, 9, 10 },
1049
+ { 3, 11, 12, 13 },
1050
+ { 4, 16, 15, 14 },
1051
+ { 7, 6, 19, 10, 9, 22 },
1052
+ { 7, 19, 27, 14, 10, 22, 28, 15 },
1053
+ { 14, 15, 28, 27, 16 },
1054
+ { 9, 6, 19, 22, 12, 11, 24, 25 },
1055
+ { 12, 11, 24, 25, 13 },
1056
+ { 19, 24, 27, 22, 25, 28 },
1057
+ { 16, 28, 27, 13, 25, 24 }
1058
+ };
1059
+ HPRef_Struct reftet_1e_3vb =
1060
+ {
1061
+ HP_TET,
1062
+ reftet_1e_3vb_splitedges,
1063
+ reftet_1e_3vb_splitfaces,
1064
+ 0,
1065
+ reftet_1e_3vb_newelstypes,
1066
+ reftet_1e_3vb_newels
1067
+ };
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+ /*
1075
+ // HP_TET_1E_4V
1076
+ int reftet_1e_4v_splitedges[][3] =
1077
+ {
1078
+ { 1, 2, 5 },
1079
+ { 1, 3, 6 },
1080
+ { 1, 4, 7 },
1081
+ { 2, 1, 8 },
1082
+ { 2, 3, 9 },
1083
+ { 2, 4, 10 },
1084
+ { 3, 1, 11 },
1085
+ { 3, 2, 12 },
1086
+ { 3, 4, 13 },
1087
+ { 4, 1, 14 },
1088
+ { 4, 2, 15 },
1089
+ { 4, 3, 16 },
1090
+ { 0, 0, 0 }
1091
+ };
1092
+ int reftet_1e_4v_splitfaces[][4] =
1093
+ {
1094
+ { 1, 2, 3, 17 },
1095
+ { 1, 2, 4, 18 },
1096
+ { 1, 3, 4, 19 },
1097
+
1098
+ { 2, 1, 3, 20 },
1099
+ { 2, 1, 4, 21 },
1100
+ { 2, 3, 4, 22 },
1101
+
1102
+ { 3, 1, 2, 23 },
1103
+ { 3, 1, 4, 24 },
1104
+ { 3, 2, 4, 25 },
1105
+
1106
+ { 4, 1, 2, 26 },
1107
+ { 4, 1, 3, 27 },
1108
+ { 4, 2, 3, 28 },
1109
+ { 0, 0, 0, 0 },
1110
+ };
1111
+ int reftet_1e_4v_splitelements[][5] =
1112
+ {
1113
+ { 1, 2, 3, 4, 29 },
1114
+ { 2, 3, 4, 1, 30 },
1115
+ { 3, 4, 1, 2, 31 },
1116
+ { 4, 1, 2, 3, 32 },
1117
+ { 0 },
1118
+ };
1119
+ HPREF_ELEMENT_TYPE reftet_1e_4v_newelstypes[] =
1120
+ {
1121
+ HP_HEX_1E_1V,
1122
+ HP_HEX_1E_1V,
1123
+ HP_HEX_0E_1V,
1124
+ HP_HEX_0E_1V,
1125
+ HP_PRISM_SINGEDGE, HP_PRISM,
1126
+ HP_PRISM, HP_PRISM,
1127
+ HP_PRISM, HP_PRISM,
1128
+ HP_PRISM, HP_PRISM,
1129
+ HP_PRISM, HP_PRISM,
1130
+ HP_PRISM, HP_PRISM,
1131
+ HP_PRISM,
1132
+ HP_PRISM,
1133
+ HP_PRISM,
1134
+ HP_PRISM,
1135
+ HP_TET,
1136
+ HP_NONE,
1137
+ };
1138
+ int reftet_1e_4v_newels[][8] =
1139
+ {
1140
+ { 1, 5, 17, 6, 7, 18, 29, 19 },
1141
+ // { 2, 9, 20, 8, 10, 22, 30, 21 },
1142
+ { 2, 8, 21, 10, 9, 20, 30, 22 },
1143
+ { 3, 11, 23, 12, 13, 24, 31, 25 },
1144
+ { 4, 15, 26, 14, 16, 28, 32, 27 },
1145
+ { 5, 17, 18, 8, 20, 21 },
1146
+ { 18, 17, 29, 21, 20, 30 },
1147
+ { 6, 19, 17, 11, 24, 23 },
1148
+ { 17, 19, 29, 23, 24, 31 },
1149
+ { 7, 18, 19, 14, 26, 27 },
1150
+ { 19, 18, 29, 27, 26, 32 },
1151
+ { 9, 20, 22, 12, 23, 25 },
1152
+ { 22, 20, 30, 25, 23, 31 },
1153
+ { 10, 22, 21, 15, 28, 26 },
1154
+ { 21, 22, 30, 26, 28, 32 },
1155
+ { 13, 24, 25, 16, 27, 28 },
1156
+ { 25, 24, 31, 28, 27, 32 },
1157
+ { 17, 20, 23, 29, 30, 31 },
1158
+ { 18, 26, 21, 29, 32, 30 },
1159
+ { 19, 24, 27, 29, 31, 32 },
1160
+ { 22, 28, 25, 30, 32, 31 },
1161
+
1162
+ { 29, 30, 31, 32 },
1163
+ };
1164
+ HPRef_Struct reftet_1e_4v =
1165
+ {
1166
+ HP_TET,
1167
+ reftet_1e_4v_splitedges,
1168
+ reftet_1e_4v_splitfaces,
1169
+ reftet_1e_4v_splitelements,
1170
+ reftet_1e_4v_newelstypes,
1171
+ reftet_1e_4v_newels
1172
+ };
1173
+ */
1174
+
1175
+
1176
+
1177
+
1178
+ // HP_TET_1E_4V
1179
+ int reftet_1e_4v_splitedges[][3] =
1180
+ {
1181
+ { 1, 2, 5 },
1182
+ { 1, 3, 6 },
1183
+ { 1, 4, 7 },
1184
+ { 2, 1, 8 },
1185
+ { 2, 3, 9 },
1186
+ { 2, 4, 10 },
1187
+ { 3, 1, 11 },
1188
+ { 3, 2, 12 },
1189
+ { 3, 4, 13 },
1190
+ { 4, 1, 14 },
1191
+ { 4, 2, 15 },
1192
+ { 4, 3, 16 },
1193
+ { 0, 0, 0 }
1194
+ };
1195
+ int reftet_1e_4v_splitfaces[][4] =
1196
+ {
1197
+ { 1, 3, 4, 17 },
1198
+ { 2, 3, 4, 18 },
1199
+
1200
+ { 3, 1, 4, 19 },
1201
+ { 3, 2, 4, 20 },
1202
+
1203
+ { 4, 1, 3, 21 },
1204
+ { 4, 2, 3, 22 },
1205
+ { 0, 0, 0, 0 },
1206
+ };
1207
+
1208
+ HPREF_ELEMENT_TYPE reftet_1e_4v_newelstypes[] =
1209
+ {
1210
+ HP_TET_1E_1VA,
1211
+ HP_TET_1E_1VA,
1212
+ // HP_TET_1E_1VA,
1213
+ // HP_TET_1E_1VA,
1214
+ HP_PRISM_SINGEDGE,
1215
+ HP_PRISM,
1216
+ HP_HEX,
1217
+ HP_HEX,
1218
+ HP_PRISM,
1219
+ HP_PRISM,
1220
+
1221
+ HP_PYRAMID,
1222
+ HP_TET_0E_1V,
1223
+
1224
+ HP_PYRAMID,
1225
+ HP_TET_0E_1V,
1226
+
1227
+ HP_NONE,
1228
+ };
1229
+
1230
+ int reftet_1e_4v_newels[][8] =
1231
+ {
1232
+ { 1, 5, 6, 7 },
1233
+ { 2, 8, 10, 9 },
1234
+
1235
+ { 5, 6, 7, 8, 9, 10 },
1236
+ { 7, 6, 17, 10, 9, 18 },
1237
+
1238
+ { 7, 10, 18, 17, 14, 15, 22, 21 },
1239
+ { 9, 6, 17, 18, 12, 11, 19, 20 },
1240
+
1241
+ { 17, 19, 21, 18, 20, 22 },
1242
+ { 16, 22, 21, 13, 20, 19 },
1243
+
1244
+ { 14, 15, 22, 21, 16 },
1245
+ { 4, 14, 16, 15 },
1246
+ { 12, 11, 19, 20, 13 },
1247
+ { 3, 11, 12, 13 },
1248
+
1249
+
1250
+
1251
+ { 1, 5, 17, 6, 7, 18, 29, 19 },
1252
+ // { 2, 9, 20, 8, 10, 22, 30, 21 },
1253
+ { 2, 8, 21, 10, 9, 20, 30, 22 },
1254
+ { 3, 11, 23, 12, 13, 24, 31, 25 },
1255
+ { 4, 15, 26, 14, 16, 28, 32, 27 },
1256
+ { 5, 17, 18, 8, 20, 21 },
1257
+ { 18, 17, 29, 21, 20, 30 },
1258
+ { 6, 19, 17, 11, 24, 23 },
1259
+ { 17, 19, 29, 23, 24, 31 },
1260
+ { 7, 18, 19, 14, 26, 27 },
1261
+ { 19, 18, 29, 27, 26, 32 },
1262
+ { 9, 20, 22, 12, 23, 25 },
1263
+ { 22, 20, 30, 25, 23, 31 },
1264
+ { 10, 22, 21, 15, 28, 26 },
1265
+ { 21, 22, 30, 26, 28, 32 },
1266
+ { 13, 24, 25, 16, 27, 28 },
1267
+ { 25, 24, 31, 28, 27, 32 },
1268
+ { 17, 20, 23, 29, 30, 31 },
1269
+ { 18, 26, 21, 29, 32, 30 },
1270
+ { 19, 24, 27, 29, 31, 32 },
1271
+ { 22, 28, 25, 30, 32, 31 },
1272
+
1273
+ { 29, 30, 31, 32 },
1274
+ };
1275
+ HPRef_Struct reftet_1e_4v =
1276
+ {
1277
+ HP_TET,
1278
+ reftet_1e_4v_splitedges,
1279
+ reftet_1e_4v_splitfaces,
1280
+ 0,
1281
+ reftet_1e_4v_newelstypes,
1282
+ reftet_1e_4v_newels
1283
+ };
1284
+
1285
+
1286
+
1287
+
1288
+
1289
+
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1296
+
1297
+ // HP_TET_2EA_0V, // 2 edges connected
1298
+ int reftet_2ea_0v_splitedges[][3] =
1299
+ {
1300
+ { 1, 2, 5 },
1301
+ { 1, 3, 6 },
1302
+ { 1, 4, 7 },
1303
+ { 2, 3, 9 },
1304
+ { 2, 4, 10 },
1305
+ { 3, 2, 12 },
1306
+ { 3, 4, 13 },
1307
+ { 0, 0, 0 }
1308
+ };
1309
+ int reftet_2ea_0v_splitfaces[][4] =
1310
+ {
1311
+ { 1, 2, 3, 17 },
1312
+ { 0, 0, 0, 0 }
1313
+ };
1314
+ HPREF_ELEMENT_TYPE reftet_2ea_0v_newelstypes[] =
1315
+ {
1316
+ HP_PYRAMID_EDGES,
1317
+ HP_PRISM_SINGEDGE,
1318
+ HP_PRISM_SINGEDGE,
1319
+ HP_PRISM,
1320
+ HP_TET,
1321
+ HP_NONE,
1322
+ };
1323
+ int reftet_2ea_0v_newels[][8] =
1324
+ {
1325
+ { 1, 5, 17, 6, 7 },
1326
+ { 5, 17, 7, 2, 9, 10 },
1327
+ { 6, 7, 17, 3, 13, 12 },
1328
+ { 17, 9, 12, 7, 10, 13 },
1329
+ { 7, 10, 13, 4 },
1330
+ };
1331
+ HPRef_Struct reftet_2ea_0v =
1332
+ {
1333
+ HP_TET,
1334
+ reftet_2ea_0v_splitedges,
1335
+ reftet_2ea_0v_splitfaces,
1336
+ 0,
1337
+ reftet_2ea_0v_newelstypes,
1338
+ reftet_2ea_0v_newels
1339
+ };
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+ // HP_TET_2EA_1VA, // 2 edges connected
1347
+ int reftet_2ea_1va_splitedges[][3] =
1348
+ {
1349
+ { 1, 2, 5 },
1350
+ { 1, 3, 6 },
1351
+ { 1, 4, 7 },
1352
+ { 2, 1, 8 },
1353
+ { 2, 3, 9 },
1354
+ { 2, 4, 10 },
1355
+ { 3, 2, 12 },
1356
+ { 3, 4, 13 },
1357
+ { 0, 0, 0 }
1358
+ };
1359
+ int reftet_2ea_1va_splitfaces[][4] =
1360
+ {
1361
+ { 1, 2, 3, 17 },
1362
+ { 0, 0, 0, 0 }
1363
+ };
1364
+ HPREF_ELEMENT_TYPE reftet_2ea_1va_newelstypes[] =
1365
+ {
1366
+ HP_PYRAMID_EDGES,
1367
+ HP_PRISM_SINGEDGE,
1368
+ HP_TET_1E_1VA,
1369
+ HP_PRISM_SINGEDGE,
1370
+ HP_PRISM,
1371
+ HP_TET,
1372
+ HP_NONE,
1373
+ };
1374
+ int reftet_2ea_1va_newels[][8] =
1375
+ {
1376
+ { 1, 5, 17, 6, 7 },
1377
+ { 5, 17, 7, 8, 9, 10 },
1378
+ { 2, 8, 10, 9 },
1379
+ { 6, 7, 17, 3, 13, 12 },
1380
+ { 17, 9, 12, 7, 10, 13 },
1381
+ { 7, 10, 13, 4 },
1382
+ };
1383
+ HPRef_Struct reftet_2ea_1va =
1384
+ {
1385
+ HP_TET,
1386
+ reftet_2ea_1va_splitedges,
1387
+ reftet_2ea_1va_splitfaces,
1388
+ 0,
1389
+ reftet_2ea_1va_newelstypes,
1390
+ reftet_2ea_1va_newels
1391
+ };
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+ // HP_TET_2EA_1VB,
1401
+ int reftet_2ea_1vb_splitedges[][3] =
1402
+ {
1403
+ { 1, 2, 5 },
1404
+ { 1, 3, 6 },
1405
+ { 1, 4, 7 },
1406
+ { 2, 3, 9 },
1407
+ { 2, 4, 10 },
1408
+ { 3, 1, 11 },
1409
+ { 3, 2, 12 },
1410
+ { 3, 4, 13 },
1411
+ { 0, 0, 0 }
1412
+ };
1413
+ int reftet_2ea_1vb_splitfaces[][4] =
1414
+ {
1415
+ { 1, 2, 3, 17 },
1416
+ { 0, 0, 0, 0 }
1417
+ };
1418
+ HPREF_ELEMENT_TYPE reftet_2ea_1vb_newelstypes[] =
1419
+ {
1420
+ HP_PYRAMID_EDGES,
1421
+ HP_TET_1E_1VA,
1422
+ HP_PRISM_SINGEDGE,
1423
+ HP_PRISM_SINGEDGE,
1424
+ HP_PRISM,
1425
+ HP_TET,
1426
+ HP_NONE,
1427
+ };
1428
+ int reftet_2ea_1vb_newels[][8] =
1429
+ {
1430
+ { 1, 5, 17, 6, 7 },
1431
+ { 3, 11, 12, 13 },
1432
+ { 5, 17, 7, 2, 9, 10 },
1433
+ { 6, 7, 17, 11, 13, 12 },
1434
+ { 17, 9, 12, 7, 10, 13 },
1435
+ { 7, 10, 13, 4 },
1436
+ };
1437
+ HPRef_Struct reftet_2ea_1vb =
1438
+ {
1439
+ HP_TET,
1440
+ reftet_2ea_1vb_splitedges,
1441
+ reftet_2ea_1vb_splitfaces,
1442
+ 0,
1443
+ reftet_2ea_1vb_newelstypes,
1444
+ reftet_2ea_1vb_newels
1445
+ };
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+ // HP_TET_2EA_1VC, // 2 edges connected
1453
+ int reftet_2ea_1vc_splitedges[][3] =
1454
+ {
1455
+ { 1, 2, 5 },
1456
+ { 1, 3, 6 },
1457
+ { 1, 4, 7 },
1458
+ // { 2, 1, 8 },
1459
+ { 2, 3, 9 },
1460
+ { 2, 4, 10 },
1461
+ { 3, 1, 11 },
1462
+ { 3, 2, 12 },
1463
+ { 3, 4, 13 },
1464
+ { 4, 1, 14 },
1465
+ { 4, 2, 15 },
1466
+ { 4, 3, 16 },
1467
+ { 0, 0, 0 }
1468
+ };
1469
+ int reftet_2ea_1vc_splitfaces[][4] =
1470
+ {
1471
+ { 1, 2, 3, 17 },
1472
+ { 2, 3, 4, 18 },
1473
+ { 3, 4, 2, 19 },
1474
+ { 4, 2, 3, 20 },
1475
+ { 0, 0, 0, 0 }
1476
+ };
1477
+ int reftet_2ea_1vc_splitelements[][5] =
1478
+ {
1479
+ { 1, 2, 3, 4, 21 },
1480
+ { 0, 0, 0, 0 }
1481
+ };
1482
+ HPREF_ELEMENT_TYPE reftet_2ea_1vc_newelstypes[] =
1483
+ {
1484
+ HP_PYRAMID_EDGES,
1485
+ // HP_TET_1E_1VA,
1486
+ HP_TET_0E_1V,
1487
+ HP_PRISM_SINGEDGE,
1488
+ HP_PRISM_SINGEDGE,
1489
+
1490
+ HP_TET, HP_TET, HP_TET, HP_TET,
1491
+ HP_PYRAMID, HP_PYRAMID, HP_PYRAMID,
1492
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1493
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1494
+ // HP_PRISM,
1495
+ // HP_PRISM,
1496
+ HP_NONE,
1497
+ };
1498
+ int reftet_2ea_1vc_newels[][8] =
1499
+ {
1500
+ { 1, 5, 17, 6, 7 },
1501
+ // { 3, 11, 12, 13 },
1502
+ { 4, 15, 14, 16 },
1503
+ { 5, 17, 7, 2, 9, 10 },
1504
+ { 6, 7, 17, 3, 13, 12 },
1505
+
1506
+ { 9, 10, 18, 21 },
1507
+ { 13, 12, 19, 21 },
1508
+ { 15, 16, 20, 21 },
1509
+ { 18, 20, 19, 21 },
1510
+ { 10, 15, 20, 18, 21 },
1511
+ { 13, 19, 20, 16, 21 },
1512
+ { 9, 18, 19, 12, 21 },
1513
+
1514
+ { 7, 13, 16, 14, 21 },
1515
+ { 7, 14, 15, 10, 21 },
1516
+ { 9, 12, 17, 21 },
1517
+ { 7, 10, 9, 17, 21 },
1518
+ { 7, 17, 12, 13, 21 },
1519
+ { 14, 16, 15, 21 },
1520
+ // { 17, 9, 12, 7, 10, 13 },
1521
+ // { 7, 10, 13, 14, 15, 16 },
1522
+ };
1523
+ HPRef_Struct reftet_2ea_1vc =
1524
+ {
1525
+ HP_TET,
1526
+ reftet_2ea_1vc_splitedges,
1527
+ reftet_2ea_1vc_splitfaces,
1528
+ reftet_2ea_1vc_splitelements,
1529
+ reftet_2ea_1vc_newelstypes,
1530
+ reftet_2ea_1vc_newels
1531
+ };
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+ // HP_TET_2EA_2VA,
1545
+ int reftet_2ea_2va_splitedges[][3] =
1546
+ {
1547
+ { 1, 2, 5 },
1548
+ { 1, 3, 6 },
1549
+ { 1, 4, 7 },
1550
+ { 2, 1, 8 },
1551
+ { 2, 3, 9 },
1552
+ { 2, 4, 10 },
1553
+ { 3, 1, 11 },
1554
+ { 3, 2, 12 },
1555
+ { 3, 4, 13 },
1556
+ { 0, 0, 0 }
1557
+ };
1558
+ int reftet_2ea_2va_splitfaces[][4] =
1559
+ {
1560
+ { 1, 2, 3, 17 },
1561
+ { 0, 0, 0, 0 }
1562
+ };
1563
+ HPREF_ELEMENT_TYPE reftet_2ea_2va_newelstypes[] =
1564
+ {
1565
+ HP_PYRAMID_EDGES,
1566
+ HP_TET_1E_1VA,
1567
+ HP_TET_1E_1VA,
1568
+ HP_PRISM_SINGEDGE,
1569
+ HP_PRISM_SINGEDGE,
1570
+ HP_PRISM,
1571
+ HP_TET,
1572
+ HP_NONE,
1573
+ };
1574
+ int reftet_2ea_2va_newels[][8] =
1575
+ {
1576
+ { 1, 5, 17, 6, 7 },
1577
+ { 3, 11, 12, 13 },
1578
+ { 2, 8, 10, 9 },
1579
+ { 5, 17, 7, 8, 9, 10 },
1580
+ { 6, 7, 17, 11, 13, 12 },
1581
+ { 17, 9, 12, 7, 10, 13 },
1582
+ { 7, 10, 13, 4 },
1583
+ };
1584
+ HPRef_Struct reftet_2ea_2va =
1585
+ {
1586
+ HP_TET,
1587
+ reftet_2ea_2va_splitedges,
1588
+ reftet_2ea_2va_splitfaces,
1589
+ 0,
1590
+ reftet_2ea_2va_newelstypes,
1591
+ reftet_2ea_2va_newels
1592
+ };
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+
1604
+ // HP_TET_2EA_2VB, // 2 edges connected
1605
+ int reftet_2ea_2vb_splitedges[][3] =
1606
+ {
1607
+ { 1, 2, 5 },
1608
+ { 1, 3, 6 },
1609
+ { 1, 4, 7 },
1610
+ { 2, 1, 8 },
1611
+ { 2, 3, 9 },
1612
+ { 2, 4, 10 },
1613
+ // { 3, 1, 11 },
1614
+ { 3, 2, 12 },
1615
+ { 3, 4, 13 },
1616
+ { 4, 1, 14 },
1617
+ { 4, 2, 15 },
1618
+ { 4, 3, 16 },
1619
+ { 0, 0, 0 }
1620
+ };
1621
+ int reftet_2ea_2vb_splitfaces[][4] =
1622
+ {
1623
+ { 1, 2, 3, 17 },
1624
+ { 2, 3, 4, 18 },
1625
+ { 3, 4, 2, 19 },
1626
+ { 4, 2, 3, 20 },
1627
+ { 0, 0, 0, 0 }
1628
+ };
1629
+ int reftet_2ea_2vb_splitelements[][5] =
1630
+ {
1631
+ { 1, 2, 3, 4, 21 },
1632
+ { 0, 0, 0, 0 }
1633
+ };
1634
+ HPREF_ELEMENT_TYPE reftet_2ea_2vb_newelstypes[] =
1635
+ {
1636
+ HP_PYRAMID_EDGES,
1637
+ HP_TET_1E_1VA,
1638
+ // HP_TET_1E_1VA,
1639
+ HP_TET_0E_1V,
1640
+ HP_PRISM_SINGEDGE,
1641
+ HP_PRISM_SINGEDGE,
1642
+
1643
+ HP_TET, HP_TET, HP_TET, HP_TET,
1644
+ HP_PYRAMID, HP_PYRAMID, HP_PYRAMID,
1645
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1646
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1647
+ // HP_PRISM,
1648
+ // HP_PRISM,
1649
+ HP_NONE,
1650
+ };
1651
+ int reftet_2ea_2vb_newels[][8] =
1652
+ {
1653
+ { 1, 5, 17, 6, 7 },
1654
+ { 2, 8, 10, 9 },
1655
+ // { 3, 11, 12, 13 },
1656
+ { 4, 15, 14, 16 },
1657
+ { 5, 17, 7, 8, 9, 10 },
1658
+ { 6, 7, 17, 3, 13, 12 },
1659
+
1660
+ { 9, 10, 18, 21 },
1661
+ { 13, 12, 19, 21 },
1662
+ { 15, 16, 20, 21 },
1663
+ { 18, 20, 19, 21 },
1664
+ { 10, 15, 20, 18, 21 },
1665
+ { 13, 19, 20, 16, 21 },
1666
+ { 9, 18, 19, 12, 21 },
1667
+
1668
+ { 7, 13, 16, 14, 21 },
1669
+ { 7, 14, 15, 10, 21 },
1670
+ { 9, 12, 17, 21 },
1671
+ { 7, 10, 9, 17, 21 },
1672
+ { 7, 17, 12, 13, 21 },
1673
+ { 14, 16, 15, 21 },
1674
+ // { 17, 9, 12, 7, 10, 13 },
1675
+ // { 7, 10, 13, 14, 15, 16 },
1676
+ };
1677
+ HPRef_Struct reftet_2ea_2vb =
1678
+ {
1679
+ HP_TET,
1680
+ reftet_2ea_2vb_splitedges,
1681
+ reftet_2ea_2vb_splitfaces,
1682
+ reftet_2ea_2vb_splitelements,
1683
+ reftet_2ea_2vb_newelstypes,
1684
+ reftet_2ea_2vb_newels
1685
+ };
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+
1696
+ // HP_TET_2EA_2VC, // 2 edges connected
1697
+ int reftet_2ea_2vc_splitedges[][3] =
1698
+ {
1699
+ { 1, 2, 5 },
1700
+ { 1, 3, 6 },
1701
+ { 1, 4, 7 },
1702
+ // { 2, 1, 8 },
1703
+ { 2, 3, 9 },
1704
+ { 2, 4, 10 },
1705
+ { 3, 1, 11 },
1706
+ { 3, 2, 12 },
1707
+ { 3, 4, 13 },
1708
+ { 4, 1, 14 },
1709
+ { 4, 2, 15 },
1710
+ { 4, 3, 16 },
1711
+ { 0, 0, 0 }
1712
+ };
1713
+ int reftet_2ea_2vc_splitfaces[][4] =
1714
+ {
1715
+ { 1, 2, 3, 17 },
1716
+ { 2, 3, 4, 18 },
1717
+ { 3, 4, 2, 19 },
1718
+ { 4, 2, 3, 20 },
1719
+ { 0, 0, 0, 0 }
1720
+ };
1721
+ int reftet_2ea_2vc_splitelements[][5] =
1722
+ {
1723
+ { 1, 2, 3, 4, 21 },
1724
+ { 0, 0, 0, 0 }
1725
+ };
1726
+ HPREF_ELEMENT_TYPE reftet_2ea_2vc_newelstypes[] =
1727
+ {
1728
+ HP_PYRAMID_EDGES,
1729
+ HP_TET_1E_1VA,
1730
+ // HP_TET_1E_1VA,
1731
+ HP_TET_0E_1V,
1732
+ HP_PRISM_SINGEDGE,
1733
+ HP_PRISM_SINGEDGE,
1734
+
1735
+ HP_TET, HP_TET, HP_TET, HP_TET,
1736
+ HP_PYRAMID, HP_PYRAMID, HP_PYRAMID,
1737
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1738
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1739
+ // HP_PRISM,
1740
+ // HP_PRISM,
1741
+ HP_NONE,
1742
+ };
1743
+ int reftet_2ea_2vc_newels[][8] =
1744
+ {
1745
+ { 1, 5, 17, 6, 7 },
1746
+ // { 2, 8, 10, 9 },
1747
+ { 3, 11, 12, 13 },
1748
+ { 4, 15, 14, 16 },
1749
+ { 5, 17, 7, 2, 9, 10 },
1750
+ { 6, 7, 17, 11, 13, 12 },
1751
+
1752
+ { 9, 10, 18, 21 },
1753
+ { 13, 12, 19, 21 },
1754
+ { 15, 16, 20, 21 },
1755
+ { 18, 20, 19, 21 },
1756
+ { 10, 15, 20, 18, 21 },
1757
+ { 13, 19, 20, 16, 21 },
1758
+ { 9, 18, 19, 12, 21 },
1759
+
1760
+ { 7, 13, 16, 14, 21 },
1761
+ { 7, 14, 15, 10, 21 },
1762
+ { 9, 12, 17, 21 },
1763
+ { 7, 10, 9, 17, 21 },
1764
+ { 7, 17, 12, 13, 21 },
1765
+ { 14, 16, 15, 21 },
1766
+ // { 17, 9, 12, 7, 10, 13 },
1767
+ // { 7, 10, 13, 14, 15, 16 },
1768
+ };
1769
+ HPRef_Struct reftet_2ea_2vc =
1770
+ {
1771
+ HP_TET,
1772
+ reftet_2ea_2vc_splitedges,
1773
+ reftet_2ea_2vc_splitfaces,
1774
+ reftet_2ea_2vc_splitelements,
1775
+ reftet_2ea_2vc_newelstypes,
1776
+ reftet_2ea_2vc_newels
1777
+ };
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+ // HP_TET_2EA_3V, // 2 edges connected
1787
+ int reftet_2ea_3v_splitedges[][3] =
1788
+ {
1789
+ { 1, 2, 5 },
1790
+ { 1, 3, 6 },
1791
+ { 1, 4, 7 },
1792
+ { 2, 1, 8 },
1793
+ { 2, 3, 9 },
1794
+ { 2, 4, 10 },
1795
+ { 3, 1, 11 },
1796
+ { 3, 2, 12 },
1797
+ { 3, 4, 13 },
1798
+ { 4, 1, 14 },
1799
+ { 4, 2, 15 },
1800
+ { 4, 3, 16 },
1801
+ { 0, 0, 0 }
1802
+ };
1803
+ int reftet_2ea_3v_splitfaces[][4] =
1804
+ {
1805
+ { 1, 2, 3, 17 },
1806
+ { 2, 3, 4, 18 },
1807
+ { 3, 4, 2, 19 },
1808
+ { 4, 2, 3, 20 },
1809
+ { 0, 0, 0, 0 }
1810
+ };
1811
+ int reftet_2ea_3v_splitelements[][5] =
1812
+ {
1813
+ { 1, 2, 3, 4, 21 },
1814
+ { 0, 0, 0, 0 }
1815
+ };
1816
+ HPREF_ELEMENT_TYPE reftet_2ea_3v_newelstypes[] =
1817
+ {
1818
+ HP_PYRAMID_EDGES,
1819
+ HP_TET_1E_1VA,
1820
+ HP_TET_1E_1VA,
1821
+ HP_TET_0E_1V,
1822
+ HP_PRISM_SINGEDGE,
1823
+ HP_PRISM_SINGEDGE,
1824
+
1825
+ HP_TET, HP_TET, HP_TET, HP_TET,
1826
+ HP_PYRAMID, HP_PYRAMID, HP_PYRAMID,
1827
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1828
+ HP_PYRAMID, HP_PYRAMID, HP_TET,
1829
+ // HP_PRISM,
1830
+ // HP_PRISM,
1831
+ HP_NONE,
1832
+ };
1833
+ int reftet_2ea_3v_newels[][8] =
1834
+ {
1835
+ { 1, 5, 17, 6, 7 },
1836
+ { 2, 8, 10, 9 },
1837
+ { 3, 11, 12, 13 },
1838
+ { 4, 15, 14, 16 },
1839
+ { 5, 17, 7, 8, 9, 10 },
1840
+ { 6, 7, 17, 11, 13, 12 },
1841
+
1842
+ { 9, 10, 18, 21 },
1843
+ { 13, 12, 19, 21 },
1844
+ { 15, 16, 20, 21 },
1845
+ { 18, 20, 19, 21 },
1846
+ { 10, 15, 20, 18, 21 },
1847
+ { 13, 19, 20, 16, 21 },
1848
+ { 9, 18, 19, 12, 21 },
1849
+
1850
+ { 7, 13, 16, 14, 21 },
1851
+ { 7, 14, 15, 10, 21 },
1852
+ { 9, 12, 17, 21 },
1853
+ { 7, 10, 9, 17, 21 },
1854
+ { 7, 17, 12, 13, 21 },
1855
+ { 14, 16, 15, 21 },
1856
+ // { 17, 9, 12, 7, 10, 13 },
1857
+ // { 7, 10, 13, 14, 15, 16 },
1858
+ };
1859
+ HPRef_Struct reftet_2ea_3v =
1860
+ {
1861
+ HP_TET,
1862
+ reftet_2ea_3v_splitedges,
1863
+ reftet_2ea_3v_splitfaces,
1864
+ reftet_2ea_3v_splitelements,
1865
+ reftet_2ea_3v_newelstypes,
1866
+ reftet_2ea_3v_newels
1867
+ };
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+ // HP_TET_2EB_0V, // 2 opposite edges
1876
+ int reftet_2eb_0v_splitedges[][3] =
1877
+ {
1878
+ { 1, 3, 5 },
1879
+ { 1, 4, 6 },
1880
+ { 2, 3, 7 },
1881
+ { 2, 4, 8 },
1882
+ { 3, 1, 9 },
1883
+ { 3, 2, 10 },
1884
+ { 4, 1, 11 },
1885
+ { 4, 2, 12 },
1886
+ { 0, 0, 0 }
1887
+ };
1888
+
1889
+ HPREF_ELEMENT_TYPE reftet_2eb_0v_newelstypes[] =
1890
+ {
1891
+ HP_PRISM_SINGEDGE,
1892
+ HP_PRISM_SINGEDGE,
1893
+ HP_HEX,
1894
+ HP_NONE,
1895
+ };
1896
+ int reftet_2eb_0v_newels[][8] =
1897
+ {
1898
+ { 1, 5, 6, 2, 7, 8 },
1899
+ { 3, 9, 10, 4, 11, 12 },
1900
+ { 6, 11, 12, 8, 5, 9, 10, 7 },
1901
+ };
1902
+ HPRef_Struct reftet_2eb_0v =
1903
+ {
1904
+ HP_TET,
1905
+ reftet_2eb_0v_splitedges,
1906
+ 0, 0,
1907
+ reftet_2eb_0v_newelstypes,
1908
+ reftet_2eb_0v_newels
1909
+ };
1910
+
1911
+
1912
+ // HP_TET_2EB_1V, // V1
1913
+
1914
+
1915
+ // HP_TET_2EB_1V, // 2 opposite edges, V1
1916
+ int reftet_2eb_1v_splitedges[][3] =
1917
+ {
1918
+ { 1, 2, 5 },
1919
+ { 1, 3, 6 },
1920
+ { 1, 4, 7 },
1921
+ { 2, 1, 8 },
1922
+ { 2, 3, 9 },
1923
+ { 2, 4, 10 },
1924
+ { 3, 1, 11 },
1925
+ { 3, 2, 12 },
1926
+ { 3, 4, 13 },
1927
+ { 4, 1, 14 },
1928
+ { 4, 2, 15 },
1929
+ { 4, 3, 16 },
1930
+ { 0, 0, 0 }
1931
+ };
1932
+
1933
+ HPREF_ELEMENT_TYPE reftet_2eb_1v_newelstypes[] =
1934
+ {
1935
+ HP_PRISM_SINGEDGE,
1936
+ HP_PRISM_SINGEDGE,
1937
+ HP_TET_1E_1VA,
1938
+ // HP_TET_1E_1VA,
1939
+ // HP_TET_1E_1VA,
1940
+ // HP_TET_1E_1VA,
1941
+ HP_HEX,
1942
+ HP_NONE,
1943
+ };
1944
+ int reftet_2eb_1v_newels[][8] =
1945
+ {
1946
+ { 5, 6, 7, 2, 9, 10 },
1947
+ { 4, 15, 14, 3, 12, 11 },
1948
+ { 1, 5, 6, 7 },
1949
+ // { 2, 8, 10, 9 },
1950
+ // { 3, 13, 11, 12 },
1951
+ // { 4, 16, 15, 14 },
1952
+ { 7, 14, 15, 10, 6, 11, 12, 9 }
1953
+ };
1954
+ HPRef_Struct reftet_2eb_1v =
1955
+ {
1956
+ HP_TET,
1957
+ reftet_2eb_1v_splitedges,
1958
+ 0, 0,
1959
+ reftet_2eb_1v_newelstypes,
1960
+ reftet_2eb_1v_newels
1961
+ };
1962
+
1963
+
1964
+
1965
+ // HP_TET_2EB_2VA, // 2 opposite edges, V1,2
1966
+ int reftet_2eb_2va_splitedges[][3] =
1967
+ {
1968
+ { 1, 2, 5 },
1969
+ { 1, 3, 6 },
1970
+ { 1, 4, 7 },
1971
+ { 2, 1, 8 },
1972
+ { 2, 3, 9 },
1973
+ { 2, 4, 10 },
1974
+ { 3, 1, 11 },
1975
+ { 3, 2, 12 },
1976
+ { 3, 4, 13 },
1977
+ { 4, 1, 14 },
1978
+ { 4, 2, 15 },
1979
+ { 4, 3, 16 },
1980
+ { 0, 0, 0 }
1981
+ };
1982
+
1983
+ HPREF_ELEMENT_TYPE reftet_2eb_2va_newelstypes[] =
1984
+ {
1985
+ HP_PRISM_SINGEDGE,
1986
+ HP_PRISM_SINGEDGE,
1987
+ HP_TET_1E_1VA,
1988
+ HP_TET_1E_1VA,
1989
+ // HP_TET_1E_1VA,
1990
+ // HP_TET_1E_1VA,
1991
+ HP_HEX,
1992
+ HP_NONE,
1993
+ };
1994
+ int reftet_2eb_2va_newels[][8] =
1995
+ {
1996
+ { 5, 6, 7, 8, 9, 10 },
1997
+ { 4, 15, 14, 3, 12, 11 },
1998
+ { 1, 5, 6, 7 },
1999
+ { 2, 8, 10, 9 },
2000
+ // { 3, 13, 11, 12 },
2001
+ // { 4, 16, 15, 14 },
2002
+ { 7, 14, 15, 10, 6, 11, 12, 9 }
2003
+ };
2004
+ HPRef_Struct reftet_2eb_2va =
2005
+ {
2006
+ HP_TET,
2007
+ reftet_2eb_2va_splitedges,
2008
+ 0, 0,
2009
+ reftet_2eb_2va_newelstypes,
2010
+ reftet_2eb_2va_newels
2011
+ };
2012
+
2013
+
2014
+ // HP_TET_2EB_2VB, // V1,3
2015
+ int reftet_2eb_2vb_splitedges[][3] =
2016
+ {
2017
+ { 1, 2, 5 },
2018
+ { 1, 3, 6 },
2019
+ { 1, 4, 7 },
2020
+ { 2, 1, 8 },
2021
+ { 2, 3, 9 },
2022
+ { 2, 4, 10 },
2023
+ { 3, 1, 11 },
2024
+ { 3, 2, 12 },
2025
+ { 3, 4, 13 },
2026
+ { 4, 1, 14 },
2027
+ { 4, 2, 15 },
2028
+ { 4, 3, 16 },
2029
+ { 0, 0, 0 }
2030
+ };
2031
+
2032
+ HPREF_ELEMENT_TYPE reftet_2eb_2vb_newelstypes[] =
2033
+ {
2034
+ HP_PRISM_SINGEDGE,
2035
+ HP_PRISM_SINGEDGE,
2036
+ HP_TET_1E_1VA,
2037
+ // HP_TET_1E_1VA,
2038
+ HP_TET_1E_1VA,
2039
+ // HP_TET_1E_1VA,
2040
+ HP_HEX,
2041
+ HP_NONE,
2042
+ };
2043
+ int reftet_2eb_2vb_newels[][8] =
2044
+ {
2045
+ { 5, 6, 7, 2, 9, 10 },
2046
+ { 4, 15, 14, 13, 12, 11 },
2047
+ { 1, 5, 6, 7 },
2048
+ // { 2, 8, 10, 9 },
2049
+ { 3, 13, 11, 12 },
2050
+ // { 4, 16, 15, 14 },
2051
+ { 7, 14, 15, 10, 6, 11, 12, 9 }
2052
+ };
2053
+ HPRef_Struct reftet_2eb_2vb =
2054
+ {
2055
+ HP_TET,
2056
+ reftet_2eb_2vb_splitedges,
2057
+ 0, 0,
2058
+ reftet_2eb_2vb_newelstypes,
2059
+ reftet_2eb_2vb_newels
2060
+ };
2061
+
2062
+
2063
+
2064
+
2065
+ // HP_TET_2EB_2VC, // V1,4
2066
+ int reftet_2eb_2vc_splitedges[][3] =
2067
+ {
2068
+ { 1, 2, 5 },
2069
+ { 1, 3, 6 },
2070
+ { 1, 4, 7 },
2071
+ { 2, 1, 8 },
2072
+ { 2, 3, 9 },
2073
+ { 2, 4, 10 },
2074
+ { 3, 1, 11 },
2075
+ { 3, 2, 12 },
2076
+ { 3, 4, 13 },
2077
+ { 4, 1, 14 },
2078
+ { 4, 2, 15 },
2079
+ { 4, 3, 16 },
2080
+ { 0, 0, 0 }
2081
+ };
2082
+
2083
+ HPREF_ELEMENT_TYPE reftet_2eb_2vc_newelstypes[] =
2084
+ {
2085
+ HP_PRISM_SINGEDGE,
2086
+ HP_PRISM_SINGEDGE,
2087
+ HP_TET_1E_1VA,
2088
+ // HP_TET_1E_1VA,
2089
+ // HP_TET_1E_1VA,
2090
+ HP_TET_1E_1VA,
2091
+ HP_HEX,
2092
+ HP_NONE,
2093
+ };
2094
+ int reftet_2eb_2vc_newels[][8] =
2095
+ {
2096
+ { 5, 6, 7, 2, 9, 10 },
2097
+ { 16, 15, 14, 3, 12, 11 },
2098
+ { 1, 5, 6, 7 },
2099
+ // { 2, 8, 10, 9 },
2100
+ // { 3, 13, 11, 12 },
2101
+ { 4, 16, 15, 14 },
2102
+ { 7, 14, 15, 10, 6, 11, 12, 9 }
2103
+ };
2104
+ HPRef_Struct reftet_2eb_2vc =
2105
+ {
2106
+ HP_TET,
2107
+ reftet_2eb_2vc_splitedges,
2108
+ 0, 0,
2109
+ reftet_2eb_2vc_newelstypes,
2110
+ reftet_2eb_2vc_newels
2111
+ };
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+ // HP_TET_2EB_3V, // V1,2,3
2119
+ int reftet_2eb_3v_splitedges[][3] =
2120
+ {
2121
+ { 1, 2, 5 },
2122
+ { 1, 3, 6 },
2123
+ { 1, 4, 7 },
2124
+ { 2, 1, 8 },
2125
+ { 2, 3, 9 },
2126
+ { 2, 4, 10 },
2127
+ { 3, 1, 11 },
2128
+ { 3, 2, 12 },
2129
+ { 3, 4, 13 },
2130
+ { 4, 1, 14 },
2131
+ { 4, 2, 15 },
2132
+ { 4, 3, 16 },
2133
+ { 0, 0, 0 }
2134
+ };
2135
+
2136
+ HPREF_ELEMENT_TYPE reftet_2eb_3v_newelstypes[] =
2137
+ {
2138
+ HP_PRISM_SINGEDGE,
2139
+ HP_PRISM_SINGEDGE,
2140
+ HP_TET_1E_1VA,
2141
+ HP_TET_1E_1VA,
2142
+ HP_TET_1E_1VA,
2143
+ // HP_TET_1E_1VA,
2144
+ HP_HEX,
2145
+ HP_NONE,
2146
+ };
2147
+ int reftet_2eb_3v_newels[][8] =
2148
+ {
2149
+ { 5, 6, 7, 8, 9, 10 },
2150
+ { 4, 15, 14, 13, 12, 11 },
2151
+ { 1, 5, 6, 7 },
2152
+ { 2, 8, 10, 9 },
2153
+ { 3, 13, 11, 12 },
2154
+ // { 4, 16, 15, 14 },
2155
+ { 7, 14, 15, 10, 6, 11, 12, 9 }
2156
+ };
2157
+ HPRef_Struct reftet_2eb_3v =
2158
+ {
2159
+ HP_TET,
2160
+ reftet_2eb_3v_splitedges,
2161
+ 0, 0,
2162
+ reftet_2eb_3v_newelstypes,
2163
+ reftet_2eb_3v_newels
2164
+ };
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+ // HP_TET_2EB_4V, // 2 opposite edges
2172
+ int reftet_2eb_4v_splitedges[][3] =
2173
+ {
2174
+ { 1, 2, 5 },
2175
+ { 1, 3, 6 },
2176
+ { 1, 4, 7 },
2177
+ { 2, 1, 8 },
2178
+ { 2, 3, 9 },
2179
+ { 2, 4, 10 },
2180
+ { 3, 1, 11 },
2181
+ { 3, 2, 12 },
2182
+ { 3, 4, 13 },
2183
+ { 4, 1, 14 },
2184
+ { 4, 2, 15 },
2185
+ { 4, 3, 16 },
2186
+ { 0, 0, 0 }
2187
+ };
2188
+
2189
+ HPREF_ELEMENT_TYPE reftet_2eb_4v_newelstypes[] =
2190
+ {
2191
+ HP_PRISM_SINGEDGE,
2192
+ HP_PRISM_SINGEDGE,
2193
+ HP_TET_1E_1VA,
2194
+ HP_TET_1E_1VA,
2195
+ HP_TET_1E_1VA,
2196
+ HP_TET_1E_1VA,
2197
+ HP_HEX,
2198
+ HP_NONE,
2199
+ };
2200
+ int reftet_2eb_4v_newels[][8] =
2201
+ {
2202
+ { 5, 6, 7, 8, 9, 10 },
2203
+ { 16, 15, 14, 13, 12, 11 },
2204
+ { 1, 5, 6, 7 },
2205
+ { 2, 8, 10, 9 },
2206
+ { 3, 13, 11, 12 },
2207
+ { 4, 16, 15, 14 },
2208
+ { 7, 14, 15, 10, 6, 11, 12, 9 }
2209
+ };
2210
+ HPRef_Struct reftet_2eb_4v =
2211
+ {
2212
+ HP_TET,
2213
+ reftet_2eb_4v_splitedges,
2214
+ 0, 0,
2215
+ reftet_2eb_4v_newelstypes,
2216
+ reftet_2eb_4v_newels
2217
+ };
2218
+
2219
+
2220
+
2221
+
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+
2230
+
2231
+
2232
+
2233
+
2234
+
2235
+ // HP_TET_3EA_0V,
2236
+ int reftet_3ea_0v_splitedges[][3] =
2237
+ {
2238
+ { 1, 2, 5 },
2239
+ { 1, 3, 6 },
2240
+ { 1, 4, 7 },
2241
+ { 2, 3, 8 },
2242
+ { 2, 4, 9 },
2243
+ { 3, 2, 10 },
2244
+ { 3, 4, 11 },
2245
+ { 4, 2, 12 },
2246
+ { 4, 3, 13 },
2247
+ { 0, 0, 0 }
2248
+ };
2249
+ int reftet_3ea_0v_splitfaces[][4] =
2250
+ {
2251
+ { 1, 2, 3, 14 },
2252
+ { 1, 2, 4, 15 },
2253
+ { 1, 3, 4, 16 },
2254
+ { 2, 3, 4, 17 },
2255
+ { 3, 4, 2, 18 },
2256
+ { 4, 2, 3, 19 },
2257
+ { 0, 0, 0, 0 }
2258
+ };
2259
+ int reftet_3ea_0v_splitelements[][5] =
2260
+ {
2261
+ { 1, 2, 3, 4, 20 },
2262
+ { 0 },
2263
+ };
2264
+
2265
+ HPREF_ELEMENT_TYPE reftet_3ea_0v_newelstypes[] =
2266
+ {
2267
+ HP_HEX_3E_0V,
2268
+ HP_HEX_1E_0V,
2269
+ HP_HEX_1E_0V,
2270
+ HP_HEX_1E_0V,
2271
+ HP_PRISM,
2272
+ HP_PRISM,
2273
+ HP_PRISM,
2274
+ HP_TET,
2275
+ HP_NONE,
2276
+ };
2277
+ int reftet_3ea_0v_newels[][8] =
2278
+ {
2279
+ { 1, 5, 14, 6, 7, 15, 20, 16 },
2280
+ { 5, 2, 8, 14, 15, 9, 17, 20 },
2281
+ { 3, 6, 14, 10, 11, 16, 20, 18 },
2282
+ { 7, 4, 12, 15, 16, 13, 19, 20 },
2283
+ { 11, 13, 16, 18, 19, 20 },
2284
+ { 15, 12, 9, 20, 19, 17 },
2285
+ { 8, 10, 14, 17, 18, 20 },
2286
+ { 20, 17, 18, 19 },
2287
+ };
2288
+ HPRef_Struct reftet_3ea_0v =
2289
+ {
2290
+ HP_TET,
2291
+ reftet_3ea_0v_splitedges,
2292
+ reftet_3ea_0v_splitfaces,
2293
+ reftet_3ea_0v_splitelements,
2294
+ reftet_3ea_0v_newelstypes,
2295
+ reftet_3ea_0v_newels
2296
+ };
2297
+
2298
+
2299
+
2300
+
2301
+
2302
+
2303
+
2304
+
2305
+
2306
+
2307
+ // HP_TET_3EA_1V,
2308
+ int reftet_3ea_1v_splitedges[][3] =
2309
+ {
2310
+ { 1, 2, 5 },
2311
+ { 1, 3, 6 },
2312
+ { 1, 4, 7 },
2313
+ { 2, 3, 8 },
2314
+ { 2, 4, 9 },
2315
+ { 3, 2, 10 },
2316
+ { 3, 4, 11 },
2317
+ { 4, 2, 12 },
2318
+ { 4, 3, 13 },
2319
+ { 2, 1, 21 },
2320
+ { 3, 1, 22 },
2321
+ { 4, 1, 23 },
2322
+ { 0, 0, 0 }
2323
+ };
2324
+ int reftet_3ea_1v_splitfaces[][4] =
2325
+ {
2326
+ { 1, 2, 3, 14 },
2327
+ { 1, 2, 4, 15 },
2328
+ { 1, 3, 4, 16 },
2329
+ { 2, 3, 4, 17 },
2330
+ { 3, 4, 2, 18 },
2331
+ { 4, 2, 3, 19 },
2332
+ { 0, 0, 0, 0 }
2333
+ };
2334
+ int reftet_3ea_1v_splitelements[][5] =
2335
+ {
2336
+ { 1, 2, 3, 4, 20 },
2337
+ { 0 },
2338
+ };
2339
+
2340
+ HPREF_ELEMENT_TYPE reftet_3ea_1v_newelstypes[] =
2341
+ {
2342
+ HP_HEX_3E_0V,
2343
+ HP_TET_1E_1VA,
2344
+ HP_PRISM_SINGEDGE,
2345
+ HP_PRISM,
2346
+ // HP_TET_1E_1VA,
2347
+ HP_PRISM_SINGEDGE,
2348
+ HP_PRISM,
2349
+ // HP_TET_1E_1VA,
2350
+ HP_PRISM_SINGEDGE,
2351
+ HP_PRISM,
2352
+
2353
+ HP_PRISM,
2354
+ HP_PRISM,
2355
+ HP_PRISM,
2356
+ HP_TET,
2357
+ HP_NONE,
2358
+ };
2359
+ int reftet_3ea_1v_newels[][8] =
2360
+ {
2361
+ { 1, 5, 14, 6, 7, 15, 20, 16 },
2362
+
2363
+ { 2, 21, 9, 8 },
2364
+ { 5, 14, 15, 21, 8, 9 },
2365
+ { 15, 14, 20, 9, 8, 17 },
2366
+ // { 3, 22, 10, 11 },
2367
+ // { 6, 16, 14, 22, 11, 10 },
2368
+ { 6, 16, 14, 3, 11, 10 },
2369
+ { 14, 16, 20, 10, 11, 18 },
2370
+ // { 4, 23, 13, 12 },
2371
+ // { 7, 15, 16, 23, 12, 13 },
2372
+ { 7, 15, 16, 4, 12, 13 },
2373
+ { 16, 15, 20, 13, 12, 19 },
2374
+
2375
+ { 11, 13, 16, 18, 19, 20 },
2376
+ { 15, 12, 9, 20, 19, 17 },
2377
+ { 8, 10, 14, 17, 18, 20 },
2378
+ { 20, 17, 18, 19 },
2379
+ };
2380
+ HPRef_Struct reftet_3ea_1v =
2381
+ {
2382
+ HP_TET,
2383
+ reftet_3ea_1v_splitedges,
2384
+ reftet_3ea_1v_splitfaces,
2385
+ reftet_3ea_1v_splitelements,
2386
+ reftet_3ea_1v_newelstypes,
2387
+ reftet_3ea_1v_newels
2388
+ };
2389
+
2390
+
2391
+
2392
+
2393
+
2394
+
2395
+
2396
+
2397
+
2398
+
2399
+ // HP_TET_3EA_2V,
2400
+ int reftet_3ea_2v_splitedges[][3] =
2401
+ {
2402
+ { 1, 2, 5 },
2403
+ { 1, 3, 6 },
2404
+ { 1, 4, 7 },
2405
+ { 2, 3, 8 },
2406
+ { 2, 4, 9 },
2407
+ { 3, 2, 10 },
2408
+ { 3, 4, 11 },
2409
+ { 4, 2, 12 },
2410
+ { 4, 3, 13 },
2411
+ { 2, 1, 21 },
2412
+ { 3, 1, 22 },
2413
+ { 4, 1, 23 },
2414
+ { 0, 0, 0 }
2415
+ };
2416
+ int reftet_3ea_2v_splitfaces[][4] =
2417
+ {
2418
+ { 1, 2, 3, 14 },
2419
+ { 1, 2, 4, 15 },
2420
+ { 1, 3, 4, 16 },
2421
+ { 2, 3, 4, 17 },
2422
+ { 3, 4, 2, 18 },
2423
+ { 4, 2, 3, 19 },
2424
+ { 0, 0, 0, 0 }
2425
+ };
2426
+ int reftet_3ea_2v_splitelements[][5] =
2427
+ {
2428
+ { 1, 2, 3, 4, 20 },
2429
+ { 0 },
2430
+ };
2431
+
2432
+ HPREF_ELEMENT_TYPE reftet_3ea_2v_newelstypes[] =
2433
+ {
2434
+ HP_HEX_3E_0V,
2435
+ HP_TET_1E_1VA,
2436
+ HP_PRISM_SINGEDGE,
2437
+ HP_PRISM,
2438
+ HP_TET_1E_1VA,
2439
+ HP_PRISM_SINGEDGE,
2440
+ HP_PRISM,
2441
+ // HP_TET_1E_1VA,
2442
+ HP_PRISM_SINGEDGE,
2443
+ HP_PRISM,
2444
+
2445
+ HP_PRISM,
2446
+ HP_PRISM,
2447
+ HP_PRISM,
2448
+ HP_TET,
2449
+ HP_NONE,
2450
+ };
2451
+ int reftet_3ea_2v_newels[][8] =
2452
+ {
2453
+ { 1, 5, 14, 6, 7, 15, 20, 16 },
2454
+
2455
+ { 2, 21, 9, 8 },
2456
+ { 5, 14, 15, 21, 8, 9 },
2457
+ { 15, 14, 20, 9, 8, 17 },
2458
+ { 3, 22, 10, 11 },
2459
+ { 6, 16, 14, 22, 11, 10 },
2460
+ { 14, 16, 20, 10, 11, 18 },
2461
+ // { 4, 23, 13, 12 },
2462
+ { 7, 15, 16, 4, 12, 13 },
2463
+ { 16, 15, 20, 13, 12, 19 },
2464
+
2465
+ { 11, 13, 16, 18, 19, 20 },
2466
+ { 15, 12, 9, 20, 19, 17 },
2467
+ { 8, 10, 14, 17, 18, 20 },
2468
+ { 20, 17, 18, 19 },
2469
+ };
2470
+ HPRef_Struct reftet_3ea_2v =
2471
+ {
2472
+ HP_TET,
2473
+ reftet_3ea_2v_splitedges,
2474
+ reftet_3ea_2v_splitfaces,
2475
+ reftet_3ea_2v_splitelements,
2476
+ reftet_3ea_2v_newelstypes,
2477
+ reftet_3ea_2v_newels
2478
+ };
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2486
+
2487
+ // HP_TET_3EA_3V,
2488
+ int reftet_3ea_3v_splitedges[][3] =
2489
+ {
2490
+ { 1, 2, 5 },
2491
+ { 1, 3, 6 },
2492
+ { 1, 4, 7 },
2493
+ { 2, 3, 8 },
2494
+ { 2, 4, 9 },
2495
+ { 3, 2, 10 },
2496
+ { 3, 4, 11 },
2497
+ { 4, 2, 12 },
2498
+ { 4, 3, 13 },
2499
+ { 2, 1, 21 },
2500
+ { 3, 1, 22 },
2501
+ { 4, 1, 23 },
2502
+ { 0, 0, 0 }
2503
+ };
2504
+ int reftet_3ea_3v_splitfaces[][4] =
2505
+ {
2506
+ { 1, 2, 3, 14 },
2507
+ { 1, 2, 4, 15 },
2508
+ { 1, 3, 4, 16 },
2509
+ { 2, 3, 4, 17 },
2510
+ { 3, 4, 2, 18 },
2511
+ { 4, 2, 3, 19 },
2512
+ { 0, 0, 0, 0 }
2513
+ };
2514
+ int reftet_3ea_3v_splitelements[][5] =
2515
+ {
2516
+ { 1, 2, 3, 4, 20 },
2517
+ { 0 },
2518
+ };
2519
+
2520
+ HPREF_ELEMENT_TYPE reftet_3ea_3v_newelstypes[] =
2521
+ {
2522
+ HP_HEX_3E_0V,
2523
+ HP_TET_1E_1VA,
2524
+ HP_PRISM_SINGEDGE,
2525
+ HP_PRISM,
2526
+ HP_TET_1E_1VA,
2527
+ HP_PRISM_SINGEDGE,
2528
+ HP_PRISM,
2529
+ HP_TET_1E_1VA,
2530
+ HP_PRISM_SINGEDGE,
2531
+ HP_PRISM,
2532
+
2533
+ HP_PRISM,
2534
+ HP_PRISM,
2535
+ HP_PRISM,
2536
+ HP_TET,
2537
+ HP_NONE,
2538
+ };
2539
+ int reftet_3ea_3v_newels[][8] =
2540
+ {
2541
+ { 1, 5, 14, 6, 7, 15, 20, 16 },
2542
+
2543
+ { 2, 21, 9, 8 },
2544
+ { 5, 14, 15, 21, 8, 9 },
2545
+ { 15, 14, 20, 9, 8, 17 },
2546
+ { 3, 22, 10, 11 },
2547
+ { 6, 16, 14, 22, 11, 10 },
2548
+ { 14, 16, 20, 10, 11, 18 },
2549
+ { 4, 23, 13, 12 },
2550
+ { 7, 15, 16, 23, 12, 13 },
2551
+ { 16, 15, 20, 13, 12, 19 },
2552
+
2553
+ { 11, 13, 16, 18, 19, 20 },
2554
+ { 15, 12, 9, 20, 19, 17 },
2555
+ { 8, 10, 14, 17, 18, 20 },
2556
+ { 20, 17, 18, 19 },
2557
+ };
2558
+ HPRef_Struct reftet_3ea_3v =
2559
+ {
2560
+ HP_TET,
2561
+ reftet_3ea_3v_splitedges,
2562
+ reftet_3ea_3v_splitfaces,
2563
+ reftet_3ea_3v_splitelements,
2564
+ reftet_3ea_3v_newelstypes,
2565
+ reftet_3ea_3v_newels
2566
+ };
2567
+
2568
+
2569
+
2570
+
2571
+
2572
+
2573
+
2574
+ // HP_TET_3EV_0V,
2575
+ int reftet_3eb_0v_splitedges[][3] =
2576
+ {
2577
+ { 1, 2, 5 },
2578
+ { 1, 3, 6 },
2579
+ { 1, 4, 7 },
2580
+ { 2, 1, 8 },
2581
+ { 2, 3, 9 },
2582
+ { 2, 4, 10 },
2583
+ { 3, 1, 11 },
2584
+ // { 3, 2, 12 },
2585
+ { 3, 4, 13 },
2586
+ // { 4, 1, 14 },
2587
+ { 4, 2, 15 },
2588
+ { 4, 3, 16 },
2589
+ { 0, 0, 0 }
2590
+ };
2591
+ int reftet_3eb_0v_splitfaces[][4] =
2592
+ {
2593
+ { 1, 2, 4, 17 },
2594
+ { 2, 1, 3, 18 },
2595
+ { 0, 0, 0, 0 }
2596
+ };
2597
+ int reftet_3eb_0v_splitelements[][5] =
2598
+ {
2599
+ { 1, 2, 3, 4, 20 },
2600
+ { 0 },
2601
+ };
2602
+
2603
+ HPREF_ELEMENT_TYPE reftet_3eb_0v_newelstypes[] =
2604
+ {
2605
+ HP_PYRAMID_EDGES,
2606
+ HP_PYRAMID_EDGES,
2607
+ // HP_TET_1E_1VA,
2608
+ // HP_TET_1E_1VA,
2609
+ HP_PRISM_SINGEDGE,
2610
+ HP_PRISM_SINGEDGE,
2611
+ HP_PRISM_SINGEDGE,
2612
+
2613
+ HP_PYRAMID,
2614
+ HP_PYRAMID,
2615
+ HP_TET,
2616
+ HP_TET,
2617
+ HP_PYRAMID,
2618
+ HP_PYRAMID,
2619
+ HP_PYRAMID,
2620
+ HP_NONE,
2621
+ };
2622
+ int reftet_3eb_0v_newels[][8] =
2623
+ {
2624
+ { 1, 7, 17, 5, 6 },
2625
+ { 2, 9, 18, 8, 10 },
2626
+ // { 3, 12, 13, 11 },
2627
+ // { 4, 14, 16, 15 },
2628
+ { 5, 6, 17, 8, 18, 10 },
2629
+ { 7, 17, 6, 4, 15, 16 },
2630
+ { 9, 18, 10, 3, 11, 13 },
2631
+
2632
+ { 10, 15, 16, 13, 20 },
2633
+ { 6, 11, 13, 16, 20 },
2634
+ { 10, 17, 15, 20 },
2635
+ { 6, 18, 11, 20 },
2636
+ { 6, 17, 10, 18, 20 },
2637
+ { 6, 16, 15, 17, 20 },
2638
+ { 18, 10, 13, 11, 20 },
2639
+ };
2640
+ HPRef_Struct reftet_3eb_0v =
2641
+ {
2642
+ HP_TET,
2643
+ reftet_3eb_0v_splitedges,
2644
+ reftet_3eb_0v_splitfaces,
2645
+ reftet_3eb_0v_splitelements,
2646
+ reftet_3eb_0v_newelstypes,
2647
+ reftet_3eb_0v_newels
2648
+ };
2649
+
2650
+
2651
+
2652
+
2653
+
2654
+
2655
+
2656
+
2657
+
2658
+ // HP_TET_3EV_1V,
2659
+ int reftet_3eb_1v_splitedges[][3] =
2660
+ {
2661
+ { 1, 2, 5 },
2662
+ { 1, 3, 6 },
2663
+ { 1, 4, 7 },
2664
+ { 2, 1, 8 },
2665
+ { 2, 3, 9 },
2666
+ { 2, 4, 10 },
2667
+ { 3, 1, 11 },
2668
+ { 3, 2, 12 },
2669
+ { 3, 4, 13 },
2670
+ // { 4, 1, 14 },
2671
+ { 4, 2, 15 },
2672
+ { 4, 3, 16 },
2673
+ { 0, 0, 0 }
2674
+ };
2675
+ int reftet_3eb_1v_splitfaces[][4] =
2676
+ {
2677
+ { 1, 2, 4, 17 },
2678
+ { 2, 1, 3, 18 },
2679
+ { 0, 0, 0, 0 }
2680
+ };
2681
+ int reftet_3eb_1v_splitelements[][5] =
2682
+ {
2683
+ { 1, 2, 3, 4, 20 },
2684
+ { 0 },
2685
+ };
2686
+
2687
+ HPREF_ELEMENT_TYPE reftet_3eb_1v_newelstypes[] =
2688
+ {
2689
+ HP_PYRAMID_EDGES,
2690
+ HP_PYRAMID_EDGES,
2691
+ HP_TET_1E_1VA,
2692
+ // HP_TET_1E_1VA,
2693
+ HP_PRISM_SINGEDGE,
2694
+ HP_PRISM_SINGEDGE,
2695
+ HP_PRISM_SINGEDGE,
2696
+
2697
+ HP_PYRAMID,
2698
+ HP_PYRAMID,
2699
+ HP_TET,
2700
+ HP_TET,
2701
+ HP_PYRAMID,
2702
+ HP_PYRAMID,
2703
+ HP_PYRAMID,
2704
+ HP_NONE,
2705
+ };
2706
+ int reftet_3eb_1v_newels[][8] =
2707
+ {
2708
+ { 1, 7, 17, 5, 6 },
2709
+ { 2, 9, 18, 8, 10 },
2710
+ { 3, 12, 13, 11 },
2711
+ // { 4, 14, 16, 15 },
2712
+ { 5, 6, 17, 8, 18, 10 },
2713
+ { 7, 17, 6, 4, 15, 16 },
2714
+ { 9, 18, 10, 12, 11, 13 },
2715
+
2716
+ { 10, 15, 16, 13, 20 },
2717
+ { 6, 11, 13, 16, 20 },
2718
+ { 10, 17, 15, 20 },
2719
+ { 6, 18, 11, 20 },
2720
+ { 6, 17, 10, 18, 20 },
2721
+ { 6, 16, 15, 17, 20 },
2722
+ { 18, 10, 13, 11, 20 },
2723
+ };
2724
+ HPRef_Struct reftet_3eb_1v =
2725
+ {
2726
+ HP_TET,
2727
+ reftet_3eb_1v_splitedges,
2728
+ reftet_3eb_1v_splitfaces,
2729
+ reftet_3eb_1v_splitelements,
2730
+ reftet_3eb_1v_newelstypes,
2731
+ reftet_3eb_1v_newels
2732
+ };
2733
+
2734
+
2735
+
2736
+
2737
+
2738
+
2739
+
2740
+
2741
+ // HP_TET_3EV_2V,
2742
+ int reftet_3eb_2v_splitedges[][3] =
2743
+ {
2744
+ { 1, 2, 5 },
2745
+ { 1, 3, 6 },
2746
+ { 1, 4, 7 },
2747
+ { 2, 1, 8 },
2748
+ { 2, 3, 9 },
2749
+ { 2, 4, 10 },
2750
+ { 3, 1, 11 },
2751
+ { 3, 2, 12 },
2752
+ { 3, 4, 13 },
2753
+ { 4, 1, 14 },
2754
+ { 4, 2, 15 },
2755
+ { 4, 3, 16 },
2756
+ { 0, 0, 0 }
2757
+ };
2758
+ int reftet_3eb_2v_splitfaces[][4] =
2759
+ {
2760
+ { 1, 2, 4, 17 },
2761
+ { 2, 1, 3, 18 },
2762
+ { 0, 0, 0, 0 }
2763
+ };
2764
+ int reftet_3eb_2v_splitelements[][5] =
2765
+ {
2766
+ { 1, 2, 3, 4, 20 },
2767
+ { 0 },
2768
+ };
2769
+
2770
+ HPREF_ELEMENT_TYPE reftet_3eb_2v_newelstypes[] =
2771
+ {
2772
+ HP_PYRAMID_EDGES,
2773
+ HP_PYRAMID_EDGES,
2774
+ HP_TET_1E_1VA,
2775
+ HP_TET_1E_1VA,
2776
+ HP_PRISM_SINGEDGE,
2777
+ HP_PRISM_SINGEDGE,
2778
+ HP_PRISM_SINGEDGE,
2779
+
2780
+ HP_PYRAMID,
2781
+ HP_PYRAMID,
2782
+ HP_TET,
2783
+ HP_TET,
2784
+ HP_PYRAMID,
2785
+ HP_PYRAMID,
2786
+ HP_PYRAMID,
2787
+ HP_NONE,
2788
+ };
2789
+ int reftet_3eb_2v_newels[][8] =
2790
+ {
2791
+ { 1, 7, 17, 5, 6 },
2792
+ { 2, 9, 18, 8, 10 },
2793
+ { 3, 12, 13, 11 },
2794
+ { 4, 14, 16, 15 },
2795
+ { 5, 6, 17, 8, 18, 10 },
2796
+ { 7, 17, 6, 14, 15, 16 },
2797
+ { 9, 18, 10, 12, 11, 13 },
2798
+
2799
+ { 10, 15, 16, 13, 20 },
2800
+ { 6, 11, 13, 16, 20 },
2801
+ { 10, 17, 15, 20 },
2802
+ { 6, 18, 11, 20 },
2803
+ { 6, 17, 10, 18, 20 },
2804
+ { 6, 16, 15, 17, 20 },
2805
+ { 18, 10, 13, 11, 20 },
2806
+ };
2807
+ HPRef_Struct reftet_3eb_2v =
2808
+ {
2809
+ HP_TET,
2810
+ reftet_3eb_2v_splitedges,
2811
+ reftet_3eb_2v_splitfaces,
2812
+ reftet_3eb_2v_splitelements,
2813
+ reftet_3eb_2v_newelstypes,
2814
+ reftet_3eb_2v_newels
2815
+ };
2816
+
2817
+
2818
+
2819
+
2820
+
2821
+
2822
+
2823
+
2824
+
2825
+
2826
+
2827
+
2828
+
2829
+ // HP_TET_3EC_0V,
2830
+ int reftet_3ec_0v_splitedges[][3] =
2831
+ {
2832
+ { 1, 2, 5 },
2833
+ { 1, 3, 6 },
2834
+ { 1, 4, 7 },
2835
+ { 2, 1, 8 },
2836
+ { 2, 3, 9 },
2837
+ { 2, 4, 10 },
2838
+ // { 3, 1, 11 },
2839
+ { 3, 2, 12 },
2840
+ { 3, 4, 13 },
2841
+ { 4, 1, 14 },
2842
+ // { 4, 2, 15 },
2843
+ { 4, 3, 16 },
2844
+ { 0, 0, 0 }
2845
+ };
2846
+ int reftet_3ec_0v_splitfaces[][4] =
2847
+ {
2848
+ { 1, 2, 3, 17 },
2849
+ { 2, 1, 4, 18 },
2850
+ { 0, 0, 0, 0 }
2851
+ };
2852
+ int reftet_3ec_0v_splitelements[][5] =
2853
+ {
2854
+ { 1, 2, 3, 4, 20 },
2855
+ { 0 },
2856
+ };
2857
+
2858
+ HPREF_ELEMENT_TYPE reftet_3ec_0v_newelstypes[] =
2859
+ {
2860
+ HP_PYRAMID_EDGES,
2861
+ HP_PYRAMID_EDGES,
2862
+ // HP_TET_1E_1VA,
2863
+ // HP_TET_1E_1VA,
2864
+ HP_PRISM_SINGEDGE,
2865
+ HP_PRISM_SINGEDGE,
2866
+ HP_PRISM_SINGEDGE,
2867
+
2868
+ HP_PYRAMID,
2869
+ HP_PYRAMID,
2870
+ HP_TET,
2871
+ HP_TET,
2872
+ HP_PYRAMID,
2873
+ HP_PYRAMID,
2874
+ HP_PYRAMID,
2875
+ HP_NONE,
2876
+ };
2877
+ int reftet_3ec_0v_newels[][8] =
2878
+ {
2879
+ { 1, 5, 17, 6, 7 },
2880
+ { 2, 8, 18, 10, 9 },
2881
+ // { 3, 11, 12, 13 },
2882
+ // { 4, 15, 14, 16 },
2883
+ { 5, 17, 7, 8, 9, 18 },
2884
+ { 6, 7, 17, 3, 13, 12 },
2885
+ { 10, 9, 18, 4, 16, 14 },
2886
+
2887
+ { 9, 16, 13, 12, 20 },
2888
+ { 7, 13, 16, 14, 20 },
2889
+ { 7, 14, 18, 20 },
2890
+ { 9, 12, 17, 20 },
2891
+ { 17, 7, 18, 9, 20 },
2892
+ { 7, 17, 12, 13, 20 },
2893
+ { 9, 18, 14, 16, 20 },
2894
+ };
2895
+ HPRef_Struct reftet_3ec_0v =
2896
+ {
2897
+ HP_TET,
2898
+ reftet_3ec_0v_splitedges,
2899
+ reftet_3ec_0v_splitfaces,
2900
+ reftet_3ec_0v_splitelements,
2901
+ reftet_3ec_0v_newelstypes,
2902
+ reftet_3ec_0v_newels
2903
+ };
2904
+
2905
+
2906
+
2907
+
2908
+
2909
+
2910
+
2911
+
2912
+
2913
+ // HP_TET_3EC_1V,
2914
+ int reftet_3ec_1v_splitedges[][3] =
2915
+ {
2916
+ { 1, 2, 5 },
2917
+ { 1, 3, 6 },
2918
+ { 1, 4, 7 },
2919
+ { 2, 1, 8 },
2920
+ { 2, 3, 9 },
2921
+ { 2, 4, 10 },
2922
+ { 3, 1, 11 },
2923
+ { 3, 2, 12 },
2924
+ { 3, 4, 13 },
2925
+ { 4, 1, 14 },
2926
+ // { 4, 2, 15 },
2927
+ { 4, 3, 16 },
2928
+ { 0, 0, 0 }
2929
+ };
2930
+ int reftet_3ec_1v_splitfaces[][4] =
2931
+ {
2932
+ { 1, 2, 3, 17 },
2933
+ { 2, 1, 4, 18 },
2934
+ { 0, 0, 0, 0 }
2935
+ };
2936
+ int reftet_3ec_1v_splitelements[][5] =
2937
+ {
2938
+ { 1, 2, 3, 4, 20 },
2939
+ { 0 },
2940
+ };
2941
+
2942
+ HPREF_ELEMENT_TYPE reftet_3ec_1v_newelstypes[] =
2943
+ {
2944
+ HP_PYRAMID_EDGES,
2945
+ HP_PYRAMID_EDGES,
2946
+ HP_TET_1E_1VA,
2947
+ // HP_TET_1E_1VA,
2948
+ HP_PRISM_SINGEDGE,
2949
+ HP_PRISM_SINGEDGE,
2950
+ HP_PRISM_SINGEDGE,
2951
+
2952
+ HP_PYRAMID,
2953
+ HP_PYRAMID,
2954
+ HP_TET,
2955
+ HP_TET,
2956
+ HP_PYRAMID,
2957
+ HP_PYRAMID,
2958
+ HP_PYRAMID,
2959
+ HP_NONE,
2960
+ };
2961
+ int reftet_3ec_1v_newels[][8] =
2962
+ {
2963
+ { 1, 5, 17, 6, 7 },
2964
+ { 2, 8, 18, 10, 9 },
2965
+ { 3, 11, 12, 13 },
2966
+ // { 4, 15, 14, 16 },
2967
+ { 5, 17, 7, 8, 9, 18 },
2968
+ { 6, 7, 17, 11, 13, 12 },
2969
+ { 10, 9, 18, 4, 16, 14 },
2970
+
2971
+ { 9, 16, 13, 12, 20 },
2972
+ { 7, 13, 16, 14, 20 },
2973
+ { 7, 14, 18, 20 },
2974
+ { 9, 12, 17, 20 },
2975
+ { 17, 7, 18, 9, 20 },
2976
+ { 7, 17, 12, 13, 20 },
2977
+ { 9, 18, 14, 16, 20 },
2978
+ };
2979
+ HPRef_Struct reftet_3ec_1v =
2980
+ {
2981
+ HP_TET,
2982
+ reftet_3ec_1v_splitedges,
2983
+ reftet_3ec_1v_splitfaces,
2984
+ reftet_3ec_1v_splitelements,
2985
+ reftet_3ec_1v_newelstypes,
2986
+ reftet_3ec_1v_newels
2987
+ };
2988
+
2989
+
2990
+
2991
+
2992
+
2993
+
2994
+
2995
+
2996
+ // HP_TET_3EC_2V,
2997
+ int reftet_3ec_2v_splitedges[][3] =
2998
+ {
2999
+ { 1, 2, 5 },
3000
+ { 1, 3, 6 },
3001
+ { 1, 4, 7 },
3002
+ { 2, 1, 8 },
3003
+ { 2, 3, 9 },
3004
+ { 2, 4, 10 },
3005
+ { 3, 1, 11 },
3006
+ { 3, 2, 12 },
3007
+ { 3, 4, 13 },
3008
+ { 4, 1, 14 },
3009
+ { 4, 2, 15 },
3010
+ { 4, 3, 16 },
3011
+ { 0, 0, 0 }
3012
+ };
3013
+ int reftet_3ec_2v_splitfaces[][4] =
3014
+ {
3015
+ { 1, 2, 3, 17 },
3016
+ { 2, 1, 4, 18 },
3017
+ { 0, 0, 0, 0 }
3018
+ };
3019
+ int reftet_3ec_2v_splitelements[][5] =
3020
+ {
3021
+ { 1, 2, 3, 4, 20 },
3022
+ { 0 },
3023
+ };
3024
+
3025
+ HPREF_ELEMENT_TYPE reftet_3ec_2v_newelstypes[] =
3026
+ {
3027
+ HP_PYRAMID_EDGES,
3028
+ HP_PYRAMID_EDGES,
3029
+ HP_TET_1E_1VA,
3030
+ HP_TET_1E_1VA,
3031
+ HP_PRISM_SINGEDGE,
3032
+ HP_PRISM_SINGEDGE,
3033
+ HP_PRISM_SINGEDGE,
3034
+
3035
+ HP_PYRAMID,
3036
+ HP_PYRAMID,
3037
+ HP_TET,
3038
+ HP_TET,
3039
+ HP_PYRAMID,
3040
+ HP_PYRAMID,
3041
+ HP_PYRAMID,
3042
+ HP_NONE,
3043
+ };
3044
+ int reftet_3ec_2v_newels[][8] =
3045
+ {
3046
+ { 1, 5, 17, 6, 7 },
3047
+ { 2, 8, 18, 10, 9 },
3048
+ { 3, 11, 12, 13 },
3049
+ { 4, 15, 14, 16 },
3050
+ { 5, 17, 7, 8, 9, 18 },
3051
+ { 6, 7, 17, 11, 13, 12 },
3052
+ { 10, 9, 18, 15, 16, 14 },
3053
+
3054
+ { 9, 16, 13, 12, 20 },
3055
+ { 7, 13, 16, 14, 20 },
3056
+ { 7, 14, 18, 20 },
3057
+ { 9, 12, 17, 20 },
3058
+ { 17, 7, 18, 9, 20 },
3059
+ { 7, 17, 12, 13, 20 },
3060
+ { 9, 18, 14, 16, 20 },
3061
+ };
3062
+ HPRef_Struct reftet_3ec_2v =
3063
+ {
3064
+ HP_TET,
3065
+ reftet_3ec_2v_splitedges,
3066
+ reftet_3ec_2v_splitfaces,
3067
+ reftet_3ec_2v_splitelements,
3068
+ reftet_3ec_2v_newelstypes,
3069
+ reftet_3ec_2v_newels
3070
+ };
3071
+
3072
+
3073
+
3074
+
3075
+
3076
+ // HP_TET_3ED_3V,
3077
+ int reftet_3ed_3v_splitedges[][3] =
3078
+ {
3079
+ { 1, 2, 5 },
3080
+ { 1, 3, 6 },
3081
+ { 1, 4, 7 },
3082
+ { 2, 1, 8 },
3083
+ { 2, 3, 9 },
3084
+ { 2, 4, 10 },
3085
+ { 3, 1, 11 },
3086
+ { 3, 2, 12 },
3087
+ { 3, 4, 13 },
3088
+ { 0, 0, 0 }
3089
+ };
3090
+ int reftet_3ed_3v_splitfaces[][4] =
3091
+ {
3092
+ { 1, 2, 3, 14 },
3093
+ { 2, 3, 1, 15 },
3094
+ { 3, 1, 2, 16 },
3095
+ { 0, 0, 0, 0 }
3096
+ };
3097
+ int reftet_3ed_3v_splitelements[][5] =
3098
+ {
3099
+ { 0 },
3100
+ };
3101
+
3102
+ HPREF_ELEMENT_TYPE reftet_3ed_3v_newelstypes[] =
3103
+ {
3104
+ HP_TET,
3105
+ HP_PRISM,
3106
+ HP_PRISM_SINGEDGE,
3107
+ HP_PRISM_SINGEDGE,
3108
+ HP_PRISM_SINGEDGE,
3109
+ HP_TET_1E_1VA,
3110
+ HP_TET_1E_1VA,
3111
+ HP_TET_1E_1VA,
3112
+ HP_TET_1E_1VA,
3113
+ HP_TET_1E_1VA,
3114
+ HP_TET_1E_1VA,
3115
+ HP_NONE,
3116
+ };
3117
+ int reftet_3ed_3v_newels[][8] =
3118
+ {
3119
+ { 7, 10, 13, 4 },
3120
+ { 14, 15, 16, 7, 10, 13 },
3121
+ { 5, 14, 7, 8, 15, 10 },
3122
+ { 9, 15, 10, 12, 16, 13 },
3123
+ { 11, 16, 13, 6, 14, 7 },
3124
+ { 1, 5, 14, 7 },
3125
+ { 1, 6, 7, 14 },
3126
+ { 2, 8, 10, 15 },
3127
+ { 2, 9, 15, 10 },
3128
+ { 3, 12, 13, 16 },
3129
+ { 3, 11, 16, 13 }
3130
+ };
3131
+
3132
+ HPRef_Struct reftet_3ed_3v =
3133
+ {
3134
+ HP_TET,
3135
+ reftet_3ed_3v_splitedges,
3136
+ reftet_3ed_3v_splitfaces,
3137
+ reftet_3ed_3v_splitelements,
3138
+ reftet_3ed_3v_newelstypes,
3139
+ reftet_3ed_3v_newels
3140
+ };
3141
+
3142
+
3143
+
3144
+
3145
+
3146
+
3147
+
3148
+
3149
+
3150
+
3151
+
3152
+ /* ************************ 1 singular face ******************** */
3153
+
3154
+
3155
+ // HP_TET_1F_0E_0V
3156
+ int reftet_1f_0e_0v_splitedges[][3] =
3157
+ {
3158
+ { 2, 1, 5 },
3159
+ { 3, 1, 6 },
3160
+ { 4, 1, 7 },
3161
+ { 0, 0, 0 }
3162
+ };
3163
+ HPREF_ELEMENT_TYPE reftet_1f_0e_0v_newelstypes[] =
3164
+ {
3165
+ HP_PRISM_1FA_0E_0V,
3166
+ HP_TET,
3167
+ HP_NONE,
3168
+ };
3169
+ int reftet_1f_0e_0v_newels[][8] =
3170
+ {
3171
+ { 3, 2, 4, 6, 5, 7 },
3172
+ { 5, 7, 6, 1 }
3173
+ };
3174
+ HPRef_Struct reftet_1f_0e_0v =
3175
+ {
3176
+ HP_TET,
3177
+ reftet_1f_0e_0v_splitedges,
3178
+ 0, 0,
3179
+ reftet_1f_0e_0v_newelstypes,
3180
+ reftet_1f_0e_0v_newels
3181
+ };
3182
+
3183
+
3184
+
3185
+
3186
+ /*
3187
+ // HP_TET_1F_0E_1VA ... singular vertex in face
3188
+ int reftet_1f_0e_1va_splitedges[][3] =
3189
+ {
3190
+ { 2, 1, 5 },
3191
+ { 2, 3, 6 },
3192
+ { 2, 4, 7 },
3193
+ { 3, 1, 8 },
3194
+ { 4, 1, 9 },
3195
+ { 0, 0, 0 }
3196
+ };
3197
+ HPREF_ELEMENT_TYPE reftet_1f_0e_1va_newelstypes[] =
3198
+ {
3199
+ // HP_HEX_1F_0E_0V,
3200
+ HP_HEX7_1FA,
3201
+ HP_TET_1F_0E_1VA,
3202
+ HP_TET,
3203
+ HP_NONE,
3204
+ };
3205
+ int reftet_1f_0e_1va_newels[][8] =
3206
+ {
3207
+ // { 3, 6, 7, 4, 8, 5, 5, 9 },
3208
+ { 4, 3, 6, 7, 9, 8, 5 },
3209
+ { 5, 2, 6, 7 },
3210
+ { 5, 9, 8, 1 },
3211
+ };
3212
+ HPRef_Struct reftet_1f_0e_1va =
3213
+ {
3214
+ HP_TET,
3215
+ reftet_1f_0e_1va_splitedges,
3216
+ 0, 0,
3217
+ reftet_1f_0e_1va_newelstypes,
3218
+ reftet_1f_0e_1va_newels
3219
+ };
3220
+ */
3221
+
3222
+
3223
+ HPRefStruct<HP_TET> reftet_1f_0e_1va
3224
+ {
3225
+ HP_TET_1F_0E_1VA,
3226
+ {
3227
+ El(HP_HEX7_1FA, { V4, V3, E23, E24, E41, E31, E21 }),
3228
+ El(HP_TET_1F_0E_1VA, { E21, V2, E23, E24 }),
3229
+ El(HP_TET, { E21, E41, E31, V1 })
3230
+ }
3231
+ };
3232
+
3233
+
3234
+
3235
+ // HP_TET_1F_0E_1VB ... singular vertex not in face
3236
+ int reftet_1f_0e_1vb_splitedges[][3] =
3237
+ {
3238
+ { 1, 2, 5 },
3239
+ { 1, 3, 6 },
3240
+ { 1, 4, 7 },
3241
+ { 2, 1, 8 },
3242
+ { 3, 1, 9 },
3243
+ { 4, 1, 10 },
3244
+ { 0, 0, 0 }
3245
+ };
3246
+ HPREF_ELEMENT_TYPE reftet_1f_0e_1vb_newelstypes[] =
3247
+ {
3248
+ HP_PRISM_1FA_0E_0V,
3249
+ HP_PRISM,
3250
+ HP_TET_0E_1V,
3251
+ HP_NONE,
3252
+ };
3253
+ int reftet_1f_0e_1vb_newels[][8] =
3254
+ {
3255
+ { 2, 4, 3, 8, 10, 9 },
3256
+ { 8, 10, 9, 5, 7, 6 },
3257
+ { 1, 5, 6, 7 },
3258
+ };
3259
+ HPRef_Struct reftet_1f_0e_1vb =
3260
+ {
3261
+ HP_TET,
3262
+ reftet_1f_0e_1vb_splitedges,
3263
+ 0, 0,
3264
+ reftet_1f_0e_1vb_newelstypes,
3265
+ reftet_1f_0e_1vb_newels
3266
+ };
3267
+
3268
+
3269
+
3270
+
3271
+
3272
+
3273
+
3274
+ // HP_TET_1F_0E_2V ... face 234, sing verts v2,v3
3275
+ int reftet_1f_0e_2v_splitedges[][3] =
3276
+ {
3277
+ { 2, 1, 5 },
3278
+ { 2, 3, 6 },
3279
+ { 2, 4, 7 },
3280
+ { 3, 1, 8 },
3281
+ { 3, 2, 9 },
3282
+ { 3, 4, 10 },
3283
+ { 4, 1, 11 },
3284
+ { 0, 0, 0 }
3285
+ };
3286
+ HPREF_ELEMENT_TYPE reftet_1f_0e_2v_newelstypes[] =
3287
+ {
3288
+ HP_TET_0E_1V,
3289
+ HP_PRISM_1FA_0E_0V,
3290
+ HP_PRISM_1FB_0E_0V,
3291
+ HP_TET_1F_0E_1VA,
3292
+ HP_TET_1F_0E_1VA,
3293
+ HP_NONE,
3294
+ };
3295
+ int reftet_1f_0e_2v_newels[][8] =
3296
+ {
3297
+ { 1, 5, 8, 11 },
3298
+ { 4, 10, 7, 11, 8, 5 },
3299
+ { 9, 10, 8, 6, 7, 5 },
3300
+ { 5, 2, 6, 7 },
3301
+ { 8, 3, 10, 9 }
3302
+ };
3303
+ HPRef_Struct reftet_1f_0e_2v =
3304
+ {
3305
+ HP_TET,
3306
+ reftet_1f_0e_2v_splitedges,
3307
+ 0, 0,
3308
+ reftet_1f_0e_2v_newelstypes,
3309
+ reftet_1f_0e_2v_newels
3310
+ };
3311
+
3312
+
3313
+
3314
+
3315
+
3316
+
3317
+
3318
+
3319
+ HPRefStruct<HP_TET> reftet_1f_0e_3v
3320
+ {
3321
+ HP_TET_1F_0E_3V,
3322
+ {
3323
+ El(HP_TET, { V1, E21, E31, E41 }),
3324
+ El(HP_PRISM_1FA_0E_0V, { F234, F423, F324, E21, E41, E31 }),
3325
+ El(HP_PRISM_1FB_1EA_0V, { E32, F324, E31, E23, F234, E21 }),
3326
+ El(HP_PRISM_1FB_1EA_0V, { E43, F423, E41, E34, F324, E31 }),
3327
+ El(HP_PRISM_1FB_1EA_0V, { E24, F234, E21, E42, F423, E41 }),
3328
+ El(HP_TET_1F_0E_0V, { E21, E24, E23, F234 }),
3329
+ El(HP_TET_1F_0E_1VA, { E21, V2, E23, E24 }),
3330
+ El(HP_TET_1F_0E_0V, { E31, E32, E34, F324 }),
3331
+ El(HP_TET_1F_0E_1VA, { E31, V3, E34, E32 }),
3332
+ El(HP_TET_1F_0E_0V, { E41, E43, E42, F423 }),
3333
+ El(HP_TET_1F_0E_1VA, { E41, V4, E42, E43 }),
3334
+ }
3335
+ };
3336
+
3337
+
3338
+
3339
+
3340
+
3341
+
3342
+
3343
+
3344
+
3345
+
3346
+
3347
+ // HP_TET_1F_1EA_0V ... sing edge is 1..2
3348
+ int reftet_1f_1ea_0v_splitedges[][3] =
3349
+ {
3350
+ { 1, 3, 5 },
3351
+ { 1, 4, 6 },
3352
+ { 2, 1, 7 },
3353
+ { 2, 3, 8 },
3354
+ { 2, 4, 9 },
3355
+ { 3, 1, 10 },
3356
+ { 4, 1, 11 },
3357
+ { 0, 0, 0 }
3358
+ };
3359
+
3360
+ int reftet_1f_1ea_0v_splitfaces[][4] =
3361
+ {
3362
+ { 2, 1, 3, 12 },
3363
+ { 2, 1, 4, 13 },
3364
+ { 0, 0, 0, 0 }
3365
+ };
3366
+
3367
+
3368
+ HPREF_ELEMENT_TYPE reftet_1f_1ea_0v_newelstypes[] =
3369
+ {
3370
+ HP_HEX_1F_0E_0V,
3371
+ // HP_PRISM,
3372
+ HP_PYRAMID_1FB_0E_1VA,
3373
+ HP_TET_1E_1VA,
3374
+ HP_PRISM_SINGEDGE,
3375
+ HP_PRISM,
3376
+ HP_NONE,
3377
+ };
3378
+ int reftet_1f_1ea_0v_newels[][8] =
3379
+ {
3380
+ { 3, 8, 9, 4, 10, 12, 13, 11 },
3381
+ // { 2, 9, 8, 7, 13, 12 },
3382
+ { 8, 9, 13, 12, 2 },
3383
+ { 2, 7, 13, 12 },
3384
+ { 7, 13, 12, 1, 6, 5 },
3385
+ { 6, 11, 13, 5, 10, 12 }
3386
+ };
3387
+ HPRef_Struct reftet_1f_1ea_0v =
3388
+ {
3389
+ HP_TET,
3390
+ reftet_1f_1ea_0v_splitedges,
3391
+ reftet_1f_1ea_0v_splitfaces,
3392
+ 0,
3393
+ reftet_1f_1ea_0v_newelstypes,
3394
+ reftet_1f_1ea_0v_newels
3395
+ };
3396
+
3397
+
3398
+
3399
+
3400
+
3401
+
3402
+
3403
+
3404
+ // HP_TET_1F_1EB_0V singular edge in face, edge is 2-3
3405
+ int reftet_1f_1eb_0v_splitedges[][3] =
3406
+ {
3407
+ { 2, 1, 5 },
3408
+ { 2, 4, 6 },
3409
+ { 3, 1, 7 },
3410
+ { 3, 4, 8 },
3411
+ { 4, 1, 9 },
3412
+ { 0, 0, 0 }
3413
+ };
3414
+
3415
+
3416
+ HPREF_ELEMENT_TYPE reftet_1f_1eb_0v_newelstypes[] =
3417
+ {
3418
+ HP_PRISM_1FB_1EA_0V,
3419
+ HP_PRISM_1FA_0E_0V,
3420
+ HP_TET,
3421
+ HP_NONE,
3422
+ };
3423
+ int reftet_1f_1eb_0v_newels[][8] =
3424
+ {
3425
+ // { 2, 5, 6, 3, 7, 8 },
3426
+ { 3, 8, 7, 2, 6, 5 },
3427
+ { 6, 4, 8, 5, 9, 7 },
3428
+ { 5, 9, 7, 1}
3429
+ };
3430
+ HPRef_Struct reftet_1f_1eb_0v =
3431
+ {
3432
+ HP_TET,
3433
+ reftet_1f_1eb_0v_splitedges,
3434
+ 0, 0,
3435
+ reftet_1f_1eb_0v_newelstypes,
3436
+ reftet_1f_1eb_0v_newels
3437
+ };
3438
+
3439
+
3440
+
3441
+
3442
+
3443
+
3444
+
3445
+ // HP_TET_1F_1E_1VA // 1 sing edge in face e23, sing vert 2
3446
+ int reftet_1f_1e_1va_splitedges[][3] =
3447
+ {
3448
+ { 2, 1, 5 },
3449
+ { 2, 3, 10 },
3450
+ { 2, 4, 6 },
3451
+ { 3, 1, 7 },
3452
+ { 3, 4, 8 },
3453
+ { 4, 1, 9 },
3454
+ { 0, 0, 0 }
3455
+ };
3456
+
3457
+ HPREF_ELEMENT_TYPE reftet_1f_1e_1va_newelstypes[] =
3458
+ {
3459
+ HP_PRISM_1FB_1EA_0V,
3460
+ HP_PRISM_1FA_0E_0V,
3461
+ HP_TET,
3462
+ HP_TET_1F_1E_1VA,
3463
+ HP_NONE,
3464
+ };
3465
+ int reftet_1f_1e_1va_newels[][8] =
3466
+ {
3467
+ { 3, 8, 7, 10, 6, 5 },
3468
+ { 6, 4, 8, 5, 9, 7 },
3469
+ { 5, 9, 7, 1},
3470
+ { 5, 2, 10, 6 }
3471
+ };
3472
+ HPRef_Struct reftet_1f_1e_1va =
3473
+ {
3474
+ HP_TET,
3475
+ reftet_1f_1e_1va_splitedges,
3476
+ 0, 0,
3477
+ reftet_1f_1e_1va_newelstypes,
3478
+ reftet_1f_1e_1va_newels
3479
+ };
3480
+
3481
+
3482
+
3483
+
3484
+
3485
+
3486
+
3487
+ // HP_TET_1F_1E_1VB // 1 sing edge in face e24, sing vert 2
3488
+ int reftet_1f_1e_1vb_splitedges[][3] =
3489
+ {
3490
+ { 2, 1, 5 },
3491
+ { 2, 3, 6 },
3492
+ { 2, 4, 7 },
3493
+ { 3, 1, 8 },
3494
+ { 4, 1, 9 },
3495
+ { 4, 3, 10 },
3496
+ { 0, 0, 0 }
3497
+ };
3498
+
3499
+ HPREF_ELEMENT_TYPE reftet_1f_1e_1vb_newelstypes[] =
3500
+ {
3501
+ HP_PRISM_1FB_1EA_0V,
3502
+ HP_PRISM_1FA_0E_0V,
3503
+ HP_TET,
3504
+ HP_TET_1F_1E_1VB,
3505
+ HP_NONE,
3506
+ };
3507
+ int reftet_1f_1e_1vb_newels[][8] =
3508
+ {
3509
+ { 4, 9, 10, 7, 5, 6 },
3510
+ { 3, 6, 10, 8, 5, 9 },
3511
+ { 5, 9, 8, 1},
3512
+ { 5, 2, 6, 7 }
3513
+ };
3514
+ HPRef_Struct reftet_1f_1e_1vb =
3515
+ {
3516
+ HP_TET,
3517
+ reftet_1f_1e_1vb_splitedges,
3518
+ 0, 0,
3519
+ reftet_1f_1e_1vb_newelstypes,
3520
+ reftet_1f_1e_1vb_newels
3521
+ };
3522
+
3523
+
3524
+
3525
+
3526
+
3527
+
3528
+
3529
+
3530
+
3531
+
3532
+
3533
+
3534
+ // HP_TET_1F_1E_2VA // 1 sing edge not in face (e12), sing v2,v3
3535
+ int reftet_1f_1e_2va_splitedges[][3] =
3536
+ {
3537
+ { 1, 3, 5 },
3538
+ { 1, 4, 6 },
3539
+ { 2, 1, 7 },
3540
+ { 2, 3, 8 },
3541
+ { 2, 4, 9 },
3542
+ { 3, 1, 10 },
3543
+ { 3, 2, 11 },
3544
+ { 3, 4, 12 },
3545
+ { 4, 1, 13 },
3546
+ { 0, 0, 0 }
3547
+ };
3548
+
3549
+ int reftet_1f_1e_2va_splitfaces[][4] =
3550
+ {
3551
+ { 2, 1, 3, 14 },
3552
+ { 2, 1, 4, 15 },
3553
+ { 0, 0, 0, 0 }
3554
+ };
3555
+
3556
+
3557
+ HPREF_ELEMENT_TYPE reftet_1f_1e_2va_newelstypes[] =
3558
+ {
3559
+ HP_PRISM,
3560
+ HP_PRISM_SINGEDGE,
3561
+ HP_PRISM_1FB_0E_0V,
3562
+ HP_TET_1F_0E_1VA,
3563
+ HP_TET_1F_0E_1VA,
3564
+ HP_TET_1E_1VA,
3565
+ HP_TET_1E_1VA,
3566
+ HP_HEX7_1FB,
3567
+ HP_NONE,
3568
+ };
3569
+ int reftet_1f_1e_2va_newels[][8] =
3570
+ {
3571
+ { 5, 14, 10, 6, 15, 13 },
3572
+ { 1, 5, 6, 7, 14, 15 },
3573
+ { 8, 14, 9, 11, 10, 12 },
3574
+ { 10, 3, 12, 11 },
3575
+ { 14, 2, 8, 9 },
3576
+ { 2, 7, 15, 14 },
3577
+ { 2, 9, 14, 15 },
3578
+ // { 13, 10, 14, 15, 4, 12, 9 }
3579
+ { 10, 13, 15, 14, 12, 4, 9 }
3580
+ };
3581
+ HPRef_Struct reftet_1f_1e_2va =
3582
+ {
3583
+ HP_TET,
3584
+ reftet_1f_1e_2va_splitedges,
3585
+ reftet_1f_1e_2va_splitfaces,
3586
+ 0,
3587
+ reftet_1f_1e_2va_newelstypes,
3588
+ reftet_1f_1e_2va_newels
3589
+ };
3590
+
3591
+
3592
+
3593
+
3594
+
3595
+ // HP_TET_1F_1E_2VB // 1 sing edge not in face (e12), sing v2,v4
3596
+ int reftet_1f_1e_2vb_splitedges[][3] =
3597
+ {
3598
+ { 1, 3, 5 },
3599
+ { 1, 4, 6 },
3600
+ { 2, 1, 7 },
3601
+ { 2, 3, 8 },
3602
+ { 2, 4, 9 },
3603
+ { 3, 1, 10 },
3604
+ { 4, 1, 11 },
3605
+ { 4, 2, 12 },
3606
+ { 4, 3, 13 },
3607
+ { 0, 0, 0 }
3608
+ };
3609
+
3610
+ int reftet_1f_1e_2vb_splitfaces[][4] =
3611
+ {
3612
+ { 2, 1, 3, 14 },
3613
+ { 2, 1, 4, 15 },
3614
+ { 0, 0, 0, 0 }
3615
+ };
3616
+
3617
+
3618
+ HPREF_ELEMENT_TYPE reftet_1f_1e_2vb_newelstypes[] =
3619
+ {
3620
+ HP_PRISM,
3621
+ HP_PRISM_SINGEDGE,
3622
+ HP_PRISM_1FB_0E_0V,
3623
+ HP_TET_1F_0E_1VA,
3624
+ HP_TET_1F_0E_1VA,
3625
+ HP_TET_1E_1VA,
3626
+ HP_TET_1E_1VA,
3627
+ HP_HEX7_1FB,
3628
+ HP_NONE,
3629
+
3630
+ };
3631
+ int reftet_1f_1e_2vb_newels[][8] =
3632
+ {
3633
+ { 5, 14, 10, 6, 15, 11 },
3634
+ { 1, 5, 6, 7, 14, 15 },
3635
+ { 8, 15, 9, 13, 11, 12 },
3636
+ { 11, 4, 12, 13 },
3637
+ { 15, 2, 8, 9 },
3638
+ { 2, 7, 15, 14 },
3639
+ { 2, 8, 14, 15 },
3640
+ { 10, 11, 15, 14, 3, 13, 8 }
3641
+ };
3642
+ HPRef_Struct reftet_1f_1e_2vb =
3643
+ {
3644
+ HP_TET,
3645
+ reftet_1f_1e_2vb_splitedges,
3646
+ reftet_1f_1e_2vb_splitfaces,
3647
+ 0,
3648
+ reftet_1f_1e_2vb_newelstypes,
3649
+ reftet_1f_1e_2vb_newels
3650
+ };
3651
+
3652
+
3653
+
3654
+
3655
+
3656
+
3657
+ // HP_TET_1F_1EA_3V
3658
+ HPRefStruct<HP_TET> reftet_1f_1ea_3v
3659
+ {
3660
+ HP_TET_1F_1EA_3V,
3661
+ {
3662
+ El(HP_PRISM, { E14, E41, F214, E13, E31, F213 }),
3663
+ El(HP_PRISM_SINGEDGE, { V1, E13, E14, E21, F213, F214 }),
3664
+ El(HP_HEX7_1FB, { E31, E41, F214, F213, F324, F423, F234 }),
3665
+ El(HP_PRISM_1FB_0E_0V, { F234, E23, F213, F324, E32, E31 }),
3666
+ El(HP_PRISM_1FB_0E_0V, { F423, E42, E41, F234, E24, F214 }),
3667
+ El(HP_PRISM_1FB_0E_0V, { F324, E34, E31, F423, E43, E41 }),
3668
+ El(HP_TET_1F_0E_0V, { E31, E32, E34, F324 }),
3669
+ El(HP_TET_1F_0E_1VA, { E31, V3, E34, E32 }),
3670
+
3671
+ El(HP_TET_1F_0E_0V, { E41, E43, E42, F423 }),
3672
+ El(HP_TET_1F_0E_1VA, { E41, V4, E42, E43 }),
3673
+ El(HP_PYRAMID_1FB_0E_0V, { E24, E23, F213, F214, F234 }), // needs check
3674
+ El(HP_PYRAMID_1FB_0E_1VA, { E23, E24, F214, F213, V2 }),
3675
+ El(HP_TET_1E_1VA, { V2, E21, F214, F213 }),
3676
+ }
3677
+ };
3678
+
3679
+
3680
+
3681
+ // HP_TET_1F_1E_3V e4 (E23), V2, V3, V4
3682
+ HPRefStruct<HP_TET> reftet_1f_1e_3v
3683
+ {
3684
+ HP_TET_1F_1E_3V,
3685
+ {
3686
+ El(HP_TET, { V1, E21, E31, E41 }),
3687
+ El(HP_HEX7_1FA, { E34, E24, E42, E43, E31, E21, E41 }),
3688
+ El(HP_PRISM_1FB_1EA_0V, { E32, E34, E31, E23, E24, E21 }),
3689
+ El(HP_TET_1F_0E_1VA, { E41, V4, E42, E43 }),
3690
+ El(HP_TET_1F_1E_1VB, { E21, V2, E23, E24 }),
3691
+ El(HP_TET_1F_1E_1VA, { E31, V3, E34, E32 }),
3692
+ }
3693
+ };
3694
+
3695
+
3696
+
3697
+ HPRefStruct<HP_TET> reftet_1f_2eoo_3v
3698
+ {
3699
+ HP_TET_1F_2Eoo_3V,
3700
+ {
3701
+ El(HP_TET, { E14, E41, F214, F314 }),
3702
+ El(HP_PRISM_1FA_0E_0V, { V4, E34, E24, E41, F314, F214 }),
3703
+ El(HP_PRISM, { F123, F213, F312, E14, F214, F314 }),
3704
+ El(HP_PRISM_SINGEDGE, { E12, F123, E14, E21, F213, F214 }),
3705
+ El(HP_PRISM_SINGEDGE, { E13, E14, F123, E31, F314, F312 }),
3706
+ El(HP_HEX_1F_0E_0V, { E32, E23, E24, E34, F312, F213, F214, F314 }),
3707
+ El(HP_TET_1E_1VA, { V1, E12, F123, E14 }),
3708
+ El(HP_TET_1E_1VA, { V1, E13, E14, F123 }),
3709
+ El(HP_PYRAMID_1FB_0E_1VA, { E34, E32, F312, F314, V3 }),
3710
+ El(HP_PYRAMID_1FB_0E_1VA, { E23, E24, F214, F213, V2 }),
3711
+ El(HP_TET_1E_1VA, { V2, E21, F214, F213 }),
3712
+ El(HP_TET_1E_1VA, { V3, E31, F312, F314 }),
3713
+
3714
+ }
3715
+ };
3716
+
3717
+ // HP_TET_1F_2E_0VA singular edge in face 234 is 34, and edge not in face is 14
3718
+ int reftet_1f_2e_0va_splitedges[][3] =
3719
+ {
3720
+ { 1, 2, 5 },
3721
+ { 1, 3, 6 },
3722
+ { 2, 1, 7 },
3723
+ { 3, 1, 8 },
3724
+ { 3, 2, 9 },
3725
+ { 4, 1, 10 },
3726
+ { 4, 2, 11 },
3727
+ { 4, 3, 12 },
3728
+ { 0, 0, 0 }
3729
+ };
3730
+
3731
+ int reftet_1f_2e_0va_splitfaces[][4] =
3732
+ {
3733
+ { 4, 1, 2, 13 },
3734
+ { 4, 1, 3, 14 },
3735
+ { 0, 0, 0, 0 }
3736
+ };
3737
+
3738
+ HPREF_ELEMENT_TYPE reftet_1f_2e_0va_newelstypes[] =
3739
+ {
3740
+ HP_PRISM,
3741
+ HP_PRISM_SINGEDGE,
3742
+ HP_HEX7_1FB,
3743
+ HP_PRISM_1FB_1EA_0V,
3744
+ HP_TET_1F_1E_1VA,
3745
+ HP_TET_1E_1VA,
3746
+ HP_TET_1E_1VA,
3747
+ HP_NONE,
3748
+ };
3749
+ int reftet_1f_2e_0va_newels[][8] =
3750
+ {
3751
+ { 6, 8, 14, 5, 7, 13 },
3752
+ { 1, 5, 6, 10, 13, 14 },
3753
+ { 7, 8, 14, 13, 2, 9, 11 },
3754
+ { 3, 8, 9, 12, 14, 11 },
3755
+ { 14, 4, 11, 12 },
3756
+ { 4, 11, 13, 14 },
3757
+ { 4, 10, 14, 13 }
3758
+ };
3759
+ HPRef_Struct reftet_1f_2e_0va =
3760
+ {
3761
+ HP_TET,
3762
+ reftet_1f_2e_0va_splitedges,
3763
+ reftet_1f_2e_0va_splitfaces,
3764
+ 0,
3765
+ reftet_1f_2e_0va_newelstypes,
3766
+ reftet_1f_2e_0va_newels
3767
+ };
3768
+
3769
+
3770
+
3771
+
3772
+
3773
+ // HP_TET_1F_2E_0VB singular edge in face 234 is 34, and edge not in face is 13
3774
+ int reftet_1f_2e_0vb_splitedges[][3] =
3775
+ {
3776
+ { 1, 2, 5 },
3777
+ { 1, 4, 6 },
3778
+ { 2, 1, 7 },
3779
+ { 3, 1, 8 },
3780
+ { 3, 2, 9 },
3781
+ { 3, 4, 10 },
3782
+ { 4, 1, 11 },
3783
+ { 4, 2, 12 },
3784
+ { 0, 0, 0 }
3785
+ };
3786
+
3787
+ int reftet_1f_2e_0vb_splitfaces[][4] =
3788
+ {
3789
+ { 3, 1, 2, 13 },
3790
+ { 3, 1, 4, 14 },
3791
+ { 0, 0, 0, 0 }
3792
+ };
3793
+
3794
+ HPREF_ELEMENT_TYPE reftet_1f_2e_0vb_newelstypes[] =
3795
+ {
3796
+ HP_PRISM,
3797
+ HP_PRISM_SINGEDGE,
3798
+ HP_HEX7_1FB,
3799
+ HP_PRISM_1FB_1EA_0V,
3800
+ HP_TET_1F_1E_1VA,
3801
+ HP_TET_1E_1VA,
3802
+ HP_TET_1E_1VA,
3803
+ HP_NONE,
3804
+ };
3805
+ int reftet_1f_2e_0vb_newels[][8] =
3806
+ {
3807
+ { 6, 14, 11, 5, 13, 7 },
3808
+ { 1, 6, 5, 8, 14, 13 },
3809
+ { 11, 7, 13, 14, 12, 2, 9 },
3810
+ { 4, 12, 11, 10, 9, 14 },
3811
+ { 14, 3, 10, 9 },
3812
+ { 3, 8, 13, 14 },
3813
+ { 3, 9, 14, 13 }
3814
+ };
3815
+ HPRef_Struct reftet_1f_2e_0vb =
3816
+ {
3817
+ HP_TET,
3818
+ reftet_1f_2e_0vb_splitedges,
3819
+ reftet_1f_2e_0vb_splitfaces,
3820
+ 0,
3821
+ reftet_1f_2e_0vb_newelstypes,
3822
+ reftet_1f_2e_0vb_newels
3823
+ };
3824
+
3825
+
3826
+
3827
+
3828
+
3829
+ // HP_TET_1F_2E_1V e4,e5 (E23,E24), V2
3830
+ HPRefStruct<HP_TET> reftet_1f_2e_1v
3831
+ {
3832
+ HP_TET_1F_2E_1V,
3833
+ {
3834
+ El(HP_TET, { V1, E21, E31, E41 }),
3835
+ El(HP_PRISM_1FA_0E_0V, { F234, E43, E34, E21, E41, E31 }),
3836
+ El(HP_PRISM_1FB_1EA_0V, { V3, E34, E31, E23, F234, E21 }),
3837
+ El(HP_PRISM_1FB_1EA_0V, { E24, F234, E21, V4, E43, E41 }),
3838
+ El(HP_TET_1F_1E_1VA, { E21, V2, E23, F234 }),
3839
+ El(HP_TET_1F_1E_1VB, { E21, V2, F234, E24 }),
3840
+ }
3841
+ };
3842
+
3843
+
3844
+
3845
+ // HP_TET_1F_2E_3V e4,e5 (E23,E24), V2, V3, V4
3846
+ HPRefStruct<HP_TET> reftet_1f_2e_3v
3847
+ {
3848
+ HP_TET_1F_2E_3V,
3849
+ {
3850
+ El(HP_TET, { V1, E21, E31, E41 }),
3851
+ El(HP_PRISM_1FA_0E_0V, { F234, E43, E34, E21, E41, E31 }),
3852
+ El(HP_PRISM_1FB_1EA_0V, { E32, E34, E31, E23, F234, E21 }),
3853
+ El(HP_PRISM_1FB_1EA_0V, { E24, F234, E21, E42, E43, E41 }),
3854
+ El(HP_TET_1F_1E_1VA, { E21, V2, E23, F234 }),
3855
+ El(HP_TET_1F_1E_1VB, { E21, V2, F234, E24 }),
3856
+ El(HP_TET_1F_1E_1VA, { E31, V3, E34, E32 }),
3857
+ El(HP_TET_1F_1E_1VB, { E41, V4, E42, E43 }),
3858
+ }
3859
+ };
3860
+
3861
+
3862
+
3863
+
3864
+
3865
+ /* ************************ 2 singular faces ******************** */
3866
+
3867
+
3868
+ // HP_TET_2F_0E_0V
3869
+ int reftet_2f_0e_0v_splitedges[][3] =
3870
+ {
3871
+ { 1, 2, 5 },
3872
+ { 2, 1, 6 },
3873
+ { 3, 1, 7 },
3874
+ { 3, 2, 8 },
3875
+ { 4, 1, 9 },
3876
+ { 4, 2, 10 },
3877
+ { 0, 0, 0 }
3878
+ };
3879
+
3880
+ int reftet_2f_0e_0v_splitfaces[][4] =
3881
+ {
3882
+ { 3, 1, 2, 11 },
3883
+ { 4, 1, 2, 12 },
3884
+ { 0, 0, 0, 0 }
3885
+ };
3886
+
3887
+
3888
+ HPREF_ELEMENT_TYPE reftet_2f_0e_0v_newelstypes[] =
3889
+ {
3890
+ HP_PRISM_1FA_0E_0V,
3891
+ HP_PRISM_1FA_0E_0V,
3892
+ HP_PRISM_1FB_1EA_0V,
3893
+ HP_PRISM_1FB_1EA_0V,
3894
+ HP_TET,
3895
+ HP_NONE,
3896
+ };
3897
+ int reftet_2f_0e_0v_newels[][8] =
3898
+ {
3899
+ { 2, 10, 8, 6, 12, 11 },
3900
+ { 1, 7, 9, 5, 11, 12 },
3901
+ // { 3, 11, 8, 4, 12, 10 },
3902
+ { 4, 10, 12, 3, 8, 11 },
3903
+ { 3, 7, 11, 4, 9, 12 },
3904
+ { 5, 6, 11, 12 }
3905
+ };
3906
+ HPRef_Struct reftet_2f_0e_0v =
3907
+ {
3908
+ HP_TET,
3909
+ reftet_2f_0e_0v_splitedges,
3910
+ reftet_2f_0e_0v_splitfaces,
3911
+ 0,
3912
+ reftet_2f_0e_0v_newelstypes,
3913
+ reftet_2f_0e_0v_newels
3914
+ };
3915
+
3916
+
3917
+
3918
+
3919
+
3920
+ // HP_TET_2F_0E_1V
3921
+ int reftet_2f_0e_1v_splitedges[][3] =
3922
+ {
3923
+ { 1, 2, 5 },
3924
+ { 2, 1, 6 },
3925
+ { 3, 1, 7 },
3926
+ { 3, 2, 8 },
3927
+ { 4, 1, 9 },
3928
+ { 4, 2, 10 },
3929
+ { 4, 3, 13 },
3930
+ { 0, 0, 0 }
3931
+ };
3932
+
3933
+ int reftet_2f_0e_1v_splitfaces[][4] =
3934
+ {
3935
+ { 3, 1, 2, 11 },
3936
+ { 4, 1, 2, 12 },
3937
+ { 0, 0, 0, 0 }
3938
+ };
3939
+
3940
+
3941
+ HPREF_ELEMENT_TYPE reftet_2f_0e_1v_newelstypes[] =
3942
+ {
3943
+ HP_PRISM_1FA_0E_0V,
3944
+ HP_PRISM_1FA_0E_0V,
3945
+ HP_PRISM_1FB_1EA_0V,
3946
+ HP_PRISM_1FB_1EA_0V,
3947
+ HP_TET,
3948
+ HP_TET_1F_1E_1VB,
3949
+ HP_TET_1F_1E_1VA,
3950
+ HP_NONE
3951
+ };
3952
+ int reftet_2f_0e_1v_newels[][8] =
3953
+ {
3954
+ { 2, 10, 8, 6, 12, 11 },
3955
+ { 1, 7, 9, 5, 11, 12 },
3956
+ // { 3, 11, 8, 4, 12, 10 },
3957
+ { 13, 10, 12, 3, 8, 11 },
3958
+ { 3, 7, 11, 13, 9, 12 },
3959
+ { 5, 6, 11, 12 },
3960
+ { 12, 4, 10, 13 },
3961
+ { 12, 4, 13, 9 }
3962
+ };
3963
+ HPRef_Struct reftet_2f_0e_1v =
3964
+ {
3965
+ HP_TET,
3966
+ reftet_2f_0e_1v_splitedges,
3967
+ reftet_2f_0e_1v_splitfaces,
3968
+ 0,
3969
+ reftet_2f_0e_1v_newelstypes,
3970
+ reftet_2f_0e_1v_newels
3971
+ };
3972
+
3973
+
3974
+
3975
+
3976
+
3977
+
3978
+
3979
+
3980
+ // HP_TET_2F_1E_0VA, // 2 singular faces, sing edge e4
3981
+ int reftet_2f_1e_0va_splitedges[][3] =
3982
+ {
3983
+ { 1, 2, 5 },
3984
+ { 2, 1, 6 },
3985
+ { 2, 4, 7 },
3986
+ { 3, 1, 8 },
3987
+ { 3, 2, 9 },
3988
+ { 3, 4, 10 },
3989
+ { 4, 1, 11 },
3990
+ { 4, 2, 12 },
3991
+ { 0, 0, 0 }
3992
+ };
3993
+
3994
+ int reftet_2f_1e_0va_splitfaces[][4] =
3995
+ {
3996
+ { 3, 2, 1, 13 },
3997
+ { 3, 2, 4, 14 },
3998
+ { 4, 1, 2, 15 },
3999
+ { 0, 0, 0, 0 }
4000
+ };
4001
+
4002
+ HPREF_ELEMENT_TYPE reftet_2f_1e_0va_newelstypes[] =
4003
+ {
4004
+ HP_TET,
4005
+ HP_PRISM_1FA_0E_0V,
4006
+ HP_PRISM_1FA_0E_0V,
4007
+ HP_PRISM_SINGEDGE,
4008
+ HP_PRISM_SINGEDGE,
4009
+ HP_PRISM_SINGEDGE,
4010
+ HP_TET_1F_1E_1VA,
4011
+ HP_TET_1F_1E_1VB,
4012
+ HP_TET_1F_1E_1VB,
4013
+ HP_NONE,
4014
+ };
4015
+ int reftet_2f_1e_0va_newels[][8] =
4016
+ {
4017
+ { 5, 6, 13, 15 },
4018
+ { 1, 8, 11, 5, 13, 15 },
4019
+ { 7, 12, 14, 6, 15, 13 },
4020
+ { 2, 6, 7, 9, 13, 14 },
4021
+ { 4, 15, 11, 10, 13, 8 },
4022
+ { 4, 12, 15, 10, 14, 13, },
4023
+ { 13, 3, 10, 14 },
4024
+ { 13, 3, 14, 9 },
4025
+ { 13, 3, 8, 10 },
4026
+ };
4027
+ HPRef_Struct reftet_2f_1e_0va =
4028
+ {
4029
+ HP_TET,
4030
+ reftet_2f_1e_0va_splitedges,
4031
+ reftet_2f_1e_0va_splitfaces,
4032
+ 0,
4033
+ reftet_2f_1e_0va_newelstypes,
4034
+ reftet_2f_1e_0va_newels
4035
+ };
4036
+
4037
+
4038
+ // HP_TET_2F_1E_0VB = 602, // 2 singular faces f234,f134, sing edge e5=e24
4039
+ int reftet_2f_1e_0vb_splitedges[][3] =
4040
+ {
4041
+ { 1, 2, 5 },
4042
+ { 2, 1, 6 },
4043
+ { 2, 3, 7 },
4044
+ { 3, 1, 8 },
4045
+ { 3, 2, 9 },
4046
+ { 4, 1, 10 },
4047
+ { 4, 2, 11 },
4048
+ { 4, 3, 12 },
4049
+ { 0, 0, 0 }
4050
+ };
4051
+
4052
+ int reftet_2f_1e_0vb_splitfaces[][4] =
4053
+ {
4054
+ { 4, 2, 3, 13 },
4055
+ { 4, 1, 2, 14 },
4056
+ { 3, 1, 2, 15 },
4057
+ { 0, 0, 0, 0 }
4058
+ };
4059
+
4060
+ HPREF_ELEMENT_TYPE reftet_2f_1e_0vb_newelstypes[] =
4061
+ {
4062
+ HP_TET,
4063
+ HP_PRISM_1FA_0E_0V,
4064
+ HP_PRISM_1FA_0E_0V,
4065
+ HP_PRISM_SINGEDGE,
4066
+ HP_PRISM_SINGEDGE,
4067
+ HP_PRISM_SINGEDGE,
4068
+ HP_TET_1F_1E_1VA,
4069
+ HP_TET_1F_1E_1VB,
4070
+ HP_TET_1F_1E_1VB,
4071
+ HP_NONE,
4072
+ };
4073
+ int reftet_2f_1e_0vb_newels[][8] =
4074
+ {
4075
+ { 5, 6, 15, 14 },
4076
+ { 1, 8, 10, 5, 15, 14 },
4077
+ { 7, 13, 9, 6, 14, 15 },
4078
+ { 2, 7, 6, 11, 13, 14 },
4079
+ { 3, 8, 15, 12, 10, 14 },
4080
+ { 3, 15, 9, 12, 14, 13 },
4081
+ { 14, 4, 11, 13 },
4082
+ { 14, 4, 13, 12 },
4083
+ { 14, 4, 12, 10 },
4084
+ };
4085
+
4086
+ HPRef_Struct reftet_2f_1e_0vb =
4087
+ {
4088
+ HP_TET,
4089
+ reftet_2f_1e_0vb_splitedges,
4090
+ reftet_2f_1e_0vb_splitfaces,
4091
+ 0,
4092
+ reftet_2f_1e_0vb_newelstypes,
4093
+ reftet_2f_1e_0vb_newels
4094
+ };
4095
+
4096
+
4097
+ // HP_TET_3F_0E_0V = 610, // 3 singular faces, no additional points or edges
4098
+ int reftet_3f_0e_0v_splitedges[][3] =
4099
+ {
4100
+ { 1, 2, 5 },
4101
+ { 1, 3, 6 },
4102
+ { 2, 1, 7 },
4103
+ { 2, 3, 8 },
4104
+ { 3, 1, 9 },
4105
+ { 3, 2, 10 },
4106
+ { 4, 1, 11 },
4107
+ { 4, 2, 12 },
4108
+ { 4, 3, 13 },
4109
+ { 0, 0, 0 }
4110
+ };
4111
+
4112
+ int reftet_3f_0e_0v_splitfaces[][4] =
4113
+ {
4114
+ { 1, 2, 3, 14 },
4115
+ { 2, 3, 1, 15 },
4116
+ { 3, 1, 2, 16 },
4117
+ { 4, 1, 2, 17 },
4118
+ { 4, 1, 3, 18 },
4119
+ { 4, 2, 3, 19 },
4120
+ { 0, 0, 0, 0 }
4121
+ };
4122
+
4123
+ int reftet_3f_0e_0v_splitelements[][5] =
4124
+ {
4125
+ { 4, 1, 2, 3, 20 },
4126
+ { 0 }
4127
+ };
4128
+ HPREF_ELEMENT_TYPE reftet_3f_0e_0v_newelstypes[] =
4129
+ {
4130
+ HP_TET,
4131
+ HP_PRISM_1FA_0E_0V,
4132
+ HP_PRISM_1FA_0E_0V,
4133
+ HP_PRISM_1FA_0E_0V,
4134
+
4135
+ HP_PRISM_1FB_1EA_0V,
4136
+ HP_PRISM_1FB_1EA_0V,
4137
+ HP_PRISM_1FB_1EA_0V,
4138
+ HP_PRISM_1FB_1EA_0V,
4139
+ HP_PRISM_1FB_1EA_0V,
4140
+ HP_PRISM_1FB_1EA_0V,
4141
+
4142
+ HP_TET_1F_1E_1VA, // 1E_1VA
4143
+ HP_TET_1F_0E_0V,
4144
+ HP_TET_1F_0E_0V, // 1E_1VA
4145
+ HP_TET_1F_0E_0V, // 1E_1VA
4146
+ HP_TET_1F_0E_0V, // 1E_1VA
4147
+ HP_TET_1F_0E_0V, // 1E_1VA
4148
+ HP_NONE,
4149
+ };
4150
+ int reftet_3f_0e_0v_newels[][8] =
4151
+ {
4152
+ { 14, 15, 16, 20 },
4153
+ { 5, 17, 7, 14, 20, 15 },
4154
+ { 6, 9, 18, 14, 16, 20 },
4155
+ { 10, 8, 19, 16, 15, 20 },
4156
+
4157
+ { 1, 5, 14, 11, 17, 20 },
4158
+ { 11, 18, 20, 1, 6, 14 },
4159
+ { 2, 8, 15, 12, 19, 20 },
4160
+ { 12, 17, 20, 2, 7, 15 },
4161
+ { 3, 9, 16, 13, 18, 20 },
4162
+ { 13, 19, 20, 3, 10, 16 },
4163
+
4164
+ { 20, 4, 11, 17 },
4165
+ { 20, 4, 17, 12 },
4166
+ { 20, 4, 12, 19 },
4167
+ { 20, 4, 19, 13 },
4168
+ { 20, 4, 13, 18 },
4169
+ { 20, 4, 18, 11 }
4170
+ };
4171
+ HPRef_Struct reftet_3f_0e_0v =
4172
+ {
4173
+ HP_TET,
4174
+ reftet_3f_0e_0v_splitedges,
4175
+ reftet_3f_0e_0v_splitfaces,
4176
+ reftet_3f_0e_0v_splitelements,
4177
+ reftet_3f_0e_0v_newelstypes,
4178
+ reftet_3f_0e_0v_newels
4179
+ };
4180
+
4181
+
4182
+
4183
+
4184
+
4185
+
4186
+
4187
+
4188
+ // HP_TET_ALFELD
4189
+ int reftet_Alfeld_splitedges[][3] =
4190
+ {
4191
+ { 0, 0, 0 }
4192
+ };
4193
+ int reftet_Alfeld_splitfaces[][4] =
4194
+ {
4195
+ { 0, 0, 0, 0 }
4196
+ };
4197
+
4198
+ int reftet_Alfeld_splitelements[][5] =
4199
+ {
4200
+ { 1, 2, 3, 4, 5},
4201
+ { 0 }
4202
+ };
4203
+
4204
+ HPREF_ELEMENT_TYPE reftet_Alfeld_newelstypes[] =
4205
+ {
4206
+ HP_TET, HP_TET, HP_TET, HP_TET,
4207
+ HP_NONE,
4208
+ };
4209
+
4210
+ int reftet_Alfeld_newels[][8] =
4211
+ {
4212
+ { 1, 2, 3, 5 },
4213
+ { 1, 4, 2, 5 },
4214
+ { 1, 3, 4, 5 },
4215
+ { 3, 2, 4, 5 }
4216
+ };
4217
+ HPRef_Struct reftet_Alfeld =
4218
+ {
4219
+ HP_TET,
4220
+ reftet_Alfeld_splitedges,
4221
+ reftet_Alfeld_splitfaces,
4222
+ reftet_Alfeld_splitelements,
4223
+ reftet_Alfeld_newelstypes,
4224
+ reftet_Alfeld_newels
4225
+ };
4226
+
4227
+
4228
+ /*
4229
+
4230
+ */