### Remove latex math from doc

parent 8b1ffbb8
Pipeline #67253 failed with stage
in 6 minutes and 58 seconds
 # Ignore documentation doc/Doxygen doc/build src/ n# Ignore data and results # Ignore data and results results/ # Ignore irrelevant personal files in ... ...
 ... ... @@ -55,7 +55,7 @@ pages: script: # Install texlive - apt-get -y update - apt-get -y install texlive-full # - apt-get -y install texlive-full # Install setuptools and sphinx - pip install setuptools sphinx sphinx_rtd_theme - pip install -e git+https://github.com/bitprophet/releases/#egg=releases ... ...
 ... ... @@ -16,16 +16,6 @@ we adopt a Bayesian approach (O'Hagan, 1994) allowing one not only to predict the mean of the demand conditioned on the temperature, but also the conditional distribution around this mean. Let the electricity demand :math:D_i for the region :math:i be given by .. math:: D_i(T_i) = f_i(T_i) + \epsilon. :label: demandModel where :math:f_i, 1 \le i \le N is some real-valued function of the temperature :math:T_i in the region :math:i and the residue :math:\epsilon is also to be modeled. Model design ============ ... ... @@ -35,18 +25,7 @@ Electric heating is switched on only for lower temperatures, while air conditioning is switched on only for higher temperatures. Once an individual appliance is switched on, its electricity consumption is to a first approximation linear in the temperature. Assuming, that all consumers behave in the same way and that a consumer switches the heater (air conditioning) for a constant temperature threshold :math:T_H (:math:T_C), we are led to define the functions :math:f_i as the following piecewise-linear function .. math:: f_i(T_i) = w_H \Theta(T_H - T_i) (T_H - T_i) + w_C \Theta(T_H - T_i) (T_i - T_H) + w_0, :label: demandFunction where :math:\Theta is the Heaviside distribution. In fact, the relationship between the demand and the ambient temperature in European country is smoother than a piecewise-linear function (Bessec \& Fouquau, 2008), in part due to the non-homogeneous ... ... @@ -56,48 +35,13 @@ model as simple as possible using the above linear basis. In addition, the behaviour of the consumers differs significantly for the week days, Saturdays and Sundays. Thus, the model is factorized for all three type of days, resulting in a total of :math:3 \times 3 = 9 coefficients resulting in a total of 9 coefficients to be adjusted, for each region. The thresholds :math:T_H and :math:T_C are two The thresholds are two hyper-parameters chosen as constant for all regions and every type of day. Our strategy is to perform a grid-search on these thresholds and to chose their best values via cross-validation. Bayesian ridge regression ========================= For the clarity of the presentation, we focus on a single region with demand :math:D and air temperature :math:T and consider only one type of day. We use the *scikit-learn* (Buitinck *et al.*, 2013) open-source implementation of the Bayesian ridge regression of MacKay (1992). Let :math:\mathbf{w} = (w_H, w_C, w_0) be the vector of basis coefficients in :eq:demandFunction. The noise :math:\epsilon in :eq:demandModel is assumed to be Gaussian with zero mean and variance :math:\alpha so that the likelihood :math:p(D | T, \mathbf{w}, \alpha) follows a Gaussian distribution with mean :math:X \mathbf{w} and variance :math:\alpha. The parameter :math:\alpha is taken as a random variable. The prior for :math:\mathbf{w} is given by a spherical Gaussian .. math:: p(\mathbf{w} | \lambda) = \mathcal{N}(0, \lambda^{-1} \mathbf{I}), where :math:\lambda is a random variable and :math:\mathbf{I} is the identity matrix. The priors over :math:\alpha and :math:\lambda are chosen to be gamma distributions, the conjugate prior for the precision of the Gaussian. The parameters :math:\mathbf{w}, :math:\alpha and :math:\lambda are estimated jointly during the fit of the model. The remaining hyperparameters are the parameters of the gamma priors over :math:\alpha and :math:\lambda. These are chosen to be *non-informative*. The parameters are estimated by maximizing the *marginal log likelihood*. .. seealso:: * MacKay, D.J.C., 1992, Bayesian Interpolation, *Neural Computation*, 4, 415-447. ... ...
 ... ... @@ -27,26 +27,17 @@ A specific type of wind turbine is selected, the Siemens SWT-2.3MW-101m. Hub height correction ..................... In order the compute the wind magnitude :math:V(z) at the hub height :math:z = 101 m, the wind magnitude :math:V(z_0) at :math:z_0 = 10 m taken from the CORDEX/HyMex In order the compute the wind magnitude at the hub height, the wind magnitude taken from the CORDEX/HyMex simulations is used assuming that the wind-speed vertical profile follows a power law (Justus & Mikhail, 1976), i.e. .. math:: V(z) = V(z_0) \left(\frac{z}{z_0}\right)^\alpha, where value of the exponent :math:\alpha is chosen as :math:1/7, by default. follows a power law (Justus & Mikhail, 1976) where value of the exponent is chosen as 1/7, by default. Before to compute the production, two corrections are applied to the wind magnitude. Air density correction ...................... Deviations of the air density :math:\rho from the standard density :math:\rho_0 for which the power curve is provided are taken into account by multiplying the the wind magnitude by a factor .. math:: \left(\frac{\rho}{\rho_0}\right)^{1/3}. Deviations of the air density from the standard density \rho_0 for which the power curve is provided are taken into account. This factor is derived by assuming that the wind power is proportional to the density times the velocity cube. The wind magnitude is corrected ... ... @@ -54,25 +45,16 @@ rather than the wind production, in order to shift the power curve horizontally rather than scale it vertically, thus respecting the various production regimes. The air density is computed by applying the ideal gas law to the atmospheric temperature :math:T_a, pressure :math:P and specific humidity :math:\omega at the surface taken from the CORDEX/HyMex data (:py:func:e4clim.production.getAirDensity), i.e. .. math:: \rho(T_a, P, \omega) = \frac{M_d M_v}{M_v + \omega (M_d - M_v)} \frac{P}{R T_a}, where :math:M_d and :math:M_v are respectively the molar mass of dry air and of water vapor, and :math:R is the universal gas constant. the atmospheric temperature, pressure and specific humidity at the surface taken from the CORDEX/HyMex data (:py:func:e4clim.production.getAirDensity). Intra-day variability correction ................................ In order to take into account that the wind production is computed from the daily-mean wind-magnitudes rather than instantaneous values, the daily-mean wind speed is multiplied by a factor .. math:: \left(\frac{6}{\pi}\right)^{1/3}. the daily-mean wind speed is multiplied by a factor. This coefficient is derived by assuming that the intra-day wind-magnitude probability distribution follows a Rayleigh distribution with a scaling factor corresponding to ... ... @@ -107,25 +89,17 @@ the diurnal cycle should be taken into account. Yet, hourly solar irradiance is usually not available from the CORDEX/HyMex dataset. Thus, it is assumed that the clearness index :math:K_T = I / I_0, Thus, it is assumed that the clearness index, defined a the ratio between the surface horizontal irradiance :math:I and the extraterrestrial irradiance :math:I_0, the surface horizontal irradiance and the extraterrestrial irradiance, is constant throughout the day. See :py:func:e4clim.production.getClearnessIndex. Then, the hourly extraterrestrial horizontal irradiance is computed using the Fourier series model of Spencer (1971) to compute the extraterrestrial radiation :math:G_0^N from the calendar data (:py:func:e4clim.production.getETRadiation), i.e. .. math:: G_{0}^N = S (1.000110 + 0.034221 \cos(B) + 0.001280 \sin(B) + 0.000719 \cos(2 B) + 0.000077 \sin(2 B)), where :math:B = 2 \pi (d - 1) / 365 is the phase of the seasonal cycle and :math:S = 1367 (W/m2) is the solar constant. the extraterrestrial radiation from the calendar data (:py:func:e4clim.production.getETRadiation). See :py:func:e4clim.production.getETHorizontalIrradiance. The hourly extraterrestrial horizontal irradiance is then multiplied ... ... @@ -143,89 +117,49 @@ an approximation of the hourly surface horizontal irradiance. Computing the tilted horizontal irradiance .......................................... The tilted horizontal irradiance :math:I_T for an anisotropic sky The tilted horizontal irradiance for an anisotropic sky is divided (Duffie & Beckman, 2013) into a direct (:math:I_{d, T}), a diffuse (:math:I_{r, T}) and a reflected component (:math:I_{g, T}), .. math:: I_T = I_{d, T} + I_{r, T} + I_{g, T} into a direct , a diffuse and a reflected component. By default, the array is assumed to face South and to be tilted by an angle :math:\beta equal to the latitude of the array. tilted by an angle equal to the latitude of the array. Arbitrary values and tracking options are, however, also possible. See :py:func:e4clim.production.getTiltedIrradiance. Direct and diffuse horizontal irradiance ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, The surface horizontal irradiance :math:I is devided into a direct (:math:I_b) and a diffuse component (:math:I_d). The surface horizontal irradiance is devided into a direct and a diffuse component. The ratio between the diffuse and the total horizontal irradiance is parametrized using the model of Reindl \emph{et al.} (1990a), i.e. .. math:: \frac{I_d}{I} = \begin{cases} 1.4 - 1.749 K_T + 0.177 \sin{e} & \mathrm{if} \quad 0.3 \le K_T \le 0.78 \\ 1.02 - 0.254 K_T + 0.0123 \sin{e} & \mathrm{if} \quad K_T < 0.3 \\ 0.486 K_T - 0.182 \sin{e} & \mathrm{if} \quad K_T > 0.78, \end{cases} where :math:e is the elevation angle of the sun. This ratio is further clipped between 0.1 and 0.97 is parametrized using the model of Reindl \emph{et al.} (1990a). This ratio is further clipped between 0.1 and 0.97. See :py:func:e4clim.production.getDiffuseHorizontalIrradiance. A threshold :math:e_\mathrm{cut} may be defined in order to account for the obstruction of the direct horizontal irradiance :math:I_b = I - I_d by objects at solar elevations below :math:e_\mathrm{cut}, i.e. .. math:: I_b = 0 \quad \mathrm{if} \quad e < e_\mathrm{cut}. A threshold may be defined in order to account for the obstruction of the direct horizontal irradiance by objects at solar elevations below. See :py:func:e4clim.production.getDirectHorizontalIrradiance. Direct tilted irradiance ,,,,,,,,,,,,,,,,,,,,,,,, The transposition factor :math:R_b from the horizontal to the tilted direct irradiance is classically defined as .. math:: R_b &= \frac{\cos{\theta}}{\cos{\theta_z}} \\ \mathrm{so~that~} I_{b, T} &= R_b I_b, where :math:\theta_z is the zenith angle and :math:\theta is the angle of incidence of sun beams on the tilted array. The transposition factor from the horizontal to the tilted direct irradiance is classically defined. It is finally ensured that the transposition fact is zero whenever :math:I_b is zero, or when the sun is behind the tilted array. whenever the irradiance is zero, or when the sun is behind the tilted array. See :py:func:e4clim.production.getDirectTiltedIrradiance. Diffuse tilted irradiance ,,,,,,,,,,,,,,,,,,,,,,,,, The model by Reindl \emph{et al.} (1990b) is used to compute the diffuse tilted irradiance, i.e. .. math:: I_{d, T} = I_d \left\{(1 - A_i) \left(\frac{1 + \cos \beta}{2}\right) \left[1 + f \sin^3\left(\frac{\beta}{2}\right)\right] + A_i R_b\right\}, where :math:f = \sqrt{I_b / I} and :math:A_i = I_b / I_0 is the anisotropy index, i.e. the ratio between the direct horizontal irradiance and the extraterrestrial horizontal irradiance to compute the diffuse tilted irradiance. See :py:func:e4clim.production.getDiffuseTiltedIrradiance. Reflected tilted irradiance ,,,,,,,,,,,,,,,,,,,,,,,,,,, The reflected part of the irradiance is given by .. math:: I_{g, T} = I \gamma_g \left(\frac{1 - \cos \beta}{2}\right), where :math:\gamma_g is the surface albedo, with a default value of 0.2. See :py:func:e4clim.production.getReflectedTiltedIrradiance. .. seealso:: ... ... @@ -245,60 +179,18 @@ See :py:func:e4clim.production.getReflectedTiltedIrradiance. Photovoltaic array production ............................. The electricity production from the photovoltaic array reads See :py:func:e4clim.production.getSolarPower. .. math:: P_\mathrm{PV} = n~A~\eta_\mathrm{e}~\eta_\mathrm{c}~I_T, The cell efficiency depends on the cell temperature and is computed via the thermal model in Duffie & Beckman (2013). If the nominal power and the module area are given instead of the reference cell efficiency. where :math:n is the number of modules, :math:A their area, :math:\eta_\mathrm{e} is the overall efficiency of the electrical installation, :math:\eta_\mathrm{c} is the efficiency of the cells and :math:I_T is the global tilted irradiance. See :py:func:e4clim.production.getSolarPower. The cell temperature is computed from the air temperature, the global tilted radiation (taken here equal to the hourly irradiance) and the wind magnitude. The cell efficiency :math:\eta_c depends on the cell temperature :math:T_c and is computed via the thermal model in Duffie & Beckman (2013), i.e. .. math:: \eta_c(T_c) = \eta_{c0} (1 - \beta_\mathrm{ref} (T_c - T_{c, \mathrm{ref}})). where the temperature coefficient :math:\beta_\mathrm{ref} has a default value of :math:0.004~\mathrm{K}^{-1}, valid for crystalline silicon modules (Notton \emph{et al.}, 2005). The reference cell temperature :math:T_{c, \mathrm{ref}} has a value of :math:25^\circ C by default. If the nominal power :math:P_N and the module area :math:A are given instead of the reference cell efficiency :math:\eta_{c0}, the latter is computed from .. math:: \eta_{c0} = \frac{P_N}{G_{\mathrm{STC}} A}, where :math:G_{\mathrm{STC}} = 1000~\mathrm{Wm}^{-2} is the light intensity under Standard Test Conditions (STC). By default, we set :math:P_N = 250~\mathrm{Wm}^{-2} and :math:A = 1.675. The cell temperature is computed from the air temperature :math:T_a, the global tilted radiation :math:G_T (taken here equal to the hourly irradiance :math:I_T) and the wind magnitude :math:V as .. math:: T_c(T_a, G_T, V) = T_a + \frac{G_T}{G_{T, \mathrm{NOCT}}} L(V) (T_{c, \mathrm{NOCT}} - T_{a, \mathrm{NOCT}}), where the air temperature at NOCT has a value of :math:20^\circ C and the cell temperature at Nominal Operating Cell Temperature (NOCT) :math:T_{c, \mathrm{NOCT}} has a value of :math:46^\circ C by default. The factor :math:L(V) depends on the wind speed :math:V and is given by .. math:: L(V) = \frac{9.5}{5.7 + 3.8~V}. If the wind speed is not provided, it is assumed to be constant and equal to :math:1~\mathrm{ms^{-1}}. See :py:func:e4clim.production.getCellEfficiency. .. seealso:: ... ...
 ************************************** Spatial and technological optimization ************************************** Objective ========= The objective is to optimise the penetration rate of renewable energies in the Italian electricity mix by using a spatial and technological diversification between photovoltaic and wind power across different grid regions. Mean-variance analysis ====================== The geographical and technological diversification of the power plants is carried out in accordance with an analysis that is directly derived from Markowitz's modern portfolio theory. A mean-variance analysis is the process of assessing the risk (variance) with respect to a expected result (average). By examining the penetration rate (mean) and variance of a space and technology assembly of renewable power plants, it is possible to make more efficient installation choices - by seeking the lowest variance for a desired rate or by looking for the highest rate for a given variance. Each combination of renewable installations can be represented by a mean-variance graph. For each mean, there is a combination that minimizes variance. Conversely, for At each level of variance, a portfolio can be found that maximizes the expected average. All of these portfolios are called efficient frontier or Markowitz frontier. Border points are by definition sub-optimal, and will not be of interest to a rational investor. The area above the border cannot be reached. Method ====== A python minimization function, provided by the Scipy package, is used to determine this efficient boundary. For a given mean interval (between 0 and 50\%), the set of combination of renewable facilities minimizing variance is determined. Using this minimization function, we implemented three methods of increasing complexity to perform the mean-variance analysis: * The first procedure is the most ideal. The electricity generated at a point is assumed to be immediately available to meet the overall Italian demand, regardless of any distance and transport constraints (Eq. 1 \& 2). * The second includes a notion of electricity network. Local production in a region must first be used to provide local demand. If production is stronger than demand, electricity may be exported to the extent that the capacity of the power lines permits. Otherwise the electricity is lost (Eq. 3). * Finally, we add a financial component on the profitability of the facilities renewable (E. 4). Global optimization ------------------- In the first case, the following objective function is minimized, .. math:: \sum_{i = 1}^N \sum_{j = 1}^N \omega_i \omega_j \sigma_{ij} + 1e6 \left(\left( \sum_{i = 1}^N \omega_i \mu_i\right) - \mu_{\mathrm{Target}}\right), where :math:\mu_i(t) is the average penetration level per region and technology for an installed MW compared to the national electricity demand, :math:N is the number of regions by the number of available technologies (2, photovoltaic and wind), :math:\omega is the installed capacity in MW, :math:\mu_\mathrm{Target} is the target penetration rate and :math:\sigma is the covariance of the renewable penetration rate. The average penetration level per region and technology is given by, .. math:: \mu_i = \frac{1}{T} \sum_{t = 1}^T \frac{P_i(t)}{\sum_{i = 1}^N D_i(t)}, where :math:P_i(t) is the daily production time series by region and technology :math:i and :math:D_i(t) is the power consumption. .. seealso:: solve_frontier_portfolio Regional optimization --------------------- In the second optimization problem, the interconnection between regions is taken into account. The following constraints are thus added, .. math:: \mu_i = \frac{1}{T} \sum_{t = 1}^T \frac{P_i(t)}{D_i(t)}, P_i(t) \le D_i(t) + T_i where :math:T_i is the electrical transmission capacity of a region. .. seealso:: solve_frontier_portfolio_constraint Return on expenditures optimization ----------------------------------- The last optimization problem adds the following constraint ensuring a return on expenditures, .. math:: \sum_{i = 1}^N \sum_{j = 1}^N \omega_i \omega_j \sigma_{ij} + 1e6 \left(\left( \sum_{i = 1}^N \omega_i \mu_i\right) - \mu_{\mathrm{Target}}\right) + \frac{1}{N} \sum_{i = 1}^N \frac{\omega_i (\mathrm{CAPEX}_i + 24 \mathrm{OPEX}_i)}{ \frac{\omega_i p_\mathrm{Elec}}{T} \sum_{t = 1}^T \mu_i(t) D_i(t)}, where :math:\mathrm{CAPEX}_i is the initial capital expenditure whereas :math:\mathrm{OPEX}_i is the operating expenditure (current maintenance and operating costs), :math:p_\mathrm{Elec} is the electricity price. .. seealso:: solve_frontier_portfolio_roe Files and programs ================== * Opt_portfolio.py: Calculates the efficient frontier for the 3 optimization levels. Store them results for configurations with minimum variance and maximum mean. * Ratio_SpecialDays_Script.py: Calculates the percentage of situation at risk for the 3 levels optimizations and following distributions ranging from photovoltaic to wind energy. The situations at risk are when, 1. the production does not reach the level of national demand, 2. the penetration rate of renewables exceeds 40% of the electricity mix. * DrawDistrib.py: Draw the optimization results on a map. Alexis ====== Let :math:N denote the number of regions in the domain. Two technologies are considered, photovoltaic solar panels and wind turbines. Let :math:\mathbf{k} = (i, j), 1 \le i \le N, 1 \le j \le 2, be a multi-index with :math:i being the regional index and :math:j being the technological index. The capacity factors for each region and technology are defined by .. math:: \eta_\mathbf{k}(t) = \frac{P_\mathbf{k}(t)}{P^N_\mathbf{k}} Let :math:D_T(t) denote the total demand at time :math:t, i.e. .. math:: D_T(t) = \sum_i D_i(t), where :math:D_i(t) is the demand of region :math:i. Let :math:(\omega_\mathbf{k})_\mathbf{k} be the vector of RES capacity (in MW) per region and technology and .. math:: \mu_\mathbf{k}(t) = \frac{\eta_\mathbf{k}(t)}{D_T(t)}, be the penetration rates per region and technology at time :math:t, i.e. the fraction of the total demand satisfied by the RES production in a given region. The total penetration of RES in the electricity mix :math:\mu_T(t) is then given by .. math:: \mu_T(t) = \sum_\mathbf{k} \omega_\mathbf{k} \mu_\mathbf{k}(t). Our objective is then to maximize the mean total penetration .. math:: \mathbb{E}[\mu_T] = \sum_\mathbf{k} \omega_\mathbf{k} \mathbb{E}[\mu_\mathbf{k}], while minimizing some measure of the risk. The risk is usually defined as the variance of :math:\mu_T(t), i.e. as .. math:: \mathbb{V}[\mu_T] &= \sum_{\mathbf{k}, \mathbf{l}} \omega_\mathbf{k} \sigma_{\mathbf{k} \mathbf{l}} \omega_\mathbf{l}, where the matrix :math:\Sigma is such that .. math:: \sigma_{\mathbf{k} \mathbf{l}} = \mathbb{E}[(\mu_\mathbf{k} \mu_\mathbf{l} - \mathbb{E}[\mu_\mathbf{k} \mu_\mathbf{l}])^2] However, in order to value the covariance of the regional RES production with respect to the regional demand, rather than with respect to the aggregated demand, we prefer define the risk by replacing the matrix :math:\Sigma with the matrix :math:Q defined such that .. math:: q_{\mathbf{k} \mathbf{l}} = \mathbb{E}[(\nu_\mathbf{k} \nu_\mathbf{l} - \mathbb{E}[\nu_\mathbf{k} \nu_\mathbf{l}])^2], with the vector :math:(\eta_\mathbf{k})_\mathbf{k} giving the fraction of the regional demand satisfied by the RES production, i.e. .. math:: \nu_\mathbf{k}(t) = \frac{\eta_\mathbf{k}(t)}{D_i(t)}. Thus, we want to minimize the risk .. math:: \sum_{\mathbf{k}, \mathbf{l}} \omega_\mathbf{k} q_{\mathbf{k} \mathbf{l}} \omega_\mathbf{l}. Note, however, that this risk no longer coincides with the variance of the total penetration rate. To solve this bi-objective problem, we minimize the risk while constraining the mean penetration rate to some target and repeat this operation for different targets. That is we solve the problem .. math:: \min_{\omega} &\sum_{\mathbf{k}, \mathbf{l}} \omega_\mathbf{k} q_{\mathbf{k} \mathbf{l}} \omega_\mathbf{l} \\ \mathrm{subject~to} \quad &\sum_\mathbf{k} \omega_\mathbf{k} \mathbb{E}[\mu_\mathbf{k}] = U. We also impose the following upper and lower bounds on the capacities .. math:: 0 \le \omega_\mathbf{k} \le \overline{\omega}, where :math:\overline{\omega} is a maximum capacity. To avoid congestion situations within regions, we also add the following constraint .. math:: \omega_\mathbf{k} \eta_\mathbf{k}(t) \le D_i(t) + T_i, where :math:T_i is the transmission capacity from region :math:i to any other region.
 ... ... @@ -287,7 +287,7 @@ def get_pv_power(global_tilted_surf, temp_a=None, wind_speed=1., area=1.675, temp_ref. If None, compute it from the nominal power. Default is None. :param thermal_loss: Efficiency loss per degree Kelvin away from the reference temperature. Default is :math:0.0041~\mathrm{K}^{-1}. 0.0041 K-1. :param temp_ref: Reference temperature (K). Default 298.15 K. :param temp_cell_noct: Cell temperature at the Nominal Operating Cell Temperature (NOCT) (K). ... ... @@ -361,7 +361,7 @@ def get_cell_efficiency( temp_ref. If None, compute it from the nominal power. Default is None. :param thermal_loss: Efficiency loss per degree Kelvin away from the reference temperature. Default is :math:0.0041~\mathrm{K}^{-1}. 0.0041 K-1. :param temp_ref: Reference temperature (K). Default 298.15 K. :param temp_cell_noct: Cell temperature at _noct (K). Default is 319.15 K. :param nominal_power: Nominal power of the module (W). See note. ... ... @@ -410,11 +410,11 @@ def get_cell_efficiency( temp_cell = temp_ref else: # Compute temperature dependent efficiency of module # Thermal loss ration: :math:U_{L, _noct} / U_L # Thermal loss ration: U_{L, _noct} / U_L loss_ratio = 9.5 / (5.7 + 3.8 * wind_speed) # Cell temperature (K). See note. # :math: au \alpha / U_L = (T_{c, _noct} - T_{a, _noct}) / G_{T, NOCT} # au \alpha / U_L = (T_{c, _noct} - T_{a, _noct}) / G_{T, NOCT} temp_cell = (temp_a + (global_tilted_surf / global_tilted_surf_noct) * loss_ratio * (temp_cell_noct - temp_a_noct)) ... ...
 ... ... @@ -287,9 +287,7 @@ class Actuator(ExtractorBase): :param rho0: Reference air density (kg/m3) for which the power curve was obtained. Default is 1.225 (kg/m3). :param mean_speed2mean_gen: If True, :py:obj:speed is taken as the mean of a Rayleigh distribution so that a factor :math:(6 / \pi)^{1/3} is applied to the mean wind speed to get the corresponding mean wind power. is taken as the mean of a Rayleigh distribution. Default is False. :type speed: (sequence of) :py:class:float :type rho: (sequence of) :py:class:float ... ...
 ... ... @@ -1734,8 +1734,8 @@ def fun_regional_transmission(x, *args): omega_t_wind = omega_t[:, n_reg:] cf_t_pv = args[:, :n_reg] cf_t_wind = args[:, n_reg:] # :math:T_i+D_i(t)-\omega_i \eta_i(t)-\omega_{i + n_reg} # \eta_{i + n_reg}(t) # T_i+D_i(t)-\omega_i \eta_i(t)-\omega_{i + n_reg} # \eta_{i + n_reg}(t) y = (trans_t + dem_t - omega_t_pv * cf_t_pv - omega_t_wind * cf_t_wind).flatten() ... ... @@ -1962,10 +1962,10 @@ def get_bounds_cstr(lb=None, ub=None, dim=None, sparse=False): :type dim: int :type sparse: bool :returns: A tuple containing matrix :math:G and vector