ngsolve 6.2.2506.post216.dev0__cp314-cp314-manylinux_2_28_x86_64.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.
- ngsolve-6.2.2506.post216.dev0.data/data/bin/ngs_nvcc +22 -0
- ngsolve-6.2.2506.post216.dev0.data/data/bin/ngs_nvlink +17 -0
- ngsolve-6.2.2506.post216.dev0.data/data/bin/ngscxx +15 -0
- ngsolve-6.2.2506.post216.dev0.data/data/bin/ngsld +11 -0
- ngsolve-6.2.2506.post216.dev0.data/data/bin/ngsolve.tcl +648 -0
- ngsolve-6.2.2506.post216.dev0.data/data/bin/ngspy +2 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/analytic_integrals.hpp +10 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/arnoldi.hpp +55 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bandmatrix.hpp +334 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/basematrix.hpp +963 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/basevector.hpp +1268 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bdbequations.hpp +2807 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bdbintegrator.hpp +1660 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bem_diffops.hpp +475 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bessel.hpp +1064 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bilinearform.hpp +966 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bla.hpp +29 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/blockalloc.hpp +95 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/blockjacobi.hpp +328 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bspline.hpp +116 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/calcinverse.hpp +141 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cg.hpp +368 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/chebyshev.hpp +44 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cholesky.hpp +720 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/clapack.h +7254 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/code_generation.hpp +296 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/coefficient.hpp +2033 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/coefficient_impl.hpp +19 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/coefficient_stdmath.hpp +167 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/commutingAMG.hpp +106 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/comp.hpp +79 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/compatibility.hpp +41 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/complex_wrapper.hpp +101 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/compressedfespace.hpp +110 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/contact.hpp +239 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_core.hpp +216 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_linalg.hpp +185 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_ngbla.hpp +317 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_ngstd.hpp +414 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_profiler.hpp +240 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diagonalmatrix.hpp +160 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/differentialoperator.hpp +276 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diffop.hpp +1286 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diffop_impl.hpp +328 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diffopwithfactor.hpp +123 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/discontinuous.hpp +84 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/dump.hpp +949 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ectypes.hpp +121 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/eigen.hpp +60 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/eigensystem.hpp +18 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elasticity_equations.hpp +595 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elementbyelement.hpp +201 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elementtopology.hpp +1760 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elementtransformation.hpp +339 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/evalfunc.hpp +405 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/expr.hpp +1693 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facetfe.hpp +175 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facetfespace.hpp +180 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facethofe.hpp +111 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facetsurffespace.hpp +112 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fe_interfaces.hpp +32 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fem.hpp +87 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fesconvert.hpp +14 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fespace.hpp +1454 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/finiteelement.hpp +286 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/globalinterfacespace.hpp +77 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/globalspace.hpp +115 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/gridfunction.hpp +525 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1amg.hpp +124 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofe.hpp +188 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofe_impl.hpp +1262 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofefo.hpp +148 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofefo_impl.hpp +185 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofespace.hpp +167 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1lofe.hpp +1240 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1lumping.hpp +41 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurl_equations.hpp +1381 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlcurlfe.hpp +2241 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlcurlfespace.hpp +78 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlfe.hpp +259 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlfe_utils.hpp +107 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhdiv_dshape.hpp +857 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhdivfes.hpp +308 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhofe.hpp +175 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhofe_impl.hpp +1871 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhofespace.hpp +193 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurllofe.hpp +1146 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdiv_equations.hpp +880 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivdivfe.hpp +2923 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivdivsurfacespace.hpp +76 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivfe.hpp +206 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivfe_utils.hpp +717 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivfes.hpp +75 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofe.hpp +447 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofe_impl.hpp +1107 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofefo.hpp +229 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofespace.hpp +177 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhosurfacefespace.hpp +106 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivlofe.hpp +773 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hidden.hpp +74 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/householder.hpp +181 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hypre_ams_precond.hpp +123 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hypre_precond.hpp +73 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/integrator.hpp +2012 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/integratorcf.hpp +253 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/interpolate.hpp +49 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/intrule.hpp +2542 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/intrules_SauterSchwab.hpp +25 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/irspace.hpp +49 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/jacobi.hpp +153 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/kernels.hpp +724 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofe.hpp +194 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofe_impl.hpp +564 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofefo.hpp +542 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofespace.hpp +344 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/la.hpp +38 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/linalg_kernels.hpp +70 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/linearform.hpp +266 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/matrix.hpp +2145 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/memusage.hpp +41 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/meshaccess.hpp +1359 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mgpre.hpp +204 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mp_coefficient.hpp +145 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mptools.hpp +2281 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/multigrid.hpp +42 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/multivector.hpp +447 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mumpsinverse.hpp +187 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mycomplex.hpp +361 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ng_lapack.hpp +1661 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngblas.hpp +1232 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngs_defines.hpp +30 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngs_stdcpp_include.hpp +106 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngs_utils.hpp +121 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngsobject.hpp +1019 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngsstream.hpp +113 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngstd.hpp +72 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/nodalhofe.hpp +96 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/nodalhofe_impl.hpp +141 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/normalfacetfe.hpp +223 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/normalfacetfespace.hpp +98 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/normalfacetsurfacefespace.hpp +84 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/order.hpp +251 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/parallel_matrices.hpp +222 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/paralleldofs.hpp +340 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/parallelngs.hpp +23 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/parallelvector.hpp +269 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/pardisoinverse.hpp +200 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/periodic.hpp +129 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/plateaufespace.hpp +25 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/pml.hpp +275 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/pmltrafo.hpp +631 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/postproc.hpp +142 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/potentialtools.hpp +22 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/precomp.hpp +60 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/preconditioner.hpp +602 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/prolongation.hpp +380 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_comp.hpp +107 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_fem.hpp +89 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_linalg.hpp +58 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_ngstd.hpp +386 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/recursive_pol.hpp +4896 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/recursive_pol_tet.hpp +395 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/recursive_pol_trig.hpp +492 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/reorderedfespace.hpp +81 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sample_sort.hpp +105 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/scalarfe.hpp +335 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/shapefunction_utils.hpp +113 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/simd_complex.hpp +329 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/smoother.hpp +253 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/solve.hpp +89 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsecholesky.hpp +317 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsefactorization_interface.hpp +159 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsematrix.hpp +1052 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsematrix_dyn.hpp +90 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsematrix_impl.hpp +1055 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/special_matrix.hpp +463 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/specialelement.hpp +125 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/statushandler.hpp +33 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/stringops.hpp +12 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/superluinverse.hpp +136 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/symbolicintegrator.hpp +850 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/symmetricmatrix.hpp +144 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tangentialfacetfe.hpp +224 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tangentialfacetfespace.hpp +91 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tensor.hpp +522 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tensorcoefficient.hpp +446 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tensorproductintegrator.hpp +113 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thcurlfe.hpp +128 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thcurlfe_impl.hpp +380 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thdivfe.hpp +80 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thdivfe_impl.hpp +492 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tpdiffop.hpp +461 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tpfes.hpp +133 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tpintrule.hpp +224 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/triangular.hpp +465 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tscalarfe.hpp +245 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tscalarfe_impl.hpp +1029 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/umfpackinverse.hpp +148 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/unifiedvector.hpp +103 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/vector.hpp +1452 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/voxelcoefficientfunction.hpp +41 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/vtkoutput.hpp +198 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/vvector.hpp +208 -0
- ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/webgui.hpp +92 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/cmake/ngsolve/NGSolveConfig.cmake +102 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +89 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets.cmake +180 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngbla.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngfem.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngla.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngstd.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/TensorProductTools.py +210 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/__console.py +94 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/__expr.py +181 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/__init__.py +148 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/_scikit_build_core_dependencies.py +30 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/bvp.py +78 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__init__.py +1 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__main__.py +4 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/config.py +60 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/__init__.py +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/__init__.py +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hhj.py +44 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hybrid_dg.py +53 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/mixed.py +30 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/nonlin.py +29 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pickling.py +26 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pml.py +31 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/taskmanager.py +20 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/tdnns.py +47 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +45 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG.py +38 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGlap.py +42 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGwave.py +61 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/__init__.py +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/adaptive.py +123 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/cmagnet.py +59 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/elasticity.py +76 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/navierstokes.py +74 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.ipynb +170 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.py +41 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_poisson.py +89 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +82 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/directsolvers.py +14 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/eigenvalues.py +364 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/internal.py +89 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/krylovspace.py +1182 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/meshes.py +748 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngs2petsc.py +310 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscuda.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscxx.py +42 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngslib.so +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/nonlinearsolvers.py +203 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/preconditioners.py +11 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/solve_implementation.py +168 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers/__init__.py +7 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers/cudss.py +112 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/timestepping.py +185 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/timing.py +108 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/utils.py +167 -0
- ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/webgui.py +671 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/beam.geo +17 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/beam.vol +240 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/chip.in2d +41 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/chip.vol +614 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coil.geo +12 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coil.vol +2560 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/cube.geo +19 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/cube.vol +1832 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/shaft.geo +73 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/square.in2d +17 -0
- ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/square.vol +149 -0
- ngsolve-6.2.2506.post216.dev0.dist-info/METADATA +14 -0
- ngsolve-6.2.2506.post216.dev0.dist-info/RECORD +306 -0
- ngsolve-6.2.2506.post216.dev0.dist-info/WHEEL +5 -0
- ngsolve-6.2.2506.post216.dev0.dist-info/licenses/LICENSE +504 -0
- ngsolve-6.2.2506.post216.dev0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,880 @@
|
|
|
1
|
+
#ifndef FILE_HDIV_EQUATIONS
|
|
2
|
+
#define FILE_HDIV_EQUATIONS
|
|
3
|
+
|
|
4
|
+
/*********************************************************************/
|
|
5
|
+
/* File: hdiv_equations.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl, Almedin Becirovic */
|
|
7
|
+
/* Date: 10. Feb. 2002 */
|
|
8
|
+
/*********************************************************************/
|
|
9
|
+
|
|
10
|
+
#include "hcurlhdiv_dshape.hpp"
|
|
11
|
+
#include "hdivfe.hpp"
|
|
12
|
+
#include "bdbequations.hpp"
|
|
13
|
+
|
|
14
|
+
namespace ngfem
|
|
15
|
+
{
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
Finite Element Integrators for H(div)
|
|
20
|
+
|
|
21
|
+
Mapping with Piola transformation
|
|
22
|
+
|
|
23
|
+
Requires H(div) finite elements
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
/// Identity operator, Piola transformation
|
|
29
|
+
template <int D, typename FEL = HDivFiniteElement<D> >
|
|
30
|
+
class DiffOpIdHDiv : public DiffOp<DiffOpIdHDiv<D, FEL> >
|
|
31
|
+
{
|
|
32
|
+
public:
|
|
33
|
+
enum { DIM = 1 };
|
|
34
|
+
enum { DIM_SPACE = D };
|
|
35
|
+
enum { DIM_ELEMENT = D };
|
|
36
|
+
enum { DIM_DMAT = D };
|
|
37
|
+
enum { DIFFORDER = 0 };
|
|
38
|
+
|
|
39
|
+
static const FEL & Cast (const FiniteElement & fel)
|
|
40
|
+
{ return static_cast<const FEL&> (fel); }
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
44
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
45
|
+
MAT & mat, LocalHeap & lh)
|
|
46
|
+
{
|
|
47
|
+
mat = (1.0/mip.GetJacobiDet()) *
|
|
48
|
+
(mip.GetJacobian() * Trans (Cast(fel).GetShape(mip.IP(), lh)));
|
|
49
|
+
}
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
static void GenerateMatrix (const FiniteElement & fel,
|
|
53
|
+
const MappedIntegrationPoint<D,D> & mip,
|
|
54
|
+
BareSliceMatrix<double,ColMajor> mat, LocalHeap & lh)
|
|
55
|
+
{
|
|
56
|
+
Cast(fel).CalcMappedShape (mip, Trans(mat));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
template <typename MAT>
|
|
60
|
+
static void GenerateMatrix (const FiniteElement & fel,
|
|
61
|
+
const MappedIntegrationPoint<D,D,Complex> & mip,
|
|
62
|
+
MAT && mat, LocalHeap & lh)
|
|
63
|
+
{
|
|
64
|
+
HeapReset hr(lh);
|
|
65
|
+
|
|
66
|
+
mat = (1.0/mip.GetJacobiDet()) *
|
|
67
|
+
(mip.GetJacobian() * Trans (Cast(fel).GetShape(mip.IP(), lh)));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
static int DimRef() { return D; }
|
|
72
|
+
|
|
73
|
+
template <typename IP, typename MAT>
|
|
74
|
+
static void GenerateMatrixRef (const FiniteElement & fel, const IP & ip,
|
|
75
|
+
MAT && mat, LocalHeap & lh)
|
|
76
|
+
{
|
|
77
|
+
Cast(fel).CalcShape (ip, Trans(mat));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
template <typename MIP, typename MAT>
|
|
81
|
+
static void CalcTransformationMatrix (const MIP & bmip,
|
|
82
|
+
MAT & mat, LocalHeap & lh)
|
|
83
|
+
{
|
|
84
|
+
// mat = Trans(static_cast<const MappedIntegrationPoint<D,D>&>(mip).GetJacobianInverse());
|
|
85
|
+
auto & mip = static_cast<const MappedIntegrationPoint<D,D>&>(bmip);
|
|
86
|
+
mat = 1./mip.GetJacobiDet() * mip.GetJacobian();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
91
|
+
const SIMD_BaseMappedIntegrationRule & mir, BareSliceMatrix<SIMD<double>> mat)
|
|
92
|
+
{
|
|
93
|
+
Cast(fel).CalcMappedShape (mir, mat);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
98
|
+
static void Apply (const AFEL & fel, const MIP & mip,
|
|
99
|
+
const TVX & x, TVY && y,
|
|
100
|
+
LocalHeap & lh)
|
|
101
|
+
{
|
|
102
|
+
HeapReset hr(lh);
|
|
103
|
+
typedef typename TVX::TSCAL TSCAL;
|
|
104
|
+
|
|
105
|
+
Vec<D,TSCAL> hv = Trans (Cast(fel).GetShape(mip.IP(), lh)) * x;
|
|
106
|
+
hv *= (1.0/mip.GetJacobiDet());
|
|
107
|
+
y = mip.GetJacobian() * hv;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
using DiffOp<DiffOpIdHDiv<D, FEL> >::ApplyIR;
|
|
111
|
+
|
|
112
|
+
template <typename AFEL, class MIR>
|
|
113
|
+
static void ApplyIR (const AFEL & fel, const MIR & mir,
|
|
114
|
+
FlatVector<double> x, FlatMatrixFixWidth<D,double> y,
|
|
115
|
+
LocalHeap & lh)
|
|
116
|
+
{
|
|
117
|
+
static Timer t("ApplyIR - HDivfe");
|
|
118
|
+
t.Start();
|
|
119
|
+
Cast(fel).Evaluate (mir.IR(), x, y);
|
|
120
|
+
t.Stop();
|
|
121
|
+
|
|
122
|
+
for (int i = 0; i < mir.Size(); i++)
|
|
123
|
+
{
|
|
124
|
+
Vec<D> hy = mir[i].GetJacobian() * y.Row(i);
|
|
125
|
+
y.Row(i) = (1.0 / mir[i].GetJacobiDet()) * hy;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
132
|
+
static void ApplyTrans (const AFEL & fel, const MIP & mip,
|
|
133
|
+
const TVX & x, TVY & y,
|
|
134
|
+
LocalHeap & lh)
|
|
135
|
+
{
|
|
136
|
+
HeapReset hr(lh);
|
|
137
|
+
typedef typename TVX::TSCAL TSCAL;
|
|
138
|
+
|
|
139
|
+
Vec<D,TSCAL> hv = Trans (mip.GetJacobian()) * x;
|
|
140
|
+
hv *= (1.0/mip.GetJacobiDet());
|
|
141
|
+
y.Range(0,fel.GetNDof()) = Cast(fel).GetShape(mip.IP(),lh) * hv;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
using DiffOp<DiffOpIdHDiv<D,FEL>>::ApplySIMDIR;
|
|
145
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
146
|
+
BareSliceVector<double> x, BareSliceMatrix<SIMD<double>> y)
|
|
147
|
+
{
|
|
148
|
+
Cast(fel).Evaluate (mir, x, y);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
using DiffOp<DiffOpIdHDiv<D,FEL>>::AddTransSIMDIR;
|
|
152
|
+
static void AddTransSIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
153
|
+
BareSliceMatrix<SIMD<double>> y, BareSliceVector<double> x)
|
|
154
|
+
{
|
|
155
|
+
Cast(fel).AddTrans (mir, y, x);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
static shared_ptr<CoefficientFunction>
|
|
159
|
+
DiffShape (shared_ptr<CoefficientFunction> proxy,
|
|
160
|
+
shared_ptr<CoefficientFunction> dir,
|
|
161
|
+
bool Eulerian)
|
|
162
|
+
{
|
|
163
|
+
if (Eulerian) throw Exception("DiffShape Eulerian not implemented for DiffOpIdHDiv");
|
|
164
|
+
return -TraceCF(dir->Operator("Grad"))*proxy + dir->Operator("Grad") * proxy;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
template <int D, typename FEL = HDivFiniteElement<D-1> >
|
|
169
|
+
class DiffOpIdHDivSurface : public DiffOp<DiffOpIdHDivSurface<D, FEL> >
|
|
170
|
+
{
|
|
171
|
+
public:
|
|
172
|
+
enum { DIM = 1 };
|
|
173
|
+
enum { DIM_SPACE = D };
|
|
174
|
+
enum { DIM_ELEMENT = D-1 };
|
|
175
|
+
enum { DIM_DMAT = D };
|
|
176
|
+
enum { DIFFORDER = 0 };
|
|
177
|
+
|
|
178
|
+
static const FEL & Cast(const FiniteElement & fel)
|
|
179
|
+
{
|
|
180
|
+
return static_cast<const FEL&> (fel);
|
|
181
|
+
}
|
|
182
|
+
static int DimRef() { return D-1; }
|
|
183
|
+
|
|
184
|
+
template <typename IP, typename MAT>
|
|
185
|
+
static void GenerateMatrixRef (const FiniteElement & fel, const IP & ip,
|
|
186
|
+
MAT && mat, LocalHeap & lh)
|
|
187
|
+
{
|
|
188
|
+
Cast(fel).CalcShape (ip, Trans(mat));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
192
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
193
|
+
MAT && mat, LocalHeap & lh)
|
|
194
|
+
{
|
|
195
|
+
mat = (1.0 / mip.GetJacobiDet()) *mip.GetJacobian () *
|
|
196
|
+
Trans (Cast(fel).GetShape(mip.IP(),lh));
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
template <typename MIP, typename MAT>
|
|
200
|
+
static void CalcTransformationMatrix (const MIP & bmip,
|
|
201
|
+
MAT & mat, LocalHeap & lh)
|
|
202
|
+
{
|
|
203
|
+
auto & mip = static_cast<const MappedIntegrationPoint<D-1,D>&>(bmip);
|
|
204
|
+
mat = 1./mip.GetJacobiDet() * mip.GetJacobian();
|
|
205
|
+
}
|
|
206
|
+
/*
|
|
207
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
208
|
+
static void ApplyTrans (const AFEL & fel, const MIP & mip,
|
|
209
|
+
const TVX & x, TVY & y,
|
|
210
|
+
LocalHeap & lh)
|
|
211
|
+
{
|
|
212
|
+
throw Exception("in DiffOpIdHDivSurface::ApplyTrans");
|
|
213
|
+
HeapReset hr(lh);
|
|
214
|
+
typedef typename TVX::TSCAL TSCAL;
|
|
215
|
+
|
|
216
|
+
Vec<D,TSCAL> hv = Trans (mip.GetJacobian()) * x;
|
|
217
|
+
hv *= (1.0/mip.GetJacobiDet());
|
|
218
|
+
y = Cast(fel).GetShape(mip.IP(),lh) * hv;
|
|
219
|
+
}
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
223
|
+
const SIMD_BaseMappedIntegrationRule & mir, BareSliceMatrix<SIMD<double>> mat)
|
|
224
|
+
{
|
|
225
|
+
Cast(fel).CalcMappedShape (mir, mat);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
using DiffOp<DiffOpIdHDivSurface<D,FEL>>::ApplySIMDIR;
|
|
229
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
230
|
+
BareSliceVector<double> x, BareSliceMatrix<SIMD<double>> y)
|
|
231
|
+
{
|
|
232
|
+
Cast(fel).Evaluate (mir, x, y);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
using DiffOp<DiffOpIdHDivSurface<D,FEL>>::AddTransSIMDIR;
|
|
236
|
+
static void AddTransSIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
237
|
+
BareSliceMatrix<SIMD<double>> y, BareSliceVector<double> x)
|
|
238
|
+
{
|
|
239
|
+
Cast(fel).AddTrans (mir, y, x);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
static shared_ptr<CoefficientFunction>
|
|
243
|
+
DiffShape (shared_ptr<CoefficientFunction> proxy,
|
|
244
|
+
shared_ptr<CoefficientFunction> dir,
|
|
245
|
+
bool Eulerian)
|
|
246
|
+
{
|
|
247
|
+
if (Eulerian) throw Exception("DiffShape Eulerian not implemented for DiffOpIdHDivSurface");
|
|
248
|
+
return -TraceCF(dir->Operator("Gradboundary"))*proxy + dir->Operator("Gradboundary") * proxy;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
/// divergence Operator
|
|
255
|
+
template <int D, typename FEL = HDivFiniteElement<D> >
|
|
256
|
+
class DiffOpDivHDiv : public DiffOp<DiffOpDivHDiv<D, FEL> >
|
|
257
|
+
{
|
|
258
|
+
public:
|
|
259
|
+
enum { DIM = 1 };
|
|
260
|
+
enum { DIM_SPACE = D };
|
|
261
|
+
enum { DIM_ELEMENT = D };
|
|
262
|
+
enum { DIM_DMAT = 1 };
|
|
263
|
+
enum { DIFFORDER = 1 };
|
|
264
|
+
|
|
265
|
+
static string Name() { return "div"; }
|
|
266
|
+
|
|
267
|
+
static const FEL & Cast (const FiniteElement & fel)
|
|
268
|
+
{ return static_cast<const FEL&> (fel); }
|
|
269
|
+
|
|
270
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
271
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
272
|
+
MAT && mat, LocalHeap & lh)
|
|
273
|
+
{
|
|
274
|
+
HeapReset hr(lh);
|
|
275
|
+
mat = 1.0/mip.GetJacobiDet() *
|
|
276
|
+
Trans (static_cast<const FEL&>(fel).GetDivShape(mip.IP(), lh));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
template <typename AFEL, typename MIP>
|
|
280
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
281
|
+
FlatVector<double> & mat, LocalHeap & lh)
|
|
282
|
+
{
|
|
283
|
+
HeapReset hr(lh);
|
|
284
|
+
mat = 1.0/mip.GetJacobiDet() *
|
|
285
|
+
(static_cast<const FEL&>(fel).GetDivShape(mip.IP(), lh));
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
289
|
+
const SIMD_BaseMappedIntegrationRule & mir, BareSliceMatrix<SIMD<double>> mat)
|
|
290
|
+
{
|
|
291
|
+
Cast(fel).CalcMappedDivShape (mir, mat);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
296
|
+
static void Apply (const AFEL & fel, const MIP & mip,
|
|
297
|
+
const TVX & x, TVY && y,
|
|
298
|
+
LocalHeap & lh)
|
|
299
|
+
{
|
|
300
|
+
HeapReset hr(lh);
|
|
301
|
+
typedef typename TVX::TSCAL TSCAL;
|
|
302
|
+
Vec<DIM,TSCAL> hv = Trans (static_cast<const FEL&>(fel).GetDivShape(mip.IP(), lh)) * x;
|
|
303
|
+
y = (1.0/mip.GetJacobiDet()) * hv;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
307
|
+
static void ApplyTrans (const AFEL & fel, const MIP & mip,
|
|
308
|
+
const TVX & x, TVY & y,
|
|
309
|
+
LocalHeap & lh)
|
|
310
|
+
{
|
|
311
|
+
HeapReset hr(lh);
|
|
312
|
+
typedef typename TVX::TSCAL TSCAL;
|
|
313
|
+
Vec<DIM,TSCAL> hv = x;
|
|
314
|
+
hv *= (1.0/mip.GetJacobiDet());
|
|
315
|
+
y.Range(0,fel.GetNDof()) = static_cast<const FEL&>(fel).GetDivShape(mip.IP(),lh) * hv;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
using DiffOp<DiffOpDivHDiv<D,FEL>>::ApplySIMDIR;
|
|
320
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
321
|
+
BareSliceVector<double> x, BareSliceMatrix<SIMD<double>> y)
|
|
322
|
+
{
|
|
323
|
+
Cast(fel).EvaluateDiv (mir, x, y.Row(0));
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
using DiffOp<DiffOpDivHDiv<D,FEL>>::AddTransSIMDIR;
|
|
327
|
+
static void AddTransSIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
328
|
+
BareSliceMatrix<SIMD<double>> y, BareSliceVector<double> x)
|
|
329
|
+
{
|
|
330
|
+
Cast(fel).AddDivTrans (mir, y.Row(0), x);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
static shared_ptr<CoefficientFunction>
|
|
334
|
+
DiffShape (shared_ptr<CoefficientFunction> proxy,
|
|
335
|
+
shared_ptr<CoefficientFunction> dir,
|
|
336
|
+
bool Eulerian)
|
|
337
|
+
{
|
|
338
|
+
if (Eulerian) throw Exception("DiffShape Eulerian not implemented for DiffOpDivHDiv");
|
|
339
|
+
return -TraceCF(dir->Operator("Grad"))*proxy;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
/// Identity for boundary-normal elements
|
|
348
|
+
template <int D, typename FEL = HDivNormalFiniteElement<D-1> >
|
|
349
|
+
class DiffOpIdHDivBoundary : public DiffOp<DiffOpIdHDivBoundary<D, FEL> >
|
|
350
|
+
{
|
|
351
|
+
public:
|
|
352
|
+
enum { DIM = 1 };
|
|
353
|
+
enum { DIM_SPACE = D };
|
|
354
|
+
enum { DIM_ELEMENT = D-1 };
|
|
355
|
+
enum { DIM_DMAT = 1 };
|
|
356
|
+
enum { DIFFORDER = 0 };
|
|
357
|
+
|
|
358
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
359
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
360
|
+
MAT && mat, LocalHeap & lh)
|
|
361
|
+
{
|
|
362
|
+
mat = (1.0/mip.GetJacobiDet())*
|
|
363
|
+
Trans(static_cast<const FEL&> (fel).GetShape (mip.IP(), lh));
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
367
|
+
static void Apply (const AFEL & fel, const MIP & mip,
|
|
368
|
+
const TVX & x, TVY && y,
|
|
369
|
+
LocalHeap & lh)
|
|
370
|
+
{
|
|
371
|
+
y = (1.0/mip.GetJacobiDet())*
|
|
372
|
+
(Trans (static_cast<const FEL&> (fel).GetShape (mip.IP(), lh)) * x);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
376
|
+
static void ApplyTrans (const AFEL & fel, const MIP & mip,
|
|
377
|
+
const TVX & x, TVY & y,
|
|
378
|
+
LocalHeap & lh)
|
|
379
|
+
{
|
|
380
|
+
y.Range(0,fel.GetNDof()) = static_cast<const FEL&> (fel).GetShape (mip.IP(), lh)*((1.0/mip.GetJacobiDet())* x);
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
/// Identity for boundary-normal elements, gives q_n n
|
|
386
|
+
template <int D, typename FEL = HDivNormalFiniteElement<D-1> >
|
|
387
|
+
class DiffOpIdVecHDivBoundary : public DiffOp<DiffOpIdVecHDivBoundary<D,FEL> >
|
|
388
|
+
{
|
|
389
|
+
public:
|
|
390
|
+
enum { DIM = 1 };
|
|
391
|
+
enum { DIM_SPACE = D };
|
|
392
|
+
enum { DIM_ELEMENT = D-1 };
|
|
393
|
+
enum { DIM_DMAT = D };
|
|
394
|
+
enum { DIFFORDER = 0 };
|
|
395
|
+
|
|
396
|
+
static const FEL & Cast (const FiniteElement & fel)
|
|
397
|
+
{ return static_cast<const FEL&> (fel); }
|
|
398
|
+
|
|
399
|
+
template <typename AFEL, typename MIP, typename MAT>
|
|
400
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
401
|
+
MAT && mat, LocalHeap & lh)
|
|
402
|
+
{
|
|
403
|
+
// Vec<D> scaled_nv = (1.0/mip.GetJacobiDet()) * mip.GetNV();
|
|
404
|
+
auto scaled_nv = (1.0/mip.GetJacobiDet()) * mip.GetNV();
|
|
405
|
+
mat = scaled_nv * Trans(Cast(fel).GetShape (mip.IP(), lh));
|
|
406
|
+
|
|
407
|
+
//Cast(fel).CalcMappedShape(mip, Trans(mat));
|
|
408
|
+
|
|
409
|
+
/*
|
|
410
|
+
mat = (1.0/mip.GetJacobiDet())*
|
|
411
|
+
Trans(static_cast<const FEL&> (fel).GetShape (mip.IP(), lh))
|
|
412
|
+
* Trans (mip.GetNV());
|
|
413
|
+
*/
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
417
|
+
static void Apply (const AFEL & fel, const MIP & mip,
|
|
418
|
+
const TVX & x, TVY && y,
|
|
419
|
+
LocalHeap & lh)
|
|
420
|
+
{
|
|
421
|
+
y = ( (1.0/mip.GetJacobiDet())*(InnerProduct (Cast(fel).GetShape (mip.IP(), lh), x) )) * mip.GetNV();
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
425
|
+
static void ApplyTrans (const AFEL & fel, const MIP & mip,
|
|
426
|
+
const TVX & x, TVY & y,
|
|
427
|
+
LocalHeap & lh)
|
|
428
|
+
{
|
|
429
|
+
y.Range(0,fel.GetNDof()) = ((1.0/mip.GetJacobiDet())* InnerProduct (x, mip.GetNV()) ) * Cast(fel).GetShape (mip.IP(), lh);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
using DiffOp<DiffOpIdVecHDivBoundary<D,FEL>>::ApplySIMDIR;
|
|
433
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
434
|
+
BareSliceVector<double> x, BareSliceMatrix<SIMD<double>> y)
|
|
435
|
+
{
|
|
436
|
+
Cast(fel).Evaluate (mir, x, y);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
using DiffOp<DiffOpIdVecHDivBoundary<D,FEL>>::AddTransSIMDIR;
|
|
440
|
+
static void AddTransSIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
441
|
+
BareSliceMatrix<SIMD<double>> y, BareSliceVector<double> x)
|
|
442
|
+
{
|
|
443
|
+
Cast(fel).AddTrans (mir, y, x);
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
//Dual diffop
|
|
448
|
+
template <int D>
|
|
449
|
+
class DiffOpHDivDual : public DiffOp<DiffOpHDivDual<D> >
|
|
450
|
+
{
|
|
451
|
+
public:
|
|
452
|
+
typedef DiffOp<DiffOpHDivDual<D>> BASE;
|
|
453
|
+
enum { DIM = 1 };
|
|
454
|
+
enum { DIM_SPACE = D };
|
|
455
|
+
enum { DIM_ELEMENT = D };
|
|
456
|
+
enum { DIM_DMAT = D };
|
|
457
|
+
enum { DIFFORDER = 0 };
|
|
458
|
+
|
|
459
|
+
static auto & Cast (const FiniteElement & fel)
|
|
460
|
+
{ return static_cast<const HDivFiniteElement<D>&> (fel); }
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
template <typename AFEL, typename MIP, typename MAT,
|
|
464
|
+
typename std::enable_if<std::is_convertible<MAT,BareSliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
465
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
466
|
+
MAT && mat, LocalHeap & lh)
|
|
467
|
+
{
|
|
468
|
+
Cast(fel).CalcDualShape (mip, Trans(mat));
|
|
469
|
+
}
|
|
470
|
+
template <typename AFEL, typename MIP, typename MAT,
|
|
471
|
+
typename std::enable_if<!std::is_convertible<MAT,BareSliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
472
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
473
|
+
MAT && mat, LocalHeap & lh)
|
|
474
|
+
{
|
|
475
|
+
// fel.CalcDualShape (mip, mat);
|
|
476
|
+
throw Exception(string("DiffOpHDivDual not available for mat ")+typeid(mat).name());
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/*static void GenerateMatrixSIMDIR (const FiniteElement & fel,
|
|
480
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
481
|
+
BareSliceMatrix<SIMD<double>> mat)
|
|
482
|
+
{
|
|
483
|
+
Cast(fel).CalcDualShape (static_cast<const SIMD_MappedIntegrationRule<D,D>&>(mir), mat);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
using BASE::ApplySIMDIR;
|
|
487
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
488
|
+
BareSliceVector<double> x, BareSliceMatrix<SIMD<double>> y)
|
|
489
|
+
{
|
|
490
|
+
Cast(fel).EvaluateDual (static_cast<const SIMD_MappedIntegrationRule<D,D>&> (mir), x, y);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
using BASE::AddTransSIMDIR;
|
|
494
|
+
static void AddTransSIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & mir,
|
|
495
|
+
BareSliceMatrix<SIMD<double>> y, BareSliceVector<double> x)
|
|
496
|
+
{
|
|
497
|
+
Cast(fel).AddDualTrans (static_cast<const SIMD_MappedIntegrationRule<D,D>&> (mir), y, x);
|
|
498
|
+
} */
|
|
499
|
+
|
|
500
|
+
};
|
|
501
|
+
|
|
502
|
+
template <int D>
|
|
503
|
+
class DiffOpHDivDualSurface : public DiffOp<DiffOpHDivDualSurface<D> >
|
|
504
|
+
{
|
|
505
|
+
public:
|
|
506
|
+
enum { DIM = 1 };
|
|
507
|
+
enum { DIM_SPACE = D };
|
|
508
|
+
enum { DIM_ELEMENT = D-1 };
|
|
509
|
+
enum { DIM_DMAT = D };
|
|
510
|
+
enum { DIFFORDER = 0 };
|
|
511
|
+
|
|
512
|
+
typedef DiffOpHDivDualSurface<D> DIFFOP_TRACE;
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
static auto & Cast (const FiniteElement & fel)
|
|
516
|
+
{ return static_cast<const HDivFiniteElement<D-1>&> (fel); }
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
template <typename AFEL, typename MIP, typename MAT,
|
|
520
|
+
typename std::enable_if<std::is_convertible<MAT,BareSliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
521
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
522
|
+
MAT && mat, LocalHeap & lh)
|
|
523
|
+
{
|
|
524
|
+
Cast(fel).CalcDualShape (mip, Trans(mat));
|
|
525
|
+
}
|
|
526
|
+
template <typename AFEL, typename MIP, typename MAT,
|
|
527
|
+
typename std::enable_if<!std::is_convertible<MAT,BareSliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
528
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
529
|
+
MAT && mat, LocalHeap & lh)
|
|
530
|
+
{
|
|
531
|
+
throw Exception(string("DiffOpHDivDualSurface not available for mat ")+typeid(mat).name());
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
};
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
template <int D, typename FEL = HDivNormalFiniteElement<D-1> >
|
|
541
|
+
class DiffOpGradientTraceHDiv;
|
|
542
|
+
|
|
543
|
+
/// Gradient operator for HDiv
|
|
544
|
+
template <int D, typename FEL = HDivFiniteElement<D> >
|
|
545
|
+
// class DiffOpGradientHDiv : public DiffOp<DiffOpGradientHDiv<D> >
|
|
546
|
+
class DiffOpGradientHDiv : public NumDiffGradient<DiffOpGradientHDiv<D>, DiffOpIdHDiv<D>, FEL>
|
|
547
|
+
{
|
|
548
|
+
public:
|
|
549
|
+
/*
|
|
550
|
+
enum { DIM = 1 };
|
|
551
|
+
enum { DIM_SPACE = D };
|
|
552
|
+
enum { DIM_ELEMENT = D };
|
|
553
|
+
enum { DIM_DMAT = D*D };
|
|
554
|
+
enum { DIFFORDER = 1 };
|
|
555
|
+
*/
|
|
556
|
+
|
|
557
|
+
static Array<int> GetDimensions() { return Array<int> ( { D, D } ); };
|
|
558
|
+
|
|
559
|
+
// static constexpr double eps() { return 1e-4; }
|
|
560
|
+
|
|
561
|
+
typedef DiffOpGradientTraceHDiv<D> DIFFOP_TRACE;
|
|
562
|
+
///
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
#ifdef UNUSED
|
|
567
|
+
template <typename AFEL, typename SIP, typename MAT,
|
|
568
|
+
typename std::enable_if<!std::is_convertible<MAT,SliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
569
|
+
static void GenerateMatrix (const AFEL & fel, const SIP & sip,
|
|
570
|
+
MAT & mat, LocalHeap & lh)
|
|
571
|
+
{
|
|
572
|
+
cout << "nicht gut" << endl;
|
|
573
|
+
cout << "type(fel) = " << typeid(fel).name() << ", sip = " << typeid(sip).name()
|
|
574
|
+
<< ", mat = " << typeid(mat).name() << endl;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// template <typename AFEL, typename SIP>
|
|
578
|
+
// static void GenerateMatrix (const AFEL & fel, const SIP & sip,
|
|
579
|
+
// SliceMatrix<double,ColMajor> mat, LocalHeap & lh)
|
|
580
|
+
template <typename AFEL, typename MIP, typename MAT,
|
|
581
|
+
typename std::enable_if<std::is_convertible<MAT,SliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
582
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip,
|
|
583
|
+
MAT mat, LocalHeap & lh)
|
|
584
|
+
{
|
|
585
|
+
CalcDShapeFE<FEL,D,D,D>(static_cast<const FEL&>(fel), mip, Trans(mat), lh, eps());
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
static void GenerateMatrixSIMDIR (const FiniteElement & bfel,
|
|
589
|
+
const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<double>> mat)
|
|
590
|
+
{
|
|
591
|
+
CalcSIMDDShapeFE<FEL,D,D,D>(static_cast<const FEL&>(bfel), static_cast<const SIMD_MappedIntegrationRule<D,D> &>(bmir), mat, eps());
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
595
|
+
static void Apply (const AFEL & fel, const MIP & mip,
|
|
596
|
+
const TVX & x, TVY && y,
|
|
597
|
+
LocalHeap & lh)
|
|
598
|
+
{
|
|
599
|
+
// typedef typename TVX::TSCAL TSCAL;
|
|
600
|
+
HeapReset hr(lh);
|
|
601
|
+
FlatMatrixFixWidth<D*D> hm(fel.GetNDof(),lh);
|
|
602
|
+
CalcDShapeFE<FEL,D,D,D>(static_cast<const FEL&>(fel), mip, hm, lh, eps());
|
|
603
|
+
y = Trans(hm)*x;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
template <typename AFEL, typename MIP, class TVX, class TVY>
|
|
608
|
+
static void ApplyTrans (const AFEL & fel, const MIP & mip,
|
|
609
|
+
const TVX & x, TVY & by,
|
|
610
|
+
LocalHeap & lh)
|
|
611
|
+
{
|
|
612
|
+
ApplyTransDShapeFE<FEL,D,D,D>(static_cast<const FEL&>(fel), mip, x, by, lh, eps());
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
using DiffOp<DiffOpGradientHDiv<D>>::ApplySIMDIR;
|
|
616
|
+
static void ApplySIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & bmir,
|
|
617
|
+
BareSliceVector<double> x, BareSliceMatrix<SIMD<double>> y)
|
|
618
|
+
{
|
|
619
|
+
ApplySIMDDShapeFE<FEL,D,D,D>(static_cast<const FEL&>(fel), bmir, x, y, eps());
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
using DiffOp<DiffOpGradientHDiv<D>>::AddTransSIMDIR;
|
|
625
|
+
static void AddTransSIMDIR (const FiniteElement & fel, const SIMD_BaseMappedIntegrationRule & bmir,
|
|
626
|
+
BareSliceMatrix<SIMD<double>> x, BareSliceVector<double> y)
|
|
627
|
+
{
|
|
628
|
+
AddTransSIMDDShapeFE<FEL,D,D,D>(static_cast<const FEL&>(fel), bmir, x, y, eps());
|
|
629
|
+
}
|
|
630
|
+
#endif
|
|
631
|
+
};
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
/// Trace gradient operator for HDiv
|
|
635
|
+
template <int D, typename FEL>
|
|
636
|
+
class DiffOpGradientTraceHDiv : public DiffOp<DiffOpGradientTraceHDiv<D> >
|
|
637
|
+
{
|
|
638
|
+
public:
|
|
639
|
+
enum { DIM = 1 };
|
|
640
|
+
enum { DIM_SPACE = D };
|
|
641
|
+
enum { DIM_ELEMENT = D-1 };
|
|
642
|
+
enum { DIM_DMAT = D*D };
|
|
643
|
+
enum { DIFFORDER = 1 };
|
|
644
|
+
static Array<int> GetDimensions() { return Array<int> ( { D, D } ); };
|
|
645
|
+
|
|
646
|
+
static constexpr double eps() { return 1e-4; }
|
|
647
|
+
|
|
648
|
+
typedef void DIFFOP_TRACE;
|
|
649
|
+
///
|
|
650
|
+
template <typename AFEL, typename SIP, typename MAT,
|
|
651
|
+
typename std::enable_if<!std::is_convertible<MAT,BareSliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
652
|
+
static void GenerateMatrix (const AFEL & fel, const SIP & sip,
|
|
653
|
+
MAT & mat, LocalHeap & lh)
|
|
654
|
+
{
|
|
655
|
+
cout << "nicht gut" << endl;
|
|
656
|
+
cout << "type(fel) = " << typeid(fel).name() << ", sip = " << typeid(sip).name()
|
|
657
|
+
<< ", mat = " << typeid(mat).name() << endl;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
template <typename AFEL, typename MIP, typename MAT,
|
|
661
|
+
typename std::enable_if<std::is_convertible<MAT,BareSliceMatrix<double,ColMajor>>::value, int>::type = 0>
|
|
662
|
+
static void GenerateMatrix (const AFEL & fel, const MIP & mip, MAT mat, LocalHeap & lh)
|
|
663
|
+
{
|
|
664
|
+
CalcDShapeFE<FEL,D,D-1,D>(static_cast<const FEL&>(fel), mip, Trans(mat), lh, eps());
|
|
665
|
+
}
|
|
666
|
+
};
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
/// Integrator for term of zero-th order
|
|
674
|
+
template <int D>
|
|
675
|
+
class MassHDivIntegrator
|
|
676
|
+
: public T_BDBIntegrator<DiffOpIdHDiv<D>, DiagDMat<D>, HDivFiniteElement<D> >
|
|
677
|
+
{
|
|
678
|
+
typedef T_BDBIntegrator<DiffOpIdHDiv<D>, DiagDMat<D>, HDivFiniteElement<D> > BASE;
|
|
679
|
+
public:
|
|
680
|
+
using T_BDBIntegrator<DiffOpIdHDiv<D>, DiagDMat<D>, HDivFiniteElement<D> >::T_BDBIntegrator;
|
|
681
|
+
virtual string Name () const { return "MassHDiv"; }
|
|
682
|
+
};
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
/// Integrator for div u div v
|
|
687
|
+
template <int D>
|
|
688
|
+
class DivDivHDivIntegrator
|
|
689
|
+
: public T_BDBIntegrator<DiffOpDivHDiv<D>, DiagDMat<1>, HDivFiniteElement<D> >
|
|
690
|
+
{
|
|
691
|
+
typedef T_BDBIntegrator<DiffOpDivHDiv<D>, DiagDMat<1>, HDivFiniteElement<D> > BASE;
|
|
692
|
+
public:
|
|
693
|
+
using T_BDBIntegrator<DiffOpDivHDiv<D>, DiagDMat<1>, HDivFiniteElement<D> >::T_BDBIntegrator;
|
|
694
|
+
virtual string Name () const { return "DivDivHDiv"; }
|
|
695
|
+
};
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
/// source term integrator for \ff div v
|
|
701
|
+
template <int D>
|
|
702
|
+
class NGS_DLL_HEADER DivSourceHDivIntegrator
|
|
703
|
+
: public T_BIntegrator<DiffOpDivHDiv<D>, DVec<1>, HDivFiniteElement<D> >
|
|
704
|
+
{
|
|
705
|
+
typedef T_BIntegrator<DiffOpDivHDiv<D>, DVec<1>, HDivFiniteElement<D> > BASE;
|
|
706
|
+
public:
|
|
707
|
+
using T_BIntegrator<DiffOpDivHDiv<D>, DVec<1>, HDivFiniteElement<D> >::T_BIntegrator;
|
|
708
|
+
virtual string Name () const { return "DivSourceHDiv"; }
|
|
709
|
+
};
|
|
710
|
+
|
|
711
|
+
/*
|
|
712
|
+
/// source term for H(div)
|
|
713
|
+
template <int D>
|
|
714
|
+
class SourceHDivIntegrator
|
|
715
|
+
: public T_BIntegrator<DiffOpIdHDiv<D>, DVec<D>, HDivFiniteElement<D> >
|
|
716
|
+
{
|
|
717
|
+
public:
|
|
718
|
+
SourceHDivIntegrator (CoefficientFunction * coeff1,
|
|
719
|
+
CoefficientFunction * coeff2,
|
|
720
|
+
CoefficientFunction * coeff3);
|
|
721
|
+
|
|
722
|
+
SourceHDivIntegrator (CoefficientFunction * coeff1,
|
|
723
|
+
CoefficientFunction * coeff2);
|
|
724
|
+
|
|
725
|
+
static Integrator * Create (Array<CoefficientFunction*> & coeffs)
|
|
726
|
+
{
|
|
727
|
+
if(D == 2)
|
|
728
|
+
return new SourceHDivIntegrator (coeffs[0], coeffs[1]);
|
|
729
|
+
else if (D == 3)
|
|
730
|
+
return new SourceHDivIntegrator (coeffs[0], coeffs[1], coeffs[2]);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
///
|
|
734
|
+
virtual string Name () const { return "SourceHDiv"; }
|
|
735
|
+
};
|
|
736
|
+
*/
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
template <int D> class SourceHDivIntegrator;
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
template <int D>
|
|
743
|
+
class NGS_DLL_HEADER BaseSourceHDivIntegrator
|
|
744
|
+
: public T_BIntegrator<DiffOpIdHDiv<D>, DVec<D>, HDivFiniteElement<D> >
|
|
745
|
+
{
|
|
746
|
+
typedef T_BIntegrator<DiffOpIdHDiv<D>, DVec<D>, HDivFiniteElement<D> > BASE;
|
|
747
|
+
public:
|
|
748
|
+
using T_BIntegrator<DiffOpIdHDiv<D>, DVec<D>, HDivFiniteElement<D> >::T_BIntegrator;
|
|
749
|
+
virtual string Name () const { return "SourceHDiv"; }
|
|
750
|
+
};
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
template <>
|
|
755
|
+
class NGS_DLL_HEADER SourceHDivIntegrator<2>
|
|
756
|
+
: public BaseSourceHDivIntegrator<2>
|
|
757
|
+
{
|
|
758
|
+
typedef BaseSourceHDivIntegrator<2> BASE;
|
|
759
|
+
public:
|
|
760
|
+
using BaseSourceHDivIntegrator<2>::BaseSourceHDivIntegrator;
|
|
761
|
+
SourceHDivIntegrator() = delete;
|
|
762
|
+
};
|
|
763
|
+
|
|
764
|
+
template <>
|
|
765
|
+
class NGS_DLL_HEADER SourceHDivIntegrator<3>
|
|
766
|
+
: public BaseSourceHDivIntegrator<3>
|
|
767
|
+
{
|
|
768
|
+
typedef BaseSourceHDivIntegrator<3> BASE;
|
|
769
|
+
public:
|
|
770
|
+
using BaseSourceHDivIntegrator<3>::BaseSourceHDivIntegrator;
|
|
771
|
+
SourceHDivIntegrator() = delete;
|
|
772
|
+
};
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
template <int D>
|
|
777
|
+
class NGS_DLL_HEADER SourceHDivIntegratorN
|
|
778
|
+
: public T_BIntegrator<DiffOpIdHDiv<D>, DVecN<D>, HDivFiniteElement<D> >
|
|
779
|
+
{
|
|
780
|
+
typedef T_BIntegrator<DiffOpIdHDiv<D>, DVecN<D>, HDivFiniteElement<D> > BASE;
|
|
781
|
+
public:
|
|
782
|
+
using T_BIntegrator<DiffOpIdHDiv<D>, DVecN<D>, HDivFiniteElement<D> >::T_BIntegrator;
|
|
783
|
+
virtual string Name () const { return "VecSourceHDiv"; }
|
|
784
|
+
};
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
///
|
|
793
|
+
template <int D, typename FEL = HDivNormalFiniteElement<D-1> >
|
|
794
|
+
class NGS_DLL_HEADER NeumannHDivIntegrator
|
|
795
|
+
: public T_BIntegrator<DiffOpIdHDivBoundary<D>, DVec<1>, FEL>
|
|
796
|
+
{
|
|
797
|
+
typedef T_BIntegrator<DiffOpIdHDivBoundary<D>, DVec<1>, FEL> BASE;
|
|
798
|
+
public:
|
|
799
|
+
using T_BIntegrator<DiffOpIdHDivBoundary<D>, DVec<1>, FEL>::T_BIntegrator;
|
|
800
|
+
///
|
|
801
|
+
/*
|
|
802
|
+
NeumannHDivIntegrator (CoefficientFunction * coeff)
|
|
803
|
+
: T_BIntegrator<DiffOpIdHDivBoundary<D>, DVec<1>, FEL> (DVec<1> (coeff))
|
|
804
|
+
{ ; }
|
|
805
|
+
|
|
806
|
+
static Integrator * Create (Array<CoefficientFunction*> & coeffs)
|
|
807
|
+
{
|
|
808
|
+
return new NeumannHDivIntegrator (coeffs[0]);
|
|
809
|
+
}
|
|
810
|
+
*/
|
|
811
|
+
///
|
|
812
|
+
virtual bool BoundaryForm () const { return 1; }
|
|
813
|
+
///
|
|
814
|
+
virtual string Name () const { return "NeumannHDiv"; }
|
|
815
|
+
};
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
/// integrator for \f$\int_\Gamma \sigma_n \tau_n \, ds\f$
|
|
819
|
+
template <int D>
|
|
820
|
+
class RobinHDivIntegrator
|
|
821
|
+
: public T_BDBIntegrator<DiffOpIdVecHDivBoundary<D>, DiagDMat<D>, HDivNormalFiniteElement<D-1> >
|
|
822
|
+
{
|
|
823
|
+
typedef T_BDBIntegrator<DiffOpIdVecHDivBoundary<D>, DiagDMat<D>, HDivNormalFiniteElement<D-1> > BASE;
|
|
824
|
+
public:
|
|
825
|
+
using T_BDBIntegrator<DiffOpIdVecHDivBoundary<D>, DiagDMat<D>, HDivNormalFiniteElement<D-1> >::T_BDBIntegrator;
|
|
826
|
+
/*
|
|
827
|
+
NGS_DLL_HEADER RobinHDivIntegrator (CoefficientFunction * coeff)
|
|
828
|
+
: T_BDBIntegrator<DiffOpIdVecHDivBoundary<D>, DiagDMat<D>, HDivNormalFiniteElement<D-1> > (DiagDMat<D> (coeff))
|
|
829
|
+
{ ; }
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
static Integrator * Create (Array<CoefficientFunction*> & coeffs)
|
|
833
|
+
{
|
|
834
|
+
return new RobinHDivIntegrator (coeffs[0]);
|
|
835
|
+
|
|
836
|
+
}
|
|
837
|
+
*/
|
|
838
|
+
virtual bool BoundaryForm () const { return 1; }
|
|
839
|
+
virtual string Name () const { return "RobinHDiv"; }
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
#ifdef FILE_HDIV_EQUATIONS_CPP
|
|
847
|
+
#define HDIV_EQUATIONS_EXTERN
|
|
848
|
+
#else
|
|
849
|
+
#define HDIV_EQUATIONS_EXTERN extern
|
|
850
|
+
#endif
|
|
851
|
+
|
|
852
|
+
namespace ngfem
|
|
853
|
+
{
|
|
854
|
+
|
|
855
|
+
HDIV_EQUATIONS_EXTERN template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpIdHDiv<2> >;
|
|
856
|
+
HDIV_EQUATIONS_EXTERN template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpIdHDiv<3> >;
|
|
857
|
+
HDIV_EQUATIONS_EXTERN template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpDivHDiv<2> >;
|
|
858
|
+
HDIV_EQUATIONS_EXTERN template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpDivHDiv<3> >;
|
|
859
|
+
|
|
860
|
+
HDIV_EQUATIONS_EXTERN template class MassHDivIntegrator<2>;
|
|
861
|
+
HDIV_EQUATIONS_EXTERN template class DivDivHDivIntegrator<2>;
|
|
862
|
+
// HDIV_EQUATIONS_EXTERN template class SourceHDivIntegrator<2>;
|
|
863
|
+
HDIV_EQUATIONS_EXTERN template class SourceHDivIntegratorN<2>;
|
|
864
|
+
HDIV_EQUATIONS_EXTERN template class DivSourceHDivIntegrator<2>;
|
|
865
|
+
|
|
866
|
+
HDIV_EQUATIONS_EXTERN template class MassHDivIntegrator<3>;
|
|
867
|
+
HDIV_EQUATIONS_EXTERN template class DivDivHDivIntegrator<3>;
|
|
868
|
+
// HDIV_EQUATIONS_EXTERN template class SourceHDivIntegrator<3>;
|
|
869
|
+
HDIV_EQUATIONS_EXTERN template class SourceHDivIntegratorN<3>;
|
|
870
|
+
HDIV_EQUATIONS_EXTERN template class DivSourceHDivIntegrator<3>;
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
#endif
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|