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) self.config._deprecated['sparselib'] = 'Use [Runtime] section instead.' if config is not None: self.config.load(config) self.config.add(OrderedDict((('linsolve', 0), ))) self.config.add_extra("_help", linsolve="solve symbolic factorization each step (enable when KLU segfaults)", ) self.config.add_extra("_alt", linsolve=(0, 1), ) sparselib = 'klu' if system is not None and hasattr(system, 'runtime'): sparselib = system.runtime.sparselib self.solver = Solver(sparselib=sparselib) self.exec_time = 0.0 # recorded time to execute the routine in seconds
@property def class_name(self): return self.__class__.__name__ def doc(self, max_width=78, export='plain'): """ Routine documentation interface. """ return self.config.doc(max_width, export) def init(self): """ Routine initialization interface. """ pass def run(self, **kwargs): """ Routine main entry point. """ raise NotImplementedError def summary(self, **kwargs): """ Summary interface """ raise NotImplementedError def report(self, **kwargs): """ Report interface. """ raise NotImplementedError