{ "cells": [ { "cell_type": "markdown", "id": "39d16ccb", "metadata": {}, "source": [ "# Multiblock Arrays\n", "\n", "A `WolfArray` object stores data in a matrix format, leveraging Numpy arrays for efficient numerical operations.\n", "\n", "A `WolfArrayMB` object organizes data as a dictionary of `WolfArray` objects, effectively creating a tiled structure of multiple `WolfArray` instances. \n", "This structure allows for seamless handling of datasets that are too large to fit into a single array, enabling efficient data manipulation and analysis.\n", "\n", "Each block can be parameterized independently, offering flexibility in data representation.\n", "\n", "The WOLF CPU code is designed to work with multiblock models. \n", "The `WolfArrayMB` class ensures compatibility with the Fortran-based WOLF code, \n", "maintaining consistency and interoperability between the two implementations." ] }, { "cell_type": "code", "execution_count": 1, "id": "ece70414", "metadata": {}, "outputs": [], "source": [ "import _add_path # add parent directory to path - debug mode only\n", "from wolfhece.wolf_array import WolfArray, WolfArrayMB, header_wolf\n", "import numpy as np" ] }, { "cell_type": "markdown", "id": "518bf5ef", "metadata": {}, "source": [ "## Creating a Multiblock Array from scratch\n", "\n", "You need multiple `WolfArray` objects to create a `WolfArrayMB` object." ] }, { "cell_type": "code", "execution_count": 2, "id": "0c1d2bd6", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "D:\\ProgrammationGitLab\\HECEPython\\docs\\source\\tutorials\\../../..\\wolfhece\\wolf_array.py:10215: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " fig.tight_layout()\n", "D:\\ProgrammationGitLab\\HECEPython\\docs\\source\\tutorials\\../../..\\wolfhece\\wolf_array.py:10215: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", " fig.tight_layout()\n" ] }, { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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d+6UyMhIn+/p0aOHLFu2TA8gU118KiT16dNH9u3bJ3FxcT7fM3XqVJkyZYpXZapt27ZWfxwAAFCTkmYibt9/x5umu/n8h6nKwktUVJQ89thj0rFjR5/HqExSKT8/v9qCTZ2HqfT0dM/X119/vXTu3FmPnFfVqgEDBvh8T9VuQ3W8CleqHLdq1SoZN26c365E1QAAQB0ruVzEbdNsS9U8zafGcauKVLNmqptR9Diobt26XXTcyJEj5eabb9YPvLVu3VoWL17slVdCfp6p1NRUadmypR497y9MXUjdFJUs1XsAAECIK2+kakM2ndv/FAbqqTwVlFwulx4zpTLHW2+9pV8bP368HnSumtqver169+6tX+vXr59kZGTUnzB19OhROXHihCQkJNT6PWfOnNHluN/85je2XhsAALDA+ctFKi59mFIhaffu3T5fy8zM9NpWc0upZoeAw5QKOlUrRmruBjWvQ/PmzXVTyU+lRPVkngpEv//976V9+/YycOBAz3tUheruu++WRx55RG8/+eSTeu4q1bX3/fffy/PPP6/HV40ePdqqzwkAAOwcM+WKtufc5WUS6gIOU1988YX079/fs105CFyNnn/ttddkz549snz5cjl58qR+Ou+OO+6QWbNmeY1vUiHrhx9+8KpeqeCkKljqcUbVr/npp59e9GgjAAAIQeWNRQybxjFX/HMapAYTplQ/o+qX9OfDDz+s8RxqFH1VK1asCPQyAABAqDjfTMQZa8+5K0J/GhQWOgYAAOYn7ay4zJ5zu0J/3i7CFAAAMKessUikeqLPBi6LJwO1AWEKAACYH4Ae0diec7ttGthuIcIUAAAwP2lnRPiGqdCvnQEAgNDv5iv7lU2tdiHtzTffFIfDITk5OT5fX7t2raSlpUmHDh30sndqGTqrUJkCAADmu/kcvtfSNc1w1mqWgNdff1169uzpd45MtTzdJ598ogOVmudSTds0b948Sy6RyhQAADAfpkout6n9vO6eP263Wy8d88orr/hds3fDhg16zT4VpJTJkyfrdfysQmUKAACYU3GZOBzWTo1gGCrsqOZ/ORllwYIFes297t27+z2moKBAr7JSKSUlRQoLC6WiokKcTvNRiDAFAABMiYoScTisPqtaUm60GEaxlJc39XnEvn375N1335WtW7dKXSJMAQAAU5xOO8LUz9SiK/7WOt62bZse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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h1 = header_wolf()\n", "h1.shape = (10,10) # 10x10 pixels\n", "h1.set_resolution(1.,1.) # 1x1 meters per pixel\n", "h1.set_origin(-1.,-1.) # origin at (-1.,-1.) meters\n", "\n", "h2 = header_wolf()\n", "h2.shape = (5,5) # 5x5 pixels\n", "h2.set_resolution(0.5,0.5) # 0.5x0.5 meters per pixel\n", "h2.set_origin(15.,15.) # origin at (15,15) meters\n", "\n", "block1 = WolfArray(srcheader=h1)\n", "block2 = WolfArray(srcheader=h2)\n", "\n", "block1.array[:,:] = np.arange(100).reshape((10,10)) # Populate with 0-99\n", "block2.array[:,:] = np.arange(25).reshape((5,5)) # Populate with 0-24\n", "\n", "# Print the blocks\n", "block1.plot_matplotlib(with_legend=True)\n", "block2.plot_matplotlib(with_legend=True)" ] }, { "cell_type": "code", "execution_count": 16, "id": "fc268999", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape : 1 x 1 \n", "Resolution : 18.5 x 18.5 \n", "Spatial extent : \n", " - Origin : (-1.0 ; -1.0) \n", " - End : (17.5 ; 17.5) \n", " - Width x Height : 18.5 x 18.5 \n", " - Translation : (0.0 ; 0.0)\n", "Null value : 0\n", "\n", "Number of blocks : 2\n", "\n", "Block block1 : \n", "\n", "Shape : 10 x 10 \n", "Resolution : 1.0 x 1.0 \n", "Spatial extent : \n", " - Origin : (-1.0 ; -1.0) \n", " - End : (9.0 ; 9.0) \n", " - Width x Height : 10.0 x 10.0 \n", " - Translation : (0.0 ; 0.0)\n", "Null value : 0.0\n", "\n", "Block block2 : \n", "\n", "Shape : 5 x 5 \n", "Resolution : 0.5 x 0.5 \n", "Spatial extent : \n", " - Origin : (15.0 ; 15.0) \n", " - End : (17.5 ; 17.5) \n", " - Width x Height : 2.5 x 2.5 \n", " - Translation : (0.0 ; 0.0)\n", "Null value : 0.0\n", "\n", "\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mb = WolfArrayMB() # a void WolfArrayMB()\n", "mb.add_block(block1, force_idx=True) # add the first block - by reference\n", "mb.add_block(block2, force_idx=True) # add the second block - by reference\n", "mb.set_header_from_added_blocks() # construct the header from the added blocks\n", "mb.plot_matplotlib()\n", "\n", "print(mb)\n", "\n", "# In the mb header :\n", "# - The shape os the mb is (1,1)\n", "# - The origin is the lower-left corner of the added blocks\n", "# - The resolution is the footprint of the added blocks" ] }, { "cell_type": "markdown", "id": "41050f8a", "metadata": {}, "source": [ "## By Reference or By Value?\n", "\n", "When adding a block to a `WolfArrayMB` object, you can choose to add it either by reference or by value.\n", "\n", "- **By Reference**: By default, the `add_block` method does not create a copy of the `WolfArray` object. This means that any modifications to the `WolfArrayMB` object will directly affect the original `WolfArray` object, and vice versa.\n", "\n", "- **By Value**: If you want to create a copy of the `WolfArray` object while adding it, you can set the `copy` parameter to `True`. This ensures that the original `WolfArray` object remains unchanged, even if the `WolfArrayMB` object is modified.\n", "\n", "Key Considerations:\n", "\n", "- Adding by reference is memory-efficient but links the objects, so changes in one will reflect in the other.\n", "- Adding by value ensures independence between the objects but requires additional memory for the copy.\n" ] }, { "cell_type": "code", "execution_count": 17, "id": "acf84fa5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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V69a+9SY94VhBqPs3LlTZs+e3eT3hecx9eXxvpnXV30HntlHZqCRr989d73nZkMwp/nMY15bnxrz/jC+/PJLO6jI19fLf7M/1IVeSEiIDBo0yJ4e8DCnlsx09f+8qzPzq9c3zIumtvr1wfynagJv69at8vnnn0u3bt18bsOc9jh27Jgdjt5YmOtcmZmZtfapMe6L6jZu3Givt4wfP77J7wvznDJvjNUfb/Mt3WYUZ22P9828vuoz8Mw1IfNPSVRUlOvPzYZgToeba3q19amx7o/qZ0VM/8xIz3rbH45CmzZtsiPQkpOTnX/84x/Ok08+6bRq1crJy8uzy3/zm984zz//fFX9v//9705wcLDzhz/8wfn222/tKKJmzZo5x44da7BteOqpp+zov7S0NCc3N7eqXL58uarO1duxfPly569//auTmZnpHD582Jk6daoTFhbmnDhxooG2wnGeeeYZuw2nT5+2j/OoUaOctm3b2tGoTWVfVB8V17lzZ+e55567Zllj3ReXLl1yjhw5Yot5O1i1apX93TOq8ZVXXrGvjW3btjnffPONHWXXrVs358cff6xqw4y6e+edd2749VXf21FeXu489NBDTseOHZ2jR4/WeL2UlZXVuh3Xe27W93aYZQsXLnT2799v+7Rz507n7rvvdnr27OmUlpY2mf3hUVhY6ISHhztr1651vPHX/lAZeoZ5MM0bVEhIiB3Se+DAgaplw4cPt0ODq/v444+dXr162fr9+vVztm/f7jQk80TyVsxQ+Nq2Y/78+VXb3KFDB+eXv/ylk56e7jSkKVOmODExMbZPt912m53OyMhoUvvCw4SY2QcnT568Zllj3RdffPGF1+eRp6/mtoXFixfbPpo3zpEjR16zfV26dLH/fNzo66u+t8O8Sdb2ejHr1bYd13tu1vd2mH9oR48e7bRr187+o2f6O2fOnGvCq7HvD4/169c7zZs3t7fBeOOv/cH36QEA1FB3TQ8AoBehBwBQg9ADAKhB6AEA1CD0AABqEHoAADUIPQCAGoQeAEANQg8AoAahBwBQg9ADAIgW/weuCUQ4mm04SAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "block2.array[:,:] = 5.\n", "mb.plot_matplotlib() # plot the mb again" ] }, { "cell_type": "markdown", "id": "19ae88a6", "metadata": {}, "source": [ "## Accessing the Blocks\n", "\n", "Blocks within a `WolfArrayMB` object are stored in the `myblocks` dictionary and can be accessed using their keys.\n", "\n", "### Key Format\n", "\n", "The keys follow the format `blockn`, where `n` is the block number (1-based index). For example:\n", "- The first block has the key `block1`.\n", "- The second block has the key `block2`.\n", "\n", "### Access Methods\n", "\n", "You can access blocks in two ways:\n", "\n", "1. **Using Keys**: Access blocks directly using their string keys, e.g., `mb.myblocks['block1']`.\n", "2. **Using Indexing**: The `__getitem__` method allows you to use Python's 0-based indexing convention, e.g., `mb[0]` for the first block.\n", "\n", "This flexibility makes it easy to retrieve and manipulate individual blocks within the multiblock array." ] }, { "cell_type": "code", "execution_count": null, "id": "8e4e91f5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dict_keys(['block1', 'block2'])\n", "True\n", "True\n" ] } ], "source": [ "# keys\n", "print(mb.myblocks.keys()) # get the keys of the blocks\n", "\n", "ref1 = mb[0] # get the first block\n", "ref2 = mb['block1']\n", "\n", "print(ref1.is_like(block1)) # check\n", "print(ref1.is_like(ref2)) # check" ] }, { "cell_type": "markdown", "id": "4a2bedae", "metadata": {}, "source": [ "## Convert to WolfArray \"single\" block\n", "\n", "The `WolfArrayMB` object can be converted to a single `WolfArray` object using the `as_WolfArray` method. This method concatenates all blocks and rebin if necessary." ] }, { "cell_type": "code", "execution_count": null, "id": "b3c78266", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape : 37 x 37 \n", "Resolution : 0.5 x 0.5 \n", "Spatial extent : \n", " - Origin : (-1.0 ; -1.0) \n", " - End : (17.5 ; 17.5) \n", " - Width x Height : 18.5 x 18.5 \n", " - Translation : (0.0 ; 0.0)\n", "Null value : 0.0\n", "\n", "\n" ] }, { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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V69a+9SY94VhBqPs3LlTZs+e3eT3hecx9eXxvpnXV30HntlHZqCRr989d73nZkMwp/nMY15bnxrz/jC+/PJLO6jI19fLf7M/1IVeSEiIDBo0yJ4e8DCnlsx09f+8qzPzq9c3zIumtvr1wfynagJv69at8vnnn0u3bt18bsOc9jh27Jgdjt5YmOtcmZmZtfapMe6L6jZu3Givt4wfP77J7wvznDJvjNUfb/Mt3WYUZ22P9828vuoz8Mw1IfNPSVRUlOvPzYZgToeba3q19amx7o/qZ0VM/8xIz3rbH45CmzZtsiPQkpOTnX/84x/Ok08+6bRq1crJy8uzy3/zm984zz//fFX9v//9705wcLDzhz/8wfn222/tKKJmzZo5x44da7BteOqpp+zov7S0NCc3N7eqXL58uarO1duxfPly569//auTmZnpHD582Jk6daoTFhbmnDhxooG2wnGeeeYZuw2nT5+2j/OoUaOctm3b2tGoTWVfVB8V17lzZ+e55567Zllj3ReXLl1yjhw5Yot5O1i1apX93TOq8ZVXXrGvjW3btjnffPONHWXXrVs358cff6xqw4y6e+edd2749VXf21FeXu489NBDTseOHZ2jR4/WeL2UlZXVuh3Xe27W93aYZQsXLnT2799v+7Rz507n7rvvdnr27OmUlpY2mf3hUVhY6ISHhztr1651vPHX/lAZeoZ5MM0bVEhIiB3Se+DAgaplw4cPt0ODq/v444+dXr162fr9+vVztm/f7jQk80TyVsxQ+Nq2Y/78+VXb3KFDB+eXv/ylk56e7jSkKVOmODExMbZPt912m53OyMhoUvvCw4SY2QcnT568Zllj3RdffPGF1+eRp6/mtoXFixfbPpo3zpEjR16zfV26dLH/fNzo66u+t8O8Sdb2ejHr1bYd13tu1vd2mH9oR48e7bRr187+o2f6O2fOnGvCq7HvD4/169c7zZs3t7fBeOOv/cH36QEA1FB3TQ8AoBehBwBQg9ADAKhB6AEA1CD0AABqEHoAADUIPQCAGoQeAEANQg8AoAahBwBQg9ADAIgW/weuCUQ4mm04SAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "single = mb.as_WolfArray() # convert to a single WolfArray\n", "\n", "print(single)\n", "\n", "single.plot_matplotlib() # plot the single WolfArray" ] }, { "cell_type": "markdown", "id": "f0491901", "metadata": {}, "source": [ "## And More...\n", "\n", "`WolfArrayMB` philosophy plays a crucial role in the WOLF code, especially within the `Wolfresults_2D` class, where the same idea is used to store and manage the results of 2D simulations. \n", "The ability to handle large datasets efficiently makes it indispensable for complex numerical workflows.\n", "\n", "To gain a deeper understanding of how `WolfArrayMB` is utilized in the WOLF codebase, explore the source code and documentation. \n", "This will provide valuable insights into its integration and application in real-world scenarios." ] } ], "metadata": { "kernelspec": { "display_name": "python3.11", "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.11.9" } }, "nbformat": 4, "nbformat_minor": 5 }