[log extractor] Add parser for fine step and plot

This commit is contained in:
Noe Brucy
2021-05-19 17:22:50 +02:00
parent fe62be0550
commit d5c8241e1d
2 changed files with 32 additions and 4 deletions
+19
View File
@@ -252,6 +252,25 @@ class Comparator(Aggregator, HDF5Container):
series["sfr"][run].append(sfr) series["sfr"][run].append(sfr)
return series 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): def _extract_cons_from_log(self, series, log_filename, run):
rism = self.pp_params.input.ramses_ism rism = self.pp_params.input.ramses_ism
nlines = 2 + int(rism) # Number of useful lines nlines = 2 + int(rism) # Number of useful lines
+13 -4
View File
@@ -1208,13 +1208,17 @@ class Plotter(Aggregator, BaseProcessor):
plt.xlim(tmin, tmax) plt.xlim(tmin, tmax)
plt.ylim(ylim) plt.ylim(ylim)
def _gen_from_log(self, logrule, name, description="Generated"): def _gen_from_log(self, logrule, name_y, name_x="time", description="Generated"):
self.rules[name] = PlotRule( if name_x == "time":
name_rule = name_y
else:
name_rule = name_y + "_" + name_x
self.rules[name_rule] = PlotRule(
self, self,
partial( partial(
self._plot, self._plot,
"/series/" + logrule + "/time", "/series/" + logrule + "/" + name_x,
"/series/" + logrule + "/" + name, "/series/" + logrule + "/" + name_y,
xunit=U.Myr, xunit=U.Myr,
), ),
description=description, description=description,
@@ -1677,6 +1681,11 @@ class Plotter(Aggregator, BaseProcessor):
for name in ["step", "mcons", "econs", "epot", "ekin", "eint", "emag"]: for name in ["step", "mcons", "econs", "epot", "ekin", "eint", "emag"]:
self._gen_from_log("cons_from_log", name) 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 # Generic rules directly from Ramses fields
for field in self.pp_params.pymses.variables: for field in self.pp_params.pymses.variables: