{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# Analysing simulation results\n", "\n", "With `micromagneticdata` we can analyse simulation results created with `oommfc`. This notebook summarises the available functionality." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "import micromagneticdata as md" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have a set of example simulations stored in the test directory of `micromagneticdata` that we use to demonstrate its functionality." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "dirname = os.path.join(\"..\", \"micromagneticdata\", \"tests\", \"test_sample\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `Data`\n", "First, we creata a `Data` object. We need to pass the name of the `micromagneticmodel.System` that we used to run the simulation and optionally an additional path to the base directory." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = md.Data(name=\"system_name\", dirname=dirname)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `Data` object contains all simulation runs of the `System`. These are called drives." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", " | drive_number | \n", "date | \n", "time | \n", "driver | \n", "t | \n", "n | \n", "n_threads | \n", "
---|---|---|---|---|---|---|---|
0 | \n", "0 | \n", "2023-11-07 | \n", "09:47:23 | \n", "TimeDriver | \n", "2.500000e-11 | \n", "25.0 | \n", "NaN | \n", "
1 | \n", "1 | \n", "2023-11-07 | \n", "09:47:24 | \n", "TimeDriver | \n", "1.500000e-11 | \n", "15.0 | \n", "NaN | \n", "
2 | \n", "2 | \n", "2023-11-07 | \n", "09:47:24 | \n", "TimeDriver | \n", "5.000000e-10 | \n", "250.0 | \n", "NaN | \n", "
3 | \n", "3 | \n", "2023-11-07 | \n", "09:47:25 | \n", "RelaxDriver | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
4 | \n", "4 | \n", "2023-11-07 | \n", "09:47:26 | \n", "MinDriver | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
5 | \n", "5 | \n", "2023-11-07 | \n", "09:47:26 | \n", "TimeDriver | \n", "5.000000e-12 | \n", "5.0 | \n", "NaN | \n", "
6 | \n", "6 | \n", "2023-11-07 | \n", "09:47:26 | \n", "MinDriver | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
<xarray.DataArray 'field' (iteration: 14, x: 20, y: 10, z: 4, vdims: 3)>\n", "array([[[[[ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05]],\n", "\n", " [[ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05]],\n", "\n", " [[ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05]],\n", "\n", " ...,\n", "\n", " [[ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", " [ 3.50067876e+05, 6.98022376e+05, 1.73831082e+05],\n", "...\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05]],\n", "\n", " ...,\n", "\n", " [[-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05]],\n", "\n", " [[-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05]],\n", "\n", " [[-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05],\n", " [-3.33701946e-06, -6.65389694e-06, 8.00000000e+05]]]]])\n", "Coordinates:\n", " * x (x) float64 -4.75e-08 -4.25e-08 -3.75e-08 ... 4.25e-08 4.75e-08\n", " * y (y) float64 -2.25e-08 -1.75e-08 -1.25e-08 ... 1.75e-08 2.25e-08\n", " * z (z) float64 2.5e-09 7.5e-09 1.25e-08 1.75e-08\n", " * vdims (vdims) <U1 'x' 'y' 'z'\n", " * iteration (iteration) float64 0.0 1.0 2.0 3.0 4.0 ... 10.0 11.0 12.0 13.0\n", "Attributes:\n", " drive_number: 6\n", " date: 2023-11-07\n", " time: 09:47:26\n", " driver: MinDriver\n", " n_threads: None
<xarray.DataArray 'field' (t: 290, x: 20, y: 10, z: 4, vdims: 3)>\n", "array([[[[[ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874]],\n", "\n", " [[ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874]],\n", "\n", " [[ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874]],\n", "\n", " ...,\n", "\n", " [[ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", " [ -27584.49540021, 658579.77501927, 453334.06616874],\n", "...\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125]],\n", "\n", " ...,\n", "\n", " [[ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125]],\n", "\n", " [[ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125]],\n", "\n", " [[ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125],\n", " [ 797212.875 , -51317.65625 , 42639.36328125]]]]])\n", "Coordinates:\n", " * x (x) float64 -4.75e-08 -4.25e-08 -3.75e-08 ... 4.25e-08 4.75e-08\n", " * y (y) float64 -2.25e-08 -1.75e-08 -1.25e-08 ... 1.75e-08 2.25e-08\n", " * z (z) float64 2.5e-09 7.5e-09 1.25e-08 1.75e-08\n", " * vdims (vdims) <U1 'x' 'y' 'z'\n", " * t (t) float64 1e-12 2e-12 3e-12 ... 5.423e-10 5.445e-10 5.466e-10\n", "Attributes:\n", " drive_numbers: [0, 1, 2]\n", " driver: TimeDriver