ngsolve 6.2.2506.post75.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.
Potentially problematic release.
This version of ngsolve might be problematic. Click here for more details.
- ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvcc +14 -0
- ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvlink +14 -0
- ngsolve-6.2.2506.post75.dev0.data/data/bin/ngscxx +15 -0
- ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsld +11 -0
- ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsolve.tcl +648 -0
- ngsolve-6.2.2506.post75.dev0.data/data/bin/ngspy +2 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/analytic_integrals.hpp +10 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/arnoldi.hpp +55 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bandmatrix.hpp +334 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basematrix.hpp +957 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basevector.hpp +1268 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbequations.hpp +2805 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbintegrator.hpp +1660 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bem_diffops.hpp +475 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bessel.hpp +1064 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bilinearform.hpp +963 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bla.hpp +29 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockalloc.hpp +95 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockjacobi.hpp +328 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bspline.hpp +116 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/calcinverse.hpp +141 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cg.hpp +368 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/chebyshev.hpp +44 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cholesky.hpp +720 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/clapack.h +7254 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/code_generation.hpp +296 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient.hpp +2033 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_impl.hpp +19 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_stdmath.hpp +167 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/commutingAMG.hpp +106 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/comp.hpp +79 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compatibility.hpp +41 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/complex_wrapper.hpp +73 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compressedfespace.hpp +110 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/contact.hpp +235 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_linalg.hpp +175 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngbla.hpp +226 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngstd.hpp +527 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_profiler.hpp +240 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diagonalmatrix.hpp +154 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/differentialoperator.hpp +276 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop.hpp +1286 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop_impl.hpp +328 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffopwithfactor.hpp +123 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/discontinuous.hpp +84 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/dump.hpp +949 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ectypes.hpp +121 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigen.hpp +60 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigensystem.hpp +18 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elasticity_equations.hpp +595 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementbyelement.hpp +195 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtopology.hpp +1760 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtransformation.hpp +339 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/evalfunc.hpp +405 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/expr.hpp +1686 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfe.hpp +175 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfespace.hpp +180 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facethofe.hpp +111 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetsurffespace.hpp +112 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fe_interfaces.hpp +32 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fem.hpp +87 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fesconvert.hpp +14 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fespace.hpp +1449 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/finiteelement.hpp +286 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalinterfacespace.hpp +77 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalspace.hpp +115 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/gridfunction.hpp +525 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1amg.hpp +124 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe.hpp +188 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe_impl.hpp +1262 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo.hpp +148 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo_impl.hpp +185 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofespace.hpp +167 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lofe.hpp +1240 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lumping.hpp +41 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurl_equations.hpp +1381 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfe.hpp +2241 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfespace.hpp +78 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe.hpp +259 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe_utils.hpp +107 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdiv_dshape.hpp +857 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdivfes.hpp +308 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe.hpp +175 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe_impl.hpp +1871 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofespace.hpp +193 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurllofe.hpp +1146 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdiv_equations.hpp +880 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivfe.hpp +2923 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivsurfacespace.hpp +76 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe.hpp +206 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe_utils.hpp +717 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfes.hpp +75 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe.hpp +447 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe_impl.hpp +1107 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofefo.hpp +229 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofespace.hpp +177 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhosurfacefespace.hpp +106 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivlofe.hpp +773 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hidden.hpp +74 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/householder.hpp +181 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_ams_precond.hpp +123 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_precond.hpp +73 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integrator.hpp +2012 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integratorcf.hpp +253 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/interpolate.hpp +49 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrule.hpp +2542 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrules_SauterSchwab.hpp +25 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/irspace.hpp +49 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/jacobi.hpp +153 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/kernels.hpp +762 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe.hpp +194 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe_impl.hpp +564 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofefo.hpp +542 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofespace.hpp +344 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/la.hpp +38 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linalg_kernels.hpp +102 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linearform.hpp +266 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/matrix.hpp +2140 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/memusage.hpp +41 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/meshaccess.hpp +1359 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mgpre.hpp +204 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mp_coefficient.hpp +145 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mptools.hpp +2281 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multigrid.hpp +42 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multivector.hpp +447 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mumpsinverse.hpp +187 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mycomplex.hpp +361 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ng_lapack.hpp +1661 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngblas.hpp +1232 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_defines.hpp +30 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_stdcpp_include.hpp +106 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_utils.hpp +121 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsobject.hpp +1019 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsstream.hpp +113 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngstd.hpp +72 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe.hpp +96 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe_impl.hpp +141 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfe.hpp +223 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfespace.hpp +98 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetsurfacefespace.hpp +84 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/order.hpp +251 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallel_matrices.hpp +222 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/paralleldofs.hpp +340 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelngs.hpp +23 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelvector.hpp +269 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pardisoinverse.hpp +200 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/periodic.hpp +129 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/plateaufespace.hpp +25 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pml.hpp +275 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pmltrafo.hpp +631 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/postproc.hpp +142 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/potentialtools.hpp +22 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/precomp.hpp +60 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/preconditioner.hpp +602 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/prolongation.hpp +377 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_comp.hpp +107 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_fem.hpp +89 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_linalg.hpp +58 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_ngstd.hpp +386 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol.hpp +4896 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_tet.hpp +395 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_trig.hpp +492 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/reorderedfespace.hpp +81 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sample_sort.hpp +105 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/scalarfe.hpp +335 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/shapefunction_utils.hpp +113 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/simd_complex.hpp +329 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/smoother.hpp +253 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/solve.hpp +89 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsecholesky.hpp +313 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix.hpp +1038 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_dyn.hpp +90 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_impl.hpp +1013 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/special_matrix.hpp +463 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/specialelement.hpp +125 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/statushandler.hpp +33 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/stringops.hpp +12 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/superluinverse.hpp +136 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symbolicintegrator.hpp +850 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symmetricmatrix.hpp +144 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfe.hpp +224 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfespace.hpp +91 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensor.hpp +522 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorcoefficient.hpp +446 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorproductintegrator.hpp +113 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe.hpp +128 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe_impl.hpp +380 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe.hpp +80 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe_impl.hpp +492 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpdiffop.hpp +461 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpfes.hpp +133 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpintrule.hpp +224 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/triangular.hpp +465 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe.hpp +245 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe_impl.hpp +1029 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/umfpackinverse.hpp +148 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/unifiedvector.hpp +103 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vector.hpp +1273 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/voxelcoefficientfunction.hpp +41 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vtkoutput.hpp +198 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vvector.hpp +208 -0
- ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/webgui.hpp +92 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/NGSolveConfig.cmake +102 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +89 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets.cmake +173 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngbla.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngfem.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngla.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngstd.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/TensorProductTools.py +210 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__console.py +94 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__expr.py +181 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__init__.py +148 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/_scikit_build_core_dependencies.py +30 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/bvp.py +78 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__init__.py +1 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__main__.py +4 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/config.py +60 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/__init__.py +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/__init__.py +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hhj.py +44 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hybrid_dg.py +53 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/mixed.py +30 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/nonlin.py +29 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pickling.py +26 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pml.py +31 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/taskmanager.py +20 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/tdnns.py +47 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +45 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG.py +38 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGlap.py +42 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGwave.py +61 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/__init__.py +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/adaptive.py +123 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/cmagnet.py +59 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/elasticity.py +76 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/navierstokes.py +74 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.ipynb +170 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.py +41 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_poisson.py +89 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +82 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/directsolvers.py +26 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/eigenvalues.py +364 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/internal.py +89 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/krylovspace.py +1013 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/meshes.py +748 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngs2petsc.py +310 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscuda.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscxx.py +42 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngslib.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/nonlinearsolvers.py +203 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/preconditioners.py +11 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solve_implementation.py +168 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers.py +7 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timestepping.py +185 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timing.py +108 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/utils.py +167 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/webgui.py +670 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.geo +17 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.vol +240 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.in2d +41 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.vol +614 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.geo +12 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.vol +2560 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.geo +19 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.vol +1832 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.geo +73 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.in2d +17 -0
- ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.vol +149 -0
- ngsolve-6.2.2506.post75.dev0.dist-info/METADATA +14 -0
- ngsolve-6.2.2506.post75.dev0.dist-info/RECORD +303 -0
- ngsolve-6.2.2506.post75.dev0.dist-info/WHEEL +5 -0
- ngsolve-6.2.2506.post75.dev0.dist-info/licenses/LICENSE +504 -0
- ngsolve-6.2.2506.post75.dev0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,850 @@
|
|
|
1
|
+
#ifndef FILE_SYMBOLICINTEGRATOR
|
|
2
|
+
#define FILE_SYMBOLICINTEGRATOR
|
|
3
|
+
|
|
4
|
+
/*********************************************************************/
|
|
5
|
+
/* File: symbolicintegrator.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: August 2015 */
|
|
8
|
+
/*********************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace ngcomp
|
|
11
|
+
{
|
|
12
|
+
class FESpace;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
#include "integrator.hpp"
|
|
17
|
+
#include "coefficient.hpp"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
namespace ngfem
|
|
21
|
+
{
|
|
22
|
+
|
|
23
|
+
class NGS_DLL_HEADER ProxyFunction : public CoefficientFunction
|
|
24
|
+
{
|
|
25
|
+
protected:
|
|
26
|
+
shared_ptr<ngcomp::FESpace> fes;
|
|
27
|
+
bool testfunction; // true .. test, false .. trial
|
|
28
|
+
// bool is_complex;
|
|
29
|
+
bool is_other; // neighbour element (DG)
|
|
30
|
+
shared_ptr<ProxyFunction> primaryproxy; // derivatives and traces point to it
|
|
31
|
+
shared_ptr<DifferentialOperator> evaluator;
|
|
32
|
+
shared_ptr<DifferentialOperator> deriv_evaluator;
|
|
33
|
+
shared_ptr<DifferentialOperator> trace_evaluator;
|
|
34
|
+
shared_ptr<DifferentialOperator> trace_deriv_evaluator;
|
|
35
|
+
shared_ptr<DifferentialOperator> ttrace_evaluator;
|
|
36
|
+
shared_ptr<DifferentialOperator> ttrace_deriv_evaluator;
|
|
37
|
+
weak_ptr<ProxyFunction> deriv_proxy; // weak since we point to the primary proxy
|
|
38
|
+
shared_ptr<CoefficientFunction> boundary_values; // for DG - apply
|
|
39
|
+
|
|
40
|
+
SymbolTable<shared_ptr<DifferentialOperator>> additional_diffops;
|
|
41
|
+
mutable SymbolTable<weak_ptr<ProxyFunction>> additional_proxies;
|
|
42
|
+
|
|
43
|
+
mutable weak_ptr<ProxyFunction> dt;
|
|
44
|
+
mutable shared_ptr<ProxyFunction> anti_dt;
|
|
45
|
+
// int dim;
|
|
46
|
+
public:
|
|
47
|
+
ProxyFunction (shared_ptr<ngcomp::FESpace> afes,
|
|
48
|
+
bool atestfunction, bool ais_complex,
|
|
49
|
+
shared_ptr<DifferentialOperator> aevaluator,
|
|
50
|
+
shared_ptr<DifferentialOperator> aderiv_evaluator,
|
|
51
|
+
shared_ptr<DifferentialOperator> atrace_evaluator,
|
|
52
|
+
shared_ptr<DifferentialOperator> atrace_deriv_evaluator,
|
|
53
|
+
shared_ptr<DifferentialOperator> attrace_evaluator,
|
|
54
|
+
shared_ptr<DifferentialOperator> attrace_deriv_evaluator);
|
|
55
|
+
|
|
56
|
+
ProxyFunction (const ProxyFunction &) = default;
|
|
57
|
+
|
|
58
|
+
bool IsTrialFunction () const { return !testfunction; }
|
|
59
|
+
bool IsTestFunction () const { return testfunction; }
|
|
60
|
+
bool IsOther() const { return is_other; }
|
|
61
|
+
|
|
62
|
+
string GetDescription () const override;
|
|
63
|
+
|
|
64
|
+
void GenerateCode(Code &code, FlatArray<int> inputs, int index) const override;
|
|
65
|
+
|
|
66
|
+
const shared_ptr<DifferentialOperator> & Evaluator() const { return evaluator; }
|
|
67
|
+
const shared_ptr<DifferentialOperator> & DerivEvaluator() const { return deriv_evaluator; }
|
|
68
|
+
const shared_ptr<DifferentialOperator> & TraceEvaluator() const { return trace_evaluator; }
|
|
69
|
+
const shared_ptr<DifferentialOperator> & TraceDerivEvaluator() const { return trace_deriv_evaluator; }
|
|
70
|
+
const shared_ptr<DifferentialOperator> & TTraceEvaluator() const { return ttrace_evaluator; }
|
|
71
|
+
const shared_ptr<DifferentialOperator> & TTraceDerivEvaluator() const { return ttrace_deriv_evaluator; }
|
|
72
|
+
|
|
73
|
+
shared_ptr<ProxyFunction> Deriv() const;
|
|
74
|
+
shared_ptr<ProxyFunction> Trace() const;
|
|
75
|
+
shared_ptr<CoefficientFunction> Primary() const override
|
|
76
|
+
{ return primaryproxy; }
|
|
77
|
+
|
|
78
|
+
shared_ptr<ProxyFunction> Dt() const;
|
|
79
|
+
shared_ptr<ProxyFunction> AntiDt() const;
|
|
80
|
+
int OrderDt() const;
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
shared_ptr<ProxyFunction> Other(shared_ptr<CoefficientFunction> _boundary_values) const;
|
|
84
|
+
|
|
85
|
+
const shared_ptr<CoefficientFunction> & BoundaryValues() const { return boundary_values; }
|
|
86
|
+
|
|
87
|
+
void SetAdditionalEvaluator (string name, shared_ptr<DifferentialOperator> diffop)
|
|
88
|
+
{
|
|
89
|
+
additional_diffops.Set (name, diffop);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
virtual shared_ptr<DifferentialOperator> GetAdditionalEvaluator (string name) const
|
|
93
|
+
{
|
|
94
|
+
if (additional_diffops.Used(name))
|
|
95
|
+
return additional_diffops[name];
|
|
96
|
+
return nullptr; // shared_ptr<DifferentialOperator>();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
SymbolTable<shared_ptr<DifferentialOperator>> GetAdditionalEvaluators () const
|
|
100
|
+
{
|
|
101
|
+
return additional_diffops;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
virtual shared_ptr<ProxyFunction> GetAdditionalProxy (string name) const;
|
|
105
|
+
|
|
106
|
+
shared_ptr<CoefficientFunction> Operator (const string & name) const override;
|
|
107
|
+
shared_ptr<CoefficientFunction> Operator (shared_ptr<DifferentialOperator> diffop) const override;
|
|
108
|
+
|
|
109
|
+
const shared_ptr<ngcomp::FESpace> & GetFESpace() const { return fes; }
|
|
110
|
+
void SetFESpace(shared_ptr<ngcomp::FESpace> fespace) { fes = fespace; }
|
|
111
|
+
|
|
112
|
+
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
113
|
+
{
|
|
114
|
+
// Vector<> tmp(Dimension());
|
|
115
|
+
STACK_ARRAY(double, mem, Dimension());
|
|
116
|
+
FlatVector<> tmp(Dimension(), &mem[0]);
|
|
117
|
+
Evaluate (ip, tmp);
|
|
118
|
+
return tmp(0);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
virtual void Evaluate (const BaseMappedIntegrationPoint & ip,
|
|
122
|
+
FlatVector<> result) const override;
|
|
123
|
+
|
|
124
|
+
virtual void Evaluate (const BaseMappedIntegrationPoint & ip,
|
|
125
|
+
FlatVector<Complex> result) const override;
|
|
126
|
+
|
|
127
|
+
virtual void Evaluate (const BaseMappedIntegrationRule & ir,
|
|
128
|
+
BareSliceMatrix<> result) const override;
|
|
129
|
+
|
|
130
|
+
virtual void Evaluate (const BaseMappedIntegrationRule & ir,
|
|
131
|
+
BareSliceMatrix<Complex> result) const override;
|
|
132
|
+
|
|
133
|
+
// virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
134
|
+
// AFlatMatrix<double> values) const;
|
|
135
|
+
|
|
136
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
137
|
+
BareSliceMatrix<SIMD<double>> values) const override;
|
|
138
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
139
|
+
BareSliceMatrix<SIMD<Complex>> values) const override;
|
|
140
|
+
|
|
141
|
+
/*
|
|
142
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
143
|
+
FlatArray<AFlatMatrix<double>*> input,
|
|
144
|
+
AFlatMatrix<double> values) const override;
|
|
145
|
+
|
|
146
|
+
virtual void EvaluateDeriv (const BaseMappedIntegrationRule & mir,
|
|
147
|
+
FlatMatrix<> result,
|
|
148
|
+
FlatMatrix<> deriv) const override;
|
|
149
|
+
|
|
150
|
+
virtual void EvaluateDDeriv (const BaseMappedIntegrationRule & mir,
|
|
151
|
+
FlatMatrix<> result,
|
|
152
|
+
FlatMatrix<> deriv,
|
|
153
|
+
FlatMatrix<> dderiv) const override;
|
|
154
|
+
|
|
155
|
+
virtual void EvaluateDeriv (const SIMD_BaseMappedIntegrationRule & ir,
|
|
156
|
+
AFlatMatrix<double> values, AFlatMatrix<double> deriv) const override;
|
|
157
|
+
|
|
158
|
+
virtual void EvaluateDDeriv (const SIMD_BaseMappedIntegrationRule & ir,
|
|
159
|
+
AFlatMatrix<double> values, AFlatMatrix<double> deriv,
|
|
160
|
+
AFlatMatrix<double> dderiv) const override;
|
|
161
|
+
*/
|
|
162
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
163
|
+
FlatArray<BareSliceMatrix<SIMD<double>>> input,
|
|
164
|
+
BareSliceMatrix<SIMD<double>> values) const override
|
|
165
|
+
{
|
|
166
|
+
ProxyFunction::Evaluate (ir, values);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
virtual void Evaluate (const BaseMappedIntegrationRule & ir,
|
|
170
|
+
BareSliceMatrix<AutoDiff<1,double>> values) const override;
|
|
171
|
+
|
|
172
|
+
virtual void Evaluate (const BaseMappedIntegrationRule & ir,
|
|
173
|
+
BareSliceMatrix<AutoDiffDiff<1,double>> values) const override;
|
|
174
|
+
|
|
175
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
176
|
+
BareSliceMatrix<AutoDiff<1,SIMD<double>>> values) const override;
|
|
177
|
+
|
|
178
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
179
|
+
FlatArray<BareSliceMatrix<AutoDiff<1,SIMD<double>>>> input,
|
|
180
|
+
BareSliceMatrix<AutoDiff<1,SIMD<double>>> values) const override
|
|
181
|
+
{
|
|
182
|
+
ProxyFunction::Evaluate (ir, values);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
186
|
+
BareSliceMatrix<AutoDiffDiff<1,SIMD<double>>> values) const override;
|
|
187
|
+
|
|
188
|
+
virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
|
|
189
|
+
FlatArray<BareSliceMatrix<AutoDiffDiff<1,SIMD<double>>>> input,
|
|
190
|
+
BareSliceMatrix<AutoDiffDiff<1,SIMD<double>>> values) const override
|
|
191
|
+
{
|
|
192
|
+
ProxyFunction::Evaluate (ir, values);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/*
|
|
196
|
+
virtual void EvaluateDeriv (const SIMD_BaseMappedIntegrationRule & ir,
|
|
197
|
+
FlatArray<AFlatMatrix<>*> input,
|
|
198
|
+
FlatArray<AFlatMatrix<>*> dinput,
|
|
199
|
+
AFlatMatrix<> result,
|
|
200
|
+
AFlatMatrix<> deriv) const override
|
|
201
|
+
{
|
|
202
|
+
EvaluateDeriv (ir, result, deriv);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
virtual void EvaluateDDeriv (const SIMD_BaseMappedIntegrationRule & ir,
|
|
206
|
+
FlatArray<AFlatMatrix<>*> input,
|
|
207
|
+
FlatArray<AFlatMatrix<>*> dinput,
|
|
208
|
+
FlatArray<AFlatMatrix<>*> ddinput,
|
|
209
|
+
AFlatMatrix<> result,
|
|
210
|
+
AFlatMatrix<> deriv,
|
|
211
|
+
AFlatMatrix<> dderiv) const override
|
|
212
|
+
{
|
|
213
|
+
EvaluateDDeriv (ir, result, deriv, dderiv);
|
|
214
|
+
}
|
|
215
|
+
*/
|
|
216
|
+
|
|
217
|
+
// virtual bool ElementwiseConstant () const override{ return true; }
|
|
218
|
+
|
|
219
|
+
// the old one, to be replaced
|
|
220
|
+
void NonZeroPattern (const class ProxyUserData & ud,
|
|
221
|
+
FlatVector<bool> nonzero,
|
|
222
|
+
FlatVector<bool> nonzero_deriv,
|
|
223
|
+
FlatVector<bool> nonzero_dderiv) const;
|
|
224
|
+
|
|
225
|
+
virtual void NonZeroPattern (const class ProxyUserData & ud,
|
|
226
|
+
FlatVector<AutoDiffDiff<1,NonZero>> values) const override;
|
|
227
|
+
|
|
228
|
+
virtual void NonZeroPattern (const class ProxyUserData & ud,
|
|
229
|
+
FlatArray<FlatVector<AutoDiffDiff<1,NonZero>>> input,
|
|
230
|
+
FlatVector<AutoDiffDiff<1,NonZero>> values) const override
|
|
231
|
+
{
|
|
232
|
+
NonZeroPattern (ud, values);
|
|
233
|
+
/*
|
|
234
|
+
Vector<bool> nz(values.Size()), nzd(values.Size()), nzdd(values.Size());
|
|
235
|
+
NonZeroPattern (ud, nz, nzd, nzdd);
|
|
236
|
+
for (size_t i = 0; i < values.Size(); i++)
|
|
237
|
+
{
|
|
238
|
+
values(i).Value() = nz(i);
|
|
239
|
+
values(i).DValue(0) = nzd(i);
|
|
240
|
+
values(i).DDValue(0) = nzdd(i);
|
|
241
|
+
}
|
|
242
|
+
*/
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
virtual shared_ptr<CoefficientFunction>
|
|
247
|
+
Diff (const CoefficientFunction * var, shared_ptr<CoefficientFunction> dir) const override;
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
class SumOfIntegrals;
|
|
252
|
+
class DualProxyFunction : public ProxyFunction
|
|
253
|
+
{
|
|
254
|
+
public:
|
|
255
|
+
DualProxyFunction(const ProxyFunction & proxy)
|
|
256
|
+
: ProxyFunction(proxy) { ; }
|
|
257
|
+
|
|
258
|
+
shared_ptr<SumOfIntegrals> operator() (shared_ptr<CoefficientFunction> u) const;
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
class ProxyUserData
|
|
264
|
+
{
|
|
265
|
+
FlatArray<const ProxyFunction*> remember_first;
|
|
266
|
+
FlatArray<FlatMatrix<double>> remember_second;
|
|
267
|
+
FlatArray<FlatMatrix<SIMD<double>>> remember_asecond;
|
|
268
|
+
|
|
269
|
+
FlatArray<const CoefficientFunction*> remember_cf_first;
|
|
270
|
+
FlatArray<FlatMatrix<double>> remember_cf_second;
|
|
271
|
+
FlatArray<FlatMatrix<SIMD<double>>> remember_cf_asecond;
|
|
272
|
+
FlatArray<bool> remember_cf_computed;
|
|
273
|
+
public:
|
|
274
|
+
class ProxyFunction * testfunction = nullptr;
|
|
275
|
+
int test_comp;
|
|
276
|
+
class ProxyFunction * trialfunction = nullptr;
|
|
277
|
+
int trial_comp;
|
|
278
|
+
int eval_deriv = 0; // 0 .. evaluate bfi, 1 .. deriv, 2 .. second order deriv
|
|
279
|
+
const FiniteElement * fel = nullptr;
|
|
280
|
+
FlatArray<pair<const CoefficientFunction*, void*>> caches;
|
|
281
|
+
|
|
282
|
+
FlatVector<double> *trial_elvec = nullptr, *test_elvec = nullptr; // for shape-wise evaluate
|
|
283
|
+
LocalHeap * lh = nullptr;
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
ProxyUserData ()
|
|
287
|
+
: remember_first(0,nullptr), remember_second(0,nullptr), remember_asecond(0,nullptr),
|
|
288
|
+
remember_cf_first(0, nullptr), remember_cf_second(0,nullptr),remember_cf_asecond(0,nullptr), remember_cf_computed(0, nullptr)
|
|
289
|
+
{ ; }
|
|
290
|
+
ProxyUserData (size_t ntrial, size_t ncf, LocalHeap & lh)
|
|
291
|
+
: remember_first(ntrial, lh), remember_second(ntrial, lh),
|
|
292
|
+
remember_asecond(ntrial, lh),
|
|
293
|
+
remember_cf_first(ncf, lh), remember_cf_second(ncf, lh),
|
|
294
|
+
remember_cf_asecond(ncf, lh),
|
|
295
|
+
remember_cf_computed(ncf, lh)
|
|
296
|
+
{ remember_first = nullptr; remember_cf_first = nullptr; }
|
|
297
|
+
|
|
298
|
+
ProxyUserData (int ntrial, LocalHeap & lh)
|
|
299
|
+
: ProxyUserData (ntrial, 0, lh) { ; }
|
|
300
|
+
|
|
301
|
+
void AssignMemory (const ProxyFunction * proxy, size_t h, size_t w, LocalHeap & lh)
|
|
302
|
+
{
|
|
303
|
+
for (size_t i = 0; i < remember_first.Size(); i++)
|
|
304
|
+
{
|
|
305
|
+
if (remember_first[i] == nullptr)
|
|
306
|
+
{
|
|
307
|
+
remember_first[i] = proxy;
|
|
308
|
+
new (&remember_second[i]) FlatMatrix<> (h, w, lh);
|
|
309
|
+
new (&remember_asecond[i]) FlatMatrix<SIMD<double>> (w, (h+SIMD<double>::Size()-1)/SIMD<double>::Size(), lh);
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
throw Exception ("no space for userdata - memory available");
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
void AssignMemory (const ProxyFunction * proxy, FlatMatrix<SIMD<double>> mat)
|
|
317
|
+
{
|
|
318
|
+
for (size_t i = 0; i < remember_first.Size(); i++)
|
|
319
|
+
{
|
|
320
|
+
if (remember_first[i] == nullptr || remember_first[i] == proxy)
|
|
321
|
+
{
|
|
322
|
+
remember_first[i] = proxy;
|
|
323
|
+
new (&remember_asecond[i]) FlatMatrix<SIMD<double>> (mat);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
throw Exception ("no space for userdata - memory available");
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
void AssignMemory (const CoefficientFunction * cf, size_t h, size_t w, LocalHeap & lh)
|
|
332
|
+
{
|
|
333
|
+
for (size_t i = 0; i < remember_cf_first.Size(); i++)
|
|
334
|
+
{
|
|
335
|
+
if (remember_cf_first[i] == nullptr)
|
|
336
|
+
{
|
|
337
|
+
remember_cf_first[i] = cf;
|
|
338
|
+
new (&remember_cf_second[i]) FlatMatrix<double> (h, w, lh);
|
|
339
|
+
new (&remember_cf_asecond[i]) FlatMatrix<SIMD<double>> (w, (h+SIMD<double>::Size()-1)/SIMD<double>::Size(), lh);
|
|
340
|
+
remember_cf_computed[i] = false;
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
throw Exception ("no space for userdata - memory available");
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
void AssignMemory (const CoefficientFunction * cf, FlatMatrix<SIMD<double>> mat)
|
|
348
|
+
{
|
|
349
|
+
for (size_t i = 0; i < remember_cf_first.Size(); i++)
|
|
350
|
+
{
|
|
351
|
+
if (remember_cf_first[i] == nullptr || remember_cf_first[i] == cf)
|
|
352
|
+
{
|
|
353
|
+
remember_cf_first[i] = cf;
|
|
354
|
+
new (&remember_cf_asecond[i]) FlatMatrix<SIMD<double>> (mat);
|
|
355
|
+
remember_cf_computed[i] = true;
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
throw Exception ("no space for userdata - memory available");
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
bool HasMemory (const ProxyFunction * proxy) const
|
|
365
|
+
{
|
|
366
|
+
return remember_first.Contains(proxy);
|
|
367
|
+
}
|
|
368
|
+
bool HasMemory (const CoefficientFunction * cf) const
|
|
369
|
+
{
|
|
370
|
+
return remember_cf_first.Contains(cf);
|
|
371
|
+
}
|
|
372
|
+
FlatMatrix<> GetMemory (const ProxyFunction * proxy) const
|
|
373
|
+
{
|
|
374
|
+
return remember_second[remember_first.PosSure(proxy)];
|
|
375
|
+
}
|
|
376
|
+
FlatMatrix<SIMD<double>> GetAMemory (const ProxyFunction * proxy) const
|
|
377
|
+
{
|
|
378
|
+
return remember_asecond[remember_first.PosSure(proxy)];
|
|
379
|
+
}
|
|
380
|
+
FlatMatrix<double> GetMemory (const CoefficientFunction * cf) const
|
|
381
|
+
{
|
|
382
|
+
return remember_cf_second[remember_cf_first.PosSure(cf)];
|
|
383
|
+
}
|
|
384
|
+
FlatMatrix<SIMD<double>> GetAMemory (const CoefficientFunction * cf) const
|
|
385
|
+
{
|
|
386
|
+
return remember_cf_asecond[remember_cf_first.PosSure(cf)];
|
|
387
|
+
}
|
|
388
|
+
bool Computed (const CoefficientFunction * cf) const
|
|
389
|
+
{
|
|
390
|
+
return remember_cf_computed[remember_cf_first.PosSure(cf)];
|
|
391
|
+
}
|
|
392
|
+
void SetComputed (const CoefficientFunction * cf, bool val = true) const
|
|
393
|
+
{
|
|
394
|
+
remember_cf_computed[remember_cf_first.PosSure(cf)] = val;
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
class SymbolicLinearFormIntegrator : public LinearFormIntegrator
|
|
405
|
+
{
|
|
406
|
+
protected:
|
|
407
|
+
shared_ptr<CoefficientFunction> cf;
|
|
408
|
+
Array<ProxyFunction*> proxies;
|
|
409
|
+
Array<CoefficientFunction*> gridfunction_cfs;
|
|
410
|
+
Array<CoefficientFunction*> cache_cfs;
|
|
411
|
+
Array<shared_ptr<CoefficientFunction>> dcf_dtest;
|
|
412
|
+
|
|
413
|
+
VorB vb;
|
|
414
|
+
// bool element_boundary;
|
|
415
|
+
VorB element_vb;
|
|
416
|
+
|
|
417
|
+
public:
|
|
418
|
+
NGS_DLL_HEADER SymbolicLinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb,
|
|
419
|
+
VorB aelement_vb);
|
|
420
|
+
|
|
421
|
+
virtual VorB VB() const override { return vb; }
|
|
422
|
+
virtual string Name () const override { return string ("Symbolic LFI"); }
|
|
423
|
+
virtual int GetDimension() const override { return proxies[0]->Evaluator()->BlockDim(); }
|
|
424
|
+
|
|
425
|
+
virtual void
|
|
426
|
+
CalcElementVector (const FiniteElement & fel,
|
|
427
|
+
const ElementTransformation & trafo,
|
|
428
|
+
FlatVector<double> elvec,
|
|
429
|
+
LocalHeap & lh) const override;
|
|
430
|
+
|
|
431
|
+
virtual void
|
|
432
|
+
CalcElementVector (const FiniteElement & fel,
|
|
433
|
+
const ElementTransformation & trafo,
|
|
434
|
+
FlatVector<Complex> elvec,
|
|
435
|
+
LocalHeap & lh) const override;
|
|
436
|
+
|
|
437
|
+
template <typename SCAL>
|
|
438
|
+
void T_CalcElementVector (const FiniteElement & fel,
|
|
439
|
+
const ElementTransformation & trafo,
|
|
440
|
+
FlatVector<SCAL> elvec,
|
|
441
|
+
LocalHeap & lh) const;
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
class SymbolicBilinearFormIntegrator : public BilinearFormIntegrator
|
|
447
|
+
{
|
|
448
|
+
protected:
|
|
449
|
+
shared_ptr<CoefficientFunction> cf;
|
|
450
|
+
Array<ProxyFunction*> trial_proxies, test_proxies;
|
|
451
|
+
Array<CoefficientFunction*> gridfunction_cfs;
|
|
452
|
+
Array<CoefficientFunction*> cache_cfs;
|
|
453
|
+
Array<int> trial_cum, test_cum; // cumulated dimension of proxies
|
|
454
|
+
VorB vb; // on the boundary of the domain ?
|
|
455
|
+
// bool element_boundary;
|
|
456
|
+
VorB element_vb; // on the boundary of the element ?
|
|
457
|
+
Matrix<bool> nonzeros; // do components interact ?
|
|
458
|
+
Matrix<bool> nonzeros_deriv; // do components interact ?
|
|
459
|
+
Matrix<bool> nonzeros_proxies; // do proxies interact ?
|
|
460
|
+
Matrix<bool> diagonal_proxies; // do proxies interact diagonally ?
|
|
461
|
+
Matrix<bool> same_diffops; // are diffops the same ?
|
|
462
|
+
bool elementwise_constant;
|
|
463
|
+
|
|
464
|
+
int trial_difforder, test_difforder;
|
|
465
|
+
bool is_symmetric;
|
|
466
|
+
bool has_interpolate; // is there an interpolate in the expression tree ?
|
|
467
|
+
shared_ptr<BilinearFormIntegrator> linearization;
|
|
468
|
+
Array<shared_ptr<CoefficientFunction>> dcf_dtest; // derivatives by test-functions
|
|
469
|
+
Matrix<shared_ptr<CoefficientFunction>> ddcf_dtest_dtrial; // derivatives by test- and trial-functions
|
|
470
|
+
public:
|
|
471
|
+
NGS_DLL_HEADER SymbolicBilinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb,
|
|
472
|
+
VorB aelement_boundary);
|
|
473
|
+
|
|
474
|
+
virtual VorB VB() const override { return vb; }
|
|
475
|
+
virtual VorB ElementVB() const { return element_vb; }
|
|
476
|
+
virtual xbool IsSymmetric() const override { return is_symmetric ? xbool(true) : xbool(maybe); }
|
|
477
|
+
virtual string Name () const override { return string ("Symbolic BFI"); }
|
|
478
|
+
|
|
479
|
+
using Integrator::GetIntegrationRule;
|
|
480
|
+
NGS_DLL_HEADER virtual const IntegrationRule& GetIntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
|
|
481
|
+
NGS_DLL_HEADER virtual const SIMD_IntegrationRule& Get_SIMD_IntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
|
|
482
|
+
// virtual IntegrationRule GetIntegrationRuleEB (const FiniteElement & fel, int facetnr, LocalHeap & lh) const;
|
|
483
|
+
// virtual SIMD_IntegrationRule Get_SIMD_IntegrationRuleEB (const FiniteElement & fel, int facetnr, LocalHeap & lh) const;
|
|
484
|
+
|
|
485
|
+
virtual int GetDimension() const override { return trial_proxies[0]->Evaluator()->BlockDim(); }
|
|
486
|
+
void SetLinearization(shared_ptr<BilinearFormIntegrator> _lin)
|
|
487
|
+
{ linearization = _lin; }
|
|
488
|
+
|
|
489
|
+
NGS_DLL_HEADER virtual void
|
|
490
|
+
CalcElementMatrix (const FiniteElement & fel,
|
|
491
|
+
const ElementTransformation & trafo,
|
|
492
|
+
FlatMatrix<double> elmat,
|
|
493
|
+
LocalHeap & lh) const override;
|
|
494
|
+
|
|
495
|
+
NGS_DLL_HEADER virtual void
|
|
496
|
+
CalcElementMatrix (const FiniteElement & fel,
|
|
497
|
+
const ElementTransformation & trafo,
|
|
498
|
+
FlatMatrix<Complex> elmat,
|
|
499
|
+
LocalHeap & lh) const override;
|
|
500
|
+
|
|
501
|
+
NGS_DLL_HEADER virtual void
|
|
502
|
+
CalcElementMatrixAdd (const FiniteElement & fel,
|
|
503
|
+
const ElementTransformation & trafo,
|
|
504
|
+
FlatMatrix<double> elmat,
|
|
505
|
+
bool & symmetric_so_far,
|
|
506
|
+
LocalHeap & lh) const override;
|
|
507
|
+
|
|
508
|
+
NGS_DLL_HEADER virtual void
|
|
509
|
+
CalcElementMatrixAdd (const FiniteElement & fel,
|
|
510
|
+
const ElementTransformation & trafo,
|
|
511
|
+
FlatMatrix<Complex> elmat,
|
|
512
|
+
bool & symmetric_so_far,
|
|
513
|
+
LocalHeap & lh) const override;
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
template <typename SCAL, typename SCAL_SHAPES, typename SCAL_RES>
|
|
517
|
+
void T_CalcElementMatrixAdd (const FiniteElement & fel,
|
|
518
|
+
const ElementTransformation & trafo,
|
|
519
|
+
FlatMatrix<SCAL_RES> elmat,
|
|
520
|
+
bool & symmetric_so_far,
|
|
521
|
+
LocalHeap & lh) const;
|
|
522
|
+
|
|
523
|
+
template <typename SCAL, typename SCAL_SHAPES, typename SCAL_RES>
|
|
524
|
+
void T_CalcElementMatrixEBAdd (const FiniteElement & fel,
|
|
525
|
+
const ElementTransformation & trafo,
|
|
526
|
+
FlatMatrix<SCAL_RES> elmat,
|
|
527
|
+
LocalHeap & lh) const;
|
|
528
|
+
|
|
529
|
+
template <typename SCAL, typename SCAL_SHAPES, typename SCAL_RES>
|
|
530
|
+
void T_CalcElementMatrixAddShapeWise (const FiniteElement & fel,
|
|
531
|
+
const ElementTransformation & trafo,
|
|
532
|
+
FlatMatrix<SCAL_RES> elmat,
|
|
533
|
+
LocalHeap & lh) const;
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
NGS_DLL_HEADER virtual void
|
|
537
|
+
CalcLinearizedElementMatrix (const FiniteElement & fel,
|
|
538
|
+
const ElementTransformation & trafo,
|
|
539
|
+
FlatVector<double> elveclin,
|
|
540
|
+
FlatMatrix<double> elmat,
|
|
541
|
+
LocalHeap & lh) const override;
|
|
542
|
+
|
|
543
|
+
NGS_DLL_HEADER virtual void
|
|
544
|
+
CalcLinearizedElementMatrix (const FiniteElement & fel,
|
|
545
|
+
const ElementTransformation & trafo,
|
|
546
|
+
FlatVector<Complex> elveclin,
|
|
547
|
+
FlatMatrix<Complex> elmat,
|
|
548
|
+
LocalHeap & lh) const override;
|
|
549
|
+
|
|
550
|
+
template<typename SCAL> void
|
|
551
|
+
T_CalcLinearizedElementMatrixFrozen (const FiniteElement & fel,
|
|
552
|
+
const ElementTransformation & trafo,
|
|
553
|
+
FlatVector<SCAL> elveclin,
|
|
554
|
+
FlatMatrix<SCAL> elmat,
|
|
555
|
+
LocalHeap & lh) const;
|
|
556
|
+
|
|
557
|
+
template <typename SCAL, typename SCAL_SHAPES>
|
|
558
|
+
void T_CalcLinearizedElementMatrixEB (const FiniteElement & fel,
|
|
559
|
+
const ElementTransformation & trafo,
|
|
560
|
+
FlatVector<double> elveclin,
|
|
561
|
+
FlatMatrix<double> elmat,
|
|
562
|
+
LocalHeap & lh) const;
|
|
563
|
+
|
|
564
|
+
NGS_DLL_HEADER virtual void
|
|
565
|
+
ApplyElementMatrix (const FiniteElement & fel,
|
|
566
|
+
const ElementTransformation & trafo,
|
|
567
|
+
const FlatVector<double> elx,
|
|
568
|
+
FlatVector<double> ely,
|
|
569
|
+
void * precomputed,
|
|
570
|
+
LocalHeap & lh) const override;
|
|
571
|
+
|
|
572
|
+
template <typename SCAL, typename SCAL_SHAPES>
|
|
573
|
+
void T_ApplyElementMatrixEB (const FiniteElement & fel,
|
|
574
|
+
const ElementTransformation & trafo,
|
|
575
|
+
const FlatVector<double> elx,
|
|
576
|
+
FlatVector<double> ely,
|
|
577
|
+
void * precomputed,
|
|
578
|
+
LocalHeap & lh) const;
|
|
579
|
+
|
|
580
|
+
NGS_DLL_HEADER virtual void
|
|
581
|
+
ApplyElementMatrixTrans (const FiniteElement & fel,
|
|
582
|
+
const ElementTransformation & trafo,
|
|
583
|
+
const FlatVector<double> elx,
|
|
584
|
+
FlatVector<double> ely,
|
|
585
|
+
void * precomputed,
|
|
586
|
+
LocalHeap & lh) const override;
|
|
587
|
+
|
|
588
|
+
template <typename SCAL, typename SCAL_SHAPES>
|
|
589
|
+
void T_ApplyElementMatrixTransEB (const FiniteElement & fel,
|
|
590
|
+
const ElementTransformation & trafo,
|
|
591
|
+
const FlatVector<double> elx,
|
|
592
|
+
FlatVector<double> ely,
|
|
593
|
+
void * precomputed,
|
|
594
|
+
LocalHeap & lh) const;
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
const auto & GetCoefficientFunction() { return cf; }
|
|
598
|
+
const auto & TrialProxies() { return trial_proxies; }
|
|
599
|
+
const auto & TestProxies() { return test_proxies; }
|
|
600
|
+
const auto & GridFunctionCoefficients() { return gridfunction_cfs; }
|
|
601
|
+
};
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
class SymbolicFacetLinearFormIntegrator : public FacetLinearFormIntegrator
|
|
606
|
+
{
|
|
607
|
+
protected:
|
|
608
|
+
shared_ptr<CoefficientFunction> cf;
|
|
609
|
+
Array<ProxyFunction*> proxies;
|
|
610
|
+
Array<CoefficientFunction*> cache_cfs;
|
|
611
|
+
Array<int> test_cum; // cumulated dimension of proxies
|
|
612
|
+
VorB vb; // only BND supported by now
|
|
613
|
+
// bool element_boundary; /// not needed (by now ???)
|
|
614
|
+
IntegrationRule ir; // if non-empty use this integration-rule
|
|
615
|
+
SIMD_IntegrationRule simd_ir; // if non-empty use this integration-rule
|
|
616
|
+
|
|
617
|
+
public:
|
|
618
|
+
NGS_DLL_HEADER SymbolicFacetLinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb);
|
|
619
|
+
|
|
620
|
+
virtual VorB VB() const override { return vb; }
|
|
621
|
+
virtual bool BoundaryForm() const override { return vb == BND; }
|
|
622
|
+
|
|
623
|
+
NGS_DLL_HEADER void
|
|
624
|
+
CalcFacetVector (const FiniteElement & volumefel1, int LocalFacetNr1,
|
|
625
|
+
const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
|
|
626
|
+
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
627
|
+
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
628
|
+
FlatVector<double> elvec,
|
|
629
|
+
LocalHeap & lh) const override;
|
|
630
|
+
|
|
631
|
+
NGS_DLL_HEADER void
|
|
632
|
+
CalcFacetVector (const FiniteElement & volumefel1, int LocalFacetNr1,
|
|
633
|
+
const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
|
|
634
|
+
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
635
|
+
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
636
|
+
FlatVector<Complex> elvec,
|
|
637
|
+
LocalHeap & lh) const override;
|
|
638
|
+
|
|
639
|
+
NGS_DLL_HEADER void
|
|
640
|
+
CalcFacetVector(const FiniteElement & volumefel, int LocalFacetNr,
|
|
641
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
642
|
+
const ElementTransformation & seltrans,
|
|
643
|
+
FlatVector<double> elvec,
|
|
644
|
+
LocalHeap & lh) const override;
|
|
645
|
+
|
|
646
|
+
NGS_DLL_HEADER void
|
|
647
|
+
CalcFacetVector(const FiniteElement & volumefel, int LocalFacetNr,
|
|
648
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
649
|
+
const ElementTransformation & seltrans,
|
|
650
|
+
FlatVector<Complex> elvec,
|
|
651
|
+
LocalHeap & lh) const override;
|
|
652
|
+
|
|
653
|
+
private:
|
|
654
|
+
template<typename TSCAL>
|
|
655
|
+
void T_CalcFacetVector (const FiniteElement & fel1, int LocalFacetNr1,
|
|
656
|
+
const ElementTransformation & trafo1, FlatArray<int> & ElVertices1,
|
|
657
|
+
const FiniteElement & fel2, int LocalFacetNr2,
|
|
658
|
+
const ElementTransformation & trafo2, FlatArray<int> & ElVertices2,
|
|
659
|
+
FlatVector<TSCAL> elvec,
|
|
660
|
+
LocalHeap &lh) const;
|
|
661
|
+
|
|
662
|
+
template<typename TSCAL>
|
|
663
|
+
void T_CalcFacetVector (const FiniteElement & volumefel, int LocalFacetNr,
|
|
664
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
665
|
+
const ElementTransformation & seltrans,
|
|
666
|
+
FlatVector<TSCAL> elvec,
|
|
667
|
+
LocalHeap & lh) const;
|
|
668
|
+
};
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
class SymbolicFacetBilinearFormIntegrator : public FacetBilinearFormIntegrator
|
|
674
|
+
{
|
|
675
|
+
protected:
|
|
676
|
+
shared_ptr<CoefficientFunction> cf;
|
|
677
|
+
Array<ProxyFunction*> trial_proxies, test_proxies;
|
|
678
|
+
Array<CoefficientFunction*> gridfunction_cfs;
|
|
679
|
+
Array<CoefficientFunction*> cache_cfs;
|
|
680
|
+
Array<int> trial_cum, test_cum; // cumulated dimension of proxies
|
|
681
|
+
VorB vb;
|
|
682
|
+
bool element_boundary;
|
|
683
|
+
bool neighbor_testfunction;
|
|
684
|
+
Array<shared_ptr<CoefficientFunction>> dcf_dtest; // derivatives by test-functions
|
|
685
|
+
public:
|
|
686
|
+
NGS_DLL_HEADER SymbolicFacetBilinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb, bool aelement_boundary);
|
|
687
|
+
|
|
688
|
+
virtual VorB VB() const { return vb; }
|
|
689
|
+
virtual bool BoundaryForm() const { return vb == BND; }
|
|
690
|
+
virtual xbool IsSymmetric() const { return maybe; }
|
|
691
|
+
|
|
692
|
+
virtual DGFormulation GetDGFormulation() const { return DGFormulation(neighbor_testfunction,
|
|
693
|
+
element_boundary); }
|
|
694
|
+
|
|
695
|
+
NGS_DLL_HEADER virtual void
|
|
696
|
+
CalcFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
|
|
697
|
+
const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
|
|
698
|
+
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
699
|
+
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
700
|
+
FlatMatrix<double> elmat,
|
|
701
|
+
LocalHeap & lh) const;
|
|
702
|
+
|
|
703
|
+
NGS_DLL_HEADER virtual void
|
|
704
|
+
CalcFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
|
|
705
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
706
|
+
const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
|
|
707
|
+
FlatMatrix<double> elmat,
|
|
708
|
+
LocalHeap & lh) const;
|
|
709
|
+
|
|
710
|
+
NGS_DLL_HEADER virtual void
|
|
711
|
+
CalcFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
|
|
712
|
+
const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
|
|
713
|
+
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
714
|
+
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
715
|
+
FlatMatrix<Complex> elmat,
|
|
716
|
+
LocalHeap & lh) const;
|
|
717
|
+
|
|
718
|
+
NGS_DLL_HEADER virtual void
|
|
719
|
+
CalcFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
|
|
720
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
721
|
+
const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
|
|
722
|
+
FlatMatrix<Complex> elmat,
|
|
723
|
+
LocalHeap & lh) const;
|
|
724
|
+
|
|
725
|
+
NGS_DLL_HEADER virtual void
|
|
726
|
+
CalcLinearizedFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
|
|
727
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
728
|
+
const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
|
|
729
|
+
FlatVector<double> vec, FlatMatrix<double> elmat,
|
|
730
|
+
LocalHeap & lh) const;
|
|
731
|
+
|
|
732
|
+
NGS_DLL_HEADER virtual void
|
|
733
|
+
ApplyFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
|
|
734
|
+
const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
|
|
735
|
+
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
736
|
+
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
737
|
+
FlatVector<double> elx, FlatVector<double> ely,
|
|
738
|
+
LocalHeap & lh) const;
|
|
739
|
+
|
|
740
|
+
NGS_DLL_HEADER virtual void
|
|
741
|
+
CalcTraceValues (const FiniteElement & volumefel, int LocalFacetNr,
|
|
742
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
743
|
+
FlatVector<double> & trace, FlatVector<double> elx, LocalHeap & lh) const;
|
|
744
|
+
|
|
745
|
+
NGS_DLL_HEADER virtual void
|
|
746
|
+
ApplyFromTraceValues (const FiniteElement & volumefel, int LocalFacetNr,
|
|
747
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
748
|
+
FlatVector<double> trace,
|
|
749
|
+
FlatVector<double> elx, FlatVector<double> ely,
|
|
750
|
+
LocalHeap & lh) const;
|
|
751
|
+
|
|
752
|
+
NGS_DLL_HEADER virtual void
|
|
753
|
+
ApplyFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
|
|
754
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
755
|
+
const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
|
|
756
|
+
FlatVector<double> elx, FlatVector<double> ely,
|
|
757
|
+
LocalHeap & lh) const;
|
|
758
|
+
|
|
759
|
+
private:
|
|
760
|
+
template<typename TSCAL, typename SCAL_SHAPES = double>
|
|
761
|
+
void T_CalcFacetMatrix(const FiniteElement & volumefel1, int LocalFacetNr1,
|
|
762
|
+
const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
|
|
763
|
+
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
764
|
+
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
765
|
+
FlatMatrix<TSCAL> elmat,
|
|
766
|
+
LocalHeap & lh) const;
|
|
767
|
+
|
|
768
|
+
template<typename TSCAL, typename SCAL_SHAPES = double>
|
|
769
|
+
void T_CalcFacetMatrix(const FiniteElement & volumefel, int LocalFacetNr,
|
|
770
|
+
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
771
|
+
const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
|
|
772
|
+
FlatMatrix<TSCAL> elmat,
|
|
773
|
+
LocalHeap & lh) const;
|
|
774
|
+
};
|
|
775
|
+
|
|
776
|
+
class SymbolicEnergy : public BilinearFormIntegrator
|
|
777
|
+
{
|
|
778
|
+
protected:
|
|
779
|
+
shared_ptr<CoefficientFunction> cf;
|
|
780
|
+
VorB vb;
|
|
781
|
+
Array<ProxyFunction*> trial_proxies;
|
|
782
|
+
VorB element_vb;
|
|
783
|
+
|
|
784
|
+
Timer<TNoTracing> timer{"SymbolicEnergy"};
|
|
785
|
+
Array<int> trial_cum; // cumulated dimension of proxies
|
|
786
|
+
Matrix<bool> nonzeros; // do components interact ?
|
|
787
|
+
Matrix<bool> nonzeros_proxies; // do proxies interact ?
|
|
788
|
+
Array<shared_ptr<CoefficientFunction>> dcf, ddcf;
|
|
789
|
+
|
|
790
|
+
public:
|
|
791
|
+
SymbolicEnergy (shared_ptr<CoefficientFunction> acf, VorB avb, VorB aelement_vb);
|
|
792
|
+
|
|
793
|
+
virtual VorB VB() const { return vb; }
|
|
794
|
+
virtual xbool IsSymmetric() const { return true; }
|
|
795
|
+
virtual string Name () const { return string ("Symbolic Energy"); }
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
using Integrator::GetIntegrationRule;
|
|
799
|
+
NGS_DLL_HEADER virtual const IntegrationRule& GetIntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
|
|
800
|
+
NGS_DLL_HEADER virtual const SIMD_IntegrationRule& Get_SIMD_IntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
|
|
801
|
+
|
|
802
|
+
virtual void
|
|
803
|
+
CalcElementMatrix (const FiniteElement & fel,
|
|
804
|
+
const ElementTransformation & trafo,
|
|
805
|
+
FlatMatrix<double> elmat,
|
|
806
|
+
LocalHeap & lh) const;
|
|
807
|
+
|
|
808
|
+
virtual void
|
|
809
|
+
CalcLinearizedElementMatrix (const FiniteElement & fel,
|
|
810
|
+
const ElementTransformation & trafo,
|
|
811
|
+
FlatVector<double> elveclin,
|
|
812
|
+
FlatMatrix<double> elmat,
|
|
813
|
+
LocalHeap & lh) const;
|
|
814
|
+
|
|
815
|
+
void AddLinearizedElementMatrix (const FiniteElement & fel,
|
|
816
|
+
ProxyUserData & ud,
|
|
817
|
+
const BaseMappedIntegrationRule & mir,
|
|
818
|
+
FlatVector<double> elveclin,
|
|
819
|
+
FlatMatrix<double> elmat,
|
|
820
|
+
LocalHeap & lh) const;
|
|
821
|
+
|
|
822
|
+
void AddLinearizedElementMatrix (const FiniteElement & fel,
|
|
823
|
+
const ElementTransformation & trafo,
|
|
824
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
825
|
+
FlatVector<double> elveclin,
|
|
826
|
+
FlatMatrix<double> elmat,
|
|
827
|
+
LocalHeap & lh) const;
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
virtual double Energy (const FiniteElement & fel,
|
|
831
|
+
const ElementTransformation & trafo,
|
|
832
|
+
FlatVector<double> elx,
|
|
833
|
+
LocalHeap & lh) const;
|
|
834
|
+
|
|
835
|
+
virtual void
|
|
836
|
+
ApplyElementMatrix (const FiniteElement & fel,
|
|
837
|
+
const ElementTransformation & trafo,
|
|
838
|
+
const FlatVector<double> elx,
|
|
839
|
+
FlatVector<double> ely,
|
|
840
|
+
void * precomputed,
|
|
841
|
+
LocalHeap & lh) const;
|
|
842
|
+
};
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
#endif
|