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,42 @@
|
|
|
1
|
+
#ifndef FILE_MULTIGRID
|
|
2
|
+
#define FILE_MULTIGRID
|
|
3
|
+
|
|
4
|
+
/*********************************************************************/
|
|
5
|
+
/* File: multigrid.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 20. Apr. 2000 */
|
|
8
|
+
/*********************************************************************/
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
Multigrid algorithms
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
// #include <comp.hpp>
|
|
16
|
+
|
|
17
|
+
/// namespace for multigrid components
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
namespace ngfem { };
|
|
21
|
+
namespace ngcomp { };
|
|
22
|
+
|
|
23
|
+
namespace ngmg
|
|
24
|
+
{
|
|
25
|
+
using namespace std;
|
|
26
|
+
using namespace ngstd;
|
|
27
|
+
using ngcore::INT;
|
|
28
|
+
using namespace ngla;
|
|
29
|
+
using namespace ngfem;
|
|
30
|
+
using namespace ngcomp;
|
|
31
|
+
}
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
#include "mgpre.hpp"
|
|
36
|
+
#include "prolongation.hpp"
|
|
37
|
+
#include "smoother.hpp"
|
|
38
|
+
// #include "vefc.hpp"
|
|
39
|
+
// #include "evcoarse.hpp"
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
#endif
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
#ifndef FILE_MULTIVECTOR
|
|
2
|
+
#define FILE_MULTIVECTOR
|
|
3
|
+
|
|
4
|
+
/*********************************************************************/
|
|
5
|
+
/* File: multivector.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl, Amanda Schoefl */
|
|
7
|
+
/* Date: June 2020 */
|
|
8
|
+
/*********************************************************************/
|
|
9
|
+
|
|
10
|
+
#include "basevector.hpp"
|
|
11
|
+
|
|
12
|
+
namespace ngla {
|
|
13
|
+
|
|
14
|
+
/* TODO:
|
|
15
|
+
* (+) Gram-Schmidt
|
|
16
|
+
* (+) default arguments
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
class MultiVector;
|
|
21
|
+
class BaseMatrix;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class MultiVectorExpr
|
|
25
|
+
{
|
|
26
|
+
public:
|
|
27
|
+
virtual ~MultiVectorExpr() { ; }
|
|
28
|
+
virtual void AssignTo (FlatVector<double> s, class MultiVector & v) const = 0;
|
|
29
|
+
virtual void AddTo (FlatVector<double> s, class MultiVector & v) const = 0;
|
|
30
|
+
virtual void AssignTo (FlatVector<Complex> s, class MultiVector & v) const = 0;
|
|
31
|
+
virtual void AddTo (FlatVector<Complex> s, class MultiVector & v) const = 0;
|
|
32
|
+
|
|
33
|
+
virtual size_t Size() const = 0;
|
|
34
|
+
virtual shared_ptr<BaseVector> CreateVector() const = 0;
|
|
35
|
+
virtual void CalcComponent(size_t nr, BaseVector & bv) const = 0;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class MultiVector : public MultiVectorExpr
|
|
40
|
+
{
|
|
41
|
+
protected:
|
|
42
|
+
shared_ptr<BaseVector> refvec;
|
|
43
|
+
Array<shared_ptr<BaseVector>> vecs;
|
|
44
|
+
public:
|
|
45
|
+
MultiVector (const Array<shared_ptr<BaseVector>> & avecs)
|
|
46
|
+
: refvec(avecs.Size()?avecs[0]:nullptr), vecs(avecs) { }
|
|
47
|
+
MultiVector (shared_ptr<BaseVector> v, size_t cnt): refvec (v)
|
|
48
|
+
{
|
|
49
|
+
Extend (cnt);
|
|
50
|
+
}
|
|
51
|
+
MultiVector (size_t size, size_t cnt, bool is_complex)
|
|
52
|
+
{
|
|
53
|
+
refvec = CreateBaseVector(size, is_complex, 1);
|
|
54
|
+
Extend (cnt);
|
|
55
|
+
}
|
|
56
|
+
MultiVector (const MultiVector & v) = default;
|
|
57
|
+
MultiVector (MultiVector && v) = default;
|
|
58
|
+
|
|
59
|
+
virtual ~MultiVector() { }
|
|
60
|
+
bool IsComplex() const { return refvec->IsComplex(); }
|
|
61
|
+
|
|
62
|
+
size_t Size() const override { return vecs.Size(); }
|
|
63
|
+
shared_ptr<BaseVector> operator[] (size_t i) const { return vecs[i]; }
|
|
64
|
+
shared_ptr<BaseVector> RefVec() const { return refvec; }
|
|
65
|
+
|
|
66
|
+
virtual unique_ptr<MultiVector> Range(IntRange r) const;
|
|
67
|
+
virtual unique_ptr<MultiVector> VectorRange(IntRange r) const; // range of each component vector
|
|
68
|
+
virtual unique_ptr<MultiVector> SubSet(const Array<int> & indices) const;
|
|
69
|
+
|
|
70
|
+
void Extend (size_t nr = 1) {
|
|
71
|
+
for ([[maybe_unused]] auto i : ngstd::Range(nr))
|
|
72
|
+
vecs.Append (refvec->CreateVector());
|
|
73
|
+
}
|
|
74
|
+
void Append (shared_ptr<BaseVector> v)
|
|
75
|
+
{
|
|
76
|
+
vecs.Append (v->CreateVector());
|
|
77
|
+
*vecs.Last() = *v;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
void Replace (int i, shared_ptr<BaseVector> v)
|
|
81
|
+
{
|
|
82
|
+
vecs[i] = v;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
void AppendOrthogonalize (shared_ptr<BaseVector> v, BaseMatrix * ip, bool parallel, int iterations);
|
|
86
|
+
template <typename T>
|
|
87
|
+
Vector<T> T_AppendOrthogonalize (shared_ptr<BaseVector> v, BaseMatrix * ip, bool parallel, int iterations);
|
|
88
|
+
|
|
89
|
+
MultiVector & operator= (double val)
|
|
90
|
+
{
|
|
91
|
+
SetScalar (val);
|
|
92
|
+
return *this;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
MultiVector & operator= (Complex val)
|
|
96
|
+
{
|
|
97
|
+
SetScalar (val);
|
|
98
|
+
return *this;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
MultiVector & operator= (const MultiVector & v2);
|
|
102
|
+
MultiVector & operator= (const MultiVectorExpr & expr);
|
|
103
|
+
MultiVector operator+= (const MultiVectorExpr & expr);
|
|
104
|
+
MultiVector & operator-= (const MultiVectorExpr & expr);
|
|
105
|
+
|
|
106
|
+
void Orthogonalize (BaseMatrix * ipmat);
|
|
107
|
+
template <class T>
|
|
108
|
+
Matrix<T> T_Orthogonalize (BaseMatrix * ipmat);
|
|
109
|
+
|
|
110
|
+
virtual void SetScalar (double s);
|
|
111
|
+
virtual void SetScalar (Complex s);
|
|
112
|
+
|
|
113
|
+
// v2 += vec(i) * v[i]
|
|
114
|
+
virtual void AddTo (FlatVector<double> vec, BaseVector & v2);
|
|
115
|
+
virtual void AddTo (FlatVector<Complex> vec, BaseVector & v2);
|
|
116
|
+
// me[i] += v2[j] mat(j,i)
|
|
117
|
+
virtual void Add (const MultiVector & v2, FlatMatrix<double> mat);
|
|
118
|
+
virtual void Add (const MultiVector & v2, FlatMatrix<Complex> mat);
|
|
119
|
+
|
|
120
|
+
template <typename T>
|
|
121
|
+
auto T_InnerProduct (const MultiVector & v2, bool conjugate = false)
|
|
122
|
+
{
|
|
123
|
+
if constexpr (is_same<T, double>())
|
|
124
|
+
return InnerProductD (v2);
|
|
125
|
+
else
|
|
126
|
+
return InnerProductC (v2, conjugate);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
virtual Matrix<> InnerProductD (const MultiVector & v2) const;
|
|
130
|
+
virtual Matrix<Complex> InnerProductC (const MultiVector & v2, bool conjugate = false) const;
|
|
131
|
+
virtual Matrix<> InnerProductD (const MultiVectorExpr & v2) const;
|
|
132
|
+
virtual Matrix<Complex> InnerProductC (const MultiVectorExpr & v2, bool conjugate = false) const;
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
template <typename T>
|
|
136
|
+
auto T_InnerProduct (const BaseVector & v2, bool conjugate = false)
|
|
137
|
+
{
|
|
138
|
+
if constexpr (is_same<T, double>())
|
|
139
|
+
return InnerProductD (v2);
|
|
140
|
+
else
|
|
141
|
+
return InnerProductC (v2, conjugate);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
virtual Vector<> InnerProductD (const BaseVector & v2) const;
|
|
145
|
+
virtual Vector<Complex> InnerProductC (const BaseVector & v2, bool conjugate = false) const;
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
virtual void AssignTo (FlatVector<double> s, class MultiVector & v) const override;
|
|
150
|
+
virtual void AddTo (FlatVector<double> s, class MultiVector & v) const override;
|
|
151
|
+
virtual void AssignTo (FlatVector<Complex> s, class MultiVector & v) const override;
|
|
152
|
+
virtual void AddTo (FlatVector<Complex> s, class MultiVector & v) const override;
|
|
153
|
+
|
|
154
|
+
virtual shared_ptr<BaseVector> CreateVector() const override;
|
|
155
|
+
virtual void CalcComponent(size_t nr, BaseVector & bv) const override;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class BaseVectorPtrMV : public MultiVector
|
|
162
|
+
{
|
|
163
|
+
public:
|
|
164
|
+
using MultiVector::MultiVector;
|
|
165
|
+
|
|
166
|
+
unique_ptr<MultiVector> Range(IntRange r) const override;
|
|
167
|
+
void SetScalar (double s) override;
|
|
168
|
+
void Add (const MultiVector & v2, FlatMatrix<double> mat) override;
|
|
169
|
+
void Add (const MultiVector & v2, FlatMatrix<Complex> mat) override;
|
|
170
|
+
Vector<> InnerProductD (const BaseVector & v2) const override;
|
|
171
|
+
Matrix<> InnerProductD (const MultiVector & v2) const override;
|
|
172
|
+
Matrix<Complex> InnerProductC (const MultiVector & v2, bool conjugate) const override;
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
template <class T>
|
|
180
|
+
void MultAdd (const BaseMatrix & mat, FlatVector<T> s, const MultiVector & x, MultiVector & y);
|
|
181
|
+
|
|
182
|
+
class MatMultiVecExpr : public MultiVectorExpr
|
|
183
|
+
{
|
|
184
|
+
shared_ptr<BaseMatrix> mat;
|
|
185
|
+
shared_ptr<MultiVector> vec;
|
|
186
|
+
public:
|
|
187
|
+
MatMultiVecExpr (shared_ptr<BaseMatrix> amat, shared_ptr<MultiVector> avec)
|
|
188
|
+
: mat(amat), vec(avec) { ; }
|
|
189
|
+
|
|
190
|
+
void AssignTo (FlatVector<double> s, MultiVector & res) const override
|
|
191
|
+
{
|
|
192
|
+
res = 0.0;
|
|
193
|
+
MultAdd (*mat, s, *vec, res);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
void AddTo (FlatVector<double> s, MultiVector & res) const override
|
|
197
|
+
{ MultAdd (*mat, s, *vec, res); }
|
|
198
|
+
|
|
199
|
+
void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
200
|
+
{
|
|
201
|
+
res = 0.0;
|
|
202
|
+
MultAdd (*mat, s, *vec, res);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
void AddTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
206
|
+
{ MultAdd (*mat, s, *vec, res); }
|
|
207
|
+
|
|
208
|
+
size_t Size() const override { return vec->Size(); }
|
|
209
|
+
shared_ptr<BaseVector> CreateVector() const override;
|
|
210
|
+
void CalcComponent(size_t nr, BaseVector & bv) const override;
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
template <typename T>
|
|
218
|
+
class MultiVecMatrixExpr : public MultiVectorExpr
|
|
219
|
+
{
|
|
220
|
+
Matrix<T> mat;
|
|
221
|
+
shared_ptr<MultiVector> vec;
|
|
222
|
+
public:
|
|
223
|
+
MultiVecMatrixExpr (Matrix<T> amat, shared_ptr<MultiVector> avec)
|
|
224
|
+
: mat(amat), vec(avec)
|
|
225
|
+
{
|
|
226
|
+
if (vec->Size() != mat.Height())
|
|
227
|
+
throw Exception("Multivector * Matrix don't fit: mv.size = "+ToString(vec->Size())+
|
|
228
|
+
", matrix.height = " + ToString(mat.Height()));
|
|
229
|
+
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
void AssignTo (FlatVector<double> s, MultiVector & res) const override
|
|
233
|
+
{
|
|
234
|
+
res = 0.0;
|
|
235
|
+
AddTo (s, res);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
void AddTo (FlatVector<double> s, MultiVector & res) const override
|
|
239
|
+
{
|
|
240
|
+
Matrix<T> hmat = mat;
|
|
241
|
+
for (auto i : Range(mat.Width()))
|
|
242
|
+
hmat.Col(i) *= s(i);
|
|
243
|
+
res.Add (*vec, hmat);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
247
|
+
{
|
|
248
|
+
res = 0.0;
|
|
249
|
+
AddTo (s, res);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
void AddTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
253
|
+
{
|
|
254
|
+
Matrix<Complex> hmat = mat;
|
|
255
|
+
for (auto i : Range(mat.Width()))
|
|
256
|
+
hmat.Col(i) *= s(i);
|
|
257
|
+
res.Add (*vec, hmat);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
size_t Size() const override { return mat.Width(); } // vec->Size(); }
|
|
261
|
+
shared_ptr<BaseVector> CreateVector() const override
|
|
262
|
+
{
|
|
263
|
+
return vec->RefVec()->CreateVector();
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
void CalcComponent(size_t nr, BaseVector & bv) const override
|
|
267
|
+
{
|
|
268
|
+
bv = 0;
|
|
269
|
+
vec->AddTo (Vector<T>(mat.Col(nr)), bv);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class SumMultiVectorExpr : public MultiVectorExpr
|
|
278
|
+
{
|
|
279
|
+
shared_ptr<MultiVectorExpr> e1;
|
|
280
|
+
shared_ptr<MultiVectorExpr> e2;
|
|
281
|
+
public:
|
|
282
|
+
SumMultiVectorExpr (shared_ptr<MultiVectorExpr> ae1,
|
|
283
|
+
shared_ptr<MultiVectorExpr> ae2)
|
|
284
|
+
: e1(ae1), e2(ae2) { }
|
|
285
|
+
|
|
286
|
+
void AssignTo (FlatVector<double> s, MultiVector & res) const override
|
|
287
|
+
{
|
|
288
|
+
e1->AssignTo (s, res);
|
|
289
|
+
e2->AddTo (s, res);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
void AddTo (FlatVector<double> s, MultiVector & res) const override
|
|
293
|
+
{
|
|
294
|
+
e1->AddTo (s, res);
|
|
295
|
+
e2->AddTo (s, res);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
299
|
+
{
|
|
300
|
+
e1->AssignTo (s, res);
|
|
301
|
+
e2->AddTo (s, res);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
void AddTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
305
|
+
{
|
|
306
|
+
e1->AddTo (s, res);
|
|
307
|
+
e2->AddTo (s, res);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
size_t Size() const override { return e1->Size(); }
|
|
311
|
+
shared_ptr<BaseVector> CreateVector() const override
|
|
312
|
+
{
|
|
313
|
+
return e1->CreateVector();
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
void CalcComponent(size_t nr, BaseVector & bv) const override
|
|
317
|
+
{
|
|
318
|
+
auto tmp = bv.CreateVector();
|
|
319
|
+
e1->CalcComponent(nr, *tmp);
|
|
320
|
+
e2->CalcComponent(nr, bv);
|
|
321
|
+
bv += *tmp;
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
template <typename T>
|
|
329
|
+
class ScaledMultiVectorExpr : public MultiVectorExpr
|
|
330
|
+
{
|
|
331
|
+
shared_ptr<MultiVectorExpr> mv;
|
|
332
|
+
Vector<T> scale;
|
|
333
|
+
public:
|
|
334
|
+
ScaledMultiVectorExpr (shared_ptr<MultiVectorExpr> amv,
|
|
335
|
+
Vector<T> ascale)
|
|
336
|
+
: mv(amv), scale(ascale) { }
|
|
337
|
+
|
|
338
|
+
void AssignTo (FlatVector<double> s, MultiVector & res) const override
|
|
339
|
+
{
|
|
340
|
+
Vector<T> hv = pw_mult(scale, s);
|
|
341
|
+
mv->AssignTo (hv, res);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
void AddTo (FlatVector<double> s, MultiVector & res) const override
|
|
345
|
+
{
|
|
346
|
+
Vector<T> hv = pw_mult(scale, s);
|
|
347
|
+
mv->AddTo (hv, res);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
351
|
+
{
|
|
352
|
+
Vector<Complex> hv = pw_mult(scale, s);
|
|
353
|
+
mv->AssignTo (hv, res);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
void AddTo (FlatVector<Complex> s, MultiVector & res) const override
|
|
357
|
+
{
|
|
358
|
+
Vector<Complex> hv = pw_mult(scale, s);
|
|
359
|
+
mv->AddTo (hv, res);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
size_t Size() const override { return mv->Size(); }
|
|
363
|
+
shared_ptr<BaseVector> CreateVector() const override
|
|
364
|
+
{
|
|
365
|
+
return mv->CreateVector();
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
void CalcComponent(size_t nr, BaseVector & bv) const override
|
|
369
|
+
{
|
|
370
|
+
mv->CalcComponent(nr, bv);
|
|
371
|
+
bv *= scale(nr);
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
// y += sum a(i) * x[i]
|
|
388
|
+
template <class T>
|
|
389
|
+
void Axpy (const Vector<T> & a, const MultiVector & x, BaseVector & y);
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
template <typename TSCAL>
|
|
393
|
+
class MultiVecAxpyExpr : public DynamicBaseExpression
|
|
394
|
+
{
|
|
395
|
+
Vector<TSCAL> a;
|
|
396
|
+
shared_ptr<MultiVector> x;
|
|
397
|
+
|
|
398
|
+
public:
|
|
399
|
+
MultiVecAxpyExpr (Vector<TSCAL> aa, shared_ptr<MultiVector> ax)
|
|
400
|
+
: a(aa), x(ax) { }
|
|
401
|
+
|
|
402
|
+
AutoVector CreateVector() const override
|
|
403
|
+
{ return x->RefVec()->CreateVector(); }
|
|
404
|
+
|
|
405
|
+
void AssignTo (double s, BaseVector & v) const override
|
|
406
|
+
{
|
|
407
|
+
v = 0.0;
|
|
408
|
+
AddTo (s, v);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
void AddTo (double s, BaseVector & v) const override
|
|
412
|
+
{
|
|
413
|
+
Vector<TSCAL> sa = s*a;
|
|
414
|
+
// Axpy (sa, *x, v);
|
|
415
|
+
x->AddTo(sa, v);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
void AssignTo (Complex s, BaseVector & v) const override
|
|
419
|
+
{
|
|
420
|
+
v = 0.0;
|
|
421
|
+
AddTo (s, v);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
void AddTo (Complex s, BaseVector & v) const override
|
|
425
|
+
{
|
|
426
|
+
Vector<Complex> sa = s*a;
|
|
427
|
+
// Axpy(sa, *x , v);
|
|
428
|
+
x->AddTo(sa, v);
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
shared_ptr<MultiVectorExpr> operator+ (shared_ptr<MultiVectorExpr> e1,
|
|
436
|
+
shared_ptr<MultiVectorExpr> e2);
|
|
437
|
+
shared_ptr<MultiVectorExpr> operator- (shared_ptr<MultiVectorExpr> e1);
|
|
438
|
+
|
|
439
|
+
shared_ptr<MultiVectorExpr> operator- (shared_ptr<MultiVectorExpr> e1,
|
|
440
|
+
shared_ptr<MultiVectorExpr> e2);
|
|
441
|
+
|
|
442
|
+
shared_ptr<MultiVectorExpr> operator* (double s, shared_ptr<MultiVectorExpr> e1);
|
|
443
|
+
|
|
444
|
+
shared_ptr<MultiVectorExpr> operator* (Complex s, shared_ptr<MultiVectorExpr> e1);
|
|
445
|
+
|
|
446
|
+
}
|
|
447
|
+
#endif
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
#ifndef FILE_MUMPSINVERSE
|
|
2
|
+
#define FILE_MUMPSINVERSE
|
|
3
|
+
|
|
4
|
+
/* *************************************************************************/
|
|
5
|
+
/* File: mumpsinverse.hpp */
|
|
6
|
+
/* Author: Joachin Schoeberl */
|
|
7
|
+
/* Date: Apr. 09 */
|
|
8
|
+
/* *************************************************************************/
|
|
9
|
+
|
|
10
|
+
#include <la.hpp>
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
namespace ngparallel
|
|
14
|
+
{
|
|
15
|
+
class ParallelDofs;
|
|
16
|
+
}
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
namespace ngla
|
|
20
|
+
{
|
|
21
|
+
|
|
22
|
+
/*
|
|
23
|
+
interface to the sparse direct solver Mumps
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#ifdef USE_MUMPS
|
|
27
|
+
#define OMPI_SKIP_MPICXX
|
|
28
|
+
#include "dmumps_c.h"
|
|
29
|
+
#include "zmumps_c.h"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
template <class TSCAL>
|
|
33
|
+
class mumps_trait
|
|
34
|
+
{
|
|
35
|
+
public:
|
|
36
|
+
typedef DMUMPS_STRUC_C MUMPS_STRUC_C;
|
|
37
|
+
typedef double MUMPS_TSCAL;
|
|
38
|
+
static void MumpsFunction (DMUMPS_STRUC_C * id)
|
|
39
|
+
{ dmumps_c (id); }
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
template <>
|
|
43
|
+
class mumps_trait<Complex>
|
|
44
|
+
{
|
|
45
|
+
public:
|
|
46
|
+
typedef ZMUMPS_STRUC_C MUMPS_STRUC_C;
|
|
47
|
+
typedef mumps_double_complex MUMPS_TSCAL;
|
|
48
|
+
static void MumpsFunction (ZMUMPS_STRUC_C * id)
|
|
49
|
+
{ zmumps_c (id); }
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
template<class TM,
|
|
55
|
+
class TV_ROW = typename mat_traits<TM>::TV_ROW,
|
|
56
|
+
class TV_COL = typename mat_traits<TM>::TV_COL>
|
|
57
|
+
class MumpsInverse : public BaseMatrix
|
|
58
|
+
{
|
|
59
|
+
typedef typename mat_traits<TM>::TV_COL TV;
|
|
60
|
+
typedef typename mat_traits<TM>::TV_ROW TVX;
|
|
61
|
+
typedef typename mat_traits<TM>::TSCAL TSCAL;
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
typedef typename mumps_trait<TSCAL>::MUMPS_STRUC_C MUMPS_STRUC_C;
|
|
65
|
+
MUMPS_STRUC_C mumps_id;
|
|
66
|
+
|
|
67
|
+
int height, nze, entrysize;
|
|
68
|
+
|
|
69
|
+
bool symmetric, iscomplex;
|
|
70
|
+
|
|
71
|
+
shared_ptr<BitArray> inner;
|
|
72
|
+
shared_ptr<const Array<int>> cluster;
|
|
73
|
+
|
|
74
|
+
NgMPI_Comm comm;
|
|
75
|
+
|
|
76
|
+
public:
|
|
77
|
+
///
|
|
78
|
+
MumpsInverse (const SparseMatrix<TM,TV_ROW,TV_COL> & a,
|
|
79
|
+
shared_ptr<BitArray> ainner = nullptr,
|
|
80
|
+
shared_ptr<const Array<int>> acluster = nullptr,
|
|
81
|
+
bool symmetric = false);
|
|
82
|
+
|
|
83
|
+
///
|
|
84
|
+
~MumpsInverse ();
|
|
85
|
+
|
|
86
|
+
///
|
|
87
|
+
int VHeight() const { return height/entrysize; }
|
|
88
|
+
|
|
89
|
+
///
|
|
90
|
+
int VWidth() const { return height/entrysize; }
|
|
91
|
+
///
|
|
92
|
+
virtual bool IsComplex() const { return iscomplex; }
|
|
93
|
+
///
|
|
94
|
+
virtual void Mult (const BaseVector & x, BaseVector & y) const;
|
|
95
|
+
|
|
96
|
+
///
|
|
97
|
+
virtual AutoVector CreateVector () const
|
|
98
|
+
{
|
|
99
|
+
return make_unique<VVector<TV>> (height);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
virtual AutoVector CreateRowVector () const
|
|
103
|
+
{
|
|
104
|
+
return make_unique<VVector<TV>> (height);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
virtual AutoVector CreateColVector () const
|
|
108
|
+
{
|
|
109
|
+
return make_unique<VVector<TV>> (height);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
template<class TM,
|
|
119
|
+
class TVEC = typename mat_traits<TM>::TV_ROW>
|
|
120
|
+
class ParallelMumpsInverse : public BaseMatrix
|
|
121
|
+
{
|
|
122
|
+
typedef typename mat_traits<TM>::TV_COL TV;
|
|
123
|
+
typedef typename mat_traits<TM>::TSCAL TSCAL;
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
typedef typename mumps_trait<TSCAL>::MUMPS_STRUC_C MUMPS_STRUC_C;
|
|
127
|
+
MUMPS_STRUC_C mumps_id;
|
|
128
|
+
int height, nze, entrysize;
|
|
129
|
+
|
|
130
|
+
bool symmetric, iscomplex;
|
|
131
|
+
|
|
132
|
+
// const BitArray * inner;
|
|
133
|
+
// const Array<int> * cluster;
|
|
134
|
+
Array<int> select;
|
|
135
|
+
Array<int> loc2glob;
|
|
136
|
+
int num_globdofs;
|
|
137
|
+
public:
|
|
138
|
+
///
|
|
139
|
+
ParallelMumpsInverse (const BaseSparseMatrix & a,
|
|
140
|
+
shared_ptr<BitArray> ainner,
|
|
141
|
+
shared_ptr<const Array<int>> acluster,
|
|
142
|
+
shared_ptr<ParallelDofs> pardofs,
|
|
143
|
+
bool symmetric = 0);
|
|
144
|
+
|
|
145
|
+
///
|
|
146
|
+
~ParallelMumpsInverse ();
|
|
147
|
+
|
|
148
|
+
///
|
|
149
|
+
int VHeight() const { return height; }
|
|
150
|
+
|
|
151
|
+
///
|
|
152
|
+
int VWidth() const { return height; }
|
|
153
|
+
///
|
|
154
|
+
virtual bool IsComplex() const { return iscomplex; }
|
|
155
|
+
///
|
|
156
|
+
virtual void Mult (const BaseVector & x, BaseVector & y) const;
|
|
157
|
+
|
|
158
|
+
///
|
|
159
|
+
virtual AutoVector CreateVector () const;
|
|
160
|
+
virtual AutoVector CreateRowVector () const;
|
|
161
|
+
virtual AutoVector CreateColVector () const;
|
|
162
|
+
/*
|
|
163
|
+
{
|
|
164
|
+
return new ParallelVVector<TV> (height, paralleldofs);
|
|
165
|
+
// return new VVector<TV> (height);
|
|
166
|
+
}
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
private:
|
|
170
|
+
void MumpsFunction (MUMPS_STRUC_C & mumps_id)
|
|
171
|
+
{
|
|
172
|
+
mumps_trait<TSCAL>::MumpsFunction (&mumps_id);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
#endif
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
#endif
|