Source code for sharpy.postproc.cleanup

import os

import numpy as np
from tvtk.api import tvtk, write_data

from sharpy.utils.solver_interface import solver, BaseSolver
import sharpy.utils.settings as settings_utils


[docs]@solver class Cleanup(BaseSolver): """ Clean-up old timesteps to save RAM memory """ solver_id = 'Cleanup' solver_classification = 'post-processor' settings_types = dict() settings_default = dict() settings_description = dict() settings_types['clean_structure'] = 'bool' settings_default['clean_structure'] = True settings_description['clean_structure'] = 'Clean-up :class:`~sharpy.utils.datastructures.StructTimeStepInfo`' settings_types['clean_aero'] = 'bool' settings_default['clean_aero'] = True settings_description['clean_aero'] = 'Clean-up :class:`~sharpy.utils.datastructures.AeroTimeStepInfo`' settings_types['remaining_steps'] = 'int' settings_default['remaining_steps'] = 10 settings_description['remaining_steps'] = 'The last `remaining_steps` are not cleaned up' table = settings_utils.SettingsTable() __doc__ += table.generate(settings_types, settings_default, settings_description) def __init__(self): self.settings = None self.data = None self.caller = None def initialise(self, data, custom_settings=None, caller=None, restart=False): self.data = data if custom_settings is None: self.settings = data.settings[self.solver_id] else: self.settings = custom_settings settings_utils.to_custom_types(self.settings, self.settings_types, self.settings_default) self.caller = caller def run(self, **kwargs): online = settings_utils.set_value_or_default(kwargs, 'online', False) if self.settings['clean_structure']: self.clean(self.data.structure.timestep_info, self.settings['remaining_steps']) if self.settings['clean_aero']: self.clean(self.data.aero.timestep_info, self.settings['remaining_steps']) return self.data def clean(self, series, n_steps): for i in range(len(series[:-n_steps])): series[i] = None