Upload
borad-madan-barkachary
View
216
Download
0
Embed Size (px)
Citation preview
7/29/2019 NanoRoughness Project
1/12
Model Adaptation Activity
Nano Roughness Project Part A
Successful completion of this project will enable you to:
Gain more experience using MATLAB with the focus being on:o The use of control and conditional structures
o The creation of an executive program and user-defined functions
Continue to create plots of technical presentation quality
Practice applying statistical analysis concepts
Apply MATLAB skills to a problem based on a real-world situation
Continue to develop effective teaming skills
PROJECT DESCRIPTION
Liguore Labs has analyzed your team's work thus far in determining roughness from nanoscale
images. Kerry Prior has asked your team to develop a program in MATLAB that allows a user to
calculate roughness of a nanoscale sample by several methods available. You have read how an
AFM works, and Liguore Labs wants a method to visually display AFM datasets and calculateroughness using methods that are accepted within the industry. To satisfy the company's needs,
your team must design a program that is functional and easy to use. In addition to developing the
software tool, your team will document your procedures and demonstrate how your software toolcan be used on a series of AFM data files. Your document must be written in complete sentences
and should clarify the program completely, yet briefly, for your client. Your software tool will be
viewed and evaluated by the managers at Liguore Labs. You may assume that the managers havesome knowledge of science and math but are NOT engineers.
BACKGROUND INFORMATION
In Homework 11, you learned to use AFM data to make a digitized, grayscale image as in Figure1. Note that this is not a picture of the surface, and you should not use "photograph" or "picture"
in your report. These are digital "images" in which the brightness value of each pixel represents
height. Figure 1 can be stored in MATLAB as a variable that contains an array of numbers, witheach number referring to the gray scale value for each pixel of the image. A sub-sample of the
complete Figure 1 file is shown in Table 1; this sub-sample shows the gray scale values for the
square superimposed on Figure 1 and magnified by itself in Figure 2. Gray-scale values canrange from 0 for black to 255 for white (as they do in Figure 1). You will place a line over this
table of data, by choosing two random points to define the endpoints. This line can be horizontal,
vertical, or at an angle. An example of a possible line is shown on the table as the underlinedvalues (though it is not shown on the actual figure, to avoid obscuring the pixels that are used).You will determine gray values so you can make an image that acts like a "topographic map" of
your AFM data, that will provide a visual representation of "depth".
Copyright 2004 Purdue University 1
7/29/2019 NanoRoughness Project
2/12
Figure 1. Image made from AFM height data, with Figure 2. Close-up of area
pixel color representing height at each location. outlined in Figure 1,
to show(Remember that this is not a photograph.) pixels and brightness.
Table 1. Digital file for sub-sample from AFM image shown in Figure 2, with possible angledline shown by underlined numbers. Note the dark "hole" in the middle of values < 100.
196 193 187 180 173 165 153 149 145 138 133 131 129 128 129 131 134 135 137 136
193 192 188 183 177 166 155 151 147 142 137 135 131 129 130 130 130 131 134 137
195 189 188 183 175 169 162 151 146 145 140 136 134 132 130 129 130 131 131 131
195 189 189 185 180 178 171 157 152 152 144 141 139 134 129 128 129 127 128 130206 203 200 190 184 180 173 164 157 149 143 142 138 132 130 129 129 129 129 128
205 203 195 185 183 180 173 170 163 149 141 140 139 137 135 134 129 128 128 127
208 205 195 185 182 175 169 169 162 149 144 143 140 139 137 134 128 128 127 126
207 203 195 189 184 174 168 166 158 146 142 139 134 134 134 131 128 127 126 125
203 201 196 191 183 171 161 158 149 141 138 135 132 130 128 124 124 125 122 120
196 193 191 189 182 166 149 145 141 137 135 132 128 126 127 125 124 123 121 118
192 186 179 176 172 157 143 138 127 124 132 133 126 123 123 120 118 120 118 116
183 181 176 173 165 146 131 132 126 121 125 123 114 108 107 107 109 110 111 112
184 180 173 170 167 155 138 128 118 109 112 109 102 102 103 105 107 107 105 103
180 178 169 164 161 148 130 119 112 102 98 98 99 101 102 102 104 104 105 103
176 172 163 158 157 143 126 119 113 107 102 99 100 102 102 103 103 103 103 102
168 156 148 146 137 128 125 123 120 116 112 110 105 102 104 105 105 105 105 103
155 144 130 133 132 124 125 125 124 122 119 117 113 110 110 111 111 110 108 105
161 155 146 136 132 122 122 124 123 124 125 125 125 119 114 114 113 112 110 108
155 140 125 120 120 120 120 121 125 129 131 132 133 131 127 121 117 115 112 110205 197 192 179 165 162 152 138 138 140 136 137 141 137 130 127 122 118 115 113
220 220 219 215 209 201 192 182 174 165 154 146 145 145 141 137 134 131 126 123
213 215 216 217 217 217 215 210 205 203 198 191 186 181 176 172 165 155 145 140
209 209 212 213 214 215 217 217 217 217 215 215 215 208 204 200 190 179 174 164
202 205 208 208 209 211 214 214 214 215 216 217 217 216 214 210 204 198 191 183
205 207 207 207 209 207 207 209 211 211 211 212 214 214 213 213 211 210 206 202
210 210 210 208 209 208 209 210 209 209 208 210 210 210 211 211 211 209 207 206
213 208 207 207 208 208 208 209 210 211 212 210 208 208 208 206 205 206 205 204
216 214 211 208 209 208 208 210 213 214 214 213 212 211 209 207 206 205 203 201
Copyright 2004 Purdue University 2
7/29/2019 NanoRoughness Project
3/12
216 215 215 214 214 213 211 213 214 213 211 210 209 209 209 209 208 207 204 203
211 214 216 216 218 220 219 217 216 216 214 210 209 210 209 208 207 206 206 206
Copyright 2004 Purdue University 3
7/29/2019 NanoRoughness Project
4/12
MATLAB Code
Executive Function
Your code will consist of a MATLAB executive program and a series of supporting MATLAB
user-defined functions. An executive user-defined function is the main function that controls the
overall order of computations and operations. This function has no input or output arguments.Your team will construct one executive user-defined function called nanorough.m which will
control the order of the computations and calls to user-defined functions. For the duration ofProject II, your team will add and modify sections of this function as you complete the
supporting user-defined functions. This function is to execute when nanorough is entered at the
MATLAB prompt. It will make calls to the supporting user-defined functions that your team
creates. You will begin building the executive function in Lab 12, though you will havedeveloped some of the supporting user-defined functions in Lab 11. In Part A, you will be
writing introductory code that finds the height values needed to perform the roughness
calculation. In Part B, you will be given information about the different formulas used tocalculate roughness and will implement these calculations.
Supporting User-Defined Functions
Your team will construct user-defined functions that will perform the computations for the
project. The executive function should route appropriate information to and from user-defined
functions but perform minimal computations itself. All major computations (such as defining the
endpoints of the line) and repetitive computations (such as converting height values to colorvalues or finding the values of brightness along the line) must be handled by user-defined
functions. A good rule-of-thumb is to create a user-defined function for any task or computation
that takes more than 8 lines of code. Clearly indicate the author(s) of each function. There shouldbe clear evidence that each member is contributing to the development of project code.
Required Functionality of CodeWhen the user of your code types nanorough at the MATLAB prompt, the user should be kept
in the program until the user wishes to quit. This means that the user can continuously run AFM
datasets without being forced to restart the program. Your team will work on this in Lab 12.
Your code must be able to load an ASCII AFM dataset. Your code must also be general enough
to handle any AFM dataset with X, Y, and height data in three columns. Your team will
construct this piece of the project in Homework 11. During demonstrations of your code, yourteam will be asked to develop an image of a dataset your team has never seen before (though it
will be of the same style as those you have used while developing your project).
Sample Images and Determination of Pixel Color ValueThree AFM datasets are provided for use by your team. The digitized files are called gold24.txt,
afm2.txt, and afm3.txt and located in the engr106/FALL2003/PROJECTS subdirectory. Eachdataset will be loaded and converted to an array of numbers. This will be covered in Homework
11. Each number in the array represents the height at the particular point. You will normalize this
data to find a gray scale value for each pixel. These values range from 0 for black to 255 for
white. Each of these 256 colors will represent a small range of heights.
Copyright 2004 Purdue University 4
7/29/2019 NanoRoughness Project
5/12
Thus, you will have two data arrays. The first, the Height Data Array, contains the height values
for each point that will be used in all your calculations (most of which will be performed in Part
B). The second array, the Pixel Color Array, will have the same number of rows and columns asthe Height Data Array, but will have been "proportioned" or "normalized" to contain integer
values between 0 and 255 and will be used as a visual representation to help the user "see" the
roughness of the surface. This image will be Plot 1.
Random Lines
Each line is defined by a starting point and an ending point. The points must be randomly placedon the image. Your team will begin work on random generation of points in Lab 11, and will
continue this in Labs 12 and 13 and Homework 12.
Average Height
Each pixel along the line will have a height value. You will calculate the average height of these
points. You will plot the height at each point along the line as well as the average height. Refer
to Question 7 of Homework 10. Your Plot 2 will look like the "Cross Section" plots.
Required Output Results
Your code should generate results that are easy to interpret. Graphical results are to include plots: Plot 1 is a figure showing the image made from the AFM data with all lines (though you are
only required to have one for Part A) used to determine the roughness overlaid on the image.
Plot 2 is a figure showing the height of each pixel along the line. It must be properly labeled
and should display a line showing the average height (which is not shown on the plots inHomework 10, but is needed for calculations required for Part B).
Additionally, a series of text-based key results must be displayed on the screen. These include: All user inputs (e.g., dataset name).
All internally-measured values (e.g., size of dataset array, maximum and minimum heightvalues).
All internally-calculated values (e.g., "height resolution" of image the height difference
between two pixels that differ by 1 out of the 256 shades of gray, the average height).
REPORTS
Your team will demonstrate the team's nanorough initial code in lab. Your code should be able
to provide initial results (described below) for an AFM dataset never seen before. Your TA willselect one team member to display the code, which is why every member should have access to
the code and understand it. This demonstration will form part of the grade for Part A.
Further, your team will submit an interim project report that includes the following items.
Executive Summary. Write a one-page (1.5 spacing) executive summary to the managers of the
Liguore Labs. The summary must include a description of your methodology for finding color
values based on the AFM dataset and for finding the "addresses" of points (or pixels) that fallalong the random line. The description should include enough detail for the manager of Liguor
Labs to understand how the images are generated, what these images show, how the line is used,
and what the "average" height represents Many of the calculations for Part B will be based on
Copyright 2004 Purdue University 5
7/29/2019 NanoRoughness Project
6/12
deviations from this "average" line. Also discuss the capabilities of MATLAB that make it useful
for this type of analysis, as well as any shortcomings of MATLAB for this application that you
may have identified. This should be written in the form of a memorandum as follows:
MEMORANDUM
To: Kerry Prior, Vice President of Research, Liguore Labs
From: Team #:List all members of your team
Re: AFM Roughness MATLAB Tool - Interim Report
Date:
Flow Chart(s). Draw one or more flowcharts to track the calculation of the pixel colors from the
AFM height dataset, calculate the average height, and other tasks as necessary. These should beeasy for the TA to follow. They may be neatly handwritten or electronic PowerPoint provides
flowcharting capability, though you are allowed to do these by hand, which might be faster.
Code and Documentation. Provide a typed list of all the functions that your team has written for Part A of the Project.
For each function on the list, include the name of the function, the author(s), and a briefdescription of what the function does. Provide a description of the inputs and outputs. Note
that most of this information is to be included in the help comments of each function.
Submit a hard copy of each function written for Part A. Be sure the correct file name appears
on each page. Adequately comment your code so your TA can easily follow your code.
Initial Results.
At the end of Part A, your code should do the following (and you will test that your code candevelop these results on two of the three AFM datasets provided and submit your results):
Convert a raw AFM height dataset into an image Generate one random line on the image
Calculate the average height for the chosen line
Display Plot 1 and Plot 2 to the screen in a single figure window using the subplot command
Display to the screen the name of the AFM dataset being analyzed. Display all user inputs,
assumed values, and key results that were required as part of the calculation.
Your team will also submit a copy of the output printed to the screen by creating two diaries:
one for each of two (out of the three) sample AFM datasets (use the diary command in
MATLAB). Please suppress printing of all computation lines before running your simulation sothat the diary will not be too long. Otherwise, trim extraneous lines in the diary text file before
printing the hard copy. Your output should clearly indicate which dataset is being analyzed.
Copyright 2004 Purdue University 6
7/29/2019 NanoRoughness Project
7/12
Engineering Contexts and Concepts for Developing andPromoting Students' Higher Level Learning (NSF BEE 0342028)
Model Adaptation Activity
Nano Roughness Project Part B
Successful completion of this project will enable you to:
Gain more experience using MATLAB with the focus being on:o The use of control and conditional structures
o The creation of an executive program and user-defined functions
Continue to create plots of technical presentation quality
Practice applying statistical analysis concepts
Apply MATLAB skills to a problem based on a real-world situation
Continue to develop effective teaming skills
PROJECT DESCRIPTION
Liguore Labs is ready for your finished MATLAB code to calculate roughness of a nanoscalesample by several methods available. You have read how an AFM works, and Liguore Labs
wants a method to visually display AFM datasets and calculate roughness using methods that areaccepted within the industry. To satisfy the company's needs, your team must design a program
that is functional and easy to use. In addition to developing the software tool, your team will
document your procedures and demonstrate how your software tool can be used on a series ofAFM data files. Your document must be written in complete sentences and should clarify the
program completely, yet briefly, for your client. Your software tool will be evaluated by the
managers at Liguore Labs, who have knowledge of science and math but are not engineers.
Roughness Calculations: (based on www.veeco.com/appnotes/AN505.pdf)
Copyright 2004 Purdue University 7
http://www.veeco.com/appnotes/AN505.pdfhttp://www.veeco.com/appnotes/AN505.pdf7/29/2019 NanoRoughness Project
8/12
The following methods of measuring roughness are generally accepted in the industry:
Term Definition Calculation Use
Z Mean of height values of allheights along profile (where
"profile" is the line you draw)
1
1 n
i
i
Z Zn
=
= This is a starting point formany of the other
calculationsaR Roughness Average of the
profile is the difference
between each point and theaverage height
1
1 n
a i
i
R Z Zn
=
= This simple method is often
used to describe the
roughness of machinedsurfaces.
qR Root Means Square Average of
the profile is similar in conceptto linear regression
( )2
1
1 n
q i
i
R Z Zn
=
= This more complicated
method is ~1.11*Ra for manysurfaces, but not always
,p vR R Maximum profile peak height,
Maximum profile valley depthMeasured Measure of highest and
lowest points
tR Maximum Height of profile is
difference between peak andvalley
t p vR R R= + Range of highest and lowest
points
zR Average Profile is the averagefound from the five greatest
peaks and five greatest valleys.
5 5
1 1
1
10z i j
i j
R P V= =
= +
See picture and discussionbelow to define a maximum
peak and valley
skR Skewness measures the
assymetry of the profile about
the mean line.
( )3
3
1
1 n
sk i
iq
R Z ZnR
=
= Used with a histogram (Plot
3) to show if heights are
normally distributed
Positive skew indicates a predominance of peaks, while negative skew indicates a
predominance of valleys.
Note that a peak, such as P1, prevents any other points on that "mountain" from being a peak
until the height has gone below Z in both directions. Note this is also true of valleys (see V2,
with a "local" valley just to the left ofV2 that is not used). The labelRz has been used for other
roughness measures, so you might find other equations if you search the Internet; use this one.
The following image is provided only to help you see what skewness and theRsk value indicate.Note that the ADF (Amplitude Distribution Function) is a histogram of all the heights. Again,
you do not need to develop a figure like the one shown here. However, you will develop a
histogram similar to the ADF curve (rotated 90) as Plot 3 (discussed in Required OutputResults). To make this curve reasonably smooth, you will likely have 30 or more bins.
Copyright 2004 Purdue University 8
7/29/2019 NanoRoughness Project
9/12
MATLAB Code
Executive Function
Your code will consist of a MATLAB executive function and a series of supporting user-definedfunctions. The executive function, called nanorough.m, will control the order of computations
and calls to user-defined functions. This function is to execute when nanorough is entered at the
MATLAB prompt. The executive function should route appropriate information to and from
user-defined functions but perform minimal computations itself.
Supporting User-Defined Functions
Your team will construct user-defined functions that will perform the computations for theproject. In the "Roughness Calculations" section above, you have been given information about
the different formulas used to calculate roughness and will implement these calculations. For
additional information, visit www.htskorea.com/tech/spm/profile.pdf (particularly pages 6-7, 11-13, 33-37, and 41-42). Much of this site is based on www.predev.com/smg/parameters.htm). All
major computations (such as defining the endpoints of the line or solving the roughness
equations) and repetitive computations (such as converting height values to color values or
finding the five peaks and valleys) must be handled by user-defined functions. A good rule-of-thumb is to create a user-defined function for any task or computation that takes more than 8
lines of code. Clearly indicate the author(s) of each function. There should be clear evidence thateach member is contributing to the development of project code.
Required Functionality of Code
When the user of your code types nanorough at the MATLAB prompt, the user should be keptin the program until the user wishes to quit. This means that the user is to be allowed to run one
AFM dataset after another, after another without being forced to restart the program.
Copyright 2004 Purdue University 9
7/29/2019 NanoRoughness Project
10/12
Your code must be general enough to load any AFM dataset with X, Y, and height data in three
columns. During the final demonstration of your code, your team will be asked to calculate
roughness of a dataset your team has never seen before (though it will be of the same style asthose you have used while developing your project).
Random LinesEach line is defined by a starting point and an ending point that allows at least 200 data points to
be found between them. The starting and ending points must be randomly placed on the image.
User Choice of Parameter
The user should be given a choice of which roughness value will be found. The user should also
be given the choice to find all measurements at once, if desired, rather than having to choose all
of them one by one. Once the user makes a selection, the MATLAB code should calculate thatvalue and display it to the screen. As soon as the user enters a name of an AFM dataset, Plot 1
should appear. When the user chooses any of the measurements, Plots 1 and 2 should appear in a
single figure using the subplot command. If the user chooses to find the skewness, Plots 1 and 3
should appear in a single figure. If the user chooses to see all calculations, then Plots 1, 2, and 3should appear in a single figure. (Plots are discussed in Required Output Results below.)
Consistency and Reliability
"Consistency" is the sameness of parts of the whole. Some AFM datasets are "consistent", in that
if you are calculatingRz, and you place seven random lines on your data, you get similar valuesfor each of the seven lines. The roughness measure is similar over each measured part. Other
datasets will be highly variable, in that a line placed in one location will result in a very different
roughness value from another line, and could be called "inconsistent". It is up to your team to
define similar. You should discuss the concept of consistency of the datasets in your summary.
"Reliability" is defined as an ability to collect the same results on repeated trials. The roughness
calculation made for a single line may not be a good representation of the dataset since there maybe a high degree of variability depending on where the line is superimposed on the dataset. To
get high reliability, several lines with different starting and end points should be used on the
dataset. Your team will decide how many lines are needed to attain "reasonable reliability" of theroughness for a given dataset. To do this, your team will need to come to a consensus on what
constitutes "reasonable reliability".
If you take readings on seven lines, it may not make sense to average those seven readings. Youmight choose to use the mode roughness value (which is difficult with continuous values; how
many decimal places are appropriate for your roughness value?), a trimmed mean where you
drop the highest and lowest values (or three highest and three lowest values), or some methodother than simple arithmetic average. Develop a procedure for determining roughness values
that ensures that your measurements on a dataset meet your team's definition of "reasonable
reliability." Implement your procedure in your project code - your team will need to decide whatresults need to be presented to the user. Discuss your analysis of reliability in your report.
Consistency and reliability are related topics, so there may be an amount of overlap in your
discussion of each topic.
Copyright 2004 Purdue University 10
7/29/2019 NanoRoughness Project
11/12
Required Output Results
Your code should generate results that are easy to interpret. Graphical results are to include plots:
Plot 1 is a figure showing the image made from the AFM data with all lines used to
determine the roughness overlaid on the image.
Plot 2 is a figure showing the height of each pixel along the line. In Part A, the x-axis showed
pixels along the line; for Part B, the x-axis should show the actual distance in nanometersalong the line. Use proper labels and display a line showing the average height.
Plot 3 is a histogram of the height values found for one of the lines used, with approximately
30 bins and with bin edges defined to help illustrate the skew of the roughness value.
Additionally, a series of text-based key results must be displayed on the screen. These include:
All user inputs (e.g., dataset name).
All internally-measured values (e.g., size of dataset, maximum and minimum height values,
reliability related measured values).
All internally-calculated values (e.g., "height resolution" of image the height difference
between two pixels that differ by 1 out of the 256 shades of gray, the average height, the
computed roughness value(s) desired by the user, reliability related calculated values).
REPORTS
Your team will demonstrate the team's nanorough code in lab. Your code should be able toprovide full results (described below) for an AFM dataset never seen before. Your TA will select
one team member to display the code, which is why every member should have access to the
code and understand it. This demonstration will form part of the grade for Part B.Further, your team will submit a final project report that includes the following items.
Executive Summary. Write maximum three-page (1.5 spacing) executive summary to the
managers of the Liguore Labs. The executive summary should include: A brief description of the problem your team is solving and an explanation of why methods
for measuring nanoscale roughness are important/useful.
Your team must include a paragraph that discusses why there are so many roughness
measures, i.e., why a single roughness measure will not work for all datasets. You may wish
to refer to the datasets you were provided.
A discussion of consistency and/or reliability in general terms. You may certainly refer to the
three datasets provided, but do not discuss consistency and reliability in terms of those threeimages only; your discussion should be general so it would be useful for the managers as
they look at other datasets.
A brief response to any problems that were noted on Part A of the project (e.g. clarify
missing or unclear material).
A 1-2 paragraph description of the functionality and use of the program you have developed.
The description should include enough detail for the manager of Liguor Labs to understand
what a "roughness" value indicates about the surface, as well as what "skewness" representsand how to read your histogram. Your description should note how your team had chosen to
define consistency and a procedure for how it is achieved in the determination of roughness
measures.
Copyright 2004 Purdue University 11
7/29/2019 NanoRoughness Project
12/12
A comparison of two of the provided datasets; results should be presented in table format.
(The table will not count towards your three page limit).
Write the summary in the form of a memorandum as follows:
MEMORANDUM
To: Kerry Prior, Vice President of Research, Liguore Labs
From: Team #:List all members of your team
Re: AFM Roughness MATLAB Tool - Final Report
Date:
Flow Chart(s). Draw one or more flowcharts to track allowing the user to choose the desired
calculation, finding the five peaks and valleys, or other important code functionality.
Code and Documentation.
Provide a typed list of all the functions that your team has written for the Project. For each
function on the list, include the name of the function, the author(s), and a brief description ofwhat the function does. Provide a description of the inputs and outputs. Note that most of this
information is to be included in the help comments of each function.
Submit a hard copy of each function written for Part B. Be sure the correct file name appears
on each page. Adequately comment your code so your TA can easily follow your code.
Final Results.
At the end of Part B, your code should do the following (and you will test that your code can
develop these results on two of the three AFM datasets provided and submit your results):
Convert a raw AFM height dataset into an image
Generate one random line on the image that allows at least 200 data points along its length
Calculate the Mean and the Average Roughness for the chosen line Print all required plots to the screen in a single figure window (the histogram is not required
to have "nice" bin edges, but it must have at least 30 bins to make a "smooth" curve)
Print all user inputs, assumed values, and key results that required as part of the calculation.
Display Plots 1, 2, and 3 (as appropriate based on the user input) to the screen in a single
figure window using the subplot command
Display to the screen the name of the AFM dataset being analyzed. Display all user inputs,
assumed values, and key results that were required as part of the calculation.
Your team will also submit a copy of the output printed to the screen by creating two diaries:
one for each of two (out of the three) sample AFM datasets (use the diary command in
MATLAB). Please suppress printing of all computation lines before running your simulation sothat the diary will not be too long. Otherwise, trim extraneous lines in the diary text file before
printing the hard copy. Your output should clearly indicate which dataset is being analyzed.
Copyright 2004 Purdue University 12