PyNucleus_multilevelSolver packageο
PyNucleus_multilevelSolver.coarseSolvers moduleο
- class PyNucleus_multilevelSolver.coarseSolvers.ComplexcoarseSolver(hierarchyManager, FakePLogger PLogger, solverName, **kwargs)ο
Bases:
complex_iterative_solver
This coarse solver gathers the ride-hand side from all nodes, then solves the problem on a subcommunicator using a distributed solver and scatters the solution.
- Ainvο
Ainv: PyNucleus_base.solvers.complex_solver
- __init__(*args, **kwargs)ο
- asynchronousο
asynchronous: βBOOL_tβ
- canWriteRHS(self) BOOL_t ο
- getSolution(self, double complex[::1] x) BOOL_t ο
- inCGο
inCG: βBOOL_tβ
- inSubdomainο
inSubdomain: βBOOL_tβ
- intraLevelCoarseο
intraLevelCoarse: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- intraLevelFineο
intraLevelFine: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- overlapsCoarseο
overlapsCoarse: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- overlapsFineο
overlapsFine: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- rhsο
rhs: βdouble complex[::1]β
- sendRHS(self, double complex[::1] b) void ο
- setAinv(self)ο
- setup(self, ComplexLinearOperator A=None) void ο
- xο
x: βdouble complex[::1]β
- class PyNucleus_multilevelSolver.coarseSolvers.coarseSolver(hierarchyManager, FakePLogger PLogger, solverName, **kwargs)ο
Bases:
iterative_solver
This coarse solver gathers the ride-hand side from all nodes, then solves the problem on a subcommunicator using a distributed solver and scatters the solution.
- Ainvο
Ainv: PyNucleus_base.solvers.solver
- __init__(*args, **kwargs)ο
- asynchronousο
asynchronous: βBOOL_tβ
- canWriteRHS(self) BOOL_t ο
- getSolution(self, REAL_t[::1] x) BOOL_t ο
- inCGο
inCG: βBOOL_tβ
- inSubdomainο
inSubdomain: βBOOL_tβ
- intraLevelCoarseο
intraLevelCoarse: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- intraLevelFineο
intraLevelFine: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- overlapsCoarseο
overlapsCoarse: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- overlapsFineο
overlapsFine: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- rhsο
rhs: βREAL_t[::1]β
- sendRHS(self, REAL_t[::1] b) void ο
- setAinv(self)ο
- setup(self, LinearOperator A=None) void ο
- xο
x: βREAL_t[::1]β
PyNucleus_multilevelSolver.connectors moduleο
- class PyNucleus_multilevelSolver.connectors.hierarchyConnector(global_comm, comm1, comm2, hierarchy1)[source]ο
Bases:
object
- class PyNucleus_multilevelSolver.connectors.inputConnector(global_comm, comm1, comm2, hierarchy1, domain, algebraicLevelType=<class 'PyNucleus_multilevelSolver.levels.algebraicLevel'>, meshParams={})[source]ο
Bases:
hierarchyConnector
- class PyNucleus_multilevelSolver.connectors.repartitionConnector(global_comm, comm1, comm2, hierarchy1, partitionerType, partitionerParams, debugOverlaps=False, commType='standard', algebraicLevelType=<class 'PyNucleus_multilevelSolver.levels.algebraicLevel'>)[source]ο
Bases:
hierarchyConnector
- class PyNucleus_multilevelSolver.connectors.pCoarsenConnector(global_comm, comm1, comm2, hierarchy1, algebraicLevelType=<class 'PyNucleus_multilevelSolver.levels.algebraicLevel'>)[source]ο
Bases:
hierarchyConnector
PyNucleus_multilevelSolver.geometricMG moduleο
PyNucleus_multilevelSolver.hierarchies moduleο
- class PyNucleus_multilevelSolver.hierarchies.EmptyHierarchy(params, label='')[source]ο
Bases:
object
- class PyNucleus_multilevelSolver.hierarchies.hierarchy(meshLevel, params, comm=None, label='')[source]ο
Bases:
object
- class PyNucleus_multilevelSolver.hierarchies.pCoarsenHierarchy(meshLevel, params, comm=None, label='')[source]ο
Bases:
hierarchy
PyNucleus_multilevelSolver.levels moduleο
- class PyNucleus_multilevelSolver.levels.level(params, previousLevel=None, comm=None, label='', startLevelNo=0, isLastLevel=False)[source]ο
Bases:
object
- __init__(params, previousLevel=None, comm=None, label='', startLevelNo=0, isLastLevel=False)[source]ο
- property levelNoο
- property levelIDο
- class PyNucleus_multilevelSolver.levels.meshLevel(mesh, params, previousLevel=None, interfaces=None, meshOverlaps=None, interiorBL=None, comm=None, label='', meshInformationPolicy=1, startLevelNo=0, isLastLevel=False)[source]ο
Bases:
level
- __init__(mesh, params, previousLevel=None, interfaces=None, meshOverlaps=None, interiorBL=None, comm=None, label='', meshInformationPolicy=1, startLevelNo=0, isLastLevel=False)[source]ο
- property isDistributedο
- static fromLevelDict(lvl, params={}, previousLevel=None, comm=None, startLevelNo=0, label='')[source]ο
- property hο
- class PyNucleus_multilevelSolver.levels.algebraicLevelBase(meshLevel, buildType)[source]ο
Bases:
level
- property accumulateOperatorο
- class PyNucleus_multilevelSolver.levels.algebraicLevel(meshLevel, buildType)[source]ο
Bases:
algebraicLevelBase
PyNucleus_multilevelSolver.multigrid moduleο
- class PyNucleus_multilevelSolver.multigrid.ComplexlevelMemory(INDEX_t size, BOOL_t coarsest, BOOL_t finest)ο
Bases:
object
- Aο
A: PyNucleus_base.linear_operators.ComplexLinearOperator
- Dο
D: βdouble complex[::1]β
- Pο
P: PyNucleus_base.linear_operators.ComplexLinearOperator
- Rο
R: PyNucleus_base.linear_operators.ComplexLinearOperator
- __init__(*args, **kwargs)ο
- rhsο
rhs: βdouble complex[::1]β
- smootherο
smoother: PyNucleus_multilevelSolver.smoothers.Complexsmoother
- smootherTypeο
smootherType: tuple
- solο
sol: βdouble complex[::1]β
- tempο
temp: βdouble complex[::1]β
- class PyNucleus_multilevelSolver.multigrid.Complexmultigrid(myHierarchyManager, smoother=('jacobi', {'omega': 2.0 / 3.0}), BOOL_t logging=False, **kwargs)ο
Bases:
complex_iterative_solver
- __init__(*args, **kwargs)ο
- asPreconditioner(self, INDEX_t maxIter=1, CycleType cycle=V)ο
- coarse_solverο
coarse_solver: PyNucleus_base.solvers.complex_solver
- commο
comm: mpi4py.MPI.Comm
- cycleο
cycle: βCycleTypeβ
- iterationMatrix(self)ο
- levelsο
levels: list
- operatorComplexity(self)ο
- overlapο
overlap: PyNucleus_fem.algebraicOverlaps.multilevelAlgebraicOverlapManager
- setup(self, ComplexLinearOperator A=None) void ο
- solveFMG(self, double complex[::1] b, double complex[::1] x) int ο
- class PyNucleus_multilevelSolver.multigrid.ComplexmultigridPreconditioner(Complexmultigrid ml, CycleType cycle, INDEX_t maxIter=1)ο
Bases:
complex_preconditioner
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.multigrid.CycleType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)ο
Bases:
IntFlag
- V = 1ο
- W = 2ο
- FMG_V = 666ο
- FMG_W = 667ο
- class PyNucleus_multilevelSolver.multigrid.levelMemory(INDEX_t size, BOOL_t coarsest, BOOL_t finest)ο
Bases:
object
- Aο
A: PyNucleus_base.linear_operators.LinearOperator
- Dο
D: βREAL_t[::1]β
- Pο
P: PyNucleus_base.linear_operators.LinearOperator
- Rο
R: PyNucleus_base.linear_operators.LinearOperator
- __init__(*args, **kwargs)ο
- rhsο
rhs: βREAL_t[::1]β
- smootherο
smoother: PyNucleus_multilevelSolver.smoothers.smoother
- smootherTypeο
smootherType: tuple
- solο
sol: βREAL_t[::1]β
- tempο
temp: βREAL_t[::1]β
- class PyNucleus_multilevelSolver.multigrid.multigrid(myHierarchyManager, smoother=('jacobi', {'omega': 2.0 / 3.0}), BOOL_t logging=False, **kwargs)ο
Bases:
iterative_solver
- __init__(*args, **kwargs)ο
- asPreconditioner(self, INDEX_t maxIter=1, CycleType cycle=V)ο
- coarse_solverο
coarse_solver: PyNucleus_base.solvers.solver
- commο
comm: mpi4py.MPI.Comm
- cycleο
cycle: βCycleTypeβ
- iterationMatrix(self)ο
- levelsο
levels: list
- operatorComplexity(self)ο
- overlapο
overlap: PyNucleus_fem.algebraicOverlaps.multilevelAlgebraicOverlapManager
- setup(self, LinearOperator A=None) void ο
- solveFMG(self, REAL_t[::1] b, REAL_t[::1] x) int ο
- class PyNucleus_multilevelSolver.multigrid.multigridPreconditioner(multigrid ml, CycleType cycle, INDEX_t maxIter=1)ο
Bases:
preconditioner
- __init__(*args, **kwargs)ο
PyNucleus_multilevelSolver.restrictionProlongation moduleο
- PyNucleus_multilevelSolver.restrictionProlongation.buildRestrictionProlongation(DoFMap coarse_DoFMap, DoFMap fine_DoFMap)ο
PyNucleus_multilevelSolver.smoothers moduleο
- class PyNucleus_multilevelSolver.smoothers.ComplexblockJacobiPreconditioner(ComplexLinearOperator A, sparseGraph blocks, double complex omega)ο
Bases:
Complexpreconditioner
- __init__(*args, **kwargs)ο
- omegaο
omega: βdouble complexβ
- setD(self, ComplexLinearOperator A, sparseGraph blocks)ο
- class PyNucleus_multilevelSolver.smoothers.ComplexblockJacobiSmoother(ComplexLinearOperator A, dict params, ndarray temporaryMemory=None, overlap=None)ο
Bases:
ComplexseparableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.ComplexgmresSmoother(ComplexLinearOperator A, double complex[::1] D, dict params, algebraicOverlapManager overlap=None)ο
Bases:
Complexsmoother
- Aο
- __init__(*args, **kwargs)ο
- solverο
solver: PyNucleus_base.solvers.complex_solver
- temporaryMemoryο
temporaryMemory: βdouble complex[::1]β
- temporaryMemory2ο
temporaryMemory2: βdouble complex[::1]β
- class PyNucleus_multilevelSolver.smoothers.ComplexjacobiPreconditioner(double complex[::1] D, double complex omega)ο
Bases:
Complexpreconditioner
- __init__(*args, **kwargs)ο
- omegaο
omega: βdouble complexβ
- setD(self, double complex[::1] D)ο
- class PyNucleus_multilevelSolver.smoothers.ComplexjacobiSmoother(ComplexLinearOperator A, double complex[::1] D, dict params, ndarray temporaryMemory=None, overlap=None)ο
Bases:
ComplexseparableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.Complexpreconditioner(INDEX_t numRows, INDEX_t numColumns)ο
Bases:
ComplexLinearOperator
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.ComplexseparableSmoother(ComplexLinearOperator A, Complexpreconditioner P, dict params, ndarray temporaryMemory=None, algebraicOverlapManager overlap=None)ο
Bases:
Complexsmoother
- Aο
- __init__(*args, **kwargs)ο
- precο
prec: PyNucleus_multilevelSolver.smoothers.Complexpreconditioner
- setD(self, double complex[::1] D)ο
- temporaryMemoryο
temporaryMemory: βdouble complex[::1]β
- temporaryMemory2ο
temporaryMemory2: βdouble complex[::1]β
- class PyNucleus_multilevelSolver.smoothers.Complexsmoother(ComplexLinearOperator A)ο
Bases:
object
- Aο
- __call__(*args, **kwargs)ο
Call self as a function.
- __init__(*args, **kwargs)ο
- overlapο
overlap: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- class PyNucleus_multilevelSolver.smoothers.blockJacobiPreconditioner(LinearOperator A, sparseGraph blocks, REAL_t omega)ο
Bases:
preconditioner
- __init__(*args, **kwargs)ο
- omegaο
omega: βREAL_tβ
- setD(self, LinearOperator A, sparseGraph blocks)ο
- class PyNucleus_multilevelSolver.smoothers.blockJacobiSmoother(LinearOperator A, dict params, ndarray temporaryMemory=None, overlap=None)ο
Bases:
separableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.chebyshevPreconditioner(INDEX_t degree, LinearOperator A, REAL_t rhoA=0., REAL_t lowerBound=1.0 / 30.0, REAL_t upperBound=1.1, algebraicOverlapManager overlap=None, REAL_t eps=0.01, INDEX_t kMax=10)ο
Bases:
preconditioner
- __init__(*args, **kwargs)ο
- coeffsο
coeffs: βREAL_t[::1]β
- class PyNucleus_multilevelSolver.smoothers.chebyshevSmoother(LinearOperator A, REAL_t[::1] D, dict params, ndarray temporaryMemory=None, overlap=None)ο
Bases:
separableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.flexibleSmoother(LinearOperator A, dict params, overlap=None)ο
Bases:
separableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.gaussSeidelSmoother(A, REAL_t[::1] D, dict params, temporaryMemory=None, temporaryMemory2=None, overlap=None)ο
Bases:
smoother
- Dο
D: βREAL_t[::1]β
- __init__(*args, **kwargs)ο
- setD(self, REAL_t[::1] D)ο
- class PyNucleus_multilevelSolver.smoothers.gmresSmoother(LinearOperator A, REAL_t[::1] D, dict params, algebraicOverlapManager overlap=None)ο
Bases:
smoother
- Aο
- __init__(*args, **kwargs)ο
- solverο
solver: PyNucleus_base.solvers.solver
- temporaryMemoryο
temporaryMemory: βREAL_t[::1]β
- temporaryMemory2ο
temporaryMemory2: βREAL_t[::1]β
- class PyNucleus_multilevelSolver.smoothers.iluPreconditioner(LinearOperator A, **kwargs)ο
Bases:
preconditioner
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.iluSmoother(LinearOperator A, dict params, ndarray temporaryMemory=None, overlap=None)ο
Bases:
separableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.jacobiPreconditioner(REAL_t[::1] D, REAL_t omega)ο
Bases:
preconditioner
- __init__(*args, **kwargs)ο
- omegaο
omega: βREAL_tβ
- setD(self, REAL_t[::1] D)ο
- class PyNucleus_multilevelSolver.smoothers.jacobiSmoother(LinearOperator A, REAL_t[::1] D, dict params, ndarray temporaryMemory=None, overlap=None)ο
Bases:
separableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.preconditioner(INDEX_t numRows, INDEX_t numColumns)ο
Bases:
LinearOperator
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.separableSmoother(LinearOperator A, preconditioner P, dict params, ndarray temporaryMemory=None, algebraicOverlapManager overlap=None)ο
Bases:
smoother
- Aο
- __init__(*args, **kwargs)ο
- precο
prec: PyNucleus_multilevelSolver.smoothers.preconditioner
- setD(self, REAL_t[::1] D)ο
- temporaryMemoryο
temporaryMemory: βREAL_t[::1]β
- temporaryMemory2ο
temporaryMemory2: βREAL_t[::1]β
- class PyNucleus_multilevelSolver.smoothers.smoother(LinearOperator A)ο
Bases:
object
- Aο
- __call__(*args, **kwargs)ο
Call self as a function.
- __init__(*args, **kwargs)ο
- overlapο
overlap: PyNucleus_fem.algebraicOverlaps.algebraicOverlapManager
- class PyNucleus_multilevelSolver.smoothers.sorPreconditioner(LinearOperator A, REAL_t[::1] D, REAL_t omega, BOOL_t presmoother_forwardSweep, BOOL_t postsmoother_forwardSweep)ο
Bases:
preconditioner
- Aο
A: PyNucleus_base.linear_operators.LinearOperator
- Dο
D: βREAL_t[::1]β
- __init__(*args, **kwargs)ο
- forwardSweepο
forwardSweep: βBOOL_tβ
- postsmoother_forwardSweepο
postsmoother_forwardSweep: βBOOL_tβ
- presmoother_forwardSweepο
presmoother_forwardSweep: βBOOL_tβ
- class PyNucleus_multilevelSolver.smoothers.sorSmoother(A, D, dict params, temporaryMemory=None, temporaryMemory2=None, overlap=None)ο
Bases:
separableSmoother
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.ssorPreconditioner(LinearOperator A, REAL_t[::1] D, REAL_t omega)ο
Bases:
preconditioner
- __init__(*args, **kwargs)ο
- class PyNucleus_multilevelSolver.smoothers.ssorSmoother(A, D, dict params, temporaryMemory=None, overlap=None)ο
Bases:
separableSmoother
- __init__(*args, **kwargs)ο