Source code for snek5000.solvers.kth

"""KTH base solver
==================

"""

from pathlib import Path

# NOTE: Ideally InfoSolverMake should be used. Here, this won't work because
# user files are missing.
# from ..info import InfoSolverMake as _InfoSolver
from .. import logger
from ..info import InfoSolverNek as _InfoSolver
from ..util import docstring_params
from .base import SimulNek


[docs]class InfoSolverKTH(_InfoSolver): """Contain the information on a :class:`snek5000.solvers.kth.SimulKTH` instance. """ def _init_root(self): super()._init_root() self.module_name = "snek5000.solvers.kth" self.class_name = "Simul" self.short_name = "kth"
[docs]class SimulKTH(SimulNek): """A base class which incorporates parameters for KTH toolbox also. Examples -------- >>> from snek5000.solvers.kth import Simul >>> params = Simul.create_default_params() >>> sim = Simul(params) """ InfoSolver = InfoSolverKTH @classmethod def _complete_params_with_default(cls, params): params = super()._complete_params_with_default(params) for section in ("runpar", "monitor", "chkpoint", "stat"): params.nek._set_child(section) attribs = {"parf_write": False, "parf_name": "outparfile"} params.nek.runpar._set_attribs(attribs) params.nek.runpar._set_doc( """ Runtime parameter section for rprm module (`KTH toolbox <https://github.com/KTH-Nek5000/KTH_Toolbox>`__) - ``parf_write``: Do we write runtime parameter file - ``parf_name``: Runtime parameter file name for output (without .par) """ ) attribs = {"log_level": 4, "wall_time": "23:45"} params.nek.monitor._set_attribs(attribs) params.nek.monitor._set_doc( """ Runtime parameter section for monitor module (`KTH toolbox <https://github.com/KTH-Nek5000/KTH_Toolbox>`__) - ``log_level``: Logging threshold for toolboxes - ``wall_time``: Simulation wall time """ ) attribs = {"read_chkpt": False, "chkp_fnumber": 1, "chkp_interval": 250} params.nek.chkpoint._set_attribs(attribs) params.nek.chkpoint._set_doc( """ Runtime parameter section for checkpoint module (`KTH toolbox <https://github.com/KTH-Nek5000/KTH_Toolbox>`__) - ``read_chkpt``: Restart from checkpoint - ``chkp_fnumber``: Restart file number - ``chkp_interval``: Checkpoint saving frequency (number of time steps) """ ) attribs = {"av_step": 4, "io_step": 50} params.nek.stat._set_attribs(attribs) params.nek.stat._set_doc( """ Runtime parameter section for statistics module (`KTH toolbox <https://github.com/KTH-Nek5000/KTH_Toolbox>`__) - ``av_step``: Frequency of averaging - ``io_step``: Frequency of file saving """ ) # Document all params for child_name in ("runpar", "monitor", "chkpoint", "stat"): child = getattr(params.nek, child_name) child._autodoc_par(indent=4) return params
Simul = SimulKTH Simul.__doc__ += """ Notes ----- Here, only the documention for ``params.nek`` is displayed. For the documentation on ``params.oper`` see :mod:`snek5000.operators`. """ + docstring_params( Simul, indent_len=4 )