ENG1060 Assignment Page 1 of 8 ENG1060 ASSIGNMENT – S1 2017 Due: 11:00PM (Sharp), Friday 19th May 2017 (week 11) This assignment should be completed INDIVIDUALLY. Plagiarism will result in a mark of zero. Plagiarism includes letting others copy your work and using code without citing the source. Collaborating with others to discuss algorithms and details of MATLAB syntax and structures is acceptable (indeed encouraged), however you MUST write your own MATLAB code. All assignments will be checked using plagiarism-detecting software and similarities in submitted code will result in a human making a decision on whether the similarity constitutes plagiarism. INSTRUCTIONS Download template.zip from Moodle and update the M-Files named Q1a.m, Q1b.m etc with your assignment code. DO NOT rename the M-Files in the template or modify run_all.m. Check your solutions to Q1 and Q2 by running run_all.m and ensuring all questions are answered as required. SUBMITTING YOUR ASSIGNMENT Submit your assignment online using Moodle. You must include the following attachments: 1) A ZIP file (NOT .rar or any other format) named after your student ID containing the following: a. Solution m-Files for assignment tasks named: run_all, Q1a.m, Q1b.m etc… b. Any additional function files required by your m-Files (PowerFit.m function etc.) c. All data files needed to run the code, including the input data provided to you Follow “ENG1060 Assignment ZIP file instructions.pdf” to prepare your zip file for submission. Your assignment will be marked in your usual computer lab session during Week 12. YOU MUST BE IN ATTENDANCE TO HAVE IT MARKED. IF YOU DO NOT ATTEND YOUR MARK WILL BE ZERO. We will extract (unzip) your ZIP file and mark you based on the output of run_all.m. It is your responsibility to ensure that everything needed to run your solution is included in your ZIP file (including data files). It is also your responsibility to ensure that everything runs seamlessly on the (Windows-based) lab computers in the computer labs (especially if you have used MATLAB on a Mac OS or Linux system). ENG1060 Assignment Page 2 of 8 MARKING SCHEME This assignment is worth 10% (1 Mark == 1%). Code will be graded using the following criteria: 1) run_all.m produces results automatically (no additional user interaction needed except where asked explicitly) 2) Your code produces correct results (printed values, plots, etc…) and is well written. ASSIGNMENT HELP 1) You can ask questions in the Discussion Board on Moodle 2) Hints and additional instructions are provided as comments in the assignment template M-Files 3) Hints may also be provided during lectures 4) The questions have been split into sub-questions. It is important to understand how each sub- question contributes to the whole, but each sub-question is effectively a stand-alone task that does part of the problem. Each can be tackled individually. 5) I recommend you break down each sub-question into smaller parts too, and figure out what needs to be done step-by-step. Then you can begin to put things together again to complete the whole. 6) To make it clear what must be provided as part of the solution, I have used bold italics and a statement that (usually) starts with a verb (e.g. Write a function ..., Print the value..., etc.) Question 1 starts on the next page. ENG1060 Assignment Page 3 of 8 QUESTION 1 [10 MARKS] Background Oceans experience differential heating from the equator to the poles. This type of heating can be considered as horizontal convection whereby a single boundary has varying temperature. Horizontal convection causes the flow to shift from cold to the hot regions, generating a recirculation. Researchers wish to study the dynamics of the ocean by understanding the fundamentals of horizontal convection. Since it is not possible to conduct experiments at the scale of oceans, researchers instead replicate horizontal convection behaviours at smaller scales, often in a rectangular enclosure. An example apparatus is illustrated in figure 1. Figure 1: Example apparatus reproducing horizontal convection where the bottom boundary has cold and hot forcing. The contours are of temperature where blue and red represent low and high temperature values, respectively. Several non-dimensional parameters are introduced to govern and quantify the experiments. These parameters are listed below: • Aspect ratio, A, which provides the ratio between the height to length of the enclosure • Rayleigh number, Ra, which provides the ratio between buoyancy and viscous forces • Nusselt number, Nu, which provides the ratio between convective and conductive heat transfer Thus, a large Rayleigh number represents a large temperature difference that is imposed along the bottom boundary of the apparatus and a large measured Nusselt number represents strong convection induced by the flow. A researcher often conducts several experiments at various Rayleigh numbers and measures the corresponding Nusselt numbers in the flow. The number of experiments conducted is not fixed and varies depending on what the researcher is after. For example, the researcher may run experiments for 10 different Rayleigh numbers on Tuesday but then run it for 30 different Rayleigh numbers on Wednesday. However, the results are always stored into a file named "experimental_data.csv". The structure of the csv file is as follows: • 1st column: A • 2nd column: Ra • 3rd column: Nu ENG1060 Assignment Page 4 of 8 You are asked to post-process this data by completing the following tasks. Note that your coding should adopt good programming practices such that they work with any number of Rayleigh numbers and aspect ratios provided in the "experimental_data.csv" file, unless otherwise specified. Q1a In the Q1a.m file, import the data from "experimental_data.csv". Use a for loop to restructure the imported numerical data into a three-dimensional matrix, where each two-dimensional matrix plane contains the Ra and Nu data for a single A value. An illustration is provided in figure 2. Note that each two-dimensional plane has the same dimensions to be consistent, though the Ra values in each plane may differ. Figure 2: (left) An illustration of a three-dimensional matrix where each two-dimensional matrix contains the Ra and Nu data for a specific A. (right) An example code of storing matrices into a three- dimensional matrix. Hint: The unique() function returns sorted values in an array but with no repetitions. Q1b In the Q1b.m file, plot Nu against Ra on linear axes for each aspect ratio in the text file, starting with the smallest aspect ratio. All the curves should be on a single figure. The legend should be placed in the north-west location and can be manually defined. In a separate figure, plot Nu against Ra on logarithmic axes for each aspect ratio in the text file, starting with the smallest aspect ratio. All the curves should be on a single figure. The legend for this figure should also be placed in the north-west location and can be manually defined. *You should have two figure windows by the end of this task. clear all; close all; clc; %A 3x3 matrix A = [1 2 3; 4 5 6; 7 8 9]; %Another 3x3 matrix B = [11 22 33; 44 55 66; 77 88 99]; %Creating matrix C which is 3D %Storing A into 1st plane of matrix C C(:,:,1)=A; %Storing B into 2nd plane of matrix C C(:,:,2)=B; 3D matrix ENG1060 Assignment Page 5 of 8 Q1c Upon observation of the Nu-Ra curves on the logarithmic axes, you notice that the curves are generally described by three trends belong to three regimes: • Conduction regime: Low Ra and constant Nu • Convection regime: Intermediate Ra and rapidly increasing Nu • Unsteady regime: High Ra and moderately increasing Nu The vague descriptions for these regimes above do not allow researchers to precisely determine the Ra value at which the flow transitions from a conduction regime to a convection regime. This transition point is known as the critical Ra (written as Rac) and the corresponding Nu is (Nuc). Therefore, you specify a quantitative definition for (Rac, Nuc) as follows: 1. For each value of A separately, starting at the lowest value of Ra and moving to higher values, determine the percentage difference in Nu values between the current Ra value and the first Ra value 2. If the percentage difference is greater than a user specified tolerance (e.g. 5%), then the transition point (Rac, Nuc) is determined to be the current Ra and Nu. In the Q1c.m file, complete the function file such that it determines the (Rac, Nuc) values for a set of Ra and Nu data. The function header provided is: function [Rac, Nuc] = Q1c(Ra,Nu,percent_tol) Hint: The percentage difference is defined as !"!"##$%& !"!!"!"#$%& !" !"!"##$%& !" ×100% Q1d In the Q1d.m file, use the Q1c function (written in part Q1c) to determine the (Rac, Nuc) values for each aspect ratio. Use a percentage tolerance of 5% for the percentage difference. Print these critical values to file named "ARaNu.txt" in a structure like the following using the following properties (values shown are placeholders): A Ra_c Nu_c 0.000000 0.00e+00 0.0000 0.000000 0.00e+00 0.0000 0.000000 0.00e+00 0.0000 0.000000 0.00e+00 0.0000 0.000000 0.00e+00 0.0000 0.000000 0.00e+00 0.0000 • A header with strings A, Ra_c, and Nu_c, all with a width of 10 • Width of 10 for the A values using fixed-point notation with the default number of decimal places • Width of 10 for the Rac values using exponential notation with 2 decimal places • Width of 10 for the Nuc values using fixed-point notation with 4 decimal places *You should still have two figure windows by the end of this task. ENG1060 Assignment Page 6 of 8 Q1e In the Q1e.m file, plot the (Rac, Nuc) points on the Nu-Ra curves plotted on logarithmic axes produced in part Q1b. The critical points should be plotted as red asterisks. Thus, the figure should illustrate where the flow transitions from the conductive to convective regime. *You should still have two figure windows by the end of this task. Q1f You notice that the (Rac, Nuc) points appear to form a straight line on the logarithmic axes. In the Q1f.m file, plot the (Rac, Nuc) points in a new figure as red asterisks on logarithmic axes. A straight line in log-log coordinates corresponds to one of the non-linear regression models discussed in ENG1060. In this question, you will fit this non-linear model to the set of data points plotted with red asterisks. To do this, linearise the (Rac, Nuc) points and determine the non-linear equation which fits through this data (NOTE: You can use polyfit if you wish). Plot this non-linear fit on the same figure as a blue line with Rac values given by 100 logarithmically equi-spaced values between 106 to 1012 . The title of the figure should be the fitted non-linear equation. E.g. Nu_c = 00.0000*Ra_c^0.0000 *You should have three figure windows by the end of this task. Q1g In the Q1g.m file, plot Rac as a function of A in a new figure as black asterisks on logarithmic axes. Also, linearise the (Ac, Rac) points and determine the non-linear equation which fits through this data. Plot this non-linear fit on the same figure as a blue line with A being 100 logarithmically equi- spaced values between 10-4 to 101 . The title of the figure should be the fitted non-linear equation. E.g. Ra_c = 00.0000*A^0.0000 Determine the Rac value required for the flow to transition from the conduction regime to the convection regime for A=10-4 , as predicted by the non-linear fit. Use fprintf to print a statement containing the Rac value required for A=10-4 like the following (values shown are placeholders): An aspect ratio of 1.00e-04 requires Ra=0.00e+00 to transition from conductive regime to convective regime Assuming an ocean has an aspect ratio of A=10-4 with Ra=O(1030 ), do you expect the ocean to be in a conductive regime or a convective regime? Use fprintf to print your answer and to explain why. *You should have four figure windows by the end of this task. Q1h In the Q1h.m file, use the bisection method (can be a separate function file or embedded into the m- file) to determine the Rac value that achieves Nuc=10-1 . Find the root to a precision of 10-6 using ENG1060 Assignment Page 7 of 8 lower and upper bracket values of xl=106 and xu=1010 , respectively. Use fprintf to print your answer of Rac to 3 decimal places using exponential notation. Q1i You wish to quantify the departure of the Nu profiles at various A values from the Nu profile at the smallest A profile (i.e. A=0.015). To do so, you use the following measure: 𝐨𝐩 = 𝐵!!! !"!!"!" !"!!"! d𝐵 − 𝐵!!!.!"#d𝐵 !"!!"!" !"!!"! 𝐵!!!.!"# !"!!"!" !"!!"! d𝐵 Here, NuA=X represents the Nusselt number profile for A=X where X can be 0.02, 0.03, 0.04, 0.06 and 0.08. Naturally, the departure value D for A=0.015 will be zero. Note that the integral limits span the lowest Ra to the highest Ra that the file contains (i.e. all data). D values greater than 1 is of large departure while D values smaller than 1 is of small departure. In the Q1i.m file, use the composite trapezoidal rule (can be a separate function file or embedded into the m-file) to integrate the appropriate values to calculate the departure value D for A=0.02, 0.03, 0.04, 0.06 and 0.08. It is important to note that the data is not regularly spaced and therefore you will need to work with the data points provided to calculate the integral, as opposed to using values from a fitted function. Use fprintf to print your answer of D for each A (not including A=0.015) and state whether it’s a small or large departure. Your output should look like the following (values and text shown are placeholders): D=0.0000 for A=0.0200 and is considered small departure D=0.0000 for A=0.0300 and is considered large departure D=0.0000 for A=0.0400 and is considered small departure D=0.0000 for A=0.0600 and is considered large departure D=0.0000 for A=0.0800 and is considered small departure Q1j Whilst researching horizontal convection, a colleague comes across an image with two encoded texts which were supposedly sourced from the lost city of Atlantis. These texts are comprised of random numbers and letters. These texts are provided below. Figure 3: The two encoded texts from the lost city of Atlantis. ENG1060 Assignment Page 8 of 8 Upon further research, your colleague comes across what appears to be the key to decode the texts! It turns out that the numbers in the encoded text represent letters from a to z and from A to Z. The letters in the encoded text represent the numbers 0 to 9. Your colleague is too lazy to decode the texts manually and therefore asks you to write MATLAB code to decode these texts using the decoding keys provided in Q1h.m (see below). Example interpretations: • The number 50 in the encoded text represents the letter 'a' when decoded • The number 24 in the encoded text represents the letter 'e' when decoded • The letter 'r' in the encoded text represents the number 0 when decoded • The letter 'q' in the encoded text represents the number 3 when decoded In the Q1j.m file, write MATLAB code to decode the two encoded texts. Use fprintf to print the decoded string. The encoded text has already been provided to you in the Q1h.m file as cells. In the encoded texts, the spaces are treated as spaces and dashes are ignored. Note: The encoded texts are contained in cells rather than matrices. Addressing elements of a cell is the same as addressing elements of a matrix, except curly braces {} are used rather than parentheses (). The cell function creates an empty cell with the specified size. Hint: You may want to use the ischar() function to determine if an element of the cell is a string or number. Poor Programming Practices [-2 Marks] (Includes, but is not limited to, poor coding style or insufficient comments or unlabeled figures, etc.) (END OF ASSIGNMENT) %% pre-defined variables letters = ['a':'z','A':'Z']; numbers = 0:9; letter_key = [50,47,34,42,24,30,22,17,41,23,25,20,35,38,48,43,18,2,27,... 44,11,8,36,45,29,26,33,1,19,46,3,4,10,14,16,37,39,15,7,40,52,6,49,... 9,5,21,13,31,28,51,12,32]; number_key = 'rejqucykml';