Skip to content
Snippets Groups Projects
reader_example.py 1.40 KiB
#!/usr/bin/env python3
"""
Read a logger file by using an index file.
Example: ./reader_example.py ../../examples/SedovBlast_3D/index 0.1
"""
import sys
import numpy as np
import matplotlib.pyplot as plt
sys.path.append("../.libs/")

import liblogger as logger


def plot3D(pos):
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax = fig.add_subplot(111, projection="3d")
    ax.plot(pos[:, 0], pos[:, 1], pos[:, 2], ".", markersize=0.2)


def plot2D():
    center = np.array([0.5]*3)
    r2 = np.sum((pos - center)**2, axis=1)

    # plot entropy vs distance
    plt.plot(np.sqrt(r2), data["entropies"], '.',
             markersize=0.2)

    plt.xlim(0., 0.5)
    plt.ylim(-1, 50)
    plt.xlabel("Radius")
    plt.ylabel("Entropy")


basename = "../../examples/HydroTests/SedovBlast_3D/index"
time = 0.05
if len(sys.argv) >= 2:
    basename = sys.argv[1]
else:
    print("No basename supplied (first argument), using default.")
if len(sys.argv) >= 3:
    time = float(sys.argv[2])
else:
    print("No time supplied (second argument), using default.")
if len(sys.argv) > 3:
    print("Ignoring excess arguments '%s'." % sys.argv[3:])
print("basename: %s" % basename)
print("time: %g" % time)

# read dump

t = logger.getTimeLimits(basename)
data = logger.loadSnapshotAtTime(basename, time)
print("The data contains the following elements:")
print(data.dtype.names)

pos = data["positions"]

plot3D(pos)
plt.show()