Source code for andes.routines.base

"""
Base class for ANDES calculation routines.
"""

from andes.linsolvers.solverbase import Solver
from andes.core import Config
from collections import OrderedDict


[docs]class BaseRoutine: """ Base routine class. Provides references to system, config, and solver. """
[docs] def __init__(self, system=None, config=None): self.system = system self.config = Config(self.class_name) if config is not None: self.config.load(config) self.config.add(OrderedDict((('sparselib', 'klu'), ('linsolve', 0), ))) self.config.add_extra("_help", sparselib="linear sparse solver name", linsolve="solve symbolic factorization each step (enable when KLU segfaults)", ) self.config.add_extra("_alt", sparselib=("klu", "umfpack", "spsolve", "cupy"), linsolve=(0, 1), ) self.solver = Solver(sparselib=self.config.sparselib) self.exec_time = 0.0 # recorded time to execute the routine in seconds
@property def class_name(self): return self.__class__.__name__
[docs] def doc(self, max_width=78, export='plain'): """ Routine documentation interface. """ return self.config.doc(max_width, export)
[docs] def init(self): """ Routine initialization interface. """ pass
[docs] def run(self, **kwargs): """ Routine main entry point. """ raise NotImplementedError
[docs] def summary(self, **kwargs): """ Summary interface """ raise NotImplementedError
[docs] def report(self, **kwargs): """ Report interface. """ raise NotImplementedError