{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Field `Valid`\n", "\n", "The `discretisedfield.Field` class features a `valid` property, specifically designed to indicate which values within a field should be considered during specific operations and which ones should be disregarded. While not all functions recognize the `valid` property, it plays a pivotal role in tasks such as plotting and differentiation.\n", "\n", "In this tutorial, we will delve into the various methods to set the `valid` property and shed light on its applications. To illustrate its functionality, we will create a scalar field on a 2D mesh and examine how `valid` operates within this context." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "import discretisedfield as df\n", "\n", "mesh = df.Mesh(p1=(0, 0), p2=(2, 2), n=(2, 2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When initializing our field, we can provide an argument named `valid`. By default, this argument is set to `True`, ensuring the field is valid everywhere." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ True, True],\n", " [ True, True]])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "field = df.Field(mesh, nvdim=1, value=1)\n", "field.valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also explicitly set the `valid` property using a boolean value, either `True` or `False`, to indicate the field's validity status." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ True, True],\n", " [ True, True]])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "field = df.Field(mesh, nvdim=1, value=1, valid=True)\n", "field.valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In fact, we can actually set `valid` using the exact same methods that we use to set the field values. For more information on ways this can be set please refer to the [spatially varying fields](https://ubermag.github.io/documentation/notebooks/discretisedfield/field-spatially-varying.html) notebook.\n", "\n", "Let us try to set valid with a multidimensional list." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ True, True],\n", " [ True, False]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid = [[True, True], [True, False]]\n", "field_2 = df.Field(mesh, nvdim=1, value=1, valid=valid)\n", "field_2.valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting\n", "One of the functions that utilises `valid` is plotting. When plotting both fields we can see that any cell which has `valid=False` is masked." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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Renhhx/W8OHD9f333zv0KY9843GVw+PHj6t///66//77NXv2bFWqVEmrV6/WwIEDtX79ekVFRRW7b7NmzTRt2rRC7XXq1LFkfAAA4FnK+z6HruaKbdu2adKkSWrdurUSExPl6+uruXPnasCAAdq6datCQkLMvmWdbzwuHC5atEg2m03vv/++goODJUktWrRQXFycEhMTtWrVqmL3rVKliiIiItw2PgAA8DDl/IQUV3PFvHnzdO+992r58uUKCAiQJEVGRqpz585avny5Xn31VbNvWecbjzqsbBiGUlJSFBMTYy5MkgICAhQXF6d9+/bpwoULHjs+AAC4e7iaK3Jzc5WVlaWYmBgzGEpSzZo11bFjR6WkpJTJPIrjUeHwp59+0sWLF9W4ceNC2xo3biy73a7MzEyPHR8AAJQtH8N9r9txNVfYbDZJcgiGBerUqaOsrCzl5eU5/RlYnW88Khzm5ORIupGcf62graBPUc6ePaspU6aoQ4cOat68ubp166b169dbNj4AAEABV3NF7dq1FRQUpK+//rrQtu+++07SjUxToKzzjUeFw2vXrkkqOkn7+/tLkq5cuVLs/llZWapXr57mzJmjpKQkhYaG6s0339SKFSssGR8AAHgYw42v23A1V/j4+Gjw4MHKyMjQzJkzdfr0aeXk5CghIUFHjx6V9N/qolT2+cajLkipWLGiJCk/P7/QtoKFBwYGFrlvUlKS/Pz8VLVqVbOtQ4cO6tOnj+bPn68+ffqUanwAAICblSZXvPjii7p06ZJWrFihlStXytfXV926ddOwYcP0zjvvqHLlypLKJ994VDgsuGw7Nze30LYzZ8449Pm1oKCgQm0+Pj7q3LmzvvnmGx09elR169Z1eXwAAOB5yvNWNqXJLX5+fho/fryGDBmi7OxshYSEqHr16po3b54qV66sWrVqSSqffONR4bBu3bqqWbOmMjIyCm3LyMiQv7+/mjRpUuS+drtddrtdfn6OSyooo1asWLFU4wMAANzMilxRtWpVh6rggQMHFBERIR8fH0nlk2886pxDSerSpYtSU1N1+vRpsy0vL087d+5U+/btVaVKlUL7HD9+XJGRkZozZ45Du81mU0pKioKCgtSoUSOXxwcAAB7KMNz3coKrueKtt95S9+7dHc4tPHz4sPbv36/u3btLKr9843HhcOTIkQoMDNTw4cP1l7/8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KCwsTGPHjiUgAgCAEnE1t2zbtk2jRo1SQECAEhMTlZiYqJMnT2rAgAE6ffp0ice3Mt/4GIZn3T1yypQp2rFjh3bv3q3g4GBJ0rVr1xQXF6ff/va3WrVqVan2S0pK0sKFC7Vt2zY1btxYkmQYhvr06aNz58459QE2nDen9AsFAOAu8cO4iW4bO9a3j9vG/tz24W37uJpbOnfuLJvNpp07dyogIECSdPbsWXXu3Fm9e/fWq6++WqLxrcg3BTyqcmgYhlJSUhQTE2N+AJIUEBCguLg47du3TxcuXCjVfp9//rnCwsLMD06SfHx81K1bN/3444/KyMhw4woBAMCdwtXckpubq6ysLMXExJjBUJJq1qypjh07KiUlpcTjW5lvPCoc/vTTT7p48aLDwgo0btxYdrtdmZmZLu93/fp1ff/998X2k6QjR45YsBIAAFAmyvGcQ1dzi81mkySHYFigTp06ysrKUl5eXrnlG4+6lU1OTo6kG8n51wraCvq4st+FCxeUn59/y365ubm3nWda/6G37QMAAO5sruaW2rVrKygoSF9//XWhbd99952kG4eYyzrfFPCocHjt2jVJRSdpf39/SdKVK1dc3u/q1asujf9rISHVbtsHAAC43+f2TeX23q7mFh8fHw0ePFizZ8/WzJkzNWjQIFWoUEEffPCBjh49KulGdbGs800BjzqsXLFiRUlSfn5+oW0FH1BgYKDL+7k6PgAAwK+VJle8+OKLGj58uNatW6d27drpscce06lTpzRs2DBJUuXKlcst33hU5TAkJERS0aXPM2fOOPRxZb8aNWooICCgxOMDAAD8mqu5RZL8/Pw0fvx4DRkyRNnZ2QoJCVH16tU1b948Va5cWbVq1dL169edGt/qfONR4bBu3bqqWbNmkVfUZGRkyN/fX02aNHF5P19fXzVu3LjYfpLUrFkzC1YCAADudK7mlptVrVpVVatWNf/7wIEDioiIkI+PT7nlG486rCxJXbp0UWpqqsMNIPPy8rRz5061b99eVapUKdV+Xbt2VWZmptLT081+drtd27Zt04MPPqiGDRu6aWUAAOBO42pueeutt9S9e3fzymVJOnz4sPbv36/u3buXeHwr843H3QQ7Oztbv//97xUaGqoxY8bI399fy5Yt0zfffKNNmzapUaNGSktL0wsvvKCpU6eqT58+Tu8n3fhAe/ToIcMw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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "field.mpl()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "field_2.mpl()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Even after initialization, the `valid` property remains flexible, allowing for subsequent modifications." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ True, True],\n", " [ True, True]])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "field_2.valid = True\n", "field_2.valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Besides the conventional methods to set field values, the `valid` property can also automatically be set based on the norm of the field values. This can be achieved by passing `\"norm\"` to `valid`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ True, True],\n", " [ True, False]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "value = np.array([[[0, 1, 0], [0, 1, 1]], [[0, 1, -1], [0, 0, 0]]])\n", "field_3 = df.Field(mesh, nvdim=3, value=value, valid=\"norm\")\n", "field_3.valid" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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z69M29KyixcvVt+AAQBApdgNnyr7upaioiJJcrhVrZQrccXhw4d18803a/bs2UpNTVV4eLheeeUVLV261JL+3eVxG1LctX79egUEBKhu3bpmWefOndW7d29NmzZNPXv2VEBAgCSpuLi4TPvSssDAwOoZMAAA8Gp16tSR5DyuKA3syosrUlNT5evrq/r165tlXbt21cCBA5WSkqKBAwdWqv/KuG4yhyEhIQ6BoXT5DevUqZOOHj2qkydPqnHjxpIup3F/LS8vT5IUGhpa9YMFAACWsMunyr6upTRmOHXqVJlr14orgoKCHAJDSfLx8VH37t118eJF7d27t1L9V8Z1ExzabDbZbLYy5aXp1jp16igyMlK1a9dWTk5OmXo5OTkKDQ11OFsIAACgPE2bNlVwcHC5cYWfn5/TTbCSZLfbVVJSUqb8yrilMv1XxnURHG7btk0xMTFKS0tzKD937pwyMzMVGRmpm266SQ0aNFDHjh21adMmhzX648eP68svv9QDDzxQ3UMHAACVUJP3HEpSjx49lJmZqZMnT5pl58+f1+bNm9WlSxfVq1evTJuDBw+qXbt2mj17tkO5zWZTenq6goKC1LJlS7f7ryyPCw4PHz6sXbt2adeuXTpx4oSkyxtNSsuKior0wQcfKDo6Wlu3bpUkdejQQbGxsZo5c6aWLFmirKwsffLJJxoyZIhOnTql5557zuz/mWeeUWFhocaMGaPMzEx99tlnGjlypBo2bKinnnqqRuYMAADcU5NH2UjS6NGjFRgYqJEjR+of//iH/vnPf2r06NG6cOGCkpOTJV1+wEd0dLTeffddSdItt9yihIQELV++XLNnz9aXX36pjIwMjRgxQrm5uXr22WfNDSeu9G81j9uQMm/ePG3YsMGhbPz48eafMzIyZLfbZbPZZLfbJUm+vr564403tGTJEq1Zs0avv/666tatq9jYWK1cuVLt27c320dFRWnZsmWaM2eORo8erdq1a+uee+7R3LlzzXsSAQAAXNGkSROtXr1aM2fOVHJysgzDUFxcnFasWGFm/wzDcIhbJGn69OmKjo7WunXr9Pbbb8vPz0/R0dFauHChunXrVqH+reZjGIZRJT1fx+zHyh5GCaDm5df+V00PAYAToaENqqzvAZmjqqzvdR0XVlnfnszjlpUBAABQczxuWRkAAMBVrhw5g4ohcwgAAAATmUMAAOC1XD1yBq4jcwgAAAATmUMAAOC1yBxaj+AQAAB4LYJD67GsDAAAABOZQwAA4LXIHFqPzCEAAABMZA4BAIDX4hBs65E5BAAAgInMIQAA8Frcc2g9MocAAAAwkTkEAABei8yh9QgOAQCA1yI4tB7LygAAADCROQQAAF6LzKH1yBwCAADAROYQAAB4LYPMoeXIHAIAAMBE5hAAAHgtHp9nPTKHAAAAMJE5BAAAXovdytYjOAQAAF6LDSnWY1kZAAAAJjKHAADAa7GsbD0yhwAAADCROQQAAF6Lew6tR+YQAAAAJjKHAADAa3HPofXIHAIAAMBE5hAAAHgtw6jpEVx/yBwCAADAROYQAAB4Lbu459BqBIcAAMBrcZSN9VhWBgAAgInMIQAA8FocZWM9MocAAAAwkTkEAABei6NsrEfmEAAAACYyhwAAwGuxW9l6ZA4BAABgInMIAAC8FplD63lscJidna2nn35a+/fv18aNG9WiRYtrttm4caOWLFmiffv2qUGDBoqKitLYsWN1++23m3W6deumn3/+2Wn7KVOmaMCAAZbNAQAAVC1POMomOztbc+bM0Y4dO1RSUqKYmBiNHz9e8fHxV22XmZmp1NRU7d69W3Xq1FHLli311FNP6b777jPrPP7448rKynLafuTIkZo4caKlc5E8NDhctWqVpk2bpoYNG7rcZuXKlZoyZYr69u2r559/XufOndPChQs1ePBgvfPOOw4B4v33368xY8aU6aNZs2aWjB8AANwYDh48qEGDBum2227TrFmzFBAQoOXLlyspKUmrVq1SbGys03ZbtmzRqFGj1KVLF6WmpsowDC1btkwjRozQa6+9pgceeMCs26ZNG02ePLlMH2FhYVUyJ48LDrOysjR9+nRNmjRJR48e1bx5867ZxmazKSUlRXfddZemT59ulsfGxqpLly5avXq1Q3AYFBSkmJiYKhk/AACoPjV9lM2CBQtks9m0ePFihYSESJLat2+vxMREzZ07V8uWLXPabu7cufrtb3+rBQsWyM/PT5IUHx+vrl27auXKlQ7BYb169ao1bvG44DAoKEhpaWmKjo5WamqqS22Ki4s1adIk3XLLLQ7lYWFhatSokY4dO1YVQwUAADcwwzCUnp6ujh07moGhJPn7+ysxMVErV65UQUGBbrrppjLtRo0apZCQEDMwlKTAwEDdeuut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zc7JyZGfn59atWpVbvu5c+fq3Xff1UsvvaTnnnuuTGAoXd4CXlJSUqa8dLm6NHsJAAA8m49hVNmXVaKiomQYhn744QeH8ry8POXl5alNmzbX7MMwDGVkZOiee+4pd4m6dIX1SpcuXZJUsdjG44JDSerRo4cyMzN18uRJs+z8+fPavHmzunTponr16jltl56erkWLFumZZ57RE0884bTOwYMH1a5dO82ePduh3GazKT09XUFBQWrZsqV1kwEAADe0hIQE+fr66sMPP3QoL/37lecwl+fw4cM6efKk2rZt6/T6kCFDlJiYaAaDpf77v/9bkq75hLkredyysiSNHj1amzZt0siRIzVu3Dj5+fnpjTfe0IULF5ScnCxJysrK0tChQzVp0iQNHDhQJSUlmjZtmsLDw3XXXXdp165dZfqNjIzULbfcooSEBC1fvly+vr7q2LGjzp8/r9WrVys3N1dTpkyp8EniAACghnjBUTZNmjRRUlKSli5dquDgYMXHx+v7779XSkqK+vfv73Dc3pAhQ7R///4yj7vbv3+/JJW7ESUpKUkjR47U8OHDNWTIENWvX1/btm3Tm2++qfj4eHXv3t3l8XpkcNikSROtXr1aM2fOVHJysgzDUFxcnFasWGFm9QzDkM1mk91++WaDY8eO6dChQ5JU7pp6RkaGwsPDNX36dEVHR2vdunV6++235efnp+joaC1cuFDdunWrnkkCAIAbRnJysho2bKi1a9dq/vz5CgsL07Bhw8wnppSy2+2y2Wxl2pc+AKS81dP77rtPb7/9thYsWKDnnntOxcXFatasmfkatWq5vljsYxheEHJ7mOavz752JQDVruXEbTU9BABOfGpfV2V9PxD5QpX1/UnOtCrr25N55D2HAAAAqBkeuawMAADgEhZALUfmEAAAACYyhwAAwHuRObQcwSEAAPBeBIeWY1kZAAAAJjKHAADAe9nJHFqNzCEAAABMZA4BAID3Muw1PYLrDplDAAAAmMgcAgAA78VuZcuROQQAAICJzCEAAPBe7Fa2HMEhAADwXiwrW45lZQAAAJjIHAIAAO9F5tByZA4BAABgInMIAAC8F5lDy5E5BAAAgInMIQAA8F52Hp9nNTKHAAAAMJE5BAAA3ot7Di1HcAgAALwXwaHlWFYGAACAicwhAADwXjxb2XJkDgEAAGAicwgAALyWYXCUjdXI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XrjSjfa9eT254TKHoaGhkpwv7ebl5TnUcaddw4YN5e/vX+H+rebuPK80adIkpaamavjw4Zo5c6Z8fR3/LxEUFFQm+PPx8VH37t118eJF7d27tzJTuKbKzNGVsVvxHlrBinGcOHFC//73v9W1a1en10NCQhx+GUuXfxh36tRJR48edXgspadp3LixJJV57qjk+P54yudZGcXFxRozZozee+89vfTSS2U2qEje/VlKro3f1c/cG3z77bc6fvx4ud+boaGhZmB4Zdntt99uPl2jOl3r98KVbqTvzevNDZc5bNq0qYKDg53uGM7JyZGfn5/Tm2ddbVe7dm1FRESUW09ShR5+7S5351lq7ty5evfdd/XSSy+Ve1ir3W6X3W4v88OhNP3/6x9oVqvMHF0Ze2XfQ6tYMY6MjAwZhlHuYbU2m02SVLt2bYfy6vosKyMyMlK1a9cu9/0JDQ01z670hM/TXYZh6MUXX9TWrVv12muvqUePHk7refNnKbk2/op85p7u008/Va1atdS5c2en14uLi+Xr6ysfHx+H8osXL1b7Z+nK74Ur3Sjfm9ejGy5zKEk9evRQZmamw/+gz58/r82bN6tLly6qV69epdr17NlTubm5ys7ONuvZ7XZ99NFHat26dbUdXOruPNPT07Vo0SI988wz5f4AOHjwoNq1a6fZs2c7lNtsNqWnpysoKEgtW7a0bjLlcGeOFRm7u++h1So7jm+++abcH7Dbtm1TTEyM0tLSHMrPnTunzMxMRUZG6qabbrJmIlWgQYMG6tixozZt2uRwX9Lx48f15ZdfOhzO6ymfpztWrFihv/3tb5oxY0a5gaG3f5aujr8in7mn++abbxQeHq6goKAy1zZs2KB27drp888/dyg/cuSIvvvuO915553VNErXfi/82o3yvXldqv6jFWvesWPHjPj4eKN///7GZ599ZmzdutUYMmSIERcXZ/zwww+GYVw+2DQqKspIS0urUDvDMIxffvnFSEhIMH73u98ZmzZtMrZt22Y8/fTTRnR0tJGZmenR8ywuLja6d+9udOvWzdi5c6fx7bfflvkqPcz06aefNqKiooxZs2YZmZmZRnp6upGUlGS0atXKWLt2rcfOsSJjd/Uz99R5lrraAezFxcXGI488YsTGxhqLFy82tm/fbmzcuNHo37+/ERUVZXzxxRdVOrcrHTp0yPx39l//9V9Gq1atjE2bNjn829uwYYMRFRVl/M///I/Zbvfu3Ua7du2MpKQk45///KexZcsWo2/fvkbHjh2NkydPmvU84fN0Z45nz5417rjjDmPgwIFOvye//fZbwzC8/7OsyPhd/cw9cZ5X6tixozF06FCnfRcWFhqJiYnGXXfdZbzzzjvGV199ZWzYsMFISEgw4uLijD179lT19AzDcP33grd/b+L/3HDLypLUpEkTrV69WjNnzlRycrIMw1BcXJxWrFhhZowMw5DNZjNvlHW1nSTVrVtXK1eu1IwZM/Tyyy/rwoULio6O1uLFi3XPPfd49DyPHTumQ4cOSVK5z2DNyMhQeHi4pk+frujoaK1bt05vv/22/Pz8FB0drYULF6pbt24eO0dJLo/d1c/cU+dZ6uzZs+X+z9vX11dvvPGGlixZojVr1uj1119X3bp1FRsbq5UrV6p9+/ZVOrcrzZs3Txs2bHAoGz9+vPnnjIwM2e32MvOMiorSsmXLNGfOHI0ePVq1a9fWPffco7lz55r3PUme8Xm6M8c9e/bo3Llz+uabb8o9bDknJ8frP8uKjN/Vz7yquftvttTVvjfr16+vd955R/Pnz9fChQt1+vRpNWjQQPHx8Zo/f77TcwGrgqu/F7z9exP/x8cwDKOmBwEAAADPcEPecwgAAADnCA4BAABgIjgEAACAieAQAAAAJoJDAAAAmAgOAQAAYCI4BAAAgIngEAAAACaCQwAAAJgIDgF4rd27d+v222/Xc889Z0l/hYWF6t27tx588EEVFhZa0icAeBsenwfAK509e1YPPfSQGjRooPXr16tOnTqW9Pvjjz+qf//+uvvuu7Vo0SJL+gQAb0LmEIBXmjp1qo4eParJkydbFhhK0m233aZx48bps88+03vvvWdZvwDgLcgcAvA633//vfr3769OnTpp6dKllvdfVFSk3/3ud7Lb7dqyZYv8/f0tfw0A8FRkDgFUm6+//lpRUVF69NFH9ev/l65fv16RkZF6/vnnr9nPypUrJUnDhw93KH///fcVGRmpZcuWacuWLerbt6/atWune++9V6+++qpKSkp04MABjR49WvHx8YqPj9fQoUO1b98+h378/f318MMP6+TJk/r4448rOWsA8C4EhwCqTYcOHTRs2DD961//0urVq83yvLw8zZgxQ82aNdP/+3//76p9GIahL774QvXq1dOdd97ptM4333yjV199VX379tVLL72khg0bavny5Xr99dc1dOhQ3XrrrfrTn/6krl276ssvv9SECRPK9NGlSxdJ0saNGysxYwDwPr41PQAAN5bx48dr69atmjNnjrp3766mTZtqypQpKiws1IIFC1S/fv2rts/OzlZ+fr66desmX1/nP8IyMjK0efNm3XzzzZKkVq1a6ZFHHtGSJUv08ssva9CgQZKkfv366dtvv9UPP/ygQ4cO6Te/+Y3ZR0xMjBo2bKgdO3bIbrerVi3+Lw3gxsBPOwDVyt/fXzNnzlRxcbH+/Oc/a8uWLfrkk080YsQIdejQ4Zrt9+/fL0lq3rx5uXU6depkBoaSFB0dLUmqVauWHn74YYe6UVFRkqQTJ044lNeuXVu33HKLfvnlF505c8aluQHA9YDgEEC1i4iI0DPPPKPPPvtMzzzzjNq0aaOxY8e61Pb06dOSpEaNGpVbp1mzZg5/L93N3KhRozI7m0v/XlJSUqafkJAQSdKpU6dcGhsAXA8IDgHUiL59+6pOnTo6f/68+vXrJz8/P5faFRQUSJIaNGhQbp3ydhdXdNdx6WuUviYA3AgIDgHUiFdeeUUlJSVq0aKFUlJSdPToUZfa3XTTTZJULU8wKX2N0tcEgBsBwSGAardx40b9/e9/17Bhw5SamqqLFy/qj3/8o+x2+zXbBgcHS5Ly8/Orepjma5QuLwPAjYDgEEC1On78uCZPnqwWLVpo3LhxatGihcaOHausrCyXDrQu3YhSujGlqthsNh06dEj16tVTUFBQlb4WAHgSgkMA1cYwDL344osqKCjQq6++at4DOGzYMLVp00avv/669uzZc9U+WrdurUaNGmn79u1ON5FYZdeuXTp79qzat2/PMTYAbij8xANQbVavXq2tW7dq6NChiouLM8t9fX316quvSpKeffZZXbp0qdw+fHx81KVLF/3yyy/66quvqmysX3zxhSSpV69eVfYaAOCJeLYyAK/Ds5UBoOqQOQTgddq0aaOHHnpIW7du1b/+9S/L+1+5cqWOHz+uiRMnEhgCuOGQOQTglc6cOaO+ffuqQYMGWr9+fZnDrd21f/9+9evXT3fffbcWLVpkSZ8A4E0IDgF4rd27d2vQoEH63e9+p5kzZ1a6v3PnzmngwIHy8fHRmjVrrnrQNgBcrwgOAQAAYOKeQwAAAJgIDgEAAGAiOAQAAICJ4BAAAAAmgkMAAACYCA4BAABgIjgEAACAieAQAAAApv8fuilYQ0TcsyUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "field_3.z.mpl()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Operations\n", "Operations can be performed between fields with different `valid` attributes but special attention must be given to ensure that the resulting field also accurately represents its validity.\n", "When you perform an operation on these fields, the resulting `valid` attribute is determined by the logical AND operation on the `valid` attribute of the initial fields.\n", "This is performed element-wise on the arrays to find the intersection between them.\n", "Hence, for an element of the result to be `True`, both A and B must have valid attributes of `True`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ True, True],\n", " [ True, False]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(field + field_3).valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The valid functionality is also used in other areas of discretisedfield such as differentiation.\n", "However, it is not used in all operations - for example `fftn`.\n", "Please refer to the API documentation for details on specific operations." ] } ], "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.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }