Source code for terrainbento.output_writers.static_interval_adapters
#!/usr/bin/env python3
from terrainbento.output_writers.static_interval_writer import (
StaticIntervalOutputWriter,
)
[docs]class StaticIntervalOutputClassAdapter(StaticIntervalOutputWriter):
[docs] def __init__(
self,
model,
output_interval,
ow_class,
name="class-output-writer",
**static_interval_kwargs,
):
"""A simple output writer which converts old style 'class' output
writers to a new style static interval writer.
Parameters
----------
model : a terrainbento ErosionModel instance
output_interval : float, int
The model defined output interval.
ow_class : uninstantiated output class
An uninstantiated class that writes output in a **run_one_step**
function.
name : string, optional
The name of the output writer to use when generating output
filenames. Defaults to 'class-output-writer'
static_interval_kwargs : keyword args, optional
Keyword arguments that will be passed directly to
StaticIntervalOutputWriter. These include:
* save_first_timestep : bool, defaults to False
* save_last_timestep : bool, defaults to True
* output_dir : string, defaults to './output'
Please see :py:class:`StaticIntervalOutputWriter` and
:py:class:`GenericOutputWriter` for more detail. Note: `add_id` is
automatically included as True.
Returns
-------
StaticIntervalOutputClassAdapter: object
"""
static_interval_kwargs["add_id"] = True # Force add_id to be True
super().__init__(
model,
name=name,
intervals=output_interval,
intervals_repeat=False,
times=None,
**static_interval_kwargs,
)
self.ow_class = ow_class(model)
[docs] def run_one_step(self):
""" Call the old-style class's output function. """
self.ow_class.run_one_step()
[docs]class StaticIntervalOutputFunctionAdapter(StaticIntervalOutputWriter):
[docs] def __init__(
self,
model,
output_interval,
ow_function,
name="function-output-writer",
**static_interval_kwargs,
):
"""A simple output writer which converts old style 'function' output
writers to a new style static interval writer.
Parameters
----------
model : a terrainbento ErosionModel instance
output_interval : float, int
The model defined output interval.
ow_function : output function
A function that can write output. This function must accept the
model as its only argument.
name : string, optional
The name of the output writer to use when generating output
filenames. Defaults to 'function-output-writer'
static_interval_kwargs : keyword args, optional
Keyword arguments that will be passed directly to
StaticIntervalOutputWriter. These include:
* save_first_timestep : bool, defaults to False
* save_last_timestep : bool, defaults to True
* output_dir : string, defaults to './output'
Please see :py:class:`StaticIntervalOutputWriter` and
:py:class:`GenericOutputWriter` for more detail. Note: `add_id` is automatically included as True.
Returns
-------
StaticIntervalOutputFunctionAdapter: object
"""
static_interval_kwargs["add_id"] = True # Force add_id to be True
super().__init__(
model,
name=name,
intervals=output_interval,
intervals_repeat=False,
times=None,
**static_interval_kwargs,
)
self.ow_function = ow_function
[docs] def run_one_step(self):
""" Call the old-style output function. """
self.ow_function(self.model)