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
ngsolve/krylovspace.pyi
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import logging as logging
|
|
3
|
+
from math import log
|
|
4
|
+
from netgen import TimeFunction
|
|
5
|
+
from netgen.libngpy._meshing import _GetStatus
|
|
6
|
+
from netgen.libngpy._meshing import _PushStatus
|
|
7
|
+
from netgen.libngpy._meshing import _SetThreadPercentage
|
|
8
|
+
from ngsolve.bla import InnerProduct
|
|
9
|
+
from ngsolve.bla import Matrix
|
|
10
|
+
from ngsolve.bla import Norm
|
|
11
|
+
from ngsolve.bla import Vector
|
|
12
|
+
import ngsolve.comp
|
|
13
|
+
from ngsolve.comp import Preconditioner
|
|
14
|
+
from ngsolve.fem import sqrt
|
|
15
|
+
import ngsolve.la
|
|
16
|
+
from ngsolve.la import BaseMatrix
|
|
17
|
+
from ngsolve.la import BaseVector
|
|
18
|
+
from ngsolve.la import BlockVector
|
|
19
|
+
from ngsolve.la import EigenValues_Preconditioner
|
|
20
|
+
from ngsolve.la import Projector
|
|
21
|
+
import os as os
|
|
22
|
+
from pyngcore.pyngcore import BitArray
|
|
23
|
+
import typing
|
|
24
|
+
from typing import Union
|
|
25
|
+
__all__: list[str] = ['BaseMatrix', 'BaseVector', 'BitArray', 'BlockVector', 'BramblePasciakCG', 'CG', 'CGSolver', 'EigenValues_Preconditioner', 'GMRes', 'GMResSolver', 'InnerProduct', 'LinearSolver', 'Matrix', 'MinRes', 'MinResSolver', 'Norm', 'PreconditionedRichardson', 'Preconditioner', 'Projector', 'QMR', 'QMRSolver', 'RichardsonSolver', 'TimeFunction', 'Union', 'Vector', 'linear_solver_param_doc', 'log', 'logging', 'os', 'sqrt', 'update_plot']
|
|
26
|
+
class CGSolver(LinearSolver):
|
|
27
|
+
name: typing.ClassVar[str] = 'CG'
|
|
28
|
+
def _SolveImpl(self, rhs: ngsolve.la.BaseVector, sol: ngsolve.la.BaseVector):
|
|
29
|
+
...
|
|
30
|
+
def __init__(self, *args, conjugate: bool = False, abstol: float = None, maxsteps: int = None, printing: bool = False, **kwargs):
|
|
31
|
+
...
|
|
32
|
+
@property
|
|
33
|
+
def errors(self):
|
|
34
|
+
...
|
|
35
|
+
class GMResSolver(LinearSolver):
|
|
36
|
+
name: typing.ClassVar[str] = 'GMRes'
|
|
37
|
+
def _SolveImpl(self, rhs: ngsolve.la.BaseVector, sol: ngsolve.la.BaseVector):
|
|
38
|
+
...
|
|
39
|
+
def __init__(self, *args, innerproduct: typing.Callable[[ngsolve.la.BaseVector, ngsolve.la.BaseVector], float | complex] | None = None, restart: int | None = None, **kwargs):
|
|
40
|
+
...
|
|
41
|
+
class LinearSolver(ngsolve.la.BaseMatrix):
|
|
42
|
+
name: typing.ClassVar[str] = 'LinearSolver'
|
|
43
|
+
@staticmethod
|
|
44
|
+
def Solve(*args, **kwargs):
|
|
45
|
+
...
|
|
46
|
+
def CheckResidual(self, residual):
|
|
47
|
+
...
|
|
48
|
+
def CreateVector(self, col):
|
|
49
|
+
...
|
|
50
|
+
def Height(self) -> int:
|
|
51
|
+
...
|
|
52
|
+
def IsComplex(self) -> bool:
|
|
53
|
+
...
|
|
54
|
+
def Mult(self, x: ngsolve.la.BaseVector, y: ngsolve.la.BaseVector) -> None:
|
|
55
|
+
...
|
|
56
|
+
def Update(self):
|
|
57
|
+
...
|
|
58
|
+
def Width(self) -> int:
|
|
59
|
+
...
|
|
60
|
+
def __init__(self, mat: ngsolve.la.BaseMatrix, pre: ngsolve.comp.Preconditioner | None = None, freedofs: pyngcore.pyngcore.BitArray | None = None, tol: float = None, maxiter: int = 100, atol: float = None, callback: typing.Callable[[int, float], NoneType] | None = None, callback_sol: typing.Callable[[ngsolve.la.BaseVector], NoneType] | None = None, printrates: bool = False, plotrates: bool = False):
|
|
61
|
+
...
|
|
62
|
+
class MinResSolver(LinearSolver):
|
|
63
|
+
def _SolveImpl(self, rhs: ngsolve.la.BaseVector, sol: ngsolve.la.BaseVector):
|
|
64
|
+
...
|
|
65
|
+
def __init__(self, *args, **kwargs):
|
|
66
|
+
...
|
|
67
|
+
class QMRSolver(LinearSolver):
|
|
68
|
+
name: typing.ClassVar[str] = 'QMR'
|
|
69
|
+
def _SolveImpl(self, rhs: ngsolve.la.BaseVector, sol: ngsolve.la.BaseVector):
|
|
70
|
+
...
|
|
71
|
+
def __init__(self, *args, pre2: ngsolve.comp.Preconditioner = None, ep: float = 1.0, **kwargs):
|
|
72
|
+
...
|
|
73
|
+
class RichardsonSolver(LinearSolver):
|
|
74
|
+
name: typing.ClassVar[str] = 'Richardson'
|
|
75
|
+
def _SolveImpl(self, rhs: ngsolve.la.BaseVector, sol: ngsolve.la.BaseVector):
|
|
76
|
+
...
|
|
77
|
+
def __init__(self, *args, dampfactor = 1.0, **kwargs):
|
|
78
|
+
...
|
|
79
|
+
def BramblePasciakCG(A, B, C, f, g, preA, preS, maxit = 1000, tol = 1e-08, printrates = False):
|
|
80
|
+
...
|
|
81
|
+
def CG(mat, rhs, pre = None, sol = None, tol = 1e-12, maxsteps = 100, printrates = True, plotrates = False, initialize = True, conjugate = False, callback = None, **kwargs):
|
|
82
|
+
"""
|
|
83
|
+
preconditioned conjugate gradient method
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
Parameters
|
|
87
|
+
----------
|
|
88
|
+
|
|
89
|
+
mat : Matrix
|
|
90
|
+
The left hand side of the equation to solve. The matrix has to be spd o hermitsch.
|
|
91
|
+
|
|
92
|
+
rhs : Vector
|
|
93
|
+
The right hand side of the equation.
|
|
94
|
+
|
|
95
|
+
pre : Preconditioner
|
|
96
|
+
If provided the preconditioner is used.
|
|
97
|
+
|
|
98
|
+
sol : Vector
|
|
99
|
+
Start vector for CG method, if initialize is set False. Gets overwritten by the solution vector. If sol = None then a new vector is created.
|
|
100
|
+
|
|
101
|
+
tol : double
|
|
102
|
+
Tolerance of the residuum. CG stops if tolerance is reached.
|
|
103
|
+
|
|
104
|
+
maxsteps : int
|
|
105
|
+
Number of maximal steps for CG. If the maximal number is reached before the tolerance is reached CG stops.
|
|
106
|
+
|
|
107
|
+
printrates : bool
|
|
108
|
+
If set to True then the error of the iterations is displayed.
|
|
109
|
+
|
|
110
|
+
plotrates : bool
|
|
111
|
+
If set to True then the error of the iterations is plotted.
|
|
112
|
+
|
|
113
|
+
initialize : bool
|
|
114
|
+
If set to True then the initial guess for the CG method is set to zero. Otherwise the values of the vector sol, if provided, is used.
|
|
115
|
+
|
|
116
|
+
conjugate : bool
|
|
117
|
+
If set to True, then the complex inner product is used.
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
Returns
|
|
121
|
+
-------
|
|
122
|
+
(vector)
|
|
123
|
+
Solution vector of the CG method.
|
|
124
|
+
|
|
125
|
+
"""
|
|
126
|
+
def GMRes(A, b, pre = None, freedofs = None, x = None, maxsteps = 100, tol = None, innerproduct = None, callback = None, restart = None, startiteration = 0, printrates = True, reltol = None):
|
|
127
|
+
"""
|
|
128
|
+
Restarting preconditioned gmres solver for A*x=b. Minimizes the preconditioned residuum pre*(b-A*x).
|
|
129
|
+
|
|
130
|
+
Parameters
|
|
131
|
+
----------
|
|
132
|
+
|
|
133
|
+
A : BaseMatrix
|
|
134
|
+
The left hand side of the linear system.
|
|
135
|
+
|
|
136
|
+
b : BaseVector
|
|
137
|
+
The right hand side of the linear system.
|
|
138
|
+
|
|
139
|
+
pre : BaseMatrix = None
|
|
140
|
+
The preconditioner for the system. If no preconditioner is given, the freedofs
|
|
141
|
+
of the system must be given.
|
|
142
|
+
|
|
143
|
+
freedofs : BitArray = None
|
|
144
|
+
Freedofs to solve on, only necessary if no preconditioner is given.
|
|
145
|
+
|
|
146
|
+
x : BaseVector = None
|
|
147
|
+
Startvector, if given it will be modified in the routine and returned. Will be created
|
|
148
|
+
if not given.
|
|
149
|
+
|
|
150
|
+
maxsteps : int = 100
|
|
151
|
+
Maximum iteration steps.
|
|
152
|
+
|
|
153
|
+
tol : float = 1e-7
|
|
154
|
+
|
|
155
|
+
innerproduct : function = None
|
|
156
|
+
Innerproduct to be used in iteration, all orthogonalizations/norms are computed with
|
|
157
|
+
respect to that inner product.
|
|
158
|
+
|
|
159
|
+
callback : function = None
|
|
160
|
+
If given, this function is called with the solution vector x in each step. Only for debugging
|
|
161
|
+
|
|
162
|
+
restart : int = None
|
|
163
|
+
If given, gmres is restarted with the current solution x every 'restart' steps.
|
|
164
|
+
|
|
165
|
+
startiteration : int = 0
|
|
166
|
+
Internal value to count total number of iterations in restarted setup, no user input required
|
|
167
|
+
here.
|
|
168
|
+
|
|
169
|
+
printrates : bool = True
|
|
170
|
+
Print norm of preconditioned residual in each step.
|
|
171
|
+
"""
|
|
172
|
+
def MinRes(mat, rhs, pre = None, sol = None, maxsteps = 100, printrates = True, initialize = True, tol = 1e-07):
|
|
173
|
+
"""
|
|
174
|
+
Minimal Residuum method
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
Parameters
|
|
178
|
+
----------
|
|
179
|
+
|
|
180
|
+
mat : Matrix
|
|
181
|
+
The left hand side of the equation to solve
|
|
182
|
+
|
|
183
|
+
rhs : Vector
|
|
184
|
+
The right hand side of the equation.
|
|
185
|
+
|
|
186
|
+
pre : Preconditioner
|
|
187
|
+
If provided the preconditioner is used.
|
|
188
|
+
|
|
189
|
+
sol : Vector
|
|
190
|
+
Start vector for MinRes method, if initialize is set False. Gets overwritten by the solution vector. If sol = None then a new vector is created.
|
|
191
|
+
|
|
192
|
+
maxsteps : int
|
|
193
|
+
Number of maximal steps for MinRes. If the maximal number is reached before the tolerance is reached MinRes stops.
|
|
194
|
+
|
|
195
|
+
printrates : bool
|
|
196
|
+
If set to True then the error of the iterations is displayed.
|
|
197
|
+
|
|
198
|
+
initialize : bool
|
|
199
|
+
If set to True then the initial guess for the MinRes method is set to zero. Otherwise the values of the vector sol, if prevented, is used.
|
|
200
|
+
|
|
201
|
+
tol : double
|
|
202
|
+
Tolerance of the residuum. MinRes stops if tolerance is reached.
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
Returns
|
|
206
|
+
-------
|
|
207
|
+
(vector)
|
|
208
|
+
Solution vector of the MinRes method.
|
|
209
|
+
|
|
210
|
+
"""
|
|
211
|
+
def PreconditionedRichardson(a, rhs, pre = None, freedofs = None, maxit = 100, tol = 1e-08, dampfactor = 1.0, printing = True):
|
|
212
|
+
"""
|
|
213
|
+
Preconditioned Richardson Iteration
|
|
214
|
+
|
|
215
|
+
Parameters
|
|
216
|
+
----------
|
|
217
|
+
a : BilinearForm
|
|
218
|
+
The left hand side of the equation to solve
|
|
219
|
+
|
|
220
|
+
rhs : Vector
|
|
221
|
+
The right hand side of the equation.
|
|
222
|
+
|
|
223
|
+
pre : Preconditioner
|
|
224
|
+
If provided the preconditioner is used.
|
|
225
|
+
|
|
226
|
+
freedofs : BitArray
|
|
227
|
+
The FreeDofs on which the Richardson iteration acts. If argument is 'None' then the FreeDofs of the underlying FESpace is used.
|
|
228
|
+
|
|
229
|
+
maxit : int
|
|
230
|
+
Number of maximal iteration for Richardson iteration. If the maximal number is reached before the tolerance is reached a warning is displayed.
|
|
231
|
+
|
|
232
|
+
tol : double
|
|
233
|
+
Tolerance of the residuum. Richardson iteration stops if residuum < tolerance*initial_residuum is reached.
|
|
234
|
+
|
|
235
|
+
dampfactor : float
|
|
236
|
+
Set the damping factor for the Richardson iteration. If it is 1 then no damping is done. Values greater than 1 are allowed.
|
|
237
|
+
|
|
238
|
+
printing : bool
|
|
239
|
+
Set if Richardson iteration should print informations about the actual iteration like the residuum.
|
|
240
|
+
|
|
241
|
+
Returns
|
|
242
|
+
-------
|
|
243
|
+
(vector)
|
|
244
|
+
Solution vector of the Preconditioned Richardson iteration.
|
|
245
|
+
|
|
246
|
+
"""
|
|
247
|
+
def QMR(mat, rhs, fdofs, pre1 = None, pre2 = None, sol = None, maxsteps = 100, printrates = True, initialize = True, ep = 1.0, tol = 1e-07):
|
|
248
|
+
"""
|
|
249
|
+
Quasi Minimal Residuum method
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
Parameters
|
|
253
|
+
----------
|
|
254
|
+
|
|
255
|
+
mat : Matrix
|
|
256
|
+
The left hand side of the equation to solve
|
|
257
|
+
|
|
258
|
+
rhs : Vector
|
|
259
|
+
The right hand side of the equation.
|
|
260
|
+
|
|
261
|
+
fdofs : BitArray
|
|
262
|
+
BitArray of free degrees of freedoms.
|
|
263
|
+
|
|
264
|
+
pre1 : Preconditioner
|
|
265
|
+
First preconditioner if provided
|
|
266
|
+
|
|
267
|
+
pre2 : Preconditioner
|
|
268
|
+
Second preconditioner if provided
|
|
269
|
+
|
|
270
|
+
sol : Vector
|
|
271
|
+
Start vector for QMR method, if initialize is set False. Gets overwritten by the solution vector. If sol = None then a new vector is created.
|
|
272
|
+
|
|
273
|
+
maxsteps : int
|
|
274
|
+
Number of maximal steps for QMR. If the maximal number is reached before the tolerance is reached QMR stops.
|
|
275
|
+
|
|
276
|
+
printrates : bool
|
|
277
|
+
If set to True then the error of the iterations is displayed.
|
|
278
|
+
|
|
279
|
+
initialize : bool
|
|
280
|
+
If set to True then the initial guess for the QMR method is set to zero. Otherwise the values of the vector sol, if provided, is used.
|
|
281
|
+
|
|
282
|
+
ep : double
|
|
283
|
+
Start epsilon.
|
|
284
|
+
|
|
285
|
+
tol : double
|
|
286
|
+
Tolerance of the residuum. QMR stops if tolerance is reached.
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
Returns
|
|
290
|
+
-------
|
|
291
|
+
(vector)
|
|
292
|
+
Solution vector of the QMR method.
|
|
293
|
+
|
|
294
|
+
"""
|
|
295
|
+
def update_plot(plt, ax, its, ress):
|
|
296
|
+
...
|
|
297
|
+
_clear_line_command: str = '\x1b[2K'
|
|
298
|
+
linear_solver_param_doc: str = '\nmat : BaseMatrix\n The left hand side of the equation to solve.\n\npre : Preconditioner, BaseMatrix = None\n If provided, the preconditioner for the system.\n\nfreedofs : BitArray = None\n If no preconditioner is provided, the BitArray of the FESpace freedofs must be given.\n\ntol : double = 1e-12\n Relative tolerance for the residuum reduction.\n\nmaxiter : int = 100\n Maximum number of iterations, if reached solver will emit a warning.\n\ncallback : Callable[[int, float], None] = None\n Callback function that is called with iteration number and residual in each iteration step.\n\ncallback_sol : Callable[[BaseVector], None] = None\n Callback function that is called with solution x_k in each iteration step.\n\nprintrates : bool = False\n Print iterations to stdout. One can give a string to be passed as an `end`\n argument to the print function, for example:\n >>> printrates="\r"\n will call\n >>> print("iteration = 1, residual = 1e-3", end="\r")\n if "\r" is passed, a final output will also be printed.\n\nplotrates : bool = False\n matplotlib plot of errors (residuals)\n'
|