ngsolve 6.2.2506.post74.dev0__cp314-cp314-macosx_10_15_universal2.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.
Potentially problematic release.
This version of ngsolve might be problematic. Click here for more details.
- netgen/include/analytic_integrals.hpp +10 -0
- netgen/include/arnoldi.hpp +55 -0
- netgen/include/bandmatrix.hpp +334 -0
- netgen/include/basematrix.hpp +957 -0
- netgen/include/basevector.hpp +1268 -0
- netgen/include/bdbequations.hpp +2805 -0
- netgen/include/bdbintegrator.hpp +1660 -0
- netgen/include/bem_diffops.hpp +475 -0
- netgen/include/bessel.hpp +1064 -0
- netgen/include/bilinearform.hpp +963 -0
- netgen/include/bla.hpp +29 -0
- netgen/include/blockalloc.hpp +95 -0
- netgen/include/blockjacobi.hpp +328 -0
- netgen/include/bspline.hpp +116 -0
- netgen/include/calcinverse.hpp +141 -0
- netgen/include/cg.hpp +368 -0
- netgen/include/chebyshev.hpp +44 -0
- netgen/include/cholesky.hpp +720 -0
- netgen/include/clapack.h +7254 -0
- netgen/include/code_generation.hpp +296 -0
- netgen/include/coefficient.hpp +2033 -0
- netgen/include/coefficient_impl.hpp +19 -0
- netgen/include/coefficient_stdmath.hpp +167 -0
- netgen/include/commutingAMG.hpp +106 -0
- netgen/include/comp.hpp +79 -0
- netgen/include/compatibility.hpp +41 -0
- netgen/include/complex_wrapper.hpp +73 -0
- netgen/include/compressedfespace.hpp +110 -0
- netgen/include/contact.hpp +235 -0
- netgen/include/diagonalmatrix.hpp +154 -0
- netgen/include/differentialoperator.hpp +276 -0
- netgen/include/diffop.hpp +1286 -0
- netgen/include/diffop_impl.hpp +328 -0
- netgen/include/diffopwithfactor.hpp +123 -0
- netgen/include/discontinuous.hpp +84 -0
- netgen/include/dump.hpp +949 -0
- netgen/include/ectypes.hpp +121 -0
- netgen/include/eigen.hpp +60 -0
- netgen/include/eigensystem.hpp +18 -0
- netgen/include/elasticity_equations.hpp +595 -0
- netgen/include/elementbyelement.hpp +195 -0
- netgen/include/elementtopology.hpp +1760 -0
- netgen/include/elementtransformation.hpp +339 -0
- netgen/include/evalfunc.hpp +405 -0
- netgen/include/expr.hpp +1686 -0
- netgen/include/facetfe.hpp +175 -0
- netgen/include/facetfespace.hpp +180 -0
- netgen/include/facethofe.hpp +111 -0
- netgen/include/facetsurffespace.hpp +112 -0
- netgen/include/fe_interfaces.hpp +32 -0
- netgen/include/fem.hpp +87 -0
- netgen/include/fesconvert.hpp +14 -0
- netgen/include/fespace.hpp +1449 -0
- netgen/include/finiteelement.hpp +286 -0
- netgen/include/globalinterfacespace.hpp +77 -0
- netgen/include/globalspace.hpp +115 -0
- netgen/include/gridfunction.hpp +525 -0
- netgen/include/h1amg.hpp +124 -0
- netgen/include/h1hofe.hpp +188 -0
- netgen/include/h1hofe_impl.hpp +1262 -0
- netgen/include/h1hofefo.hpp +148 -0
- netgen/include/h1hofefo_impl.hpp +185 -0
- netgen/include/h1hofespace.hpp +167 -0
- netgen/include/h1lofe.hpp +1240 -0
- netgen/include/h1lumping.hpp +41 -0
- netgen/include/hcurl_equations.hpp +1381 -0
- netgen/include/hcurlcurlfe.hpp +2241 -0
- netgen/include/hcurlcurlfespace.hpp +78 -0
- netgen/include/hcurlfe.hpp +259 -0
- netgen/include/hcurlfe_utils.hpp +107 -0
- netgen/include/hcurlhdiv_dshape.hpp +857 -0
- netgen/include/hcurlhdivfes.hpp +308 -0
- netgen/include/hcurlhofe.hpp +175 -0
- netgen/include/hcurlhofe_impl.hpp +1871 -0
- netgen/include/hcurlhofespace.hpp +193 -0
- netgen/include/hcurllofe.hpp +1146 -0
- netgen/include/hdiv_equations.hpp +880 -0
- netgen/include/hdivdivfe.hpp +2923 -0
- netgen/include/hdivdivsurfacespace.hpp +76 -0
- netgen/include/hdivfe.hpp +206 -0
- netgen/include/hdivfe_utils.hpp +717 -0
- netgen/include/hdivfes.hpp +75 -0
- netgen/include/hdivhofe.hpp +447 -0
- netgen/include/hdivhofe_impl.hpp +1107 -0
- netgen/include/hdivhofefo.hpp +229 -0
- netgen/include/hdivhofespace.hpp +177 -0
- netgen/include/hdivhosurfacefespace.hpp +106 -0
- netgen/include/hdivlofe.hpp +773 -0
- netgen/include/hidden.hpp +74 -0
- netgen/include/householder.hpp +181 -0
- netgen/include/hypre_ams_precond.hpp +123 -0
- netgen/include/hypre_precond.hpp +73 -0
- netgen/include/integrator.hpp +2012 -0
- netgen/include/integratorcf.hpp +253 -0
- netgen/include/interpolate.hpp +49 -0
- netgen/include/intrule.hpp +2542 -0
- netgen/include/intrules_SauterSchwab.hpp +25 -0
- netgen/include/irspace.hpp +49 -0
- netgen/include/jacobi.hpp +153 -0
- netgen/include/kernels.hpp +762 -0
- netgen/include/l2hofe.hpp +194 -0
- netgen/include/l2hofe_impl.hpp +564 -0
- netgen/include/l2hofefo.hpp +542 -0
- netgen/include/l2hofespace.hpp +344 -0
- netgen/include/la.hpp +38 -0
- netgen/include/linearform.hpp +266 -0
- netgen/include/matrix.hpp +2140 -0
- netgen/include/memusage.hpp +41 -0
- netgen/include/meshaccess.hpp +1359 -0
- netgen/include/mgpre.hpp +204 -0
- netgen/include/mp_coefficient.hpp +145 -0
- netgen/include/mptools.hpp +2281 -0
- netgen/include/multigrid.hpp +42 -0
- netgen/include/multivector.hpp +447 -0
- netgen/include/mumpsinverse.hpp +187 -0
- netgen/include/mycomplex.hpp +361 -0
- netgen/include/ng_lapack.hpp +1661 -0
- netgen/include/ngblas.hpp +1232 -0
- netgen/include/ngs_defines.hpp +30 -0
- netgen/include/ngs_stdcpp_include.hpp +106 -0
- netgen/include/ngs_utils.hpp +121 -0
- netgen/include/ngsobject.hpp +1019 -0
- netgen/include/ngsstream.hpp +113 -0
- netgen/include/ngstd.hpp +72 -0
- netgen/include/nodalhofe.hpp +96 -0
- netgen/include/nodalhofe_impl.hpp +141 -0
- netgen/include/normalfacetfe.hpp +223 -0
- netgen/include/normalfacetfespace.hpp +98 -0
- netgen/include/normalfacetsurfacefespace.hpp +84 -0
- netgen/include/order.hpp +251 -0
- netgen/include/parallel_matrices.hpp +222 -0
- netgen/include/paralleldofs.hpp +340 -0
- netgen/include/parallelngs.hpp +23 -0
- netgen/include/parallelvector.hpp +269 -0
- netgen/include/pardisoinverse.hpp +200 -0
- netgen/include/periodic.hpp +129 -0
- netgen/include/plateaufespace.hpp +25 -0
- netgen/include/pml.hpp +275 -0
- netgen/include/pmltrafo.hpp +631 -0
- netgen/include/postproc.hpp +142 -0
- netgen/include/potentialtools.hpp +22 -0
- netgen/include/precomp.hpp +60 -0
- netgen/include/preconditioner.hpp +602 -0
- netgen/include/prolongation.hpp +377 -0
- netgen/include/python_comp.hpp +107 -0
- netgen/include/python_fem.hpp +89 -0
- netgen/include/python_linalg.hpp +58 -0
- netgen/include/python_ngstd.hpp +386 -0
- netgen/include/recursive_pol.hpp +4896 -0
- netgen/include/recursive_pol_tet.hpp +395 -0
- netgen/include/recursive_pol_trig.hpp +492 -0
- netgen/include/reorderedfespace.hpp +81 -0
- netgen/include/sample_sort.hpp +105 -0
- netgen/include/scalarfe.hpp +335 -0
- netgen/include/shapefunction_utils.hpp +113 -0
- netgen/include/simd_complex.hpp +329 -0
- netgen/include/smoother.hpp +253 -0
- netgen/include/solve.hpp +89 -0
- netgen/include/sparsecholesky.hpp +313 -0
- netgen/include/sparsematrix.hpp +1038 -0
- netgen/include/sparsematrix_dyn.hpp +90 -0
- netgen/include/sparsematrix_impl.hpp +1013 -0
- netgen/include/special_matrix.hpp +463 -0
- netgen/include/specialelement.hpp +125 -0
- netgen/include/statushandler.hpp +33 -0
- netgen/include/stringops.hpp +12 -0
- netgen/include/superluinverse.hpp +136 -0
- netgen/include/symbolicintegrator.hpp +850 -0
- netgen/include/symmetricmatrix.hpp +144 -0
- netgen/include/tangentialfacetfe.hpp +224 -0
- netgen/include/tangentialfacetfespace.hpp +91 -0
- netgen/include/tensor.hpp +522 -0
- netgen/include/tensorcoefficient.hpp +446 -0
- netgen/include/tensorproductintegrator.hpp +113 -0
- netgen/include/thcurlfe.hpp +128 -0
- netgen/include/thcurlfe_impl.hpp +380 -0
- netgen/include/thdivfe.hpp +80 -0
- netgen/include/thdivfe_impl.hpp +492 -0
- netgen/include/tpdiffop.hpp +461 -0
- netgen/include/tpfes.hpp +133 -0
- netgen/include/tpintrule.hpp +224 -0
- netgen/include/triangular.hpp +465 -0
- netgen/include/tscalarfe.hpp +245 -0
- netgen/include/tscalarfe_impl.hpp +1029 -0
- netgen/include/umfpackinverse.hpp +148 -0
- netgen/include/vector.hpp +1273 -0
- netgen/include/voxelcoefficientfunction.hpp +41 -0
- netgen/include/vtkoutput.hpp +198 -0
- netgen/include/vvector.hpp +208 -0
- netgen/include/webgui.hpp +92 -0
- netgen/libngbla.dylib +0 -0
- netgen/libngcomp.dylib +0 -0
- netgen/libngfem.dylib +0 -0
- netgen/libngla.dylib +0 -0
- netgen/libngsbem.dylib +0 -0
- netgen/libngsolve.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/TensorProductTools.py +210 -0
- ngsolve/__console.py +94 -0
- ngsolve/__expr.py +181 -0
- ngsolve/__init__.py +148 -0
- ngsolve/__init__.pyi +233 -0
- ngsolve/_scikit_build_core_dependencies.py +30 -0
- ngsolve/bla.pyi +1153 -0
- ngsolve/bvp.py +78 -0
- ngsolve/bvp.pyi +32 -0
- ngsolve/cmake/NGSolveConfig.cmake +102 -0
- ngsolve/cmake/ngsolve-targets-release.cmake +79 -0
- ngsolve/cmake/ngsolve-targets.cmake +163 -0
- ngsolve/comp/__init__.pyi +5449 -0
- ngsolve/comp/pml.pyi +89 -0
- ngsolve/config/__init__.py +1 -0
- ngsolve/config/__init__.pyi +43 -0
- ngsolve/config/__main__.py +4 -0
- ngsolve/config/config.py +60 -0
- ngsolve/config/config.pyi +45 -0
- ngsolve/demos/TensorProduct/__init__.py +0 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
- ngsolve/demos/__init__.py +0 -0
- ngsolve/demos/howto/__init__.py +0 -0
- ngsolve/demos/howto/hhj.py +44 -0
- ngsolve/demos/howto/hybrid_dg.py +53 -0
- ngsolve/demos/howto/mixed.py +30 -0
- ngsolve/demos/howto/nonlin.py +29 -0
- ngsolve/demos/howto/pickling.py +26 -0
- ngsolve/demos/howto/pml.py +31 -0
- ngsolve/demos/howto/taskmanager.py +20 -0
- ngsolve/demos/howto/tdnns.py +47 -0
- ngsolve/demos/howto/timeDG-skeleton.py +45 -0
- ngsolve/demos/howto/timeDG.py +38 -0
- ngsolve/demos/howto/timeDGlap.py +42 -0
- ngsolve/demos/howto/timeDGwave.py +61 -0
- ngsolve/demos/intro/__init__.py +0 -0
- ngsolve/demos/intro/adaptive.py +123 -0
- ngsolve/demos/intro/cmagnet.py +59 -0
- ngsolve/demos/intro/elasticity.py +76 -0
- ngsolve/demos/intro/navierstokes.py +74 -0
- ngsolve/demos/intro/poisson.ipynb +170 -0
- ngsolve/demos/intro/poisson.py +41 -0
- ngsolve/demos/mpi/__init__.py +0 -0
- ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
- ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
- ngsolve/demos/mpi/mpi_poisson.py +89 -0
- ngsolve/demos/mpi/mpi_timeDG.py +82 -0
- ngsolve/directsolvers.py +26 -0
- ngsolve/directsolvers.pyi +15 -0
- ngsolve/eigenvalues.py +364 -0
- ngsolve/eigenvalues.pyi +30 -0
- ngsolve/fem.pyi +1647 -0
- ngsolve/internal.py +89 -0
- ngsolve/krylovspace.py +1013 -0
- ngsolve/krylovspace.pyi +298 -0
- ngsolve/la.pyi +1230 -0
- ngsolve/meshes.py +748 -0
- ngsolve/ngs2petsc.py +310 -0
- ngsolve/ngscxx.py +42 -0
- ngsolve/ngslib.so +0 -0
- ngsolve/ngstd.pyi +59 -0
- ngsolve/nonlinearsolvers.py +203 -0
- ngsolve/nonlinearsolvers.pyi +95 -0
- ngsolve/preconditioners.py +11 -0
- ngsolve/preconditioners.pyi +7 -0
- ngsolve/solve.pyi +109 -0
- ngsolve/solve_implementation.py +168 -0
- ngsolve/solve_implementation.pyi +42 -0
- ngsolve/solvers.py +7 -0
- ngsolve/solvers.pyi +14 -0
- ngsolve/timestepping.py +185 -0
- ngsolve/timestepping.pyi +28 -0
- ngsolve/timing.py +108 -0
- ngsolve/timing.pyi +54 -0
- ngsolve/utils.py +167 -0
- ngsolve/utils.pyi +273 -0
- ngsolve/webgui.py +670 -0
- ngsolve-6.2.2506.post74.dev0.data/data/Netgen.icns +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngscxx +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsld +13 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsolve.tcl +648 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngspy +2 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.geo +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.vol +240 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.in2d +41 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.vol +614 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.geo +12 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.vol +2560 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.geo +19 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.vol +1832 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.geo +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.in2d +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.vol +149 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/METADATA +13 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/RECORD +315 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/WHEEL +5 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/licenses/LICENSE +504 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#ifndef FILE_NGS_DEFINES
|
|
2
|
+
#define FILE_NGS_DEFINES
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: ngs_defines.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 21. Feb. 03 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// performs range-checking
|
|
14
|
+
// #define DEBUG
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
// maximal system dimension (3D elasticity = 3, piezo = 4)
|
|
18
|
+
// 8 for multiharmonic
|
|
19
|
+
|
|
20
|
+
#ifndef MAX_SYS_DIM
|
|
21
|
+
#define MAX_SYS_DIM 3
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#ifndef MAX_CACHEBLOCKS
|
|
25
|
+
#define MAX_CACHEBLOCKS 0
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
#endif
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#ifndef NGS_STDCPP_INCLUDE_HPP
|
|
2
|
+
#define NGS_STDCPP_INCLUDE_HPP
|
|
3
|
+
|
|
4
|
+
#include <core/ngcore_api.hpp>
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
#ifdef __GNUC__
|
|
9
|
+
#if( __GNUC__==8 && __GNUC_MINOR__<=2)
|
|
10
|
+
// gcc 8.1/8.2 procudes empty loops in code like
|
|
11
|
+
// for (auto vb : {VOL, BND})
|
|
12
|
+
#error "This code does not compile with GCC 8.1/8.2, please upgrade your compiler"
|
|
13
|
+
#endif
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
#if defined(__AVX512F__)
|
|
17
|
+
#ifdef __GNUC__
|
|
18
|
+
#if( __GNUC__==9 && __GNUC_MINOR__<=2)
|
|
19
|
+
// gcc 9.1/9.2 generates wrong code on avx512_skylake platforms:
|
|
20
|
+
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93009
|
|
21
|
+
#error "GCC 9.1/9.2 generates wrong code on AVX512 platforms (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93009 ). Either build for a different architecture (cmake -DUSE_NATIVE_ARCH=OFF), or use a different compiler (like GCC 8.3 or Clang)"
|
|
22
|
+
#endif
|
|
23
|
+
#endif
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
#if defined(__GNUC__) && !defined(__clang__)
|
|
28
|
+
#pragma GCC diagnostic ignored "-Wvirtual-move-assign"
|
|
29
|
+
#pragma GCC diagnostic ignored "-Wattributes"
|
|
30
|
+
// this one silences warning: requested alignment 4096 is larger than 256
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
#include <iostream>
|
|
35
|
+
#include <fstream>
|
|
36
|
+
#include <sstream>
|
|
37
|
+
#include <iomanip>
|
|
38
|
+
|
|
39
|
+
#include <cstdlib>
|
|
40
|
+
#include <cstdio>
|
|
41
|
+
#include <cmath>
|
|
42
|
+
#include <ctime>
|
|
43
|
+
#include <limits>
|
|
44
|
+
#include <cstring>
|
|
45
|
+
|
|
46
|
+
#include <new>
|
|
47
|
+
#include <exception>
|
|
48
|
+
#include <string>
|
|
49
|
+
#include <typeindex>
|
|
50
|
+
#include <typeinfo>
|
|
51
|
+
#include <memory>
|
|
52
|
+
#include <initializer_list>
|
|
53
|
+
#include <functional>
|
|
54
|
+
#include <atomic>
|
|
55
|
+
#include <mutex>
|
|
56
|
+
#include <list>
|
|
57
|
+
#include <array>
|
|
58
|
+
#include <optional>
|
|
59
|
+
#include <variant>
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
#ifndef M_PI
|
|
63
|
+
#define M_PI 3.14159265358979323846
|
|
64
|
+
#endif
|
|
65
|
+
|
|
66
|
+
// __host__ __device__ for CUDA
|
|
67
|
+
#define HD NETGEN_HD
|
|
68
|
+
|
|
69
|
+
#define ALWAYS_INLINE NETGEN_ALWAYS_INLINE
|
|
70
|
+
#define INLINE NETGEN_INLINE
|
|
71
|
+
#define LAMBDA_INLINE NETGEN_LAMBDA_INLINE
|
|
72
|
+
|
|
73
|
+
#ifdef NETGEN_VLA
|
|
74
|
+
#define VLA
|
|
75
|
+
#endif
|
|
76
|
+
|
|
77
|
+
// from https://stackoverflow.com/questions/60802864/emulating-gccs-builtin-unreachable-in-visual-studio
|
|
78
|
+
#ifdef __GNUC__ // GCC 4.8+, Clang, Intel and other compilers compatible with GCC (-std=c++0x or above)
|
|
79
|
+
[[noreturn]] inline __attribute__((always_inline)) void unreachable() {__builtin_unreachable();}
|
|
80
|
+
#elif defined(_MSC_VER) // MSVC
|
|
81
|
+
[[noreturn]] __forceinline void unreachable() {__assume(false);}
|
|
82
|
+
#else // ???
|
|
83
|
+
inline void unreachable() {}
|
|
84
|
+
#endif
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
#ifndef __assume
|
|
88
|
+
#ifdef __GNUC__
|
|
89
|
+
#ifdef __clang__
|
|
90
|
+
#define __assume(cond) __builtin_assume(cond)
|
|
91
|
+
#else
|
|
92
|
+
#define __assume(cond) if (!(cond)) __builtin_unreachable(); else;
|
|
93
|
+
#endif
|
|
94
|
+
#else
|
|
95
|
+
#define __assume(cond)
|
|
96
|
+
#endif
|
|
97
|
+
#endif
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
#ifdef NGS_EXPORTS
|
|
101
|
+
#define NGS_DLL_HEADER NGCORE_API_EXPORT
|
|
102
|
+
#else
|
|
103
|
+
#define NGS_DLL_HEADER NGCORE_API_IMPORT
|
|
104
|
+
#endif
|
|
105
|
+
|
|
106
|
+
#endif
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#ifndef FILE_NGS_UTILS
|
|
2
|
+
#define FILE_NGS_UTILS
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: ngs_utils.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: Oct. 14 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
#include <filesystem>
|
|
12
|
+
#include <string>
|
|
13
|
+
|
|
14
|
+
namespace ngstd
|
|
15
|
+
{
|
|
16
|
+
using namespace std;
|
|
17
|
+
|
|
18
|
+
template <typename T>
|
|
19
|
+
INLINE T RemoveConst (const T & x)
|
|
20
|
+
{
|
|
21
|
+
return x;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// //////////////// integral constants
|
|
26
|
+
|
|
27
|
+
// template <int N>
|
|
28
|
+
// using IC = integral_constant<int,N>;
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
namespace std
|
|
32
|
+
{
|
|
33
|
+
template <int I1, int I2>
|
|
34
|
+
constexpr INLINE integral_constant<int,I1+I2>
|
|
35
|
+
operator+ (integral_constant<int,I1> /* i1 */,
|
|
36
|
+
integral_constant<int,I2> /* i2 */)
|
|
37
|
+
{
|
|
38
|
+
return integral_constant<int,I1+I2>();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// may be used as an index e.g. for FlatVector
|
|
43
|
+
template <int N>
|
|
44
|
+
struct is_integral<ngstd::IC<N>>
|
|
45
|
+
{
|
|
46
|
+
enum { value = 1 };
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
#define aligned_alloca(size,align) (( (size_t)alloca(size+align-1)+align-1) & -align)
|
|
54
|
+
#ifdef VLA
|
|
55
|
+
#define STACK_ARRAY(TYPE,VAR,SIZE) TYPE VAR[SIZE]
|
|
56
|
+
#else
|
|
57
|
+
#define STACK_ARRAY(TYPE,VAR,SIZE) TYPE * VAR = (TYPE*)aligned_alloca((SIZE)*sizeof(TYPE), alignof(TYPE))
|
|
58
|
+
#endif
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
// technique from
|
|
64
|
+
// http://stackoverflow.com/questions/14939190/boost-shared-from-this-and-multiple-inheritance
|
|
65
|
+
|
|
66
|
+
template<typename T>
|
|
67
|
+
struct enable_shared_from_this_virtual;
|
|
68
|
+
|
|
69
|
+
class enable_shared_from_this_virtual_base : public std::enable_shared_from_this<enable_shared_from_this_virtual_base>
|
|
70
|
+
{
|
|
71
|
+
typedef std::enable_shared_from_this<enable_shared_from_this_virtual_base> base_type;
|
|
72
|
+
template<typename T>
|
|
73
|
+
friend struct enable_shared_from_this_virtual;
|
|
74
|
+
|
|
75
|
+
std::shared_ptr<enable_shared_from_this_virtual_base> shared_from_this()
|
|
76
|
+
{
|
|
77
|
+
return base_type::shared_from_this();
|
|
78
|
+
}
|
|
79
|
+
std::shared_ptr<enable_shared_from_this_virtual_base const> shared_from_this() const
|
|
80
|
+
{
|
|
81
|
+
return base_type::shared_from_this();
|
|
82
|
+
}
|
|
83
|
+
public:
|
|
84
|
+
virtual ~enable_shared_from_this_virtual_base() { }
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
template<typename T>
|
|
88
|
+
struct enable_shared_from_this_virtual: virtual enable_shared_from_this_virtual_base
|
|
89
|
+
{
|
|
90
|
+
typedef enable_shared_from_this_virtual_base base_type;
|
|
91
|
+
|
|
92
|
+
public:
|
|
93
|
+
std::shared_ptr<T> shared_from_this()
|
|
94
|
+
{
|
|
95
|
+
std::shared_ptr<T> result(base_type::shared_from_this(), static_cast<T*>(this));
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
std::shared_ptr<T const> shared_from_this() const
|
|
100
|
+
{
|
|
101
|
+
std::shared_ptr<T const> result(base_type::shared_from_this(), static_cast<T const*>(this));
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
template <typename T>
|
|
109
|
+
struct has_call_operator
|
|
110
|
+
{
|
|
111
|
+
template <typename C> static std::true_type check( decltype( sizeof(&C::operator() )) ) { return std::true_type(); }
|
|
112
|
+
template <typename> static std::false_type check(...) { return std::false_type(); }
|
|
113
|
+
typedef decltype( check<T>(sizeof(char)) ) type;
|
|
114
|
+
static constexpr type value = type();
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
#endif
|