
Due: 11:55PM, Monday, December 19, 2022 (Week 10)
Late submissions: A 10% penalty (-1 mark) per day, or part thereof, will be applied. No submissions will be accepted once the penalty has reached 50%.
LEARNING OUTCOMES
- Demonstrate understanding of commonly used numerical methods for solving engineering problems
- Demonstrate ability to appropriately apply numerical methods to engineering problems with the understanding of some of the limitations of such methods.
- Develop structured problem solving techniques and demonstrate the knowledge of programming concepts and the ability to write simple programs.
PLAGIARISM & COLLUSION
This assignment is to be completed INDIVIDUALLY. Students are advised to review Monash College’s policies on academic integrity, plagiarism and collusion. Plagiarism occurs when you try to use ideas or content that are not yours without proper acknowledgment. Collusion occurs when you work with others to complete an assessment in a way that was not authorised by teachers. All assignments will be checked using the Measure of Software Similarity (MOSS) plagiarism and collusion detection software. Files with high similarity are flagged and reviewed. If suspected misconduct, the case will be reported to the relevant Head of Studies (or equivalent) and the student’s unit total will be withheld until the case has been reviewed and a decision has been finalised. To avoid this:
- Do not share or ask for code from others.
- You may discuss ideas with your peers, but any solution method or code must be your own.
- Any material adapted from other sources (e.g., online, lectures, textbooks, etc) must be referenced clearly with comments in the relevant part of your code.
ASSIGNMENT GUIDELINES
To start the assignment, download and extract the template on Moodle having both data-files and m- files. You will write your code inside the m-files that are named according to the question you are answering (e.g., Q1.m, Q2.m, etc.).
- DO NOT rename the template m-files or change run_all.m.
- DO NOT use close all, clear all or clc inside any m-files. The question files are called in order and will use workspace variables from earlier questions. Your teacher will also need to examine any outputs and variables after calling run_all.m.
- You can check your solutions by running the run_all.m script and see if your code has successfully answered your attempted assignment questions.
- This assignment assesses your ability to apply concepts taught in MCD4140. Therefore, do not use any toolboxes or functions that are not taught in MCD4140, unless otherwise specified.
SUBMITTING YOUR ASSIGNMENT
Your assignment is to be uploaded through Moodle as a single zip‐archive (.zip) (no other formats
such as, ‘.rar’, ‘.tar’, ‘.7z’, etc. will be accepted). Your submission must have the following:
- The m‐files having your answers to each assignment task (even if no attempt was made). (e.g.,
Q1a.m, Q1b.m, etc)
- The run_all.m script and any extra function‐files your code needs to run correctly (e.g.,
euler.m, falseposition.m, etc.)
- All data files needed to run the code including the data provided to you in the template
(e.g., population.csv, etc.)
- A completed and signed coversheet.
MARKING PROCESS
Your zip file will be downloaded from Moodle and only these files will be marked. It is your responsibility to check before submitting that all files are included in your submission so that can run correctly. During the practical session in Week 12 you will be interviewed by your tutor, where they will ask questions about your code and to assess your understanding. If you do not attend the interview session you will be given score of 0 for this assignment.
Important:
If you have used an online version of MATLAB, or a non-Windows operating system, it is your responsibility to ensure that your submission can be run on a Windows-based system correctly. If you cannot obtain access to a Windows system due to extenuating circumstances, it is your responsibility to contact the unit leader as soon as possible, and before the assignment submission date.
MARKING SCHEME
This assignment is worth 10% of the unit mark. Your assignment will be graded using the following criteria:
- run_all.m produces results automatically without needing intervention.
- Your code produces correct results (printed values, plots, etc…) and is well written.
- Poor programming practice will result in a loss of up to 2 marks out of 10.
- Your ability to answer questions that test your understanding of the assignment questions and the given code.
ASSIGNMENT HELP
- You may reuse the function files that you have written in class and developed in lectures.
- You should look to clarify anything you are unsure off in the questions by attending consultation sessions, asking questions on the Moodle forum, and with teaching staff directly.
- The m-file templates have comments and sections as a guide only. You can remove any comments and use alternative solution methods that best suit your needs.
- Read the questions carefully and look out for any tips to help you with each task.
- Spend time planning your approach to each question before your start to code.
- Break-down each question into smaller tasks which are more manageable, then focus on solving them one-by-one, and then afterwards combine them into the full solution.
- Add code in small parts and check the output often. This will aid you to find errors in your code more easily and solve them more quickly.
- Keep a close eye on the workspace variables!
- Do they make sense in terms of the problem?
- Are they the correct size and type?
- Are you missing any data?
Spending a little bit of time to think about the question and how you will develop a solution, will drastically improve the overall time needed!
HARVESTING THE WIND [118 MARKS]
BACKGROUND
A wind farm is a group of wind turbines grouped in the same found which are used to produce electricity. Wind turbines convert the kinetic energy of wind into mechanical energy to generate electricity. Modern wind farms may have capacities in the order of 102 Megawatts (MW) and are installed offshore as well as on land. When wind flows over propeller- like blades, they experience a lift force (e.g., like that on an aeroplane wing), which spins a rotator, and drive a generator to produce electricity (Letcher, 2017).
For wind turbines to work effectively over their lifespan, they naturally need access to favourable atmospheric conditions with suitable wind speeds. To develop a clear picture of these dynamics at a given location, attainment of correct data and the capability to rigorously analyse it are essential. Only when these are in hand are the overall success and economic viability of a wind farm be ensured (Cleveland & Morris, 2009).
ASSIGNMENT OBJECTIVES
In this assignment you will be investigating wind farm location viability and the performance of three Australian wind farms located in Ararat, Silverton, and Boco Rock that employ GE turbines for power generation. The assignment aims are structured into two parts:
Part 1 – Data Processing: You will clean and interpret satellite recordings of on-shore wind speed data for analysis in later parts of the assignment.
Part 2 – Performance Analysis: Calculate power estimates and use this to assess the operational performance capacity of the turbines using the data prepared in Part 1.
There are three broad key skill sets that you have been learning this trimester and that are needed to complete each question. These can be broadly categorised under MATLAB Programming, Critical Analysis, and Visual Communication of Data. Each question has been marked with icons corresponding to each category to help you to recognise the skills you will need to draw upon to complete it.
MATLAB Programming Critical Analysis Visual Data Communication
PART 1 – DATA PROCESSING 68 MARKS
To complete the tasks in Part 1, you will need the wind data recorded at the Ararat, Silverton and Boco Rock wind farms that have been provided to you in the files named ararat.txt, silverton.txt, and boco_rock.txt, respectively. The wind data files hold onshore wind speed measurements taken 100m above ground level by satellites at regular 10-minute intervals over a year starting at 12:00pm on the 21st of March 2020 (i.e., 21/03/2020) and ending at 11:50am on the same date in 2021 (i.e., 21/03/2021). The first column in each file is a 10-digit timestamp formatted as YYYYDDMMhhmm such that,
- YYYY is the Year as a four-digit sequence – e.g., 2009 in 15/11/2009
- DD is the Day of week as a number (1 = Monday, 7 = Sunday) e.g., 06 in 06/12/2019
- MM is the Month as a number with a leading zero e.g., 07 in 15/07/2022
- hh is the Hour of day using a 24-hour format with a leading zero in e.g., 03 in 03:15
- mm are the Minutes of the hour with a leading zero e.g., 15 in 03:15
For example, on the 21/03/2020 at 14:25 using the format YYYYDDMMhhmm is written as 202021031425.
The second column is the wind speed in metres-per-second (m/s) recorded at the time and date given in the first column.
Q1a – (5 marks)
Import the three files for the raw wind speed data at each wind farm site and store the timestamps in as a column vector in one variable, and the wind speeds for each location as columns in a 2D matrix in a second variable.
Note: At each location, the measurements occur at identical times and therefore you will only need to store the timestamps once, not for each location. |
Q1b – (8 marks)
Review the timestamp format specifier information in the introduction to Part 1, and extract the year, day, month, hour and the minute from the timestamps imported in Q1a, and then store them as separate columns in a new five column matrix. Concatenate the wind speed data imported in Q1a onto the end of the time and date matrix you have just created. The concatenated matrix should have eight columns by the end of these operations.
You can use the num2str() and str2num() functions to aid in addressing individual digits from the timestamp and afterwards change them back to a numerical datatype. |
The first three rows of the concatenated matrix are given here:
Q1c – (8 marks)
Plot the wind speed over time for each location in a separate subplot using a 3-by-1 arrangement following line specifications,
Ararat: Blue circle markers of size two. Silverton: Green Asterix markers of size two.
Boco Rock: Magenta plus sign markers of size two.
Use the extracted time and date values from Q1b to create human-readable values for your x-axis.
You can check your progress against the subplot given below for one location.
Q1d – (8 marks)
Describe any notable characteristics that stands out in these plots in terms of measurement accuracy and/or potential issues affecting future analysis. Briefly comment on any observed trends or lack of trends you can see in the data and supply a potential explanation for the observed behaviour (can you see any patterns when comparing the measurement time and the wind speed?).
Use fprintf to output your answers to the command window.
Q1e – (10 Marks)
It turns out there are some unrealistic measurements and outliers that need to be removed. These correspond to wind speeds less than zero, or where the absolute difference between the hourly average and the wind speed is greater than 80%.
Extract the valid wind speed and recording date and time for each wind farm and store in three separate 2D matrices. Use fprintf() to output the total number of points that have been removed for each wind farm location.
Since time recordings are every 10 minutes, 6 consecutive data points corresponds to an hour. When determining outliers, check the first six data points independently to the hourly average, and move onto the next six data points and compare to the second hourly average. Repeat these steps until you have covered the whole years’ worth of measurements. |
Q1f – (6 Marks)
The wind speed data were collected at a height, ℎ0, of 100 m; not at the height of the turbine hub of 80
m. It would be too time-consuming and expensive to re-collect the data at the hub height, and even more so if future upgrades were to lead to a change in the turbine hub height. Fortunately, we can estimate the wind speed 𝑊ℎ at a height ℎ above the ground based on an initial wind speed 𝑊0 at initial height ℎ0 is given by the model
ℎ 𝛼
ℎ |
𝑊ℎ = 𝑊0 ( )
0
𝐸𝑞. 1,
where 𝛼 is a surface roughness parameter dependent on the landscape topology of fixed elements such as trees, hills, and buildings. Typical ranges for 𝛼 are described in Table 1.
𝑎 Terrain Features
10-4 – 10-3 Minimal impact e.g., open water, smooth snow fields, barren terrains. 10-3 – 10-2 Featureless terrain e.g., deserts, flat grass plains, glaciers.
10-2 – 0.1 Flat terrain e.g., grass fields, airport runways.
0.1 – 0.5 Elements separated by large distances, e.g., scattered shelters, low-rising crops.
0.5 – 1.0 Landscape with moderate occurrences e.g., vegetation, bushes, new dense forests.
1.0 – 2.0 Larger elements uniformly distributed, e.g., mature forest, low-rise built-up areas.
> 2.0 Irregular distribution of large elements, e.g., city centres, forests with clearings.
Table 1 – Typical surface roughness parameter ranges.
As we do not know what the surface roughness parameter is, we can use historical records of average yearly wind speeds to find out. These are supplied in the Table 2 below and contained in the file avg_wind_data.txt.
Height (m) | Ararat | Silverton | Boco Rock |
25 | 3.70 | 1.93 | 0.47 |
33 | 3.84 | 2.27 | 0.66 |
55 | 4.13 | 3.05 | 1.23 |
65 | 4.22 | 3.36 | 1.52 |
73 | 4.29 | 3.6 | 1.75 |
91 | 4.43 | 4.09 | 2.30 |
100 | 4.49 | 4.32 | 2.58 |
110 | 4.55 | 4.57 | 2.91 |
122 | 4.61 | 4.85 | 3.3 |
131 | 4.66 | 5.06 | 3.61 |
Table 2 – Wind farm yearly wind averages at different heights
Transfer this data into MATLAB and store the height and average wind speed for the three locations in a single 2D matrix. Use a new figure window to plot the average wind speed for each location against the height above ground. Use the same plot for all sets of data, and format using the following specifications:
Ararat: Blue solid line of width one; Blue circle markers of size five. Silverton: Green dashed line of width one; Green Asterix markers of size 9.
Boco Rock: Magenta dashed-dotted line of width one; Magenta plus sign markers of size 8.
Q1g – (13 Marks)
Based on the form of Eq.1, fit a suitable model to the average wind speed data using linear
to find an estimate for 𝛼 at the three wind farm locations. Output these estimates accurate to two decimal places along with the coefficient of determination 𝑟2 accurate to six decimal places for each location to the command window using fprintf().
Comment on how well you believe the model in Eq.1 fits the yearly wind averages as a function of height. In addition, discuss any limitations to this model for approximating the real-world change in wind speed as a function of height. Based on the information in the Table 1, name the possible category of landscape features that your values of 𝛼 suggests for the three wind farm sites. Print your answers to the command window using fprintf().
Q1h – (10 Marks)
Create an anonymous function that takes both the initial wind speed 𝑊0 and surface roughness 𝛼 as inputs and use this to update the cleaned wind speeds from Q1e from initial height ℎ0 = 100𝑚, to the correct height of ℎ = 80𝑚. Do not create a new variable for the corrected values, you should update the existing ones.
In a new figure, plot the corrected wind speeds on a 3-by-1 subplot with the same format as specified in Q1c.
PART 2 – PERFORMANCE ANALYSIS 50 MARKS
Note: If you were unable to complete any or all questions in Part 1, you can try the questions in Part B using the raw satellite data instead. |
Now that the raw satellite data has been assessed and cleaned, you can move on with a performance analysis of each site with confidence over the accuracy of the results. The wind turbines situated at each location are the General Electric (GE) 1.5MW three-blade onshore series (GE 1.5 MW Series Datasheet, 2022) as shown in Figure 2. It has a rotor diameter of 70.5 metres (m) and a hub height of 80m – refer to Figure 3 for a depiction of these lengths.
Figure 3 – Wind turbine diagram |
ure 2 – GE 1.5MW series turbine
Q2a – (8 Marks)
The effectiveness of a wind turbine is characterised by the performance coefficient 𝐶𝑝 that is a function of wind speed 𝑊. The file turbine_data.txt contains measurements of GE 1.5MW series operating performance as the wind speed rate of change of performance coefficient 𝑑𝐶𝑃 /𝑑𝑊 in m.s-1, with the wind speeds in m/s found in the second column.
Create a function that is capable of using Euler’s method with unevenly spaced data as vector inputs and use it to find the performance coefficient at the wind speeds given in the file – noting that initially no power is generated at the lowest wind speed so 𝐶𝑃(𝑊0) = 0.
Over the range of wind speeds given in the file, plot the performance coefficient against the corresponding wind speeds as red squares.
Q2b – (8 Marks)
When there is too little wind speed, not enough wind energy is present for the turbines to start or generate power – this is called the cut-in speed 𝑊𝐶 . On the other hand, the furling speed, 𝑊𝑓 , occurs when the wind is too high, and the blades actively start to furl (rotate) to prevent any damage. The range of wind speed immediately before 𝑊𝑓 is when the turbines operate at a constant optimal power and where the performance coefficient is maximum.
By inspection or any other suitable method, find the furling speed 𝑊𝑓 using the 𝐶𝑃 estimates from Euler’s
method in Q2a.
Fit a fourth order polynomial to the 𝐶𝑃 estimates from Q2a and apply an appropriate root finding method to find the cut-in speed 𝑊𝐶 . Output both 𝑊𝐶 and 𝑊𝑓 to the command window using fprintf(). Using the same figure from Q2a, plot on the same graph the fitted polynomial with a resolution of 0.5 m/s in the file as a black dotted line.
For determining the furling speed, you may need to think about how the data can be translated into a suitable form before you apply a root finding method. Remember that the furling speed is the point just before power starts to decline as the blades furl to prevent damage. |
Q2c – (5 Marks)
Create a function CpFunc() that takes a vector of wind speeds 𝑊, a scalar cut-in speed 𝑊𝐶 and scalar furling speed 𝑊𝑓 and the function handle for the polynomial determined in Q2b as inputs, and outputs a vector Cp containing performance coefficients for the GE turbine based on the valid operational bounds
𝑊𝑐 ≤ 𝑊 ≤ 𝑊𝑓.
In other words, when the wind speed satisfies the inequality 𝑊𝑐 ≤ 𝑊 ≤ 𝑊𝑓, the function should return the value given by the polynomial determined in Q2b. Otherwise, the function should return 0 for the corresponding element in the array.
Q2d – (12 Marks)
The power extracted from the wind by the turbine, 𝑃, dependent on the power available in the wind stream 𝑃𝑠 (Letcher, 2017). For a turbine that sweeps out an area 𝑆 (see Figure 3) wind speed 𝑊 the turbine power can be modelled by
𝑃 = 𝑆𝐶𝑝𝑃𝑠, 𝐸𝑞. 2
where the wind stream power available is defined as,
𝑃𝑠 =
1
𝜌𝑊3. 𝐸𝑞. 3
2
where 𝜌 is the air density. You may use the standard atmospheric air density value of 1.225 kg/m3 in your calculations.
Using your function CpFunc() and the polynomial you fitted for 𝐶𝑃 in Q2b, estimate the power extracted by a GE turbine for the cleaned wind speed data found in Part A based on Eq.2.
Separate the estimates for each calendar month into new columns of a new 2D matrix. You should have three new 2D matrices, each having 13 columns (not 12 because recording starts on the 21st of March) for each calendar month afterwards.
Besides accounting for the different number of days in each month, you will have to take into account the fact that you have cleaned your data and depending on the invalid data removed, each day may not have the same number of recordings. |
Q2e – (11 Marks)
Using a composite trapezoidal method with unequal segments, calculate the total power for each month by integrating wind turbine power extraction estimates from Q2d.
In a new figure, on the same graph, plot the turbine power extraction calculations for each location against the month of the year since recording. Use the same format as specified in Q1f.
Print your monthly power calculations as in exponential format accurate to 3 decimal places in a table using fprintf() for each location, with the month (as a number) in the first column. The first two rows should be as follows:
Q2f – (6 Marks)
Using fprintf() to print your answer to the command window, comment on any conclusions you can draw about the performance of each wind farm e.g., seasonal variation, consistency of power delivery and what site you recommend based on performance and viability.
REFERENCES
Cleveland, C. J., & Morris, C. G. (2009). Dictionary of Energy: Expanded Edition. Oxford: Elsevier Science & Technology.
Letcher, T. M. (2017). Wind Energy Engineering: A Handbook for Onshore and Offshore Wind Turbines. San Diego: Elsevier Science & Technology.

Get expert help for MCD4140 ASSIGNMENT and many more. 24X7 help, plag-free solution. Order online now!