diff --git a/pyphare/pyphare/simulator/simulator.py b/pyphare/pyphare/simulator/simulator.py index 435d7b01d..bb812bd7f 100644 --- a/pyphare/pyphare/simulator/simulator.py +++ b/pyphare/pyphare/simulator/simulator.py @@ -3,6 +3,7 @@ # import os +import sys import datetime import atexit import time as timem @@ -91,7 +92,7 @@ def __init__(self, simulation, auto_dump=True, **kwargs): self.cpp_sim = None # BE self.cpp_dw = None # DRAGONS, i.e. use weakrefs if you have to ref these. self.post_advance = kwargs.get("post_advance", None) - + self.initialized = False self.print_eol = "\n" if kwargs.get("print_one_line", True): self.print_eol = "\r" @@ -132,7 +133,6 @@ def setup(self): ) return self except Exception: - import sys import traceback print('Exception caught in "Simulator.setup()": {}'.format(sys.exc_info())) @@ -140,11 +140,9 @@ def setup(self): raise ValueError("Error in Simulator.setup(), see previous error") def initialize(self): - if self.cpp_sim is not None: - raise ValueError( - "Simulator already initialized: requires reset to re-initialize" - ) try: + if self.initialized: + return if self.cpp_hier is None: self.setup() @@ -152,12 +150,11 @@ def initialize(self): return self self.cpp_sim.initialize() + self.initialized = True self._auto_dump() # first dump might be before first advance return self except Exception: - import sys - print( 'Exception caught in "Simulator.initialize()": {}'.format( sys.exc_info()[0] @@ -166,8 +163,6 @@ def initialize(self): raise ValueError("Error in Simulator.initialize(), see previous error") def _throw(self, e): - import sys - print_rank0(e) sys.exit(1) @@ -264,6 +259,7 @@ def reset(self): self.cpp_dw = None self.cpp_sim = None self.cpp_hier = None + self.initialized = False if "samrai" in life_cycles: type(life_cycles["samrai"]).reset() return self @@ -289,7 +285,7 @@ def interp_order(self): return self.cpp_sim.interp_order # constexpr static value def _check_init(self): - if self.cpp_sim is None: + if not self.initialized: self.initialize() def _log_to_file(self):