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,461 @@
|
|
|
1
|
+
#ifndef TPDIFFOP_HPP
|
|
2
|
+
#define TPDIFFOP_HPP
|
|
3
|
+
|
|
4
|
+
#include "diffop.hpp"
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
namespace ngfem
|
|
8
|
+
{
|
|
9
|
+
class TPDifferentialOperator : public DifferentialOperator
|
|
10
|
+
{
|
|
11
|
+
ArrayMem<shared_ptr<DifferentialOperator>,2> evaluators;
|
|
12
|
+
public:
|
|
13
|
+
NGS_DLL_HEADER TPDifferentialOperator() : DifferentialOperator(1,1,VOL,1) { ; }
|
|
14
|
+
NGS_DLL_HEADER TPDifferentialOperator(FlatArray<shared_ptr<DifferentialOperator> > aevaluators,int adim,int ablockdim,bool abnd,int adifforder) : DifferentialOperator(adim,ablockdim,abnd ? BND : VOL,adifforder)
|
|
15
|
+
{
|
|
16
|
+
evaluators.SetSize( aevaluators.Size() );
|
|
17
|
+
evaluators = aevaluators;
|
|
18
|
+
}
|
|
19
|
+
/// destructor
|
|
20
|
+
NGS_DLL_HEADER virtual ~TPDifferentialOperator () {}
|
|
21
|
+
|
|
22
|
+
virtual shared_ptr<DifferentialOperator> GetTrace() const override { return nullptr; }
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
virtual IntRange UsedDofs(const FiniteElement & fel) const override { return IntRange(0, fel.GetNDof()); }
|
|
26
|
+
|
|
27
|
+
virtual bool operator== (const TPDifferentialOperator & diffop2) const { return false; }
|
|
28
|
+
virtual bool operator== (const DifferentialOperator & diffop2) const override { return false; }
|
|
29
|
+
|
|
30
|
+
shared_ptr<DifferentialOperator> & GetEvaluators( int num)
|
|
31
|
+
{
|
|
32
|
+
return evaluators[num];
|
|
33
|
+
}
|
|
34
|
+
using DifferentialOperator::Apply;
|
|
35
|
+
NGS_DLL_HEADER virtual void
|
|
36
|
+
Apply (const FiniteElement & fel,
|
|
37
|
+
const BaseMappedIntegrationRule & mir,
|
|
38
|
+
BareSliceVector<double> x,
|
|
39
|
+
BareSliceMatrix<double> flux,
|
|
40
|
+
LocalHeap & lh) const override;
|
|
41
|
+
|
|
42
|
+
NGS_DLL_HEADER virtual void
|
|
43
|
+
ApplyTrans (const FiniteElement & fel,
|
|
44
|
+
const BaseMappedIntegrationRule & mir,
|
|
45
|
+
FlatMatrix<double> flux,
|
|
46
|
+
BareSliceVector<double> x,
|
|
47
|
+
LocalHeap & lh) const override;
|
|
48
|
+
|
|
49
|
+
NGS_DLL_HEADER virtual void
|
|
50
|
+
ApplyY(const FiniteElement &fel,
|
|
51
|
+
const BaseMappedIntegrationRule & miry,
|
|
52
|
+
FlatMatrix<double> flux,
|
|
53
|
+
SliceMatrix<double> x,
|
|
54
|
+
LocalHeap & lh) const;
|
|
55
|
+
|
|
56
|
+
NGS_DLL_HEADER virtual void
|
|
57
|
+
ApplyYTrans(const FiniteElement &fel,
|
|
58
|
+
const BaseMappedIntegrationRule & miry,
|
|
59
|
+
FlatMatrix<double> flux,
|
|
60
|
+
SliceMatrix<double> x,
|
|
61
|
+
LocalHeap & lh) const;
|
|
62
|
+
|
|
63
|
+
NGS_DLL_HEADER virtual void
|
|
64
|
+
ApplyX(const FiniteElement &fel,
|
|
65
|
+
const BaseMappedIntegrationRule & mirx,
|
|
66
|
+
FlatMatrix<double> flux,
|
|
67
|
+
SliceMatrix<double> x,
|
|
68
|
+
LocalHeap & lh) const;
|
|
69
|
+
|
|
70
|
+
NGS_DLL_HEADER virtual void
|
|
71
|
+
ApplyXTrans(const FiniteElement &fel,
|
|
72
|
+
const BaseMappedIntegrationRule & mirx,
|
|
73
|
+
FlatMatrix<double> flux,
|
|
74
|
+
SliceMatrix<double> x,
|
|
75
|
+
LocalHeap & lh) const;
|
|
76
|
+
|
|
77
|
+
/// calculates the matrix
|
|
78
|
+
NGS_DLL_HEADER virtual void
|
|
79
|
+
CalcMatrix (const FiniteElement & fel,
|
|
80
|
+
const BaseMappedIntegrationPoint & mip,
|
|
81
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
82
|
+
LocalHeap & lh) const override { throw Exception("2 not implemented"); }
|
|
83
|
+
|
|
84
|
+
NGS_DLL_HEADER virtual void
|
|
85
|
+
CalcMatrix (const FiniteElement & bfel,
|
|
86
|
+
const BaseMappedIntegrationPoint & bmip,
|
|
87
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
88
|
+
LocalHeap & lh) const override{ throw Exception("3 not implemented"); }
|
|
89
|
+
|
|
90
|
+
NGS_DLL_HEADER virtual void
|
|
91
|
+
CalcMatrix (const FiniteElement & fel,
|
|
92
|
+
const BaseMappedIntegrationRule & mir,
|
|
93
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
94
|
+
LocalHeap & lh) const override { throw Exception("4 not implemented"); }
|
|
95
|
+
|
|
96
|
+
NGS_DLL_HEADER virtual void
|
|
97
|
+
CalcMatrix (const FiniteElement & fel,
|
|
98
|
+
const BaseMappedIntegrationRule & mir,
|
|
99
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
100
|
+
LocalHeap & lh) const override { throw Exception("5 not implemented"); }
|
|
101
|
+
|
|
102
|
+
NGS_DLL_HEADER virtual void
|
|
103
|
+
Apply (const FiniteElement & fel,
|
|
104
|
+
const BaseMappedIntegrationPoint & mip,
|
|
105
|
+
BareSliceVector<double> x,
|
|
106
|
+
FlatVector<double> flux,
|
|
107
|
+
LocalHeap & lh) const override { throw Exception("6 not implemented"); }
|
|
108
|
+
|
|
109
|
+
NGS_DLL_HEADER virtual void
|
|
110
|
+
Apply (const FiniteElement & fel,
|
|
111
|
+
const BaseMappedIntegrationPoint & mip,
|
|
112
|
+
BareSliceVector<Complex> x,
|
|
113
|
+
FlatVector<Complex> flux,
|
|
114
|
+
LocalHeap & lh) const override { throw Exception("8 not implemented"); }
|
|
115
|
+
|
|
116
|
+
NGS_DLL_HEADER virtual void
|
|
117
|
+
Apply (const FiniteElement & fel,
|
|
118
|
+
const BaseMappedIntegrationRule & mir,
|
|
119
|
+
BareSliceVector<Complex> x,
|
|
120
|
+
BareSliceMatrix<Complex> flux,
|
|
121
|
+
LocalHeap & lh) const override { throw Exception("9 not implemented"); }
|
|
122
|
+
|
|
123
|
+
NGS_DLL_HEADER virtual void
|
|
124
|
+
Apply (const FiniteElement & bfel,
|
|
125
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
126
|
+
BareSliceVector<double> x,
|
|
127
|
+
BareSliceMatrix<SIMD<double>> flux) const override { throw ExceptionNOSIMD("nosimd"); }
|
|
128
|
+
// LocalHeap & lh) const { throw Exception("not implemented"); }
|
|
129
|
+
|
|
130
|
+
NGS_DLL_HEADER virtual void
|
|
131
|
+
ApplyTrans (const FiniteElement & fel,
|
|
132
|
+
const BaseMappedIntegrationPoint & mip,
|
|
133
|
+
FlatVector<double> flux,
|
|
134
|
+
BareSliceVector<double> x,
|
|
135
|
+
LocalHeap & lh) const override { throw Exception("11 not implemented"); }
|
|
136
|
+
|
|
137
|
+
NGS_DLL_HEADER virtual void
|
|
138
|
+
ApplyTrans (const FiniteElement & fel,
|
|
139
|
+
const BaseMappedIntegrationPoint & mip,
|
|
140
|
+
FlatVector<Complex> flux,
|
|
141
|
+
BareSliceVector<Complex> x,
|
|
142
|
+
LocalHeap & lh) const override { throw Exception("12 not implemented"); }
|
|
143
|
+
|
|
144
|
+
NGS_DLL_HEADER virtual void
|
|
145
|
+
ApplyTrans (const FiniteElement & fel,
|
|
146
|
+
const BaseMappedIntegrationRule & mir,
|
|
147
|
+
FlatMatrix<Complex> flux,
|
|
148
|
+
BareSliceVector<Complex> x,
|
|
149
|
+
LocalHeap & lh) const override { throw Exception("13 not implemented"); }
|
|
150
|
+
|
|
151
|
+
NGS_DLL_HEADER virtual void
|
|
152
|
+
AddTrans (const FiniteElement & bfel,
|
|
153
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
154
|
+
BareSliceMatrix<SIMD<double>> flux,
|
|
155
|
+
BareSliceVector<double> x) const override { throw ExceptionNOSIMD("nosimd"); }
|
|
156
|
+
// LocalHeap & lh) const;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class TPBlockDifferentialOperator : public BlockDifferentialOperator
|
|
161
|
+
{
|
|
162
|
+
//ArrayMem<shared_ptr<DifferentialOperator>,2> evaluators;
|
|
163
|
+
//shared_ptr<DifferentialOperator> diffop;
|
|
164
|
+
//int blockdim;
|
|
165
|
+
public:
|
|
166
|
+
//NGS_DLL_HEADER TPBlockDifferentialOperator() : DifferentialOperator(1,1,VOL,1) { ; }
|
|
167
|
+
NGS_DLL_HEADER TPBlockDifferentialOperator(shared_ptr<DifferentialOperator> adiffop,int ablockdim) : /*diffop(adiffop), blockdim(ablockdim),*/ BlockDifferentialOperator(adiffop,ablockdim)
|
|
168
|
+
{ ; }
|
|
169
|
+
/// destructor
|
|
170
|
+
NGS_DLL_HEADER virtual ~TPBlockDifferentialOperator () {}
|
|
171
|
+
|
|
172
|
+
virtual IntRange UsedDofs(const FiniteElement & fel) const override { return IntRange(0, fel.GetNDof()); }
|
|
173
|
+
|
|
174
|
+
virtual bool operator== (const DifferentialOperator & diffop2) const override { return false; }
|
|
175
|
+
|
|
176
|
+
//int BlockDim() const { return blockdim; }
|
|
177
|
+
|
|
178
|
+
shared_ptr<DifferentialOperator> & GetEvaluators( int num)
|
|
179
|
+
{
|
|
180
|
+
return dynamic_cast<TPDifferentialOperator*>(diffop.get())->GetEvaluators(num);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
NGS_DLL_HEADER virtual void
|
|
184
|
+
Apply (const FiniteElement & fel,
|
|
185
|
+
const BaseMappedIntegrationRule & mir,
|
|
186
|
+
BareSliceVector<double> x,
|
|
187
|
+
BareSliceMatrix<double> flux,
|
|
188
|
+
LocalHeap & lh) const override;
|
|
189
|
+
|
|
190
|
+
NGS_DLL_HEADER virtual void
|
|
191
|
+
ApplyTrans (const FiniteElement & fel,
|
|
192
|
+
const BaseMappedIntegrationRule & mir,
|
|
193
|
+
FlatMatrix<double> flux,
|
|
194
|
+
BareSliceVector<double> x,
|
|
195
|
+
LocalHeap & lh) const override;
|
|
196
|
+
|
|
197
|
+
NGS_DLL_HEADER virtual void
|
|
198
|
+
ApplyY(const FiniteElement &fel,
|
|
199
|
+
const BaseMappedIntegrationRule & miry,
|
|
200
|
+
FlatMatrix<double> flux,
|
|
201
|
+
SliceMatrix<double> x,
|
|
202
|
+
LocalHeap & lh) const;
|
|
203
|
+
|
|
204
|
+
NGS_DLL_HEADER virtual void
|
|
205
|
+
ApplyYTrans(const FiniteElement &fel,
|
|
206
|
+
const BaseMappedIntegrationRule & miry,
|
|
207
|
+
FlatMatrix<double> flux,
|
|
208
|
+
SliceMatrix<double> x,
|
|
209
|
+
LocalHeap & lh) const;
|
|
210
|
+
|
|
211
|
+
NGS_DLL_HEADER virtual void
|
|
212
|
+
ApplyX(const FiniteElement &fel,
|
|
213
|
+
const BaseMappedIntegrationRule & mirx,
|
|
214
|
+
FlatMatrix<double> flux,
|
|
215
|
+
SliceMatrix<double> x,
|
|
216
|
+
LocalHeap & lh) const;
|
|
217
|
+
|
|
218
|
+
NGS_DLL_HEADER virtual void
|
|
219
|
+
ApplyXTrans(const FiniteElement &fel,
|
|
220
|
+
const BaseMappedIntegrationRule & mirx,
|
|
221
|
+
FlatMatrix<double> flux,
|
|
222
|
+
SliceMatrix<double> x,
|
|
223
|
+
LocalHeap & lh) const;
|
|
224
|
+
|
|
225
|
+
/// calculates the matrix
|
|
226
|
+
NGS_DLL_HEADER virtual void
|
|
227
|
+
CalcMatrix (const FiniteElement & fel,
|
|
228
|
+
const BaseMappedIntegrationPoint & mip,
|
|
229
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
230
|
+
LocalHeap & lh) const override { throw Exception("2 not implemented"); }
|
|
231
|
+
|
|
232
|
+
using BlockDifferentialOperator::CalcMatrix;
|
|
233
|
+
NGS_DLL_HEADER virtual void
|
|
234
|
+
CalcMatrix (const FiniteElement & bfel,
|
|
235
|
+
const BaseMappedIntegrationPoint & bmip,
|
|
236
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
237
|
+
LocalHeap & lh) const override { throw Exception("3 not implemented"); }
|
|
238
|
+
|
|
239
|
+
NGS_DLL_HEADER virtual void
|
|
240
|
+
CalcMatrix (const FiniteElement & fel,
|
|
241
|
+
const BaseMappedIntegrationRule & mir,
|
|
242
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
243
|
+
LocalHeap & lh) const override { throw Exception("4 not implemented"); }
|
|
244
|
+
|
|
245
|
+
NGS_DLL_HEADER virtual void
|
|
246
|
+
CalcMatrix (const FiniteElement & fel,
|
|
247
|
+
const BaseMappedIntegrationRule & mir,
|
|
248
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
249
|
+
LocalHeap & lh) const override { throw Exception("5 not implemented"); }
|
|
250
|
+
|
|
251
|
+
NGS_DLL_HEADER virtual void
|
|
252
|
+
Apply (const FiniteElement & fel,
|
|
253
|
+
const BaseMappedIntegrationPoint & mip,
|
|
254
|
+
BareSliceVector<double> x,
|
|
255
|
+
FlatVector<double> flux,
|
|
256
|
+
LocalHeap & lh) const override { throw Exception("6 not implemented"); }
|
|
257
|
+
|
|
258
|
+
NGS_DLL_HEADER virtual void
|
|
259
|
+
Apply (const FiniteElement & fel,
|
|
260
|
+
const BaseMappedIntegrationPoint & mip,
|
|
261
|
+
BareSliceVector<Complex> x,
|
|
262
|
+
FlatVector<Complex> flux,
|
|
263
|
+
LocalHeap & lh) const override { throw Exception("8 not implemented"); }
|
|
264
|
+
|
|
265
|
+
NGS_DLL_HEADER virtual void
|
|
266
|
+
Apply (const FiniteElement & fel,
|
|
267
|
+
const BaseMappedIntegrationRule & mir,
|
|
268
|
+
BareSliceVector<Complex> x,
|
|
269
|
+
BareSliceMatrix<Complex> flux,
|
|
270
|
+
LocalHeap & lh) const override { throw Exception("9 not implemented"); }
|
|
271
|
+
|
|
272
|
+
NGS_DLL_HEADER virtual void
|
|
273
|
+
Apply (const FiniteElement & bfel,
|
|
274
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
275
|
+
BareSliceVector<double> x,
|
|
276
|
+
BareSliceMatrix<SIMD<double>> flux) const override { throw ExceptionNOSIMD("nosimd"); }
|
|
277
|
+
// LocalHeap & lh) const { throw Exception("not implemented"); }
|
|
278
|
+
|
|
279
|
+
NGS_DLL_HEADER virtual void
|
|
280
|
+
ApplyTrans (const FiniteElement & fel,
|
|
281
|
+
const BaseMappedIntegrationPoint & mip,
|
|
282
|
+
FlatVector<double> flux,
|
|
283
|
+
BareSliceVector<double> x,
|
|
284
|
+
LocalHeap & lh) const override { throw Exception("11 not implemented"); }
|
|
285
|
+
|
|
286
|
+
NGS_DLL_HEADER virtual void
|
|
287
|
+
ApplyTrans (const FiniteElement & fel,
|
|
288
|
+
const BaseMappedIntegrationPoint & mip,
|
|
289
|
+
FlatVector<Complex> flux,
|
|
290
|
+
BareSliceVector<Complex> x,
|
|
291
|
+
LocalHeap & lh) const override { throw Exception("12 not implemented"); }
|
|
292
|
+
|
|
293
|
+
NGS_DLL_HEADER virtual void
|
|
294
|
+
ApplyTrans (const FiniteElement & fel,
|
|
295
|
+
const BaseMappedIntegrationRule & mir,
|
|
296
|
+
FlatMatrix<Complex> flux,
|
|
297
|
+
BareSliceVector<Complex> x,
|
|
298
|
+
LocalHeap & lh) const override { throw Exception("13 not implemented"); }
|
|
299
|
+
|
|
300
|
+
NGS_DLL_HEADER virtual void
|
|
301
|
+
AddTrans (const FiniteElement & bfel,
|
|
302
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
303
|
+
BareSliceMatrix<SIMD<double>> flux,
|
|
304
|
+
BareSliceVector<double> x) const override { throw ExceptionNOSIMD("nosimd"); }
|
|
305
|
+
// LocalHeap & lh) const;
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
class TPBlockDifferentialOperator2 : public BlockDifferentialOperator
|
|
314
|
+
{
|
|
315
|
+
//ArrayMem<shared_ptr<DifferentialOperator>,2> evaluators;
|
|
316
|
+
//shared_ptr<DifferentialOperator> diffop;
|
|
317
|
+
//int blockdim;
|
|
318
|
+
public:
|
|
319
|
+
//NGS_DLL_HEADER TPBlockDifferentialOperator() : DifferentialOperator(1,1,VOL,1) { ; }
|
|
320
|
+
NGS_DLL_HEADER TPBlockDifferentialOperator2(shared_ptr<DifferentialOperator> adiffop,int ablockdim) : /*diffop(adiffop), blockdim(ablockdim),*/ BlockDifferentialOperator(adiffop,ablockdim)
|
|
321
|
+
{ ; }
|
|
322
|
+
/// destructor
|
|
323
|
+
NGS_DLL_HEADER virtual ~TPBlockDifferentialOperator2 () {}
|
|
324
|
+
|
|
325
|
+
virtual IntRange UsedDofs(const FiniteElement & fel) const override { return IntRange(0, fel.GetNDof()); }
|
|
326
|
+
|
|
327
|
+
virtual bool operator== (const DifferentialOperator & diffop2) const override { return false; }
|
|
328
|
+
|
|
329
|
+
//int BlockDim() const { return blockdim; }
|
|
330
|
+
|
|
331
|
+
shared_ptr<DifferentialOperator> & GetEvaluators( int num)
|
|
332
|
+
{
|
|
333
|
+
return dynamic_cast<TPDifferentialOperator*>(diffop.get())->GetEvaluators(num);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
NGS_DLL_HEADER virtual void
|
|
337
|
+
Apply (const FiniteElement & fel,
|
|
338
|
+
const BaseMappedIntegrationRule & mir,
|
|
339
|
+
BareSliceVector<double> x,
|
|
340
|
+
BareSliceMatrix<double> flux,
|
|
341
|
+
LocalHeap & lh) const override;
|
|
342
|
+
|
|
343
|
+
NGS_DLL_HEADER virtual void
|
|
344
|
+
ApplyTrans (const FiniteElement & fel,
|
|
345
|
+
const BaseMappedIntegrationRule & mir,
|
|
346
|
+
FlatMatrix<double> flux,
|
|
347
|
+
BareSliceVector<double> x,
|
|
348
|
+
LocalHeap & lh) const override;
|
|
349
|
+
|
|
350
|
+
NGS_DLL_HEADER virtual void
|
|
351
|
+
ApplyY(const FiniteElement &fel,
|
|
352
|
+
const BaseMappedIntegrationRule & miry,
|
|
353
|
+
FlatMatrix<double> flux,
|
|
354
|
+
SliceMatrix<double> x,
|
|
355
|
+
LocalHeap & lh) const;
|
|
356
|
+
|
|
357
|
+
NGS_DLL_HEADER virtual void
|
|
358
|
+
ApplyYTrans(const FiniteElement &fel,
|
|
359
|
+
const BaseMappedIntegrationRule & miry,
|
|
360
|
+
FlatMatrix<double> flux,
|
|
361
|
+
SliceMatrix<double> x,
|
|
362
|
+
LocalHeap & lh) const;
|
|
363
|
+
|
|
364
|
+
NGS_DLL_HEADER virtual void
|
|
365
|
+
ApplyX(const FiniteElement &fel,
|
|
366
|
+
const BaseMappedIntegrationRule & mirx,
|
|
367
|
+
FlatMatrix<double> flux,
|
|
368
|
+
SliceMatrix<double> x,
|
|
369
|
+
LocalHeap & lh) const;
|
|
370
|
+
|
|
371
|
+
NGS_DLL_HEADER virtual void
|
|
372
|
+
ApplyXTrans(const FiniteElement &fel,
|
|
373
|
+
const BaseMappedIntegrationRule & mirx,
|
|
374
|
+
FlatMatrix<double> flux,
|
|
375
|
+
SliceMatrix<double> x,
|
|
376
|
+
LocalHeap & lh) const;
|
|
377
|
+
|
|
378
|
+
/// calculates the matrix
|
|
379
|
+
using BlockDifferentialOperator::CalcMatrix;
|
|
380
|
+
NGS_DLL_HEADER virtual void
|
|
381
|
+
CalcMatrix (const FiniteElement & fel,
|
|
382
|
+
const BaseMappedIntegrationPoint & mip,
|
|
383
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
384
|
+
LocalHeap & lh) const override { throw Exception("2 not implemented"); }
|
|
385
|
+
|
|
386
|
+
NGS_DLL_HEADER virtual void
|
|
387
|
+
CalcMatrix (const FiniteElement & bfel,
|
|
388
|
+
const BaseMappedIntegrationPoint & bmip,
|
|
389
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
390
|
+
LocalHeap & lh) const override { throw Exception("3 not implemented"); }
|
|
391
|
+
|
|
392
|
+
NGS_DLL_HEADER virtual void
|
|
393
|
+
CalcMatrix (const FiniteElement & fel,
|
|
394
|
+
const BaseMappedIntegrationRule & mir,
|
|
395
|
+
BareSliceMatrix<double,ColMajor> mat,
|
|
396
|
+
LocalHeap & lh) const override { throw Exception("4 not implemented"); }
|
|
397
|
+
|
|
398
|
+
NGS_DLL_HEADER virtual void
|
|
399
|
+
CalcMatrix (const FiniteElement & fel,
|
|
400
|
+
const BaseMappedIntegrationRule & mir,
|
|
401
|
+
BareSliceMatrix<Complex,ColMajor> mat,
|
|
402
|
+
LocalHeap & lh) const override { throw Exception("5 not implemented"); }
|
|
403
|
+
|
|
404
|
+
NGS_DLL_HEADER virtual void
|
|
405
|
+
Apply (const FiniteElement & fel,
|
|
406
|
+
const BaseMappedIntegrationPoint & mip,
|
|
407
|
+
BareSliceVector<double> x,
|
|
408
|
+
FlatVector<double> flux,
|
|
409
|
+
LocalHeap & lh) const override { throw Exception("6 not implemented"); }
|
|
410
|
+
|
|
411
|
+
NGS_DLL_HEADER virtual void
|
|
412
|
+
Apply (const FiniteElement & fel,
|
|
413
|
+
const BaseMappedIntegrationPoint & mip,
|
|
414
|
+
BareSliceVector<Complex> x,
|
|
415
|
+
FlatVector<Complex> flux,
|
|
416
|
+
LocalHeap & lh) const override { throw Exception("8 not implemented"); }
|
|
417
|
+
|
|
418
|
+
NGS_DLL_HEADER virtual void
|
|
419
|
+
Apply (const FiniteElement & fel,
|
|
420
|
+
const BaseMappedIntegrationRule & mir,
|
|
421
|
+
BareSliceVector<Complex> x,
|
|
422
|
+
BareSliceMatrix<Complex> flux,
|
|
423
|
+
LocalHeap & lh) const override{ throw Exception("9 not implemented"); }
|
|
424
|
+
|
|
425
|
+
NGS_DLL_HEADER virtual void
|
|
426
|
+
Apply (const FiniteElement & bfel,
|
|
427
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
428
|
+
BareSliceVector<double> x,
|
|
429
|
+
BareSliceMatrix<SIMD<double>> flux) const override { throw ExceptionNOSIMD("nosimd"); }
|
|
430
|
+
// LocalHeap & lh) const { throw Exception("not implemented"); }
|
|
431
|
+
|
|
432
|
+
NGS_DLL_HEADER virtual void
|
|
433
|
+
ApplyTrans (const FiniteElement & fel,
|
|
434
|
+
const BaseMappedIntegrationPoint & mip,
|
|
435
|
+
FlatVector<double> flux,
|
|
436
|
+
BareSliceVector<double> x,
|
|
437
|
+
LocalHeap & lh) const override { throw Exception("11 not implemented"); }
|
|
438
|
+
|
|
439
|
+
NGS_DLL_HEADER virtual void
|
|
440
|
+
ApplyTrans (const FiniteElement & fel,
|
|
441
|
+
const BaseMappedIntegrationPoint & mip,
|
|
442
|
+
FlatVector<Complex> flux,
|
|
443
|
+
BareSliceVector<Complex> x,
|
|
444
|
+
LocalHeap & lh) const override { throw Exception("12 not implemented"); }
|
|
445
|
+
|
|
446
|
+
NGS_DLL_HEADER virtual void
|
|
447
|
+
ApplyTrans (const FiniteElement & fel,
|
|
448
|
+
const BaseMappedIntegrationRule & mir,
|
|
449
|
+
FlatMatrix<Complex> flux,
|
|
450
|
+
BareSliceVector<Complex> x,
|
|
451
|
+
LocalHeap & lh) const override { throw Exception("13 not implemented"); }
|
|
452
|
+
|
|
453
|
+
NGS_DLL_HEADER virtual void
|
|
454
|
+
AddTrans (const FiniteElement & bfel,
|
|
455
|
+
const SIMD_BaseMappedIntegrationRule & bmir,
|
|
456
|
+
BareSliceMatrix<SIMD<double>> flux,
|
|
457
|
+
BareSliceVector<double> x) const override { throw ExceptionNOSIMD("nosimd"); }
|
|
458
|
+
// LocalHeap & lh) const;
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
#endif // TPDIFFOP_HPP
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#ifndef FILE_TPFES
|
|
2
|
+
#define FILE_TPFES
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#include "fespace.hpp"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
namespace ngcomp
|
|
9
|
+
{
|
|
10
|
+
///////////////////////////////////////////////////////////////////////////////////////
|
|
11
|
+
class NGS_DLL_HEADER TPHighOrderFESpace : public FESpace
|
|
12
|
+
{
|
|
13
|
+
// Number of Elements
|
|
14
|
+
int nel;
|
|
15
|
+
//int nsel,nselx,nsely;
|
|
16
|
+
// Total number of degrees of Freedom
|
|
17
|
+
int ndof;
|
|
18
|
+
// Number of meshes (supports only 2 at the moment)
|
|
19
|
+
int nmeshes;
|
|
20
|
+
// ndofs in each space
|
|
21
|
+
Array<int> ndofs;
|
|
22
|
+
Array<int> nels;
|
|
23
|
+
Array<int> nfacets;
|
|
24
|
+
Array<int> first_element_dof;
|
|
25
|
+
Array<shared_ptr<FESpace>> fespaces;
|
|
26
|
+
Array<shared_ptr<FESpace>> spaces_y;
|
|
27
|
+
shared_ptr<FESpace> space_x;
|
|
28
|
+
Array<shared_ptr<MeshAccess>> meshes;
|
|
29
|
+
bool element_wise;
|
|
30
|
+
double nelsyinverse;
|
|
31
|
+
public:
|
|
32
|
+
INLINE int GetIndex( FlatArray<int> indices) const
|
|
33
|
+
{
|
|
34
|
+
return indices[0]*nels[1] + indices[1];
|
|
35
|
+
}
|
|
36
|
+
INLINE int GetIndex( int index0,int index1) const
|
|
37
|
+
{
|
|
38
|
+
return index0*nels[1] + index1;
|
|
39
|
+
}
|
|
40
|
+
INLINE void GetIndices( int index, FlatArray<int> indices) const
|
|
41
|
+
{
|
|
42
|
+
indices[0] = int(index*nelsyinverse);
|
|
43
|
+
indices[1] = index-nels[1]*indices[0];
|
|
44
|
+
}
|
|
45
|
+
INLINE const shared_ptr<FESpace> & Space(int i) const {
|
|
46
|
+
if(i == -1)
|
|
47
|
+
return space_x;
|
|
48
|
+
else
|
|
49
|
+
if (spaces_y.Size() == 1)
|
|
50
|
+
return spaces_y[0];
|
|
51
|
+
else
|
|
52
|
+
return spaces_y[i];
|
|
53
|
+
}
|
|
54
|
+
INLINE const Array<shared_ptr<FESpace> > & Spaces(int i) const
|
|
55
|
+
{
|
|
56
|
+
fespaces[0] = space_x;
|
|
57
|
+
if(spaces_y.Size() == 1)
|
|
58
|
+
fespaces[1] = spaces_y[0];
|
|
59
|
+
else
|
|
60
|
+
fespaces[1] = spaces_y[i];
|
|
61
|
+
return fespaces;
|
|
62
|
+
}
|
|
63
|
+
int GetNMeshes() {return nmeshes;}
|
|
64
|
+
TPHighOrderFESpace (FlatArray<shared_ptr<FESpace>> spaces, const Flags & flags, bool parseflags=false, Array<int> * el_counts = nullptr);
|
|
65
|
+
|
|
66
|
+
TPHighOrderFESpace (shared_ptr<FESpace> space_x,FlatArray<shared_ptr<FESpace>> spaces_y, const Flags & flags, bool parseflags=false);
|
|
67
|
+
|
|
68
|
+
virtual SymbolTable<shared_ptr<DifferentialOperator>> GetAdditionalEvaluators () const override;
|
|
69
|
+
///
|
|
70
|
+
virtual ~TPHighOrderFESpace ();
|
|
71
|
+
|
|
72
|
+
virtual string GetClassName () const override
|
|
73
|
+
{
|
|
74
|
+
return "TPHighOrderFESpace";
|
|
75
|
+
}
|
|
76
|
+
const Array<int> & GetNels() const
|
|
77
|
+
{
|
|
78
|
+
return nels;
|
|
79
|
+
}
|
|
80
|
+
const Array<int> & GetNFacets() const
|
|
81
|
+
{
|
|
82
|
+
return nfacets;
|
|
83
|
+
}
|
|
84
|
+
///
|
|
85
|
+
void FinalizeUpdate() override;
|
|
86
|
+
void Update() override;
|
|
87
|
+
///
|
|
88
|
+
virtual void UpdateDofTables() override;
|
|
89
|
+
///
|
|
90
|
+
virtual void UpdateCouplingDofArray() override;
|
|
91
|
+
///
|
|
92
|
+
virtual size_t GetNDof () const throw() override;
|
|
93
|
+
///
|
|
94
|
+
virtual size_t GetNDofLevel (int level) const override;
|
|
95
|
+
///
|
|
96
|
+
virtual FiniteElement & GetFE (ElementId ei, Allocator & alloc) const override;
|
|
97
|
+
|
|
98
|
+
ngfem::ElementTransformation & GetTrafo (ElementId ei, Allocator & lh) const;
|
|
99
|
+
|
|
100
|
+
using FESpace::GetFE;
|
|
101
|
+
// virtual const FiniteElement & GetFE (ElementId ei, LocalHeap & lh) const;
|
|
102
|
+
template <ELEMENT_TYPE ET>
|
|
103
|
+
FiniteElement & T_GetFE (int elnr, Allocator & alloc) const;
|
|
104
|
+
|
|
105
|
+
void GetSliceDofNrs(ngfem::ElementId ei, int direction, ngstd::Array<int>& dnums ,LocalHeap & lh) const;
|
|
106
|
+
///
|
|
107
|
+
virtual int GetSpatialDimension() const override { return space_x->GetSpatialDimension() + spaces_y[0]->GetSpatialDimension();}
|
|
108
|
+
///
|
|
109
|
+
virtual void GetDofRanges (ElementId ei, Array<IntRange> & dranges) const;
|
|
110
|
+
|
|
111
|
+
virtual void GetDofNrs(ngfem::ElementId ei, ngstd::Array<int>& dnums) const override;
|
|
112
|
+
///
|
|
113
|
+
virtual shared_ptr<Table<int>> CreateSmoothingBlocks (const Flags & precflags) const override;
|
|
114
|
+
///
|
|
115
|
+
void ReduceToXSpace(shared_ptr<GridFunction> gf_in, shared_ptr<GridFunction> gf_out,LocalHeap & lh,const function<void(shared_ptr<FESpace>,const FiniteElement &, const ElementTransformation & ,FlatVector<>,FlatVector<>,LocalHeap&)> & func);
|
|
116
|
+
void ProlongateFromXSpace(shared_ptr<GridFunction> gf_in, shared_ptr<GridFunction> gf_out, LocalHeap & lh);
|
|
117
|
+
|
|
118
|
+
virtual void SolveM (CoefficientFunction * rho, BaseVector & vec, Region * region,
|
|
119
|
+
LocalHeap & lh) const override;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
extern void IterateElementsTP (const FESpace & fes,
|
|
123
|
+
VorB vb,
|
|
124
|
+
LocalHeap & clh,
|
|
125
|
+
const function<void(ElementId,ElementId,LocalHeap&)> & func);
|
|
126
|
+
extern void Transfer2StdMesh(const GridFunction * gfutp, GridFunction* gfustd,LocalHeap & lh);
|
|
127
|
+
extern void Transfer2TPMesh(const CoefficientFunction * cfstd, GridFunction* gfutp,LocalHeap & lh);
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
#endif
|