TurbSim Change Log ----------------- SNLWIND ======= Pre v2.0 M. Buhl I don't know the long history of the changes made. Originally, there was a code called SNLWIND from Sandia. Paul Veers created the code. Then, Neil Kelley of NREL modified the code so that it would create three-component winds and the code became SNLWIND-3D. SNLWIND-3D ========== v2.00 M. Buhl I modified the program so that it could also create binary files in BLADED format. I also cleaned it up some and put in some Fortran 90 features. v2.03 24-Nov-1997 M. Buhl I ported the code to the Sun Fortran 90 compiler. I had to change INT2( X ) to INT( X , 2 ). v2.04 02-Feb-1998 M. Buhl I changed the DO loops for the output time histories to be 1 to NTRAN instead of 1 to NTRAN-1. I changed the program version date format. v2.05 19-Feb-1998 M. Buhl I added a RECL=2 parameter to the OPEN for binary output so the files would be smaller on the Sun. v2.06 18-May-1998 M. Buhl Neil Kelley discovered that the version we had been using was one that hadn't had two important changes made to it. They were need for "smooth" turbulence. I added the corrections. v2.08 27-Aug-1998 M. Buhl We discovered that when we have mean wind speeds with more precision than a tenth of a meter per second, we get incompatible wind speeds between the .wnd and .sum files. This is because when we write the binary file, we write out INT(10*UHUB), which truncates the value. We modified the calculation of UHUB so that we do UHUB=0.1*INT(10.0*UHUB) before using it in the code. v3.?? 23-Aug-1999 N. Kelley This version computes the hub coherency first and the remainder of the grid second. The update to the binary files to limit the precision of UHUB and the TIs has been included. v3.02c 24-Aug-1999 N. Kelley Fixed problem with UHUB when ZREF and ZHUB were not the same. Previously only affected non-IEC spectral models. SNLWIND-IEC =========== v4.00ndk-a 27-Dec-1999 N. Kelley Created an IEC-only version of the original cartesian SNLWIND-3DC, Ver 3.02c called FFIELD_IEC.F Changed method in which hub wind speed is estimated when the reference height (ZREF) is not at the same elevation as the HUB (ZHUB). If both the hub height and the reference wind speed height are within the rotor disk, the specified power law is used. If the ref ht is below the rotor disk, the log wind profile is employed with an assumed roughness length (Z0) of 0.03 meters. The target standard deviation for the Kaimal spectral model is reduced by 2% prior to calculating the spectrum. This slight reduction brings the target and simulated turbulence intensities into better agreement. SNwind ====== v1.00 17-Jan-2000 M. Buhl Made a major overhaul of the program. Converted all but the FFT routines to free-form. Input file reworked. Moved input code to GetInput. I moved the FFT core routines to a separate file (FFTSubs.for). I will leave them in their (mostly) original state. I fixed a bug in the original SNLWIND-IEC in the calculation of the mean wind speed when the ref and hub heights differed. I added a CPU timer. I added a header to the HH turbulence-parameter file. I added logic to output HH AeroDyn files. I eliminated a bunch of unused variable declarations. I moved SigmaIEC and MaxDims from COMMON to the GenUse module. I moved HubHt and TurbModel from the arguments for the IEC routines and put them in GenMod. I added USEs from Genuse in SNWsubs.f90 and FFTsubs.f90. I had to rename the "N" in GenUse to "NumGrids" and all its references, as "N" was used in the FFTsubs. I used dynamic allocation for the big arrays. I converted the grid coordinates (Y and Z) from matrices to vectors. I eliminated the maximum grid size and put in a test to make sure the grid dimensions were even. I added some debug statements and modified others. I made some minor efficiency improvements. I added CPU time to the summary file. I converted many statistics accumulators to double precision. I added a new function, PSF(), to compute the product of small factors to ensure that we never get a number of time steps with factors larger than 29. This seems to have eliminated the problem that we thought was due to going longer than 600 seconds. The program seems much better behaved now and runs faster too. I optimized the equations for the Kaimal and von Karman spectra. I changed the DEBUG_OUT for the Kaimal and von Karman spectra to generate true PSDs. v1.01 01-Dec-2000 M. Buhl I changed the informative message about generating the HH wind file so that it says it's generating ".hh" instead of ".dat." I changed the calculation of NumSteps so that it works properly (I hope). Before, it found a number that factored to primes less than or equal to 29. Then, it made sure it was divisible by four. This meant that the number no longer necessarliy factored to small primes. I did two things to improve the situation. I essentially divided the number by four, then made sure that the result factored to small primes. Then, I multiplied that by 4 to get a number that was divisible by four *and* factored to small primes. I converted the code to use the Fortran intrinsics RANDOM_SEED() and RANDOM_NUMBER(). I also changed the code so that it generates all the random numbers in one call and stores them in an array. SNwind now runs almost twice as fast as it did before because of the new RNG. I cleaned up PSF() to eliminate some useless code and fixed a bug. It seems I had left 19 out of my list of primes! I eliminated the limits on the random seed. All valid 32-bit integers (even negative ones) are OK. I eliminated the limit on the horizontal mean flow angle. v1.02 14-Dec-2000 M. Buhl Kirk Pierce found that the wind file was not as long as advertized when he used a binary file with ADAMS. The problem turned out to be that I was telling the header of the binary file there were NumFreq time steps, but only outputting NumOutSteps to the file. I changed NumFreq there to NumOutSteps/2 to eliminate the problem. v1.03 12-Jan-2001 M. Buhl I found that when I was generating AeroDyn HH wind files for high wind speeds, I overflowed the field for the vertical wind speed. I had to modify SNwind.f90\snwind() to fix it. While I was at it, I changed the file header to use one line for column titles and one for units. The old version used two lines for titles and none for units. You still can't use the auto-column-detection feature of Crunch to determine the headings because of the "!" at the beginnings of the line. v1.10 20-Apr-2001 P. Moriarty, M. Buhl Pat enhanced the code so that one could enter the TI in percent in addition to the standard "A" or "B" turbulence. That required changes to snwind.f90\snwind() and SNWsubs.f90\GetInp(), and he added the new variables PerTurbInt and NumTurbInp to modules.f90\genmod(). We modified SNwind.f90\SNwind() so that we output either "A", "B", or "User Specified" to the summary file. Also in that routine, we modified the calculation of SigmaIEC and TurbInt to that it is done appropriately when a value is entered. I changed the string Version so that it is no longer set in GenMod with an initialization string. Now, I call the new routine SetVersion.f90\SetVersion() from snwind.f90\snwind() to set it. This eliminates the need to recompile every file that USEd GenMod whenever the version changes. v1.11 20-Apr-2001 M. Buhl When trying to run with a very small TI, I got domain errors on the SQRT()s used in calculating the stats. I modified the calls so that they did a MAX() of the calculated value and 0 to eliminate the errors. v1.12a M. Buhl I added the ability to use two seeds instead of one. v1.12b 12-May-2003 M. Buhl I moved the stuff from between the two big DO loops to be either before both or after both. I then converted the two loops into one. v1.12c 13-May-2003 M. Buhl I made it so that when using the non-correlated spectra, I dimension the bug Matrix array for only one component and reuse it for the three components. I took the logic in two IVec DO loops that calculate Matrix and TRH and converted it to subroutines (SpecMat and VMat). I moved the logic between the routines to be either before the loops or after. I then merged the two loops into one. v1.12d 14-May-2003 M. Buhl I converted the Temp array to a scalar and (in SpecMat) put the equations for Matrix inside the loops instead of creating a separate loop after the Temp array had been files. This sped the code up by about 12%. v1.20 03-Jun-2003 M. Buhl I rolled up all the alpha changes into this new version. I eliminated all alpha comments. v1.21 17-Oct-2003 B. Jonkman I added a third dimension to the variable ExCoDW to account for its dependance on frequency and modified the coherency calculations which were previously calculated incorrectly. ==========================================================================================================================++ TurbSim ==========================================================================================================================++ v1.00a 15-Mar-2004 B. Jonkman I made many major changes to the code: I removed the old Sandia FFT routines and replaced them with CXML ones. These new routines have been written with code specific to Compaq VF, so the code will not be quite as portable anymore. I added two more random number generators. The user now has a choice of the one that was in SNWind, the one from SNLWND-3D, or "RanLux," which has been pretty thoroughly tested in academia. I replaced the SysCVF.f90, ModCVF.f90 and GenUse.f90 with the new NWTC subroutines. I updated the rest of the code to reflect these changes and to make use of some new I/O subroutines. I added the SMOOTH model and three wind farm spectral models back into the code. I removed the restriction that the grid be an even number of points and removed the vector that stored the hub point (VHub). The hub point is now stored in the main velocity array with all of the other points. I removed the limitation that the grid be square and/or have the same vertical and horizontal spatial resolution. I changed the SpecMat() subroutine to compute the Cholesky factorizations more efficiently. This sped up the code about 30%. The new factorization algorithm allowed me to elimate some of the large matrices, such as ExCoDW, which significantly decreased the amount of memory required (on the order of 66-75% less, depending on which input options are set). I added the ability to generate Marshall's "lollipop" wind points, a rectangular grid with a line of points at the tower centerline going from the bottom of the grid to the ground. At this point, it generates ".twr" files, but AeroDyn cannot read them yet. I added more parameters in the input file for the new spectral models, new output types, new coherent turbulence parameters, and grid sizes. I added more checks on the validity of input values and removed variables that weren't necessary, and made some multi-dimensional arrays one-dimensional. I added maximum TKE and CTKE to the summary file as well as instantaneous values to the hub-height GenPro and formatted files. I added coherent turbulence calculations to the code. When the "smooth" model is used with a positive Richardson number, we have the ability to add coherent events to a background FF wind field. TurbSim generates a time step file with scaling values, which AeroDyn reads along with the background FF file. AeroDyn adds the two fields internally instead of us trying to store high-resolution grids (which, by the way, AeroDyn isn't currently capable of reading anyway) that take up a lot of space and would most likely slow AeroDyn down considerably. I added the ability to output fewer timesteps than are computed. We now use analysis time to determine the frequencies and to perform the FFT, but write out only the first usable output time steps. We've modified some of the coherence scaling and updated the input file so that values that shouldn't change for a given event dataset are not in the TurbSim input file. I updated the AeroDyn/Bladed format of the .wnd files. These new files have more precision than the old format, and they don't have the limit of 32 grid points that the previous format had either. v1.00b-bjj 9-September-2004 -- B. Jonkman I added the latest version of the NWTC subroutines to the code. This required me to change a couple of names in TurbSim. I modified the subroutine WriteEvents() so that the DNS files, which are 5 digits long can be displayed. Previously the program printed only 4 digits. I added a parameter that indicates whether we're using DNS or LES files (this added another line in the input file). v1.00c-bjj 28-Oct-2004 -- B. Jonkman I removed the normal distribution from the expected length and replaced it with a nearly-lognormal distribution, calculated from NWTC\LIST data. The previous distribution was creating many zero-length coherent turbulence files. Marshall decided that we should be able to use other extensions on the input file name, so I removed the assumption that all input files end in ".inp". I modified the output so that hub height files print out the requested output time, not the entire analysis time. v1.00d-bjj 19-Jan-2005 -- B. Jonkman I added another model, "NWTCUP", to better reflect the NWTC inflow conditions. This model uses the basic WF_UPW spectra, but uses different scaling for the cross-correlation coefficients and the corresponding correlation matrix. I also updated the calculated Z/L parameter for this NWTCUP model and modified the u* calculations so that the resulting spectra levels match the observed ones. The predicted CTKE for coherent structures was modified for runs with 0<=Ri<=0.05 with CTKE larger than 30 m^2/s^2. v1.00e-bjj 1-March-2005 -- B. Jonkman I modified the scaling for the IEC models so that they reflect the IEC 61400-1, Edition 3 standards. The Edition 2 scaling parameters can also be used when specified by "-ed2" (i.e. "a-ed2", "b-ed2", or "13.4-ed2") on the turbulence characteristic input line. I also moved the Roughness Length from the "Non-IEC Meteorological Boundary Conditions" section to the "Meteorological Boundary Conditions" section after I noticed that the value we've been using for the logarithmic vertical wind profile wasn't specified in the IEC standard. This will allow people to use other roughness lengths if they feel like it (of course it only makes a difference in IEC models if they use tower points or specify a reference wind speed at a height outside of the rotor disk). v1.00f-bjj 26-May-2005 -- B. Jonkman I added the /traceback option in the project settings, at Marshall's request, so that he can debug better. I've added "KHTest" as an option for the NWTCUP model (in the turbulence characteristic line). This option removes much of the randomization that normally occurs in the coherent structure scaling. It must read a file named "Events.xtm" which basically concatenates the most extreme LES events and scales them so that the Max CTKE is at least 30 m^2/s^2 and has 25 Hz bandwidth. One event that starts 25% of the way through the time series and lasts for at least half of the length of the time series will be superimposed on the background. It is scaled to the size of the rotor. v1.00g-bjj 5-July-2005 B. Jonkman I created a new format for TurbSim binary files. These files will have the maximum precision posible, given one slope/offset for each wind component. They will also eliminate the problem of having to read the summary file to figure out how to scale the binary file. All of the relevant info is stored in the binary file. v1.00h-bjj 15-Oct-2005 B. Jonkman I found a bug in calculating the default VW cross-correlation coefficients in 2 of the wind farm models (UPW & 14D). They were using the reference wind speed, not the hub wind speed like the other 2 ccc were. I traced this back to SNLWIND-3D so it's been there a while. I modified how the mean wind speed and TI of points surrounding the hub are calculated when the hub does not land on a grid point. I'm not convinced it was always using the correct points. I also found a small issue in the Richardson Number to Z/L calculation for the NWTCUP model so I fixed it. It was going a little bit outside the range of data we'd calculated. We've started adding Lamar LLJ data so I created the hooks for a GP_LLJ spectral model, and I'm adding the details as we analyze the Lamar data. I replaced the CXML FFT routines with some FFTPACK routines from www.netlib.org. I moved the PSF() function to a new FFT_module and Marshall is probably going to make that module part of the NWTC library. ('Cause Jason wants to use it and the FFT routines in FAST, too.) Replacing the CXML library allowed me to move the code to the new Intel compiler (IVF 9.0). The new compiler seems to run the IEC cases around 10% faster and the other spectral models about 25% faster. I then made some algorithm changes in calculating the v and w component IEC spectral matrices: Since I know the Cholesky factorization of Veer's H matrix on those components is just a diagonal matrix containing the square root of the spectral values, I can save some computations. That sped up the IEC cases by another 20-30%. I then replaced my Cholesky factorization with the LAPACK version from www.netlib.org. I don't have the optimized BLAS library (from MKL or ATLAS), but after compiling this new code, I achieved results about 40% faster on the smaller matrices (5x5 grid) and 70% faster on 13x13 grids. I also perform a Cholesky factorization on the coherence matrix and then multiply it on the left by the diagonal spectral matrix instead of multiplying the coherence matrix on both sides by the spectral matrix and then performing the Cholesky factorization. That saves one matrix multiply. Added up, TurbSim now runs at least 40-80% faster than it did before I moved to the IVF compiler. I fixed a formatting error in the summary file: If the number of points in the horizontal grid dimension was larger than 14, the standard deviations at each height were printed on two lines, in the wrong columns. I changed the calculation of the number of points to use the CEILING() function instead of NINT() at Jason's suggestion. Because of the way we add points to make the FFT faster, this will probably not effect any results. (It wouldn't be different except in some rare case where NINT(x = (UsableTime + GridWidth/UHub )/TimeStep) is already a multiple of 4 and a multiple of small prime numbers and NINT(x) /= CEILING(x), but you still probably wouldn't notice unless your turbine was completely yawed at the end of your simulation and the tip of the blade was between the last 2 grids in the x direction.) I noticed that the GenPro hh binary files were written with some parameters as 4-byte reals and others as 8-byte reals. This change happened when Marshall made the stats calculations double precision. I modified the code so that it writes all the values as 4-bytes (or whatever ReKi is). I made some changes to the IEC spectral models: (1) We'd been using local velocities for the spectral and coherence functions, but the standard says we should be using Vhub. (This was an error in SNLWIND-3D and SNwind, too.) (2) I also noticed that we were using a coherence decrement of 8.8 for Ed. 3 scaling, but that has been changed to 12 in the latest & final(?) draft. It now uses the value specified in the standard. (3) After some discussion with Neil, we also decided that we shouldn't be using the coherence-squared function in the IEC since coh() is specified. Hopefully, we've fixed all the problems with the IEC scaling now. **************************************************************************************************************************** v1.0 4-Nov-2005 B. Jonkman **************************************************************************************************************************** I rolled up all the alpha changes into this new version and eliminated the alpha comments. I added an abort statement if people try to use the GP_LLJ model since I don't have all the changes for that model made yet. **************************************************************************************************************************** v1.01 24-Jan-2006 B. Jonkman **************************************************************************************************************************** Nora Paoletti pointed out that our definition of the U-component TI was inconsistent so we changed it to be Usig/UTBar instead of Usig/UBar. I also fixed a bug in the way the mean flow angles were applied. They worked in some cases (like when the horizontal angle was zero), but the trigonometry was done incorrectly for the general case. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v1.02a 30-Nov-2005 B. Jonkman I added the cross-correlation-coefficients for the GP_LLJ model. v1.02b 26-Jan-2006 B. Jonkman I created the function GP_TURB() to calculate the target spectral shape for the GP_LLJ model, based on my analysis of 30-minute records of Lamar data. I added the relationship between the Businger-Dyer predicted diabatic u* and the measured u* for the GP_LLJ model. v1.02c 27-Jan-2006 B. Jonkman I updated the NWTC subroutine library to version 1.12. This required me to remove CheckArgs() and WrSyntax() from TSsubs.f90 and modify every place that called a module from the NWTC subroutine library. I also had to initialize the Pi constants at the beginning of TurbSim.f90. v1.02d 1-Feb-2006 B. Jonkman I started adding the direction, ustar, & z/l profiles that Neil calculated for the GP_LLJ model. v1.02e 1-Feb-2006 B. Jonkman I reinitialized the pRNG before getting all of the random phases so that when you input the same seed(s) for all of the spectral models (for a given RNG), you will now get the same random phases. (Even the models that do some randomization for the coherent structures or other scaling parameters at the beginning of the program). This won't change anything in the IEC models, but it will change other models that have more randomization. v1.02f 2-Feb-2006 B. Jonkman We've transformed the fluctuating velocity components along with the mean wind speed when the horizontal/vertical flow angles are non-zero. I updated the user's guide to indicate what these angles do, and not to use the horizontal angles when you're generating FF files for AeroDyn. (Large vertical flow angles should be avoided in AeroDyn, too.) v1.02g 3-Feb-2006 B. Jonkman I added the scaling for the ETM model for sigma as defined in the IEC 61400-1, Ed. 3 standard. I reworded a couple of things in the summary file so that they're (hopefully) a bit clearer. v1.02h/ v1.10a 17-Feb-2006 B. Jonkman I fixed an issue with the BTS file scaling when the turbulence model is "NONE" I added the wind speed & direction profiles that Neil calculated. I added inputs for wind profile type and jet height to the input file so I had to change this version number to 1.10a instead of 1.02h. I also moved the power law exponent to allow IEC users to change it for the "S" cases. I added default values for the jet height and wind speed. v1.10b/c B. Jonkman Feb-2006 -I eliminated most of the alpha comments from previous alpha versions. -I modified the getInput() subroutine so that it is easier to read. I've moved some of the code that used to be there into some new subroutines. -I added an input to allow IEC users to specify which standard they're using (ie. -1 or -2 or -3). -I allowed the -3 standard to work like the -1 standard except use a different default power law exponent. -I added different ustar & z/l profiles for the GP_LLJ when the wind profile is not "JET". **************************************************************************************************************************** v1.10 10-Apr-2006 B. Jonkman **************************************************************************************************************************** I removed the alpha comments from the alpha versions and updated the user's guide. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v1.11a-bjj 30-May-2006 B. Jonkman I modified the WrBinBladed() and WrBinTURBSIM() subroutines in TSsubs so that binary files are written more efficiently. v1.11b-bjj 14-Aug-2006 B. Jonkman Leandro Orsi noticed a problem with BLADED-style .wnd files when he used very low turbulence and then compared the FAST results with results from .hh files. The problem is a result of the scaling from 32-bit reals to 16-bit integers when the u-component turbulence intensity is low and gets worse with higher shears. I've modified the TI(u) that used in the "Normalizing Parameters for Binary Data" section so that, while it is NOT the actual TI, it is the value used to scale the data. I also noticed that the TI from the four points surrounding the hub is calculated very strangely. It really needs to be the TI of the interpolated hub point, not the TI of a time series made up of concatenating the 4 points around the hub. I added a bilinear interpolation scheme to come up with a representative hub time series. v1.11c-bjj 22-Aug-2006 B. Jonkman After looking through the documentation of the GP_LLJ model, Neil decided we should modify the z/L calculation. We recalculated the relationship between Ri and z/L for both the GP_LLJ and NWTCUP models. I noticed that the wind farm downwind models were producing strange target spectra for cases where z/L was 0.5 or more. After looking into it, we determined that the emperical scaling was being extrapolated far beyond the observed values. I set some limits on the scaling and it seems to behave much better now. The upwind wind farm model (and thus the NWTC model) is limited to -1.0 <= Z/L <= 0.15, and the downwind wind farm models are limited to -1.0 <= Z/L <= 0.4. I also fixed a small error in calculating the spectral scaling for the stable v component in the GP_LLJ model. v1.20a-bjj 10-Oct-2006 B. Jonkman We decided that we should come up with spectral scaling for the NWTCUP model so it reflects the conditions at the NWTC, not the wind farm upwind model. We calculated scaling in the same way the Lamar GP_LLJ scaling is calculated. We have changed the SMOOTH model so that it uses the same coherent structure scaling as the Great Plains model (GP_LLJ) instead of the scaling that was developed for the NWTC. The NWTCUP and wind farm models still use the coherent structure scaling that was developed at the NWTC. **************************************************************************************************************************** v1.20 20-Oct-2006 B. Jonkman **************************************************************************************************************************** I removed the alpha version comments and updated the user's guide and overview. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v1.21a-bjj 1-Nov-2006 B. Jonkman I fixed a small scaling issue with the low-frequency peaks on the unstable side of the NWTCUP spectra. v1.21b-bjj 22-Jan-2007 B. Jonkman We changed the coherent structure scaling for the wind farm models after analyzing the archived data collected from the San Gorgonio wind farm experiments in the 1990s. At Marshall's request, I modified error messages to include the amount of memory that fails to be allocated when grids that are too large for the amount of memory available are being used. Marshall also found an error in writing the binary .bts files when using non-square grids so I fixed it. **************************************************************************************************************************** v1.21 01-Feb-2007 B. Jonkman **************************************************************************************************************************** I added the Gradient Richardson Number information for the IEC models in the summary file (just so people know it's zero). I removed the alpha version comments and updated the user's guide and overview. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v1.22a 16-Mar-2007 B. Jonkman Although the code was using the 0.11 power law exponent as specified for the IEC extreme wind models, the summary file did not indicate that the input value was being overwritten for these cases. The summary file now shows the actual power law exponent that is being used. v1.30a 27-Oct-2007 B. Jonkman I added a modified version of the IEC Von Karman model, which allows for the length scale and standard deviation to vary with height. I also added a user-defined wind profile which, along with user-defined wind direction profiles and the user-specified von Karman model parameters (standard deviation and length scale) is read in the subroutine GetUSR(). I fixed an issue with the GP_LLJ model when the z/l profile contained a negative value even though the turbine layer Richardson Number was positive (this occurred at low heights with certain combinations of Richardson Number and wind speed) The default power law exponent in the NWTCUP was using the IEC specifications instead of the values from the Wind Farm Upwind model as advertised. I fixed that. The NWTCUP model occasionally allowed a negative u-star value as input. I fixed that. v1.30b-bjj 29-Nov-2007 B. Jonkman I added an input for the ETM "c" parameter in the summary file. This value is variable, per section 7.4.1 of the IEC 61400-1 Ed 3 standard. I added an input true/false switch to determine if IEC turbulence models should be scaled to get exactly the specified standard deviation. If this switch is set and one of the IEC turbulence models is chosen (IECKAI or IECVKM), the standard deviations of hub-height turbulence components are calculated. The time series are then multiplied by the target divided by the actual standard deviation. The longitudinal, lateral, and vertical hub-height stats were calculated after the rotation to the inertial frame. Since these wind components are defined as aligned with the flow, I now calculate these stats before rotating them. I added the stats for the U,V,W in the X, Y, and Z directions; these are the stats from the rotation to the inertial frame. I also changed some of the nomenclature in the summary file to indicate which reference frame is being used. I've recalculated the TI to be the standard deviation divided by the mean longitudinal wind speed for the longitudinal, lateral, and vertical components (this is the way it was done before v1.01 for the u-component, but not the v or w components). I made this change to get better agreement between the calculated TI and the numbers specified in the IEC standard. v1.30c-bjj 18-Jan-2008 I updated the NWTC subroutines to v1.01.09. I changed all the Abort() subroutines to ProgAbort() and all the Warn() to ProgWarn() to coincide with changes in the NWTC subroutine library. I changed the RandSeed array to be of default integer kind, not 32-bits. This removed possible incompatabilities with the subroutines that used default integers. **************************************************************************************************************************** v1.30 04-Apr-2008 B. Jonkman **************************************************************************************************************************** I removed the alpha version comments and updated the user's guide. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v1.31a-bjj 04-Jul-2008 B. Jonkman I modified the RndJetHeight() function so that the Pearson IV deviate is produced in a separate subroutine, RndPearsonIV(), which just passes the parameters of the equation. This allowed me to use the same Pearson IV function for calculating the length of coh structures that Neil derived for Seawest. I updated the coherent structure scaling for all three wind farm models in RndTcoh_WF() and CalcEvents(). I created Rnd4ParmLogNorm() and removed RndTcoh_WFTA(). I updated the coherence function for the NWTCUP, GP_LLJ, and all three wind farm models The (u|v|w)-component "coherence decrement" lines have been changed to "coherence parameters" to reflect that both parameters of the coherence function are input on that line. The first parameter is the coherence decrement and the second is an offset of sorts (see the user's guide documentation for details) I added the subroutine GetDefaultCoh() to calculate the default parameters for the coherence. I removed the non-standard compiler directives and replaced the !MSif defined() statements with logical values. I had to add some blank subroutine & function definitions for the modified von karman model definitions, which we don't distribute. v1.31b-bjj 25-Jul-2008 B. Jonkman I modified the cross-correlation matrix for the NWTCUP and GP_LLJ models so that the resulting wind speeds have the cross correlations desired. Then we decided to replace the cross-correlation inputs with Reynolds stresses, since that's what Neil was trying to match with the cross-correlation matrix in the first place. I added GetDefaultRS() to calculate these default Reynolds stresses. I modified the summary file, removing some duplicate data and reorganizing the hub-point stats. I updated the default power-law exponent for the wind farm models (and hence the NWTCUP model) so that there is no longer a discontinuity in those functions. I fixed a bug in the default jet wind speed calculation (it could be negative in rare cases). I modified the equations for calculating the default u* value for all the models, fixing the transitions between functions so the discontinuity is less awkward. We updated the coherent structure calculations for the WF models since CTKE was calculated using filtered (measured) data on the original analysis. The new calculations reflect the newer analysis. I modified the HH Binary files so they output UXtmp, UYtmp, and UZtmp instead of UTmp, VTmp and WTmp twice. This change makes it identical to the formatted HH files as the user's guide indicates. **************************************************************************************************************************** v1.40 12-Sep-2008 B. Jonkman **************************************************************************************************************************** I removed the alpha comments and updated the user's guide. I added a 64-bit compiled version of TurbSim to the archive. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v1.41a-bjj 06-Oct-2008 B. Jonkman I closed the hub-height files which we opened but didn't close. Leaving them open shouldn't be a problem for most applications, but it's better to close them explicitly. I also moved some of the code in the main program to subroutines in TSsubs.f90 (e.g., the code for writing formatted FF files) and moved some variables from the main module to the subroutines where they were used. I added the mean std of the grid points for each wind component in the summary file. This change was requested by Dirk Stuedel. I modified the default surface roughness for the NWTCUP model to 0.021 m (instead of using 0.018 m from the WF_UPW model). This is based on Neil's new analysis of NWTC/LIST data. v1.41b-bjj 06-Oct-2008 B. Jonkman I changed the NWTCUP model to not override input u* values that are less than the diabatic values. I don't like increasing the value that users input, and I believe that this "feature" was introduced to make up for the spectra not matching when we used the WF_UPW model as its basis. I added new analysis for calculating ustar (u*D) for the NWTCUP model (it previously used a random distribution) and for the GP_LLJ model (it previously had 4 different relationships, based on coherent structure presence and stability). I changed the limits of the random residual for the NWTCUP model's u'v' default values so that they do not vary as much. I now limit zL so that it is no larger than +1. Previously, this limit was 12.7 for NWTCUP and 5.6 for GP_LLJ. There are zL limits of +/-1 in several places so this will hopefully unify the values that are being used in different subroutines. I fixed the way the random sign for the default u'w' reynolds stress is calculated. It is now a function of the magnitude of the stress, not just purely uniform. v1.41c-bjj 20-Jan-2009 B. Jonkman I found a bug that prevented using input values for the mean u'v' and v'w' Reynolds stresses with the SMOOTH model. I fixed it. I updated the local u* profile of the GP_LLJ model so that it better reflects the relationship between the input u* (rotor-disk average value) and the local u* values. The input for disk-averaged u* is now calculated as the average of three values from the profile: at the top of the rotor, hub height, and at the bottom of the rotor disk. The magnitude of the hub-height u'w' value is also tied to the profile. I also changed the algorithm for calculating the GP_LLJ profile z/L. The profile now is offset so that the mean of the three values (rotor bottom, hub height, rotor top) is equal to the disk-averaged z/L calculated with the input Richardson number. I changed the calculation of the value for the disk-averaged M-O length parameter, L. Using hub height instead of the mean turbine height (used previously) makes more sense: the z/L parameter used to estimate L is the rotor-disk average value; z = HubHeight is the rotor-disk average height. I changed all of the ProgAbort() calls in TurbSim.f90 and TSsubs.f90 to TS_Abort(), a new subroutine created to write the error message to a summary file before aborting. It doesn't write the errors generated in NWTC_Library subroutines though. v1.41d-bjj 20-Feb-2009 B. Jonkman I modified the default ustar-D calculation for the GP_LLJ model. I've returned it to the 1.41b-bjj model, and now modify the ustar profile to account for the default ustar-D value. v1.41e-bjj 20-May-2009 B. Jonkman I moved the ZL_profile and Ustar_profile deallocations. They are only used for the PSD calculations so they don't need to be kept for the entire simulation. I added the readBLgrid.m function to the TurbSim archive. v1.41f-bjj 8-Jun-2009 B. Jonkman I updated the peak CTKE calculation for the GP_LLJ model. It now is a function of RICH_NO, ustar, and height; previously it was just a random number. v1.41g-bjj 10-Jun-2009 B. Jonkman I merged the CohMat(), SpecMat(), and VMat() subroutines into a new subroutine called CohSpecVMat(). This allowed me to get rid of the Matrix(:,:) array, which was limiting the sizes of the grids we could generate. Much larger grids can now be generated! v1.41h-bjj-lanl 11-Jun-2009 B. Jonkman I removed the comments from the code. I added a compareCTSfiles.m script for the CertTest to display changes in the cts files and updated the archive. v1.50a-bjj-vdt 08-Jul-2009 B. Jonkman I added a user-defined spectrum, read from a text file named "UsrSpec.inp". This should be modified at some point to allow the file name and location to vary. It uses spectral model 'USRINP', which at this point is undocumented. v1.50b-bjj 22-Jul-2009 B. Jonkman I fixed the coherent structure time scale so that it is dependent on the velocity scale. I modified the ScaleIEC parameter so that it gives the option to scale each point individually. This additional scaling was requested by Dirk Stuedel. **************************************************************************************************************************** v1.50 25-Sep-2009 B. Jonkman **************************************************************************************************************************** I removed the alpha comments and updated the user's guide. The new user's guide has been expanded to include many figures, tables, and equations. Besides the additional theory in the user's guide, I added a quick-start guide in an appendix for those who are less interested in the details (at Marshall Buhl's request). ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v1.51a-bjj 25-Oct-2009 B. Jonkman I noticed two bugs that have existed for a while and fixed them both: (1) If you asked for .bts, .wnd and .twr files all at the same time, the .wnd file would not get generated; (2) the direction in the .hh files was measured counter-clockwise from above (the right-hand rule; 0 along positive X), but AeroDyn expects wind direction measured clockwise from above (0 along positive X [left-hand rule?]). v1.05.01b-bjj 24-Jan-2012 B. Jonkman I modified the intrinsic random number generator so that it should be able to run with gfortran (which assumes 8 or 12 seeds instead of just 2). v1.05.01c-bjj 24-Feb-2012 B. Jonkman I updated the format strings in a couple of subroutines. They contained extra commas, which newer compilers don't like. I replaced READ(UI,'') statements with calls to ReadCom() in the NWTC Subroutine Library to avoid ungraceful crashing when the input file is too small. v1.06.00 21-Sep-2012 L. Kilcher Added the "TIDAL" spectral model to the code. Added a "H2L" mean profile type, which should always and only be used with the "TIDAL" spectral model (otherwise, throws error). Added test case for the TIDAL spectral model. Added "TurbSim_Tidal.inp" input file as an example input file for the TIDAL spectral model. Updated documentation to include this spectral model and mean profile type. Updated all .inp files in repository: version number, added "TIDAL" to spectral models list, added "H2L" to WindProfileType list.