def save_to_h5(self, process, file_path): cadet = CadetAPI() cadet.root = self.get_process_config(process) cadet.filename = file_path cadet.save()
def run(self, process, file_path=None): """Interface to the solver run function The configuration is extracted from the process object and then saved as a temporary .h5 file. After termination, the same file is processed and the results are returned. Cadet Return information: - 0: pass (everything allright) - 1: Standard Error - 2: IO Error - 3: Solver Error Parameters ---------- process : Process process to be simulated Returns ------- results : SimulationResults Simulation results including process and solver configuration. Raises ------ TypeError If process is not instance of Process See also -------- get_process_config get_simulation_results """ if not isinstance(process, Process): raise TypeError('Expected Process') cadet = CadetAPI() cadet.root = self.get_process_config(process) if file_path is None: cadet.filename = self.get_tempfile_name() else: cadet.filename = file_path cadet.save() try: start = time.time() return_information = cadet.run(timeout=self.timeout) elapsed = time.time() - start except TimeoutExpired: raise CADETProcessError('Simulator timed out') if return_information.returncode != 0: self.logger.error( 'Simulation of {} with parameters {} failed.'.format( process.name, process.config ) ) raise CADETProcessError( 'CADET Error: {}'.format(return_information.stderr) ) try: cadet.load() results = self.get_simulation_results( process, cadet, elapsed, return_information ) except TypeError: raise CADETProcessError('Unexpected error reading SimulationResults.') # Remove files if file_path is None: os.remove(cadet.filename) return results