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,239 @@
|
|
|
1
|
+
#ifndef NGSOLVE_CONTACT_HPP
|
|
2
|
+
#define NGSOLVE_CONTACT_HPP
|
|
3
|
+
|
|
4
|
+
// #include <comp.hpp>
|
|
5
|
+
#include "gridfunction.hpp"
|
|
6
|
+
#include "bilinearform.hpp"
|
|
7
|
+
|
|
8
|
+
namespace ngcomp
|
|
9
|
+
{
|
|
10
|
+
template<int DIM>
|
|
11
|
+
struct ContactPair
|
|
12
|
+
{
|
|
13
|
+
ElementId primary_el, secondary_el;
|
|
14
|
+
IntegrationPoint primary_ip, secondary_ip;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
class GapFunction : public CoefficientFunctionNoDerivative
|
|
18
|
+
{
|
|
19
|
+
protected:
|
|
20
|
+
shared_ptr<GridFunction> displacement;
|
|
21
|
+
shared_ptr<MeshAccess> ma;
|
|
22
|
+
Region master;
|
|
23
|
+
Region other;
|
|
24
|
+
double h;
|
|
25
|
+
bool both_sides;
|
|
26
|
+
|
|
27
|
+
public:
|
|
28
|
+
GapFunction( shared_ptr<MeshAccess> ma_, Region primary_, Region secondary_)
|
|
29
|
+
: CoefficientFunctionNoDerivative(ma_->GetDimension()),
|
|
30
|
+
ma(ma_), master(primary_), other(secondary_)
|
|
31
|
+
{ }
|
|
32
|
+
|
|
33
|
+
virtual void Update(shared_ptr<GridFunction> gf, int intorder_, double h_,
|
|
34
|
+
bool both_sides) = 0;
|
|
35
|
+
void Draw();
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
template <int DIM>
|
|
39
|
+
class T_GapFunction : public GapFunction
|
|
40
|
+
{
|
|
41
|
+
unique_ptr<netgen::BoxTree<DIM, int>> searchtree;
|
|
42
|
+
public:
|
|
43
|
+
T_GapFunction( shared_ptr<MeshAccess> mesh_, Region primary_, Region secondary_)
|
|
44
|
+
: GapFunction(mesh_, primary_, secondary_)
|
|
45
|
+
{ }
|
|
46
|
+
|
|
47
|
+
void Update(shared_ptr<GridFunction> gf, int intorder_, double h, bool both_sides) override;
|
|
48
|
+
|
|
49
|
+
const netgen::BoxTree<DIM, int>& GetSearchTree() { return *searchtree; }
|
|
50
|
+
|
|
51
|
+
using GapFunction::Evaluate;
|
|
52
|
+
double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
53
|
+
{
|
|
54
|
+
throw Exception("Scalar evaluate of GapFunction called");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
void Evaluate(const BaseMappedIntegrationPoint & ip,
|
|
58
|
+
FlatVector<> result) const override;
|
|
59
|
+
|
|
60
|
+
void Evaluate(const BaseMappedIntegrationRule & mir,
|
|
61
|
+
BareSliceMatrix<> result) const override;
|
|
62
|
+
|
|
63
|
+
optional<ContactPair<DIM>> CreateContactPair(const MappedIntegrationPoint<DIM-1, DIM>& mip, LocalHeap& lh, bool both_sides) const;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
template<int DIM>
|
|
67
|
+
class DisplacedNormal : public CoefficientFunctionNoDerivative
|
|
68
|
+
{
|
|
69
|
+
shared_ptr<GridFunction> displacement;
|
|
70
|
+
public:
|
|
71
|
+
DisplacedNormal()
|
|
72
|
+
: CoefficientFunctionNoDerivative(DIM, false),
|
|
73
|
+
displacement(nullptr) {}
|
|
74
|
+
|
|
75
|
+
void Update(shared_ptr<GridFunction> _displacement)
|
|
76
|
+
{ displacement = _displacement; }
|
|
77
|
+
|
|
78
|
+
using CoefficientFunctionNoDerivative::Evaluate;
|
|
79
|
+
double Evaluate(const BaseMappedIntegrationPoint& ip) const override
|
|
80
|
+
{
|
|
81
|
+
throw Exception("1dim eval called for Normal");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
void Evaluate(const BaseMappedIntegrationPoint& ir, FlatVector<> values) const override;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
class ContactEnergy
|
|
88
|
+
{
|
|
89
|
+
shared_ptr<CoefficientFunction> cf;
|
|
90
|
+
shared_ptr<FESpace> fes;
|
|
91
|
+
Array<ProxyFunction*> trial_proxies;
|
|
92
|
+
Array<CoefficientFunction*> cf_gridfunctions;
|
|
93
|
+
bool deformed;
|
|
94
|
+
|
|
95
|
+
public:
|
|
96
|
+
ContactEnergy(shared_ptr<CoefficientFunction> _cf,
|
|
97
|
+
bool _deformed=false);
|
|
98
|
+
|
|
99
|
+
bool IsDeformed() const { return deformed; }
|
|
100
|
+
|
|
101
|
+
double CalcEnergy(const FiniteElement& m_fel,
|
|
102
|
+
const FiniteElement& s_fel,
|
|
103
|
+
const BaseMappedIntegrationRule& m_mir,
|
|
104
|
+
FlatVector<double> elx,
|
|
105
|
+
LocalHeap& lh);
|
|
106
|
+
|
|
107
|
+
void ApplyAdd(const FiniteElement& m_fel,
|
|
108
|
+
const FiniteElement& s_fel,
|
|
109
|
+
const BaseMappedIntegrationRule& m_mir,
|
|
110
|
+
FlatVector<double> elx,
|
|
111
|
+
FlatVector<double> ely,
|
|
112
|
+
LocalHeap& lh);
|
|
113
|
+
|
|
114
|
+
void CalcLinearizedAdd(const FiniteElement& m_fel,
|
|
115
|
+
const FiniteElement& s_fel,
|
|
116
|
+
const BaseMappedIntegrationRule& m_mir,
|
|
117
|
+
FlatVector<double> elx,
|
|
118
|
+
FlatMatrix<double> elmat,
|
|
119
|
+
LocalHeap& lh);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
class ContactIntegrator
|
|
123
|
+
{
|
|
124
|
+
shared_ptr<CoefficientFunction> cf;
|
|
125
|
+
shared_ptr<FESpace> fes;
|
|
126
|
+
Array<ProxyFunction*> trial_proxies, test_proxies;
|
|
127
|
+
Array<CoefficientFunction*> cf_gridfunctions;
|
|
128
|
+
Array<shared_ptr<CoefficientFunction>> dcf_dtest; // derivatives by test-functions
|
|
129
|
+
Matrix<shared_ptr<CoefficientFunction>> ddcf_dtest_dtrial; // derivatives by test- and trial-functions
|
|
130
|
+
bool deformed;
|
|
131
|
+
public:
|
|
132
|
+
ContactIntegrator(shared_ptr<CoefficientFunction> _cf,
|
|
133
|
+
bool _deformed);
|
|
134
|
+
|
|
135
|
+
bool IsDeformed() const { return deformed; }
|
|
136
|
+
|
|
137
|
+
void ApplyAdd(const FiniteElement& m_fel,
|
|
138
|
+
const FiniteElement& s_fel,
|
|
139
|
+
const BaseMappedIntegrationRule& m_mir,
|
|
140
|
+
FlatVector<double> elx,
|
|
141
|
+
FlatVector<double> ely,
|
|
142
|
+
LocalHeap& lh);
|
|
143
|
+
|
|
144
|
+
void CalcLinearizedAdd(const FiniteElement& m_fel,
|
|
145
|
+
const FiniteElement& s_fel,
|
|
146
|
+
const BaseMappedIntegrationRule& m_mir,
|
|
147
|
+
FlatVector<double> elx,
|
|
148
|
+
FlatMatrix<double> elmat,
|
|
149
|
+
LocalHeap& lh);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class ContactBoundary : public std::enable_shared_from_this<ContactBoundary>,
|
|
154
|
+
netgen::UserVisualizationObject
|
|
155
|
+
{
|
|
156
|
+
shared_ptr<GapFunction> gap;
|
|
157
|
+
shared_ptr<CoefficientFunction> normal;
|
|
158
|
+
Region master, other;
|
|
159
|
+
Array<shared_ptr<ContactEnergy>> energies, undeformed_energies, deformed_energies;
|
|
160
|
+
Array<shared_ptr<ContactIntegrator>> integrators, undeformed_integrators, deformed_integrators;
|
|
161
|
+
shared_ptr<FESpace> fes_displacement;
|
|
162
|
+
shared_ptr<FESpace> fes;
|
|
163
|
+
|
|
164
|
+
// For visualization only
|
|
165
|
+
bool draw_pairs = false;
|
|
166
|
+
Array<Vec<3>> primary_points;
|
|
167
|
+
Array<Vec<3>> secondary_points;
|
|
168
|
+
bool volume, element_boundary;
|
|
169
|
+
public:
|
|
170
|
+
void Draw();
|
|
171
|
+
ContactBoundary(Region _master, Region _other, bool draw_pairs = false, bool _volume=false, bool element_boundary=false);
|
|
172
|
+
|
|
173
|
+
~ContactBoundary();
|
|
174
|
+
|
|
175
|
+
void AddEnergy(shared_ptr<CoefficientFunction> form,
|
|
176
|
+
bool deformed=false);
|
|
177
|
+
void AddIntegrator(shared_ptr<CoefficientFunction> form,
|
|
178
|
+
bool deformed=false);
|
|
179
|
+
|
|
180
|
+
// Update search tree for gap function, if bf is not
|
|
181
|
+
// nullptr, update SpecialElements of bf
|
|
182
|
+
void Update(shared_ptr<GridFunction> gf,
|
|
183
|
+
shared_ptr<BilinearForm> bf,
|
|
184
|
+
int intorder, double h, bool both_sides);
|
|
185
|
+
|
|
186
|
+
shared_ptr<CoefficientFunction> Gap() const { return gap; }
|
|
187
|
+
shared_ptr<CoefficientFunction> Normal() const { return normal; }
|
|
188
|
+
const auto& GetEnergies() const { return energies; }
|
|
189
|
+
const auto& GetEnergies(bool def) const { return def ? deformed_energies : undeformed_energies; }
|
|
190
|
+
const auto& GetIntegrators() const { return integrators; }
|
|
191
|
+
const auto& GetIntegrators(bool def) const { return def ? deformed_integrators : undeformed_integrators; }
|
|
192
|
+
shared_ptr<FESpace> GetFESpace() const { return fes; }
|
|
193
|
+
tuple<FlatArray<Vec<3>>, FlatArray<Vec<3>>> GetDrawingPairs() { return {primary_points, secondary_points}; }
|
|
194
|
+
auto GetCArgs() {
|
|
195
|
+
return std::make_tuple(master, other, draw_pairs, volume, element_boundary);
|
|
196
|
+
}
|
|
197
|
+
void DoArchive(Archive& ar);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
template<int DIM>
|
|
201
|
+
class MPContactElement : public SpecialElement
|
|
202
|
+
{
|
|
203
|
+
// ContactPair<DIM> pair;
|
|
204
|
+
ElementId primary_ei, secondary_ei;
|
|
205
|
+
IntegrationRule primary_ir, secondary_ir;
|
|
206
|
+
shared_ptr<ContactBoundary> cb;
|
|
207
|
+
FESpace* fes;
|
|
208
|
+
GridFunction* deformation;
|
|
209
|
+
public:
|
|
210
|
+
MPContactElement(ElementId primary_ei, ElementId secondary_ei,
|
|
211
|
+
IntegrationRule primary_ir, IntegrationRule secondary_ir,
|
|
212
|
+
shared_ptr<ContactBoundary> _cb,
|
|
213
|
+
GridFunction* deformation);
|
|
214
|
+
|
|
215
|
+
void GetDofNrs(Array<DofId>& dnums) const override;
|
|
216
|
+
|
|
217
|
+
double Energy(FlatVector<double> elx,
|
|
218
|
+
LocalHeap& lh) const override;
|
|
219
|
+
|
|
220
|
+
void Apply(FlatVector<double> elx,
|
|
221
|
+
FlatVector<double> ely,
|
|
222
|
+
LocalHeap& lh) const override;
|
|
223
|
+
|
|
224
|
+
void CalcElementMatrix(FlatMatrix<double> elmat,
|
|
225
|
+
LocalHeap& lh) const override;
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
void CalcLinearizedElementMatrix(FlatVector<double> elx,
|
|
229
|
+
FlatMatrix<double> elmat,
|
|
230
|
+
LocalHeap& lh) const override;
|
|
231
|
+
|
|
232
|
+
shared_ptr<ContactBoundary> GetContactBoundary() const
|
|
233
|
+
{ return cb; }
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
} // namespace ngcomp
|
|
238
|
+
|
|
239
|
+
#endif // NGSOLVE_CONTACT_HPP
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
#ifndef CUDA_CORE_HPP
|
|
2
|
+
#define CUDA_CORE_HPP
|
|
3
|
+
|
|
4
|
+
#include <cuda_runtime.h>
|
|
5
|
+
|
|
6
|
+
#include <core/array.hpp>
|
|
7
|
+
#include <core/exception.hpp>
|
|
8
|
+
|
|
9
|
+
namespace ngs_cuda
|
|
10
|
+
{
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// from CUDA C++ Programming Guide:
|
|
14
|
+
// https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#atomic-functions
|
|
15
|
+
#ifdef __CUDA_ARCH__
|
|
16
|
+
#if __CUDA_ARCH__ < 600
|
|
17
|
+
inline __device__ double atomicAdd(double* address, double val)
|
|
18
|
+
{
|
|
19
|
+
unsigned long long int* address_as_ull =
|
|
20
|
+
(unsigned long long int*)address;
|
|
21
|
+
unsigned long long int old = *address_as_ull, assumed;
|
|
22
|
+
|
|
23
|
+
do {
|
|
24
|
+
assumed = old;
|
|
25
|
+
old = atomicCAS(address_as_ull, assumed,
|
|
26
|
+
__double_as_longlong(val +
|
|
27
|
+
__longlong_as_double(assumed)));
|
|
28
|
+
|
|
29
|
+
// Note: uses integer comparison to avoid hang in case of NaN (since NaN != NaN)
|
|
30
|
+
} while (assumed != old);
|
|
31
|
+
|
|
32
|
+
return __longlong_as_double(old);
|
|
33
|
+
}
|
|
34
|
+
#endif
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
extern cudaStream_t ngs_cuda_stream;
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// Kernel wrapper only available if we are compiling the current file with the cuda compiler
|
|
43
|
+
#ifdef __CUDACC__
|
|
44
|
+
|
|
45
|
+
template<class F> __global__
|
|
46
|
+
void CUDA_forall(int n, F f)
|
|
47
|
+
{
|
|
48
|
+
int tid = blockIdx.x*blockDim.x+threadIdx.x;
|
|
49
|
+
for (int i = tid; i < n; i += blockDim.x*gridDim.x)
|
|
50
|
+
f(i);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
template<class F> __global__
|
|
54
|
+
void CUDA_forall2(int n, F f)
|
|
55
|
+
{
|
|
56
|
+
int tid = (blockIdx.x*blockDim.y+threadIdx.y)*blockDim.x+threadIdx.x;
|
|
57
|
+
for (int i = tid; i < n; i += blockDim.x*blockDim.y*gridDim.x)
|
|
58
|
+
f(i);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#define DEVICE_LAMBDA __device__
|
|
62
|
+
|
|
63
|
+
template <class F>
|
|
64
|
+
inline void DeviceParallelFor (int n, F f)
|
|
65
|
+
{
|
|
66
|
+
// CUDA_forall<<<512,256>>> (n, f);
|
|
67
|
+
CUDA_forall<<<n/256+1,256, 0, ngs_cuda_stream>>> (n, f);
|
|
68
|
+
// CUDA_forall<<<4096,32>>> (n, f); // slower
|
|
69
|
+
// CUDA_forall2<<<512,dim3(16,16)>>> (n, f); // same performance
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
#endif // __CUDACC__
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class CudaGraph
|
|
77
|
+
{
|
|
78
|
+
cudaGraph_t graph;
|
|
79
|
+
cudaGraphExec_t instance;
|
|
80
|
+
cudaStream_t stream;
|
|
81
|
+
cudaStream_t prev_stream;
|
|
82
|
+
|
|
83
|
+
public:
|
|
84
|
+
CudaGraph()
|
|
85
|
+
{
|
|
86
|
+
cudaStreamCreate(&stream);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
~CudaGraph()
|
|
90
|
+
{
|
|
91
|
+
// TODO: delete graph, instance, stream
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
void BeginCapture()
|
|
96
|
+
{
|
|
97
|
+
cudaStreamBeginCapture(stream, cudaStreamCaptureModeGlobal);
|
|
98
|
+
prev_stream = ngs_cuda_stream;
|
|
99
|
+
ngs_cuda_stream = stream;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
void EndCapture()
|
|
103
|
+
{
|
|
104
|
+
cudaStreamEndCapture(stream, &graph);
|
|
105
|
+
cudaGraphInstantiate(&instance, graph, NULL, NULL, 0);
|
|
106
|
+
ngs_cuda_stream = prev_stream;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
void Launch()
|
|
110
|
+
{
|
|
111
|
+
cudaGraphLaunch(instance, ngs_cuda_stream);
|
|
112
|
+
// cudaStreamSynchronize(ngs_cuda_stream);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
template <typename T>
|
|
121
|
+
class Dev
|
|
122
|
+
{
|
|
123
|
+
T data;
|
|
124
|
+
|
|
125
|
+
public:
|
|
126
|
+
__host__ __device__ Dev() = delete;
|
|
127
|
+
|
|
128
|
+
static Dev<T> * Malloc(size_t size)
|
|
129
|
+
{
|
|
130
|
+
Dev<T> * ptr;
|
|
131
|
+
if (auto err = cudaMalloc (&ptr, size*sizeof(T)))
|
|
132
|
+
throw ngstd::Exception("cudaMalloc error, ec="+ngcore::ToString(err));
|
|
133
|
+
return ptr;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
static void Free(Dev<T> * data)
|
|
137
|
+
{
|
|
138
|
+
cudaFree (data);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
T D2H() const
|
|
145
|
+
{
|
|
146
|
+
T res;
|
|
147
|
+
cudaMemcpy (&res, &data, sizeof(T), cudaMemcpyDeviceToHost);
|
|
148
|
+
return res;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
void H2D (T val)
|
|
152
|
+
|
|
153
|
+
{
|
|
154
|
+
cudaMemcpy (this, &val, sizeof(T), cudaMemcpyHostToDevice);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
void D2H (ngcore::FlatArray<T> hosta)
|
|
158
|
+
{
|
|
159
|
+
cudaMemcpy (hosta.Data(), &data, hosta.Size()*sizeof(T), cudaMemcpyDeviceToHost);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
void H2D (ngcore::FlatArray<T> hosta)
|
|
163
|
+
{
|
|
164
|
+
cudaMemcpy (&data, hosta.Data(), hosta.Size()*sizeof(T), cudaMemcpyHostToDevice);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
__host__ __device__ Dev<T> & operator= (T d2)
|
|
168
|
+
{
|
|
169
|
+
#ifdef __CUDA_ARCH__
|
|
170
|
+
data = d2;
|
|
171
|
+
#else
|
|
172
|
+
H2D(d2);
|
|
173
|
+
#endif
|
|
174
|
+
return *this;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
__host__ __device__ operator T() const
|
|
178
|
+
{
|
|
179
|
+
#ifdef __CUDA_ARCH__
|
|
180
|
+
return data;
|
|
181
|
+
#else
|
|
182
|
+
return D2H();
|
|
183
|
+
#endif
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
__device__ const T& operator*() const { return data; }
|
|
187
|
+
|
|
188
|
+
template <typename T2>
|
|
189
|
+
__device__ auto & operator+= (T2 other) { data += other; return *this; }
|
|
190
|
+
template <typename T2>
|
|
191
|
+
__device__ auto & operator-= (T2 other) { data -= other; return *this; }
|
|
192
|
+
template <typename T2>
|
|
193
|
+
__device__ auto & operator*= (T2 other) { data *= other; return *this; }
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
template <typename T>
|
|
198
|
+
Dev<T> * Host2Device (const T& val)
|
|
199
|
+
{
|
|
200
|
+
auto ptr = Dev<T>::Malloc(1);
|
|
201
|
+
ptr->H2D(val);
|
|
202
|
+
return ptr;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
template <typename T>
|
|
206
|
+
void Free(Dev<T> * dp)
|
|
207
|
+
{
|
|
208
|
+
Dev<T>::Free (dp);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
#endif
|
|
216
|
+
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
#ifndef CUDA_LINALG_HPP
|
|
2
|
+
#define CUDA_LINALG_HPP
|
|
3
|
+
|
|
4
|
+
// partial override of overloaded function (MultAdd)
|
|
5
|
+
#pragma nv_diag_suppress 611
|
|
6
|
+
#pragma nv_diag_suppress 20013
|
|
7
|
+
|
|
8
|
+
#include <la.hpp>
|
|
9
|
+
|
|
10
|
+
#include <cuda_runtime.h>
|
|
11
|
+
#include <cublas_v2.h>
|
|
12
|
+
#include <cusparse.h>
|
|
13
|
+
|
|
14
|
+
#include "cuda_ngstd.hpp"
|
|
15
|
+
|
|
16
|
+
namespace ngla
|
|
17
|
+
{
|
|
18
|
+
cublasHandle_t Get_CuBlas_Handle ();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#include "cuda_ngbla.hpp"
|
|
23
|
+
#include "linalg_kernels.hpp"
|
|
24
|
+
#include "unifiedvector.hpp"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
namespace ngla
|
|
28
|
+
{
|
|
29
|
+
using namespace ngs_cuda;
|
|
30
|
+
|
|
31
|
+
void InitCuLinalg();
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/* AutoVector CreateUnifiedVector(size_t size); */
|
|
35
|
+
|
|
36
|
+
class DevMatrix : public BaseMatrix
|
|
37
|
+
{
|
|
38
|
+
public:
|
|
39
|
+
DevMatrix() { }
|
|
40
|
+
|
|
41
|
+
AutoVector CreateRowVector() const override { return make_unique<UnifiedVector>(Width()); }
|
|
42
|
+
AutoVector CreateColVector() const override { return make_unique<UnifiedVector>(Height()); }
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
shared_ptr<BaseMatrix> CreateDevMatrix (BaseMatrix &mat);
|
|
46
|
+
shared_ptr<BaseMatrix> CreateDevMatrix (Matrix<> &mat);
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class DevSparseMatrix : public DevMatrix
|
|
50
|
+
{
|
|
51
|
+
protected:
|
|
52
|
+
//cusparseMatDescr_t * descr;
|
|
53
|
+
cusparseSpMatDescr_t descr;
|
|
54
|
+
int * dev_ind;
|
|
55
|
+
int * dev_col;
|
|
56
|
+
double * dev_val;
|
|
57
|
+
int height, width, nze;
|
|
58
|
+
public:
|
|
59
|
+
DevSparseMatrix () { }
|
|
60
|
+
DevSparseMatrix (const SparseMatrix<double> & mat);
|
|
61
|
+
virtual ~DevSparseMatrix ();
|
|
62
|
+
|
|
63
|
+
virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const;
|
|
64
|
+
virtual void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const;
|
|
65
|
+
|
|
66
|
+
virtual int VHeight() const { return height; }
|
|
67
|
+
virtual int VWidth() const { return width; }
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class DevDiagonalMatrix : public DevMatrix
|
|
72
|
+
{
|
|
73
|
+
protected:
|
|
74
|
+
const UnifiedVector diag;
|
|
75
|
+
|
|
76
|
+
public:
|
|
77
|
+
DevDiagonalMatrix (const UnifiedVector _diag) : diag(_diag) { }
|
|
78
|
+
|
|
79
|
+
virtual xbool IsSymmetric() const { return true; }
|
|
80
|
+
|
|
81
|
+
virtual void Mult (const BaseVector & x, BaseVector & y) const;
|
|
82
|
+
virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const;
|
|
83
|
+
|
|
84
|
+
virtual int VHeight() const { return diag.Size(); }
|
|
85
|
+
virtual int VWidth() const { return diag.Size(); }
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
// compatibility between elder ngsolve (template or not)
|
|
90
|
+
typedef decltype (ConstantElementByElementMatrix (5,5,Matrix<>(),
|
|
91
|
+
declval<Table<int>>(), declval<Table<int>>())) T_ConstEBEMatrix;
|
|
92
|
+
|
|
93
|
+
class DevConstantElementByElementMatrix : public DevMatrix
|
|
94
|
+
{
|
|
95
|
+
size_t h, w; // big matrix shape
|
|
96
|
+
|
|
97
|
+
Matrix<Dev<double>> devmat;
|
|
98
|
+
|
|
99
|
+
DevTable<int> rowdnums, coldnums;
|
|
100
|
+
DevDataTable<int> row_coloring, col_coloring;
|
|
101
|
+
|
|
102
|
+
bool disjoint_rows, disjoint_cols;
|
|
103
|
+
size_t numblocks;
|
|
104
|
+
bool output_onto = false;
|
|
105
|
+
bool output_matrix = false;
|
|
106
|
+
bool output_matrix_trans = false;
|
|
107
|
+
|
|
108
|
+
public:
|
|
109
|
+
DevConstantElementByElementMatrix (const T_ConstEBEMatrix & mat);
|
|
110
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
111
|
+
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
112
|
+
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
113
|
+
|
|
114
|
+
int VHeight() const override { return h; }
|
|
115
|
+
int VWidth() const override { return w; }
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class DevBlockDiagonalMatrixSoA : public DevMatrix
|
|
121
|
+
{
|
|
122
|
+
double * dev_data; // Tensor<3> blockdiag;
|
|
123
|
+
int blocks, dimy, dimx;
|
|
124
|
+
Matrix<bool> nonzero;
|
|
125
|
+
Array<Dev<int>> indices, indices_trans;
|
|
126
|
+
DevTable<int> sparse, sparseT;
|
|
127
|
+
public:
|
|
128
|
+
DevBlockDiagonalMatrixSoA (const BlockDiagonalMatrixSoA & mat);
|
|
129
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
130
|
+
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
131
|
+
void MultTrans (const BaseVector & x, BaseVector & y) const override;
|
|
132
|
+
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
133
|
+
int VHeight() const override { return dimy*blocks; }
|
|
134
|
+
int VWidth() const override { return dimx*blocks; }
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class DevEmbeddedMatrix : public EmbeddedMatrix
|
|
140
|
+
{
|
|
141
|
+
public:
|
|
142
|
+
using EmbeddedMatrix::EmbeddedMatrix;
|
|
143
|
+
AutoVector CreateColVector() const override { return make_unique<UnifiedVector>(Height()); }
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
class DevEmbeddedTransposeMatrix : public EmbeddedTransposeMatrix
|
|
147
|
+
{
|
|
148
|
+
public:
|
|
149
|
+
using EmbeddedTransposeMatrix::EmbeddedTransposeMatrix;
|
|
150
|
+
AutoVector CreateRowVector() const override { return make_unique<UnifiedVector>(Width()); }
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class DevProjector : public DevMatrix
|
|
155
|
+
{
|
|
156
|
+
private:
|
|
157
|
+
shared_ptr<DevBitArray> bits;
|
|
158
|
+
bool keep_values;
|
|
159
|
+
public:
|
|
160
|
+
DevProjector (const Projector & proj)
|
|
161
|
+
: bits(make_shared<DevBitArray>(*proj.Mask())),
|
|
162
|
+
keep_values(proj.KeepValues()) { ; }
|
|
163
|
+
|
|
164
|
+
virtual xbool IsSymmetric() const { return true; }
|
|
165
|
+
|
|
166
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
167
|
+
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
168
|
+
|
|
169
|
+
void Project (BaseVector & x) const;
|
|
170
|
+
|
|
171
|
+
virtual int VHeight() const override { return bits->Size(); }
|
|
172
|
+
virtual int VWidth() const override { return bits->Size(); }
|
|
173
|
+
|
|
174
|
+
AutoVector CreateRowVector() const override
|
|
175
|
+
{ throw Exception("CreateRowVector not implemented for DevProjector!"); }
|
|
176
|
+
AutoVector CreateColVector() const override
|
|
177
|
+
{ throw Exception("CreateColVector not implemented for DevProjector!"); }
|
|
178
|
+
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
#endif
|