ngsolve 6.2.2506.post74.dev0__cp314-cp314-macosx_10_15_universal2.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ngsolve might be problematic. Click here for more details.
- netgen/include/analytic_integrals.hpp +10 -0
- netgen/include/arnoldi.hpp +55 -0
- netgen/include/bandmatrix.hpp +334 -0
- netgen/include/basematrix.hpp +957 -0
- netgen/include/basevector.hpp +1268 -0
- netgen/include/bdbequations.hpp +2805 -0
- netgen/include/bdbintegrator.hpp +1660 -0
- netgen/include/bem_diffops.hpp +475 -0
- netgen/include/bessel.hpp +1064 -0
- netgen/include/bilinearform.hpp +963 -0
- netgen/include/bla.hpp +29 -0
- netgen/include/blockalloc.hpp +95 -0
- netgen/include/blockjacobi.hpp +328 -0
- netgen/include/bspline.hpp +116 -0
- netgen/include/calcinverse.hpp +141 -0
- netgen/include/cg.hpp +368 -0
- netgen/include/chebyshev.hpp +44 -0
- netgen/include/cholesky.hpp +720 -0
- netgen/include/clapack.h +7254 -0
- netgen/include/code_generation.hpp +296 -0
- netgen/include/coefficient.hpp +2033 -0
- netgen/include/coefficient_impl.hpp +19 -0
- netgen/include/coefficient_stdmath.hpp +167 -0
- netgen/include/commutingAMG.hpp +106 -0
- netgen/include/comp.hpp +79 -0
- netgen/include/compatibility.hpp +41 -0
- netgen/include/complex_wrapper.hpp +73 -0
- netgen/include/compressedfespace.hpp +110 -0
- netgen/include/contact.hpp +235 -0
- netgen/include/diagonalmatrix.hpp +154 -0
- netgen/include/differentialoperator.hpp +276 -0
- netgen/include/diffop.hpp +1286 -0
- netgen/include/diffop_impl.hpp +328 -0
- netgen/include/diffopwithfactor.hpp +123 -0
- netgen/include/discontinuous.hpp +84 -0
- netgen/include/dump.hpp +949 -0
- netgen/include/ectypes.hpp +121 -0
- netgen/include/eigen.hpp +60 -0
- netgen/include/eigensystem.hpp +18 -0
- netgen/include/elasticity_equations.hpp +595 -0
- netgen/include/elementbyelement.hpp +195 -0
- netgen/include/elementtopology.hpp +1760 -0
- netgen/include/elementtransformation.hpp +339 -0
- netgen/include/evalfunc.hpp +405 -0
- netgen/include/expr.hpp +1686 -0
- netgen/include/facetfe.hpp +175 -0
- netgen/include/facetfespace.hpp +180 -0
- netgen/include/facethofe.hpp +111 -0
- netgen/include/facetsurffespace.hpp +112 -0
- netgen/include/fe_interfaces.hpp +32 -0
- netgen/include/fem.hpp +87 -0
- netgen/include/fesconvert.hpp +14 -0
- netgen/include/fespace.hpp +1449 -0
- netgen/include/finiteelement.hpp +286 -0
- netgen/include/globalinterfacespace.hpp +77 -0
- netgen/include/globalspace.hpp +115 -0
- netgen/include/gridfunction.hpp +525 -0
- netgen/include/h1amg.hpp +124 -0
- netgen/include/h1hofe.hpp +188 -0
- netgen/include/h1hofe_impl.hpp +1262 -0
- netgen/include/h1hofefo.hpp +148 -0
- netgen/include/h1hofefo_impl.hpp +185 -0
- netgen/include/h1hofespace.hpp +167 -0
- netgen/include/h1lofe.hpp +1240 -0
- netgen/include/h1lumping.hpp +41 -0
- netgen/include/hcurl_equations.hpp +1381 -0
- netgen/include/hcurlcurlfe.hpp +2241 -0
- netgen/include/hcurlcurlfespace.hpp +78 -0
- netgen/include/hcurlfe.hpp +259 -0
- netgen/include/hcurlfe_utils.hpp +107 -0
- netgen/include/hcurlhdiv_dshape.hpp +857 -0
- netgen/include/hcurlhdivfes.hpp +308 -0
- netgen/include/hcurlhofe.hpp +175 -0
- netgen/include/hcurlhofe_impl.hpp +1871 -0
- netgen/include/hcurlhofespace.hpp +193 -0
- netgen/include/hcurllofe.hpp +1146 -0
- netgen/include/hdiv_equations.hpp +880 -0
- netgen/include/hdivdivfe.hpp +2923 -0
- netgen/include/hdivdivsurfacespace.hpp +76 -0
- netgen/include/hdivfe.hpp +206 -0
- netgen/include/hdivfe_utils.hpp +717 -0
- netgen/include/hdivfes.hpp +75 -0
- netgen/include/hdivhofe.hpp +447 -0
- netgen/include/hdivhofe_impl.hpp +1107 -0
- netgen/include/hdivhofefo.hpp +229 -0
- netgen/include/hdivhofespace.hpp +177 -0
- netgen/include/hdivhosurfacefespace.hpp +106 -0
- netgen/include/hdivlofe.hpp +773 -0
- netgen/include/hidden.hpp +74 -0
- netgen/include/householder.hpp +181 -0
- netgen/include/hypre_ams_precond.hpp +123 -0
- netgen/include/hypre_precond.hpp +73 -0
- netgen/include/integrator.hpp +2012 -0
- netgen/include/integratorcf.hpp +253 -0
- netgen/include/interpolate.hpp +49 -0
- netgen/include/intrule.hpp +2542 -0
- netgen/include/intrules_SauterSchwab.hpp +25 -0
- netgen/include/irspace.hpp +49 -0
- netgen/include/jacobi.hpp +153 -0
- netgen/include/kernels.hpp +762 -0
- netgen/include/l2hofe.hpp +194 -0
- netgen/include/l2hofe_impl.hpp +564 -0
- netgen/include/l2hofefo.hpp +542 -0
- netgen/include/l2hofespace.hpp +344 -0
- netgen/include/la.hpp +38 -0
- netgen/include/linearform.hpp +266 -0
- netgen/include/matrix.hpp +2140 -0
- netgen/include/memusage.hpp +41 -0
- netgen/include/meshaccess.hpp +1359 -0
- netgen/include/mgpre.hpp +204 -0
- netgen/include/mp_coefficient.hpp +145 -0
- netgen/include/mptools.hpp +2281 -0
- netgen/include/multigrid.hpp +42 -0
- netgen/include/multivector.hpp +447 -0
- netgen/include/mumpsinverse.hpp +187 -0
- netgen/include/mycomplex.hpp +361 -0
- netgen/include/ng_lapack.hpp +1661 -0
- netgen/include/ngblas.hpp +1232 -0
- netgen/include/ngs_defines.hpp +30 -0
- netgen/include/ngs_stdcpp_include.hpp +106 -0
- netgen/include/ngs_utils.hpp +121 -0
- netgen/include/ngsobject.hpp +1019 -0
- netgen/include/ngsstream.hpp +113 -0
- netgen/include/ngstd.hpp +72 -0
- netgen/include/nodalhofe.hpp +96 -0
- netgen/include/nodalhofe_impl.hpp +141 -0
- netgen/include/normalfacetfe.hpp +223 -0
- netgen/include/normalfacetfespace.hpp +98 -0
- netgen/include/normalfacetsurfacefespace.hpp +84 -0
- netgen/include/order.hpp +251 -0
- netgen/include/parallel_matrices.hpp +222 -0
- netgen/include/paralleldofs.hpp +340 -0
- netgen/include/parallelngs.hpp +23 -0
- netgen/include/parallelvector.hpp +269 -0
- netgen/include/pardisoinverse.hpp +200 -0
- netgen/include/periodic.hpp +129 -0
- netgen/include/plateaufespace.hpp +25 -0
- netgen/include/pml.hpp +275 -0
- netgen/include/pmltrafo.hpp +631 -0
- netgen/include/postproc.hpp +142 -0
- netgen/include/potentialtools.hpp +22 -0
- netgen/include/precomp.hpp +60 -0
- netgen/include/preconditioner.hpp +602 -0
- netgen/include/prolongation.hpp +377 -0
- netgen/include/python_comp.hpp +107 -0
- netgen/include/python_fem.hpp +89 -0
- netgen/include/python_linalg.hpp +58 -0
- netgen/include/python_ngstd.hpp +386 -0
- netgen/include/recursive_pol.hpp +4896 -0
- netgen/include/recursive_pol_tet.hpp +395 -0
- netgen/include/recursive_pol_trig.hpp +492 -0
- netgen/include/reorderedfespace.hpp +81 -0
- netgen/include/sample_sort.hpp +105 -0
- netgen/include/scalarfe.hpp +335 -0
- netgen/include/shapefunction_utils.hpp +113 -0
- netgen/include/simd_complex.hpp +329 -0
- netgen/include/smoother.hpp +253 -0
- netgen/include/solve.hpp +89 -0
- netgen/include/sparsecholesky.hpp +313 -0
- netgen/include/sparsematrix.hpp +1038 -0
- netgen/include/sparsematrix_dyn.hpp +90 -0
- netgen/include/sparsematrix_impl.hpp +1013 -0
- netgen/include/special_matrix.hpp +463 -0
- netgen/include/specialelement.hpp +125 -0
- netgen/include/statushandler.hpp +33 -0
- netgen/include/stringops.hpp +12 -0
- netgen/include/superluinverse.hpp +136 -0
- netgen/include/symbolicintegrator.hpp +850 -0
- netgen/include/symmetricmatrix.hpp +144 -0
- netgen/include/tangentialfacetfe.hpp +224 -0
- netgen/include/tangentialfacetfespace.hpp +91 -0
- netgen/include/tensor.hpp +522 -0
- netgen/include/tensorcoefficient.hpp +446 -0
- netgen/include/tensorproductintegrator.hpp +113 -0
- netgen/include/thcurlfe.hpp +128 -0
- netgen/include/thcurlfe_impl.hpp +380 -0
- netgen/include/thdivfe.hpp +80 -0
- netgen/include/thdivfe_impl.hpp +492 -0
- netgen/include/tpdiffop.hpp +461 -0
- netgen/include/tpfes.hpp +133 -0
- netgen/include/tpintrule.hpp +224 -0
- netgen/include/triangular.hpp +465 -0
- netgen/include/tscalarfe.hpp +245 -0
- netgen/include/tscalarfe_impl.hpp +1029 -0
- netgen/include/umfpackinverse.hpp +148 -0
- netgen/include/vector.hpp +1273 -0
- netgen/include/voxelcoefficientfunction.hpp +41 -0
- netgen/include/vtkoutput.hpp +198 -0
- netgen/include/vvector.hpp +208 -0
- netgen/include/webgui.hpp +92 -0
- netgen/libngbla.dylib +0 -0
- netgen/libngcomp.dylib +0 -0
- netgen/libngfem.dylib +0 -0
- netgen/libngla.dylib +0 -0
- netgen/libngsbem.dylib +0 -0
- netgen/libngsolve.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/TensorProductTools.py +210 -0
- ngsolve/__console.py +94 -0
- ngsolve/__expr.py +181 -0
- ngsolve/__init__.py +148 -0
- ngsolve/__init__.pyi +233 -0
- ngsolve/_scikit_build_core_dependencies.py +30 -0
- ngsolve/bla.pyi +1153 -0
- ngsolve/bvp.py +78 -0
- ngsolve/bvp.pyi +32 -0
- ngsolve/cmake/NGSolveConfig.cmake +102 -0
- ngsolve/cmake/ngsolve-targets-release.cmake +79 -0
- ngsolve/cmake/ngsolve-targets.cmake +163 -0
- ngsolve/comp/__init__.pyi +5449 -0
- ngsolve/comp/pml.pyi +89 -0
- ngsolve/config/__init__.py +1 -0
- ngsolve/config/__init__.pyi +43 -0
- ngsolve/config/__main__.py +4 -0
- ngsolve/config/config.py +60 -0
- ngsolve/config/config.pyi +45 -0
- ngsolve/demos/TensorProduct/__init__.py +0 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
- ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
- ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
- ngsolve/demos/__init__.py +0 -0
- ngsolve/demos/howto/__init__.py +0 -0
- ngsolve/demos/howto/hhj.py +44 -0
- ngsolve/demos/howto/hybrid_dg.py +53 -0
- ngsolve/demos/howto/mixed.py +30 -0
- ngsolve/demos/howto/nonlin.py +29 -0
- ngsolve/demos/howto/pickling.py +26 -0
- ngsolve/demos/howto/pml.py +31 -0
- ngsolve/demos/howto/taskmanager.py +20 -0
- ngsolve/demos/howto/tdnns.py +47 -0
- ngsolve/demos/howto/timeDG-skeleton.py +45 -0
- ngsolve/demos/howto/timeDG.py +38 -0
- ngsolve/demos/howto/timeDGlap.py +42 -0
- ngsolve/demos/howto/timeDGwave.py +61 -0
- ngsolve/demos/intro/__init__.py +0 -0
- ngsolve/demos/intro/adaptive.py +123 -0
- ngsolve/demos/intro/cmagnet.py +59 -0
- ngsolve/demos/intro/elasticity.py +76 -0
- ngsolve/demos/intro/navierstokes.py +74 -0
- ngsolve/demos/intro/poisson.ipynb +170 -0
- ngsolve/demos/intro/poisson.py +41 -0
- ngsolve/demos/mpi/__init__.py +0 -0
- ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
- ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
- ngsolve/demos/mpi/mpi_poisson.py +89 -0
- ngsolve/demos/mpi/mpi_timeDG.py +82 -0
- ngsolve/directsolvers.py +26 -0
- ngsolve/directsolvers.pyi +15 -0
- ngsolve/eigenvalues.py +364 -0
- ngsolve/eigenvalues.pyi +30 -0
- ngsolve/fem.pyi +1647 -0
- ngsolve/internal.py +89 -0
- ngsolve/krylovspace.py +1013 -0
- ngsolve/krylovspace.pyi +298 -0
- ngsolve/la.pyi +1230 -0
- ngsolve/meshes.py +748 -0
- ngsolve/ngs2petsc.py +310 -0
- ngsolve/ngscxx.py +42 -0
- ngsolve/ngslib.so +0 -0
- ngsolve/ngstd.pyi +59 -0
- ngsolve/nonlinearsolvers.py +203 -0
- ngsolve/nonlinearsolvers.pyi +95 -0
- ngsolve/preconditioners.py +11 -0
- ngsolve/preconditioners.pyi +7 -0
- ngsolve/solve.pyi +109 -0
- ngsolve/solve_implementation.py +168 -0
- ngsolve/solve_implementation.pyi +42 -0
- ngsolve/solvers.py +7 -0
- ngsolve/solvers.pyi +14 -0
- ngsolve/timestepping.py +185 -0
- ngsolve/timestepping.pyi +28 -0
- ngsolve/timing.py +108 -0
- ngsolve/timing.pyi +54 -0
- ngsolve/utils.py +167 -0
- ngsolve/utils.pyi +273 -0
- ngsolve/webgui.py +670 -0
- ngsolve-6.2.2506.post74.dev0.data/data/Netgen.icns +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngscxx +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsld +13 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsolve.tcl +648 -0
- ngsolve-6.2.2506.post74.dev0.data/data/bin/ngspy +2 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.geo +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.vol +240 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.in2d +41 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.vol +614 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.geo +12 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.vol +2560 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.geo +19 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.vol +1832 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.geo +73 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.in2d +17 -0
- ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.vol +149 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/METADATA +13 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/RECORD +315 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/WHEEL +5 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/licenses/LICENSE +504 -0
- ngsolve-6.2.2506.post74.dev0.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#ifndef FILE_NGS_ELEMENTBYELEMENT
|
|
2
|
+
#define FILE_NGS_ELEMENTBYELEMENT
|
|
3
|
+
|
|
4
|
+
/* ************************************************************************/
|
|
5
|
+
/* File: elementbyelement.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: June 2010 */
|
|
8
|
+
/* ************************************************************************/
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
Element by element matrix
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
#include "basematrix.hpp"
|
|
16
|
+
#include "blockjacobi.hpp"
|
|
17
|
+
|
|
18
|
+
namespace ngla
|
|
19
|
+
{
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
template <class SCAL>
|
|
23
|
+
class NGS_DLL_HEADER ElementByElementMatrix : public BaseMatrix
|
|
24
|
+
{
|
|
25
|
+
Array<FlatMatrix<SCAL> > elmats;
|
|
26
|
+
Array<FlatArray<int> > rowdnums;
|
|
27
|
+
Array<FlatArray<int> > coldnums;
|
|
28
|
+
int height;
|
|
29
|
+
int width;
|
|
30
|
+
int ne;
|
|
31
|
+
bool symmetric;
|
|
32
|
+
bool disjointrows;
|
|
33
|
+
bool disjointcols;
|
|
34
|
+
BitArray clone;
|
|
35
|
+
int max_row_size = 0;
|
|
36
|
+
int max_col_size = 0;
|
|
37
|
+
|
|
38
|
+
Array<int> allrow, allcol;
|
|
39
|
+
Array<SCAL> allvalues;
|
|
40
|
+
public:
|
|
41
|
+
ElementByElementMatrix (int h, int ane, bool isymmetric=false);
|
|
42
|
+
ElementByElementMatrix (int h, int w, int ane, bool isymmetric=false);
|
|
43
|
+
ElementByElementMatrix (int h, int w, int ane, bool isymmetric, bool adisjointrows, bool adisjointcols);
|
|
44
|
+
ElementByElementMatrix (int h, int ane, bool isymmetric, bool adisjointrows, bool adisjointcols)
|
|
45
|
+
: ElementByElementMatrix(h, h, ane, isymmetric, adisjointrows, adisjointcols) {};
|
|
46
|
+
|
|
47
|
+
// allocate all memory at once
|
|
48
|
+
ElementByElementMatrix (size_t h, size_t w,
|
|
49
|
+
FlatArray<int> nrowi, FlatArray<int> ncoli,
|
|
50
|
+
bool isymmetric, bool adisjointrows, bool adisjointcols);
|
|
51
|
+
|
|
52
|
+
~ElementByElementMatrix();
|
|
53
|
+
bool IsComplex() const override { return typeid(SCAL)==typeid(Complex); }
|
|
54
|
+
|
|
55
|
+
void SetDisjointRows(bool newval){disjointrows=newval;}
|
|
56
|
+
void SetDisjointCols(bool newval){disjointcols=newval;}
|
|
57
|
+
int VHeight() const override { return height; }
|
|
58
|
+
int VWidth() const override { return width; }
|
|
59
|
+
size_t GetNumElMats() const { return elmats.Size(); }
|
|
60
|
+
|
|
61
|
+
AutoVector CreateRowVector () const override { return make_unique<VVector<double>> (width); }
|
|
62
|
+
AutoVector CreateColVector () const override { return make_unique<VVector<double>> (height); }
|
|
63
|
+
|
|
64
|
+
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
65
|
+
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
66
|
+
|
|
67
|
+
void AddElementMatrix (int elnr,
|
|
68
|
+
FlatArray<int> dnums1,
|
|
69
|
+
FlatArray<int> dnums2,
|
|
70
|
+
BareSliceMatrix<SCAL> elmat);
|
|
71
|
+
|
|
72
|
+
void AddCloneElementMatrix(int elnr,
|
|
73
|
+
const FlatArray<int> & dnums1,
|
|
74
|
+
const FlatArray<int> & dnums2,
|
|
75
|
+
int refelnr);
|
|
76
|
+
|
|
77
|
+
BaseVector & AsVector() override
|
|
78
|
+
{
|
|
79
|
+
throw Exception ("Cannot access ebe-matrix AsVector");
|
|
80
|
+
// return *new VVector<double> (1);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const FlatMatrix<SCAL> GetElementMatrix( int elnum ) const
|
|
84
|
+
{
|
|
85
|
+
return elmats[elnum];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const FlatArray<int> GetElementRowDNums ( int elnum ) const
|
|
89
|
+
{
|
|
90
|
+
return rowdnums[elnum];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const FlatArray<int> GetElementColumnDNums ( int elnum ) const
|
|
94
|
+
{
|
|
95
|
+
if (symmetric)
|
|
96
|
+
return rowdnums[elnum];
|
|
97
|
+
else
|
|
98
|
+
return coldnums[elnum];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
ostream & Print (ostream & ost) const override;
|
|
102
|
+
|
|
103
|
+
virtual BaseBlockJacobiPrecond *
|
|
104
|
+
CreateBlockJacobiPrecond (Table<int> & blocks,
|
|
105
|
+
const BaseVector * constraint = 0, int * paralleloptions = 0) const;
|
|
106
|
+
// {
|
|
107
|
+
// return new BlockJacobiPrecond_ElByEl<SCAL> (*this, blocks );
|
|
108
|
+
// }
|
|
109
|
+
|
|
110
|
+
using BaseMatrix::InverseMatrix;
|
|
111
|
+
virtual shared_ptr<BaseMatrix>
|
|
112
|
+
InverseMatrix (BitArray * subset = 0) const;
|
|
113
|
+
|
|
114
|
+
size_t GetNZE () const
|
|
115
|
+
{
|
|
116
|
+
size_t nze = 0;
|
|
117
|
+
for (size_t i = 0; i < elmats.Size(); i++)
|
|
118
|
+
if (!clone.Test(i))
|
|
119
|
+
nze += elmats[i].Height()*elmats[i].Width();
|
|
120
|
+
return nze;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
size_t NZE () const override { return GetNZE(); }
|
|
124
|
+
|
|
125
|
+
private:
|
|
126
|
+
void InitMemoryTracing() const;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
template <class SCAL = double>
|
|
130
|
+
class NGS_DLL_HEADER ConstantElementByElementMatrix : public BaseMatrix
|
|
131
|
+
{
|
|
132
|
+
size_t h, w;
|
|
133
|
+
Matrix<SCAL> matrix;
|
|
134
|
+
Table<int> col_dnums;
|
|
135
|
+
Table<int> row_dnums;
|
|
136
|
+
bool disjoint_rows, disjoint_cols;
|
|
137
|
+
Table<int> row_coloring, col_coloring;
|
|
138
|
+
public:
|
|
139
|
+
ConstantElementByElementMatrix (size_t ah, size_t aw, Matrix<SCAL> amatrix,
|
|
140
|
+
Table<int> acol_dnums, Table<int> arow_dnums);
|
|
141
|
+
|
|
142
|
+
virtual int VHeight() const override { return h; }
|
|
143
|
+
virtual int VWidth() const override { return w; }
|
|
144
|
+
|
|
145
|
+
virtual BaseMatrix::OperatorInfo GetOperatorInfo () const override;
|
|
146
|
+
|
|
147
|
+
virtual void MultAdd (SCAL s, const BaseVector & x, BaseVector & y) const override;
|
|
148
|
+
virtual void MultTransAdd (SCAL s, const BaseVector & x, BaseVector & y) const override;
|
|
149
|
+
|
|
150
|
+
virtual AutoVector CreateRowVector () const override;
|
|
151
|
+
virtual AutoVector CreateColVector () const override;
|
|
152
|
+
|
|
153
|
+
virtual shared_ptr<BaseSparseMatrix> CreateSparseMatrix() const override;
|
|
154
|
+
|
|
155
|
+
FlatMatrix<SCAL> GetMatrix() const { return matrix; }
|
|
156
|
+
FlatTable<int> GetRowDNums() const { return row_dnums; }
|
|
157
|
+
FlatTable<int> GetColDNums() const { return col_dnums; }
|
|
158
|
+
|
|
159
|
+
FlatTable<int> GetRowColoring() const { return row_coloring; }
|
|
160
|
+
FlatTable<int> GetColColoring() const { return col_coloring; }
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
class NGS_DLL_HEADER StructuredElementByElementMatrix : public BaseMatrix
|
|
164
|
+
{
|
|
165
|
+
size_t num;
|
|
166
|
+
Matrix<> matrix;
|
|
167
|
+
public:
|
|
168
|
+
StructuredElementByElementMatrix (size_t anum, Matrix<> amatrix)
|
|
169
|
+
: num(anum), matrix(amatrix) { ; }
|
|
170
|
+
|
|
171
|
+
virtual int VHeight() const override { return num*matrix.Height(); }
|
|
172
|
+
virtual int VWidth() const override { return num*matrix.Width(); }
|
|
173
|
+
|
|
174
|
+
virtual void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
175
|
+
virtual void MultTrans (const BaseVector & x, BaseVector & y) const override;
|
|
176
|
+
virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
177
|
+
virtual void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
178
|
+
|
|
179
|
+
virtual AutoVector CreateRowVector () const override
|
|
180
|
+
{
|
|
181
|
+
return make_unique<VVector<>> (num*matrix.Width());
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
virtual AutoVector CreateColVector () const override
|
|
185
|
+
{
|
|
186
|
+
return make_unique<VVector<>> (num*matrix.Height());
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const Matrix<> & GetMatrix() const { return matrix; }
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
#endif
|