From a65a89df3a49bd82e121fa9cb2fc2668b224a374 Mon Sep 17 00:00:00 2001 From: Noe Brucy Date: Thu, 2 Jun 2022 10:36:56 +0200 Subject: [PATCH] diisplay bugfix --- plotter.py | 25 ++++++++++++++++++------- studyprocessor.py | 35 +++++++++++++++++++++-------------- units.py | 4 ++-- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/plotter.py b/plotter.py index 19bb16b..4c2906d 100644 --- a/plotter.py +++ b/plotter.py @@ -95,26 +95,37 @@ def streamplot(ax, map_h, map_v, extent, **kwargs): ax.streamplot(hh, vv, map_h, map_v, **kwargs) -def quiver(ax, map_h, map_v, extent, key_v=None, label="", **kwargs): +def quiver(ax, map_h, map_v, extent, key_v=None, lognorm=False, label="", **kwargs): hh, vv = gethv(map_h, map_v, extent) - # plot vector field - vec_field = ax.quiver(hh, vv, map_h, map_v, units="width", **kwargs) - # get norm information norm_v = np.sqrt(map_h ** 2 + map_v ** 2) max_v = np.max(norm_v) min_v = np.min(norm_v) - # add vector key + if key_v is None: - key_v = (max_v + min_v) / 2.0 + key_v = (max_v + min_v) / 2.0 + + key = f"${key_v:g}$ {label}" + + if lognorm: + lognorm_v = np.log10(norm_v) + map_h *= lognorm_v/norm_v + map_v *= lognorm_v/norm_v + key_v = np.log10(key_v) + + + # plot vector field + vec_field = ax.quiver(hh, vv, map_h, map_v, units="width", **kwargs) + + # add vector key ax.quiverkey( vec_field, 0.6, 0.98, key_v, - f"${key_v:g}$ {label}", + key, labelpos="E", coordinates="figure", ) diff --git a/studyprocessor.py b/studyprocessor.py index 6ae93df..5079ae6 100644 --- a/studyprocessor.py +++ b/studyprocessor.py @@ -320,19 +320,27 @@ class StudyProcessor(Aggregator, HDF5Container): 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["mem_cells"][run].append(mempc1) - series["mem_parts"][run].append(mempc2) + try: + 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["mem_cells"][run].append(mempc1) + series["mem_parts"][run].append(mempc2) + except (ValueError, IndexError): + self._log( + "[fine step] Error encountered in parsing {} (grepped block {})".format( + log_filename, i + ), + "WARNING", + ) return series def _extract_coarse_step_from_log(self, series, log_filename, run): @@ -374,7 +382,6 @@ class StudyProcessor(Aggregator, HDF5Container): np.float(content[j].split(":")[1].split()[0]) ) series["memory"][run].append(content[j + 1].split(":")[1]) - return series def _extract_rms_from_log(self, series, log_filename, run): diff --git a/units.py b/units.py index 8ab046a..933a0ea 100644 --- a/units.py +++ b/units.py @@ -25,9 +25,9 @@ def convert_exp(number, digits=4): exp = splitted[1] exp_str = "10^{" + str(int(exp)) + "}" if float(coeff) == 1.0: - return exp_str + return f"${exp_str}$" else: - return "{}\\times {}".format(coeff, exp_str) + return f"${coeff}\\times {exp_str}$" def unit_str(unit, base=None, prefix="", format=" [{unit}]"):