Source code for pyrodeo.claw_solver

# -*- coding: utf-8 -*-
"""Defines a generic conservation law solver.
"""

from __future__ import print_function

import numpy as np

[docs]class ClawSolver: """Generic conservation law solver. Note: Serves as a base class to construct various solvers. Can not be used on its own. The following method is available: """
[docs] def limiter(self, a, b, sb): """Limiter function to limit slopes/fluxes. This limiter function can, based on the parameter sb, emulate total variation diminishing limiters from minmod (sb = 1) to superbee (sb = 2). Args: a (ndarray): First slope to compare. b (ndarray): Second slope to compare. sb (float): Limiter parameter. Should be >= 1 (minmod, most diffusive limiter) and <= 2 (superbee, least diffusive limiter). Returns: ndarray: Limited slopes. """ return (np.maximum(0.0*a, np.minimum(sb*a, np.maximum(b, np.minimum(a, sb*b)))) + np.minimum(0.0*a, np.maximum(sb*a, np.minimum(b, np.maximum(a, sb*b)))))