301 lines
45 KiB
Plaintext
301 lines
45 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "47ceb846",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercise sheet\n",
|
|
"\n",
|
|
"Some general remarks about the exercises:\n",
|
|
"* For your convenience functions from the lecture are included below. Feel free to reuse them without copying to the exercise solution box.\n",
|
|
"* For each part of the exercise a solution box has been added, but you may insert additional boxes. Do not hesitate to add Markdown boxes for textual or LaTeX answers (via `Cell > Cell Type > Markdown`). But make sure to replace any part that says `YOUR CODE HERE` or `YOUR ANSWER HERE` and remove the `raise NotImplementedError()`.\n",
|
|
"* Please make your code readable by humans (and not just by the Python interpreter): choose informative function and variable names and use consistent formatting. Feel free to check the [PEP 8 Style Guide for Python](https://www.python.org/dev/peps/pep-0008/) for the widely adopted coding conventions or [this guide for explanation](https://realpython.com/python-pep8/).\n",
|
|
"* Make sure that the full notebook runs without errors before submitting your work. This you can do by selecting `Kernel > Restart & Run All` in the jupyter menu.\n",
|
|
"* For some exercises test cases have been provided in a separate cell in the form of `assert` statements. When run, a successful test will give no output, whereas a failed test will display an error message.\n",
|
|
"* Each sheet has 100 points worth of exercises. Note that only the grades of sheets number 2, 4, 6, 8 count towards the course examination. Submitting sheets 1, 3, 5, 7 & 9 is voluntary and their grades are just for feedback.\n",
|
|
"\n",
|
|
"Please fill in your name here:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "be2b5237",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"NAME = \"Kees van Kempen\"\n",
|
|
"NAMES_OF_COLLABORATORS = \"\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6037899a",
|
|
"metadata": {},
|
|
"source": [
|
|
"---"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3ff5eacf",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "a8ee042e1668d99f0c9d1d4176a2a66f",
|
|
"grade": false,
|
|
"grade_id": "cell-02fe75d787fe0e01",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"**Exercise sheet 9**"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {
|
|
"image.png": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEaCAYAAAAVJPDdAAAgAElEQVR4Ae2dCZgU1bm/32HfQWBANgWUfRUQ9ao3ajTiBu5bEveQzeQmLlGvmuuWq9GYaBL/iZq4xeuCxhB3jEtM4sog+yogAgM4I8gOs/+frzkVa5rume7p7urq7t95nuqqOnWW73tPdX11ljoH5ERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABEQgMwTOA8ozk7RSzQcCzfJBCekgAiKQMIHmwFnAmoRjKGDBEZBhyG6RrwKOTbMImUgznohDgDnANuCHwELgqHiBo/wbkvMR4Lao8DpNDwGrLTwD1DaQXENl00C0Bi8lc280mJAuZp6ADEPmGVsOfwe+AFoHk13CuaT6APgJ8BbQEfg1MMLpmrAACph2Ao8D64GtwDLgMl8OVls4G3ja55fqYax7KJZfEPfGYmCtuw9T1cuLfzlQAlQA9sLSmLP/+m5gu9uWNhYhjNdlGDJfKv2BI4E6YHLmsws0h/1dLSHQTAPIrEUAeWQqi9sBu+c6ufvNal7jXWbfAKY1UlvIlFxBpDvSGcMz05jZOld7fSiJNM2YdHCb1apzzskwZL7ILgDed28bF8bI7mBgkatRPAy0cWGuAUpdM429dXzVF3eYezPf7B7M8QyOGaMDffH8TTR/AvYDXnBvNvb2b6438GfXOfmJayJyl+rt3gSOBn7r4g8G/G+KiaZjiR4EfOR0tbdZj0G9DN3JtcAKF9a4neYLZMye9Z3b4b2uNmPHDclkslv8ecAOwIxDQ3lZeuOA2U4Wa54x2b0msIbyihKRxsrTZLvKybbF5ROPkTXZ2NutOSt/2w5w58MBux9fBQb5uLjLcXfxOMS6h2L5WcL+e6Mf8Jy7xza6e8jCJMMslrA1wL+A0bEuNtHP5JwOmJxyIpA2AsuB77m3tiqgpy9l+7MsAOyP0hV4xz1Y7C3DOgftj2LO3gC9P3dLwNL8b6AVcIx7MHlvJv4/YEOGwdL1h7Vze1GYBfzUpT0QWAkcH5Fi7x+rNvubKrz0EknHC2s6fAr8GDDd7G3POHkP2OhcrePUuFge57iHeC8XyGowO13TlnlZ04k1qxyagG4mj/WXWFm0dek1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rRz2o2MHRTplYz3cIw/9yAPeGQD3sDf/5o208XvZf/jJpphGSaODPELai4AIhIFAwTUl2UM4Vo2hT5e2/OjYwRktE1uHwP8FsmWm0UEZRa7ERUAEmkDgyzGNTYici1Hs4WwPY78L6uFso4NuP30UZoSs+cj2du6NGvLLpGMREAERyBaBgqsxeA/h6AnlPP9MF4TlE1RemdZF6YuACOQngYIzDFaMejjn580srURABNJDIOimJFuycymwHLg2hgr/CXwE2GpvZ8a4Li8REAEREIEMEwjSMFjD/n3ACcBw4Dy396toS3leBDzh99SxCIiACIhAcASCbEqa6GoKK516TwFTgEU+dVe541qfnw5FQAREQAQCJBBkjaEPsMan21obmOM7T+ZwKmDzYJSUl5cnE09hRUAEREAEGiEQZI2hEVGSuvwAYBvFxcV7phlNKroCi4AIiIAIxCMQZI3B5oPo5xOkLxB7jghfIB2KgAiIgAgESyDIGsNMYBAwwBmEc4HzU1V31qxZnxcVFX3axHS6A583MW6uRpPOuVpyycmtck6OV66GTqWc9w+L0icCy4AVwPVOqFuAye74YMD6HnYAG4GFGRY8ufm6MyxMQMlL54BAZzkblXOWCyCg7AuxnDOOthChSueM31ahyEDlHIpiyLgQGSnnIPsYMk5IGYiACIiACKROoP5scqmnl4sp2CpGheakc2GUuMpZ5VwYBKSlCIiACIiACIiACIiACIiACIiACIiACIiACKSfQGMzubYGnnbzN30A9HcitAQeBeYDi4Hr0i9axlJsTOeGZq+9EPjYbXacK66pOo8F3nNDoucB5+SIwk3V11OvkxsS/lvPIwf2qei8H/Ca+y/bvGze/zzsaqei853uvrbn168hsi5Y2PUNRD7rVLdvJQYCrYC5MWZy/R7weyeNfWxnRsKcfXRnE/yZawfYxH65cDMlorPpMRp4LGpa866ATW5o+33cse3D7lLR2dZxtQ8uzfUG1gNd3HlYd6no6+l0r5u9OFcMQ6o6/x04zinfwf2nPRZh3aei838A7wCWhm328nNUsorm63BV/0yule5BbzO5+p2dW83A3LPAV51ltbmX2gP2VXhbwOJvdeHCvEtEZzNy9nYcPXvt8cDfgE3AF+7Y3ljC7lLR2T60tBqSuXVAmU295c7DuktFX9NpPNDTvUGHVcdouVLR2ab3t/+x3dvmtgM73XGYd6nobM+vNu6F2FpFrAXks2SVzVfDkMhMrv4wtjDQFqCbMxL25bW9Qdr6EL9wD8xk2QYd3q+P5Z3M7LWpxA1aT39+6ZLb/ohWs7RaZphdKvraf/1u4KowKxhDtlR0tlrhZuA5YDZwl3uLjpFNqLxS0dlqCG+555c9w2a4ZrSkFMxXw5AUhKjA9pCocc0LNq/Tla5JKiqYTvOEQC/gT8DFMWpSeaJiRA1rOn3ZvTDkk14N6WK1hSOdMbTpdqxp2RYCy2d3IDAMsElKzcAc4xgkpXO+GoZEZnL1h7EbqLObn8n6GF4FqlzzgrXXTUiKanYC+/UxCZKZvTaVuNnRdk+uqcptHbEvuXm73s+mIgnmnYq+hwGXuz4zqwVfANyRYL7ZDJaKzlZrnuP6zKxVYDowLpvKJJh3KjqfBti9bM1mtr0CWNnLuXZF60y1N36v83lEFJnvR3U+T3PXrwEedsfW12AjGazDNuzOjFtjOns6PBKj8/kT1/Fsnc52bB3RYXep6Gz3xRvAj8KupE++VPT1JRN5a86VzudUdLbOVxt44vUd2f/a/vdhd6nobKPrXnfPQOtfsHv8lLArHKR8jc3kah00z7jhqh/6mots5IL528yuZhSuDlLoFPNqTOeGZq+9xLFY7ppVUhQlsOhN1fkbrlZob5TeZkNYw+6aqq9fL2tOyRXDYHKnorONSLIBFzb83F6I7IUgF1xTdTZjeL9veO4vc0FZySgCIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIlC4BOxjCDkREIH0E7CvbG0WW5u11SZxs1k9l6Q/G6UoAiIgAiKQKwRKgCOAtwGbI19OBERABESggAnY5JQ2dbtN225zb8mJgAiIgAgUOIEhbhEgm/LYJiS0yczkRCBnCKiPIWeKSoLmEIGjAVtJyyaqOxawlbRsoRg5ERABERCBAiVwM2AL45izufBtxlqbSllOBERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABETAR+D/A8PrTazgU3zDAAAAAElFTkSuQmCC"
|
|
}
|
|
},
|
|
"cell_type": "markdown",
|
|
"id": "2e578009",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "d5514c31a73f3080307b23d0567af09e",
|
|
"grade": false,
|
|
"grade_id": "cell-eaa254f386899f72",
|
|
"locked": true,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": false
|
|
}
|
|
},
|
|
"source": [
|
|
"## Running code on the compute cluster: lattice scalar field\n",
|
|
"\n",
|
|
"**Goal**: Learn how to scale up simulations by transitioning from running them in the notebook to stand-alone scripts on the compute cluster.\n",
|
|
"\n",
|
|
"In lecture 7 we implemented the Metropolis-Hastings simulation of a lattice scalar field using the following code:\n",
|
|
"\n",
|
|
"```Python\n",
|
|
"import numpy as np\n",
|
|
"rng = np.random.default_rng() \n",
|
|
"import matplotlib.pylab as plt\n",
|
|
"%matplotlib inline\n",
|
|
"\n",
|
|
"def potential_v(x,lamb):\n",
|
|
" '''Compute the potential function V(x).'''\n",
|
|
" return lamb*(x*x-1)*(x*x-1)+x*x\n",
|
|
"\n",
|
|
"def neighbor_sum(phi,s):\n",
|
|
" '''Compute the sum of the state phi on all 8 neighbors of the site s.'''\n",
|
|
" w = len(phi)\n",
|
|
" return (phi[(s[0]+1)%w,s[1],s[2],s[3]] + phi[(s[0]-1)%w,s[1],s[2],s[3]] +\n",
|
|
" phi[s[0],(s[1]+1)%w,s[2],s[3]] + phi[s[0],(s[1]-1)%w,s[2],s[3]] +\n",
|
|
" phi[s[0],s[1],(s[2]+1)%w,s[3]] + phi[s[0],s[1],(s[2]-1)%w,s[3]] +\n",
|
|
" phi[s[0],s[1],s[2],(s[3]+1)%w] + phi[s[0],s[1],s[2],(s[3]-1)%w] )\n",
|
|
"\n",
|
|
"def scalar_action_diff(phi,site,newphi,lamb,kappa):\n",
|
|
" '''Compute the change in the action when phi[site] is changed to newphi.'''\n",
|
|
" return (2 * kappa * neighbor_sum(phi,site) * (phi[site] - newphi) +\n",
|
|
" potential_v(newphi,lamb) - potential_v(phi[site],lamb) )\n",
|
|
"\n",
|
|
"def scalar_MH_step(phi,lamb,kappa,delta):\n",
|
|
" '''Perform Metropolis-Hastings update on state phi with range delta.'''\n",
|
|
" site = tuple(rng.integers(0,len(phi),4))\n",
|
|
" newphi = phi[site] + rng.uniform(-delta,delta)\n",
|
|
" deltaS = scalar_action_diff(phi,site,newphi,lamb,kappa)\n",
|
|
" if deltaS < 0 or rng.uniform() < np.exp(-deltaS):\n",
|
|
" phi[site] = newphi\n",
|
|
" return True\n",
|
|
" return False\n",
|
|
"\n",
|
|
"def run_scalar_MH(phi,lamb,kappa,delta,n):\n",
|
|
" '''Perform n Metropolis-Hastings updates on state phi and return number of accepted transtions.'''\n",
|
|
" total_accept = 0\n",
|
|
" for _ in range(n):\n",
|
|
" total_accept += scalar_MH_step(phi,lamb,kappa,delta)\n",
|
|
" return total_accept\n",
|
|
"\n",
|
|
"def batch_estimate(data,observable,k):\n",
|
|
" '''Devide data into k batches and apply the function observable to each.\n",
|
|
" Returns the mean and standard error.'''\n",
|
|
" batches = np.reshape(data,(k,-1))\n",
|
|
" values = np.apply_along_axis(observable, 1, batches)\n",
|
|
" return np.mean(values), np.std(values)/np.sqrt(k-1)\n",
|
|
"\n",
|
|
"lamb = 1.5\n",
|
|
"kappas = np.linspace(0.08,0.18,11)\n",
|
|
"width = 3\n",
|
|
"num_sites = width**4\n",
|
|
"delta = 1.5 # chosen to have ~ 50% acceptance\n",
|
|
"equil_sweeps = 1000\n",
|
|
"measure_sweeps = 2\n",
|
|
"measurements = 2000\n",
|
|
"\n",
|
|
"mean_magn = []\n",
|
|
"for kappa in kappas:\n",
|
|
" phi_state = np.zeros((width,width,width,width))\n",
|
|
" run_scalar_MH(phi_state,lamb,kappa,delta,equil_sweeps * num_sites)\n",
|
|
" magnetizations = np.empty(measurements)\n",
|
|
" for i in range(measurements):\n",
|
|
" run_scalar_MH(phi_state,lamb,kappa,delta,measure_sweeps * num_sites)\n",
|
|
" magnetizations[i] = np.mean(phi_state)\n",
|
|
" mean, err = batch_estimate(np.abs(magnetizations),lambda x:np.mean(x),10)\n",
|
|
" mean_magn.append([mean,err])\n",
|
|
" \n",
|
|
"plt.errorbar(kappas,[m[0] for m in mean_magn],yerr=[m[1] for m in mean_magn],fmt='-o')\n",
|
|
"plt.xlabel(r\"$\\kappa$\")\n",
|
|
"plt.ylabel(r\"$|m|$\")\n",
|
|
"plt.title(r\"Absolute field average on $3^4$ lattice, $\\lambda = 1.5$\")\n",
|
|
"plt.show()\n",
|
|
"```\n",
|
|
"The goal will be to reproduce and extend its output.\n",
|
|
"\n",
|
|
""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "029e890b",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "9f8edfc2002ed79ed92e093411435ca4",
|
|
"grade": false,
|
|
"grade_id": "cell-577d0bd92cfc0731",
|
|
"locked": true,
|
|
"points": 40,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": true
|
|
}
|
|
},
|
|
"source": [
|
|
"**(a)** Turn the simulation into a standalone script `latticescalar.py` (similar to `ising.py`) that takes the relevant parameters e.g.\n",
|
|
"```bash\n",
|
|
"$ python3 latticescalar.py -l 1.5 -k 0.12 -w 3 -n 1000\n",
|
|
"```\n",
|
|
"for $\\lambda=1.5$, $\\kappa=0.12$, $w=3$, and $1000$ measurements, together with optional parameters $\\delta$ and numbers of sweeps, as command line arguments and stores the relevant simulation outcomes in an hdf5-file. **(40 pts)**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "1c6c1b73",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import h5py\n",
|
|
"import numpy as np\n",
|
|
"from matplotlib import pyplot as plt\n",
|
|
"\n",
|
|
"# Load data\n",
|
|
"output_filename = \"preliminary_simulation.h5\"\n",
|
|
"with h5py.File(output_filename,'r') as f:\n",
|
|
" handler = f[\"mean-magn\"]\n",
|
|
" mean_magn = np.array(handler)\n",
|
|
" kappas = handler.attrs[\"kappas\"]\n",
|
|
"\n",
|
|
"# Plotterdeplotterdeplot\n",
|
|
"plt.figure()\n",
|
|
"plt.errorbar(kappas,[m[0] for m in mean_magn],yerr=[m[1] for m in mean_magn],fmt='-o')\n",
|
|
"plt.xlabel(r\"$\\kappa$\")\n",
|
|
"plt.ylabel(r\"$|m|$\")\n",
|
|
"plt.title(r\"Absolute field average on $3^4$ lattice, $\\lambda = 1.5$\")\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d4640925",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "261f895518cc39ffdc0eadcef4c3dd65",
|
|
"grade": false,
|
|
"grade_id": "cell-51479ca8a1c07968",
|
|
"locked": true,
|
|
"points": 30,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": true
|
|
}
|
|
},
|
|
"source": [
|
|
"**(b)** Write a bash script `job_latticescalar.sh` that submits an array job to the cluster for $w=3$ and $2000$ measurements and $\\lambda = 1.0, 1.5, 2.0$ and $\\kappa = 0.08, 0.09, ..., 0.18$ (so 33 simulations in total). Submit the job to the `hefstud` slurm partition (do not run all 33 in parallel). **(30 pts)**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "711111db",
|
|
"metadata": {
|
|
"deletable": false,
|
|
"editable": false,
|
|
"nbgrader": {
|
|
"cell_type": "markdown",
|
|
"checksum": "0181a075dd61572ba8c2f5027bbb8b74",
|
|
"grade": false,
|
|
"grade_id": "cell-88a18366f80a2168",
|
|
"locked": true,
|
|
"points": 30,
|
|
"schema_version": 3,
|
|
"solution": false,
|
|
"task": true
|
|
}
|
|
},
|
|
"source": [
|
|
"**(c)** Load the stored data into this notebook and reproduce the plot above (with $\\lambda = 1$ and $\\lambda=2$ added). **(30 pts)**"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.12"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|