HARP_Opt Change Log ==================================================================== ==== v1.00.00 Aug-13-2009 D. Sale ================================= -This is the first release of HARP_Opt. ==== v1.00.06 Sep-17-2009 D. Sale ================================== -[Update] The GUI is now resizable; this may help for systems with limited screen resolutions. -[Update] The WT_Perf ".wtp", ".oup", and ".bed" files created by HARP_Opt now include the text "Optimal Solution" or "Non-optimal Solution" in the header of the files. If the file was created during intermediate iterations, the text "Non-optimal Solution" will be in the header. And if the file was created after the optimization was completed, the text "Optimal Solution" will be in the header. This should clarify what the data in these files represent. -[Update] Changed all file and directory names to use underscores instead of spaces. This will solve any problems that arise when using file compression tools (WinZip, 7zip, etc.), which can sometimes replace spaces in file and directory names with underscores. -[Update] HARP_Opt now outputs the dimensional thickness by default in the Excel output file. -[Bug Fix] Fixed a bug where the GUI does not display properly for different system font sizes. The GUI should now display properly regardless of the system font size (DPI setting). -[Bug Fix] Fixed a bug where HARP_Opt would occasionally use the wrong stall-delay model. This was caused by a mistake in the GUI selection functions. -[Bug Fix] HARP_Opt will no longer crash when trying to seed an initial population when the "Initial_Population.xls" file does not contain any individuals to be seeded. ==== v1.00.07 Oct-9-2009 D. Sale ================================== -[Bug Fix] Fixed a bug where HARP_Opt would not produce the Excel output file for variable-speed configurations of wind turbines (caused by the WT_Perf ".bed" file not being created at the right time). -[Bug Fix] Blade pitching is now only allowed when the rotor power exceeds the rated power input by the user. Previously, if the power never exceeded the rated power, sometimes pitching the blades could result in slightly higher power output. Now pitching of blades is only allowed if rated power is exceeded. ==== v2.00.00 Jun-26-2010 D. Sale ================================= -[Update] Annual Energy Production (AEP) can now be optimized directly, as an alternative to optimizing efficiency. Optimizing AEP directly will provide higher energy yields as opposed to optimizing efficiency. Optimizing AEP will require the user to input a Rayleigh, Weibull, or user defined flow distribution. Maximum Power Point Tracking (MPPT) is a combined objective with AEP, just as it is with efficiency--see the user's guide for more detail on how AEP, efficiency, and MPPT are optimized. -[Update] Multi-objective optimization has been added. A structural optimization can performed simultaneously to efficiency or AEP optimization. The structural optimization minimizes blade mass using strain as a constraint. The blade is modeled as an Euler-Bernoulli beam using bulk isotropic material properties, and strain is calculated from the bending moments (shear & torsion are ignored). The blade is modeled as a composite shell (no internal webs), and then the shell thickness is minimized along the length of the blade such that the allowable strain is satisfied. Consequently, this minimizes the blade mass subject to the constraint on allowable strain. -[Update] Added the ability to model blades with circular roots automatically, see the user's guide for more details on how this algorithm works. Both the "Piecewise Constant" and "Piecewise Linear" percent thickness distributions can blend the airfoil profiles and coefficients into a circle at the root. The requirements for monotonically decreasing percent thickness and dimensional thickness are still enforced. -[Update] Added an improved algorithm to model transitions between airfoils. The older algorithm, named "Piecewise Constant" modeled the percent thickness distribution as a step function, which caused discontinuities in the dimensional thickness as well as discontinuities in the aerodynamic coefficients along the length of the blade. In the new improved algorithm, named "Piecewise Linear", the radial locations of the true airfoils are decided by the genetic algorithm, and then the airfoil profiles are interpolated linearly between the stations where true airfoils are located. The aerodynamic coefficients are interpolated using percent thickness as the variable, and the coefficient interpolation algorithm preserves the shape of the lift & drag polars--see the user's guide for more details on how this algorithm works. -[Update] Using the "Piecewise Constant" and "Piecewise Linear" algorithms, the design variables controlling placement of the airfoils now represent the radial location of the airfoils, as opposed to the percent thickness of the airfoils (as in the older versions). Note, the "Piecewise Linear" algorithm has only been added in this version of the code. As a result of this change, the bounds for the airfoils are now entered in a different way: bounds are for the radial values now, as opposed to the percent thickness values as in the older versions. -[Update] I've updated the way users can enter bounds for the design variables controlling placement of the airfoils/hydrofoils. Previously, the airfoil design variables were required to have both an upper and lower bound, but now it is possible to enter either partial bounds (either upper or lower only) or no bounds at all. The requirement for blade thickness to be monotonically decreasing is still enforced. The ability to enter partial bounds or no bounds increases the flexibility of the code, allowing less constraints if desired and the ability to explore a wider range of possible solutions. -[Update] I've updated the way the initial population is created. Previously, the initial population was generated randomly (while obeying bounds and linear inequality constraints); the user also had the ability to enter individuals into the initial population manually (although bounds and constraints were not checked on user supplied individuals). The problem with creating the initial population randomly was that often a large portion of the initial population would be infeasible, and would be immediately thrown away due to poor performance, cavitation, or other errors--as a result, the search algorithm was getting a poor start. In this updated version, the initial population is still created randomly, but now the code will continue to generate individuals randomly until the entire initial population consists of feasible individuals (i.e. none of the initial population will be thrown away due to errors). The 100% feasible initial population now provides a much better starting point for the search algorithm. Due to this update, I had to disable the ability to seed the initial population with user supplied individuals. However; I plan to re-enable this feature in future versions, using a much improved and more intuitive implementation than previous versions. -[Update] The "Detailed_GA_Output.dat" and "Summary_GA_Output.dat" output files have been disabled and are no longer output by the code. These files were really only useful for debugging, and I did not have time to update the functions which write these files in this version. With the addition of multi- objective optimization in this version, the data in these files become increasingly difficult to organize and interpret. -[Update] Added the ability to design pitch-to-stall variable pitch turbines, in addition to the pitch-to- feather case. I don't think this is a very common design, but I thought it would be interesting to model. -[Update] Added the ability to model pre-coned blades. The ability to model shaft-tilted rotors may come in future versions, right now shaft-tilt is permanently set to 0 degrees. However, the accuracy of the BEM corrections for pre-cone and shaft-tilt are questioned, so use caution. -[Update] I updated the plots which show the current state of the optimization. Instead of simply showing the current best values for the design variables (old version), now the actual blade geometry is additionally plotted. Now you can watch how the actual shape of the blade changes as the optimization progresses. For the multi-objective optimization, only the Pareto frontier is shown, which also updates as the optimization progresses. -[Update] Added two new buttons in the GUI: "Save Settings" and "Load Settings". The "Save Settings" button opens a file browser menu and allows you to save the current GUI settings to a file. This is not simply a "save as default" button, you can save multiple presets using this save feature. The "Load Settings" button also brings up a file browser which allows you to load any of the GUI presets that have been saved previously. Now you do not have to re-enter all the input values each time the code is restarted, which I know was annoying to do. -[Update] Added a new section to the GUI which estimates the Annual Energy Production (AEP) and Capacity Factor (CF) which will result from the selected input parameters. Also, the "Plot Contours" button was added, which plots an overlapping contour plot of AEP and CF for a user-defined range of rotor diameter and rated power for the selected flow probability distribution. This plot is helpful to guide the selection of diameter and rated power. -[Update] User defined flow distributions can now be selected using the "Select File" button under the "Flow Distribution" button group. The user can now store multiple files containing flow distribution data and load the data using the "Select File" button, which opens a file browser menu so the user can select the desired file. -[Update] The blade element spacing for the BEM analysis can be selected to use either equal spacing or cosine spacing. Cosine spacing results in a higher density of points near the hub and tip of the blade, which is better suited for the hub and tip loss models. -[Update] The radial position of the design variables (Bezier curve control points) for the chord and twist distributions are now spaced using half-cosine spacing, with higher density near the root of the blade. The chord and twist typically have more curvature near the root of the blade, and the half-cosine spacing should allow a wider range of blade shapes to be modeled as compared to the equal spacing of design variables in older versions. Furthermore, the radial position of these design variables are now displayed in the GUI. -[Update] Updated the algorithm which calculates Bezier curves, this new algorithm is slightly faster than the old one, but it also depends on the MATLAB Statistics toolbox. -[Update] A modified version of MATLAB's "xlswrite.m" function is now used. This new function, "xlswrite2007.m", allows faster writing to Excel files because it does not open and close the ActiveX server each time data is written to Excel, also it is more compatible with Excel 2007 (and hopefully newer versions as well). -[Update] GUI has a new updated and improved appearance. -[Update] Excel output file has a new updated and improved appearance. -[Update] A screenshot of the GUI input screen is now saved to the output directory so the user can keep track of the input parameters used. -[Update] A button has been added in the GUI to record failed cases. This is useful for debugging purposes. -[Bug Fix] In older versions, the design variable bounds could occasionally be violated, but not anymore! This was caused by an error in the function which creates the initial population, but now it is fixed and bounds will always be obeyed. -[Bug Fix] Occasionally a solution could be found which violates the Betz limit, but now this is detected and these solutions are thrown away since they are not realistic. -[Bug Fix] Fixed a bug in "Read_WTP_Output.m" where it was not detecting errors due to cavitation in certain cases, it should now detect cavitation errors properly in all cases. -[Bug Fix] As flow speed increases, changes in blade pitch can only increase (pitch-to-feather) or decrease (pitch-to-stall) monotonically. Previously, there could occasionally be weird fluctuations in blade pitch, but this requirement for monotonic blade pitching fixed this problem. -[Bug Fix] Fixed a bug that would crash the code when making large changes to the number of flow speeds (controlled by the variables SpdSt, SpdEnd, and SpdDel) between optimization runs. This was caused by an overflow in one of the text fields for the WT_Perf input files. -[Bug Fix] Fixed a bug that would cause the code to incorrectly think that wind turbines were underwater, and that the wind turbine blades would pierce the water surface--this sometimes prevented the code from running. This was a simple mix-up in the error checking routine "Error_Check.m", and is now fixed.