Skip to content
Snippets Groups Projects
Commit bf33fccb authored by Jean-Matthieu Etancelin's avatar Jean-Matthieu Etancelin Committed by Franck Pérignon
Browse files

Add custom monitor

parent 1f16f0ea
No related branches found
No related tags found
No related merge requests found
import parmepy.tools.numpywrappers as npw
from parmepy.operator.discrete.discrete import DiscreteOperator
class CustomMonitor(DiscreteOperator):
def __init__(self, function, res_shape=1, **kwds):
super(CustomMonitor, self).__init__(**kwds)
self.function = function
self.res_shape = res_shape
def apply(self, simulation):
ite = simulation.currentIteration
if self._writer is not None and self._writer.do_write(ite):
self._writer.buffer[0, 0] = simulation.time
self._writer.buffer[0, 1:] = self.function(simulation,
self.variables)
self._writer.write()
"""
@file custom.py
Compute a user defined function as a monitor.
"""
from parmepy.constants import debug
from parmepy.operator.monitors.monitoring import Monitoring
import parmepy.tools.numpywrappers as npw
from parmepy.tools.profiler import profile
class CustomMonitor(Monitoring):
"""
Defines a customisable monitor.
"""
def __init__(self, function, **kwds):
super(CustomMonitor, self).__init__(**kwds)
## Function to apply
self.function = function
def setUp(self):
if not self._is_uptodate:
for v in self.input:
self.discreteFields[v] = v.discretization(self._topo)
self.d_input = [self.discreteFields[v] for v in self.input]
self._is_uptodate = True
@debug
@profile
def apply(self, simulation=None):
ite = simulation.currentIteration
if self._writer is not None and self._writer.do_write(ite):
self._writer.buffer[0, 0] = simulation.time
self._writer.buffer[0, 1:] = \
self.function(simulation, self.variables)
self._writer.write()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment