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
netgen/include/cg.hpp
ADDED
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
#ifndef FILE_CG_NEW
|
|
2
|
+
#define FILE_CG_NEW
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**************************************************************************/
|
|
6
|
+
/* File: cg.hh */
|
|
7
|
+
/* Author: Joachim Schoeberl */
|
|
8
|
+
/* Date: 5. Jul. 96 */
|
|
9
|
+
/**************************************************************************/
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
#include "basematrix.hpp"
|
|
13
|
+
|
|
14
|
+
namespace ngla
|
|
15
|
+
{
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
Krylov Space Solver
|
|
20
|
+
*/
|
|
21
|
+
class KrylovSpaceSolver : public BaseMatrix
|
|
22
|
+
{
|
|
23
|
+
protected:
|
|
24
|
+
///
|
|
25
|
+
shared_ptr<BaseMatrix> a, c;
|
|
26
|
+
///
|
|
27
|
+
double prec;
|
|
28
|
+
///
|
|
29
|
+
int maxsteps;
|
|
30
|
+
///
|
|
31
|
+
int steps;
|
|
32
|
+
///
|
|
33
|
+
int initialize;
|
|
34
|
+
///
|
|
35
|
+
bool stop_absolute;
|
|
36
|
+
///
|
|
37
|
+
int printrates;
|
|
38
|
+
///
|
|
39
|
+
int absoluteRes;
|
|
40
|
+
///
|
|
41
|
+
bool useseed;
|
|
42
|
+
|
|
43
|
+
public:
|
|
44
|
+
///
|
|
45
|
+
NGS_DLL_HEADER KrylovSpaceSolver();
|
|
46
|
+
///
|
|
47
|
+
NGS_DLL_HEADER KrylovSpaceSolver(shared_ptr<BaseMatrix> aa);
|
|
48
|
+
///
|
|
49
|
+
NGS_DLL_HEADER KrylovSpaceSolver(shared_ptr<BaseMatrix> aa, shared_ptr<BaseMatrix> ac);
|
|
50
|
+
///
|
|
51
|
+
void SetMatrix (shared_ptr<BaseMatrix> aa)
|
|
52
|
+
{ a = aa; }
|
|
53
|
+
///
|
|
54
|
+
void SetPrecond (shared_ptr<BaseMatrix> ac)
|
|
55
|
+
{ c = ac; }
|
|
56
|
+
///
|
|
57
|
+
|
|
58
|
+
bool IsComplex() const override { return a->IsComplex(); }
|
|
59
|
+
///
|
|
60
|
+
void SetMaxSteps (int amaxsteps)
|
|
61
|
+
{ maxsteps = amaxsteps; }
|
|
62
|
+
|
|
63
|
+
///
|
|
64
|
+
void SetPrecision (double aprec)
|
|
65
|
+
{ prec = aprec; stop_absolute = 0; }
|
|
66
|
+
///
|
|
67
|
+
void SetAbsolutePrecision (double aprec)
|
|
68
|
+
{ prec = aprec; stop_absolute = 1; }
|
|
69
|
+
///
|
|
70
|
+
void SetRelativePrecision (double aprec)
|
|
71
|
+
{ prec = aprec; stop_absolute = 0; }
|
|
72
|
+
|
|
73
|
+
double GetPrecision() const { return prec; }
|
|
74
|
+
int GetMaxSteps() const { return maxsteps; }
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
void SetPrintRates (int pr = 1)
|
|
78
|
+
{ printrates = pr; }
|
|
79
|
+
///
|
|
80
|
+
void SetInitialize (int ai)
|
|
81
|
+
{ initialize = ai; }
|
|
82
|
+
///
|
|
83
|
+
|
|
84
|
+
void UseSeed(const bool useit = true)
|
|
85
|
+
{ useseed = useit; }
|
|
86
|
+
|
|
87
|
+
///
|
|
88
|
+
int GetSteps () const
|
|
89
|
+
{ return steps; }
|
|
90
|
+
|
|
91
|
+
///
|
|
92
|
+
NGS_DLL_HEADER AutoVector CreateRowVector() const override { return a->CreateColVector(); }
|
|
93
|
+
NGS_DLL_HEADER AutoVector CreateColVector() const override { return a->CreateRowVector(); }
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
int VHeight() const override {return a->VWidth();}
|
|
97
|
+
int VWidth() const override {return a->VHeight();}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
/// The conjugate gradient solver
|
|
102
|
+
template <class IPTYPE>
|
|
103
|
+
class CGSolver : public KrylovSpaceSolver
|
|
104
|
+
{
|
|
105
|
+
protected:
|
|
106
|
+
///
|
|
107
|
+
void MultiMult (const BaseVector & f, BaseVector & u, const int dim) const;
|
|
108
|
+
///
|
|
109
|
+
void MultiMultSeed (const BaseVector & f, BaseVector & u, const int dim) const;
|
|
110
|
+
public:
|
|
111
|
+
typedef typename SCAL_TRAIT<IPTYPE>::SCAL SCAL;
|
|
112
|
+
///
|
|
113
|
+
CGSolver ()
|
|
114
|
+
: KrylovSpaceSolver () { ; }
|
|
115
|
+
///
|
|
116
|
+
CGSolver (shared_ptr<BaseMatrix> aa)
|
|
117
|
+
: KrylovSpaceSolver (aa) { ; }
|
|
118
|
+
|
|
119
|
+
///
|
|
120
|
+
CGSolver (shared_ptr<BaseMatrix> aa, shared_ptr<BaseMatrix> ac)
|
|
121
|
+
: KrylovSpaceSolver (aa, ac) { ; }
|
|
122
|
+
|
|
123
|
+
///
|
|
124
|
+
NGS_DLL_HEADER virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
/// The BiCGStab solver
|
|
129
|
+
template <class IPTYPE>
|
|
130
|
+
class NGS_DLL_HEADER BiCGStabSolver : public KrylovSpaceSolver
|
|
131
|
+
{
|
|
132
|
+
public:
|
|
133
|
+
typedef typename SCAL_TRAIT<IPTYPE>::SCAL SCAL;
|
|
134
|
+
///
|
|
135
|
+
BiCGStabSolver ()
|
|
136
|
+
: KrylovSpaceSolver () { ; }
|
|
137
|
+
///
|
|
138
|
+
BiCGStabSolver (shared_ptr<BaseMatrix> aa)
|
|
139
|
+
: KrylovSpaceSolver (aa) { ; }
|
|
140
|
+
|
|
141
|
+
///
|
|
142
|
+
BiCGStabSolver (shared_ptr<BaseMatrix> aa, shared_ptr<BaseMatrix> ac)
|
|
143
|
+
: KrylovSpaceSolver (aa, ac) { ; }
|
|
144
|
+
|
|
145
|
+
///
|
|
146
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
// Simple iteration solver
|
|
154
|
+
template <class IPTYPE>
|
|
155
|
+
class NGS_DLL_HEADER SimpleIterationSolver : public KrylovSpaceSolver
|
|
156
|
+
{
|
|
157
|
+
public:
|
|
158
|
+
typedef typename SCAL_TRAIT<IPTYPE>::SCAL SCAL;
|
|
159
|
+
private:
|
|
160
|
+
SCAL tau;
|
|
161
|
+
public:
|
|
162
|
+
///
|
|
163
|
+
SimpleIterationSolver ()
|
|
164
|
+
: KrylovSpaceSolver() { tau = 1; }
|
|
165
|
+
///
|
|
166
|
+
SimpleIterationSolver (shared_ptr<BaseMatrix> aa)
|
|
167
|
+
: KrylovSpaceSolver (aa) { tau = 1; }
|
|
168
|
+
///
|
|
169
|
+
SimpleIterationSolver (shared_ptr<BaseMatrix> aa, shared_ptr<BaseMatrix> ac)
|
|
170
|
+
: KrylovSpaceSolver (aa, ac) { tau = 1; }
|
|
171
|
+
///
|
|
172
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
173
|
+
|
|
174
|
+
void SetTau (SCAL atau) { tau = atau; }
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
/// The conjugate gradient solver
|
|
180
|
+
template <class IPTYPE>
|
|
181
|
+
class NGS_DLL_HEADER GMRESSolver : public KrylovSpaceSolver
|
|
182
|
+
{
|
|
183
|
+
public:
|
|
184
|
+
typedef typename SCAL_TRAIT<IPTYPE>::SCAL SCAL;
|
|
185
|
+
///
|
|
186
|
+
GMRESSolver ()
|
|
187
|
+
: KrylovSpaceSolver () { ; }
|
|
188
|
+
///
|
|
189
|
+
GMRESSolver (shared_ptr<BaseMatrix> aa)
|
|
190
|
+
: KrylovSpaceSolver (aa) { ; }
|
|
191
|
+
|
|
192
|
+
///
|
|
193
|
+
GMRESSolver (shared_ptr<BaseMatrix> aa, shared_ptr<BaseMatrix> ac)
|
|
194
|
+
: KrylovSpaceSolver (aa, ac) { ; }
|
|
195
|
+
|
|
196
|
+
///
|
|
197
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
/// The quasi-minimal residual (QMR) solver
|
|
205
|
+
template <class IPTYPE>
|
|
206
|
+
class NGS_DLL_HEADER QMRSolver : public KrylovSpaceSolver
|
|
207
|
+
{
|
|
208
|
+
int status;
|
|
209
|
+
const BaseMatrix * c2;
|
|
210
|
+
public:
|
|
211
|
+
typedef typename SCAL_TRAIT<IPTYPE>::SCAL SCAL;
|
|
212
|
+
///
|
|
213
|
+
QMRSolver ()
|
|
214
|
+
: KrylovSpaceSolver (), c2(0) { ; }
|
|
215
|
+
///
|
|
216
|
+
QMRSolver (shared_ptr<BaseMatrix> aa)
|
|
217
|
+
: KrylovSpaceSolver (aa), c2(0) { ; }
|
|
218
|
+
|
|
219
|
+
///
|
|
220
|
+
QMRSolver (shared_ptr<BaseMatrix> aa, shared_ptr<BaseMatrix> ac)
|
|
221
|
+
: KrylovSpaceSolver (aa, ac), c2(0) { ; }
|
|
222
|
+
|
|
223
|
+
///
|
|
224
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
/*
|
|
232
|
+
|
|
233
|
+
// Conjugate residual solver for symmetric, indefinite matrices
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
class CRSolver : public CGSolver
|
|
237
|
+
{
|
|
238
|
+
public:
|
|
239
|
+
///
|
|
240
|
+
CRSolver ();
|
|
241
|
+
///
|
|
242
|
+
CRSolver (const BaseMatrix & aa);
|
|
243
|
+
///
|
|
244
|
+
CRSolver (const BaseMatrix & aa, const BaseMatrix & ac);
|
|
245
|
+
///
|
|
246
|
+
~CRSolver ();
|
|
247
|
+
///
|
|
248
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
// CG Solver for normal problem
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class NormalCGSolver : public CGSolver
|
|
257
|
+
{
|
|
258
|
+
public:
|
|
259
|
+
///
|
|
260
|
+
NormalCGSolver ();
|
|
261
|
+
///
|
|
262
|
+
NormalCGSolver (const BaseMatrix & aa);
|
|
263
|
+
///
|
|
264
|
+
NormalCGSolver (const BaseMatrix & aa, const BaseMatrix & ac);
|
|
265
|
+
///
|
|
266
|
+
~NormalCGSolver ();
|
|
267
|
+
///
|
|
268
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
/// gradient method for non-symmetric, indefinite matrices
|
|
274
|
+
class MinResGradientSolver : public CGSolver
|
|
275
|
+
{
|
|
276
|
+
public:
|
|
277
|
+
///
|
|
278
|
+
MinResGradientSolver ();
|
|
279
|
+
///
|
|
280
|
+
MinResGradientSolver (const BaseMatrix & aa);
|
|
281
|
+
///
|
|
282
|
+
MinResGradientSolver (const BaseMatrix & aa, const BaseMatrix & ac);
|
|
283
|
+
///
|
|
284
|
+
~MinResGradientSolver ();
|
|
285
|
+
///
|
|
286
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
// Bi-CG Stab solver for non-symmetric matrices
|
|
292
|
+
|
|
293
|
+
class BiCGStabSolver : public CGSolver
|
|
294
|
+
{
|
|
295
|
+
public:
|
|
296
|
+
///
|
|
297
|
+
BiCGStabSolver ();
|
|
298
|
+
///
|
|
299
|
+
BiCGStabSolver (const BaseMatrix & aa);
|
|
300
|
+
///
|
|
301
|
+
BiCGStabSolver (const BaseMatrix & aa, const BaseMatrix & ac);
|
|
302
|
+
///
|
|
303
|
+
~BiCGStabSolver ();
|
|
304
|
+
///
|
|
305
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
// QMR solver for non-symmetric matrices
|
|
317
|
+
|
|
318
|
+
class NGS_DLL_HEADER QMRSolver : public CGSolver
|
|
319
|
+
{
|
|
320
|
+
int status;
|
|
321
|
+
///
|
|
322
|
+
const BaseMatrix * c2;
|
|
323
|
+
public:
|
|
324
|
+
///
|
|
325
|
+
QMRSolver ();
|
|
326
|
+
///
|
|
327
|
+
QMRSolver (const BaseMatrix & aa);
|
|
328
|
+
///
|
|
329
|
+
QMRSolver (const BaseMatrix & aa, const BaseMatrix & ac);
|
|
330
|
+
///
|
|
331
|
+
~QMRSolver ();
|
|
332
|
+
///
|
|
333
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
// complex QMR solver for non-symmetric matrices
|
|
342
|
+
|
|
343
|
+
class ComplexQMRSolver : public CGSolver
|
|
344
|
+
{
|
|
345
|
+
public:
|
|
346
|
+
///
|
|
347
|
+
int status;
|
|
348
|
+
///
|
|
349
|
+
const BaseMatrix * c2;
|
|
350
|
+
public:
|
|
351
|
+
///
|
|
352
|
+
ComplexQMRSolver ();
|
|
353
|
+
///
|
|
354
|
+
ComplexQMRSolver (const BaseMatrix & aa);
|
|
355
|
+
///
|
|
356
|
+
ComplexQMRSolver (const BaseMatrix & aa, const BaseMatrix & ac);
|
|
357
|
+
///
|
|
358
|
+
~ComplexQMRSolver ();
|
|
359
|
+
///
|
|
360
|
+
virtual void Mult (const BaseVector & v, BaseVector & prod) const;
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
*/
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
#endif
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#ifndef FILE_CHEBYSHEV
|
|
2
|
+
#define FILE_CHEBYSHEV
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: chebyshev.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 30. Jun. 01 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
#include "basematrix.hpp"
|
|
12
|
+
|
|
13
|
+
namespace ngla
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
Chebyshev iteraion
|
|
18
|
+
*/
|
|
19
|
+
class NGS_DLL_HEADER ChebyshevIteration : public BaseMatrix
|
|
20
|
+
{
|
|
21
|
+
protected:
|
|
22
|
+
///
|
|
23
|
+
const BaseMatrix *a, *c;
|
|
24
|
+
///
|
|
25
|
+
int steps;
|
|
26
|
+
///
|
|
27
|
+
double lmin, lmax;
|
|
28
|
+
public:
|
|
29
|
+
///
|
|
30
|
+
ChebyshevIteration (const BaseMatrix & aa, const BaseMatrix & ac, int steps);
|
|
31
|
+
|
|
32
|
+
bool IsComplex() const override { return a->IsComplex(); }
|
|
33
|
+
///
|
|
34
|
+
void SetBounds (double almin, double almax);
|
|
35
|
+
///
|
|
36
|
+
void Mult (const BaseVector & v, BaseVector & prod) const override;
|
|
37
|
+
///
|
|
38
|
+
AutoVector CreateRowVector () const override { return a->CreateColVector(); }
|
|
39
|
+
AutoVector CreateColVector () const override { return a->CreateRowVector(); }
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#endif
|