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,317 @@
|
|
|
1
|
+
#ifndef FILE_SPARSECHOLESKY
|
|
2
|
+
#define FILE_SPARSECHOLESKY
|
|
3
|
+
|
|
4
|
+
/* *************************************************************************/
|
|
5
|
+
/* File: sparsecholesky.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 18. Jun. 97 */
|
|
8
|
+
/* *************************************************************************/
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
sparse cholesky factorization
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#include "basematrix.hpp"
|
|
15
|
+
#include "sparsematrix.hpp"
|
|
16
|
+
#include "order.hpp"
|
|
17
|
+
|
|
18
|
+
namespace ngla
|
|
19
|
+
{
|
|
20
|
+
|
|
21
|
+
class NGS_DLL_HEADER SparseFactorization : public BaseMatrix
|
|
22
|
+
{
|
|
23
|
+
protected:
|
|
24
|
+
weak_ptr<const BaseSparseMatrix> matrix;
|
|
25
|
+
shared_ptr<BitArray> inner;
|
|
26
|
+
shared_ptr<const Array<int>> cluster;
|
|
27
|
+
bool smooth_is_projection;
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
SparseFactorization (shared_ptr<const BaseSparseMatrix> amatrix,
|
|
31
|
+
shared_ptr<BitArray> ainner = nullptr,
|
|
32
|
+
shared_ptr<const Array<int>> acluster = nullptr);
|
|
33
|
+
SparseFactorization() {}
|
|
34
|
+
|
|
35
|
+
virtual void SetSubset
|
|
36
|
+
(shared_ptr<BitArray> ainner,
|
|
37
|
+
shared_ptr<const Array<int>> acluster=nullptr);
|
|
38
|
+
|
|
39
|
+
void DoArchive(Archive& ar) override;
|
|
40
|
+
|
|
41
|
+
// virtual bool IsComplex() const override { return matrix.lock()->IsComplex(); }
|
|
42
|
+
|
|
43
|
+
virtual void Smooth (BaseVector & u, const BaseVector & f, BaseVector & y) const;
|
|
44
|
+
|
|
45
|
+
int VHeight() const override { return matrix.lock()->VWidth();}
|
|
46
|
+
int VWidth() const override { return matrix.lock()->VHeight();}
|
|
47
|
+
|
|
48
|
+
bool SmoothIsProjection () const { return smooth_is_projection; }
|
|
49
|
+
|
|
50
|
+
auto GetAMatrix() const { return matrix.lock(); }
|
|
51
|
+
virtual bool SupportsUpdate() const { return false; }
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
A sparse cholesky factorization.
|
|
63
|
+
The unknowns are reordered by the minimum degree
|
|
64
|
+
ordering algorithm
|
|
65
|
+
|
|
66
|
+
computs A = L D L^t
|
|
67
|
+
L is stored column-wise
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
template<class TM>
|
|
71
|
+
// class TV_ROW = typename mat_traits<TM>::TV_ROW,
|
|
72
|
+
// class TV_COL = typename mat_traits<TM>::TV_COL>
|
|
73
|
+
class NGS_DLL_HEADER SparseCholeskyTM : public SparseFactorization
|
|
74
|
+
{
|
|
75
|
+
protected:
|
|
76
|
+
// height of the matrix
|
|
77
|
+
int height;
|
|
78
|
+
// number of real unknowns
|
|
79
|
+
int nused;
|
|
80
|
+
// number of non-zero entries in the L-factor
|
|
81
|
+
size_t nze;
|
|
82
|
+
//
|
|
83
|
+
bool hermitian = false; // Hermitian or complex-symmetric ?
|
|
84
|
+
// the reordering (original dofnr i -> order[i])
|
|
85
|
+
Array<int> order;
|
|
86
|
+
Array<int> inv_order;
|
|
87
|
+
|
|
88
|
+
// L-factor in compressed storage
|
|
89
|
+
// Array<TM, size_t> lfact;
|
|
90
|
+
NumaInterleavedArray<TM> lfact;
|
|
91
|
+
|
|
92
|
+
// index-array to lfact
|
|
93
|
+
Array<size_t> firstinrow;
|
|
94
|
+
|
|
95
|
+
// diagonal
|
|
96
|
+
Array<TM> diag;
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
// row-indices of non-zero entries
|
|
100
|
+
// all row-indices within one block are identic, and stored just once
|
|
101
|
+
Array<int> rowindex2;
|
|
102
|
+
// index-array to rowindex
|
|
103
|
+
Array<size_t> firstinrow_ri;
|
|
104
|
+
|
|
105
|
+
// blocknr of dof
|
|
106
|
+
Array<int> blocknrs;
|
|
107
|
+
|
|
108
|
+
// block i has dofs [blocks[i], blocks[i+1])
|
|
109
|
+
Array<int> blocks;
|
|
110
|
+
|
|
111
|
+
// dependency graph for elimination
|
|
112
|
+
Table<int> block_dependency;
|
|
113
|
+
|
|
114
|
+
public: // needed for gcc 4.9, why ???
|
|
115
|
+
class MicroTask
|
|
116
|
+
{
|
|
117
|
+
public:
|
|
118
|
+
int blocknr;
|
|
119
|
+
enum BT { L_BLOCK, B_BLOCK, LB_BLOCK };
|
|
120
|
+
BT type;
|
|
121
|
+
int bblock;
|
|
122
|
+
int nbblocks;
|
|
123
|
+
template <typename ARCHIVE>
|
|
124
|
+
void DoArchive(ARCHIVE& ar)
|
|
125
|
+
{
|
|
126
|
+
ar & blocknr & type & bblock & nbblocks;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
protected:
|
|
130
|
+
|
|
131
|
+
Array<MicroTask> microtasks;
|
|
132
|
+
Table<int> micro_dependency;
|
|
133
|
+
Table<int> micro_dependency_trans;
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
//
|
|
137
|
+
MinimumDegreeOrdering * mdo;
|
|
138
|
+
|
|
139
|
+
// maximal non-zero entries in a column
|
|
140
|
+
int maxrow;
|
|
141
|
+
|
|
142
|
+
// the original matrix
|
|
143
|
+
// const SparseMatrixTM<TM> & mat;
|
|
144
|
+
|
|
145
|
+
int max_bs = 1024;
|
|
146
|
+
int max_micro_bs = 256; // not yet used
|
|
147
|
+
|
|
148
|
+
public:
|
|
149
|
+
typedef typename mat_traits<TM>::TSCAL TSCAL_MAT;
|
|
150
|
+
|
|
151
|
+
///
|
|
152
|
+
SparseCholeskyTM (shared_ptr<const SparseMatrixTM<TM>> a,
|
|
153
|
+
shared_ptr<BitArray> ainner = nullptr,
|
|
154
|
+
shared_ptr<const Array<int>> acluster = nullptr,
|
|
155
|
+
bool allow_refactor = 0);
|
|
156
|
+
SparseCholeskyTM() {}
|
|
157
|
+
///
|
|
158
|
+
virtual ~SparseCholeskyTM ();
|
|
159
|
+
///
|
|
160
|
+
int VHeight() const override { return height; }
|
|
161
|
+
///
|
|
162
|
+
int VWidth() const override { return height; }
|
|
163
|
+
///
|
|
164
|
+
BaseMatrix::OperatorInfo GetOperatorInfo () const override
|
|
165
|
+
{ return { string("SparseCholesky-")+typeid(TM).name(), size_t(height), size_t(height) }; }
|
|
166
|
+
|
|
167
|
+
void SetHermitian (bool herm = true) { hermitian = herm; }
|
|
168
|
+
///
|
|
169
|
+
void Allocate (const Array<int> & aorder,
|
|
170
|
+
const Array<MDOVertex> & vertices,
|
|
171
|
+
const int * blocknr);
|
|
172
|
+
|
|
173
|
+
void DoArchive(Archive& ar) override;
|
|
174
|
+
///
|
|
175
|
+
void Factor ();
|
|
176
|
+
#ifdef LAPACK
|
|
177
|
+
void FactorSPD ();
|
|
178
|
+
template <typename T>
|
|
179
|
+
void FactorSPD1 (T dummy);
|
|
180
|
+
#endif
|
|
181
|
+
|
|
182
|
+
virtual bool SupportsUpdate() const override { return true; }
|
|
183
|
+
virtual void Update() override
|
|
184
|
+
{
|
|
185
|
+
// FactorNew (dynamic_cast<const SparseMatrix<TM>&> (*matrix.lock().get()));
|
|
186
|
+
auto castmatrix = dynamic_pointer_cast<const SparseMatrix<TM>>(matrix.lock());
|
|
187
|
+
FactorNew (*castmatrix);
|
|
188
|
+
}
|
|
189
|
+
///
|
|
190
|
+
void FactorNew (const SparseMatrix<TM> & a);
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
A = L+D+L^T
|
|
194
|
+
y = f - (L+D)^T u
|
|
195
|
+
w = C^{-1} (y - L u)
|
|
196
|
+
u += w
|
|
197
|
+
y -= (L+D)^T w
|
|
198
|
+
**/
|
|
199
|
+
// virtual void Smooth (BaseVector & u, const BaseVector & f, BaseVector & y) const;
|
|
200
|
+
///
|
|
201
|
+
virtual ostream & Print (ostream & ost) const override;
|
|
202
|
+
|
|
203
|
+
virtual Array<MemoryUsage> GetMemoryUsage () const override
|
|
204
|
+
{
|
|
205
|
+
return { MemoryUsage ("SparseChol", nze*sizeof(TM), 1) };
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
virtual size_t NZE () const override { return nze; }
|
|
209
|
+
///
|
|
210
|
+
void Set (int i, int j, const TM & val);
|
|
211
|
+
///
|
|
212
|
+
const TM & Get (int i, int j) const;
|
|
213
|
+
///
|
|
214
|
+
void SetOrig (int i, int j, const TM & val)
|
|
215
|
+
{ Set (order[i], order[j], val); }
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
// the dofs of block bnr
|
|
219
|
+
IntRange BlockDofs (int bnr) const { return Range(blocks[bnr], blocks[bnr+1]); }
|
|
220
|
+
|
|
221
|
+
// the external dofs of block bnr
|
|
222
|
+
FlatArray<int> BlockExtDofs (int bnr) const
|
|
223
|
+
{
|
|
224
|
+
auto range = BlockDofs (bnr);
|
|
225
|
+
auto base = firstinrow_ri[range.First()] + range.Size()-1;
|
|
226
|
+
auto ext_size = firstinrow[range.First()+1]-firstinrow[range.First()] - range.Size()+1;
|
|
227
|
+
return rowindex2.Range(base, base+ext_size);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
FlatArray<MicroTask> GetMicroTasks() const { return microtasks; }
|
|
232
|
+
FlatTable<int> GetMicroDependency() const { return micro_dependency; }
|
|
233
|
+
FlatTable<int> GetMicroDependencyTranspose() const { return micro_dependency_trans; }
|
|
234
|
+
FlatArray<int> GetBlocks() const { return blocks; }
|
|
235
|
+
|
|
236
|
+
FlatArray<int> GetOrder() const { return order; }
|
|
237
|
+
FlatArray<int> GetInvOrder() const { return inv_order; }
|
|
238
|
+
|
|
239
|
+
FlatArray<int> GetRowIndex2() const { return rowindex2; }
|
|
240
|
+
FlatArray<size_t> GetFirstInRowRI() const { return firstinrow_ri; }
|
|
241
|
+
FlatArray<size_t> GetFirstInRow() const { return firstinrow; }
|
|
242
|
+
|
|
243
|
+
FlatArray<TM> GetLFact() const { return lfact; }
|
|
244
|
+
FlatArray<TM> GetDiag() const { return diag; }
|
|
245
|
+
|
|
246
|
+
auto GetNUsed() const { return nused; }
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
template<class TM,
|
|
254
|
+
class TV_ROW = typename mat_traits<TM>::TV_ROW,
|
|
255
|
+
class TV_COL = typename mat_traits<TM>::TV_COL>
|
|
256
|
+
class NGS_DLL_HEADER SparseCholesky : public SparseCholeskyTM<TM>
|
|
257
|
+
{
|
|
258
|
+
typedef SparseCholeskyTM<TM> BASE;
|
|
259
|
+
using BASE::height;
|
|
260
|
+
using BASE::Height;
|
|
261
|
+
using BASE::inner;
|
|
262
|
+
using BASE::cluster;
|
|
263
|
+
|
|
264
|
+
using BASE::lfact;
|
|
265
|
+
using BASE::diag;
|
|
266
|
+
using BASE::order;
|
|
267
|
+
using BASE::inv_order;
|
|
268
|
+
using BASE::firstinrow;
|
|
269
|
+
|
|
270
|
+
using BASE::blocks;
|
|
271
|
+
using typename BASE::MicroTask;
|
|
272
|
+
using BASE::microtasks;
|
|
273
|
+
using BASE::micro_dependency;
|
|
274
|
+
using BASE::micro_dependency_trans;
|
|
275
|
+
using BASE::block_dependency;
|
|
276
|
+
using BASE::BlockDofs;
|
|
277
|
+
using BASE::BlockExtDofs;
|
|
278
|
+
using BASE::hermitian;
|
|
279
|
+
public:
|
|
280
|
+
typedef TV_COL TV;
|
|
281
|
+
typedef TV_ROW TVX;
|
|
282
|
+
typedef typename mat_traits<TV_ROW>::TSCAL TSCAL_VEC;
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
SparseCholesky (shared_ptr<const SparseMatrixTM<TM>> a,
|
|
286
|
+
shared_ptr<BitArray> ainner = nullptr,
|
|
287
|
+
shared_ptr<const Array<int>> acluster = nullptr,
|
|
288
|
+
bool allow_refactor = 0)
|
|
289
|
+
: SparseCholeskyTM<TM> (a, ainner, acluster, allow_refactor) { ; }
|
|
290
|
+
SparseCholesky() {}
|
|
291
|
+
|
|
292
|
+
///
|
|
293
|
+
virtual ~SparseCholesky () { ; }
|
|
294
|
+
|
|
295
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
296
|
+
|
|
297
|
+
void MultAdd (TSCAL_VEC s, const BaseVector & x, BaseVector & y) const override;
|
|
298
|
+
void MultTransAdd (TSCAL_VEC s, const BaseVector & x, BaseVector & y) const override
|
|
299
|
+
{
|
|
300
|
+
MultAdd (s, x, y);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
AutoVector CreateRowVector () const override { return make_unique<VVector<TV>> (height); }
|
|
304
|
+
AutoVector CreateColVector () const override { return make_unique<VVector<TV>> (height); }
|
|
305
|
+
|
|
306
|
+
void Smooth (BaseVector & u, const BaseVector & f, BaseVector & y) const override;
|
|
307
|
+
|
|
308
|
+
void SolveBlock (int i, FlatVector<TV> hy) const;
|
|
309
|
+
void SolveBlockT (int i, FlatVector<TV> hy) const;
|
|
310
|
+
private:
|
|
311
|
+
void SolveReordered(FlatVector<TVX> hy) const;
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
#endif
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#ifndef SPARSEFACTORIZATION_INTERFACE_HPP
|
|
2
|
+
#define SPARSEFACTORIZATION_INTERFACE_HPP
|
|
3
|
+
|
|
4
|
+
#include "basevector.hpp"
|
|
5
|
+
#include "sparsecholesky.hpp"
|
|
6
|
+
#include "sparsematrix.hpp"
|
|
7
|
+
#include "../ngstd/python_ngstd.hpp"
|
|
8
|
+
|
|
9
|
+
namespace ngla {
|
|
10
|
+
|
|
11
|
+
void ExportSparseFactorizationInterface(py::module &m);
|
|
12
|
+
|
|
13
|
+
struct MapInnerDofs {
|
|
14
|
+
shared_ptr<BitArray> inner;
|
|
15
|
+
shared_ptr<const Array<int>> cluster;
|
|
16
|
+
Array<int> project;
|
|
17
|
+
Array<int> embed;
|
|
18
|
+
size_t size = 0;
|
|
19
|
+
|
|
20
|
+
MapInnerDofs() {}
|
|
21
|
+
|
|
22
|
+
void Init(shared_ptr<BitArray> ainner,
|
|
23
|
+
shared_ptr<const Array<int>> acluster = nullptr)
|
|
24
|
+
{
|
|
25
|
+
inner = ainner;
|
|
26
|
+
cluster = acluster;
|
|
27
|
+
if (!inner && !cluster) {
|
|
28
|
+
size = 0;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (inner) {
|
|
32
|
+
size = inner->NumSet();
|
|
33
|
+
project.SetSize(size);
|
|
34
|
+
embed.SetSize(inner->Size());
|
|
35
|
+
int j = 0;
|
|
36
|
+
for (int i = 0; i < inner->Size(); i++) {
|
|
37
|
+
if ((*inner)[i]) {
|
|
38
|
+
project[j] = i;
|
|
39
|
+
embed[i] = j++;
|
|
40
|
+
} else
|
|
41
|
+
embed[i] = -1;
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
int j = 0;
|
|
47
|
+
for (int i = 0; i < cluster->Size(); i++) {
|
|
48
|
+
if ((*cluster)[i]) {
|
|
49
|
+
project.Append(i);
|
|
50
|
+
embed.Append(j++);
|
|
51
|
+
} else {
|
|
52
|
+
embed.Append(-1);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
size = project.Size();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
operator bool() const { return inner || cluster; }
|
|
59
|
+
|
|
60
|
+
template <typename T>
|
|
61
|
+
void Project(FlatVector<T> dst, FlatVector<T> src) const {
|
|
62
|
+
for (size_t i = 0; i < project.Size(); i++)
|
|
63
|
+
dst[i] = src[project[i]];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
template <typename T> void Embed(T &dst, const T &src) const {
|
|
67
|
+
for (size_t i : Range(embed)) {
|
|
68
|
+
if (embed[i] >= 0)
|
|
69
|
+
dst[i] = src[embed[i]];
|
|
70
|
+
else
|
|
71
|
+
dst[i] = 0.0;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
template <typename T>
|
|
76
|
+
void EmbedAdd(FlatVector<T> dst, FlatVector<T> src, T scale) const {
|
|
77
|
+
for (size_t i : Range(embed))
|
|
78
|
+
if (embed[i] >= 0)
|
|
79
|
+
dst[i] += scale * src[embed[i]];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
template <typename T>
|
|
83
|
+
shared_ptr<SparseMatrixTM<T>>
|
|
84
|
+
ProjectMatrix(shared_ptr<const SparseMatrixTM<T>> m) {
|
|
85
|
+
Array<int> rowi, coli;
|
|
86
|
+
Array<T> vals;
|
|
87
|
+
// auto &dofs = *inner;
|
|
88
|
+
|
|
89
|
+
auto vals_ori = m->GetValues();
|
|
90
|
+
|
|
91
|
+
auto &cluster_array = *cluster;
|
|
92
|
+
auto &inner_bitarray = *inner;
|
|
93
|
+
auto is_used = [this, &inner_bitarray, &cluster_array](int i, int j) {
|
|
94
|
+
if (inner)
|
|
95
|
+
return inner_bitarray[i] && inner_bitarray[j];
|
|
96
|
+
return cluster_array[i] == cluster_array[j];
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
for (auto i : project)
|
|
100
|
+
for (auto j : m->GetRowIndices(i))
|
|
101
|
+
if (is_used(i, j)) {
|
|
102
|
+
rowi.Append(embed[i]);
|
|
103
|
+
coli.Append(embed[j]);
|
|
104
|
+
vals.Append(vals_ori[m->GetPosition(i, j)]);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
auto res = SparseMatrixTM<T>::CreateFromCOO(rowi, coli, vals,
|
|
108
|
+
project.Size(), project.Size());
|
|
109
|
+
res->SetSPD(m->IsSPD());
|
|
110
|
+
return res;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
class SparseFactorizationInterface : public SparseFactorization {
|
|
115
|
+
protected:
|
|
116
|
+
shared_ptr<const BaseSparseMatrix> inner_mat;
|
|
117
|
+
shared_ptr<BaseVector> inner_rhs, inner_solution;
|
|
118
|
+
MapInnerDofs map_inner_dofs;
|
|
119
|
+
bool is_complex = false;
|
|
120
|
+
bool is_symmetric = false;
|
|
121
|
+
bool is_symmetric_storage = false;
|
|
122
|
+
bool is_analyzed = false;
|
|
123
|
+
int width, height, inner_width, inner_height;
|
|
124
|
+
|
|
125
|
+
public:
|
|
126
|
+
SparseFactorizationInterface() = delete;
|
|
127
|
+
SparseFactorizationInterface(shared_ptr<const BaseMatrix> m,
|
|
128
|
+
shared_ptr<BitArray> ainner = nullptr,
|
|
129
|
+
shared_ptr<const Array<int>> acluster = nullptr);
|
|
130
|
+
|
|
131
|
+
virtual ~SparseFactorizationInterface() {}
|
|
132
|
+
|
|
133
|
+
void SetSubset(shared_ptr<BitArray> inner, shared_ptr<const Array<int>> cluster) override;
|
|
134
|
+
|
|
135
|
+
AutoVector CreateRowVector() const override {
|
|
136
|
+
return make_unique<VVector<double>>(Width());
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
AutoVector CreateColVector() const override {
|
|
140
|
+
return make_unique<VVector<double>>(Height());
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
shared_ptr<const BaseSparseMatrix> GetInnerMatrix() const {
|
|
144
|
+
return inner_mat;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
void MultAdd(double s, const BaseVector &x, BaseVector &y) const override;
|
|
148
|
+
void MultAdd(Complex s, const BaseVector &x, BaseVector &y) const override;
|
|
149
|
+
|
|
150
|
+
virtual void Update() override;
|
|
151
|
+
|
|
152
|
+
virtual void Analyze() {}
|
|
153
|
+
virtual void Factor() {}
|
|
154
|
+
virtual void Solve(const BaseVector &rhs, BaseVector &solution) const = 0;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
} // namespace ngla
|
|
158
|
+
|
|
159
|
+
#endif // SPARSEFACTORIZATION_INTERFACE_HPP
|