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,542 @@
|
|
|
1
|
+
#ifndef FILE_L2HOFEFO
|
|
2
|
+
#define FILE_L2HOFEFO
|
|
3
|
+
|
|
4
|
+
/*********************************************************************/
|
|
5
|
+
/* File: l2hofefo.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: Apr. 2009 */
|
|
8
|
+
/*********************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
// #include "tscalarfe_impl.hpp"
|
|
12
|
+
// #include "l2hofe_impl.hpp"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
template <int O, int IX, int IY>
|
|
21
|
+
class Cl_IterateTrig
|
|
22
|
+
{
|
|
23
|
+
public:
|
|
24
|
+
template <typename FUNC>
|
|
25
|
+
static INLINE void Do (FUNC f)
|
|
26
|
+
{
|
|
27
|
+
Cl_IterateTrig<O,IX,IY-1>::Do(f);
|
|
28
|
+
f(IX,IY);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
template <int O, int IX>
|
|
33
|
+
class Cl_IterateTrig<O,IX,0>
|
|
34
|
+
{
|
|
35
|
+
public:
|
|
36
|
+
template <typename FUNC>
|
|
37
|
+
static INLINE void Do (FUNC f)
|
|
38
|
+
{
|
|
39
|
+
Cl_IterateTrig<O,IX-1,O-IX+1>::Do(f);
|
|
40
|
+
f(IX,0);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
template <int O>
|
|
45
|
+
class Cl_IterateTrig<O,0,0>
|
|
46
|
+
{
|
|
47
|
+
public:
|
|
48
|
+
template <typename FUNC>
|
|
49
|
+
static INLINE void Do (FUNC f)
|
|
50
|
+
{
|
|
51
|
+
f(0,0);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
template <int O, int IX, int IY>
|
|
64
|
+
class Cl_IterateTrig3b
|
|
65
|
+
{
|
|
66
|
+
public:
|
|
67
|
+
template <typename FUNC>
|
|
68
|
+
static INLINE void Do (FUNC && f)
|
|
69
|
+
{
|
|
70
|
+
Cl_IterateTrig3b<O,IX,IY-1>::Do(f);
|
|
71
|
+
f(IX,IY);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
template <int O, int IX>
|
|
75
|
+
class Cl_IterateTrig3b<O,IX,0>
|
|
76
|
+
{
|
|
77
|
+
public:
|
|
78
|
+
template <typename FUNC>
|
|
79
|
+
static INLINE void Do (FUNC && f)
|
|
80
|
+
{
|
|
81
|
+
f(IX,0);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
template <int O, int IX>
|
|
87
|
+
class Cl_IterateTrig3
|
|
88
|
+
{
|
|
89
|
+
public:
|
|
90
|
+
template <typename FUNC>
|
|
91
|
+
static INLINE void Do (FUNC && f)
|
|
92
|
+
{
|
|
93
|
+
Cl_IterateTrig3<O,IX-1>::Do(f);
|
|
94
|
+
Cl_IterateTrig3b<O,IX,O-IX>::Do (f);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
template <int O>
|
|
98
|
+
class Cl_IterateTrig3<O,0>
|
|
99
|
+
{
|
|
100
|
+
public:
|
|
101
|
+
template <typename FUNC>
|
|
102
|
+
static INLINE void Do (FUNC && f)
|
|
103
|
+
{
|
|
104
|
+
Cl_IterateTrig3b<O,0,O>::Do (f);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
template <int NUM, typename FUNC>
|
|
120
|
+
INLINE void IterateTrig (FUNC && f)
|
|
121
|
+
{
|
|
122
|
+
// Cl_IterateTrig<NUM,NUM,0>::Do(f);
|
|
123
|
+
Cl_IterateTrig3<NUM,NUM>::Do(f);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
namespace ngfem
|
|
133
|
+
{
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
High order finite elements for L2 of fixed order
|
|
139
|
+
*/
|
|
140
|
+
|
|
141
|
+
class GenericOrientation;
|
|
142
|
+
template <int V1, int V2, int V3, int V4=-1> class FixedOrientation;
|
|
143
|
+
|
|
144
|
+
template <ELEMENT_TYPE ET, int ORDER, typename ORIENTATION = GenericOrientation>
|
|
145
|
+
class L2HighOrderFEFO_Shapes;
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
template <ELEMENT_TYPE ET, int ORDER,
|
|
150
|
+
typename ORIENTATION = GenericOrientation,
|
|
151
|
+
typename BASE = L2HighOrderFE<ET, L2HighOrderFEFO_Shapes<ET,ORDER,ORIENTATION> > >
|
|
152
|
+
|
|
153
|
+
class L2HighOrderFEFO : public BASE
|
|
154
|
+
{
|
|
155
|
+
protected:
|
|
156
|
+
// using typename BASE::T_IMPL;
|
|
157
|
+
using typename BASE::T_SHAPES;
|
|
158
|
+
typedef L2HighOrderFEFO_Shapes<ET,ORDER,ORIENTATION> SHAPES;
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
enum { DIM = ET_trait<ET>::DIM };
|
|
162
|
+
|
|
163
|
+
using ScalarFiniteElement<DIM>::ndof;
|
|
164
|
+
using ScalarFiniteElement<DIM>::order;
|
|
165
|
+
using DGFiniteElement<ET>::vnums;
|
|
166
|
+
|
|
167
|
+
public:
|
|
168
|
+
|
|
169
|
+
INLINE L2HighOrderFEFO ()
|
|
170
|
+
{
|
|
171
|
+
for (int i = 0; i < ET_trait<ET>::N_VERTEX; i++) vnums[i] = i;
|
|
172
|
+
order = ORDER;
|
|
173
|
+
ndof = SHAPES::NDOF;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/*
|
|
177
|
+
virtual void PrecomputeShapes (const IntegrationRule & ir)
|
|
178
|
+
{
|
|
179
|
+
int classnr = ET_trait<ET>::GetClassNr (vnums);
|
|
180
|
+
|
|
181
|
+
PrecomputedScalShapes<DIM> * pre = new PrecomputedScalShapes<DIM> (ir.GetNIP(), ndof);
|
|
182
|
+
|
|
183
|
+
Mat<SHAPES::NDOF, DIM> dshapes;
|
|
184
|
+
for (int i = 0; i < ir.GetNIP(); i++)
|
|
185
|
+
{
|
|
186
|
+
this->CalcShape (ir[i], pre->shapes.Row(i));
|
|
187
|
+
this->CalcDShape (ir[i], FlatMatrix<> (dshapes));
|
|
188
|
+
pre->dshapes.Rows (DIM*i, DIM*(i+1)) = Trans (dshapes);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
SHAPES::precomp.Add (classnr, order, ir.GetNIP(), pre);
|
|
192
|
+
}
|
|
193
|
+
*/
|
|
194
|
+
|
|
195
|
+
HD virtual void Evaluate (const IntegrationRule & ir, BareSliceVector<double> coefs, FlatVector<double> vals) const
|
|
196
|
+
{
|
|
197
|
+
// static Timer t("evaluate");
|
|
198
|
+
// RegionTimer r(t);
|
|
199
|
+
// t.AddFlops (ir.GetNIP()*coefs.Size());
|
|
200
|
+
|
|
201
|
+
/*
|
|
202
|
+
#ifndef __CUDA_ARCH__
|
|
203
|
+
int classnr = ET_trait<ET>::GetClassNr (vnums);
|
|
204
|
+
PrecomputedScalShapes<DIM> * pre = SHAPES::precomp.Get (classnr, order, ir.GetNIP());
|
|
205
|
+
if (pre)
|
|
206
|
+
vals = FlatMatrixFixWidth<SHAPES::NDOF> (pre->shapes) * coefs;
|
|
207
|
+
else
|
|
208
|
+
#endif
|
|
209
|
+
*/
|
|
210
|
+
this -> BASE::T_IMPL::Evaluate (ir, coefs, vals);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
HD virtual void EvaluateGradTrans (const IntegrationRule & ir, BareSliceMatrix<> values, BareSliceVector<> coefs) const
|
|
214
|
+
{
|
|
215
|
+
/*
|
|
216
|
+
static Timer t("evaluate grad trans");
|
|
217
|
+
RegionTimer r(t);
|
|
218
|
+
t.AddFlops (DIM*ir.GetNIP()*coefs.Size());
|
|
219
|
+
*/
|
|
220
|
+
#ifndef __CUDA_ARCH__
|
|
221
|
+
int classnr = ET_trait<ET>::GetClassNr (vnums);
|
|
222
|
+
|
|
223
|
+
PrecomputedScalShapes<DIM> * pre = SHAPES::precomp.Get (classnr, order, ir.GetNIP());
|
|
224
|
+
if (pre)
|
|
225
|
+
// coefs.Range(0,SHAPES::NDOF) = Trans (FlatMatrixFixWidth<SHAPES::NDOF> (pre->dshapes)) * FlatVector<> (DIM*SHAPES::NDOF, &values(0,0));
|
|
226
|
+
coefs.Range(0,SHAPES::NDOF) = Trans (pre->dshapes) * FlatVector<> (DIM*SHAPES::NDOF, &values(0,0));
|
|
227
|
+
else
|
|
228
|
+
#endif
|
|
229
|
+
BASE::T_IMPL:: EvaluateGradTrans (ir, values, coefs);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/*
|
|
233
|
+
NGS_DLL_HEADER virtual void GetTrace (int facet, FlatVector<> coefs, FlatVector<> fcoefs) const
|
|
234
|
+
{
|
|
235
|
+
cout << "L2HighOrderFEFO::GetTrace not available" << endl;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
NGS_DLL_HEADER virtual void GetTraceTrans (int facet, FlatVector<> fcoefs, FlatVector<> coefs) const
|
|
239
|
+
{
|
|
240
|
+
cout << "L2HighOrderFEFO::GetTraceTrans not available" << endl;
|
|
241
|
+
}
|
|
242
|
+
*/
|
|
243
|
+
|
|
244
|
+
HD NGS_DLL_HEADER virtual void GetDiagMassMatrix (FlatVector<> mass) const
|
|
245
|
+
{
|
|
246
|
+
if (ET == ET_SEGM)
|
|
247
|
+
{
|
|
248
|
+
Iterate<ORDER+1> ([&] (int i) { mass[i] = 1.0 / (2*i+1); });
|
|
249
|
+
}
|
|
250
|
+
else if (ET == ET_TRIG)
|
|
251
|
+
{
|
|
252
|
+
int ii = 0;
|
|
253
|
+
|
|
254
|
+
IterateTrig<ORDER> ([&] (int ix, int iy) LAMBDA_INLINE
|
|
255
|
+
{
|
|
256
|
+
mass[ii] = 1.0 / ((2 * ix + 1) * (2 * ix + 2 * iy + 2));
|
|
257
|
+
ii++;
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
/*
|
|
261
|
+
for (int ix = 0, ii = 0; ix <= ORDER; ix++)
|
|
262
|
+
for (int iy = 0; iy <= ORDER - ix; iy++, ii++)
|
|
263
|
+
mass(ii) = 1.0 / ((2 * iy + 1) * (2 * ix + 2 * iy + 2));
|
|
264
|
+
*/
|
|
265
|
+
}
|
|
266
|
+
else if (ET == ET_TET)
|
|
267
|
+
{
|
|
268
|
+
/*
|
|
269
|
+
int order = ORDER;
|
|
270
|
+
for (int ix = 0, ii = 0; ix <= order; ix++)
|
|
271
|
+
for (int iy = 0; iy <= order - ix; iy++)
|
|
272
|
+
for (int iz = 0; iz <= order - ix-iy; iz++, ii++)
|
|
273
|
+
mass(ii) = 1.0 / ((2 * ix + 1) * (2 * ix + 2 * iy + 2) * (2 * ix + 2 * iy + 2 * iz + 3));
|
|
274
|
+
*/
|
|
275
|
+
int ii = 0;
|
|
276
|
+
Iterate<ORDER+1>
|
|
277
|
+
([mass, &ii] (auto ix)
|
|
278
|
+
{
|
|
279
|
+
Iterate<ORDER+1-ix.value>
|
|
280
|
+
([mass, ix, &ii] (auto iy)
|
|
281
|
+
{
|
|
282
|
+
Iterate<ORDER+1-ix.value-iy.value>
|
|
283
|
+
([mass, ix, iy, &ii] (auto iz)
|
|
284
|
+
{
|
|
285
|
+
mass(ii) = 1.0 / ((2 * ix + 1) * (2 * ix + 2 * iy + 2) * (2 * ix + 2 * iy + 2 * iz + 3));
|
|
286
|
+
ii++;
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
}
|
|
292
|
+
#ifndef __CUDA_ARCH__
|
|
293
|
+
else
|
|
294
|
+
{
|
|
295
|
+
cerr << "L2HighOrderFEFO::getdiagmass not implemented" << endl;
|
|
296
|
+
}
|
|
297
|
+
#endif
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
High order triangular finite element
|
|
306
|
+
*/
|
|
307
|
+
template <int ORDER>
|
|
308
|
+
class L2HighOrderFEFO_Shapes<ET_SEGM, ORDER> : public L2HighOrderFEFO<ET_SEGM, ORDER>
|
|
309
|
+
{
|
|
310
|
+
using L2HighOrderFEFO<ET_SEGM, ORDER>::ndof;
|
|
311
|
+
using L2HighOrderFEFO<ET_SEGM, ORDER>::vnums;
|
|
312
|
+
using L2HighOrderFEFO<ET_SEGM, ORDER>::DIM;
|
|
313
|
+
|
|
314
|
+
public:
|
|
315
|
+
|
|
316
|
+
enum { NDOF = (ORDER+1) };
|
|
317
|
+
|
|
318
|
+
template<typename Tx, typename TFA>
|
|
319
|
+
INLINE void T_CalcShape (const TIP<DIM,Tx> & ip, TFA & shape) const
|
|
320
|
+
{
|
|
321
|
+
Tx lam[2] = { ip.x, 1-ip.x };
|
|
322
|
+
IVec<2> e = this -> GetEdgeSort (0, vnums);
|
|
323
|
+
// LegendrePolynomial_Old::EvalFO<ORDER> (lam[e[1]]-lam[e[0]], shape);
|
|
324
|
+
LegendrePolynomial::EvalFO<ORDER> (lam[e[1]]-lam[e[0]], shape);
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
High order triangular finite element
|
|
333
|
+
*/
|
|
334
|
+
template <int ORDER>
|
|
335
|
+
class L2HighOrderFEFO_Shapes<ET_TRIG, ORDER, GenericOrientation>
|
|
336
|
+
: public L2HighOrderFEFO<ET_TRIG, ORDER, GenericOrientation>
|
|
337
|
+
{
|
|
338
|
+
using L2HighOrderFEFO<ET_TRIG, ORDER>::ndof;
|
|
339
|
+
using L2HighOrderFEFO<ET_TRIG, ORDER>::vnums;
|
|
340
|
+
|
|
341
|
+
public:
|
|
342
|
+
enum { NDOF = (ORDER+1)*(ORDER+2)/2 };
|
|
343
|
+
|
|
344
|
+
template<typename Tx, typename TFA>
|
|
345
|
+
INLINE void T_CalcShape (const TIP<2,Tx> & ip, TFA & shape) const
|
|
346
|
+
{
|
|
347
|
+
Tx lam[3] = { ip.x, ip.y, 1-ip.x-ip.y };
|
|
348
|
+
IVec<4> f = this -> GetFaceSort (0, vnums);
|
|
349
|
+
|
|
350
|
+
Tx x = lam[f[0]];
|
|
351
|
+
Tx y = lam[f[1]];
|
|
352
|
+
|
|
353
|
+
int ii = 0;
|
|
354
|
+
JacobiPolynomialAlpha jac(1);
|
|
355
|
+
LegendrePolynomial::EvalScaled
|
|
356
|
+
(IC<ORDER>(),
|
|
357
|
+
y-(1-x-y), 1-x,
|
|
358
|
+
SBLambda ([&] (auto i, Tx val) LAMBDA_INLINE
|
|
359
|
+
{
|
|
360
|
+
// JacobiPolynomialFix<1+2*i,0> jac;
|
|
361
|
+
jac.EvalMult (IC<ORDER-i.value>(), 2*x-1, val,
|
|
362
|
+
SBLambda([&](auto j, Tx v2)
|
|
363
|
+
{
|
|
364
|
+
shape[ii++] = v2;
|
|
365
|
+
}));
|
|
366
|
+
jac.IncAlpha2();
|
|
367
|
+
}));
|
|
368
|
+
}
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
template <int ORDER, int V1, int V2, int V3>
|
|
373
|
+
class L2HighOrderFEFO_Shapes<ET_TRIG, ORDER, FixedOrientation<V1,V2,V3>>
|
|
374
|
+
: public L2HighOrderFEFO<ET_TRIG, ORDER, FixedOrientation<V1,V2,V3>>
|
|
375
|
+
{
|
|
376
|
+
using L2HighOrderFEFO<ET_TRIG, ORDER, FixedOrientation<V1,V2,V3>>::ndof;
|
|
377
|
+
using L2HighOrderFEFO<ET_TRIG, ORDER, FixedOrientation<V1,V2,V3>>::vnums;
|
|
378
|
+
using L2HighOrderFEFO<ET_TRIG, ORDER, FixedOrientation<V1,V2,V3>>::DIM;
|
|
379
|
+
|
|
380
|
+
public:
|
|
381
|
+
enum { NDOF = (ORDER+1)*(ORDER+2)/2 };
|
|
382
|
+
|
|
383
|
+
template<typename Tx, typename TFA>
|
|
384
|
+
INLINE void T_CalcShape (const TIP<DIM,Tx> & ip, TFA & shape) const
|
|
385
|
+
{
|
|
386
|
+
Tx lam[3] = { ip.x, ip.y, 1-ip.x-ip.y };
|
|
387
|
+
|
|
388
|
+
IVec<3> hvnums(V1,V2,V3);
|
|
389
|
+
IVec<4> f = this -> GetFaceSort (0, hvnums);
|
|
390
|
+
|
|
391
|
+
Tx x = lam[f[0]];
|
|
392
|
+
Tx y = lam[f[1]];
|
|
393
|
+
|
|
394
|
+
int ii = 0;
|
|
395
|
+
JacobiPolynomialAlpha jac(1);
|
|
396
|
+
LegendrePolynomial::EvalScaled
|
|
397
|
+
(IC<ORDER>(),
|
|
398
|
+
y-(1-x-y), 1-x,
|
|
399
|
+
SBLambda ([&] (auto i, Tx val) LAMBDA_INLINE
|
|
400
|
+
{
|
|
401
|
+
jac.EvalMult (IC<ORDER-i.value>(), 2*x-1, val, shape+ii);
|
|
402
|
+
ii += IC<ORDER-i.value+1>();
|
|
403
|
+
jac.IncAlpha2();
|
|
404
|
+
}));
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
template <int ORDER, int V1, int V2, int V3, int V4>
|
|
409
|
+
class L2HighOrderFEFO_Shapes<ET_TET, ORDER, FixedOrientation<V1,V2,V3,V4>>
|
|
410
|
+
: public L2HighOrderFEFO<ET_TET, ORDER, FixedOrientation<V1,V2,V3,V4>>
|
|
411
|
+
{
|
|
412
|
+
using L2HighOrderFEFO<ET_TET, ORDER, FixedOrientation<V1,V2,V3,V4>>::ndof;
|
|
413
|
+
using L2HighOrderFEFO<ET_TET, ORDER, FixedOrientation<V1,V2,V3,V4>>::vnums;
|
|
414
|
+
|
|
415
|
+
public:
|
|
416
|
+
enum { NDOF = (ORDER+1)*(ORDER+2)*(ORDER+3)/6 };
|
|
417
|
+
|
|
418
|
+
template<typename Tx, typename TFA>
|
|
419
|
+
INLINE void T_CalcShape (const TIP<3,Tx> & ip, TFA & shape) const
|
|
420
|
+
{
|
|
421
|
+
// Tx lami[4] = { ip.x, ip.y, ip.z, 1-ip.x-ip.y-ip.z };
|
|
422
|
+
//
|
|
423
|
+
// IVec<4> hvnums(V1,V2,V3,V4);
|
|
424
|
+
// unsigned char sort[4] = { 0, 1, 2, 3 };
|
|
425
|
+
// if (hvnums[sort[0]] > hvnums[sort[1]]) Swap (sort[0], sort[1]);
|
|
426
|
+
// if (hvnums[sort[2]] > hvnums[sort[3]]) Swap (sort[2], sort[3]);
|
|
427
|
+
// if (hvnums[sort[0]] > hvnums[sort[2]]) Swap (sort[0], sort[2]);
|
|
428
|
+
// if (hvnums[sort[1]] > hvnums[sort[3]]) Swap (sort[1], sort[3]);
|
|
429
|
+
// if (hvnums[sort[1]] > hvnums[sort[2]]) Swap (sort[1], sort[2]);
|
|
430
|
+
//
|
|
431
|
+
// Tx lamis[4];
|
|
432
|
+
// for (int i = 0; i < 4; i++)
|
|
433
|
+
// lamis[i] = lami[sort[i]];
|
|
434
|
+
|
|
435
|
+
// Hack: only working because there are currently only 2 possibilities for V1-V4:
|
|
436
|
+
// 0,1,2,3
|
|
437
|
+
// 0,1,3,2
|
|
438
|
+
const Tx l4 = 1-ip.x-ip.y-ip.z;
|
|
439
|
+
auto const lamis = make_tuple( ip.x, ip.y, V3<V4 ? ip.z : l4, V3<V4 ? l4 : ip.z );
|
|
440
|
+
const auto & lami0 = get<0>(lamis);
|
|
441
|
+
const auto & lami1 = get<1>(lamis);
|
|
442
|
+
const auto & lami2 = get<2>(lamis);
|
|
443
|
+
const auto & lami3 = get<3>(lamis);
|
|
444
|
+
|
|
445
|
+
size_t ii = 0;
|
|
446
|
+
LegendrePolynomial leg;
|
|
447
|
+
JacobiPolynomialAlpha jac1(1);
|
|
448
|
+
leg.EvalScaled
|
|
449
|
+
(IC<ORDER>(), lami2-lami3, lami2+lami3,
|
|
450
|
+
SBLambda ([&](auto k, Tx polz) LAMBDA_INLINE
|
|
451
|
+
{
|
|
452
|
+
JacobiPolynomialAlpha jac2(2*k+2);
|
|
453
|
+
jac1.EvalScaledMult
|
|
454
|
+
(IC<ORDER-k.value>(), lami1-lami2-lami3, 1-lami0, polz,
|
|
455
|
+
SBLambda ([&] (auto j, Tx polsy) LAMBDA_INLINE
|
|
456
|
+
{
|
|
457
|
+
jac2.EvalMult(IC<ORDER-k.value-j.value>(), 2 * lami0 - 1, polsy, shape+ii);
|
|
458
|
+
ii += IC<ORDER-k.value-j.value+1>();
|
|
459
|
+
jac2.IncAlpha2();
|
|
460
|
+
}));
|
|
461
|
+
jac1.IncAlpha2();
|
|
462
|
+
}));
|
|
463
|
+
/*
|
|
464
|
+
size_t ii = 0;
|
|
465
|
+
LegendrePolynomial leg;
|
|
466
|
+
// JacobiPolynomialAlpha jac1(1);
|
|
467
|
+
leg.EvalScaled
|
|
468
|
+
(IC<ORDER>(), lami[0], lami[0]+lami[1],
|
|
469
|
+
SBLambda ([&](auto k, Tx polz) LAMBDA_INLINE
|
|
470
|
+
{
|
|
471
|
+
JacobiPolynomialFix<1+2*k,0> jac1;
|
|
472
|
+
// JacobiPolynomialAlpha jac2(2*k+2);
|
|
473
|
+
jac1.EvalScaledMult
|
|
474
|
+
(IC<ORDER-k>(), lami[1], lami[0]+lami[1]+lami[2], polz,
|
|
475
|
+
SBLambda ([&] (auto j, Tx polsy) LAMBDA_INLINE
|
|
476
|
+
{
|
|
477
|
+
JacobiPolynomialFix<2+2*k+2*j,0> jac2;
|
|
478
|
+
jac2.EvalMult(IC<ORDER-k-j>(), lami[2], polsy, shape+ii);
|
|
479
|
+
ii += IC<ORDER-k-j+1>();
|
|
480
|
+
// jac2.IncAlpha2();
|
|
481
|
+
}));
|
|
482
|
+
// jac1.IncAlpha2();
|
|
483
|
+
}));
|
|
484
|
+
*/
|
|
485
|
+
}
|
|
486
|
+
};
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
#ifdef FILE_L2HOFEFO_CPP
|
|
491
|
+
#define L2HOFEFO_EXTERN
|
|
492
|
+
|
|
493
|
+
#else
|
|
494
|
+
#define L2HOFEFO_EXTERN extern
|
|
495
|
+
#endif
|
|
496
|
+
|
|
497
|
+
/*
|
|
498
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,0>, ET_TRIG, DGFiniteElement<2>>;
|
|
499
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,1>, ET_TRIG, DGFiniteElement<2>>;
|
|
500
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,2>, ET_TRIG, DGFiniteElement<2>>;
|
|
501
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,3>, ET_TRIG, DGFiniteElement<2>>;
|
|
502
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,4>, ET_TRIG, DGFiniteElement<2>>;
|
|
503
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,5>, ET_TRIG, DGFiniteElement<2>>;
|
|
504
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,6>, ET_TRIG, DGFiniteElement<2>>;
|
|
505
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,7>, ET_TRIG, DGFiniteElement<2>>;
|
|
506
|
+
L2HOFEFO_EXTERN template class T_ScalarFiniteElement< L2HighOrderFEFO_Shapes<ET_TRIG,8>, ET_TRIG, DGFiniteElement<2>>;
|
|
507
|
+
*/
|
|
508
|
+
|
|
509
|
+
/*
|
|
510
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,0>>;
|
|
511
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,1>>;
|
|
512
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,2>>;
|
|
513
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,3>>;
|
|
514
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,4>>;
|
|
515
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,5>>;
|
|
516
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,6>>;
|
|
517
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,7>>;
|
|
518
|
+
L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,8>>;
|
|
519
|
+
// L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,9>>;
|
|
520
|
+
// L2HOFEFO_EXTERN template class L2HighOrderFE<ET_TRIG, L2HighOrderFEFO_Shapes<ET_TRIG,10>>;
|
|
521
|
+
*/
|
|
522
|
+
|
|
523
|
+
/*
|
|
524
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,0>;
|
|
525
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,1>;
|
|
526
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,2>;
|
|
527
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,3>;
|
|
528
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,4>;
|
|
529
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,5>;
|
|
530
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,6>;
|
|
531
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,7>;
|
|
532
|
+
L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,8>;
|
|
533
|
+
*/
|
|
534
|
+
// L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,9>;
|
|
535
|
+
// L2HOFEFO_EXTERN template class L2HighOrderFEFO<ET_TRIG,10>;
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
#endif
|
|
542
|
+
|