{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "dk_clsQsU831" }, "source": [ "# Stochastic Time-Integration Demo\n", "\n", "based on Leliaert et al., \"Adaptively time stepping the stochastic Landau-Lifshitz-Gilbert equation at nonzero temperature: Implementation and validation in MuMax 3\", AIP advances 7, 125010 (2017)\n", "\n", "For comparison with the paper Leliaert et al., AIP advances 7, 125010 (2017) Figure 5 we need to simulate a 2^18 (64^3) of uncoupled cells.\n", "Since the cell are uncoupled the volume in our calculations has to be the volume of one cell and not the whole simulated material.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "NOnBqo-nsvzX" }, "source": [ "## Google Colab Link\n", "\n", "The demo can be run on Google Colab without any local installation.\n", "Use the following [link](https://colab.research.google.com/drive/1RlDaxgjqrZzerBFffDL7lQJHtEOm6v0q) to try it out." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "6jerYNCbL217", "outputId": "da6696d7-e0b8-4761-aede-786cffd266c4" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.0/17.0 MB\u001b[0m \u001b[31m38.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.1/53.1 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m53.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m122.3/122.3 kB\u001b[0m \u001b[31m14.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m79.3/79.3 MB\u001b[0m \u001b[31m9.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m122.3/122.3 kB\u001b[0m \u001b[31m14.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m122.3/122.3 kB\u001b[0m \u001b[31m14.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m117.9/117.9 kB\u001b[0m \u001b[31m14.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h Building wheel for magnumnp (setup.py) ... \u001b[?25l\u001b[?25hdone\n" ] } ], "source": [ "!pip install -q magnumnp numpy==1.23" ] }, { "cell_type": "markdown", "metadata": { "id": "O_kE_ZQMWi7g" }, "source": [ "## Run Demo:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "iwW3mUynhwkJ", "outputId": "9786975d-cc54-4498-c073-3406fdbc55b9" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:02:40 magnum.np:INFO \u001b[1;37;32mmagnum.np 1.1.2\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;32mmagnum.np 1.1.2\u001b[0m\n", "2023-10-09 10:02:44 magnum.np:INFO \u001b[1;37;32m[State] running on device: cuda:0 (dtype = float64)\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;32m[State] running on device: cuda:0 (dtype = float64)\u001b[0m\n", "2023-10-09 10:02:44 magnum.np:INFO \u001b[1;37;32m[Mesh] 64x64x64 (size= 1e-08 x 1e-08 x 1e-08)\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;32m[Mesh] 64x64x64 (size= 1e-08 x 1e-08 x 1e-08)\u001b[0m\n", "2023-10-09 10:02:44 magnum.np:INFO \u001b[1;37;32m[LLGSolver] using RKF45 solver (atol = 1e-05)\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;32m[LLGSolver] using RKF45 solver (atol = 1e-05)\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Running for xi = 30 (T = 2414.3238323512273)\n", "h = 0.0\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:03:49 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=2e-08\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=2e-08\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.01\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:04:49 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=4e-08\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=4e-08\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.02\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:05:51 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=6e-08\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=6e-08\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.03\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:06:53 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=8e-08\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=8e-08\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.04\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:07:57 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=1e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=1e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.05\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:09:01 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.06\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:10:07 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.07\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:11:14 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.08\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:12:22 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=1.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.09\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:13:32 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.1\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:14:43 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Running for xi = 91 (T = 795.930933742163)\n", "h = 0.0\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:15:03 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.01\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:15:23 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.02\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:15:45 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=2.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.03\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:16:08 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=3e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=3e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.04\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:16:32 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.05\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:16:58 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.06\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:17:25 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.07\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:17:54 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=3.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.08\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:18:23 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.09\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:18:54 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.1\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:19:26 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Running for xi = 242 (T = 299.296342853458)\n", "h = 0.0\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:19:33 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.01\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:19:42 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=4.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.02\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:19:52 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=5e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=5e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.03\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:20:03 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.04\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:20:15 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.05\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:20:29 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.06\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:20:43 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=5.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.07\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:20:59 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.08\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:21:16 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.09\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:21:35 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.1\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:21:54 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Running for xi = 725 (T = 99.90305513177493)\n", "h = 0.0\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:21:57 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=6.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.01\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:00 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=7e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=7e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.02\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:06 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.03\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:12 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.04\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:19 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.05\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:27 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=7.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.06\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:37 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.07\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:47 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.2e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.2e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.08\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:22:58 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.4e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.4e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.09\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:23:11 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.6e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.6e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "h = 0.1\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2023-10-09 10:23:24 magnum.np:INFO \u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.8e-07\u001b[0m\n", "INFO:magnum.np:\u001b[1;37;34m[LLG] step: dt= 2e-08 t=8.8e-07\u001b[0m\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "=====================================================================\n", "TIMER REPORT\n", "=====================================================================\n", "Operation No of calls Avg time [ms] Total time [s]\n", "------------------- ------------- --------------- ----------------\n", "LLGSolver.step 44 28177.7 1239.82\n", " ExternalField.h 639462 0.703069 449.586\n", " ThermalField.h 639462 0.180059 115.141\n", "ExternalField.h 44 0.299455 0.013176\n", "------------------- ------------- --------------- ----------------\n", "Total 1244.44\n", "Missing 4.60935\n", "=====================================================================\n", "\n" ] } ], "source": [ "from magnumnp import *\n", "import numpy as np\n", "\n", "Timer.enable()\n", "\n", "n = (64, 64, 64) # 2**18 of uncoupled cells.\n", "dx = (10e-9, 10e-9, 10e-9)\n", "mesh = Mesh(n, dx)\n", "\n", "Ms = 1e6\n", "t_final = 2e-8\n", "\n", "state = State(mesh)\n", "state.material = {\n", " \"Ms\": Ms, # Js ~ 1.26 T for Ms = 1e6 A/m\n", " \"alpha\": 0.1\n", " }\n", "state.m = state.Constant([0,0,0])\n", "add_noise(state.m)\n", "state.m.normalize()\n", "\n", "external = ExternalField([0,0,0])\n", "thermal = ThermalField()\n", "llg = LLGSolver([external, thermal], solver = RKF45)\n", "\n", "# perform stochastic integration\n", "for xi in [30, 91, 242, 725]:\n", " logger = ScalarLogger(\"data/log_xi%d.dat\" % xi, ['t', external.h, 'm'])\n", " state.T = constants.mu_0 * Ms * state.cell_volumes.max() * 1./constants.mu_0 / (constants.kb * xi)\n", " print(f\"Running for xi = {xi} (T = {state.T})\")\n", " for h in np.linspace(0, 0.1, num=11):\n", " print(f\"h = {h}\")\n", " external.h = [h / constants.mu_0, 0, 0]\n", " llg.step(state, dt = t_final)\n", " logger << state\n", "Timer.print_report()\n" ] }, { "cell_type": "markdown", "metadata": { "id": "wO5hJKVCmVt7" }, "source": [ "## Plot Results:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 462 }, "id": "2KHqxaW4hwkL", "outputId": "66950b73-56aa-4c9c-fc27-a737013e2982" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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t1bxzp07k5ycTEFBAV999RWTJk1i5cqVzaIn6WxqnSitWbOG9957j/79+9O1a1duueUWrr/++oaIzW3shRWJUi263TqHdkava+CVpA+vhiN/SmtSA1BVla82H+fZn3ZTWG7DaNBx35iOTB3VHqNBVggXQpyfU8ckNUY9tT///JPHHnuM7du306XL2YeA1KfrzWQyOVfe6N+/Pxs3buS1117j7bffJiIiAoPBQEZGRrXnZGRkEBPTSLPBG0itE6ULL7yQCy+8kLlz5/L555+zaNEiZs6ciaIoLF26lLi4OAIDAxsi1kajFGkDufXn8XU4Zrw1eLdb1bFJ/SZJa5ILnSwo49FvdrCiYvmRXm2Cefma3nSOado/x0KIxlXTwO3GqKf266+/0rNnz3MmSVC/rrdTKYqC2WwGtCSqf//+JCUlceWVVzofT0pK4t577z2v63mqOpcH8Pf35/bbb+f2228nJSWF9957jxdffJFZs2Yxfvx4fvjhB1fG2aiU4iIA9IEB5zy30dZ4k9Ykl1NVlS82HeO5n/ZQZLZh8tIzY1wnpgxPxEtakYQQtWRX1DPWU3M83hDi4+PZtm0br7zyChdffDGxsbGEnKEGYF273h599FEuvvhi4uPjKSoqYvHixaxYsYLffvvNec7MmTOZNGkSAwYMYODAgcydO5eSkhImT55c1y/NI7hkrbfOnTvz0ksvMXv2bH788ccmPxXQXtGiZAg4e4uCqqqViVJDtyhVbU0Kjm3Y12oB0vLLmPX1dlbvywagT1wIr/yjFx2ipBVJCFE37qqndscdd5CZmcmiRYt4/PHHMZvN3HrrrXz44Ycue43MzExuvfVWTp48SXBwML169eK3335j/PjxznOuu+46srKyePLJJ0lPT6dPnz78+uuvTX79V5ckSg4Gg4Err7zS2ezWVClFjhals39ophWnUWQpwkvvRfvg9g0X0CFpTXIVVVX5fOMxnvt5D8UVrUgP/q0Tdwxrh0HfCMVChRDCxfR6PY899hiPPfYYAN9++y1XX301ixYtwmBwzUzd995777zOu/fee5t8V9upXJooNRf2iq43wzm63lLyUgDoGNIRo8HYcAE5W5NuldakejiRX8asb3awKlUbi9QvPoSXrulNh6hzd7EKIURTUFJSwvr16+nfv7/LkqSWThKlGijFJQDoz9H1lpqnDc7rFNpw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\n" }, "metadata": {} } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "fig, ax = plt.subplots()\n", "cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']\n", "\n", "for i, xi in enumerate([30, 91, 242, 725]):\n", " data = np.loadtxt(\"data/log_xi%d.dat\" % xi)\n", " h = 4*np.pi*1e-7*data[:,1]\n", " ax.plot(h, data[:,4], 'x', color = cycle[i], label = f\"$\\\\xi = {xi}$\")\n", "\n", " h_ref = np.linspace(0.0001, 0.1, num=100)\n", " ax.plot(h_ref, np.cosh(xi*h_ref)/np.sinh(xi*h_ref)-1/(xi*h_ref), '-', color = cycle[i])\n", "\n", "\n", "ax.set_xlim([0,0.1])\n", "ax.set_ylim([0,1])\n", "ax.set_xlabel(\"External Field $\\mu_0 H^{ext}_z [T]$\")\n", "ax.set_ylabel(\"Average Magnetization $m_z$\")\n", "ax.legend()\n", "ax.grid()\n", "fig.savefig(\"data/results.png\")" ] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "gpuClass": "standard", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 0 }