Example #1
0
def create_logo():
    # Adapted from
    # <https://matplotlib.org/gallery/images_contours_and_fields/tripcolor_demo.html#sphx-glr-gallery-images-contours-and-fields-tripcolor-demo-py>
    # First create the x and y coordinates of the points.
    n_angles = 314
    n_radii = 100
    radii = numpy.linspace(0.0, 1.0, n_radii)

    angles = numpy.linspace(0, 2 * numpy.pi, n_angles, endpoint=False)
    angles = numpy.repeat(angles[..., numpy.newaxis], n_radii, axis=1)
    angles[:, 1::2] += numpy.pi / n_angles

    x = (radii * numpy.cos(angles)).flatten()
    y = (radii * numpy.sin(angles)).flatten()

    # Create the Triangulation; no triangles so Delaunay triangulation created.
    triang = tri.Triangulation(x, y)

    # print(triang)
    # exit(1)
    # import dmsh
    # geo = dmsh.Circle([0.0, 0.0], 1.0)
    # X, cells = dmsh.generate(geo, 0.1)

    z = x + 1j * y
    # z /= numpy.abs(z)

    cplot.tripcolor(triang, z, alpha=0)
    plt.gca().set_aspect("equal", "datalim")
    plt.axis("off")

    plt.savefig("logo.png", transparent=True)
    return
Example #2
0
def test_tripcolor():
    # Adapted from
    # <https://matplotlib.org/gallery/images_contours_and_fields/tripcolor_demo.html#sphx-glr-gallery-images-contours-and-fields-tripcolor-demo-py>
    # First create the x and y coordinates of the points.
    n_angles = 36
    n_radii = 8
    min_radius = 0.25
    radii = numpy.linspace(min_radius, 0.95, n_radii)

    angles = numpy.linspace(0, 2 * numpy.pi, n_angles, endpoint=False)
    angles = numpy.repeat(angles[..., numpy.newaxis], n_radii, axis=1)
    angles[:, 1::2] += numpy.pi / n_angles

    x = (radii * numpy.cos(angles)).flatten()
    y = (radii * numpy.sin(angles)).flatten()
    z = 2 * (x + 1j * y)

    # Create the Triangulation; no triangles so Delaunay triangulation created.
    triang = tri.Triangulation(x, y)

    # Mask off unwanted triangles.
    triang.set_mask(
        numpy.hypot(x[triang.triangles].mean(axis=1), y[triang.triangles].mean(
            axis=1)) < min_radius)

    cplot.tripcolor(triang, z)
    plt.gca().set_aspect("equal", "datalim")
    plt.show()
    return
Example #3
0
def plot_data():
    filename = "data.yml"
    with open(filename) as fh:
        data = yaml.safe_load(fh)

    reader = meshio.xdmf.TimeSeriesReader(data["filename"])
    points, cells = reader.read_points_cells()
    x, y, _ = points.T

    # compute all energies in advance
    energies = []
    mesh = meshplex.MeshTri(points, cells["triangle"])
    for k in range(len(data["mu"])):
        _, point_data, _ = reader.read_data(k)
        psi = point_data["psi"]
        psi = psi[:, 0] + 1j * psi[:, 1]
        energies.append(gibbs_energy(mesh, psi))
    energies = np.array(energies)

    for k in range(len(data["mu"])):
        plt.figure(figsize=(11, 4))

        ax1 = plt.subplot(1, 2, 1)
        ax1.plot(data["mu"], energies)
        ax1.set_xlim(0.0, 1.0)
        ax1.set_ylim(-1.0, 0.0)
        ax1.grid()
        ax1.plot(data["mu"][k], energies[k], "o", color="#1f77f4")
        ax1.set_xlabel("$\\mu$")
        ax1.set_ylabel("$\\mathcal{E}(\\psi)$")

        _, point_data, _ = reader.read_data(k)
        psi = point_data["psi"]
        psi = psi[:, 0] + 1j * psi[:, 1]

        ax2 = plt.subplot(1, 2, 2)
        triang = matplotlib.tri.Triangulation(x, y)
        # The absolute values of the solution psi of the Ginzburg-Landau equations all
        # sit between 0 and 1, so we don't need a fancy scaling of absolute values for
        # cplot. This results in the values with |psi|=1 being displayed as white,
        # however, losing visual information about the complex argument. On the other
        # hand, plots are rather more bright, resulting in more visually appealing
        # figures.
        cplot.tripcolor(triang, psi, abs_scaling=lambda r: r)
        # plt.tripcolor(triang, np.abs(psi))

        ax2.axis("square")
        ax2.set_xlim(-5.0, 5.0)
        ax2.set_ylim(-5.0, 5.0)
        ax2.set_title("$\\psi$")
        # plt.colorbar()
        # plt.set_cmap("gray")
        # plt.clim(0.0, 1.0)

        plt.tight_layout()
        plt.savefig(f"fig{k:03d}.png")
        # plt.show()
        plt.close()