{"name": "Velantis Wind", "package_name": "VelantisWind", "version": "0.1.17", "experimental": false, "qgis_min": "3.28.0", "qgis_max": "3.99.0", "downloads": 128, "uploaded_by": "VelantisWind", "upload_datetime": "2026-10-27T06:09:40.815198", "changelog": "nstallation\r\nPinned py_wake==2.6.18, the version used to check the predefined models and consistency with PyWake. The dialog does not warn if another version is installed. In the Python environment used by QGIS, Linux and macOS install py_wake==2.6.18, h5py and h5netcdf>=1.8 with pip; Windows with QGIS from OSGeo4W installs py_wake==2.6.18 and h5netcdf>=1.8 with pip. Since version 1.8, h5netcdf no longer depends on h5py.\r\nOn Windows with QGIS from OSGeo4W, the pip wheel of h5py is expected to fail to load because its HDF5 library conflicts with the one QGIS loads. This has not been reproduced on Windows. Do not install h5py with pip there; installing python3-h5py through the OSGeo4W installer is an option still to be tested. See the installation guide. On Windows, the result notes and the plugin API error no longer suggest installing h5py with pip; they refer to the installation instructions.\r\nh5py and h5netcdf are needed by GaussianOverlapAvgModel, used by the predefined NiayifarGaussian and TurbOPark models. If either library is missing or fails to load where PyWake needs the lookup table (for these predefined models, with two or more turbines or in a wake raster), both predefined and manual modes ask before calculating. Continue uses CGIRotorAvg(7) for that launch; Cancel calculates nothing. The result records the selected and executed configurations and identifies a predefined result as an adaptation from that model. An unchecked box can remember the decision for that predefined model; an applicable saved decision is applied without asking and is stated in the result.\r\nEnergy / AEP\r\nWake physics is built from the PyWake classes selected in the dialog: engine first, then deficit, rotor average, ground, superposition, turbulence and blockage where supported. Parameters of these objects and the engine's numerical settings are editable; unchanged values come from their PyWake signatures. Unsupported combinations report a conflict instead of calculating with different physics.\r\nAdded read-only predefined PyWake park models, including TurbOPark and excluding Fuga, with contextual help for each mode, model and selector. A new installation, and an upgrade from 0.1.16, opens in Predefined models with NOJ. The manual mode starts with PropagateDownwind, BastankhahGaussianDeficit, LinearSum, no rotor average, no added turbulence and no blockage. The physics preferences of 0.1.16 are no longer used and are left untouched; if there are any, a one-time notice says so the first time the manual mode is shown. Between dialog sessions, the manual mode remembers the engine, deficit, superposition, turbulence and blockage selections; edited parameters and subordinate choices restart from their PyWake signature defaults.\r\nResults record the selection and the executed configuration, convergence and model warnings. The signed wake, turbulence and blockage breakdown is shared by the results window, reports, CSV, layers and scenario comparator; an unavailable term is identified as such, rather than reported as zero. In turbine layers, result fields of the previous version whose meaning changed are kept but no longer written, with a warning; current results use the new fields. A CSV export is accompanied by <name>.wake_config.json, with the wake configuration.\r\nAPI: a calculation request can give the wake physics as a versioned wake_physics; supported fields of the previous schema are translated and the translation is recorded in the result. Rejected, with an error: AUTO as a physics selector, wake_model, previous-schema values that are neither in the translation table nor a class name, requests mixing the previous fields with wake_physics, a position given twice with different values and an include_* flag that contradicts its class.\r\nWRG resource parameters use directions at the centres of equal sector subdivisions: initially seven per sector, or one if seven would exceed 360 directions. Directional interpolation is nearest initially, with linear also available; Speedup is none, preserving the local Weibull climate. Wind speeds cover the turbines' operating bands, with a step of 1, 0.5 or 0.25 m/s. GRD resources use their PyWake site's directions and wind speeds. Both use 8766 h/year.\r\nA single-height WRG can be used at other hub heights with a warning. With a multi-height WRG, turbine hub heights must lie within the covered vertical range: heights outside it are now rejected instead of being clipped to it; directional summaries use the resource's native sectors. The WRG readers now agree on node records, including X coordinates in scientific notation, with a trailing dot or with a leading +. Node identifiers that read as a finite number, such as 001 or 1e3, are now rejected, because they can shift the columns of a record; some files that earlier versions accepted are affected. Text identifiers remain supported, and a rejected record names its file and line.\r\nEach Energy model row selects a point layer of the project, which replaces the coordinates-CSV field; Load new layer imports a coordinate table into a new layer. AEP and the wake raster use only the selected layers; AEP results are written back to those layers when they accept the result fields, and a failed write is reported. Turbines outside the resource are reported and totals are identified as partial; excluded turbines may keep results of an earlier calculation in their layer, and the warning says that those values do not belong to the current calculation. Coordinates retain double precision.\r\nMixed-model parks: each turbine model is evaluated at its own hub height. Version 0.1.16 evaluated every model at the hub height of the first one, so the AEP of mixed parks with different hub heights changes. Multi-height WRG files keep a two-dimensional terrain surface.\r\nTurbine curves now respect their operating bands and validate supplied Ct instead of clipping it. CSV/TXT readers keep each row whole, reject malformed power or Ct with its location and accept repeated spaces and tabs; missing Ct is explicitly identified as estimated. Invalid or ambiguous hub heights and rotor diameters are rejected instead of using silent geometry defaults.\r\nAdded .wtg and .owtg density-tabulated curves with strict format validation and optional uniform or per-turbine air density. Density is bounded by each model's actual table, including an irregular density axis. The turbine dialog discards failed builds and asks before accepting a turbine whose inputs have changed.\r\nEnergy calculations use the mean power over each wind-speed bin by default, including gross AEP and the loss variants; Ct is still evaluated at the supplied speed.\r\nPower curves keep a high-wind derating or a shutdown before cut-out; previously a cumulative maximum removed it. Only negative or non-finite power values are set to zero. For curves without a CT column, the estimated CT is now zero wherever the power is zero (below cut-in or at a shutdown), so the AEP of those curves changes.\r\nTwo turbine models with the same name are rejected before calculating, because their layers and per-model results are matched by name.\r\nNegative or non-finite effective speeds no longer fail solely because a density-tabulated curve's wind-speed axis is exceeded. Results warn about negative speeds and non-finite values; totals omitting cases that may carry energy are labelled partial. WeightedSum handles the 0 m/s node separately where applicable so it can weight the other bins, and records exceptions and convergence warnings.\r\nThe reference air density of the density adjustment, new in this version, is stored in each QGIS project; a project without one starts undefined, with the adjustment off. Reference-density values saved globally by development builds before the release are not imported. Changing projects clears the last AEP and comparator scenarios.\r\nSpacing envelopes\r\nRegenerating envelopes no longer empties an envelope layer saved to a file. Apply and Reset mark the project as modified.\r\nEnergy creates and compares spacing envelopes only for the turbine layers selected in its model rows.\r\nWake raster\r\nAdded a georeferenced wake raster for the most energetic sector or a selected wind direction, computed as a cancellable QGIS task. It adds free-flow speed, effective speed, deficit in m/s and in %, and terrain elevation when available, and writes a JSON audit file.\r\nThe WRG raster uses Speedup none, the selected directional interpolation and the same straight distances as AEP. Mixed-model parks keep each model's diameter, hub height and Power/CT curve.\r\nThe flow map is computed in bounded tiles, keeping memory limited on fine grids and allowing cancellation between tiles.\r\nEvery input, including density, comes from the current dialog; the final window identifies differences from the last AEP in the project. A raster finishing after a project change is not loaded into the new project.\r\nCustom and derived CRS are retained in the raster files, including CRS without WKT1. Negative and non-finite cells are reported; an undefined relative deficit is written as NoData.\r\nNoise and Shadow Flicker\r\nThe turbine layout import accepts XLSX files and coordinates in any CRS, transformed to the project CRS. A CRS typed as text that is not valid is rejected. Layout imports now stop at rows with invalid or non-finite coordinates instead of silently omitting those turbines; when other rows can be read, the error names the unreadable ones. XLSX import needs openpyxl in the Python environment of QGIS; without it, save the file as CSV.\r\nCustom and derived CRS are preserved in layout imports and TI-raster sampling. Noise isophones use FlatGeobuf to retain such CRS; failure to create them is reported without discarding the rest of the Noise result.\r\nExactly 30 h/year of shadow flicker does not exceed the annual limit in the summary, result fields or map classification; exceeding means more than 30 h/year. The daily criterion remains more than 30 min/day. The receiver symbology covers values up to 8784 h/year, and the raster legend uses red only above 30 h, with distinct labels just above the limit.\r\nInterface, translations and support\r\nAdded minimize, maximize/restore and close controls to Energy, Noise and Shadow Flicker. Reopening a minimized window restores it and preserves its maximized state; Energy retains a single set of controls when reused.\r\nCorrected Spanish, English, French and German texts across the modules, help, reports and exports. Translation no longer depends on module import order, opening Energy in another language is faster, and live language changes preserve selections, results and unfinished edits. User names, paths and template fields are protected from translation.\r\nMW and MWh in the text and tables of the Energy results window, its HTML report and the comparison tables use the decimal and thousands separators of the plugin language. Other numbers may still use a decimal point in every language, among them the chart axes and those of the Noise and Shadow results and of the QGIS log. CSV numeric formats are unchanged.\r\nAdded a shared Sponsors button in the hub and Energy, linked to the support dialog. Sponsorship opens the GitHub Sponsors profile; support levels can be expanded, documentation has separate links, and a failed link launch shows a copyable address. The button and fallback address support keyboard access; funding links are aligned with the public repository.\r\nStability and maintenance\r\nFixed a QGIS crash when a calculation running in a background task wrote to the message bar.\r\nThe plugin version is read from metadata.txt in one place and recorded in the wake-raster JSON and the Noise XLSX export.\r\nAnnotated reviewed security-scanner false positives.\r\nChanges to default AEP results\r\nCompared with 0.1.16, default AEP results change with the wake-model selection (predefined NOJ on a new installation; PyWake signature defaults, including Bastankhah with LinearSum, in manual mode), the WRG directions and operating-band wind speeds and 8766 h/year for WRG and GRD; as in 0.1.16, WRG calculations keep the local Weibull climates without a speed-up. Bin-mean power, corrected operating bands and Ct handling, preserved derating and per-model hub heights also affect AEP. Density-tabulated curves use the selected density treatment; WeightedSum calculations including 0 m/s can change because weighting now applies to the other bins. Review the executed configuration and warnings when comparing results from different versions.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/VelantisWind/version/0.1.17/download/"}