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
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
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()