Source code for IOM_plugin_parameters
"""The WaveBlocks Project
IOM plugin providing functions for handling simulation parameter data.
@author: R. Bourquin
@copyright: Copyright (C) 2011, 2012, 2016 R. Bourquin
@license: Modified BSD License
"""
from WaveBlocksND.ParameterProvider import ParameterProvider
[docs]def add_parameters(self, blockid="global"):
r"""Add storage for the simulation parameters.
:param blockid: The ID of the data block to operate on.
"""
# Store the simulation parameters
# We are only interested in the attributes of this data set
# as they are used to store the simulation parameters.
self._srf[self._prefixb + str(blockid)].create_dataset("simulation_parameters", (1, 1))
[docs]def delete_parameters(self, blockid="global"):
r"""Remove the stored simulation parameters.
:param blockid: The ID of the data block to operate on.
"""
try:
del self._srf[self._prefixb + str(blockid) + "/simulation_parameters"]
except KeyError:
pass
[docs]def has_parameters(self, blockid="global"):
r"""Ask if the specified data block has the desired data tensor.
:param blockid: The ID of the data block to operate on.
"""
return "simulation_parameters" in self._srf[self._prefixb + str(blockid)].keys()
[docs]def save_parameters(self, parameters, blockid="global"):
r"""Save the simulation parameters.
:param parameters: The simulation parameters to store.
:param blockid: The ID of the data block to operate on.
"""
paset = self._srf["/" + self._prefixb + str(blockid) + "/simulation_parameters"]
for param, value in parameters:
paset.attrs[param] = self._save_attr_value(value)
[docs]def load_parameters(self, blockid="global"):
r"""Load the simulation parameters.
:param blockid: The ID of the data block to operate on.
"""
p = self._srf["/" + self._prefixb + str(blockid) + "/simulation_parameters"].attrs
PP = ParameterProvider()
for key, value in p.items():
PP[key] = self._load_attr_value(value)
# Compute some values on top of the given input parameters
PP.compute_parameters()
return PP
[docs]def update_parameters(self, parameters, blockid="global"):
r"""Update the parameters by some new values.
:param parameters: The parameters containing updated values.
:param blockid: The ID of the data block to operate on.
"""
params = self.load_parameters(blockid=blockid)
self.delete_parameters(blockid=blockid)
params.update_parameters(parameters)
self.add_parameters(blockid=blockid)
self.save_parameters(params, blockid=blockid)