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,240 @@
|
|
|
1
|
+
#ifndef NGS_CUDA_PROFILER_HPP
|
|
2
|
+
#define NGS_CUDA_PROFILER_HPP
|
|
3
|
+
|
|
4
|
+
#include <algorithm>
|
|
5
|
+
#include <core/profiler.hpp>
|
|
6
|
+
#include "cuda_ngstd.hpp"
|
|
7
|
+
|
|
8
|
+
namespace ngs_cuda
|
|
9
|
+
{
|
|
10
|
+
using ngcore::Array;
|
|
11
|
+
extern int gpu_clock;
|
|
12
|
+
|
|
13
|
+
#ifdef __CUDACC__
|
|
14
|
+
// #define NGS_CUDA_DEVICE_TIMERS
|
|
15
|
+
#ifdef NGS_CUDA_DEVICE_TIMERS
|
|
16
|
+
constexpr int N_MAX_DEVICE_TIMERS = 16;
|
|
17
|
+
struct DevTraceData {
|
|
18
|
+
unsigned long long start[N_MAX_DEVICE_TIMERS];
|
|
19
|
+
unsigned long long stop[N_MAX_DEVICE_TIMERS];
|
|
20
|
+
unsigned short start_smid[N_MAX_DEVICE_TIMERS];
|
|
21
|
+
unsigned short stop_smid[N_MAX_DEVICE_TIMERS];
|
|
22
|
+
union UserData {
|
|
23
|
+
double d;
|
|
24
|
+
float f[2];
|
|
25
|
+
unsigned u[2];
|
|
26
|
+
} data;
|
|
27
|
+
unsigned blockNr;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
struct DevTimerData {
|
|
31
|
+
unsigned long long time[N_MAX_DEVICE_TIMERS];
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
struct DevTraceBlockData {
|
|
35
|
+
unsigned long long start;
|
|
36
|
+
unsigned long long stop;
|
|
37
|
+
unsigned start_smid;
|
|
38
|
+
unsigned stop_smid;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
constexpr int N_MAX_TRACER_OBJECTS = 1024*1024;
|
|
42
|
+
constexpr int N_MAX_BLOCKS = 65*1024;
|
|
43
|
+
extern __device__ DevTimerData d_timer_data[];
|
|
44
|
+
extern __device__ DevTraceData d_trace_data[];
|
|
45
|
+
extern __device__ DevTraceBlockData d_block_data[];
|
|
46
|
+
extern Array<DevTimerData> timer_data;
|
|
47
|
+
extern Array<DevTraceData> trace_data;
|
|
48
|
+
extern Array<DevTraceBlockData> block_data;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
__device__ inline unsigned GetSMID() {
|
|
52
|
+
unsigned ret;
|
|
53
|
+
asm("mov.u32 %0, %smid;" : "=r"(ret) );
|
|
54
|
+
return ret;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
struct DeviceBlockRegionTracer {
|
|
58
|
+
int blockNr, threadNr;
|
|
59
|
+
__device__ DeviceBlockRegionTracer(int nblocks, int blockNr_, int threadNr_)
|
|
60
|
+
: blockNr(blockNr_), threadNr(threadNr_)
|
|
61
|
+
{
|
|
62
|
+
if(threadNr == 0)
|
|
63
|
+
{
|
|
64
|
+
d_block_data[blockNr].start = clock64();
|
|
65
|
+
d_block_data[blockNr].start_smid = GetSMID();
|
|
66
|
+
if(blockNr == 0)
|
|
67
|
+
{
|
|
68
|
+
d_trace_data[N_MAX_TRACER_OBJECTS].blockNr = nblocks;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
__syncwarp();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
__device__ ~DeviceBlockRegionTracer()
|
|
75
|
+
{
|
|
76
|
+
d_block_data[blockNr].stop = clock64();
|
|
77
|
+
d_block_data[blockNr].stop_smid = GetSMID();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
struct DeviceRegionTimer
|
|
82
|
+
{
|
|
83
|
+
int timer_nr, id;
|
|
84
|
+
|
|
85
|
+
__device__ DeviceRegionTimer( int timer_nr_, int id_=-1)
|
|
86
|
+
: timer_nr(timer_nr_), id(id_ == -1 ? blockIdx.x : id_)
|
|
87
|
+
{
|
|
88
|
+
if(threadIdx.x ==0)
|
|
89
|
+
atomicAdd(&d_timer_data[id].time[timer_nr], -clock64());
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
__device__ ~DeviceRegionTimer()
|
|
93
|
+
{
|
|
94
|
+
if(threadIdx.x ==0)
|
|
95
|
+
atomicAdd(&d_timer_data[id].time[timer_nr], clock64());
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
struct DeviceRegionTracer
|
|
101
|
+
{
|
|
102
|
+
int timer_nr, id;
|
|
103
|
+
bool active;
|
|
104
|
+
DevTraceData::UserData & data;
|
|
105
|
+
|
|
106
|
+
__device__ DeviceRegionTracer( const DeviceBlockRegionTracer & tr, int timer_nr_, int id_)
|
|
107
|
+
: active(tr.threadNr == 0), timer_nr(timer_nr_), id(id_), data(d_trace_data[id_].data)
|
|
108
|
+
{
|
|
109
|
+
if(active)
|
|
110
|
+
{
|
|
111
|
+
d_trace_data[id].start[timer_nr] = clock64();
|
|
112
|
+
d_trace_data[id].start_smid[timer_nr] = GetSMID();
|
|
113
|
+
d_trace_data[id].blockNr = tr.blockNr;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
__device__ ~DeviceRegionTracer()
|
|
118
|
+
{
|
|
119
|
+
if(active)
|
|
120
|
+
{
|
|
121
|
+
d_trace_data[id].stop[timer_nr] = clock64();
|
|
122
|
+
d_trace_data[id].stop_smid[timer_nr] = GetSMID();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
};
|
|
127
|
+
#else
|
|
128
|
+
struct DeviceBlockRegionTracer
|
|
129
|
+
{
|
|
130
|
+
__device__ DeviceBlockRegionTracer( int , int, int ) {}
|
|
131
|
+
};
|
|
132
|
+
struct DeviceRegionTimer
|
|
133
|
+
{
|
|
134
|
+
__device__ DeviceRegionTimer( int , int ) {}
|
|
135
|
+
};
|
|
136
|
+
struct DeviceRegionTracer
|
|
137
|
+
{
|
|
138
|
+
// __device__ DeviceRegionTracer( bool active_, int timer_nr_, int id_) {}
|
|
139
|
+
__device__ DeviceRegionTracer( const DeviceBlockRegionTracer & tr, int timer_nr_, int id_) { }
|
|
140
|
+
};
|
|
141
|
+
#endif // NGS_CUDA_DEVICE_TIMERS
|
|
142
|
+
|
|
143
|
+
#endif // __CUDACC__
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
namespace detail {
|
|
147
|
+
struct GPUTimerUserData
|
|
148
|
+
{
|
|
149
|
+
int timernr;
|
|
150
|
+
bool is_start;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// encode UserData directly in void* pointer (8 bytes available)
|
|
154
|
+
inline void * EncodeCallbackData( bool start, int nr )
|
|
155
|
+
{
|
|
156
|
+
static_assert(sizeof(GPUTimerUserData) <= sizeof(void*), "cannot encode UserData in void*");
|
|
157
|
+
GPUTimerUserData data{nr, start};
|
|
158
|
+
return *reinterpret_cast<void**>(&data);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
inline void CUDART_CB Callback(cudaStream_t stream, cudaError_t status, void *userData)
|
|
162
|
+
{
|
|
163
|
+
const GPUTimerUserData & ud = *reinterpret_cast<GPUTimerUserData*>(&userData);
|
|
164
|
+
if(!ngcore::trace) return;
|
|
165
|
+
if(ud.is_start)
|
|
166
|
+
ngcore::trace->StartGPU(ud.timernr);
|
|
167
|
+
else
|
|
168
|
+
ngcore::trace->StopGPU(ud.timernr);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
inline void CUDART_CB CallbackKernelStart(cudaStream_t stream, cudaError_t status, void *userData)
|
|
172
|
+
{
|
|
173
|
+
ngcore::TTimePoint & t = *reinterpret_cast<ngcore::TTimePoint*>(userData);
|
|
174
|
+
t = ngcore::GetTimeCounter();
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
inline void StartGPUTimer(int nr) {
|
|
178
|
+
cudaStreamAddCallback(0, Callback, EncodeCallbackData(true, nr), 0);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
inline void StopGPUTimer(int nr) {
|
|
182
|
+
cudaStreamAddCallback(0, Callback, EncodeCallbackData(false, nr), 0);
|
|
183
|
+
}
|
|
184
|
+
} // namspace detail
|
|
185
|
+
|
|
186
|
+
class CudaRegionTimer
|
|
187
|
+
{
|
|
188
|
+
const ngcore::Timer<> & timer;
|
|
189
|
+
bool is_already_stopped = false;
|
|
190
|
+
ngcore::TTimePoint t_kernel_start;
|
|
191
|
+
|
|
192
|
+
static bool is_cuda_timer_enabled;
|
|
193
|
+
|
|
194
|
+
public:
|
|
195
|
+
CudaRegionTimer (ngcore::Timer<> & atimer) : timer(atimer) {
|
|
196
|
+
timer.Start();
|
|
197
|
+
if(is_cuda_timer_enabled)
|
|
198
|
+
detail::StartGPUTimer(timer);
|
|
199
|
+
#ifdef NGS_CUDA_DEVICE_TIMERS
|
|
200
|
+
cudaStreamAddCallback(0, detail::CallbackKernelStart, &t_kernel_start, 0);
|
|
201
|
+
#endif // NGS_CUDA_DEVICE_TIMERS
|
|
202
|
+
}
|
|
203
|
+
~CudaRegionTimer ()
|
|
204
|
+
{
|
|
205
|
+
if(!is_already_stopped)
|
|
206
|
+
Stop();
|
|
207
|
+
}
|
|
208
|
+
CudaRegionTimer() = delete;
|
|
209
|
+
CudaRegionTimer(const CudaRegionTimer &) = delete;
|
|
210
|
+
CudaRegionTimer(CudaRegionTimer &&) = delete;
|
|
211
|
+
void operator=(const CudaRegionTimer &) = delete;
|
|
212
|
+
void operator=(CudaRegionTimer &&) = delete;
|
|
213
|
+
|
|
214
|
+
void Stop() {
|
|
215
|
+
if(is_cuda_timer_enabled)
|
|
216
|
+
detail::StopGPUTimer(timer);
|
|
217
|
+
#ifdef NGS_CUDA_DEVICE_TIMERS
|
|
218
|
+
ProcessTracingData();
|
|
219
|
+
#endif // NGS_CUDA_DEVICE_TIMERS
|
|
220
|
+
timer.Stop();
|
|
221
|
+
is_already_stopped = true;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
void ProcessTracingData();
|
|
225
|
+
|
|
226
|
+
ngcore::TTimePoint TimeD2H( long long ticks )
|
|
227
|
+
{
|
|
228
|
+
double t_seconds = 1.0*ticks/gpu_clock + 1e-6; // add 1us for kernel startup
|
|
229
|
+
return t_kernel_start + t_seconds / ngcore::seconds_per_tick;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
static void SetCudaTimer(bool enabled){
|
|
233
|
+
is_cuda_timer_enabled = enabled;
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
void TimeProfiler();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
#endif // NGS_CUDA_PROFILER_HPP
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
#ifndef FILE_NGS_DIAGONALMATRIX
|
|
2
|
+
#define FILE_NGS_DIAGONALMATRIX
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
#include "basematrix.hpp"
|
|
7
|
+
#include "vvector.hpp"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
namespace ngla
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
class NGS_DLL_HEADER Projector : public BaseMatrix
|
|
14
|
+
{
|
|
15
|
+
shared_ptr<BitArray> bits;
|
|
16
|
+
bool keep_values;
|
|
17
|
+
public:
|
|
18
|
+
// projector on true / false bits
|
|
19
|
+
Projector (shared_ptr<BitArray> abits, bool akeep_values = true)
|
|
20
|
+
: bits(abits), keep_values(akeep_values) { ; }
|
|
21
|
+
|
|
22
|
+
virtual bool IsComplex() const override { return false; }
|
|
23
|
+
|
|
24
|
+
virtual int VHeight() const override { return bits->Size(); }
|
|
25
|
+
virtual int VWidth() const override { return bits->Size(); }
|
|
26
|
+
|
|
27
|
+
virtual void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
28
|
+
virtual void MultTrans (const BaseVector & x, BaseVector & y) const override;
|
|
29
|
+
virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
30
|
+
virtual void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
31
|
+
virtual void Project (BaseVector & x) const;
|
|
32
|
+
virtual void SetValues (BaseVector & x, double val) const;
|
|
33
|
+
|
|
34
|
+
bool KeepValues() const { return keep_values; }
|
|
35
|
+
shared_ptr<BitArray> Mask() const { return bits; }
|
|
36
|
+
|
|
37
|
+
virtual shared_ptr<BaseSparseMatrix> CreateSparseMatrix() const override;
|
|
38
|
+
|
|
39
|
+
AutoVector CreateRowVector() const override
|
|
40
|
+
{ throw Exception("CreateRowVector not implemented for Projector!"); }
|
|
41
|
+
AutoVector CreateColVector() const override
|
|
42
|
+
{ throw Exception("CreateColVector not implemented for Projector!"); }
|
|
43
|
+
|
|
44
|
+
AutoVector Evaluate(BaseVector & v) const override
|
|
45
|
+
{
|
|
46
|
+
auto res = v.CreateVector();
|
|
47
|
+
Mult (v, res);
|
|
48
|
+
return res;
|
|
49
|
+
}
|
|
50
|
+
AutoVector EvaluateTrans(BaseVector & v) const override
|
|
51
|
+
{
|
|
52
|
+
return this->Evaluate(v);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
template <typename TM=double>
|
|
59
|
+
class NGS_DLL_HEADER DiagonalMatrix : public BaseMatrix
|
|
60
|
+
{
|
|
61
|
+
shared_ptr<VVector<TM>> diag;
|
|
62
|
+
public:
|
|
63
|
+
// typedef typename mat_traits<TM>::TV_ROW TV_ROW;
|
|
64
|
+
// typedef typename mat_traits<TM>::TV_COL TV_COL;
|
|
65
|
+
typedef typename mat_traits<TM>::TSCAL TSCAL;
|
|
66
|
+
|
|
67
|
+
DiagonalMatrix(size_t h)
|
|
68
|
+
: diag(make_shared<VVector<TM>>(h)) { }
|
|
69
|
+
DiagonalMatrix(const VVector<TM> & diag_);
|
|
70
|
+
DiagonalMatrix(shared_ptr<VVector<TM>> diag_);
|
|
71
|
+
virtual ~DiagonalMatrix();
|
|
72
|
+
|
|
73
|
+
bool IsComplex() const override { return false; }
|
|
74
|
+
TM & operator() (size_t i) { return (*diag)(i); }
|
|
75
|
+
const TM & operator() (size_t i) const { return (*diag)(i); }
|
|
76
|
+
int VHeight() const override { return diag->Size(); }
|
|
77
|
+
int VWidth() const override { return diag->Size(); }
|
|
78
|
+
|
|
79
|
+
BaseVector & AsVector() override { return *diag; }
|
|
80
|
+
const BaseVector & AsVector() const override { return *diag; }
|
|
81
|
+
ostream & Print (ostream & ost) const override;
|
|
82
|
+
|
|
83
|
+
virtual shared_ptr<BaseSparseMatrix> CreateSparseMatrix() const override;
|
|
84
|
+
|
|
85
|
+
AutoVector CreateRowVector () const override;
|
|
86
|
+
AutoVector CreateColVector () const override;
|
|
87
|
+
|
|
88
|
+
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
89
|
+
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
90
|
+
|
|
91
|
+
shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
template <typename TM=double>
|
|
96
|
+
class BlockDiagonalMatrix : public BaseMatrix
|
|
97
|
+
{
|
|
98
|
+
Tensor<3,TM> blockdiag;
|
|
99
|
+
int blocks, dimy, dimx;
|
|
100
|
+
public:
|
|
101
|
+
// typedef double TSCAL;
|
|
102
|
+
|
|
103
|
+
BlockDiagonalMatrix(Tensor<3,TM> _blockdiag);
|
|
104
|
+
bool IsComplex() const override { return ngbla::IsComplex<TM>(); }
|
|
105
|
+
|
|
106
|
+
int VHeight() const override { return blocks*dimy; }
|
|
107
|
+
int VWidth() const override { return blocks*dimx; }
|
|
108
|
+
|
|
109
|
+
ostream & Print (ostream & ost) const override;
|
|
110
|
+
|
|
111
|
+
AutoVector CreateRowVector () const override;
|
|
112
|
+
AutoVector CreateColVector () const override;
|
|
113
|
+
|
|
114
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
115
|
+
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
116
|
+
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
117
|
+
|
|
118
|
+
shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// blocks is inner-most dimension of tensor and vectors
|
|
122
|
+
class BlockDiagonalMatrixSoA : public BaseMatrix
|
|
123
|
+
{
|
|
124
|
+
Tensor<3> blockdiag;
|
|
125
|
+
int blocks, dimy, dimx;
|
|
126
|
+
Matrix<bool> nonzero;
|
|
127
|
+
Table<int> sparse, sparseT; // sparse non-zero pattern
|
|
128
|
+
public:
|
|
129
|
+
typedef double TSCAL;
|
|
130
|
+
|
|
131
|
+
BlockDiagonalMatrixSoA(Tensor<3> _blockdiag);
|
|
132
|
+
bool IsComplex() const override { return false; }
|
|
133
|
+
|
|
134
|
+
int VHeight() const override { return blocks*dimy; }
|
|
135
|
+
int VWidth() const override { return blocks*dimx; }
|
|
136
|
+
|
|
137
|
+
ostream & Print (ostream & ost) const override;
|
|
138
|
+
virtual BaseMatrix::OperatorInfo GetOperatorInfo () const override;
|
|
139
|
+
|
|
140
|
+
AutoVector CreateRowVector () const override;
|
|
141
|
+
AutoVector CreateColVector () const override;
|
|
142
|
+
|
|
143
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
144
|
+
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
145
|
+
void MultTrans (const BaseVector & x, BaseVector & y) const override;
|
|
146
|
+
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
147
|
+
// shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
|
|
148
|
+
|
|
149
|
+
FlatTensor<3> GetBlockDiag () const { return blockdiag; }
|
|
150
|
+
FlatMatrix<bool> GetNonZeroPattern() const { return nonzero; }
|
|
151
|
+
FlatTable<int> GetSparseMatrix() const { return sparse; }
|
|
152
|
+
FlatTable<int> GetSparseMatrixTrans() const { return sparseT; }
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
#endif
|
|
160
|
+
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
#ifndef FILE_DIFFERENTIALOPERATOR
|
|
2
|
+
#define FILE_DIFFERENTIALOPERATOR
|
|
3
|
+
|
|
4
|
+
/*********************************************************************/
|
|
5
|
+
/* File: differentialoperator.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 24. Nov. 2009 */
|
|
8
|
+
/*********************************************************************/
|
|
9
|
+
|
|
10
|
+
#include "finiteelement.hpp"
|
|
11
|
+
#include "intrule.hpp"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
namespace ngfem
|
|
15
|
+
{
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
Differential Operator.
|
|
19
|
+
Base-class for run-time polymorphismus.
|
|
20
|
+
Provides application and transpose-application
|
|
21
|
+
*/
|
|
22
|
+
class DifferentialOperator
|
|
23
|
+
{
|
|
24
|
+
private:
|
|
25
|
+
int dim;
|
|
26
|
+
int blockdim;
|
|
27
|
+
Array<int> dimensions;
|
|
28
|
+
|
|
29
|
+
int vsdim; // symmetric 3x3 matrix has dim=9, but vector-space dim=6
|
|
30
|
+
optional<Matrix<>> vsembedding;
|
|
31
|
+
protected:
|
|
32
|
+
VorB vb;
|
|
33
|
+
int difforder;
|
|
34
|
+
public:
|
|
35
|
+
/*
|
|
36
|
+
[[deprecated("Use DifferentialOperator(int,int,VorB,int) instead")]]
|
|
37
|
+
NGS_DLL_HEADER DifferentialOperator(int adim, int ablockdim, bool boundary, int adifforder)
|
|
38
|
+
: dim(adim), blockdim(ablockdim), vb(boundary ? BND : VOL), difforder(adifforder)
|
|
39
|
+
{
|
|
40
|
+
if (blockdim == 1)
|
|
41
|
+
dimensions = Array<int> ( { dim } );
|
|
42
|
+
else
|
|
43
|
+
dimensions = Array<int> ( { dim/blockdim, blockdim });
|
|
44
|
+
}
|
|
45
|
+
*/
|
|
46
|
+
NGS_DLL_HEADER DifferentialOperator(int adim, int ablockdim, VorB avb, int adifforder)
|
|
47
|
+
: dim(adim), blockdim(ablockdim), vb(avb), difforder(adifforder)
|
|
48
|
+
{
|
|
49
|
+
if (blockdim == 1)
|
|
50
|
+
dimensions = Array<int> ( { dim } );
|
|
51
|
+
else if (dim == 1)
|
|
52
|
+
dimensions = Array<int> ( { blockdim } );
|
|
53
|
+
else
|
|
54
|
+
dimensions = Array<int> ( { dim/blockdim, blockdim });
|
|
55
|
+
|
|
56
|
+
vsdim = dim;
|
|
57
|
+
}
|
|
58
|
+
/// destructor
|
|
59
|
+
NGS_DLL_HEADER virtual ~DifferentialOperator () = default;
|
|
60
|
+
|
|
61
|
+
virtual void DoArchive(Archive & ar) { ; }
|
|
62
|
+
|
|
63
|
+
void SetDimensions (const Array<int> & adims) { dimensions = adims; }
|
|
64
|
+
void SetVectorSpaceEmbedding (Matrix <> emb)
|
|
65
|
+
{ vsembedding = emb; vsdim = emb.Width(); }
|
|
66
|
+
optional<FlatMatrix<>> GetVSEmbedding() const { return vsembedding; }
|
|
67
|
+
|
|
68
|
+
///
|
|
69
|
+
NGS_DLL_HEADER virtual string Name() const; // { return typeid(*this).name(); }
|
|
70
|
+
/// dimension of range
|
|
71
|
+
int Dim() const { return dim; }
|
|
72
|
+
int VSDim() const { return vsdim; }
|
|
73
|
+
const Array<int> & Dimensions() const { return dimensions; }
|
|
74
|
+
/// number of copies of finite element by BlockDifferentialOperator
|
|
75
|
+
int BlockDim() const { return blockdim; }
|
|
76
|
+
/// does it live on the boundary ?
|
|
77
|
+
bool Boundary() const { return vb == BND; }
|
|
78
|
+
VorB VB() const { return vb; }
|
|
79
|
+
|
|
80
|
+
virtual bool SupportsVB (VorB checkvb) const { return checkvb == vb; }
|
|
81
|
+
virtual shared_ptr<DifferentialOperator> GetTrace() const
|
|
82
|
+
{
|
|
83
|
+
return nullptr;
|
|
84
|
+
// throw Exception("GetTrace not overloaded for DifferentialOperator"+string(typeid(*this).name()));
|
|
85
|
+
}
|
|
86
|
+
/// total polynomial degree is reduced by this order (i.e. minimal difforder)
|
|
87
|
+
int DiffOrder() const { return difforder; }
|
|
88
|
+
|
|
89
|
+
virtual IntRange UsedDofs(const FiniteElement & fel) const { return IntRange(0, fel.GetNDof()); }
|
|
90
|
+
|
|
91
|
+
virtual bool operator== (const DifferentialOperator & diffop2) const { return false; }
|
|
92
|
+
|
|
93
|
+
/// calculates the matrix
|
|
94
|
+
NGS_DLL_HEADER virtual void
|
|
95
|
+
CalcMatrix (const FiniteElement & fel,
|
|
96
|
+
const BaseMappedIntegrationPoint & mip,
|
|
97
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
98
|
+
LocalHeap & lh) const;
|
|
99
|
+
|
|
100
|
+
NGS_DLL_HEADER virtual void
|
|
101
|
+
CalcMatrix (const FiniteElement & bfel,
|
|
102
|
+
const BaseMappedIntegrationPoint & bmip,
|
|
103
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
104
|
+
LocalHeap & lh) const;
|
|
105
|
+
|
|
106
|
+
NGS_DLL_HEADER virtual void
|
|
107
|
+
CalcMatrix (const FiniteElement & fel,
|
|
108
|
+
const BaseMappedIntegrationRule & mir,
|
|
109
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
110
|
+
LocalHeap & lh) const;
|
|
111
|
+
|
|
112
|
+
NGS_DLL_HEADER virtual void
|
|
113
|
+
CalcMatrix (const FiniteElement & fel,
|
|
114
|
+
const BaseMappedIntegrationRule & mir,
|
|
115
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
116
|
+
LocalHeap & lh) const;
|
|
117
|
+
|
|
118
|
+
NGS_DLL_HEADER virtual void
|
|
119
|
+
CalcMatrix (const FiniteElement & fel,
|
|
120
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
121
|
+
BareSliceMatrix<SIMD<double>> mat) const;
|
|
122
|
+
|
|
123
|
+
NGS_DLL_HEADER virtual void
|
|
124
|
+
CalcMatrix (const FiniteElement & fel,
|
|
125
|
+
const SIMD_BaseMappedIntegrationRule & mir,
|
|
126
|
+
BareSliceMatrix<SIMD<Complex>> mat) const;
|
|
127
|
+
|
|
128
|
+
/// Bmat = vs-embedding * BmatVS (if vs-embedding is set)
|
|
129
|
+
NGS_DLL_HEADER virtual void
|
|
130
|
+
CalcMatrixVS (const FiniteElement & fel,
|
|
131
|
+
const BaseMappedIntegrationPoint & mip,
|
|
132
|
+
SliceMatrix<double,ColMajor> mat,
|
|
133
|
+
LocalHeap & lh) const;
|
|
134
|
+
|
|
135
|
+
NGS_DLL_HEADER virtual void
|
|
136
|
+
CalcLinearizedMatrix (const FiniteElement & fel,
|
|
137
|
+
const BaseMappedIntegrationRule & mir,
|
|
138
|
+
BareSliceVector<double> x,
|
|
139
|
+
SliceMatrix<double,ColMajor> mat,
|
|
140
|
+
LocalHeap & lh) const;
|
|
141
|
+
|
|
142
|
+
NGS_DLL_HEADER virtual bool IsNonlinear() const { return false; }
|
|
143
|
+
|
|
144
|
+
// second derivative of \sum_ipt wprime * B(u)
|
|
145
|
+
NGS_DLL_HEADER virtual void
|
|
146
|
+
CalcHessianAdd (const FiniteElement & fel,
|
|
147
|
+
const BaseMappedIntegrationRule & mir,
|
|
148
|
+
SliceMatrix<> wprime,
|
|
149
|
+
BareSliceVector<> elvecu,
|
|
150
|
+
SliceMatrix<> hessian,
|
|
151
|
+
LocalHeap & lh) const { ; }
|
|
152
|
+
|
|
153
|
+
NGS_DLL_HEADER virtual void
|
|
154
|
+
Apply (const FiniteElement & fel,
|
|
155
|
+
const BaseMappedIntegrationPoint & mip,
|
|
156
|
+
BareSliceVector<double> x,
|
|
157
|
+
FlatVector<double> flux,
|
|
158
|
+
LocalHeap & lh) const;
|
|
159
|
+
|
|
160
|
+
NGS_DLL_HEADER virtual void
|
|
161
|
+
Apply (const FiniteElement & fel,
|
|
162
|
+
const BaseMappedIntegrationPoint & mip,
|
|
163
|
+
BareSliceVector<Complex> x,
|
|
164
|
+
FlatVector<Complex> flux,
|
|
165
|
+
LocalHeap & lh) const;
|
|
166
|
+
|
|
167
|
+
NGS_DLL_HEADER virtual void
|
|
168
|
+
Apply (const FiniteElement & fel,
|
|
169
|
+
const BaseMappedIntegrationRule & mir,
|
|
170
|
+
BareSliceVector<double> x,
|
|
171
|
+
BareSliceMatrix<double> flux,
|
|
172
|
+
LocalHeap & lh) const;
|
|
173
|
+
|
|
174
|
+
NGS_DLL_HEADER virtual void
|
|
175
|
+
Apply (const FiniteElement & fel,
|
|
176
|
+
const BaseMappedIntegrationRule & mir,
|
|
177
|
+
BareSliceVector<Complex> x,
|
|
178
|
+
BareSliceMatrix<Complex> flux,
|
|
179
|
+
LocalHeap & lh) const;
|
|
180
|
+
|
|
181
|
+
NGS_DLL_HEADER virtual void
|
|
182
|
+
Apply (const FiniteElement & bfel,
|
|
183
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
184
|
+
BareSliceVector<double> x,
|
|
185
|
+
BareSliceMatrix<SIMD<double>> flux) const;
|
|
186
|
+
|
|
187
|
+
NGS_DLL_HEADER virtual void
|
|
188
|
+
Apply (const FiniteElement & bfel,
|
|
189
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
190
|
+
BareSliceVector<Complex> x,
|
|
191
|
+
BareSliceMatrix<SIMD<Complex>> flux) const;
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
NGS_DLL_HEADER virtual void
|
|
195
|
+
ApplyTrans (const FiniteElement & fel,
|
|
196
|
+
const BaseMappedIntegrationPoint & mip,
|
|
197
|
+
FlatVector<double> flux,
|
|
198
|
+
BareSliceVector<double> x,
|
|
199
|
+
LocalHeap & lh) const;
|
|
200
|
+
|
|
201
|
+
NGS_DLL_HEADER virtual void
|
|
202
|
+
ApplyTrans (const FiniteElement & fel,
|
|
203
|
+
const BaseMappedIntegrationPoint & mip,
|
|
204
|
+
FlatVector<Complex> flux,
|
|
205
|
+
BareSliceVector<Complex> x,
|
|
206
|
+
LocalHeap & lh) const;
|
|
207
|
+
|
|
208
|
+
NGS_DLL_HEADER virtual void
|
|
209
|
+
ApplyTrans (const FiniteElement & fel,
|
|
210
|
+
const BaseMappedIntegrationRule & mir,
|
|
211
|
+
FlatMatrix<double> flux,
|
|
212
|
+
BareSliceVector<double> x,
|
|
213
|
+
LocalHeap & lh) const;
|
|
214
|
+
|
|
215
|
+
NGS_DLL_HEADER virtual void
|
|
216
|
+
ApplyTrans (const FiniteElement & fel,
|
|
217
|
+
const BaseMappedIntegrationRule & mir,
|
|
218
|
+
FlatMatrix<Complex> flux,
|
|
219
|
+
BareSliceVector<Complex> x,
|
|
220
|
+
LocalHeap & lh) const;
|
|
221
|
+
|
|
222
|
+
NGS_DLL_HEADER virtual void
|
|
223
|
+
AddTrans (const FiniteElement & bfel,
|
|
224
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
225
|
+
BareSliceMatrix<SIMD<double>> flux,
|
|
226
|
+
BareSliceVector<double> x) const;
|
|
227
|
+
|
|
228
|
+
NGS_DLL_HEADER virtual void
|
|
229
|
+
AddTrans (const FiniteElement & bfel,
|
|
230
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
231
|
+
BareSliceMatrix<SIMD<Complex>> flux,
|
|
232
|
+
BareSliceVector<Complex> x) const;
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
NGS_DLL_HEADER virtual void
|
|
236
|
+
ApplyLinearizedTrans (const FiniteElement & fel,
|
|
237
|
+
const BaseMappedIntegrationRule & mir,
|
|
238
|
+
SliceVector<double> elveclin,
|
|
239
|
+
FlatMatrix<double> flux,
|
|
240
|
+
BareSliceVector<double> x,
|
|
241
|
+
LocalHeap & lh) const
|
|
242
|
+
{
|
|
243
|
+
ApplyTrans (fel, mir, flux, x, lh);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
/// calculates matrix on reference element
|
|
248
|
+
|
|
249
|
+
// dimension on refelement (e.g. 2 for surface gradient)
|
|
250
|
+
NGS_DLL_HEADER virtual int DimRef() const;
|
|
251
|
+
|
|
252
|
+
NGS_DLL_HEADER virtual void
|
|
253
|
+
CalcMatrix (const FiniteElement & fel,
|
|
254
|
+
const IntegrationPoint & ip,
|
|
255
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
256
|
+
LocalHeap & lh) const;
|
|
257
|
+
|
|
258
|
+
NGS_DLL_HEADER virtual void
|
|
259
|
+
CalcTransformationMatrix (const BaseMappedIntegrationPoint & mip,
|
|
260
|
+
SliceMatrix<double> trans,
|
|
261
|
+
LocalHeap & lh) const;
|
|
262
|
+
|
|
263
|
+
NGS_DLL_HEADER virtual shared_ptr<CoefficientFunction> DiffShape (shared_ptr<CoefficientFunction> proxy,
|
|
264
|
+
shared_ptr<CoefficientFunction> dir,
|
|
265
|
+
bool Eulerian = false) const;
|
|
266
|
+
|
|
267
|
+
NGS_DLL_HEADER virtual list<tuple<string,double>> Timing (const FiniteElement & fel, const BaseMappedIntegrationRule & mir) const;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
#endif
|