From e69a2587d84ca7e4252c7790f8cc6b52cbcd5eea Mon Sep 17 00:00:00 2001 From: Noe Brucy Date: Mon, 22 Nov 2021 11:50:29 +0100 Subject: [PATCH] [sinks] update sinks reader to be compatible with new code --- studyprocessor.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/studyprocessor.py b/studyprocessor.py index 83ef311..a895c55 100644 --- a/studyprocessor.py +++ b/studyprocessor.py @@ -252,9 +252,14 @@ class StudyProcessor(Aggregator, HDF5Container): nb_sink = np.int(content[i].split("=")[1]) mass_sink = np.float(content[i + 1].split("=")[1]) time = np.float(content[i + 2].split("=")[1]) + timekey = np.float(content[i + 2].split("=")[0]) series["nb_sink"][run].append(nb_sink) series["mass_sink"][run].append(mass_sink) + + if "[yr]" not in timekey: + time *= self.info["unit_time"].express(U.yr) series["time"][run].append(time) + except (ValueError, IndexError): self._log( "Error encountered in parsing {} (grepped block {})".format( @@ -392,8 +397,8 @@ class StudyProcessor(Aggregator, HDF5Container): """ avg_window in year """ - time_unit = self.save.get_node("/series/sinks_from_log/time")._v_attrs.unit - mass_unit = self.save.get_node("/series/sinks_from_log/mass_sink")._v_attrs.unit + time_unit = self.get_attribute("/series/sinks_from_log/time", "unit") + mass_unit = self.get_attribute("/series/sinks_from_log/mass_sink", "unit") ssfr = {} for run in self.runs: # Surface of the box in pc^2 @@ -401,11 +406,9 @@ class StudyProcessor(Aggregator, HDF5Container): surface = (info["unit_length"].express(U.pc)) ** 2 # WARNING : We do not multiply by boxlen since already done in 'unit_length' (pymses) - time = self.save.get_node("/series/sinks_from_log/time/" + run).read() + time = self.get_value(f"/series/sinks_from_log/time/{run}") time = time * time_unit.express(U.year) - mass_sink = self.save.get_node( - "/series/sinks_from_log/mass_sink/" + run - ).read() + mass_sink = self.get_value(f"/series/sinks_from_log/mass_sink/{run}") mass_sink = mass_sink * mass_unit.express(U.Msun) if avg_window is None: @@ -425,15 +428,13 @@ class StudyProcessor(Aggregator, HDF5Container): return ssfr, {"avg_window": avg_window} def _surfacic_sink_mass(self): - mass_unit = self.save.get_node("/series/sinks_from_log/mass_sink")._v_attrs.unit + mass_unit = self.get_attribute("/series/sinks_from_log/mass_sink", "unit") ssm = {} for run in self.runs: # Surface of the box in pc^2 info = self.snaps[run][self.nums[run][0]].info surface = (info["unit_length"].express(U.pc)) ** 2 - mass_sink = self.save.get_node( - "/series/sinks_from_log/mass_sink/" + run - ).read() + mass_sink = self.get_value(f"/series/sinks_from_log/mass_sink/{run}") mass_sink = mass_sink * mass_unit.express(U.Msun) ssm[run] = mass_sink / surface @@ -443,11 +444,9 @@ class StudyProcessor(Aggregator, HDF5Container): def _turb_power(self): turb_power = {} for run in self.runs: - dt = self.save.get_node("/series/rms_from_log/dt/" + run).read() + dt = self.get_value("/series/rms_from_log/dt/{run}") # Energy injected at each timestep - energy = self.save.get_node( - "/series/rms_from_log/turb_energy/" + run - ).read() + energy = self.get_value("/series/rms_from_log/turb_energy/{run}") # Power of the turbulence at this step in Watts turb_power[run] = energy / dt return turb_power @@ -563,7 +562,7 @@ class StudyProcessor(Aggregator, HDF5Container): self._extract_sinks_from_log, ), group="/series", - unit={"time": "unit_time", "mass_sink": U.Msun, "nb_sink": U.none}, + unit={"time": U.yr, "mass_sink": U.Msun, "nb_sink": U.none}, description={ "time": "Time", "mass_sink": "Total mass of stars",