[postprocessor] [plotter] Make generic rules averageables + cleanup

This commit is contained in:
Noe Brucy
2021-03-16 17:06:29 +01:00
parent b6875d3b9d
commit 6e182ebb35
2 changed files with 160 additions and 213 deletions
+57 -90
View File
@@ -1269,39 +1269,6 @@ class Plotter(Aggregator, BaseProcessor):
"Map of the grav Shakura&Sunaev alpha parameter for disks",
dependencies=["alpha_grav"],
),
"vphi": PlotRule(
self,
partial(
self._plot_map,
"vphi",
label=r"$v_\phi$",
# unit=U.km_s
),
"Azimuthal speed",
dependencies=["vphi"],
),
"vr": PlotRule(
self,
partial(
self._plot_map,
"vr",
label=r"$v_r$",
# unit=U.km_s
),
"Radial speed",
dependencies=["vr"],
),
"rho": PlotRule(
self,
partial(
self._plot_map,
"rho",
label=r"$\rho$",
# unit=U.Msun_pc3
),
"Density slice at s = 0, with s = x, y or z.",
dependencies=["rho"],
),
"coldens_l": PlotRule(
self,
partial(
@@ -1314,41 +1281,41 @@ class Plotter(Aggregator, BaseProcessor):
"Column density with level overlay",
dependencies=["coldens", "levels"],
),
"rho_v": PlotRule(
"slice_rho_v": PlotRule(
self,
partial(
self._plot_map,
"rho",
"slice_rho",
label=r"$\rho$",
unit=U.Msun_pc3,
overlays=[self._overlay_speed],
),
"Density slice with speed overlay",
dependencies=["rho", "speed_h", "speed_v"],
dependencies=["slice_rho", "speed_h", "speed_v"],
),
"rho_B": PlotRule(
"slice_rho_B": PlotRule(
self,
partial(
self._plot_map,
"rho",
"slice_rho",
label=r"$\rho$",
unit=U.Msun_pc3,
overlays=[self._overlay_B],
),
"Density slice with magnetic field overlay",
dependencies=["rho", "B_h", "B_v"],
dependencies=["slice_rho", "B_h", "B_v"],
),
"rho_B_vel": PlotRule(
"slice_rho_B_vel": PlotRule(
self,
partial(
self._plot_map,
"rho",
"slice_rho",
label=r"$\rho$",
unit=U.Msun_pc3,
overlays=[self._overlay_B, self._overlay_speed],
),
"Density slice with magnetic field and velocity overlay",
dependencies=["rho", "B_h", "B_v", "speed_h", "speed_v"],
dependencies=["slice_rho", "B_h", "B_v", "speed_h", "speed_v"],
),
"jeans_ratio": PlotRule(
self,
@@ -1629,17 +1596,58 @@ class Plotter(Aggregator, BaseProcessor):
averageables = [
"coldens",
"rho",
"T",
"Q",
"vr",
"vphi",
"rho_avg",
"P_avg",
"T_avg",
"T",
"T_mwavg",
"alpha_disk",
"alpha_grav",
]
# Generic rules directly from Ramses fields
for field in self.pp_params.pymses.variables:
def generic_rule(name):
self.rules["slice_" + name] = PlotRule(
self,
partial(self._plot_map, "slice_" + name),
"{} slice".format(name),
dependencies=["slice_" + name],
)
self.rules[name + "_mwavg"] = PlotRule(
self,
partial(self._plot_map, name + "_mwavg"),
"Ax mass-weighted averaged {}".format(name),
dependencies=[name + "_mwavg"],
)
self.rules[name + "_avg"] = PlotRule(
self,
partial(self._plot_map, name + "_avg"),
"Ax averaged {}".format(name),
dependencies=[name + "_avg"],
)
averageables.append("slice_" + name)
averageables.append(name + "_mwavg")
averageables.append(name + "_avg")
# special for vectors
if field in ["g", "vel"]:
# Components
for i, dir in enumerate(["x", "y", "z"]):
generic_rule(field + dir)
# Radial
generic_rule(field + "r")
# Orthoradial
generic_rule(field + "phi")
# Norm
generic_rule(field + "_norm")
else:
generic_rule(field)
for name in averageables:
self.rules["rad_" + name] = PlotRule(
self,
@@ -1698,47 +1706,6 @@ class Plotter(Aggregator, BaseProcessor):
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:
def generic_rule(name):
self.rules["slice_" + name] = PlotRule(
self,
partial(self._plot_map, "slice_" + name),
"{} slice".format(name),
dependencies=["slice_" + name],
)
self.rules[name + "_mwavg"] = PlotRule(
self,
partial(self._plot_map, name + "_mwavg"),
"Ax mass-weighted averaged {}".format(name),
dependencies=[name + "_mwavg"],
)
self.rules[name + "_avg"] = PlotRule(
self,
partial(self._plot_map, name + "_avg"),
"Ax averaged {}".format(name),
dependencies=[name + "_avg"],
)
# special for vectors
if field in ["g", "vel"]:
# Components
for i, dir in enumerate(["x", "y", "z"]):
generic_rule(field + dir)
# Radial
generic_rule(field + "r")
# Orthoradial
generic_rule(field + "phi")
# Norm
generic_rule(field + "_norm")
else:
generic_rule(field)
# Dict of overlays
self.overlays = {
"B": self._overlay_B,