ngsolve 6.2.2501.post39.dev1__cp312-cp312-macosx_10_15_universal2.whl → 6.2.2501.post48.dev1__cp312-cp312-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/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 +2752 -0
- netgen/include/bdbintegrator.hpp +1660 -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 +316 -0
- netgen/include/bspline.hpp +114 -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 +231 -0
- netgen/include/diagonalmatrix.hpp +154 -0
- netgen/include/differentialoperator.hpp +276 -0
- netgen/include/diffop.hpp +1286 -0
- netgen/include/diffop_impl.hpp +326 -0
- netgen/include/discontinuous.hpp +84 -0
- netgen/include/dump.hpp +949 -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 +1655 -0
- netgen/include/facetfe.hpp +175 -0
- netgen/include/facetfespace.hpp +178 -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 +1445 -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 +41 -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 +1237 -0
- netgen/include/h1lumping.hpp +35 -0
- netgen/include/hcurl_equations.hpp +1352 -0
- netgen/include/hcurlcurlfe.hpp +2221 -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 +865 -0
- netgen/include/hdivdivfe.hpp +2923 -0
- netgen/include/hdivdivsurfacespace.hpp +76 -0
- netgen/include/hdivfe.hpp +206 -0
- netgen/include/hdivfe_utils.hpp +716 -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 +175 -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 +2024 -0
- netgen/include/integratorcf.hpp +253 -0
- netgen/include/interpolate.hpp +49 -0
- netgen/include/intrule.hpp +2541 -0
- netgen/include/irspace.hpp +49 -0
- netgen/include/jacobi.hpp +136 -0
- netgen/include/l2hofe.hpp +193 -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 +1358 -0
- netgen/include/mgpre.hpp +204 -0
- netgen/include/mptools.hpp +2145 -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 +1099 -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 +125 -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/precomp.hpp +60 -0
- netgen/include/preconditioner.hpp +602 -0
- netgen/include/prolongation.hpp +235 -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 +385 -0
- netgen/include/recursive_pol.hpp +4844 -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 +284 -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 +91 -0
- netgen/include/sparsematrix_impl.hpp +920 -0
- netgen/include/special_matrix.hpp +461 -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 +849 -0
- netgen/include/symmetricmatrix.hpp +144 -0
- netgen/include/tangentialfacetfe.hpp +224 -0
- netgen/include/tangentialfacetfespace.hpp +106 -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 +426 -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 +1219 -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/libngsolve.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/__init__.pyi +231 -0
- ngsolve/bla.pyi +1139 -0
- ngsolve/bvp.pyi +32 -0
- ngsolve/cmake/NGSolveConfig.cmake +102 -0
- ngsolve/cmake/ngsolve-targets-release.cmake +69 -0
- ngsolve/cmake/ngsolve-targets.cmake +163 -0
- ngsolve/comp/__init__.pyi +5382 -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 +62 -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.pyi +15 -0
- ngsolve/eigenvalues.pyi +30 -0
- ngsolve/fem.pyi +1707 -0
- ngsolve/krylovspace.pyi +301 -0
- ngsolve/la.pyi +1218 -0
- ngsolve/ngslib.so +0 -0
- ngsolve/ngstd.pyi +58 -0
- ngsolve/nonlinearsolvers.pyi +97 -0
- ngsolve/preconditioners.pyi +6 -0
- ngsolve/solve.pyi +108 -0
- ngsolve/solvers.pyi +14 -0
- ngsolve/timestepping.pyi +27 -0
- ngsolve/timing.pyi +54 -0
- ngsolve/utils.pyi +279 -0
- ngsolve-6.2.2501.post48.dev1.data/data/Netgen.icns +0 -0
- ngsolve-6.2.2501.post48.dev1.data/data/bin/ngscxx +17 -0
- ngsolve-6.2.2501.post48.dev1.data/data/bin/ngsld +13 -0
- ngsolve-6.2.2501.post48.dev1.data/data/bin/ngsolve.tcl +648 -0
- ngsolve-6.2.2501.post48.dev1.data/data/bin/ngspy +2 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/beam.geo +17 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/beam.vol +240 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/chip.in2d +41 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/chip.vol +614 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/coil.geo +12 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/coil.vol +2560 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/coilshield.geo +24 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/coilshield.vol +3179 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/cube.geo +19 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/cube.vol +1832 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d1_square.pde +43 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d2_chip.pde +35 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d4_cube.pde +46 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d5_beam.pde +74 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d6_shaft.pde +73 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d7_coil.pde +50 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d8_coilshield.pde +49 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/doubleglazing.in2d +27 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/doubleglazing.vol +737 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/shaft.geo +73 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/shaft.vol +4291 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/square.in2d +17 -0
- ngsolve-6.2.2501.post48.dev1.data/data/share/ngsolve/square.vol +149 -0
- {ngsolve-6.2.2501.post39.dev1.dist-info → ngsolve-6.2.2501.post48.dev1.dist-info}/METADATA +2 -2
- ngsolve-6.2.2501.post48.dev1.dist-info/RECORD +304 -0
- ngsolve-6.2.2501.post39.dev1.dist-info/RECORD +0 -25
- {ngsolve-6.2.2501.post39.dev1.dist-info → ngsolve-6.2.2501.post48.dev1.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2501.post39.dev1.dist-info → ngsolve-6.2.2501.post48.dev1.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2501.post39.dev1.dist-info → ngsolve-6.2.2501.post48.dev1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
#include <thdivfe.hpp>
|
|
2
|
+
#include "hdivfe_utils.hpp"
|
|
3
|
+
|
|
4
|
+
namespace ngfem
|
|
5
|
+
{
|
|
6
|
+
|
|
7
|
+
template<int DIM>
|
|
8
|
+
INLINE auto GetTIPHDiv (const IntegrationPoint & ip);
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
template<>
|
|
12
|
+
INLINE auto GetTIPHDiv<2> (const IntegrationPoint & ip)
|
|
13
|
+
{
|
|
14
|
+
TIP<2,AutoDiff<2>> tip { ip, ip.FacetNr(), ip.VB() };
|
|
15
|
+
tip.x.DValue(0) = 0;
|
|
16
|
+
tip.x.DValue(1) = 1;
|
|
17
|
+
tip.y.DValue(0) = -1;
|
|
18
|
+
tip.y.DValue(1) = 0;
|
|
19
|
+
return tip;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
template<>
|
|
23
|
+
INLINE auto GetTIPHDiv<3> (const IntegrationPoint & ip)
|
|
24
|
+
{
|
|
25
|
+
TIP<3,AutoDiff<3>> tip = ip;
|
|
26
|
+
return tip;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
template<int DIMS, int DIMR>
|
|
32
|
+
INLINE auto GetTIPHDiv (const MappedIntegrationPoint<DIMS,DIMR> & mip)
|
|
33
|
+
{
|
|
34
|
+
return GetTIP (mip);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
template<int DIMS, int DIMR>
|
|
38
|
+
INLINE auto GetTIPHDiv (const SIMD<MappedIntegrationPoint<DIMS,DIMR>> & mip)
|
|
39
|
+
{
|
|
40
|
+
return GetTIP (mip);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
template <int DIMR>
|
|
44
|
+
INLINE auto GetTIPHDiv (const MappedIntegrationPoint<2,DIMR> & mip)
|
|
45
|
+
{
|
|
46
|
+
TIP<2,AutoDiff<DIMR>> adp(mip.IP().FacetNr(), mip.IP().VB());
|
|
47
|
+
Mat<DIMR,2> jac = mip.GetJacobian();
|
|
48
|
+
jac *= 1/mip.GetJacobiDet();
|
|
49
|
+
const auto &ip = mip.IP();
|
|
50
|
+
adp.x.Value() = ip(0);
|
|
51
|
+
adp.y.Value() = ip(1);
|
|
52
|
+
for (int i = 0; i < DIMR; i++)
|
|
53
|
+
{
|
|
54
|
+
adp.x.DValue(i) = jac(i,1);
|
|
55
|
+
adp.y.DValue(i) = -jac(i,0);
|
|
56
|
+
}
|
|
57
|
+
// adp.facetnr = mip.IP().FacetNr();
|
|
58
|
+
// adp.vb = mip.IP().VB();
|
|
59
|
+
return adp;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
template <int DIMR>
|
|
63
|
+
INLINE auto GetTIPHDiv (const SIMD<MappedIntegrationPoint<2,DIMR>> & mip)
|
|
64
|
+
{
|
|
65
|
+
TIP<2,AutoDiff<DIMR,SIMD<double>>> adp(mip.IP().FacetNr(), mip.IP().VB());
|
|
66
|
+
Mat<DIMR,2,SIMD<double>> jac = mip.GetJacobian();
|
|
67
|
+
jac *= 1/mip.GetJacobiDet();
|
|
68
|
+
const auto &ip = mip.IP();
|
|
69
|
+
adp.x.Value() = ip(0);
|
|
70
|
+
adp.y.Value() = ip(1);
|
|
71
|
+
for (int i = 0; i < DIMR; i++)
|
|
72
|
+
{
|
|
73
|
+
adp.x.DValue(i) = jac(i,1);
|
|
74
|
+
adp.y.DValue(i) = -jac(i,0);
|
|
75
|
+
}
|
|
76
|
+
// adp.facetnr = mip.IP().FacetNr();
|
|
77
|
+
// adp.vb = mip.IP().VB();
|
|
78
|
+
return adp;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
83
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
84
|
+
CalcShape (const IntegrationPoint & ip,
|
|
85
|
+
BareSliceMatrix<> shape) const
|
|
86
|
+
{
|
|
87
|
+
/*
|
|
88
|
+
static_cast<const FEL*> (this) ->
|
|
89
|
+
T_CalcShape (GetTIPGrad<DIM>(ip),
|
|
90
|
+
SBLambda( [shape] (size_t nr, THDiv2Shape<DIM> val) LAMBDA_INLINE
|
|
91
|
+
{
|
|
92
|
+
shape.Row(nr) = Vec<DIM> (val);
|
|
93
|
+
}));
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
static_cast<const FEL*> (this) ->
|
|
97
|
+
T_CalcShape (GetTIPHDiv<DIM>(ip),
|
|
98
|
+
SBLambda( [shape] (size_t nr, auto val) LAMBDA_INLINE
|
|
99
|
+
{
|
|
100
|
+
shape.Row(nr) = HDiv2ShapeNew(val);
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
106
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
107
|
+
CalcDivShape (const IntegrationPoint & ip,
|
|
108
|
+
BareSliceVector<> divshape) const
|
|
109
|
+
{
|
|
110
|
+
static_cast<const FEL*> (this) ->
|
|
111
|
+
T_CalcShape (GetTIPGrad<DIM>(ip),
|
|
112
|
+
SBLambda( [divshape] (size_t nr, THDiv2DivShape<DIM> val) LAMBDA_INLINE
|
|
113
|
+
{
|
|
114
|
+
divshape(nr) = val;
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
#ifndef FASTCOMPILE
|
|
119
|
+
|
|
120
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
121
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
122
|
+
CalcMappedShape (const BaseMappedIntegrationPoint & bmip,
|
|
123
|
+
BareSliceMatrix<> shape) const
|
|
124
|
+
{
|
|
125
|
+
Iterate<4-DIM>
|
|
126
|
+
([this,&bmip,shape](auto CODIM)
|
|
127
|
+
{
|
|
128
|
+
constexpr int DIMSPACE = DIM+CODIM.value;
|
|
129
|
+
if (bmip.DimSpace() == DIMSPACE)
|
|
130
|
+
{
|
|
131
|
+
auto & mip = static_cast<const MappedIntegrationPoint<DIM,DIM+CODIM.value>&> (bmip);
|
|
132
|
+
static_cast<const FEL*> (this) ->
|
|
133
|
+
T_CalcShape (GetTIPHDiv(mip),
|
|
134
|
+
SBLambda ([shape](size_t nr, auto s)
|
|
135
|
+
{
|
|
136
|
+
shape.Row(nr) = HDiv2ShapeNew(s);
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
143
|
+
void T_HDivFiniteElement<FEL,ET>::
|
|
144
|
+
CalcMappedShape (const BaseMappedIntegrationRule & bmir,
|
|
145
|
+
BareSliceMatrix<> shapes) const
|
|
146
|
+
{
|
|
147
|
+
Iterate<4-DIM>
|
|
148
|
+
([this,&bmir,shapes](auto CODIM)
|
|
149
|
+
{
|
|
150
|
+
constexpr int DIMSPACE = DIM+CODIM.value;
|
|
151
|
+
if (bmir.DimSpace() == DIMSPACE)
|
|
152
|
+
{
|
|
153
|
+
auto & mir = static_cast<const MappedIntegrationRule<DIM,DIM+CODIM.value>&> (bmir);
|
|
154
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
155
|
+
this->CalcMappedShape (mir[i], shapes.Cols(i*DIMSPACE,(i+1)*DIMSPACE));
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
161
|
+
void T_HDivFiniteElement<FEL,ET>::
|
|
162
|
+
CalcMappedShape (const SIMD<MappedIntegrationPoint<DIM,DIM>> & mip,
|
|
163
|
+
BareSliceMatrix<SIMD<double>> shapes) const
|
|
164
|
+
{
|
|
165
|
+
static_cast<const FEL*> (this) ->
|
|
166
|
+
T_CalcShape (GetTIPHDiv(mip),
|
|
167
|
+
SBLambda ([shapes] (size_t j, auto s)
|
|
168
|
+
{
|
|
169
|
+
auto vshape = HDiv2ShapeNew (s);
|
|
170
|
+
for (size_t k = 0; k < vshape.Size(); k++)
|
|
171
|
+
shapes(j*DIM+k, 0) = vshape(k);
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
176
|
+
void T_HDivFiniteElement<FEL,ET>::
|
|
177
|
+
CalcMappedShape (const SIMD_BaseMappedIntegrationRule & bmir,
|
|
178
|
+
BareSliceMatrix<SIMD<double>> shapes) const
|
|
179
|
+
{
|
|
180
|
+
Iterate<4-DIM>
|
|
181
|
+
([this,&bmir,shapes](auto CODIM)
|
|
182
|
+
{
|
|
183
|
+
constexpr int DIMSPACE = DIM+CODIM.value;
|
|
184
|
+
if (bmir.DimSpace() == DIMSPACE)
|
|
185
|
+
{
|
|
186
|
+
auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
|
|
187
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
188
|
+
{
|
|
189
|
+
auto shapesi = shapes.Col(i);
|
|
190
|
+
static_cast<const FEL*> (this) ->
|
|
191
|
+
T_CalcShape (GetTIPHDiv(mir[i]),
|
|
192
|
+
SBLambda ([shapesi] (size_t j, auto s)
|
|
193
|
+
{
|
|
194
|
+
auto vshape = HDiv2ShapeNew (s);
|
|
195
|
+
shapesi.Range(j*vshape.Size(), (j+1)*vshape.Size()) = vshape;
|
|
196
|
+
}));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
203
|
+
void T_HDivFiniteElement<FEL,ET>::
|
|
204
|
+
CalcMappedNormalShape (const SIMD_BaseMappedIntegrationRule & bmir,
|
|
205
|
+
BareSliceMatrix<SIMD<double>> shapes) const
|
|
206
|
+
{
|
|
207
|
+
Iterate<4-DIM>
|
|
208
|
+
([this,&bmir,shapes](auto CODIM)
|
|
209
|
+
{
|
|
210
|
+
constexpr int DIMSPACE = DIM+CODIM.value;
|
|
211
|
+
if (bmir.DimSpace() == DIMSPACE)
|
|
212
|
+
{
|
|
213
|
+
auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
|
|
214
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
215
|
+
{
|
|
216
|
+
auto nv = mir[i].GetNV();
|
|
217
|
+
auto shapesi = shapes.Col(i);
|
|
218
|
+
static_cast<const FEL*> (this) ->
|
|
219
|
+
T_CalcShape (GetTIPHDiv(mir[i]),
|
|
220
|
+
SBLambda ([shapesi, nv] (size_t j, auto s)
|
|
221
|
+
{
|
|
222
|
+
auto vshape = HDiv2ShapeNew (s);
|
|
223
|
+
// shapesi.Range(j*vshape.Size(), (j+1)*vshape.Size()) = vshape;
|
|
224
|
+
shapesi(j) = InnerProduct(nv, vshape);
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
234
|
+
void T_HDivFiniteElement<FEL,ET>::
|
|
235
|
+
CalcMappedDivShape (const SIMD_BaseMappedIntegrationRule & bmir,
|
|
236
|
+
BareSliceMatrix<SIMD<double>> divshapes) const
|
|
237
|
+
{
|
|
238
|
+
auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIM>&> (bmir);
|
|
239
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
240
|
+
{
|
|
241
|
+
auto divshapesi = divshapes.Col(i);
|
|
242
|
+
static_cast<const FEL*> (this) ->
|
|
243
|
+
T_CalcShape (GetTIP(mir[i]),
|
|
244
|
+
SBLambda ([divshapesi] (size_t j, THDiv2DivShape<DIM,SIMD<double>> val)
|
|
245
|
+
{
|
|
246
|
+
divshapesi(j) = val;
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
252
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
253
|
+
Evaluate (const IntegrationRule & ir, FlatVector<double> coefs,
|
|
254
|
+
BareSliceMatrix<> vals) const
|
|
255
|
+
{
|
|
256
|
+
/*
|
|
257
|
+
for (size_t i = 0; i < ir.GetNIP(); i++)
|
|
258
|
+
{
|
|
259
|
+
Vec<DIM, AutoDiff<DIM>> adp = ir[i];
|
|
260
|
+
|
|
261
|
+
Vec<DIM> sum = 0;
|
|
262
|
+
static_cast<const FEL*> (this) ->
|
|
263
|
+
T_CalcShape (TIP<DIM,AutoDiff<DIM>>(adp, ir[i].FacetNr(), ir[i].VB()),
|
|
264
|
+
SBLambda([coefs,&sum] (size_t j, THDiv2Shape<DIM> vshape)
|
|
265
|
+
{
|
|
266
|
+
sum += coefs(j) * Vec<DIM> (vshape);
|
|
267
|
+
}));
|
|
268
|
+
vals.Row(i) = sum;
|
|
269
|
+
}
|
|
270
|
+
*/
|
|
271
|
+
|
|
272
|
+
for (size_t i = 0; i < ir.GetNIP(); i++)
|
|
273
|
+
{
|
|
274
|
+
// Vec<DIM, AutoDiff<DIM>> adp = ir[i];
|
|
275
|
+
|
|
276
|
+
Vec<DIM> sum = 0;
|
|
277
|
+
static_cast<const FEL*> (this) ->
|
|
278
|
+
T_CalcShape (GetTIPHDiv<DIM>(ir[i]),
|
|
279
|
+
SBLambda([coefs,&sum] (size_t j, auto s)
|
|
280
|
+
{
|
|
281
|
+
sum += coefs(j) * HDiv2ShapeNew(s);
|
|
282
|
+
}));
|
|
283
|
+
vals.Row(i) = sum;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
289
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
290
|
+
EvaluateTrans (const IntegrationRule & ir,
|
|
291
|
+
BareSliceMatrix<> vals,
|
|
292
|
+
FlatVector<double> coefs) const
|
|
293
|
+
{
|
|
294
|
+
/*
|
|
295
|
+
coefs = 0;
|
|
296
|
+
for (size_t i = 0; i < ir.GetNIP(); i++)
|
|
297
|
+
{
|
|
298
|
+
Vec<DIM, AutoDiff<DIM>> adp = ir[i];
|
|
299
|
+
|
|
300
|
+
Vec<DIM> val = vals.Row(i);
|
|
301
|
+
static_cast<const FEL*> (this) ->
|
|
302
|
+
T_CalcShape (TIP<DIM,AutoDiff<DIM>>(adp, ir[i].FacetNr(), ir[i].VB()),
|
|
303
|
+
SBLambda([coefs,val] (size_t j, THDiv2Shape<DIM> vshape)
|
|
304
|
+
{
|
|
305
|
+
coefs(j) += InnerProduct (val, Vec<DIM> (vshape));
|
|
306
|
+
}));
|
|
307
|
+
}
|
|
308
|
+
*/
|
|
309
|
+
|
|
310
|
+
coefs = 0;
|
|
311
|
+
for (size_t i = 0; i < ir.GetNIP(); i++)
|
|
312
|
+
{
|
|
313
|
+
Vec<DIM> val = vals.Row(i);
|
|
314
|
+
static_cast<const FEL*> (this) ->
|
|
315
|
+
T_CalcShape (GetTIPHDiv<DIM>(ir[i]),
|
|
316
|
+
SBLambda([coefs,val] (size_t j, auto s)
|
|
317
|
+
{
|
|
318
|
+
coefs(j) += InnerProduct (val, HDiv2ShapeNew(s));
|
|
319
|
+
}));
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
326
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
327
|
+
Evaluate (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const
|
|
328
|
+
{
|
|
329
|
+
Iterate<4-DIM>
|
|
330
|
+
([this,&bmir,coefs,values](auto CODIM)
|
|
331
|
+
{
|
|
332
|
+
constexpr int DIMSPACE = DIM+CODIM.value;
|
|
333
|
+
if (bmir.DimSpace() == DIMSPACE)
|
|
334
|
+
{
|
|
335
|
+
auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
|
|
336
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
337
|
+
{
|
|
338
|
+
Vec<DIMSPACE,SIMD<double>> sum(0.0);
|
|
339
|
+
static_cast<const FEL*> (this) ->
|
|
340
|
+
T_CalcShape (GetTIPHDiv(mir[i]),
|
|
341
|
+
SBLambda ([coefs,&sum] (size_t j, auto s)
|
|
342
|
+
{
|
|
343
|
+
sum += coefs(j) * HDiv2ShapeNew(s);
|
|
344
|
+
}));
|
|
345
|
+
values.Col(i).Range(DIMSPACE) = sum;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
353
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
354
|
+
AddTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<double>> values,
|
|
355
|
+
BareSliceVector<> coefs) const
|
|
356
|
+
{
|
|
357
|
+
Iterate<4-DIM>
|
|
358
|
+
([this,&bmir,values,coefs](auto CODIM)
|
|
359
|
+
{
|
|
360
|
+
constexpr int DIMSPACE = DIM+CODIM.value;
|
|
361
|
+
if (bmir.DimSpace() == DIMSPACE)
|
|
362
|
+
{
|
|
363
|
+
auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
|
|
364
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
365
|
+
{
|
|
366
|
+
Vec<DIMSPACE, SIMD<double>> vali = values.Col(i);
|
|
367
|
+
// for (int k = 0; k < DIMSPACE; k++)
|
|
368
|
+
// vali(k) = values(k,i);
|
|
369
|
+
static_cast<const FEL*> (this) ->
|
|
370
|
+
T_CalcShape (GetTIPHDiv(mir[i]),
|
|
371
|
+
SBLambda ([vali,coefs] (size_t j, auto s)
|
|
372
|
+
{
|
|
373
|
+
auto vshape = HDiv2ShapeNew(s);
|
|
374
|
+
coefs(j) += HSum(InnerProduct(vali,vshape));
|
|
375
|
+
}));
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
383
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
384
|
+
EvaluateDiv (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<> coefs,
|
|
385
|
+
BareVector<SIMD<double>> values) const
|
|
386
|
+
{
|
|
387
|
+
auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIM>&> (bmir);
|
|
388
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
389
|
+
{
|
|
390
|
+
SIMD<double> sum(0.0);
|
|
391
|
+
static_cast<const FEL*> (this) ->
|
|
392
|
+
T_CalcShape (GetTIP(mir[i]),
|
|
393
|
+
SBLambda ([=,&sum] (size_t j, THDiv2DivShape<DIM,SIMD<double>> divshape)
|
|
394
|
+
{
|
|
395
|
+
// SIMD<double> simdshape = divshape;
|
|
396
|
+
// SIMD<double> simdshape = divshape.Get();
|
|
397
|
+
// sum += coefs(j) * simdshape;
|
|
398
|
+
sum += coefs(j) * divshape.Get();
|
|
399
|
+
}));
|
|
400
|
+
values(i) = sum;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
template <class FEL, ELEMENT_TYPE ET>
|
|
405
|
+
void T_HDivFiniteElement<FEL,ET> ::
|
|
406
|
+
AddDivTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareVector<SIMD<double>> values,
|
|
407
|
+
BareSliceVector<> coefs) const
|
|
408
|
+
{
|
|
409
|
+
auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIM>&> (bmir);
|
|
410
|
+
for (size_t i = 0; i < mir.Size(); i++)
|
|
411
|
+
{
|
|
412
|
+
SIMD<double> vali = values(i);
|
|
413
|
+
static_cast<const FEL*> (this) ->
|
|
414
|
+
T_CalcShape (GetTIP(mir[i]),
|
|
415
|
+
SBLambda ([coefs,vali] (size_t j, THDiv2DivShape<DIM,SIMD<double>> divshape)
|
|
416
|
+
{
|
|
417
|
+
coefs(j) += HSum(divshape.Get()*vali);
|
|
418
|
+
}));
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
#endif
|
|
426
|
+
}
|