{ "cells": [ { "cell_type": "markdown", "id": "7a8817f0", "metadata": {}, "source": [ "(needle_combination)=\n", "# needle_combination\n", "A needle combination or isolated production zone of a generator with separate turbine efficiency curves. Can be used to model pelton turbines and other turbines with forbidden production zones\n", "\n", "| | |\n", "|---|---|\n", "|Input connections|{ref}`generator`, {ref}`needle_comb_reserve_capability`|\n", "|Output connections|{ref}`generator`, {ref}`needle_comb_reserve_capability`|\n", "|License|SHOP_PELTON|\n", "|Release version|13.0.0.a|\n", "\n", "```{contents}\n", ":local:\n", ":depth: 1\n", "```\n", "\n", "## Introduction\n", "The needle_combination object in SHOP is used to model both Pelton turbines and [generators](generator) with forbidden production and/or discharge zones. The SHOP_PELTON license is required to use the needle_combination object. \n", "\n", "## Pelton turbines\n", "When modelling a Pelton unit, the needle_combination represents the production and discharge characteristics of the unit when a specific combination of needles is controlling the flow of water through the nozzle. The attributes [p_min](needle_combination:p_min), [p_max](needle_combination:p_max), [p_nom](needle_combination:p_nom), and [turb_eff_curves](needle_combination:turb_eff_curves) are specified on the needle_combination object to describe its operating range and efficiency. Defining multiple needle_combinations and then connecting them to a generator object will enable SHOP to choose which of the needle_combinations (if any) should be used to generate power in each hour. \n", "\n", "## Turbine with forbidden operating regions\n", "Other turbine types, such as Francis turbines, is usually modelled as having a continuous operating range between [p_min](generator:p_min) and [p_max](generator:p_max) in SHOP. However, some turbines may experience vibration or other unwanted behaviour when discharging water or producing power in a region within its operating range. These forbidden production and/or discharge regions can be modelled by using the needle_combination object. Having needle_combinations without overlap in production and/or discharge ranges will force SHOP to not operate in the forbidden region(s). This is shown in more detail in [this example](pelton).\n", "\n", "## MIP\n", "Running SHOP without binary variables can lead to fractional commitment of generators and production below p_min. This problem can be more pronounced for generators modelled with needle_combinations, since it will be possible to fractionally operate on more than one needle_combination at the same time. The only way to ensure that this problem does not occur is to have an active [mip_flag](plant:mip_flag), which will force the optimization to pick only one needle_combination to operate on. Especially Pelton units delivering [reserves](reserves) may be \"tempted\" to operate a little bit on several needle_combinations to more easily deliver reserve capacity.\n", "\n", "## Input and output\n", "Most of the results for generators modelled with the use of needle_combinations are still found on the generator object, such as [production](generator:production) and [discharge](generator:discharge). A few output attributes are still saved on the needle_combination object, which can be seen in the attribute table below. The same is true for the input attributes, all input generator attributes are still used for Pelton turbines, except for p_min, p_max, p_nom, and turb_eff_curves on the needle_combination object. Some attributes exist on both the generator and needle_combination, such as [p_fcr_min (generator)](generator:p_fcr_min) and [p_fcr_min (needle_combination)](needle_combination:p_fcr_min). In these cases the needle_combination attribute is preferred over the generator attribute, but the generator attribute is still used if it is not present on the needle_combination.\n", "\n", "## Examples\n", " - [](pelton)\n", " \n", "\n", "\n", "\n", "## Attributes" ] }, { "cell_type": "code", "execution_count": 1, "id": "88732dda", "metadata": { "tags": [ "remove-input", "full-width" ] }, "outputs": [ { "data": { "text/html": [ "