Source code for struphy.linear_algebra.solver
import logging
from dataclasses import dataclass
from struphy.io.options import LiteralOptions
logger = logging.getLogger("struphy")
[docs]
@dataclass
class SolverParameters:
"""Parameters for psydac solvers."""
tol: float = 1e-8
maxiter: int = 3000
info: bool = False
recycle: bool = True
def __post_init__(self):
self.verbose = False
if logger.level <= logging.DEBUG:
self.verbose = True
[docs]
@dataclass
class DiscreteGradientSolverParameters:
"""Parameters for discrete gradient solvers."""
relaxation_factor: float = 0.5
tol: float = 1e-12
maxiter: int = 20
info: bool = False
def __post_init__(self):
self.verbose = False
if logger.level <= logging.DEBUG:
self.verbose = True
[docs]
@dataclass
class NonlinearSolverParameters:
"""Parameters for psydac solvers."""
tol: float = 1e-8
maxiter: int = 100
info: bool = False
type: LiteralOptions.OptsNonlinearSolver = "Picard"
linearize: bool = False
def __post_init__(self):
self.verbose = False
if logger.level <= logging.DEBUG:
self.verbose = True