{ "cells": [ { "cell_type": "markdown", "id": "04f7bdf3", "metadata": {}, "source": [ "# Delft3D IO Module\n", "\n", "The following example will familiarize the user with using the Delft3D (d3d) toolbox in MHKiT-Python. `d3d` can be used to plot the data from a NetCDF output from Delft3D [SNL-D3D-CEC-FM](https://github.com/MHKiT-Software/MHKiT-Python). The example will walk through a flume case with a turbine. The flume is 18 m long, 4 m wide and 2m deep with the turbine placed at 6 m along the length and 3 m along the width. The turbine used for this simulation has a circular cross-section with a diameter of 0.7m, a thrust coefficient of 0.72, and a power coefficient of 0.45. The simulation was run with 5 depth layers and 5-time intervals over 4 min.\n", "\n", "This example will show how to create a centerline plot at a desired depth for different variables outputs of Delft3D using matplotlib. It will also show how to make a contour plot of a given plane or depth for the variable output by Delft3D and how to use those variables to calculate turbulence intensity. This module can be helpful to visualize the wake of a turbine and help predict how a turbine will affect the surrounding area. \n", "\n", "Start by importing the necessary python packages and MHKiT module. " ] }, { "cell_type": "code", "execution_count": 1, "id": "030973b3", "metadata": {}, "outputs": [], "source": [ "from os.path import abspath, dirname, join, normpath, relpath\n", "from mhkit.river.io import d3d \n", "from math import isclose\n", "import scipy.interpolate as interp\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import netCDF4\n", "plt.rcParams.update({'font.size': 15}) # Set font size of plots title and labels " ] }, { "cell_type": "markdown", "id": "59583289", "metadata": {}, "source": [ "## Loading Data from Delft3D as a NetCDF \n", "\n", " A NetCDF file has been saved in the [\\\\MHKiT-Python\\\\examples\\\\data\\\\river\\\\d3d](https://github.com/browniea/MHKiT-Python/tree/d3d/examples/data/river/d3d) directory of a simple flume case with a turbine for reference data. Here we are inputting strings for the file path `datadir`, and file name `filename`, so the NetCDF file can be saved as a NetCDF object using the python pack `netCDF4` under the variable `d3d_data`. \n", " \n", "There are many variables saved in the NetCDF object `d3d_data`. The function `d3d_data.variables.keys()` returns a dictionary of the available data. Here we look at the dictionary keys output to see all the variables. " ] }, { "cell_type": "code", "execution_count": 2, "id": "258b202f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"mesh2d_enc_x\": x-coordinate\n", "\"mesh2d_enc_y\": y-coordinate\n", "\"mesh2d_enc_node_count\": count of coordinates in each instance geometry\n", "\"mesh2d_enc_part_node_count\": count of nodes in each geometry part\n", "\"mesh2d_enc_interior_ring\": type of each geometry part\n", "\"mesh2d_enclosure_container\"\n", "\"Mesh2D\"\n", "\"NetNode_x\": x-coordinate\n", "\"NetNode_y\": y-coordinate\n", "\"projected_coordinate_system\"\n", "\"NetNode_z\": bed level at net nodes (flow element corners)\n", "\"NetLink\": link between two netnodes\n", "\"NetLinkType\": type of netlink\n", "\"NetElemNode\": mapping from net cell to net nodes (counterclockwise)\n", "\"NetElemLink\": mapping from net cell to its net links (counterclockwise)\n", "\"NetLinkContour_x\": list of x-contour points of momentum control volume surrounding each net/flow link\n", "\"NetLinkContour_y\": list of y-contour points of momentum control volume surrounding each net/flow link\n", "\"NetLink_xu\": x-coordinate of net link center (velocity point)\n", "\"NetLink_yu\": y-coordinate of net link center (velocity point)\n", "\"BndLink\": netlinks that compose the net boundary\n", "\"FlowElem_xcc\": x-coordinate of flow element circumcenter\n", "\"FlowElem_ycc\": y-coordinate of flow element circumcenter\n", "\"FlowElem_zcc\": bed level of flow element\n", "\"FlowElem_bac\": flow element area\n", "\"FlowElem_xzw\": x-coordinate of flow element center of mass\n", "\"FlowElem_yzw\": y-coordinate of flow element center of mass\n", "\"FlowElemContour_x\": list of x-coordinates forming flow element\n", "\"FlowElemContour_y\": list of y-coordinates forming flow element\n", "\"FlowElem_bl\": Initial bed level at flow element circumcenter\n", "\"ElemLink\": flow nodes between/next to which link between two netnodes lies\n", "\"FlowLink\": link/interface between two flow elements\n", "\"FlowLinkType\": type of flowlink\n", "\"FlowLink_xu\": x-coordinate of flow link center (velocity point)\n", "\"FlowLink_yu\": y-coordinate of flow link center (velocity point)\n", "\"FlowLink_lonu\": longitude\n", "\"FlowLink_latu\": latitude\n", "\"time\"\n", "\"LayCoord_cc\": sigma layer coordinate at flow element center\n", "\"LayCoord_w\": sigma layer coordinate at vertical interface\n", "\"timestep\"\n", "\"s1\": water level\n", "\"waterdepth\": water depth\n", "\"unorm\": normal component of sea_water_speed\n", "\"ucz\": upward velocity on flow element center\n", "\"ucxa\": depth-averaged velocity on flow element center, x-component\n", "\"ucya\": depth-averaged velocity on flow element center, y-component\n", "\"ww1\": upward velocity on vertical interface\n", "\"ucx\": velocity on flow element center, x-component\n", "\"ucy\": velocity on flow element center, y-component\n", "\"turkin1\": turbulent kinetic energy\n", "\"vicwwu\": turbulent vertical eddy viscosity\n", "\"tureps1\": turbulent energy dissipation\n" ] } ], "source": [ "# Downloading Data\n", "datadir = normpath(join(relpath(join('data', 'river', 'd3d'))))\n", "filename= 'turbineTest_map.nc'\n", "d3d_data = netCDF4.Dataset(join(datadir,filename)) \n", "\n", "# Printing variable and description\n", "for var in d3d_data.variables.keys():\n", " try: \n", " d3d_data[var].long_name\n", " except:\n", " print(f'\"{var}\"') \n", " else:\n", " print(f'\"{var}\": {d3d_data[var].long_name}')" ] }, { "cell_type": "markdown", "id": "356efd94", "metadata": {}, "source": [ "## Seconds Run and Time Index\n", "\n", "The `'time_index'` can be used to pull data from different instances in time. For the example data included there are 5-time steps meaning we have indexes in the range 0 and to 4. Each time index has an associated `'seconds_run'` that quantifies the number of seconds that passed from the start of the simulation. To get all of the `'seconds_run'` for a data set use the function `get_all_time` the output is an array of all the `'seconds_run'` for the input data set. " ] }, { "cell_type": "code", "execution_count": 3, "id": "5e0dabc1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 60. 120. 180. 240.]\n" ] } ], "source": [ "time= d3d.get_all_time(d3d_data)\n", "print(time)" ] }, { "cell_type": "markdown", "id": "bd9ee80b", "metadata": {}, "source": [ "To convert from a `'seconds_run'` to a `'time_index'` or vice versa. The inputs are a netcdf data set, then a `'time_index'`. This example shows what happens if you input a `'seconds_run'` that is close to but not exactly a `'seconds_run'` associated with a `'time_idex'`. The function will throw a warning and return the closest time index." ] }, { "cell_type": "code", "execution_count": 4, "id": "ebbdc284", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ ":2: UserWarning: Warning: seconds_run not found. Closest time stampfound {times[idx]}\n", " time_index=d3d._convert_time(d3d_data,seconds_run=seconds_run)\n" ] } ], "source": [ "seconds_run = 62\n", "time_index=d3d._convert_time(d3d_data,seconds_run=seconds_run)\n", "print(time_index)" ] }, { "cell_type": "markdown", "id": "c2134260", "metadata": {}, "source": [ "## Dataframe from NetCDF\n", "For this example we will create a DataFrame from the D3d NetCDF object using the variable `'ucx'`, the velocity in the x-direction (see available data in previous block output). MHKiT's `d3d` function `get_all_data_points` will pull all the raw data from the NetCDF file for the specified variable at a specific time index in a dataframe `var_data_df`. The `time_index` can be used to pull data from a different instances in time (the last valid time_index, `time_index`=-1, is the default setting). If an integer outside of the valid range is entered the code will output an error with the max valid output listed. The output data from `get_all_data_points` will be the position (x, y, waterdepth) in meters, the value of vairable in meters per second and the run time of the simulation in seconds or `'x'`, `'y'`, `'waterdepth'`, `'waterlevel'`, '`ucx`', and `'time'`. The time run in simulation varies based on the 'time_step'. \n", "\n", "The limits `max_plot_vel` and `min_plot_vel` are defined to bound the plots of the variable's data in the next 3 example plots." ] }, { "cell_type": "code", "execution_count": 5, "id": "197ab8f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " x y waterdepth waterlevel ucx time\n", "0 0.125 1.125 0.199485 -0.005154 0.717881 240.0\n", "1 0.375 1.125 0.200008 0.000081 0.689645 240.0\n", "2 0.125 1.375 0.199485 -0.005154 0.717881 240.0\n", "3 0.625 1.125 0.200056 0.000559 0.694164 240.0\n", "4 0.375 1.375 0.200008 0.000081 0.689645 240.0\n", "... ... ... ... ... ... ...\n", "5755 17.625 4.625 1.794649 -0.005946 1.245117 240.0\n", "5756 17.375 4.875 1.794848 -0.005724 1.222989 240.0\n", "5757 17.875 4.625 1.799824 -0.000196 1.255866 240.0\n", "5758 17.625 4.875 1.794638 -0.005958 1.245292 240.0\n", "5759 17.875 4.875 1.799828 -0.000191 1.256067 240.0\n", "\n", "[5760 rows x 6 columns]\n" ] } ], "source": [ "# Getting variable data \n", "variable= 'ucx' \n", "var_data_df= d3d.get_all_data_points(d3d_data, variable, time_index=4)\n", "print(var_data_df)\n", "\n", "# Setting plot limits \n", "max_plot_vel= 1.25\n", "min_plot_vel=0.5" ] }, { "cell_type": "markdown", "id": "cbc478db", "metadata": {}, "source": [ "## Plotting a Line Plot Between Two Points \n", "To view the maximum wake effect of the turbine we can plot a velocity down the centerline of the flume. To do this we will create an array between two points down the center of the flume. We will then interpolate the grided data results onto our centerline array. Since the flume is retangular the centerline points are found by taking the average of the maximum and minimum value for the width, `y`, and the `waterdepth`, of the flume. We will then input one array, `x`, and two points, `y` and `waterdepth` into the function `create_points` to create our centerline array to interpolate over. The function `create_points` will then output a dataframe, `cline_points`, with keys `'x'`, `'y'`, and `'waterdepth'`." ] }, { "cell_type": "code", "execution_count": 6, "id": "26e1daba", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xywaterdepth
017.8750003.01.000931
117.5127553.01.000931
217.1505103.01.000931
316.7882653.01.000931
416.4260203.01.000931
\n", "
" ], "text/plain": [ " x y waterdepth\n", "0 17.875000 3.0 1.000931\n", "1 17.512755 3.0 1.000931\n", "2 17.150510 3.0 1.000931\n", "3 16.788265 3.0 1.000931\n", "4 16.426020 3.0 1.000931" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Use rectangular grid min and max to find flume centerline\n", "xmin=var_data_df.x.max()\n", "xmax=var_data_df.x.min()\n", "\n", "ymin=var_data_df.y.max()\n", "ymax=var_data_df.y.min()\n", "\n", "waterdepth_min=var_data_df.waterdepth.max()\n", "waterdepth_max=var_data_df.waterdepth.min()\n", "\n", "# Creating one array and 2 points \n", "x = np.linspace(xmin, xmax)\n", "y = np.mean([ymin,ymax])\n", "waterdepth = np.mean([waterdepth_min,waterdepth_max])\n", "\n", "# Creating an array of points \n", "cline_points = d3d.create_points(x, y, waterdepth)\n", "cline_points.head()" ] }, { "cell_type": "markdown", "id": "c11a827b", "metadata": {}, "source": [ "Next the variable `ucx` is interpolated onto the created `cline_points` using scipy interp function and saved as `cline_variable`. The results are then plotted for velocity in the x direction, `ucx`, along the length of the flume, `x`." ] }, { "cell_type": "code", "execution_count": 7, "id": "199785ce", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Centerline Velocity at: 240.0 s')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Interpolate raw data onto the centerline\n", "cline_variable = interp.griddata(\n", " var_data_df[['x','y','waterdepth']], \n", " var_data_df[variable],\n", " cline_points[['x','y','waterdepth']]\n", ") \n", "\n", "# Plotting\n", "plt.figure(figsize=(12,5))\n", "plt.plot(x, cline_variable)\n", "\n", "plt.grid()\n", "plt.xlabel('x (m)')\n", "plt.ylabel('$u_x$ [m/s]' )\n", "plt.title(f'Centerline Velocity at: {var_data_df.time[1]} s')" ] }, { "cell_type": "markdown", "id": "b7f3aa5d", "metadata": {}, "source": [ "## Contour Plot for a Given Sigma Layer \n", "\n", "Sometimes it is useful to plot only the raw data of a given layer. Using `get_layer_data` a single layer of raw data will be retrieved from the NetCDF object. The `d3d` function ,`get_layer_data` takes 3 inputs, the NetCDF object (`d3d_data`), a variable name as a string (`variable`), and the layer to retrieve (`layer`) as an integer. The variable is set to the velocity in the x direction, `'ucx'`, and the layer of data to plot as 2. Since there are 5 sigma layers in this example layer 2 is approximately the middle layer. `layer` works as an index that begins at begins at 0 and ends at 4. The `get_layer_data` then outputs a dataframe `layer_data` with the keys `'x'`, `'y'`, `'waterdepth'`, `'waterlevel'`, `'v'`, and `'time'` as the length, width, waterdepth, value, and run time of simulation of the specified variable in this case velocity in the x direction, 'ucx'. \n", "\n", "To plot the data the maximum and minimum, `max_plot_vel` and `min_plot_vel`, values are pulled from above to limit bounds of the color bar to show the value of the specified variable, in this case it's velocity in the x direction. The type of plot is also defined as a string 'contour' to add to the title of the plot." ] }, { "cell_type": "code", "execution_count": 8, "id": "26daf026", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Velocity on Layer 2 at Time: 240.0 s')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Get layer data\n", "layer = 2\n", "layer_data = d3d.get_layer_data(d3d_data, variable, layer)\n", "\n", "# Plotting \n", "plt.figure(figsize=(12,4))\n", "contour_plot = plt.tricontourf(\n", " layer_data.x,\n", " layer_data.y, \n", " layer_data.v, \n", " vmin=min_plot_vel,\n", " vmax=max_plot_vel,\n", " levels=np.linspace(min_plot_vel,max_plot_vel,10)\n", ")\n", " \n", "cbar = plt.colorbar(contour_plot)\n", "cbar.set_label('$u_x$ [m/s]')\n", " \n", "plt.xlabel('x [m]')\n", "plt.ylabel('y [m]')\n", "plt.title(f'Velocity on Layer {layer} at Time: {layer_data.time[1]} s')" ] }, { "cell_type": "markdown", "id": "ce9f6a5d", "metadata": {}, "source": [ "## Plotting a Contour Plot of a given Plane \n", "\n", "If you wanted to look at a contour plot of a specific waterdepth you can create a contour plot over given points. Expanding on the centerline array points we can create a grid using the same `create_points` function by inputting two arrays along the length of the flume, `x` , and width of the flume, `y_contour` , and one point for the `waterdepth` we want to look at. `create_points` then outputs a dataframe `contour_points` of points to calculate the contour values over with the keys `'x'`, `'y'`, and `'waterdepth'`." ] }, { "cell_type": "code", "execution_count": 9, "id": "baf1e542", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2]\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xywaterdepth
017.8750004.8751.000931
117.6957074.8751.000931
217.5164144.8751.000931
317.3371214.8751.000931
417.1578284.8751.000931
............
39950.8421721.1251.000931
39960.6628791.1251.000931
39970.4835861.1251.000931
39980.3042931.1251.000931
39990.1250001.1251.000931
\n", "

4000 rows × 3 columns

\n", "
" ], "text/plain": [ " x y waterdepth\n", "0 17.875000 4.875 1.000931\n", "1 17.695707 4.875 1.000931\n", "2 17.516414 4.875 1.000931\n", "3 17.337121 4.875 1.000931\n", "4 17.157828 4.875 1.000931\n", "... ... ... ...\n", "3995 0.842172 1.125 1.000931\n", "3996 0.662879 1.125 1.000931\n", "3997 0.483586 1.125 1.000931\n", "3998 0.304293 1.125 1.000931\n", "3999 0.125000 1.125 1.000931\n", "\n", "[4000 rows x 3 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create x-y plane at z level midpoint\n", "x2 = np.linspace(xmin, xmax, num=100)\n", "y_contour = np.linspace(ymin, ymax, num=40)\n", "z2 = np.mean([waterdepth_min,waterdepth_max])\n", "\n", "contour_points = d3d.create_points(x2, y_contour, z2) \n", "contour_points" ] }, { "cell_type": "markdown", "id": "4e1972a6", "metadata": {}, "source": [ "Next the data is interpolated on to the points created and saved as an arrray under the variable name `contour_variable`. " ] }, { "cell_type": "code", "execution_count": 10, "id": "441f059a", "metadata": {}, "outputs": [], "source": [ "contour_variable = interp.griddata(\n", " var_data_df[['x','y','waterdepth']],\n", " var_data_df[variable],\n", " contour_points[['x','y','waterdepth']]\n", ")" ] }, { "cell_type": "markdown", "id": "5658a7d5", "metadata": {}, "source": [ "The results are then plotted. The minimum and maximum values show on the graph are pulled from above (`max_plot_vel` and `min_plot_vel`) as in the previous example. The contour plot of the velocity is then output at the center waterdepth of the flume. " ] }, { "cell_type": "code", "execution_count": 11, "id": "d04fa7ad", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plotting \n", "plt.figure(figsize=(12,4))\n", "contour_plot = plt.tricontourf(\n", " contour_points.x,\n", " contour_points.y,\n", " contour_variable,\n", " vmin=min_plot_vel,\n", " vmax=max_plot_vel,\n", " levels=np.linspace(min_plot_vel,max_plot_vel,10)\n", ")\n", "\n", "plt.xlabel('x (m)')\n", "plt.ylabel('y (m)')\n", "plt.title(f'Velocity on x-y Plane')\n", "\n", "cbar= plt.colorbar(contour_plot)\n", "cbar.set_label(f'$u_x$ [m/s]')" ] }, { "cell_type": "markdown", "id": "24a70552", "metadata": {}, "source": [ "## Contour Plot of Turbulent Intensity \n", "\n", "Turbulent Intensity is the ratio of the magnitude of turbulent velocity to total velocity. The function `turbulent_intensity` takes the inputs of the NetCDF object, the points to caculate over, the time index, and an optional boolian input to output `intermediate_values` used to calculate turbulent intensity. The fuction then pulls variables `'ucx'`, `'ucy'`, `'ucz'`, and `'turkin1'` as the velocity in the x, y, waterdepth and turbulence kinetic energy respectively. The function then calculates and outputs the turbulent intensity, `turbulent_intensity`, for any given time_index in the data_frame `TI`. The `TI` dataframe also includes the `x`,`y`, and `waterdepth` location. If the `intermediate_values` bollian is equal to true the turbulent kinetic energy `'turkin1'`, and velocity in the `'ucx'`, `'ucy'`, and `'ucz'` direction are also included.\n", "\n", "In this example it is calculating the turbulent intensity over the same contour_points used above, however it can also calculate over 'cells', the coordinate system for the raw velocity data, or 'faces', the coordinate system for the raw turbulence data. If nothing is specified for `points`, `'cells'` is the default coordinate system. \n", "\n", "Following the same format as the previous two contour plots the limits of the maximum and minimum values are defined by user as well as a string for the type of plot. The code then outputs a contour plot of the turbulent intensity." ] }, { "cell_type": "code", "execution_count": 12, "id": "857acdd2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "points provided\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xywaterdepthturkin1ucxucyuczturbulent_intensity
017.8750004.8751.0009310.0031481.1151983.600628e-04-0.0599174.101755
117.6957074.8751.0009310.0030911.1153023.816327e-040.0792424.060148
217.5164144.8751.0009310.0030961.1121633.603633e-040.0743414.075892
317.3371214.8751.0009310.0030131.1082943.147688e-04-0.0048294.043806
417.1578284.8751.0009310.0030291.1100582.822649e-04-0.0125864.047740
...........................
39950.8421721.1251.0009310.0003921.058136-6.727795e-07-0.0000701.527464
39960.6628791.1251.0009310.0003931.057769-4.857739e-070.0114861.529358
39970.4835861.1251.0009310.0003991.059054-3.423436e-07-0.0058601.540513
39980.3042931.1251.0009310.0003741.059019-2.209735e-070.0230871.491256
39990.1250001.1251.0009310.0003501.056319-1.155897e-070.1353501.434725
\n", "

4000 rows × 8 columns

\n", "
" ], "text/plain": [ " x y waterdepth turkin1 ucx ucy \\\n", "0 17.875000 4.875 1.000931 0.003148 1.115198 3.600628e-04 \n", "1 17.695707 4.875 1.000931 0.003091 1.115302 3.816327e-04 \n", "2 17.516414 4.875 1.000931 0.003096 1.112163 3.603633e-04 \n", "3 17.337121 4.875 1.000931 0.003013 1.108294 3.147688e-04 \n", "4 17.157828 4.875 1.000931 0.003029 1.110058 2.822649e-04 \n", "... ... ... ... ... ... ... \n", "3995 0.842172 1.125 1.000931 0.000392 1.058136 -6.727795e-07 \n", "3996 0.662879 1.125 1.000931 0.000393 1.057769 -4.857739e-07 \n", "3997 0.483586 1.125 1.000931 0.000399 1.059054 -3.423436e-07 \n", "3998 0.304293 1.125 1.000931 0.000374 1.059019 -2.209735e-07 \n", "3999 0.125000 1.125 1.000931 0.000350 1.056319 -1.155897e-07 \n", "\n", " ucz turbulent_intensity \n", "0 -0.059917 4.101755 \n", "1 0.079242 4.060148 \n", "2 0.074341 4.075892 \n", "3 -0.004829 4.043806 \n", "4 -0.012586 4.047740 \n", "... ... ... \n", "3995 -0.000070 1.527464 \n", "3996 0.011486 1.529358 \n", "3997 -0.005860 1.540513 \n", "3998 0.023087 1.491256 \n", "3999 0.135350 1.434725 \n", "\n", "[4000 rows x 8 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Calculating turbulent intensity \n", "TI=d3d.turbulent_intensity(\n", " d3d_data,\n", " points=contour_points,\n", " intermediate_values=True\n", ") \n", "\n", "# Creating new plot limits \n", "max_plot_TI=27\n", "min_plot_TI=0\n", "\n", "# Plotting \n", "plt.figure(figsize=(12,4))\n", "contour_plot = plt.tricontourf(\n", " TI.x, \n", " TI.y, \n", " TI.turbulent_intensity,\n", " vmin=min_plot_TI, \n", " vmax=max_plot_TI,\n", " levels=np.linspace(min_plot_TI,max_plot_TI,10)\n", ")\n", "\n", "plt.xlabel('x (m)')\n", "plt.ylabel('y (m)')\n", "plt.title('Turbulent Intensity')\n", "cbar= plt.colorbar(contour_plot)\n", "cbar.set_label('Turbulent Intensity [%]')\n", "\n", "TI" ] }, { "cell_type": "markdown", "id": "d2fd1c2f", "metadata": {}, "source": [ "## Comparing Face Data to Cell Data \n", "In Delft3D there is a staggered grid where some variables are stored on the faces and some are stored on the cells. The `d3d.variable_interpolation` function allows you to linearly interpolate face data onto the cell locations or vice versa. For this example, we input the variable names, `'ucx'`, `'ucy'`,`'ucz'`, and `'turkin1'`, which are pulled from the NetCDF object (`d3d_data`) and are to be interpolated on to the coordinate system `'faces'`. The output is a data frame, `Var`, with the interpolated data. \n", "\n", "Near the boundaries linear linterpolate will sometimes return negative values. When calculating turbulent intensity negative turbulent kinetic energy values (`turkin1`) will have and invalid answered. To filter out any negative values the index of where the negative numbers are located are calculated as `neg_index`. If the value is close to 0 (greater then -1.0e-4) the values is replaced with zero, if not it is replaced with nan. `zero_bool` determines if the negative number is close to 0. `zero_ind` is the location of the negative numbers to be replaced with zero and `non_zero_bool` are the locations of the numbers to replace with nan. To calculate turbulent intensity the magnitude of the velocity is calculated with `'ucx'`, `'ucy'`, `'ucz'` and saved as `u_mag`.Turbulent intensity is then calculated with `u_mag` and `turkin1` and saved as `turbulent_intensity`. \n", "\n", "Linear interpolate can also leave nan values near the edges of data. If you want fill these in using nearest interpolate set the values edges to equal `'nearest'` otherwis this option is dufalted to `'none'`. \n", "\n", "The data can be called, as shown, with `Var`. We now have `'ucx'` and `'turkin1'` on the same grid so then can be compared and used in calculations. " ] }, { "cell_type": "code", "execution_count": 16, "id": "941d76b7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xywaterdepthturkin1ucxucyuczu_magturbulent_intensity
00.1251.1250.1994850.0085620.717881-1.531373e-070.0568400.72012810.491394
10.3751.1250.2000080.0089060.689645-3.833700e-07-0.0118320.68974611.171384
20.1251.3750.1994850.0092800.717881-4.313024e-070.0568400.72012810.922269
30.6251.1250.2000560.0087800.694164-6.750081e-070.0045930.69417911.020928
40.3751.3750.2000080.0089060.689645-1.064686e-06-0.0118320.68974611.171384
..............................
575517.6254.6251.7946490.0009141.2451179.389975e-040.0330981.2455581.982237
575617.3754.8751.7948480.0009031.2229892.199022e-040.0002771.2229892.006523
575717.8754.6251.7998240.0009081.2558668.894604e-040.0107821.2559131.958613
575817.6254.8751.7946380.0009071.2452922.690449e-040.0332481.2457361.973690
575917.8754.8751.7998280.0009001.2560672.501023e-040.0111931.2561171.950496
\n", "

5760 rows × 9 columns

\n", "
" ], "text/plain": [ " x y waterdepth turkin1 ucx ucy ucz \\\n", "0 0.125 1.125 0.199485 0.008562 0.717881 -1.531373e-07 0.056840 \n", "1 0.375 1.125 0.200008 0.008906 0.689645 -3.833700e-07 -0.011832 \n", "2 0.125 1.375 0.199485 0.009280 0.717881 -4.313024e-07 0.056840 \n", "3 0.625 1.125 0.200056 0.008780 0.694164 -6.750081e-07 0.004593 \n", "4 0.375 1.375 0.200008 0.008906 0.689645 -1.064686e-06 -0.011832 \n", "... ... ... ... ... ... ... ... \n", "5755 17.625 4.625 1.794649 0.000914 1.245117 9.389975e-04 0.033098 \n", "5756 17.375 4.875 1.794848 0.000903 1.222989 2.199022e-04 0.000277 \n", "5757 17.875 4.625 1.799824 0.000908 1.255866 8.894604e-04 0.010782 \n", "5758 17.625 4.875 1.794638 0.000907 1.245292 2.690449e-04 0.033248 \n", "5759 17.875 4.875 1.799828 0.000900 1.256067 2.501023e-04 0.011193 \n", "\n", " u_mag turbulent_intensity \n", "0 0.720128 10.491394 \n", "1 0.689746 11.171384 \n", "2 0.720128 10.922269 \n", "3 0.694179 11.020928 \n", "4 0.689746 11.171384 \n", "... ... ... \n", "5755 1.245558 1.982237 \n", "5756 1.222989 2.006523 \n", "5757 1.255913 1.958613 \n", "5758 1.245736 1.973690 \n", "5759 1.256117 1.950496 \n", "\n", "[5760 rows x 9 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "variables= ['turkin1', 'ucx', 'ucy', 'ucz']\n", "\n", "Var= d3d.variable_interpolation(d3d_data, variables, points='faces', edges = 'nearest')\n", "\n", "# Replacing negative numbers close to zero with zero\n", "neg_index=np.where(Var['turkin1']<0)# Finding negative numbers\n", "\n", "# Determining if negative number are close to zero \n", "zero_bool= np.isclose(\n", " Var['turkin1'][Var['turkin1']<0].array, \n", " np.zeros(len(Var['turkin1'][Var['turkin1']<0].array)),\n", " atol=1.0e-4\n", ")\n", "\n", "# Identifying the location of negative values close to zero \n", "zero_ind= neg_index[0][zero_bool] \n", "\n", "# Identifying the location of negative number that are not close to zero\n", "non_zero_ind= neg_index[0][~zero_bool]\n", "\n", "# Replacing negative number close to zero with zero \n", "Var.loc[zero_ind,'turkin1']=np.zeros(len(zero_ind)) \n", "\n", "# Replacing negative numbers not close to zero with nan \n", "Var.loc[non_zero_ind,'turkin1']=[np.nan]*len(non_zero_ind)\n", "\n", "# Calculating the root mean squared velocity \n", "Var['u_mag']=d3d.unorm(np.array(Var['ucx']),np.array(Var['ucy']), np.array(Var['ucz']))\n", "\n", "# Calculating turbulent intensity as a percent \n", "Var['turbulent_intensity']= (np.sqrt(2/3*Var['turkin1'])/Var['u_mag'])*100 \n", "\n", "Var" ] }, { "cell_type": "markdown", "id": "947e8188", "metadata": {}, "source": [ "When plotting data using `d3d.variable_interpolation`it is helpful to define points to interpolate onto as the `'cell'` and `'face'` grids contain a 3 dimensional grid of points. In this next example we will use the `d3d.variable_interpolation` function to plot a contour plot of tubulent intesity normal to turbine (y-waterdepth cross section) `n` turbine diameters downstream of the turbine.\n", "\n", "As stated in the intro, the turbine is located at 6m along the length `turbine_x_loc` with a diameter of 0.7m (`turbine_diameter`). Similar to the previous example, we input the variable names `variables` `'ucx'`, `'ucy'`,`'ucz'`, and `'turkin1'`, which are pulled from the NetCDF object (`d3d_data`). Unlike the previous example, the points are defined as `sample_points` created using `create_points` from `x_sample`, `y_sample`, and `waterdepth_sample` with `x_sample` at a constant point of 1 (`N`) turbine diameters downstream of the turbine (6.7m) and `y_sample` and `waterdepth_sample` being arrays between the minimum and maximum values for that flume dimension. The interpolated data is the saved from `d3d.variable_interpolation` as `Var_sample`and used to calculate turbulent intensity as in the previous example. The data is then plotted along the y and waterdepth axis." ] }, { "cell_type": "code", "execution_count": 15, "id": "75433d08", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2]\n", "points provided\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAE6CAYAAADDWYxqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABB80lEQVR4nO3debwcVZn/8c83hCWRsAmIBMZEXBCccSEiqCMobuACIgguMywqKj+XQVDHhUVwGUBUFBEyKLghCINsgqJAUGQzCCpGQJaIBAQCgRBCAiTP749TDZ1K377Ve1X39/169atvV506ferW7a7nPufUKUUEZmZmZtY7EwbdADMzM7Nh54DLzMzMrMcccJmZmZn1mAMuMzMzsx5zwGVmZmbWYw64zMzMzHrMAZdZyUmaJikkHValum18krbPfv97D7otZtZbDrjMWpSdIIs+pg26vWUiaZdWgztJsyQt6uA9p0k6TNKL262jn6rWXjMrZuKgG2BWQf+Re/3vwH7ATOC3uXX39aVF1bELsBdwWB/fcxpwKDAXuL6P71vEb4BJwON1y6ZR3vaaWZsccJm1KCJ+VP9a0kRSwHVlfl0nJOVPxDZkImI5sGTQ7TCz3nOXolkPNBsblXUXrdDdKOmUbNkGkr4n6R7gEWCT3LbvkvQnSUsk3ZHVNTFXZpakua20aYx92EPS5ZIelrRY0tWSdmtQLrL2byvpMkmPSJov6SRJa9a3i5TdynfL7l2kPbn3rP2+1pb0HUn3Zr+T30l6eV25vYFLs5cn173nrLoykvRhSddm+/mwpEslvSb3nk/+/iS9RdLvs/e8W9LRDY7DlpLOkDRP0lJJ/8zqfXNdmRXGcDVrr6SXZD9/cYzfyQWSFkp6Wqu/TzPrPWe4zMrlV8A/gSOApwGLgFrQ8lbgv4BvZ2XeRup6ehawTzcbkZ3UPwf8AjgYWA68HThD0kci4tu5TV4MnA+cDJwKbA+8L9tuv6zMl0j/5P07K3bLXtFBU39J6rY9HHg68AngAknTIuJhUpfdl4HPsmKX7z11dfwQeBdwZtb+1YH3AL+StGtEnJt7z52A/YETgO8BOwMHAQuy90LS04FLsvInAH8H1gdmAC8Hfj7G/ozZ3oi4TtK1wN6SDo2IZbWNJE0F3gB8LyIeafYLM7MBiQg//PCjgwewNxDA3nXLpmXLDmtQ/rBs3bS6Zadky37UoHytrmXAS+uWC/hZtm6buuWzgLlN6jlsnGUvzZZ9uUEdZwMLgSl1y4IUWG2TK/tzUpfomvn9bPH3OwtYlFtW+30dn1u+e7b8g3XLts8fn7p1b8/W7ZdbPhGYDdwOKPe7eiR37ATcANxdt+xtWdl3jrNvK7VtnPbul63bKbf8c9nyrQf9efDDDz8aP9ylaFYuX22y7lcR8Yfai4gI4Kjs5du72Ib3kE7e35e0fv0DOBeYAmyb2+bKiLgqt+wSUuAyrYtty/t6g/cEeG7B7d8LPAycndvPdYDzSG3P13V2RMytvciOw6XARnVdqA9lzztKWqtgW4o4lZT1fF9tgSSRMpx/johruvheZtZF7lI0K5ebm6z7a4Nlc7LnZ3exDS8gZW1ubFLmGbnXtzUoc3/2/PRuNGoMK7xvRNyf4o/C7/kCUgB5T5Myz2DF4zLevi6KiMsk/YCU/XyPpN8DvwZOj4g5DbYvJCIWSfoJqVtxw4i4l5QR24zU3WxmJeWAy6w3osm6MT93EbG4zTqLlCv6eVdWx46kbsxG/pJ7PVa5Wn09EXXjmNp8T5HGgL27SZkbcq8L7WtE7CXpaNKYr1cBBwKfk/RfEXFcwfY1MhP4AGkc3DGkbNdS0lg0MyspB1xmvfFA9rxeg3XtZqO2aLKsPuvyALBVB+/7N+BNwB0R0Sir1omiQWO/3vNvwPOAqyKi7clVx3zjiBtIAdtRktYBrgb+R9K3s67IhpuNU+dsSdcB75P0XWBXUjfnA822M7PB8hgusx6IdIXcP4HXZmNsAJD0bNLkn+14vaSX1tUl4FPZy7Pryt0MTJG0dV3ZCcABBd+nlin5sqRV8islbdhKo3MWZXU0CkR7pRZINXrPH5C+B7/SaENJ+a7TQiStl/3OnxQRD5IG4U8G1miyebP21vwvqTv0W6SJU09qp51m1j/OcJn1znHAF4ELJZ0NbAx8iJTxeFkb9f0RuETSt4G7SdMRvA74YURcWVduJqn76meSjgUeA3aj4Oc9In4v6VDgC8D1ks4A7gKeScqc7QSs1kb7Aa4CPgIcL6l2FePVEXF7m/UVMYc0MH5/SYuBB4F7I+KSiDhT0snAR7Jg9nxgPmn+s22B59BeRvI/gQMk/Qy4hbSf2wFvBH4aEY+20966Mj8GjiYN+p8LXNxGG82sjxxwmfXOkcDapLE225NOpO8jBS3tBFznAjcBnwGeD9xLmq/riPpCEXG7pF1I8zkdQRrQ/UPSnFHNBsLX13F4NufTx0iDsZ+Wvd8NwMfbaHvNT4CXAHuSpnCYQLrCrmcBV0Q8KmlPUvD7DdI8W5eRXdEYEftKupQ05cJnSMHkP4E/ZK/bMYu0n28hBarLSPt4ECkQb7u9WZmFkk4H9iXNvTWIrloza4H8OTUzqx5Jx5OCxGkRceeg22M2CJJ2J/1TuxXpH9ybgK9GxE+y9dvz1N0b8i6KiDf2oZmAM1xmZpUjaW1Sd+IFDrZsxH2ClD0+gDQcYCfgVEnrR8S3SJnq/LyB/wKcDlzYz4Y6w2VmVhGSXkjqqtwLeC3wytz4PbORkgVW83PLTgW2jYjpY2zzKdKFMptGxF19aCbgqxTNzKpkN9KVlZsD+zvYslGXD7Yy1wHNrqbeE7isn8EWOMNlZmZmQyS7OniTiFjp4iRJzyVNnbNfRPxvP9vlMVxmZmY2FCTtQJoyZ98xiryLNE3L//WtURlnuDKrTZgUk1aZMuhm2JCK1VftWl3LVx/sSIBl3duVnlrl8cG+/4Sly7tSj5YOeEdsqC184r75EbFBv97v1duvEQseKP7ZuOHPj/8FWFK3aGZEzGxUVtI00t0croiIt49RZg5wW0S8pXAjusQZrsykVabwivXeMehm2JB6YrOpXann4emTulJPOxZNrd6QzzXndSfoaceU25vNbdqaibfO61pdZvV+ce8Jf+/n+y14YDlnXbB+4fLP2/TuJRExY7xy2d0rLgTuIF3B26jMi0h3aPhS4QZ0Ud+/QSU9R9KJkv4oaZmkWQW2OUxSjPH4TF25U8Yos3lPd8qsiW4FW4NUxWALBtvubgbHw/A3ZNYrkiaT7hKxGvDmiHhkjKJ7Ao8C5/SrbfUGkeHakjRPxlUUvz3IScAvcst2AT7NyvNo3Eiaubre3JZaaNYl3TxRDiq7VdVgq6bW/kFmu8ysNyRNBM4AnkuaJuXeJsX3AM7rxY3qixhEwHVeRJwDIOlMYNzcYjax3wqT+0k6GLgxIq7PFX8kIq7qUlvNRlbVA628RVMn9D3oenj6pK51LT6x2VR3LZqt7HhSEufjwHqStqlbd11ELAXIlk8nTZQ6EH0PuCKi42+8rK/29aR7jZmVUpWzW8MWbNU422U2dN6QPR/bYN10nurh2hN4iD7PLl+vqt+quwGrAqc1WLeFpIWSlkq6XNJ2fW6bWWUtmjphaIOtev3cx0Fe6GA27CJiWkRojMfcunL/FRHr1DJeg1DVb9Y9gT9ExM255dcBBwJvBd4DrAL8StLWjSqRtJ+k2ZJmP7a8e1cUmVU5uzUqqhhYevC8WXVVbloISc8EtiMNmF9BRBybK/tzYA7wWdIg+3z5mcBMgLVX3dATkllHenEy7GewVcUApFP9GtfV7bFcNR7TZVYdlQu4gHcCIt3pu6mIeFTSBaSMl1lHhjm7MIrBVr91M+iqGe9v0gGZWXlU8Vt2T+DyiPhHC9s4e2WV06/s1qgHW8O8/8P8T4JZ1VTqmyabtn8b4CcFy08CdgSu7WGzbAQM64lrmIONVvTr9zCI8XjD+rdrVjV971LMZoTdKXs5FVhL0m7Z6wsiYrGkW4DLIuJ9uc33BJ4AzmxQ79qkmWZ/BNxCmt/rgOw93tn1HbGRMYgTVj9OzA62VjSIebrMbHQMYgzXhqRZYevVXtfmzJhIusIwb0/g4oi4r8G6pcB9wOez91gCXAlsFxGzO2+2jSIHW6OlH0FXL8ZyjceTppoN3iAmPp1LGvTerMy0MZa/uMk2S4BdO2ia2UhwsNXcsAZdZjZY/uY1G8MwZrccbBUzjL8nj+UyG6wqTgthNpSqGGwt3qRcY54m39m9fex1pstZLrPRMnz/xpl1wbBlA7odbC3eZHnpgi3ofgDY60xXv69aHLa/a7MqccBlVgK9PPH2Itgqs6oFXWY2GvxNYjZgvQq2enEj6rIHWzXdzsD18qbevlem2WhwwGWWMwzdLqPShTieXmS7ehF49TPoGoa/b7MqcsBlNkDdPtGOclZrLL1ov7sZzcpB0u6SzpU0T9IiSddKeleT8t+QFJK+2s92ggMus4HpRbDVbVUPtmp6kaHr9u/bWS6ztnwCWES6s8zbgEuBUyV9NF9Q0hbAvsDCvrYw42khzOpU9UTkrFYxizdZXqmpI8xsXG+NiPl1ry+RtDEpEPtWruw3gWOB/+hX4+o5w2U2AN3MZjjYak2ZM10eQG/WmlywVXMd6RZ/T8ru2fwC4H/60a5GHHCZVZiDrfaUOejql6pmc80KeAUwp/ZC0iTgGOC/I+KRQTWqet8SZj0y6iegUQm2asoadDnLZbaC9SXNrnvs16ywpB2AnYFv1y3+DHA38KMetnNcHsNl1mfdOqF2M6syasFWTbfHdJlZcw8tX4MLFm3RwhZ3z4+IGUVKSpoGnAqcExGnZMumAwcBr42IaLG5XeVvGrMKcrDVPd2eILVKRj2ra8ND0nrAhcAdwHvrVv1PtvxGSetIWocU+6yevVa/2litbwezHunHiefh6ZNK11006sFWzSj/Hhx0WdVJmgycD6wGvDk3Tuv5wK7AgrrHpsBHsp/79gFwl6KNvH4FWzYaujFVRP7vZcrtj3ZUn9mwkjQROAN4LvDKiLg3V+T9wJq5ZacBlwHfAe7reSMzDrjMeszBVjV4PJdZJR0P7AR8HFhP0jZ1666LiNn5DSQtAf4REbP608TEAZdZxXRrnNAod6PZip7YbCoTb5036GaYteMN2fOxDdZNB+b2rynNOeAyq5CqDcoeVbXj1K1Z6B+ePsndimYNRMS0fmzTDf72tpHW6/FbZZ1R3tmtxso6N5eZVZ+/DcwqwCfu6vKxMzNwl6JZ6fn2Pf3Vi8Hzvsm1WXVIyl/pWEQAr4uIP49VwAGXWYk5O2I1vR7H5YHzZk9aH/gucGfB8qsAnwNWbVbIAZeNrLKP33KwNTjOcpmNvP+NiGuKFJS0CvD58cr1/Rtd0nMknSjpj5KWSZpVYJtpkqLB47QGZXeW9GdJSyTNkbRHT3bErId6FWy5O3GwHESbVcJrgDlFC0fEsmybm5qVG0SGa0vSJGVXkabhb8VBwO/qXs+vXynpVcD/kSZC+1j2Pj+RtCAiLmq7xWZ95JNyOfRqItROMl2eHsKs9yLisl5sM4iA67yIOAdA0pmkvtKiboqIq5qsPxj4TUR8LHt9qaQtgUMAB1zWN2WcXd7ZrfIoa/eix3GZNSdpA2BrQMDVEVH41kB9/1c6InryLSNpdVJK76e5VacB20pauxfva9VU1hv2OrtlZlZOknYBbgEOA44Cbpf09qLbV+3b/eRs3Nfdkr4mqT6NsBnpCoEbc9v8lbSfz+tXI83Kxtmt9vTy99ZucF3G7KnZiDgK2CkiXhYRWwCHA8cU3bgqAddS4NvA+4AdgBOBD5OyVzXrZs8P5rZdkFtv1lPtnhCd3TIzGzxJ12ZjwvPWJGW4am7LlhVSiWkhIuJu4CN1i2ZJugc4XtKLI+L6+uK5zTXGciTtB+wHsMaEwr8zMxshvRo8X1Yex2XGsaQL7q4ADoqIf2TLvwdcLulnwGTgXaQEUCFV/hY5M3t+afZcy2StkytXe/1gvoKImBkRMyJixmoTnKa3znXS3dOrQdTuThw+7lY0652I+AHwfFI263pJX5A0KSI+DxxISlY9BuwbEZ8tWm+VA67IPd8KPA5sniu3ObAcuLlP7bKSK+uAeSsvB61m5SRpd0nnSponaVHWHfiuXJn9Jf1c0v3ZHJ7bj1dvRCyOiM8BWwEvAG6W9O6IODciPpE9zmmlrVUOuHbLnq8FiIilwKXA7rlyewBXRsRDfWybWSk4UBheznKZAfAJYBFwAPA2UhxwqqSP1pX5T2A94JetVh4RcyPincB7gYMkXSnpZe00tO9juCRNJk1ICjAVWEtSLXi6ICIWS7oFuCwi3pdtcxgwhTTp6ULg1cAngbMi4k911R9BGt/1DeDs7H12At7Uy30yg/KdAB1sddcojeXyOC6rkLdGRP0k6JdI2pgUiH0rW/aKiFgu6YWkcVdNSZoA7Au8njRB+++zurYC3g+cK+ki4NMR8c+iDR3Et8eGwBnZYxtgi7rXG2ZlJpJuBllzI7AdcDJwAfBu4Ojs+UkRcTkp8/U6UiT7NuDdnmXeatydaGY2PHLBVs11PBVPtDP/5zdJE6ZfC1wM7AJcFMn/kqaZug+4QVLhMVx9z3BFxFyeunJwrDLTcq9PY8UpIJptezYpu2U2spzd6o2yZbl8qx+zhl5BC/dCbODdwHsj4gJ48q448yQ9OyJui4iHSd2LJwJfLVppeb45zCqsbN2J1jsOZs3KS9IOwM6kuTvbNY9055qaHYBlpKzWkyLibxGxc9FKKzEPl5kV54BgtPQqy+VxXNYLC59Yg0vm5ycTaObi9SXNrlswMyJmNiopaRpwKnBORJzSfiv5IGkerg+Qpn9YDfhgltlqmwMuGxm9Gr/l7NboKVvXotkQmx8RM8YrJGk94ELgDtIVhW2LiCskbUaai2s14OaIeKSTOsEBl1lpdOPWPs5umdmoyWY/OJ8UHL25G8FRRDwB/KXTeur5XzSzDpQpu+Vgq7/K9Psu09+hWT9Jmkia5eC5wI4RcW8X6vyYpA3HL7nSNus3K+MMl1kJ+MbVo2nR1Ak9u6VTN3gcl1XA8aT5Nj8OrCdpm7p110XEUkkzgGnAptny7bLgaG5EzGZlXweuBAoFb5JWyba5HGg0TQXggMtGxLDPv1WmbMsoKdNYLk8RYSPqDdnzsQ3WTQfmAh8B9qpbflj2/H1g7wbbCfiKpAcKtqHpVFc1DrjM2tStbhxnt6qt06Cr7FkuszLLz9s5Rpm9aRxYjeU3pMnXN2hxm6ZXMTrgMqs4Z7esphdZLncr2qiJiO17Ua//tbah14vuRGe3rF6nQa//DsyGnz/lZhXm7JaZWTU44DJrkbNb1khZslyeIsKsnPyNb1ZRzm7ZWLoddA37Vb5m/eCAy4Zat08UZcluOdgqp7JkucysfPzptqFV1mDLrB+c5TLrnKQzJe0kqeN4yQGXWQFlCrac3Sq3MmW5yvR3a1ZRGwDnAXdK+h9Jm7dbkQMus3F0+6TlbiPrp27+/TrLZaMmIrYj3afxJGAP4C+SrpD0fklTWqnL3/w2lHxisEEqU5YLnOky60RE3BYRh0TEdNKthG4h3Tvxbknfl7R9kXoccJk1UbbslrsTzcwG6irgUuAmYDLwWuASSddLekmzDR1wmY3BWQHrRNmC4279PTt7bKNI0naSTgb+CRwDXAO8LCI2BV4I3A/8oFkdDrhs6AzrCaFsJ3DrLY/1Mxs8SQdLuhW4BJgO7A9sHBH7R8S1ABExBzgY2KJZXf5EmzXQi+yWT6Cjp2xBsrO2Zi37EHA68PyI2D4ifhgRSxqUuxHYt1lFPgOYVUDZTtzWHw7SzZqT9BxJJ0r6o6RlkmY1KPNMSSdLmidpkaTrJL2n4Fv8S0R8NiJuaVYoIh6IiO83K+NPs1mOs1vWTWULlp3lsiGzJbATcHP2WEE2Yem5wHbAp4CdSQPffyTp7QXqf0zS1o1WSNpK0rKiDfVZwKzkynbCNhvWcZJWSedFxKYRsTvwlwbrnwfMAD4eET+OiIsj4sPAdcCeBepXk3WrAk8UbWjfA64i6b8G27wsSwfeImmxpJskHSppjVy5UyRFg0fbM8NatfhEYGXUSdDci+yos1w2LCJivA/XqtnzQ7nlDzJGMCXpXyS9WtKrs0Uvqb2ue7wB+Chwe9G2TixasItq6b+rgNUKbrMHsBlwJPA34N+AI7Lnd+TK3gjsk1s2t8222ogp24nI2S0rqyc2m8rEW+cNuhlm47kBuBo4XNIHgHuAXYFXAjuOsc0+wKFAZI/vjFHuUeD9RRsyiIDrvIg4B9JNIYH1C2xzZETcV/d6lqQlwImSnhURf69b90hEXNXF9lpFOLtlZbZ4k+VMvtOjOMxatL6k2XWvZ0bEzKIbR0RI2hE4h6fGeD0O7BMRl4yx2fHAmaQM2J+A92TP9R4D7oiIpUXb0veAq0D6r9E29zVYfF32vCHw9wbrbUQMa6Dl7Jb10sPTJzHl9kc7qqP22XOmy4pa8viq/PWfz2hlk/kRMaPd98sGzf8QeDqpt+xeUi/bdyXdHxG/yG+TxRz3ZdtPB+6OiMfabUPNIDJc3fIKYDlpev16W0haCKwO/B74XERc1u/GWe91O9AqW3eiDZ92slxrzit/4F3/WXTwZSXzFuDNwPMi4m/ZslmSNgWOAlYKuCRNjojF2cv7gImSxoyX6so2VcmAS9JGwOeAH0bEwrpV15H6aucAGwAHAr+S9KqIuKZBPfsB+wGsMWHNnrfb2jOsGaxmnN2ymkVTJ1Qi6Kpp9Hl1EGYDtDmwuC7YqrkOeNsY2zwsadssblhEGsfVzCpFGlK5gEvSasBPSb+EA+rXRcSxubI/JwVfnwV2ydeV9QPPBFh71Q3H+4WamXWs1SxXL4OtbnQrFuEB9jZAfwcmS3p+RNT3iG3F2BfU7QvcWvdzV+KDSgVckkS6OeSWwCsjYkGz8hHxqKQLgLf2o33Wff3KbpWpO9HZLatXtQyXWT9JmkwakwUwFVhL0m7Z6wuyxx3A2ZIOJ3URvhl4J/D/GtVZP2N8RJzSrbZWKuACvk6aJfb1EXFjC9s5e2VmpdFKlmtYgi1nuaxHNgTOyC2rvZ4eEXMl7QB8BTgGWIuUvfoQWQ9XM9nYrVXqr0bM5uDaAvhNRPyhaEMrE3BJ+gxpkrF3RsTlBbeZRJpn49pets16w2O3zHqvX92KZr0QEXNpPhs82X0Qd2/zLU4nTZq6L4CkjwHfAJYCq0jaNSLOL1LRIGaanyxptyzlNxXYoPY6Sw2SzSj/3bpt3g18mdSdOE/SNnWPDbIya0v6raQPStpB0h7Apdl7fLnf+2nVUabuRBsdoxhcj+I/UVZ525C6JWs+CRwTEZOAk0gX8BUyiAxX0/QfaRDbRFYc9f+G7Hnv7FFvH+AUUrR5H/D57D2WAFcC20XEbKxSRvGLeRRPwFYOznKZjenpwD8BJP0rsDFwQrbuDNKkqIUMYuLTuYyf/puWe703Kwda+W2WkKbrNyus19mtXtwHz4ZHkbFctb+hYRnLZVYx9wDTgMuBNwF/j4jaFYyTSPOBFlKZMVw2OqqY3RrFwGrixk/N9ffEXZMH2JKn2jLodvTSWH9jVQvEPHjeKuYM4EhJLyL1qB1Xt+4lpPs7FzJ6Zwkz61h9sNXodT/Vv/cg22FmQ+m/gRNJE6h+h3S1Y81WpEH1hTjDZdYFa85bPpJZrnoTN17c9wxT1QMs38zarNwi4gng8DHWtTSMyQGXmbWkLEHOWO0YROA3KFXrTjSrsmxOrtXyy4veS9H/XplZ1/QrGCtL0Gdmw03SWpKOk3QXafaDhxs8CnGGy0pn4q3zKjlw3t2KSa8zTEWCrVHKcplZT50IvIU059Yc4LF2K3LAZWaFFc0s9SrgcWbrKe5ONOuLNwIHRMRJnVbkf8fNrCe6HRw52BoOnhLCKuYR4M5uVOSAy6yLnHVYkYMkM6u4Y4D9JXUcL7lL0awkJt85YShv79ON7sV2ArdhHsflwN6sb6YCLwJuknQp8GBufUTEp4tU5IDLzHquk+DHWTIzG6DdSLfvmQi8vsH6ABxwWXVV9UrFYTaIwMfBlpk1I+k5wCeBbYAXAr+NiO1zZeYCz8ptek9EbDRe/RExvTstbTHgyu6UvTWwEbAG8ABwM3BFRCzoVqPMqszTQzTWapZr2IOtUZxl3gPmrQe2BHYCrqLBpKR1TgW+Vfe67ekd2jVuwCXp2cCHgfcAzyCl1h4ElgLrAJOB5ZIuI81TcXpEeICBma1k2IOofvD4LbMVnBcR5wBIOhNYf4xyd0fEVe28gaR/Az4HzAA2AbaNiD9I+hJweURcWKSepv9iSToJ+AvwYtK9hF4CrBERG0TEJhGxJrAh8Fbgz8BRwF8lvaqdnTIzMzMrqtcJHkk7AteSevZ+AKxat3op8NGidY2X014CbB4Rr4+IEyLiTxGxrL5ARMyPiAsj4r9IfaSHkEb1m3XE3Q9mw8OfZxuwfSU9JukhSWdKyo/pGstXgFMiYjvgS7l115MSUoU07VKMiI8UrSgrvxw4vZVtzIZRu+O4hnVqiEEZ5qkhzKooHp/Q6mdyfUmz617PjIiZLb7tOaQxXncCLwAOBX4r6V8j4qFxtt0cOCj7OXLrFgLrFW2Er1K0UvPViuXgsVfd1e6AeY/fshE0PyJmdFJBRHy87uVvJV1Byk7tA3xjnM3vBZ49xrotgTuKtqPVqxS3Bt5O6jJcI7c6ImKPVuozM7Ph5+5EK5OIuEHSTcBLCxQ/DThc0hzgyloVkp5Hmn/ru0Xft3DAJekA0hT39wC3MYBLKm00jVqWy92KNkwcbFmJ5bsIGzkY2AK4DPhntuwc0iD6i4AvF32zVjJcBwLHAp+IiCKNNOuaUQu6rHvKNo5rlObfcrBlZSTphcDzgRPHKxsRS4G3SNoB2IE07cQDwMUR8atW3reVgGt14OcOtszMzKwMJE0mTXwKabjTWpJ2y15fALwGeC9wPnAXaRD850ljr04pUP+/kObwuhi4OLduIrBxRBQax9VKwHUKsCvw6xa2MeuaqmW5Oplx3t2KZmaFbAickVtWez0d+EdW5hukydrvB34BfDYiFhao/3ZgW+CaButelC1fpUhDWwm4Pg0cJ+nXwCU0vmP2d1qoz8wqwFcodk+ZuxMfnj6JKbc/OuhmmLUkIuYCGqfYDh28RbO61yBNflpIKwHXa0m395mS/ZwXwLgBV5EbTY6x3dqkCHUX0oSt5wMfi4j7c+V2Br4IPJc0uP8LEeG5waxynOUaLp0GW1WbEsLjt6yqslv5vLhu0U6SNs8VWwN4J+l+0oW0EnAdD1wNfBy4JSIeb2HbekVvNJl3OmmQ2/tJ93M8Ejgb+PdageyWQv+XtfVj2fv8RNKCiLiozfaaDYyDLjOzvns7aXJUSMmkQ8YodzvwwaKVthJwbQzsHxF/bWGbRoreaPJJkrYF3ghsFxG/yZbNA66W9LqIqI0rOxj4TUR8LHt9qaQtSb8sB1xDoGrjuLrBQVf1lbkr0cxW8mXgq6TuxIWkXr3f58o81mriqZVvgV+TBoh1pM0bTe4I3FMLtrJ6riFFlzsCSFqddDXCT3PbngZsm3VJmvVV1bqBrPscbJlVS0Q8HhGPRMSiiJgQEbOy1/WPlnv5WslwfRM4QdIkGg+aJyLmtNqAgjYHbmyw/K/ZOoDNSHfxzpf7KymwfB4rR6hmleAsVzWNarDl8Vs2bLKZ5Tdh5bvsEBEXFKmjlYCr1m13OPCFfFtI/ZyFLo1sw7o0CPCABTx1j6N1s+d8uQW59U+StB+wH8AaE9bstI1mPTWIoGtYrlAcxOSn3Qy2nCk1GwxJW5DGkG9B4ysWC8c+rQRcr2mhbC80mnBVDZbnX2uM5WR3HJ8JsPaqG3pCVyu9fgddT9w1eWiCrn4a1cyW2RA6kXSB367AHDq4rWHhgCsiLmv3TbpgAbBBg+Xr8FRGa0HdsnwZaJwhswoaxYHz9Wonc3cxFtev7JYDLbOh8xJgz4g4v9OKmn47SGqrn03SlPaaM6YbeWqsVr36sV23Ao83KLc5aRqJwnNlmHVTr7qDJt85wSf4khiGY9GtSU89fsuGzK00GLfVjvG+Ie6Q9EVJm41XkaTVJb1D0m+A/+pG4+pcCGyUzbNVe78ZpPFbF8KTN5i8FNg9t+0ewJUR8VCX22RDYMrtj1Z+du1en+zLdOPnsulHoNXr8VvD8Bkw66EDgc9Keva4JccxXpfi64Ejsjf7I3AFcAMwnzSd/TqkexVtBWwHPEqau+K4sSoc70aTEbFY0i3AZRHxPoCIuFLSL4EfSDqIpyY+vbxuDi6yts6S9A3SpKg7ZY83jbOfNuJqJ5yHp08acEva567GxnoRMFY9m1XjQMtsXF8hxSo3SppL4xkati5SUdOAKyKuJU1p/1zgP0n3I9oXWL2u2B3A77Ll5xaYm2K8G03OzdqVH/W/J/B14HvU3don197Ls+Dti8CHSfN0vduzzFtRU25/tCdBVyc3sm5VfTDg4Ku7+h1o9Sq75UDLrLAbskfHCg2aj4i/kWZxPxhA0rqkPs37I6KlEftFbjQZEdMaLHsQ2Cd7NNv2bFJ2y4ZYLwfO9yroGoRuXdVY1asVu5XdGpaMFjjYMmtFRDSNOVrR1rdIRCyIiLtbDbbMqqIXJ6VBzaU0TMHCIAzT78/Blg0bSc+RdKKkP0paJmlWbv0zJR2drV8k6R+Svi9p4363tZV5uMxGijNdK6palqsb2a1BBlvdDtD7EWz5CkUbgC1JY7WvIs2XlbcV6WbUJwFXA88ADgOukPTCiFiU30DSUa00ICI+VaScAy6zJroddPVzLFeebw/UGme2zCrhvIg4B0DSmcD6ufWXA5tHxBO1BZL+ANwEvAP4foM687MdNBOAAy6zbnCm6ylVyXJVfSqLbma3HGzZMIuIph+WbPx3ftnNkhaTLuJrtM307rRuRcPzL5xZD3XzpOX74pXfsHQlOtgyW5mkfwMmk27V0zeFM1ySXg38IyJub7BuCvCSiPhNNxtn1kyVb/FT5a7FTrJcrWaeBpFNG6auRLMhsL6k2XWvZ2b3QW6LpAnAscDfgL5OGdVKl+Is4FFJH4yIH+XWbUGa5b3QHbPNqsjjuTrTTjdfO8FdJ92Jw5LZGgQPmLciJjzW8udsfkTM6GITvgJsC2xXYN7Qrmr12+XnwCmSvinJwZVZhwZ5ku0kuCga1Dxx1+QnH528Vyvv165hC7bcnWi2Ikn7A58E9oqIq/v9/q1+w3wV2AX4D+BSSQ0HnJlZccMYdHUaZDWrs+oD4vOqntkyqwJJ7wC+BXwqIk4fRBtavkoxIs6X9HLSbO7XZbfS8TeGjYRe3voHGFgXY7sGFfx0+30Hld1ysGXWe5K2B34MHBcRX21x20OAkyLirgbrngl8ICIOL1JXuzPN3wxsTZpE7FLg/e3UY2YrGsQJeNQHiQ9i/9ect7ynx9rdiTYqJE2WtFuW/JkKbFB7na17ASlBdCNwuqRt6h6bFXiLQ4FNxli3cba+kLbn4cpmZ91V0sGkWVvNRkKv5+UaRLZrVCdFHZabUZuNsA2BM3LLaq+nAy8H1gZeBPwuV+77wN7j1C/S5KaNbAIsKNrQVgKu6cDd+YURcYSkS4DntFCXmY2j34HXqAVd/Qy2+hloObtloyQi5pKCorGckj0Kk7QXsFftLYDvSFqYK7YG8K+0MLVE4YArIv7eZN3vWDlyNBta/Zx9vp+B16gFXb3W74yWgy2zrlgM3J/9LOAh4IFcmceAC4Hji1bqW/tYpQ1y8tN+3/KnX4HXKARd/chuOdgyq6aIOIOsW1LSycAREXFbp/U64DLrwCDus1h/Iq/aVY1l0Ktga5DjsxxsmfVGROzTrboccJl1qHayG8QNrsc6yXcaiA1rlqtbwVZZBr+XJdDyLPM2zCTNAHYlDZJfI78+It5ZpB4HXGZdUn/yG0TwVa8bWbBhC7o6CbbKEmBBeYIss1Eg6cPAt4H5pPsvPtZuXQ64zHpgkFmvvE7u2TgsQdcwBFsOtMwG4iDge8CHIuKJTiryABCzHppy+6OlOFF2EjRUfWLUqgdbZfkbMhtRGwI/6TTYAgdcNgSqMH6kDCfMUQ662lGWYKvMJt46rxKfP7MOXEiaPLVj7lK0oZD/0h/UVBHNlKGbsar3bGxXu4HioIOtMgdaDrBsxHwbmClpVeBXwIP5AhExp0hFDrhsKNVOCmUMvKqoquO4Fm+yvOWga9DBFqSgvIxBl4MtG0GXZs+HAofk1tVu+7NKkYoccNlQcqDVXKsD6Ydl8Px4yhBsldkTm0110GWj5jXdqqjv/QqStpB0saTFku6SdLikptGhpMMkxRiPz9SVO2WMMpv3fs+sLMocbJXhqsVRMopjz3qtzJ8vs26LiMvGexStq68ZLknrAr8G5gA7A5sBx5ACv8832fQk4Be5ZbsAnyYNaKt3I5CfGXZuWw22gfGXeu91Ml2EjbZOPp/OkFkVSdoRmAFsCnwxIu6Q9Grgloi4q0gd/e5S/BAwCdg1IhYCv5K0FnCYpKOyZSuJiDuBO+uXSToYuDEirs8VfyQirup+062XHGDZoJWtO7Gs47g6lf+sOwCzMpP0DOBcYCtS8mY6cAJwBym5swT4cJG6+v3v7Y7AL3OB1WmkIGy7opVIWg94PfCT7jbP+uWJzaau8BgFZexObCXIcPec9cIofhdYd0naRdKfJC2VdLukT3Sx+m8BawKbZw/Vrfs1sEPRivqd4docuKR+QZaWW5ytO69gPbsBq5KCtbwtJC0EVgd+D3yuSB9rrL6qP+xmQ8QBYjX5e7jP7h10Azoj6ZXAWaTZ4A8izZl1pKTlEfGNLrzFm4C9IuKWBuPN7wQK/8H2O+BalwZzWAALsnVF7Qn8ISJuzi2/DriaNEZsA+BAUrflqyLimtaba2ajoGzdiWZW2CHA5RHx/uz1Rdl48UMkHR8Rbd/7sM6yMZavDxTu9x/Ev4DRYJnGWL5yQemZpO7HlboTI+LYiPhOduXAmcBrgXnAZ8eoaz9JsyXNfvzxRwrvgNkwGfVuxTIHW2XshjYrmReTuvbqXURK4mzbhfp/C3w0l92qxSv7kuu1a6bf354LgHUaLF+bxpmvRt5JCtBOH69gRDwKXAC8dIz1MyNiRkTMWHXVpxV8e7PWlf3EWeagox3DGBiaWUNrAPks1tLs+QVdqP/TwMuAG4AjSMHWByT9hhTQNZthYQX9/la6kTRW60mSNgWelq0rYk9S+vAfLbxvoeyZmY2WYQs0zYbQ+rWeqOyxX279LaSAqN7W2fN6nb55RNxAukJxNrA3qXtxV+AfwMsbDG0aU7/HcF0IfFLSlIh4OFu2B6kPdNyB7ZKmAdsA+xd5M0mTSFdGXttWa81GSNF5uYZl1vmqBFvDOj2EjaZVHm/5szc/ImY0WX8C8B1JHwDOJAVbB2brxhp71ZKIuBX4j07r6XeG6wRSqu8sSa/LItXDgK/VTxUh6RZJ322w/Z7AE6Rf6gokrS3pt5I+KGkHSXuQ7oE0FfhyD/bFbOhUJQhppkh34jDsp5kB6erEE4DvAA+Qrlg8PFt3z6Aa1UhfM1wRsUDSDsBxpCkgHgS+Tgq68u1qdLufPYGLI+K+BuuWAveR+lM3JE1GdiWwXUTM7kb7zdpR9vFbZmZVFRHLgI9kk6FvAtzOU0OX2poEXdJPW2tC7FGkYN9vXh0Rc0hXDzYrM22M5S9uss0SUr+qmXXAt/wxs6qJiAWkC/OQtD9wRUQUHRuet0HXGlan7wGXmVVflcdxVbE70eO4zBqTtA3wKuB6YC3gXcAbs2VtiYjXdKVxOf431qyH3J3YX54OwmzkPE66+O5s4BRgMvDKiPjTANvUkDNcZrYSdyuaWRVExLWsPC1E10g6qkAbPlWkLgdcZjYyqtidaGYDtXuDZeuSui8fIo0bKxRw+V9YM2uLu+/6y93TZv0XEdMbPNYhzTJ/B/CeonX5G9OsR3yC7C8HgGbWLxFxNXA0aZqrQvwNZWYNFel+m3znhIEHOmVog5mNpPuB5xct7DFcZj0watmt+oCnH9NFjGqA5ekhzPpL0uQGi1cj3Rj7cOAvRetywGXWZaMWbOXlg6FuBWCjGmTlOegy66tFQDRYLmAesEvRihxwmXXRqAdbjZQlUBqmKxQddJn1zb6sHHAtAe4EromIx4tW5IDLrEscbFk/Oegy672IOKVbdTngMusCB1s2CA66zPpD0vNJE6w+E7gbmN3qvRodcJl1yMGWDZKDLrPekbQW8L/AO0gzOywC1gSWSzoLeH9ELCxSVzkGV5hVlIMtKwP/HZr1zPHAG4D/BCZHxFqk+zXuBbw+W1+IM1xmbfJJzsrEmS6zntgZOCAiTq0tiIglwI+zKSO+VrQiZ7jM2uBgy8rIf5dmXbeINGarkbuAR4pW5IDLrEU+qVmZ+e/TRo2kiZL+W9LfJC2VdKekr3ep+m8DB0la4YOVZbcOwl2KZsUUOTnVuml8IrOqqP2t1ncxtvK3blYxJwM7AF8AbgQ2BbZotzJJR+UWPRf4h6RfAfcCG5LGbz0KzC5arwMuG1lFAygHWlZVrf7tehyYVY2kNwF7Ai+KiDldqnb33OvHs8c2dcsezp7fAXyySKUOuGzkOIAyG5uDLquYfYFLuhhsERHTu1VXPY/hspHiYMtsfA9Pn+TPilXFy4GbJR0naaGkxZLOkrRxpxVLWkPSRZK277iVOOCyEeETiFnr/JmxCtgI2Bt4MalrcR9gK+BnktRJxdn0Dy8DVumsiYm7FG2o+YRh1pn6z5C7Gq1TE5Yub/XvaH1J9QPTZ0bEzLrXyh47R8T9AJLuBi4DXgtc3GGTzwV26UI9DrhsODnQMuu+Rlc/mvXY/IiY0WT9AuC2WrCVuRx4jHSlYqeB0i+BoyU9E7gAuAeI+gIRcUGRihxwZZavPsEnaTOzAvxdOUSuHHQDOvZXYPUGywUs70L9P8qed80eeUHBLse+j+GStIWki7OBbXdJOlxS08ZKmiYpGjxOa1B2Z0l/lrRE0hxJe/Rub8zMzGyAzgf+TdL6dcteDawK/LEL9U8f5/HsohX1NcMlaV3g18Ac0v2JNgOOIQV+ny9QxUHA7+pez8/V/yrg/0gzv34M2An4iaQFEXFRxztgZmZmZTKTdL4/T9KXgSnAkcCvI+LyTiuPiL93WkdNv7sUPwRMAnaNiIXAryStBRwm6ahsWTM3RcRVTdYfDPwmIj6Wvb5U0pbAIYADLjMzsyESEQslvRb4JnAaaezWOcAB3ahf0rgz1hedA6zfAdeOwC9zgdVppGh0O+C8diuWtDrwGlKkW+804GRJa0fEQ+3Wb2ZmZuUTEbeQerR64QZyg+QbKOUYrs1J9zl6UkTcASzO1o3nZEnLJN0t6Wu5m0luRuqzvTG3zV9J+/m89pttZlW3aKqnHTSzlr2GNL1E/WM3UlfmXNLwqEL6neFaF3iwwfIF2bqxLCXdsfsiYCGwPfBpUpBV29na9vn6F+TWP0nSfsB+AKtNbvb2ZqPHAYqZjbqIuGyMVT+T9EXgnaSB++MaxLQQjVJzGmN52iDibuAjdYtmSboHOF7SiyPi+ib1a4zlZJOnzQRY8+mbjpcyNDMzM6u5FDiraOF+/wu7AFinwfK1aZz5aubM7PmldXXToP7a61brNzMzMxvLm2khtuh3hutGcmO1JG0KPI2Vx16NJ3LPtwKPZ/XXpwA3J01+dnOrjTWz4bJo6gTWnNeNuRDNbFhJejXwh4hYJOmnDYqsRootngt8tmi9/c5wXQi8UdKUumV7AI+yYpBUxG7Z87UAEbGUlN7bPVduD+BKX6FoZmZmBVxKui0QwIbABrnH6sBvgbdGxJFFK+13husE0rQNZ0k6kjRD62HA1+qnipB0C3BZRLwve30YaTKz35EGzb8a+CRwVkT8qa7+I0jju74BnE26THQn4E293CmzYeMB82Y2wmpjv4mI7btVaV+/VSNiAbADac6K84AvAF8HDs0VnciK81rcSJqn62TSzSPfDRydPdfXfzkp8/U60g0n3wa827PMm5mZ2SD1/SrFbEbW145TZlru9WmkCUyL1H82KbtlZrYSj+MyswJ2klRkflAi4gdFyg1iWggzMzOzMjukYLkAHHCZWes8fsvMjNcAs7tZoQMuMzMzsxU9GhGPdLNC/ytrZmZm1mMOuMzsSaPSnTgq+2lm5eFvHTMbSQ66zKpP0m6SrpB0v6Qlkm6S9HlJq7VbZ0RMiIhrutlO8BguM8s4ADGzCno6aWb4o0n3NdyaNKH6RsBHBtaqBhxwmdnIBluek8us2iLixNyiSyWtBfw/SR+NiGi03SA44DIbYaMaaNWr/Q4ceJkNjftJN5guFQdcZiPKwdaKHHiZVZekVUg3lX4p6Z7N3ylTdgsccJmNHAdazbmb0axU1pdUPwHpzIiY2aDcI6SAC9LM75/secta5IDLbEQ40CrO2S6z3tDSx5l467xWNpkfETMKlHsFMJk0aP4Q4Dhg/9Zb2DsOuMyGnAOt9jnwMquGiPhD9uPlkuYD35d0TETcOsh21XPAZTaEHGR1V/3v08GXWenVgq/pgAMuM+suB1n9kf89OwAzK51XZs+3D7QVOQ64zCrMQdbgOftlNjiSfgH8GvgLsIwUbB0InF6m7kRwwGU2UA6Yhkunx9MBm1nLfg/sDUwDngBuAz4DnDC4JjXmgCuzbFWf/JrxiaA7/DdmzThb1hv+3A2viDgYOHjQ7SjCAZcVUqYvrKqdiMr0u7PqqHLw5b95s5U54LLK8Ze5jRr/zZtVnz/FZmZmZj3mgMvMzMysxxxwmZmZmfWYAy4zMzOzHut7wCVpC0kXS1os6S5Jh0taZZxtXibpZEm3ZNvdJOlQSWvkyp0iKRo8Nu/tXpmZmZmNra9XKUpalzQj7BxgZ2Az4BhS4Pf5JpvukZU9Evgb8G/AEdnzO3JlbwT2yS2b22HTzczMzNrW72khPgRMAnaNiIXAryStBRwm6ahsWSNHRsR9da9nSVoCnCjpWRHx97p1j0TEVb1pvpmZmVnr+t2luCPwy1xgdRopCNturI1ywVbNddnzht1rnpmZmVn39Tvg2pzU5fekiLgDWJyta8UrgOXATbnlW0haKGmppMsljRnImZmZmfVDvwOudYEHGyxfkK0rRNJGwOeAH+ayZdeR7hL+VuA9wCqkbsutx6hnP0mzJc1e9ugjRd/ezMzMrCWDuLVPNFimMZavXFBaDfgpsAg4YIWKI47Nlf05aYD+Z4FdVmpIxExgJsCkjTYt9P5mZmZmrep3hmsBsE6D5WvTOPO1AkkCfgBsCewUEQualY+IR4ELgJe22lAzMzMrv3ammxqEfme4biQ3VkvSpsDTyI3tGsPXSdNJvD4iipSvcfbKzMxsyHQw3VTf9TvguhD4pKQpEfFwtmwP4FHgsmYbSvoM8FHgnRFxeZE3kzSJdGXkte032czMzEqq3emm+q7fXYonAEuBsyS9TtJ+wGHA1+p/KdmM8t+te/1u4Muk7sR5krape2yQlVlb0m8lfVDSDpL2AC4FpmbbmpmZ2XBpa7qpQehrhisiFkjaATgOOI80buvrpKAr3676/tc3ZM97Z496+wCnkAK5+0gpxA2BJcCVwHYRMbs7e2BmZmYlsjlwSf2CiLhDUm26qfMG0qoG+n6VYkTMAV47Tplpudd7s3Kgld9mCbBrZ60zMzOzCunKdFP9oAiPJweQdB/w93ELlsv6wPxBN6KPRml/R2lfYbT2d5T2FUZrf6u4r8+KiA369WaSfkH6PRW1BqnHqmZmNqVTrb7HgYMaTAs1DzglIj7XSXu7aRDzcJVSP//gukXS7IiYMeh29Mso7e8o7SuM1v6O0r7CaO3vKO1ruyLiTV2usqPppvqp34PmzczMzLql0+mm+sYBl5mZmVXVhcAbJU2pW1Zouql+c8BVbTPHLzJURml/R2lfYbT2d5T2FUZrf0dpX8ui0HRTZeBB82ZmZlZZkrYgTTe1LWnc1knAYRGxbJDtynPAZWZmZtZj7lIsIUnPkXSipD9KWiZpVoFtpkmKBo/T+tDktknaXdK5kuZJWiTpWknvKrDd2pJOlrRA0kOSfizp6f1oc7va2deqHlcASbtJukLS/ZKWSLpJ0uclrTbOdlU8ti3va5WPbZ6kqdnfdEhac5yylTu+9Yru6zAdX+sOTwtRTlsCOwFXAU1PTg0cBPyu7nXZ54T5BHA7cACprTsBp0paPyK+1WS704HnA+8HlgNHAmcD/97T1nam3X2F6h1XgKeTbq91NCnNvzVpbMVGwEeabFfFY9vuvkI1j23e0cAi0pVh46ni8a3Xyr7CcBxf64aI8KNkD2BC3c9nArMKbDMNCOAtg25/i/u6foNlpwK3N9lm22xfX123bOts2esGvU9d3tdKHtcm+/MlUkCiYTq2be7rUBxbUqD0ACmwCGDNJmUrfXxb3NehOL5+dO/hLsUSiojlg25Dv0REo//2riPdD3MsOwL3RMRv6uq5hpQ92rG7LeyeNvd12NxP86xtJY/tGMbb18qTtArwLeBwimVuKnt829hXsxU44Bo+J2fjvu6W9DVJkwbdoDa8ApjTZP3mNJ7Q7q/kJsCrgPH2taayx1XSKpImS3oV8DHgOxEx1tU6lT62Le5rTWWPLfAh0q1Xvl2wfJWPb6v7WlPl42td5DFcw2Mp6YvgImAhsD3waWAzYOfBNas1knYgtXffJsWa3az02T1oVk8U3NdhOK6PAKtnP/8A+GSTslU/tq3sa6WPbTbQ/QjgvRHxuKQim1Xy+La5r5U+vtZ9DriGRETczYqDc2dJugc4XtKLI+L6wbSsOEnTSGOazomIU8Yp3ihroDGWl07RfR2G40rK4k0mjdU5hDRfzv5Nylf52Bbe1yE4tl8Cro6IC1rcrorHt+V9HYLja13mLsXhdmb2/NKBtqIASeuRbtFwB/DecYqPdbPSdSjZzUobaXFfG6nMcQWIiD9ExOUR8TVSN9uHJW02RvFKH9sW97WRShxbSVuSMrNfkLSOpHVIgSbA2k26zSp3fDvY10YqcXytNxxwDbfIPZeSpMnA+aQBxm+OiEfG2WSlm5VmxhofUhpt7GsjlTiuY/hD9jx9jPWVPbYNjLevjVTl2D4XWBW4khRELeCpsU13kgaXN1LF49vuvjZSleNrPeCAa7jtlj1fO9BWNCFpInAG6Uttx4i4t8BmFwIbZQOTa/XMII0BubAnDe2CNve1kdIf1yZemT3fPsb6Sh7bMYy3r41U5dheDrwm9zgyW7cTaa6qRqp4fNvd10aqcnytB3xrnxLKsiA7ZS8PBNYCDs1eXxARiyXdAlwWEe/LtjkMmEKaYG8h8GrSgN0LIuIdfWx+SyTNBD4AfBy4Jrf6uohYmt/XbLtfAM8jzYdTmzzx3ogo7eSJ7exrVY8rPHmMfg38BVhGCkAOBM6PiD2zMsNybFve1yof20Yk7Q2cDEyJiEXZsqE4vnlF9nXYjq91zoPmy2lDUiakXu31dGAu6ditUrf+RtIX2PuBSaTxQUeTBnuW2Ruy52MbrBtrXwH2BL4OfI+UqT2fNGamzNrZ16oeV4DfA3uTJoB8ArgN+AxwQl2ZYTm27exrlY9tUcNyfIsYxeNrLXCGy8zMzKzHPIbLzMzMrMcccJmZmZn1mAMuMzMzsx5zwGVmZmbWYw64zMzMzHrMAZeZmZlZjzngMrO+k7SVpAWS1upCXd+W9N1utMvMrFc8D5eZ9Z2kC4HrI+IzXahrGmmSyRdGxC2d1mdm1gsOuMysryQ9F7gZeF5E/K1Ldf4a+GNEHNiN+szMus1dimbWMklvlrRc0vTc8unZ8rc12Xwv4E/1wZak7SWFpB0knSPpEUl/k/QGSatIOlrSfEnzJH2iQZ3/B7xHkr/TzKyU/OVkZu34BXAXKXiqtzdwH3BBk213AK4YY92JwOXA24G/A2cCx5FuAvzu7PUxkrbJbXcF8AzgXwvvgZlZHzngMrOWRcQy4BRgL0kCyJ73An4YEU802i4r8xLghjGq/mFEHB0RF5FuaDwFeH5EfChbdgBwDykgq/cXYBmwdUc7ZmbWIw64zKxd3wOeBWyfvX5N9vrkJtusC6wOzB9j/cV1P9cGwF9SWxARy4HbgKn1G2UB3oPARoVabmbWZw64zKwtEXEbMAvYJ1u0D3BNRPylyWZrZM9Lx1j/YF39j+WXZR6rq6fe0jGWm5kNnAMuM+vEScA7JE0FdqV5dgvg/ux5nR60ZR3ggR7Ua2bWMQdcZtaJs0gZp9NI3yenNSscEUuBO4Dpzcq1StIGwGTSdBNmZqXjgMvM2hYRS4AfA68CfhYRDxbY7HfAVl1uygwgGPvqRzOzgXLAZWadOjt7/l7B8mcB20ma1MU2vAm4LCLuH7ekmdkAeKZ5M+uIpKOAPYDp2VWE45VfDbgT+H8RcUYX3n8V0pxd/x0RP+q0PjOzXnCGy8zaIun5kt4OfBj4VpFgC568+vBo4ONdasruwKOMM37MzGyQJg66AWZWWScCLwfOBb7Z4rbHAZMlrR0RD3XYDgHvG2uyVTOzMnCXopmZmVmPuUvRzMzMrMcccJmZmZn1mAMuMzMzsx5zwGVmZmbWYw64zMzMzHrMAZeZmZlZj/1/zeFJ36PwdrsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "turbine_x_loc= 6 \n", "turbine_diameter= 0.7\n", "N=1\n", "x_sample = turbine_x_loc+N*turbine_diameter\n", "y_samples = np.linspace(ymin, ymax, num=40)\n", "waterdepth_samples = np.linspace(waterdepth_min,waterdepth_max, num=256)\n", "\n", "variables= ['turkin1', 'ucx', 'ucy', 'ucz']\n", "sample_points = d3d.create_points(x_sample, y_samples, waterdepth_samples) \n", "\n", "Var_sample= d3d.variable_interpolation(d3d_data, variables, points= sample_points, edges = 'nearest')\n", "\n", "#root mean squared calculation \n", "Var_sample['u_mag']=d3d.unorm(\n", " np.array(Var_sample['ucx']),\n", " np.array(Var_sample['ucy']), \n", " np.array(Var_sample['ucz'])\n", ") \n", "# turbulent intesity calculation\n", "Var_sample['turbulent_intensity']= np.sqrt(2/3*Var_sample['turkin1'])/Var_sample['u_mag']*100 \n", "\n", "# Plotting \n", "plt.figure(figsize=(10,4.4))\n", "contour_plot = plt.tricontourf(\n", " Var_sample.y, \n", " Var_sample.waterdepth, \n", " Var_sample.turbulent_intensity,\n", " vmin=min_plot_TI, \n", " vmax=max_plot_TI,\n", " levels=np.linspace(min_plot_TI,max_plot_TI,10)\n", ")\n", "\n", "plt.xlabel('y (m)')\n", "plt.ylabel('z (m)')\n", "plt.title('Turbulent Intensity')\n", "cbar= plt.colorbar(contour_plot)\n", "cbar.set_label('Turbulent Intensity [%]')" ] }, { "cell_type": "markdown", "id": "94fc1f99", "metadata": {}, "source": [ "This sample data used in this example is not spatial or temporally resolved and is for demonstration purposes only. In this example there are 5 sigma layers. The low level of discretization can be seen in in the sharp edges in the turbulent intensity plot above around the turbine." ] }, { "cell_type": "code", "execution_count": null, "id": "0c8f6be8-c9fe-4803-88dc-cf2914555496", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.8" } }, "nbformat": 4, "nbformat_minor": 5 }