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,78 @@
|
|
|
1
|
+
#ifndef FILE_HCURLCURLFESPACE
|
|
2
|
+
#define FILE_HCURLCURLFESPACE
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/*********************************************************************/
|
|
6
|
+
/* File: hcurlcurlfespace.h */
|
|
7
|
+
/* Author: Michael Neunteufel */
|
|
8
|
+
/* Date: 2018 */
|
|
9
|
+
/*********************************************************************/
|
|
10
|
+
|
|
11
|
+
#include "fespace.hpp"
|
|
12
|
+
|
|
13
|
+
namespace ngcomp
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
class HCurlCurlFESpace : public FESpace
|
|
17
|
+
{
|
|
18
|
+
size_t ndof;
|
|
19
|
+
Array<int> first_facet_dof;
|
|
20
|
+
Array<int> first_element_dof;
|
|
21
|
+
Array<int> first_edge_dof;
|
|
22
|
+
Array<IVec<1,int> > order_edge;
|
|
23
|
+
Array<IVec<2,int> > order_facet;
|
|
24
|
+
Array<IVec<3,int> > order_inner;
|
|
25
|
+
|
|
26
|
+
Array<bool> fine_facet;
|
|
27
|
+
Array<bool> fine_edges;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
bool discontinuous;
|
|
31
|
+
bool issurfacespace;
|
|
32
|
+
int uniform_order_facet;
|
|
33
|
+
int uniform_order_inner;
|
|
34
|
+
int uniform_order_edge;
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
HCurlCurlFESpace (shared_ptr<MeshAccess> ama, const Flags & flags, bool checkflags=false);
|
|
38
|
+
|
|
39
|
+
virtual string GetClassName () const override
|
|
40
|
+
{
|
|
41
|
+
return "HCurlCurlFESpace";
|
|
42
|
+
}
|
|
43
|
+
static DocInfo GetDocu ();
|
|
44
|
+
|
|
45
|
+
void Update() override;
|
|
46
|
+
|
|
47
|
+
virtual size_t GetNDof () const throw() override { return ndof; }
|
|
48
|
+
|
|
49
|
+
virtual void SetOrder (NodeId ni, int order) override;
|
|
50
|
+
virtual int GetOrder (NodeId ni) const override;
|
|
51
|
+
|
|
52
|
+
virtual FlatArray<VorB> GetDualShapeNodes (VorB vb) const override
|
|
53
|
+
{
|
|
54
|
+
static VorB nodes[] = { VOL, BND, BBND };
|
|
55
|
+
return FlatArray<VorB> (ma->GetDimension()-int(vb), &nodes[0]);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
virtual FiniteElement & GetFE (ElementId ei, Allocator & alloc) const override;
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
virtual void GetVertexDofNrs (int vnr, Array<int> & dnums) const override
|
|
62
|
+
{
|
|
63
|
+
dnums.SetSize0();
|
|
64
|
+
}
|
|
65
|
+
virtual void GetEdgeDofNrs (int ednr, Array<int> & dnums) const override;
|
|
66
|
+
|
|
67
|
+
virtual void GetFaceDofNrs (int fanr, Array<int> & dnums) const override;
|
|
68
|
+
virtual void GetInnerDofNrs (int elnr, Array<int> & dnums) const override;
|
|
69
|
+
|
|
70
|
+
void GetDofNrs (ElementId ei, Array<int> & dnums) const override;
|
|
71
|
+
|
|
72
|
+
virtual void UpdateCouplingDofArray() override;
|
|
73
|
+
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#endif
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
#ifndef FILE_HCURLFE
|
|
2
|
+
#define FILE_HCURLFE
|
|
3
|
+
|
|
4
|
+
/*********************************************************************/
|
|
5
|
+
/* File: hcurlfe.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 16. Apr. 2000 */
|
|
8
|
+
/*********************************************************************/
|
|
9
|
+
|
|
10
|
+
#include "finiteelement.hpp"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
namespace ngfem
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
HCurl Finite Element Definitions
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
template <int D> class HDivFiniteElement;
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
constexpr int DIM_CURL_ (int D) { return (D*(D-1))/2; }
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
H(Curl) finite element of dimension D
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class BaseHCurlFiniteElement : public FiniteElement
|
|
33
|
+
{
|
|
34
|
+
public:
|
|
35
|
+
using FiniteElement :: FiniteElement;
|
|
36
|
+
|
|
37
|
+
virtual void CalcShape (const IntegrationPoint & ip,
|
|
38
|
+
BareSliceMatrix<> shape) const = 0;
|
|
39
|
+
|
|
40
|
+
virtual void CalcMappedShape (const BaseMappedIntegrationPoint & mip,
|
|
41
|
+
BareSliceMatrix<> shape) const = 0;
|
|
42
|
+
|
|
43
|
+
virtual void CalcMappedShape (const BaseMappedIntegrationRule & bmir, BareSliceMatrix<> shapes) const = 0;
|
|
44
|
+
|
|
45
|
+
virtual void CalcMappedShape (const SIMD<BaseMappedIntegrationPoint> & bmip,
|
|
46
|
+
BareSliceMatrix<SIMD<double>> shape) const = 0;
|
|
47
|
+
|
|
48
|
+
virtual void CalcMappedShape (const SIMD_BaseMappedIntegrationRule & mir,
|
|
49
|
+
BareSliceMatrix<SIMD<double>> shapes) const = 0;
|
|
50
|
+
|
|
51
|
+
/// compute curl of shape, default: numerical diff
|
|
52
|
+
virtual void CalcCurlShape (const IntegrationPoint & ip,
|
|
53
|
+
BareSliceMatrix<> curlshape) const = 0;
|
|
54
|
+
|
|
55
|
+
virtual void CalcMappedCurlShape (const BaseMappedIntegrationPoint & mip,
|
|
56
|
+
BareSliceMatrix<> curlshape) const = 0;
|
|
57
|
+
|
|
58
|
+
virtual void CalcMappedCurlShape (const BaseMappedIntegrationRule & mir,
|
|
59
|
+
BareSliceMatrix<> curlshape) const = 0;
|
|
60
|
+
|
|
61
|
+
virtual void CalcMappedCurlShape (const SIMD_BaseMappedIntegrationRule & mir,
|
|
62
|
+
BareSliceMatrix<SIMD<double>> curlshapes) const = 0;
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
NGS_DLL_HEADER virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
67
|
+
BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const;
|
|
68
|
+
NGS_DLL_HEADER virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
69
|
+
BareSliceVector<Complex> coefs, BareSliceMatrix<SIMD<Complex>> values) const;
|
|
70
|
+
NGS_DLL_HEADER virtual void EvaluateCurl (const SIMD_BaseMappedIntegrationRule & ir,
|
|
71
|
+
BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const;
|
|
72
|
+
|
|
73
|
+
NGS_DLL_HEADER virtual void AddTrans (const SIMD_BaseMappedIntegrationRule & ir,
|
|
74
|
+
BareSliceMatrix<SIMD<double>> values,
|
|
75
|
+
BareSliceVector<> coefs) const;
|
|
76
|
+
NGS_DLL_HEADER virtual void AddTrans (const SIMD_BaseMappedIntegrationRule & ir,
|
|
77
|
+
BareSliceMatrix<SIMD<Complex>> values,
|
|
78
|
+
BareSliceVector<Complex> coefs) const;
|
|
79
|
+
NGS_DLL_HEADER virtual void AddCurlTrans (const SIMD_BaseMappedIntegrationRule & ir,
|
|
80
|
+
BareSliceMatrix<SIMD<double>> values,
|
|
81
|
+
BareSliceVector<> coefs) const;
|
|
82
|
+
NGS_DLL_HEADER virtual void AddCurlTrans (const SIMD_BaseMappedIntegrationRule & ir,
|
|
83
|
+
BareSliceMatrix<SIMD<Complex>> values,
|
|
84
|
+
BareSliceVector<Complex> coefs) const;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
template <int D>
|
|
89
|
+
class HCurlFiniteElement : public BaseHCurlFiniteElement
|
|
90
|
+
{
|
|
91
|
+
|
|
92
|
+
public:
|
|
93
|
+
enum { DIM = D };
|
|
94
|
+
enum { DIM_CURL = DIM_CURL_(D) };
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
public:
|
|
98
|
+
using BaseHCurlFiniteElement::BaseHCurlFiniteElement;
|
|
99
|
+
|
|
100
|
+
HD virtual ~HCurlFiniteElement () { ; }
|
|
101
|
+
|
|
102
|
+
virtual string NGS_DLL_HEADER ClassName() const override;
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
/// compute curl of shape, default: numerical diff
|
|
106
|
+
void NGS_DLL_HEADER CalcCurlShape (const IntegrationPoint & ip,
|
|
107
|
+
BareSliceMatrix<> curlshape) const override;
|
|
108
|
+
|
|
109
|
+
/// compute shape
|
|
110
|
+
void NGS_DLL_HEADER CalcMappedShape (const BaseMappedIntegrationPoint & mip, BareSliceMatrix<> shape) const override;
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
void NGS_DLL_HEADER CalcMappedShape (const BaseMappedIntegrationRule & bmir, BareSliceMatrix<> shapes) const override;
|
|
114
|
+
|
|
115
|
+
void NGS_DLL_HEADER CalcMappedShape (const SIMD<BaseMappedIntegrationPoint> & bmip,
|
|
116
|
+
BareSliceMatrix<SIMD<double>> shape) const override;
|
|
117
|
+
|
|
118
|
+
void NGS_DLL_HEADER CalcMappedShape (const SIMD_BaseMappedIntegrationRule & mir,
|
|
119
|
+
BareSliceMatrix<SIMD<double>> shapes) const override;
|
|
120
|
+
|
|
121
|
+
/// compute curl of shape
|
|
122
|
+
void NGS_DLL_HEADER CalcMappedCurlShape (const BaseMappedIntegrationPoint & mip,
|
|
123
|
+
BareSliceMatrix<> curlshape) const override;
|
|
124
|
+
|
|
125
|
+
void NGS_DLL_HEADER CalcMappedCurlShape (const BaseMappedIntegrationRule & mir,
|
|
126
|
+
BareSliceMatrix<> curlshape) const override;
|
|
127
|
+
|
|
128
|
+
void NGS_DLL_HEADER CalcMappedCurlShape (const SIMD_BaseMappedIntegrationRule & mir,
|
|
129
|
+
BareSliceMatrix<SIMD<double>> curlshapes) const override;
|
|
130
|
+
|
|
131
|
+
///
|
|
132
|
+
const FlatMatrixFixWidth<DIM> GetShape (const IntegrationPoint & ip,
|
|
133
|
+
LocalHeap & lh) const
|
|
134
|
+
{
|
|
135
|
+
FlatMatrixFixWidth<DIM> shape(ndof, lh);
|
|
136
|
+
CalcShape (ip, shape);
|
|
137
|
+
return shape;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
virtual Vec<D>
|
|
142
|
+
EvaluateShape (const IntegrationPoint & ip,
|
|
143
|
+
BareSliceVector<double> x, LocalHeap & lh) const
|
|
144
|
+
{
|
|
145
|
+
HeapReset hr(lh);
|
|
146
|
+
return Trans (GetShape(ip, lh)) * x;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
using BaseHCurlFiniteElement::Evaluate;
|
|
150
|
+
NGS_DLL_HEADER virtual void
|
|
151
|
+
Evaluate (const IntegrationRule & ir, BareSliceVector<> coefs, SliceMatrix<> values) const;
|
|
152
|
+
|
|
153
|
+
NGS_DLL_HEADER virtual void
|
|
154
|
+
Evaluate (const MappedIntegrationRule<D,D> & mir, BareSliceVector<> coefs, SliceMatrix<> values) const;
|
|
155
|
+
|
|
156
|
+
const FlatMatrixFixWidth<DIM_CURL_(D)> GetCurlShape (const IntegrationPoint & ip,
|
|
157
|
+
LocalHeap & lh) const
|
|
158
|
+
{
|
|
159
|
+
FlatMatrixFixWidth<DIM_CURL_(D)> curlshape(ndof, lh);
|
|
160
|
+
CalcCurlShape (ip, curlshape);
|
|
161
|
+
return curlshape;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
template <typename TVX>
|
|
165
|
+
Vec<DIM_CURL_(D), typename TVX::TSCAL>
|
|
166
|
+
EvaluateCurlShape (const IntegrationPoint & ip,
|
|
167
|
+
const TVX & x, LocalHeap & lh) const
|
|
168
|
+
{
|
|
169
|
+
HeapReset hr(lh);
|
|
170
|
+
return Trans (GetCurlShape(ip, lh)) * x;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
virtual Vec<DIM_CURL_(D)>
|
|
174
|
+
EvaluateCurlShape (const IntegrationPoint & ip,
|
|
175
|
+
BareSliceVector<double> x, LocalHeap & lh) const
|
|
176
|
+
{
|
|
177
|
+
HeapReset hr(lh);
|
|
178
|
+
return Trans (GetCurlShape(ip, lh)) * x;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
using BaseHCurlFiniteElement::EvaluateCurl;
|
|
182
|
+
|
|
183
|
+
NGS_DLL_HEADER virtual void
|
|
184
|
+
EvaluateCurl (const IntegrationRule & ir, BareSliceVector<> coefs, BareSliceMatrix<> curl) const;
|
|
185
|
+
|
|
186
|
+
NGS_DLL_HEADER virtual void
|
|
187
|
+
EvaluateMappedCurl (const MappedIntegrationRule<D,D> & mir,
|
|
188
|
+
BareSliceVector<> coefs, FlatMatrixFixWidth<DIM_CURL_(D)> curl) const;
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
NGS_DLL_HEADER virtual void CalcDualShape (const BaseMappedIntegrationPoint & bmip, BareSliceMatrix<> shape) const;
|
|
193
|
+
|
|
194
|
+
NGS_DLL_HEADER virtual void CalcDualShape (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<double>> shape) const;
|
|
195
|
+
|
|
196
|
+
NGS_DLL_HEADER virtual void EvaluateDual (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const
|
|
197
|
+
{ throw ExceptionNOSIMD("HCurlFE - simd evaldual not overloaded"); }
|
|
198
|
+
|
|
199
|
+
NGS_DLL_HEADER virtual void AddDualTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<double>> values,
|
|
200
|
+
BareSliceVector<double> coefs) const
|
|
201
|
+
{ throw ExceptionNOSIMD("HCurlFE - simd adddualtrans not overloaded"); }
|
|
202
|
+
|
|
203
|
+
protected:
|
|
204
|
+
///
|
|
205
|
+
virtual void CalcShape1 (const IntegrationPoint & ip,
|
|
206
|
+
FlatMatrixFixWidth<D> shape) const
|
|
207
|
+
{ ; }
|
|
208
|
+
///
|
|
209
|
+
virtual void CalcShape2 (const IntegrationPoint & ip,
|
|
210
|
+
FlatMatrixFixWidth<D> shape) const
|
|
211
|
+
{ ; }
|
|
212
|
+
|
|
213
|
+
virtual void CalcShape3 (const IntegrationPoint & ip,
|
|
214
|
+
FlatMatrixFixWidth<D> shape) const
|
|
215
|
+
{ ; }
|
|
216
|
+
|
|
217
|
+
virtual void CalcShape4 (const IntegrationPoint & ip,
|
|
218
|
+
FlatMatrixFixWidth<D> shape) const
|
|
219
|
+
{ ; }
|
|
220
|
+
|
|
221
|
+
///
|
|
222
|
+
void ComputeEdgeMoments (int enr, ScalarFiniteElement<1> & testfe,
|
|
223
|
+
FlatMatrix<> moments, int order, int shape = 1) const;
|
|
224
|
+
///
|
|
225
|
+
void ComputeFaceMoments (int fnr, HDivFiniteElement<2> & testfe,
|
|
226
|
+
FlatMatrix<> moments, int order, int shape = 1) const;
|
|
227
|
+
///
|
|
228
|
+
void ComputeVolMoments (HDivFiniteElement<3> & testfe,
|
|
229
|
+
FlatMatrix<> moments, int order, int shape = 1) const;
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
NGS_DLL_HEADER virtual std::list<std::tuple<std::string,double>> Timing () const override;
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
template <int D>
|
|
245
|
+
extern void ComputeGradientMatrix (const ScalarFiniteElement<D> & h1fe,
|
|
246
|
+
const HCurlFiniteElement<D> & hcurlfe,
|
|
247
|
+
FlatMatrix<> gradient);
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
extern template class HCurlFiniteElement<1>;
|
|
253
|
+
extern template class HCurlFiniteElement<2>;
|
|
254
|
+
extern template class HCurlFiniteElement<3>;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
#endif
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#ifndef FILE_HCURLFE_UTILS
|
|
2
|
+
#define FILE_HCURLFE_UTILS
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#include "shapefunction_utils.hpp"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
namespace ngfem
|
|
9
|
+
{
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
template <int DIM, typename SCAL>
|
|
13
|
+
class Du
|
|
14
|
+
{
|
|
15
|
+
enum { DIM_CURL = (DIM * (DIM-1))/2 };
|
|
16
|
+
|
|
17
|
+
public:
|
|
18
|
+
const AutoDiff<DIM,SCAL> u;
|
|
19
|
+
|
|
20
|
+
Du (const AutoDiff<DIM,SCAL> au) : u(au) { }
|
|
21
|
+
|
|
22
|
+
Vec<DIM,SCAL> Value () const
|
|
23
|
+
{
|
|
24
|
+
return GetGradient(u);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
Vec<DIM_CURL,SCAL> CurlValue () const
|
|
28
|
+
{
|
|
29
|
+
return Vec<DIM_CURL,SCAL> (0.0);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
template <int DIM, typename SCAL>
|
|
36
|
+
class uDv
|
|
37
|
+
{
|
|
38
|
+
public:
|
|
39
|
+
const AutoDiff<DIM,SCAL> u, v;
|
|
40
|
+
|
|
41
|
+
uDv (AutoDiff<DIM,SCAL> au, AutoDiff<DIM,SCAL> av)
|
|
42
|
+
: u(au), v(av) { ; }
|
|
43
|
+
|
|
44
|
+
auto Value () const
|
|
45
|
+
{
|
|
46
|
+
return u.Value() * GetGradient(v);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
auto CurlValue () const
|
|
50
|
+
{
|
|
51
|
+
return Cross (GetGradient(u), GetGradient(v));
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
template <int DIM, typename SCAL>
|
|
58
|
+
class uDv_minus_vDu
|
|
59
|
+
{
|
|
60
|
+
public:
|
|
61
|
+
const AutoDiff<DIM, SCAL> u, v;
|
|
62
|
+
|
|
63
|
+
uDv_minus_vDu (const AutoDiff<DIM,SCAL> au,
|
|
64
|
+
const AutoDiff<DIM,SCAL> av)
|
|
65
|
+
: u(au), v(av) { }
|
|
66
|
+
|
|
67
|
+
auto Value () const
|
|
68
|
+
{
|
|
69
|
+
return u.Value()*GetGradient(v)-v.Value()*GetGradient(u);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
auto CurlValue () const
|
|
73
|
+
{
|
|
74
|
+
return 2 * Cross (GetGradient(u), GetGradient(v));
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
template <int DIM, typename SCAL>
|
|
82
|
+
class wuDv_minus_wvDu
|
|
83
|
+
{
|
|
84
|
+
public:
|
|
85
|
+
const AutoDiff<DIM,SCAL> u, v, w;
|
|
86
|
+
|
|
87
|
+
wuDv_minus_wvDu (const AutoDiff<DIM,SCAL> au,
|
|
88
|
+
const AutoDiff<DIM,SCAL> av,
|
|
89
|
+
const AutoDiff<DIM,SCAL> aw)
|
|
90
|
+
: u(au), v(av), w(aw) { ; }
|
|
91
|
+
|
|
92
|
+
auto Value () const
|
|
93
|
+
{
|
|
94
|
+
return w.Value()*u.Value()*GetGradient(v) - w.Value()*v.Value()*GetGradient(u);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
auto CurlValue () const
|
|
98
|
+
{
|
|
99
|
+
return Cross(GetGradient(u*w),GetGradient(v)) - Cross(GetGradient(v*w), GetGradient(u));
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
|