diff --git a/comparator.py b/comparator.py index 388923b..d20474d 100644 --- a/comparator.py +++ b/comparator.py @@ -252,6 +252,25 @@ class Comparator(Aggregator, HDF5Container): series["sfr"][run].append(sfr) return series + def _extract_fine_step_from_log(self, series, log_filename, run): + cmd_grep = "grep 'Fine step' {} ".format(log_filename) + content = os.popen(cmd_grep).readlines() + for i in range(0, len(content)): + data = content[i].replace("=", " ").split() + fine_step = np.int(data[2]) + time = np.float(data[4]) + dt = np.float(data[6]) + a = np.float(data[8]) + mempc1 = np.float(data[10][:-1]) + mempc2 = np.float(data[11][:-1]) + series["time"][run].append(time) + series["fine_step"][run].append(fine_step) + series["dt"][run].append(dt) + series["a"][run].append(a) + series["mempc1"][run].append(mempc1) + series["mempc2"][run].append(mempc2) + return series + def _extract_cons_from_log(self, series, log_filename, run): rism = self.pp_params.input.ramses_ism nlines = 2 + int(rism) # Number of useful lines diff --git a/plotter.py b/plotter.py index 4503634..78a45b4 100644 --- a/plotter.py +++ b/plotter.py @@ -1208,13 +1208,17 @@ class Plotter(Aggregator, BaseProcessor): plt.xlim(tmin, tmax) plt.ylim(ylim) - def _gen_from_log(self, logrule, name, description="Generated"): - self.rules[name] = PlotRule( + def _gen_from_log(self, logrule, name_y, name_x="time", description="Generated"): + if name_x == "time": + name_rule = name_y + else: + name_rule = name_y + "_" + name_x + self.rules[name_rule] = PlotRule( self, partial( self._plot, - "/series/" + logrule + "/time", - "/series/" + logrule + "/" + name, + "/series/" + logrule + "/" + name_x, + "/series/" + logrule + "/" + name_y, xunit=U.Myr, ), description=description, @@ -1677,6 +1681,11 @@ class Plotter(Aggregator, BaseProcessor): for name in ["step", "mcons", "econs", "epot", "ekin", "eint", "emag"]: self._gen_from_log("cons_from_log", name) + for name in ["fine_step", "dt", "a", "mempc1", "mempc2"]: + self._gen_from_log("fine_step_from_log", name) + for name in ["time", "dt", "a", "mempc1", "mempc2"]: + self._gen_from_log("fine_step_from_log", name_y=name, name_x="fine_step") + # Generic rules directly from Ramses fields for field in self.pp_params.pymses.variables: