From 898e71d2c14572bf9aeeef55f668848b7fea2641 Mon Sep 17 00:00:00 2001 From: Kees van Kempen Date: Tue, 18 Oct 2022 20:42:06 +0200 Subject: [PATCH] 06: Calculate and store squared magnetization And elaborate on my toc function. --- Exercise sheet 6/exercise_sheet_06.ipynb | 107 ++++++++++++++++++++--- Exercise sheet 6/xy_data.hdf5 | Bin 2936 -> 22584 bytes 2 files changed, 97 insertions(+), 10 deletions(-) diff --git a/Exercise sheet 6/exercise_sheet_06.ipynb b/Exercise sheet 6/exercise_sheet_06.ipynb index c2c7467..abd31a8 100644 --- a/Exercise sheet 6/exercise_sheet_06.ipynb +++ b/Exercise sheet 6/exercise_sheet_06.ipynb @@ -469,6 +469,11 @@ "\n", "t_0 = time.time()\n", "def toc():\n", + " \"\"\"Return how many seconds the function was last called.\"\"\"\n", + " \n", + " if not 't_0' in globals():\n", + " return -np.inf\n", + " \n", " global t_0\n", " dt = time.time() - t_0\n", " t_0 = time.time()\n", @@ -479,8 +484,8 @@ " state = xy_aligned_init_config(width)\n", " cluster_sizes = np.zeros(len(temperatures))\n", " \n", - " t_0 = time.time()\n", " for idx, T in enumerate(temperatures):\n", + " toc()\n", " print(\"T =\", T)\n", " beta = 1/T\n", " \n", @@ -491,7 +496,7 @@ " \n", " # Measure\n", " for _ in range(measurement_moves):\n", - " cluster_sizes[idx] += xy_cluster_move(state,beta)\n", + " cluster_sizes[idx] += np.norm(xy_cluster_move(state,beta))\n", " cluster_sizes[idx] /= measurement_moves\n", " print(\"\\tmeasuring took\", toc(), \" seconds\")\n", " print()\n", @@ -547,7 +552,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -561,8 +566,8 @@ "source": [ "# Plotting\n", "with h5py.File(\"xy_data.hdf5\", \"r\") as f:\n", - " plt.scatter(temperatures, f[\"cluster-size\"], marker='x')\n", - " plt.xlabel(\"T\")\n", + " plt.scatter(temperatures, f[\"cluster-size\"], marker='4', s=100)\n", + " plt.xlabel(\"temperature $T$\")\n", " plt.ylabel(\"average cluster size\")\n", " plt.title(\"Average cluster size for the $w \\\\times w$ XY model \\n\"\n", " \"(w = {}, #equilibrations = {}, #measurements = {})\"\n", @@ -600,7 +605,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "71323e81", "metadata": { "deletable": false, @@ -615,19 +620,101 @@ "task": false } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T = 0.5\n", + "\tequilibrating took 2.6317245960235596 seconds\n", + "\tmeasuring took 13.053837060928345 seconds\n", + "\n", + "T = 0.6\n", + "\tequilibrating took 2.8574910163879395 seconds\n", + "\tmeasuring took 12.967190027236938 seconds\n", + "\n", + "T = 0.7\n", + "\tequilibrating took 3.4188122749328613 seconds\n", + "\tmeasuring took 16.535584449768066 seconds\n", + "\n", + "T = 0.8\n", + "\tequilibrating took 3.129852294921875 seconds\n", + "\tmeasuring took 14.666396617889404 seconds\n", + "\n", + "T = 0.9\n", + "\tequilibrating took 2.749675750732422 seconds\n", + "\tmeasuring took 12.164067506790161 seconds\n", + "\n", + "T = 1.0\n", + "\tequilibrating took 2.770905017852783 seconds\n", + "\tmeasuring took 11.673817873001099 seconds\n", + "\n", + "T = 1.1\n", + "\tequilibrating took 2.59846830368042 seconds\n", + "\tmeasuring took 9.312909126281738 seconds\n", + "\n", + "T = 1.2000000000000002\n", + "\tequilibrating took 2.9586286544799805 seconds\n", + "\tmeasuring took200] 10.83272385597229 seconds\n", + "\n", + "T = 1.3\n", + "\tequilibrating took 2.4720122814178467 seconds\n", + "\tmeasuring took 9.212384223937988 seconds\n", + "\n", + "T = 1.4\n", + "\tequilibrating took 3.3535523414611816 seconds\n", + "\tmeasuring took 10.767858028411865 seconds\n", + "\n", + "T = 1.5\n", + "\tequilibrating took 3.0648155212402344 seconds\n", + "\tmeasuring took 9.897510051727295 seconds\n", + "\n" + ] + } + ], "source": [ "measurements = 200\n", "equil_sweeps = 100\n", "measure_sweeps = 2\n", "\n", - "# YOUR CODE HERE\n", - "raise NotImplementedError()" + "with h5py.File(\"xy_data.hdf5\", \"a\") as f:\n", + " if not \"square-magn\" in f:\n", + " state = xy_aligned_init_config(width)\n", + " square_magn = np.zeros((len(temperatures), measurements))\n", + " \n", + " t_0 = time.time()\n", + " for idx, T in enumerate(temperatures):\n", + " print(\"T =\", T)\n", + " beta = 1/T\n", + " # We let the sweep size depend on the width and the average cluster size\n", + " # from before:\n", + " sweep_size = np.ceil(width**2/f[\"cluster-size\"][idx]).astype(int)\n", + " \n", + " # Equilibrate\n", + " for j in range(equil_sweeps*sweep_size):\n", + " xy_cluster_move(state,beta)\n", + " print(\"\\tequilibrating... [{}/{}]\".format(j, equil_sweeps*sweep_size), end='\\r')\n", + " print(\"\\tequilibrating took\", toc(), \" seconds\")\n", + " \n", + " # Measure\n", + " for j in range(measurements):\n", + " xy_cluster_move(state,beta)\n", + " square_magn[idx][j] = np.linalg.norm(np.mean(state, axis=(0,1)))**2\n", + " print(\"\\tmeasuring... [{}/{}]\".format(j, measurements), end='\\r')\n", + " \n", + " # Sweeps between measurements\n", + " # TODO: Skip sweeps between measurements for last measurement in set.\n", + " for _ in range(measure_sweeps*sweep_size):\n", + " xy_cluster_move(state,beta)\n", + " print(\"\\tmeasuring took\", toc(), \" seconds\")\n", + " print()\n", + " \n", + " f.create_dataset(\"square-magn\",data=square_magn)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "35782ff3", "metadata": { "deletable": false, diff --git a/Exercise sheet 6/xy_data.hdf5 b/Exercise sheet 6/xy_data.hdf5 index 1162d11e9e58c61c0ca04482d8390f27b9bf22bf..ba7936afbc31e190e5f4eb1ecda0cfec79e94c17 100644 GIT binary patch literal 22584 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 LjTbc+fy9452wAhA delta 58 zcmdn7f$@jf1P!JN?ulA$j2s&`vNJJCOy0?)&dJCC0S*&4nr~KM7Gq>&oNUgbxmkhd K0NZ2*?g#+Uy$)Oe