class BlockDiagnostic(Diagnostic): def __init__(self, owner: Simulation, input_data: dict): super().__init__(owner, input_data) self.data = None self.component = input_data.get("component", 1) self.output_function = None self.csv = None def inspect_resource(self, resource): if "Block:" + self.component in resource: self.data = resource["Block:" + self.component] def diagnose(self): self.output_function(self.data[0, :]) def initialize(self): # setup output method functions = {"stdout": self.print_diagnose, "csv": self.csv_diagnose, } self.output_function = functions[self.input_data["output_type"]] if self.input_data["output_type"] == "csv": diagnostic_size = (self.owner.clock.num_steps + 1, 3) self.csv = CSVOutputUtility(self.input_data["filename"], diagnostic_size) def finalize(self): self.diagnose() if self.input_data["output_type"] == "csv": self.csv.finalize() def print_diagnose(self, data): print(data) def csv_diagnose(self, data): self.csv.append(data)
class ParticleDiagnostic(Diagnostic): def __init__(self, owner: Simulation, input_data: dict): super().__init__(owner, input_data) self.data = None self.component = input_data["component"] self.output_function = None self.outputter = None def inspect_resource(self, resource): if "ChargedParticle:" + self.component in resource: self.data = resource["ChargedParticle:" + self.component] def diagnose(self): self.outputter.diagnose(self.data[0, :]) def initialize(self): # setup output method diagnostic_size = (self._owner.clock.num_steps + 1, 3) self.outputter = CSVOutputUtility(self._input_data["filename"], diagnostic_size) def finalize(self): self.diagnose() self.outputter.finalize() def print_diagnose(self, data): print(data)
def initialize(self): # setup output method functions = {"stdout": self.print_diagnose, "csv": self.csv_diagnose, } self.output_function = functions[self.input_data["output_type"]] if self.input_data["output_type"] == "csv": diagnostic_size = (self.owner.clock.num_steps + 1, 3) self.csv = CSVOutputUtility(self.input_data["filename"], diagnostic_size)
class BlockDiagnostic(Diagnostic): def __init__(self, owner: Simulation, input_data: dict): super().__init__(owner, input_data) self.data = None self.component = input_data.get("component", 1) self.outputter = None def inspect_resource(self, resource): if "Block:" + self.component in resource: self.data = resource["Block:" + self.component] def diagnose(self): self.outputter.diagnose(self.data[0, :]) def initialize(self): diagnostic_size = (self._owner.clock.num_steps + 1, 3) self.outputter = CSVOutputUtility(self._input_data["filename"], diagnostic_size) def finalize(self): self.diagnose() self.outputter.finalize()
def initialize(self): # setup output method diagnostic_size = (self._owner.clock.num_steps + 1, 3) self.outputter = CSVOutputUtility(self._input_data["filename"], diagnostic_size)