From 742dac6bf9102faca90d0e97370106d64f597091 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Mon, 4 Dec 2023 11:55:19 -0500 Subject: [PATCH] Create Heisenberg.ipynb --- .../HeisenbergIsingModels/Heisenberg.ipynb | 464 ++++++++++++++++++ 1 file changed, 464 insertions(+) create mode 100644 doc/Programs/HeisenbergIsingModels/Heisenberg.ipynb diff --git a/doc/Programs/HeisenbergIsingModels/Heisenberg.ipynb b/doc/Programs/HeisenbergIsingModels/Heisenberg.ipynb new file mode 100644 index 000000000..7efc33c33 --- /dev/null +++ b/doc/Programs/HeisenbergIsingModels/Heisenberg.ipynb @@ -0,0 +1,464 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import os\n", + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Define parameters\n", + "N = 10 # Size of the cubic lattice (N x N x N)\n", + "J = 1.0 # Interaction strength\n", + "kB = 1.0 # Boltzmann constant\n", + "\n", + "T_values = [2.5, 2.4, 2.3, 2.2, 2.1, 2.0, 1.9, 1.8, 1.7, 1.6, 1.54, 1.52, 1.50, 1.49, 1.48, 1.47, 1.46,\n", + " 1.45, 1.44, 1.43, 1.42, 1.41, 1.40, 1.39, 1.38, 1.37, 1.36, 1.34, 1.32, 1.30, 1.25, 1.20,\n", + " 1.1, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1]\n", + "\n", + "total_steps = 10**6\n", + "equilibration_steps = total_steps/10\n", + "\n", + "start_save_config = total_steps - 1000\n", + "\n", + "progress = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to initialize the lattice with random unit vectors\n", + "def initialize_lattice(N):\n", + " lattice = np.random.rand(N, N, N, 3) * 2 - 1.0 # Random values in [-1.0, 1.0]\n", + " lattice /= np.linalg.norm(lattice, axis=-1, keepdims=True)\n", + " return lattice" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to get the neighbors of a spin\n", + "def get_neighbors(lattice, i, j, k):\n", + " neighbors = []\n", + " for di, dj, dk in [(-1, 0, 0), (1, 0, 0), (0, -1, 0), (0, 1, 0), (0, 0, -1), (0, 0, 1)]:\n", + " ni, nj, nk = (i + di) % N, (j + dj) % N, (k + dk) % N # Apply periodic boundary conditions\n", + " neighbors.append(lattice[ni, nj, nk])\n", + " return neighbors" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to calculate the energy of a spin and its neighbors\n", + "def calculate_energy(spin, neighbors):\n", + " neighbor_sum = np.sum(neighbors, axis=0)\n", + " energy = -J * np.dot(spin, neighbor_sum)\n", + " return energy" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to calculate the magnetization magnitude of the lattice\n", + "def calculate_magnetization(lattice):\n", + " magnetization = [0.0, 0.0, 0.0]\n", + " for i in range(N):\n", + " for j in range(N):\n", + " for k in range(N):\n", + " # Access the lattice element at position (i, j, k)\n", + " magnetization[0] += lattice[i, j, k, 0]\n", + " magnetization[1] += lattice[i, j, k, 1]\n", + " magnetization[2] += lattice[i, j, k, 2]\n", + "\n", + " magnitude = magnetization[0]*magnetization[0] + magnetization[1]*magnetization[1] + magnetization[2]*magnetization[2]\n", + " magnitude = np.sqrt(magnitude)\n", + " magnitude = magnitude/(N**3)\n", + " return magnitude" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to perform a Metropolis update\n", + "def metropolis_update(lattice, temperature):\n", + " global acc_rate\n", + "\n", + " i, j, k = np.random.randint(0, N, size=3)\n", + " spin = lattice[i, j, k]\n", + " neighbors = get_neighbors(lattice, i, j, k)\n", + " \n", + " # Calculate energy before the update\n", + " energy_before = calculate_energy(spin, neighbors)\n", + " \n", + " # Propose a new spin configuration\n", + " new_spin = (np.random.rand(3) * 2 - 1.0) # Random values between -1.0 and 1.0 for each component\n", + " new_spin /= np.linalg.norm(new_spin)\n", + "\n", + " # Calculate energy after the update\n", + " energy_after = calculate_energy(new_spin, neighbors)\n", + " \n", + " # Calculate energy difference\n", + " delta_energy = energy_after - energy_before\n", + " \n", + " # Metropolis acceptance criteria\n", + " if delta_energy <= 0 or np.random.rand() < np.exp(-delta_energy / (kB * temperature)):\n", + " lattice[i, j, k] = new_spin\n", + " acc_rate += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to save Configurations as an .npy file (Only the X Components)\n", + "def save_configuration_X(config, temperature, step, lattice_size):\n", + " folder_name = f\"{lattice_size}X{lattice_size}X{lattice_size}_Steps{total_steps}/{temperature:.2f}/X_Comp\"\n", + " file_name = f\"X_ConfigFile_Size{lattice_size}x{lattice_size}x{lattice_size}_M0.00_T{temperature:.2f}_StepNum{step}.npy\"\n", + " folder_path = os.path.join(os.getcwd(), folder_name)\n", + " file_path = os.path.join(folder_path, file_name)\n", + " if not os.path.exists(folder_path):\n", + " os.makedirs(folder_path)\n", + "\n", + " np.save(file_path, config)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to save Configurations as an .npy file (Only the Y Components)\n", + "def save_configuration_Y(config, temperature, step, lattice_size):\n", + " folder_name = f\"{lattice_size}X{lattice_size}X{lattice_size}_Steps{total_steps}/{temperature:.2f}/Y_Comp\"\n", + " file_name = f\"Y_ConfigFile_Size{lattice_size}x{lattice_size}x{lattice_size}_M0.00_T{temperature:.2f}_StepNum{step}.npy\"\n", + " folder_path = os.path.join(os.getcwd(), folder_name)\n", + " file_path = os.path.join(folder_path, file_name)\n", + " if not os.path.exists(folder_path):\n", + " os.makedirs(folder_path)\n", + "\n", + " np.save(file_path, config)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to save Configurations as an .npy file (Only the Z Components)\n", + "def save_configuration_Z(config, temperature, step, lattice_size):\n", + " folder_name = f\"{lattice_size}X{lattice_size}X{lattice_size}_Steps{total_steps}/{temperature:.2f}/Z_Comp\"\n", + " file_name = f\"Z_ConfigFile_Size{lattice_size}x{lattice_size}x{lattice_size}_M0.00_T{temperature:.2f}_StepNum{step}.npy\"\n", + " folder_path = os.path.join(os.getcwd(), folder_name)\n", + " file_path = os.path.join(folder_path, file_name)\n", + " if not os.path.exists(folder_path):\n", + " os.makedirs(folder_path)\n", + "\n", + " np.save(file_path, config)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to save the lattice as an .npy file\n", + "def save_lattice(lattice, temperature, step, lattice_size):\n", + " folder_name = f\"{lattice_size}X{lattice_size}X{lattice_size}_Steps{total_steps}/{temperature:.2f}/Lattice\"\n", + " file_name = f\"LatticeFile_Size{lattice_size}x{lattice_size}x{lattice_size}_T{temperature:.2f}_StepNum{step}.npy\"\n", + " folder_path = os.path.join(os.getcwd(), folder_name)\n", + " file_path = os.path.join(folder_path, file_name)\n", + " if not os.path.exists(folder_path):\n", + " os.makedirs(folder_path)\n", + "\n", + " np.save(file_path, lattice)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Function to perform the Monte Carlo simulation\n", + "def monte_carlo_simulation(lattice, temperature, equilibration_steps, total_steps):\n", + " magnetization_values = []\n", + "\n", + " for step in range(total_steps):\n", + " metropolis_update(lattice, temperature)\n", + " \n", + " if step >= equilibration_steps and (step - equilibration_steps) % (total_steps // 100) == 0:\n", + " # Calculate magnetization and save measurements\n", + " magnetization = calculate_magnetization(lattice)\n", + " magnetization_values.append(magnetization)\n", + " \n", + " if step >= start_save_config:\n", + " x_components = lattice[:, :, :, 0] # Extract x components (index 0)\n", + " y_components = lattice[:, :, :, 1] # Extract y components (index 1)\n", + " z_components = lattice[:, :, :, 2] # Extract z components (index 2)\n", + " save_configuration_X(x_components,temperature,step,N)\n", + " save_configuration_Y(y_components,temperature,step,N)\n", + " save_configuration_Z(z_components,temperature,step,N)\n", + "\n", + " # Save the lattice as well\n", + " save_lattice(lattice, temperature, step, N)\n", + "\n", + " # Calculate average magnetization and error bar\n", + " avg_magnetization = np.mean(magnetization_values)\n", + " error_bar = np.std(magnetization_values) / np.sqrt(len(magnetization_values))\n", + " # Calculating magnetic susceptibility\n", + " Chi = (np.var(magnetization_values))/temperature\n", + "\n", + " # Return average magnetization, error bar\n", + " return avg_magnetization, error_bar, Chi" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "01/43 - Temperature: 2.50, Magnetization: 0.05067800, Error: 0.00231309, Susceptibility: 0.00019261, Acc_Rate: 694993\n", + "02/43 - Temperature: 2.40, Magnetization: 0.05701614, Error: 0.00233589, Susceptibility: 0.00020461, Acc_Rate: 682533\n", + "03/43 - Temperature: 2.30, Magnetization: 0.05745391, Error: 0.00228808, Susceptibility: 0.00020486, Acc_Rate: 667664\n", + "04/43 - Temperature: 2.20, Magnetization: 0.06127256, Error: 0.00251489, Susceptibility: 0.00025874, Acc_Rate: 653054\n", + "05/43 - Temperature: 2.10, Magnetization: 0.06650248, Error: 0.00342411, Susceptibility: 0.00050248, Acc_Rate: 636446\n", + "06/43 - Temperature: 2.00, Magnetization: 0.07177253, Error: 0.00282175, Susceptibility: 0.00035830, Acc_Rate: 617125\n", + "07/43 - Temperature: 1.90, Magnetization: 0.07764729, Error: 0.00349707, Susceptibility: 0.00057929, Acc_Rate: 595959\n", + "08/43 - Temperature: 1.80, Magnetization: 0.07969424, Error: 0.00346145, Susceptibility: 0.00059908, Acc_Rate: 572639\n", + "09/43 - Temperature: 1.70, Magnetization: 0.10794836, Error: 0.00536923, Susceptibility: 0.00152622, Acc_Rate: 542048\n", + "10/43 - Temperature: 1.60, Magnetization: 0.12627725, Error: 0.00551466, Susceptibility: 0.00171065, Acc_Rate: 510216\n", + "11/43 - Temperature: 1.54, Magnetization: 0.23756270, Error: 0.00701833, Susceptibility: 0.00287865, Acc_Rate: 477083\n", + "12/43 - Temperature: 1.52, Magnetization: 0.19669505, Error: 0.00680513, Susceptibility: 0.00274203, Acc_Rate: 475510\n", + "13/43 - Temperature: 1.50, Magnetization: 0.26928236, Error: 0.00633434, Susceptibility: 0.00240743, Acc_Rate: 460500\n", + "14/43 - Temperature: 1.49, Magnetization: 0.28233166, Error: 0.00660430, Susceptibility: 0.00263457, Acc_Rate: 450501\n", + "15/43 - Temperature: 1.48, Magnetization: 0.31488006, Error: 0.00634694, Susceptibility: 0.00244968, Acc_Rate: 442054\n", + "16/43 - Temperature: 1.47, Magnetization: 0.27167505, Error: 0.00687240, Susceptibility: 0.00289162, Acc_Rate: 444030\n", + "17/43 - Temperature: 1.46, Magnetization: 0.28125360, Error: 0.00782904, Susceptibility: 0.00377839, Acc_Rate: 438247\n", + "18/43 - Temperature: 1.45, Magnetization: 0.31897099, Error: 0.00630256, Susceptibility: 0.00246552, Acc_Rate: 430177\n", + "19/43 - Temperature: 1.44, Magnetization: 0.33826857, Error: 0.00640851, Susceptibility: 0.00256681, Acc_Rate: 421624\n", + "20/43 - Temperature: 1.43, Magnetization: 0.33619013, Error: 0.00484151, Susceptibility: 0.00147526, Acc_Rate: 420482\n", + "21/43 - Temperature: 1.42, Magnetization: 0.40093416, Error: 0.00546004, Susceptibility: 0.00188949, Acc_Rate: 402824\n", + "22/43 - Temperature: 1.41, Magnetization: 0.40223867, Error: 0.00544269, Susceptibility: 0.00189082, Acc_Rate: 398312\n", + "23/43 - Temperature: 1.40, Magnetization: 0.41361242, Error: 0.00584992, Susceptibility: 0.00219996, Acc_Rate: 393440\n", + "24/43 - Temperature: 1.39, Magnetization: 0.42797076, Error: 0.00391937, Susceptibility: 0.00099463, Acc_Rate: 387163\n", + "25/43 - Temperature: 1.38, Magnetization: 0.45036921, Error: 0.00567672, Susceptibility: 0.00210164, Acc_Rate: 375626\n", + "26/43 - Temperature: 1.37, Magnetization: 0.45859763, Error: 0.00481411, Susceptibility: 0.00152249, Acc_Rate: 371869\n", + "27/43 - Temperature: 1.36, Magnetization: 0.44461117, Error: 0.00410840, Susceptibility: 0.00111699, Acc_Rate: 370419\n", + "28/43 - Temperature: 1.34, Magnetization: 0.46889421, Error: 0.00420211, Susceptibility: 0.00118597, Acc_Rate: 359287\n", + "29/43 - Temperature: 1.32, Magnetization: 0.51931686, Error: 0.00361887, Susceptibility: 0.00089292, Acc_Rate: 339340\n", + "30/43 - Temperature: 1.30, Magnetization: 0.54039866, Error: 0.00271472, Susceptibility: 0.00051021, Acc_Rate: 328362\n", + "31/43 - Temperature: 1.25, Magnetization: 0.59450172, Error: 0.00322554, Susceptibility: 0.00074909, Acc_Rate: 301172\n", + "32/43 - Temperature: 1.20, Magnetization: 0.61688533, Error: 0.00239843, Susceptibility: 0.00043144, Acc_Rate: 282441\n", + "33/43 - Temperature: 1.10, Magnetization: 0.70057186, Error: 0.00213217, Susceptibility: 0.00037196, Acc_Rate: 237369\n", + "34/43 - Temperature: 1.00, Magnetization: 0.75602324, Error: 0.00144626, Susceptibility: 0.00018825, Acc_Rate: 202588\n", + "35/43 - Temperature: 0.90, Magnetization: 0.79911328, Error: 0.00110576, Susceptibility: 0.00012227, Acc_Rate: 173813\n", + "36/43 - Temperature: 0.80, Magnetization: 0.83435035, Error: 0.00086618, Susceptibility: 0.00008440, Acc_Rate: 148781\n", + "37/43 - Temperature: 0.70, Magnetization: 0.86724151, Error: 0.00071909, Susceptibility: 0.00006648, Acc_Rate: 126742\n", + "38/43 - Temperature: 0.60, Magnetization: 0.89348401, Error: 0.00049948, Susceptibility: 0.00003742, Acc_Rate: 107594\n", + "39/43 - Temperature: 0.50, Magnetization: 0.91464745, Error: 0.00044023, Susceptibility: 0.00003488, Acc_Rate: 90697\n", + "40/43 - Temperature: 0.40, Magnetization: 0.93373802, Error: 0.00033215, Susceptibility: 0.00002482, Acc_Rate: 74396\n", + "41/43 - Temperature: 0.30, Magnetization: 0.95149632, Error: 0.00027094, Susceptibility: 0.00002202, Acc_Rate: 58787\n", + "42/43 - Temperature: 0.20, Magnetization: 0.96750309, Error: 0.00013980, Susceptibility: 0.00000879, Acc_Rate: 42481\n", + "43/43 - Temperature: 0.10, Magnetization: 0.98301393, Error: 0.00006677, Susceptibility: 0.00000401, Acc_Rate: 25197\n" + ] + } + ], + "source": [ + "# Main simulation loop\n", + "global lattice\n", + "lattice = initialize_lattice(N)\n", + "\n", + "avg_magnetizations = []\n", + "error_bars = []\n", + "susceptibility_values = []\n", + "\n", + "file_name_ = f\"simulation_results_{N}X{N}X{N}_Steps{total_steps}.txt\" \n", + "file = open(file_name_ , 'w')\n", + "\n", + "for T in T_values:\n", + " acc_rate = 0\n", + " avg_mag, error, Chi = monte_carlo_simulation(lattice, T, equilibration_steps, total_steps)\n", + " avg_magnetizations.append(avg_mag)\n", + " error_bars.append(error)\n", + " susceptibility_values.append(Chi)\n", + "\n", + " progress = progress + 1\n", + " num_of_temp = len(T_values)\n", + " print(f\"{progress:02d}/{num_of_temp} - Temperature: {T:.2f}, Magnetization: {avg_mag:.8f}, Error: {error:.8f}, Susceptibility: {Chi:.8f}, Acc_Rate: {acc_rate}\")\n", + "\n", + "\n", + " line = f\"Temperature: {T:.2f}, Magnetization: {avg_mag:.8f}, Error: {error:.8f}, Susceptibility: {Chi:.8f}, Acc_Rate: {acc_rate}\\n\"\n", + " sys.stdout.flush() # Force flushing the output buffer\n", + "\n", + " file.write(line)\n", + " file.flush() # Force flushing the file buffer\n", + "\n", + "file.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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s+5xYJ4x5mX3+WpgYlNNP2PGjDE6jkpgoO7toe7toe7t0Zj7VatWMXjw4OYfdMYM59EGiAhnn302L774IgCVlZV07dqV8ePH8/bbb7fJOZpi3rx5xMTEcNBBBwHw2GOPkZCQwLnnntuq4zzyyCMkJyc3+zh1qe91EpGlxpgxDe1js0ZlDnCliLyC04m2oLn9U0Dvq7eJureHureHureHX9zfdlubJSqJiYmsWLGC0tJS4uPj+eijj+jevdk9GlrFvHnzSEpKqk0wLr300jY5zmWXXWZtVGB/3p78MvAVMFBEtojI70TkUhGpsfYusB5YCzwJXN6S87TVvd1rdhTxyNy15BZ72uR44YCOaWAPdW8PdW+PYHB//PHH88477wDw8ssvc9ZZZ9WuW7RoEQceeCCjRo3ioIMOYvXq1QCUlJQwdepUhgwZwimnnML48eNrR2BPSkriL3/5CyNHjuSAAw5gx44dAOzatYvTTjuNsWPHMnbsWBYsWMDGjRt57LHHeOCBB8jOzmb+/PnMmDGD++67j23btpGdnV37iIyMZNOmTbz11luMHz+eUaNGceSRR7Jjx456j3Prrbdy3333AbB8+XIOOOAARowYwSmnnEJeXh4AEydO5E9/+hPjxo1jwIABzJ8/v02c+i1RMcacZYzpaoyJNsb0MMY8bYx5zBjzmLveGGOuMMb0M8YMN8YsaeqY9dGaXsje3DrnB/7+wWqO/9d8bv7fCl5fuoV1u/ZQXe2/prFgp63cK81H3dtD3dsjGNxPmzaNV155hbKyMr777jvGj/911I1BgwYxf/58li1bxu23386f//xnAB599FHS09NZuXIlf/3rX1m6dGntPsXFxRxwwAF8++23HHrooTz55JMAXHPNNVx77bUsXryY119/nYsuuojevXtz6aWXcu2117J8+XIOOeSQ2uN069aN5cuXs3z5cn7/+99z2mmn0atXLw4++GAWLlzIsmXLmDZtGvfee2+9x/HupHzuuedyzz338N133zF8+HBuu+222nWVlZUsWrSIf/7zn3stbw1B0Zm2MWo6VbWWh3+zPy8v+pkhXZNZt6uYuat3cv9HP7GnvJKRWWlkZ6Uxyv2bnhjTJucMdtrKvdJ81L091L092tp9brGH18adyhnFHjLa6HN9xIgRbNy4kZdffpnjjz9+r3UFBQWcd955rFmzBhGh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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Set plot size and create the figure\n", + "fig, ax = plt.subplots(figsize=(9, 5))\n", + "\n", + "# Ensure error_bars has the same number of elements as T_values\n", + "error_bars = error_bars[:len(T_values)]\n", + "\n", + "# Plot results with error bars and lines\n", + "plt.errorbar(T_values, avg_magnetizations, yerr=error_bars, fmt='o-', label='Magnetization', \n", + " ecolor='red', markersize=1, elinewidth=1, linewidth=1)\n", + "plt.xscale('linear') # Set the x-axis scale to linear\n", + "plt.xlabel('Temperature (T)')\n", + "plt.ylabel('Average Magnetization per spin')\n", + "\n", + "# Add legend\n", + "legend = plt.legend()\n", + "\n", + "power = int(np.log10(total_steps))\n", + "# Create the lattice_info string with dynamic steps value\n", + "lattice_info = f'Lattice Type: Cubic\\nLattice Size: ${N}^3$\\nSteps: $10^{power}$'\n", + "\n", + "plt.text(0.78, 0.8, lattice_info, transform=ax.transAxes, fontsize=10, ha='left', va='center')\n", + "\n", + "# Set legend font size\n", + "legend.get_texts()[0].set_fontsize('10')\n", + "\n", + "plt.title('Classical 3D Heisenberg Model - Monte Carlo Simulation using Metropolis Algorithm')\n", + "\n", + "# Customize the grid\n", + "ax.grid(color='lightgray', linestyle='--', linewidth=0.5)\n", + "\n", + "# Save the figure to a file (e.g., a PNG image)\n", + "file_name_image = f\"Magnetization_vs_Temperature_Simulation_results_{N}X{N}X{N}_Steps{total_steps}.png\" \n", + "plt.savefig(file_name_image, dpi=300, bbox_inches='tight')\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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DTdw+PBh7r33XoYOHUp2djZDhw4tce7gYyLpbHz55ZfTu3dvpk6dSnZ2NgMGDGDNmjXs2LEDgBdeeIFrrrnmSIosLGveMsaYCpaZCampsH+/+2tTPCUOfy1ffr7733/44dE3b9arV49ly5axcOFC5s+fz9ChQwv70YRyxhlncNtttzF8+HAuu+wy0tLSmDt3LldffTV16tQBoEmTJuTm5vLpp58yZMiQwmPz8vIKn//617+mRo0atG/fnrZt2xbWApWmPMcEExGuuuoqXnnlFa6++mqysrIK+/4cLQt6jDGmgmVkuC+7Sy+FGTOsT091cv31UFp/2/XrXbAL7u/VV0O7duH3b9ECJk4s+7xJSUlkZmaSmZlJt27dePHFF0lOTubw4cMAxWpU7rzzTi666CJmz57NGWecwZw5c0KmefjwYRo1akR2dnbI7cF3SEVyx1R5jgnl6quv5pJLLqFWrVoMGTKE5OSKCVcs6DHGmCjIyIBatSzgqW7KClCCa3peeOHor4G1a9cW1p6A60x84oknsn//fpYtW0b//v158803C/ffsGED3bp1o1u3bixZsoQ1a9Zw/vnnc++99zJ8+HDq1KnDzp07adKkCW3atOH1119nyJAhqCpffPEFPXr0AOD1119nxIgRbNq0iY0bN9KxY0fWr19f2EcolFDHfPbZZ2W+xvr16xdLt0WLFrRo0YJx48Yxd+7c8hZdCRb0GGNMlOzZE+8cmFjz1/JV5J17ubm53HzzzezatYvk5GTatWvHxIkTWb16Nddeey133313YSdmgCeeeIL58+dTo0YNunTpQv/+/alZsybZ2dn07t2b1NRUBgwYwP3338/UqVP53e9+x7hx4zh48CDDhg0rDHpOOOEE+vTpw549e3j22WepVasW55xzDg8++CDp6emMGTOmRF5DHRMJf8fp2rVrk5WVRe3atRk+fDg7duygU6dOR1+IHlHVCkusqundu7cuXbq0cNnn8xW7cEzsWNnHj5V99KSkQF4e1Ahzy4iVffxEWvarV6+u0C/dqmLkyJFcfPHFXH755RWedqTTUNx000307NmTa6+9NuT2UP8bEVmmqiXvj/dYTY8xxkSBKhw65IKe2rXjnRtjqpZevXpRt25dHn300QpN14IeY4yJgoMH3d/9+y3oMVXPlClT4nr+ZcuWRSVdG6fHGGOiwD9gbjnmRDTGRIkFPcYYEwX+oMd/+7KpuhK572tlVd7/iQU9xhgTBf7mLavpqdpq1apFTk6OBT6ViKqSk5MT8Z1hgaxPjzHGRIE1b1UPaWlpbN26tXBKBHP0Dhw4UK6AJVCtWrVIS0s74uMs6DHGmCiw5q3qISUlhTZt2sQ7G9WKz+ejZ8+ecTm3NW8ZY0wUHDwIyclW02NMZWJBjzHGREF+PjRoYEFPZVKvXr2I9/X5fHz66aeFy//9739ZtWpV4fI999xzVNMj5OTkkJ6eTnp6OscddxwtW7YsXM73VxNGSW5uLqNGjeKkk06iV69eZGZmsmjRolKPyczMJHAwX7+ZM2eWOvlpZRPV5i0R6Qf8HUgCnlfVB4O21wReAnoBOcBQVd3sbRsDXAsUALeo6hwRqQV8BNT08v6Gqv7V238KcDaw20t+pKpmR/P1GWNMOP6gx5q3qiafz0e9evU4/fTTARf0XHzxxXTu3BmAe++996jSb9q0aeFEn2PHjqVevXr84Q9/OKo0I3XdddfRpk0b1q1bR40aNdi0aVOxgO5IDBw4kIEDB1ZwDqMnajU9IpIEPA30BzoDV4hI56DdrgV+UtV2wOPAQ96xnYFhQBegH/CMl14ecK6q9gDSgX4iclpAeneoarr3yI7WazPGmLIcPAgNG1pNT2X39ttv84tf/IKePXty3nnn8f3337N582aeffZZHn/8cdLT01mwYAEzZ87kjjvuID09nQ0bNjBy5EjeeOMNAJYsWcLpp59Ojx496NOnD3v37qWgoIA77riDU089le7du/Pcc8+VmZe9e/fSpk0bDnq3/u3Zs6dwOTMzk1tvvZX09HS6du3K4sWLAdi3bx/XXHMNffr0oWfPnrz11lulnmPDhg0sWrSIcePGUcObH6VNmzZcdNFFbN68ma5duxbuO2HCBMaOHVu4/PLLL5c4/5QpU7jpppsA+P7777n00kvp0aMHPXr0KFZTVllEs6anD7BeVTcCiMg0YBAQGE4OAsZ6z98AnhI3D/0gYJqq5gGbRGQ90EdVs4Bcb/8U72H3ERpjKh2r6akafvnLX/LZZ58hIjz//PM8/PDDPProo9xwww3Fal8GDhwYci6q/Px8hg4dyvTp0zn11FPZs2cPtWvXZtKkSTRs2JAlS5aQl5fHGWecwQUXXFBqp+j69euTmZnJO++8w+DBg5k2bRqXXXYZKSkpAPz8889kZ2fz0Ucfcc0117BixQrGjx/Pueeey+TJk9m1axd9+vThvPPOY/fu3Vx33XXMnj272DlWrlxJeno6SUlJR1xWoc4f6JZbbuHss89mxowZFBQUkJubGyal+Ilm0NMS2BKwvBX4Rbh9VPWQiOwGmnrrPws6tiUU1iAtA9oBT6tqYEPkeBG5B/gQuNMLmowxJuasT0/VsHXrVoYOHcr27dvJz88/4ju11q5dy/HHH8+pp54KQIMGDQB4//33+eKLLwprg3bv3s26devKTP+6667j4YcfZvDgwbzwwgv861//Ktx2xRVXAHDWWWexZ88edu3axfvvv8/MmTOZMGEC4G4H/+abb+jUqVOJgOdohTp/oHnz5vHSSy8BkJSURMOGDSv0/BWhyt2yrqoFQLqINAJmiEhXVV0BjAG+A1KBicCfgBKNriJyPXA9QPPmzfH5fIXbcnNziy2b2LGyjx8r++hYtqwJ+/c3Z+XKXHy+LSH3sbKPrYKCgsLy9pf973//e4YMGcIZZ5xBdnY2U6ZMwefzsXnzZmrXrl24/3fffcfKlStp1qxZseU9e/awe/fuEv/HH374geuuu44+ffoUWx/q/x18rhUrVvDEE0+wa9cufvzxR3w+H7t27WL58uWFTVJ5eXl8/PHH7Nmzh7vuuosTTjihML3vv/+e77//PmQZ7N27l0WLFvHhhx+WqO3ZsWNHsWty9erVhWUW7vxr1qxh27Zt+Hw+Dh48yIIFC0hNTS31/xDX615Vo/IAMoA5ActjgDFB+8wBMrznycCPgATvG7hf0PH3AH8IsT4TmFVWHnv16qWB5s+fryY+rOzjx8o+OmbMUB01SnXs2PD7WNnHVt26dQuf+8s+PT1dly5dqqqqI0eO1LPPPltVVSdMmKD33HNP4f433XSTTp48uXB5xIgR+vrrr2teXp62adNGFy9erKqqe/bs0YMHD+pzzz2ngwYN0vz8fFVVXbt2rebm5obM11//+ld95JFHCpcnTJigxx9/vD7zzDOF684++2wdNWqUqqouXLhQu3btqqqqY8aM0dGjR+vhw4dVVfXzzz8vsxyGDBmif/nLXwqP2bRpk86aNUvz8/O1adOm+uOPP+qBAwf0F7/4hf71r38t9fwvvPCCjh49WlVVhw4dqo8//riqqh46dEh37doV8vzRvO6BpVrK9340b1lfArQXkTYikorrmDwzaJ+ZwAjv+eXAPC/TM4FhIlJTRNoA7YHFInKMV8ODiNQGzgfWeMvHe38FGAwUb2w0xpgYsuatyufnn38mLS2NtLQ0hgwZwmOPPcbYsWMZMmQIvXr1KqzFAbjkkkuYMWMG6enpLFy4kGHDhvHII4/Qs2dPNmzYULhfamoq06dP5+abb6ZHjx6cf/75HDhwgOuuu47OnTtzyimn0LVrV0aNGsWhQ4ciyufw4cP56aefCpuT/GrVqkXPnj254YYbmDRpEgB33303Bw8epHv37nTp0oW7774bgG+//ZYBAwaETP/555/n+++/p127dnTt2pWRI0dy7LHHkpKSwj333EOfPn04//zzOfnkk8s8f6C///3vzJ8/n27dutGrV69y3xEWVaVFREf7AAYAXwEbgL946+4FBnrPawGvA+uBxUDbgGP/4h23FujvresO/A/4AhfU3BOw/zzgS2/9K0C9svJnNT2Vh5V9/FjZR8crr6jed5/qrbeG38fKPn4qc9m//vrreuWVVxZbd/bZZ+uSJUvilKOKFc+anqj26VHV2cDsoHX3BDw/AAwJc+x4YHzQui+AkGNXq+q5R5tfY4ypKP6anq1b450TU5XcfPPNvPvuuxXeCdk4Va4jszHGVAXWvGXK48knnwy53jq8VwybhsIYY6Lg4EEbp8eYysaCHmOMiQKr6TGm8rGgxxhjoiA/H2rVgoKCeOfEGONnQY8xxkTBwYNQxhhtxlR6q1ev5oYbbuDyyy/nn//8Z7yzc9Qs6DHGmCjIz4eUFBCJd05MoHr16kW0365du3jmmWfCLgOFM7AfrfHjx9OlSxe6d+9Oeno6ixYtqtD0A11zzTUce+yxxSYWBXjvvffo2LEj7dq148EHHyxc36lTJ5599llee+01PvnkkwrPT6xZ0GOMMVGQn281PVVZJEFPRcwinpWVxaxZs/j888/54osvmDt3Lq1ataqw9IONHDmS9957r9i6goICRo8ezbvvvsuqVat49dVXiw0sOHPmTC666KKwgx1WJRb0GGNMFFjzVtUxePBgevXqRZcuXZg4cSIAd955Jxs2bCA9PZ077rijxDIUrzV66aWX6N69Oz169OCqq64C4JVXXqFPnz6kp6czatQoCkJ08Nq+fTvNmjWjZs2aADRr1owWLVoUS//ZZ58lPT2d9PR02rRpwznnnBNx+sHOOussmjRpUmzd4sWLadeuHW3btiU1NZVhw4bx1ltvFW4fOHAg7777LlOnTo2sQCsxC3qMMSYK/M1bpvKbPHkyy5YtY+nSpfzjH/8gJyeHBx98kJNOOons7GweeeSREsuBVq5cybhx45g3bx7Lly/n73//O6tXr2b69Ol88sknZGdnk5SUFDJouOCCC9iyZQsdOnTgxhtvZMGCBSX2ueGGG8jOzmbJkiWkpaVx2223lZr+gAED+PbbbyN+/du2bSusXQJIS0tj27ZtgBsf6JZbbmHUqFHVoqbHBic0xpgosOatquMf//gHM2bMAGDLli2sW7eO4447LuLj582bx5AhQwrn7mrSpAn//ve/WbZsGaeeeioA+/fv59hjjy1xbL169Vi2bBkLFy5k/vz5DB06lAcffJCRI0eW2PfWW2/l3HPP5ZJLLuGpp54Km35FjuacmZlJZmZmhaUXbxb0GGNMFFjzVtXg8/mYO3cuWVlZ1KlTh8zMTA5UwOBKqsqIESN44IEHytw3KSmpMLjo1q0bL774YomgZ8qUKXz99dc89dRTR5x+WVq2bMmWLVsKl7du3UrLli2POt3KyJq3jDEmCvzNW6ruYSqn3bt307hxY+rUqcOaNWv47LPPAKhfvz579+4t3C94OdC5557L66+/Tk5ODgA7d+6kb9++vPHGG/zwww+F677++usSx65du5Z169YVLmdnZ3PiiScW22fZsmVMmDCBV155hRo13Nd2pOlH4tRTT2XdunVs2rSJ/Px8pk2bxsCBA8uVVmVnQY8xxkSBv3krJQUOHYp3bozfzz//TFpaGkOGDCEtLY01a9Zw6NAhOnXqxJ133slpp50GQNOmTTnjjDPo2rUrd9xxR4nlQF26dOEvf/kLZ599Nj169OC2226jc+fOjBs3jgsuuIDu3btz/vnns3379hL5yc3NZcSIEXTu3Jnu3buzatUqxo4dW2yfp556ip07d3LOOeeQnp7OddddV2r6pfXpueKKK8jIyGDt2rWkpaUxadIkkpOTeeqpp7jwwgvp1KkTv/71r+nSpUsFlHblI5rAP0F69+6tS5cuLVz2+XzVqu2yKrGyjx8r++gYPBjefBOuugqeew7q1y+5j5V9/FjZx080y15Elqlq73DbrabHGGOi4NAhSEpyU1HYpKPGVA4W9BhjTBTVrm2TjhpTWVjQY4wxUeCffsJqeoypPCzoMcaYKPB3l6xVy2p6jKksLOgxxpgosuYtYyoPC3qMMSYKrHnLmMrHRmQ2xpgo8DdvWU2PqQiHDx/m7rvvZs+ePfTu3ZsRI0bEO0tVktX0GGNMFFlNT+Uyfvx4unTpwrXXXkt6ejqLFi1i165dPPPMMzHNxzXXXMOxxx5L165di61/77336NixI+3atePBBx8sXP/WW2+xdetWUlJSSEtLi2leqxMLeowxJgoCm7espqdyyMrKYtasWXz++edMmjSJuXPn0qpVq7gEPSNHjuS9994rtq6goIDRo0fz7rvvsmrVKl599VVWrVoFuOkqTj/9dB577DH++c9/xjSv1YkFPcYYEwXWvFX5bN++nWbNmlGzZk0AmjVrRosWLbjzzjvZsGED6enphVNMvPLKK/Tp04f09HRGjRpFQUEBmzdv5uSTT2b48OF06tSJyy+/nJ9//pl9+/Zx0UUX0aNHD7p27cr06dPLzMtZZ51FkyZNiq1bvHgx7dq1o23btqSmpjJs2DDeeustANLS0mjcuDHgJig15RPVoEdE+onIWhFZLyJ3htheU0Sme9sXiUjrgG1jvPVrReRCb10tEVksIstFZKWI/C1g/zZeGuu9NG1+Y2NM3FnzVuVxwQUXsGXLFjp06MDjjz/OggULAHjwwQc56aSTyM7O5pFHHmH16tVMnz6dTz75hOzsbJKSkpg6dSrgalxuvPFGVq9eTYMGDXjmmWd47733aNGiBcuXL2fFihX069cPKH0OrFC2bdtGq1atCpfT0tLYtm0bAJdddhlz5szh5ptv5qyzzqqoIkk4UQt6RCQJeBroD3QGrhCRzkG7XQv8pKrtgMeBh7xjOwPDgC5AP+AZL7084FxV7QGkA/1E5DQvrYeAx720fvLSNsaYuLDmrcqnXr16LFu2jIkTJ9KoUSOGDh3KlClTSuz34YcfsmzZMk499VTS09P58MMP2bhxIwCtWrXijDPOAODKK6/k448/plu3bnzwwQf86U9/YuHChTRs2BCA2bNn06JFiwrJe506dZg0aRJPPvkko0ePrpA0E1E0a3r6AOtVdaOq5gPTgEFB+wwCXvSevwH0FRHx1k9T1TxV3QSsB/qok+vtn+I91DvmXC8NvDQHR+l1GWNMmax5q3JKSkoiMzOTq6++mqeeeoo333yzxD6qyogRI8jOziY7O5u1a9cWznwu/mjWIyJ06NCBzz//nG7dunHXXXdx7733litvLVu2ZMuWLYXLW7dupWXLluVKy4QWzVvWWwJbApa3Ar8It4+qHhKR3UBTb/1nQce2hMIapGVAO+BpVV0kIs2AXap6KHj/YCJyPXA9QPPmzfH5fIXbcnNziy2b2LGyjx8r+4qnCjk53fD5vmTdunqsWdMMn29zif2s7GPrm2++oUaNGqSlpZGbm8tbb71FcnIyy5cv58cffyz8X9SvX5+XX36ZPn360LhxY/bs2cPPP/9cmMbTTz9Nly5dePTRRznxxBN54403aNCgAWlpafTr14933nknoiao7777jn379hWet6CggC+//JJXX32VZs2a8fzzz3PXXXdVu2skrte9qkblAVwOPB+wfBXwVNA+K4C0gOUNQDPgKeDKgPWTgMuDjm0EzAe6esesD9jWClhRVh579eqlgebPn68mPqzs48fKvuLl56teeql7vnq16h/+EHo/K/vYWrp0qWZkZGinTp20bdu2eumll+qOHTtUVfWKK67QLl266B+8f9a0adO0R48e2q1bNz3llFM0KytLN23apB07dtThw4frySefrJdddpnu27dP33vvPe3WrZv26NFDe/furUuWLFFV1f79++u2bdtC5mXYsGF63HHHaXJysrZs2VKff/55VVV95513tH379tq2bVsdN25cDEol9qJ53QNLtZTv/WjW9Gzzgg+/NG9dqH22ikgy0BDIieRYVd0lIvNxfX4eBRqJSLK62p5Q5zLGmJjIz4eUFPfcOjJXHr169eLTTz8FwOfzkZmZWbjt3//+d7F9hw4dytChQ4ut27x5M8nJybzyyivF1l944YVceOGFJc43e/bssHl59dVXQ64fMGAAAwYMKPV1mPKLZp+eJUB7766qVFzH5JlB+8wE/MNKXg7M8yK1mcAw7+6uNkB7YLGIHCMijQBEpDZwPrDGO2a+lwZemm9F76UZY0x4+fmQ6t0/ah2Zjak8olbTo66Pzk3AHCAJmKyqK0XkXlz100xcs9XLIrIe2IkLjPD2ew1YBRwCRqtqgYgcD7zo9eupAbymqrO8U/4JmCYi44D/eWkbY0zMHTxYFPRYR+bqo3Xr1qxYsSLe2TBHIapzb6nqbGB20Lp7Ap4fAIaEOXY8MD5o3RdAzzD7b8TdMWaMMXEV2LyVne0e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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot magnetic susceptibility vs temperature\n", + "plt.figure(figsize=(9, 5))\n", + "plt.plot(T_values, susceptibility_values, 'o-', label='Susceptibility', color='blue', markersize=3, linewidth=0.7)\n", + "plt.xscale('linear') # Set the x-axis scale to linear\n", + "plt.xlabel('Temperature (T)')\n", + "plt.ylabel('Magnetic Susceptibility')\n", + "plt.legend()\n", + "\n", + "lattice_info = f'Lattice Type: Cubic\\nLattice Size: ${N}^3$\\nSteps: $10^{power}$'\n", + "\n", + "plt.text(0.72, 0.8, lattice_info, transform=ax.transAxes, fontsize=10, ha='left', va='center')\n", + "\n", + "# Set legend font size\n", + "legend.get_texts()[0].set_fontsize('10')\n", + "\n", + "\n", + "plt.title('Classical 3D Heisenberg Model - Monte Carlo Simulation using Metropolis Algorithm')\n", + "plt.grid(True)\n", + "\n", + "# Save the figure to a file (e.g., a PNG image)\n", + "file_name_image = f\"Susceptibility_vs_Temperature_Simulation_results_{N}X{N}X{N}_Steps{total_steps}.png\" \n", + "plt.savefig(file_name_image, dpi=300, bbox_inches='tight')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.18" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}