Source code for cosapp.drivers.time.euler
from numbers import Number
from typing import Optional
from cosapp.drivers.time.interfaces import ExplicitTimeDriver
[docs]class EulerExplicit(ExplicitTimeDriver):
def __init__(
self,
name="Euler",
owner: Optional["cosapp.systems.System"] = None,
**options
):
"""Initialize driver
Parameters
----------
owner: System, optional
:py:class:`~cosapp.systems.system.System` to which driver belongs; defaults to `None`
name: str, optional
Name of the `Driver`.
**options : Dict[str, Any]
Optional keywords arguments; may contain time step and interval, with keys `dt` and `time_interval`
"""
super().__init__(name, owner, **options)
def _update_transients(self, dt: Number) -> None:
"""
Time integration of transient variables over time step `dt` by explicit Euler scheme.
"""
for x in self._transients.values():
x.value += x.d_dt * dt