46 views

Uploaded by Lasse Olesen

Diploma thesis from Technical University of Denmark by Lasse Olesen.

- Dynamics Project
- IJETR022041
- IRJET-Manufacturing of Patient Specific Implant Models by 3D Printing Assisted Investment Casting
- ES11Finals Reviewer
- ghhjmomuhgyhu
- Elog Guide
- Paper Feed Mechanism Separation Roller
- cv njumail
- force of friction
- Diestress Wizard Lab1
- matlab
- EMS Li SpatialInterpolationReview 2014
- Ch-10
- intropostlab_exp4
- Kriging Interpolation
- Friction
- Forces-1
- Force
- Conveyor Chain
- Vapo Bearing Maglev Technology

You are on page 1of 29

! "#$%&!'()*+,-!.)(!/#'&)0%!#$!0+,1%$#,%&!+$2#$++(#$2!%-! 3+,1$#,%&!4$#5+(6#-7!).!8+$0%(9!

Date: 23 July 2012 Supervisor: Steen Markvorsen By: Lasse Birk Olesen, s082192

Table of contents

1! Abstract .................................................................................................. 2! 2! Introduction ............................................................................................ 2! 3! Modelling and scripting .......................................................................... 2! 3.1! Data structure and preparation ........................................................ 2! 3.1.1! Data structure ............................................................................ 2! 3.1.2! Data alignment .......................................................................... 4! 3.1.3! Horizontalization ........................................................................ 5! 3.1.4! Result ......................................................................................... 6! 3.2! Real contact area and contact force ................................................. 6! 3.3! Friction force .................................................................................... 9! 3.4! Mean angles of asperities ................................................................ 11! 3.5! Size and amount of contact spots ................................................... 13! 3.6! Data coarsening and interpolation.................................................. 16! 3.6.1! Data coarsening ........................................................................ 16! 3.6.2! Linear interpolation.................................................................. 18! 3.6.3! Polynomial interpolation .......................................................... 20! 3.7! Construction of 3D model for use in 3D printer ............................. 22! 4! Discussion ............................................................................................. 25! 5! Conclusion ............................................................................................. 26! 6! References ............................................................................................. 28! 7! Appendices ............................................................................................ 28!

Abstract

A discrete model for contact between rough surfaces based on complete surface roughness measurement data sets from two nominally flat surfaces is established. Calculations for real contact area, deformation friction area, mean asperity angles, and size and amount of contact spots are then implemented. The script is then applied to an example data set. Furthermore, to find ways to minimize computational load, the loss of accuracy when employing simple data removal and linear interpolation is compared. A script for performing polynomial spline interpolation is also implemented. A script for creating a 3D model and exporting it to an STL-file based on the surface roughness data is also created. Finally it is discussed how these methods may be confirmed experimentally.

Introduction

Two nominally flat solids are brought into contact. A normal force N is acting so that the contacting surfaces are pressed against each other. The solids have a surface roughness consisting of mountains and valleys coming from the manufacturing process. When the two surfaces are pressed against each other the mountains from each surface will meet and transmit the load from one solid to the other. Mathematical modelling of contact between rough surfaces is normally carried out using statistical representations of the surface topography. This carries an inherent source of inaccuracies especially in the cases where the topography differs from ideal statistical distributions. To mitigate these inaccuracies this work will replace the statistical model in favor of treating complete datasets from measurements of rough surfaces.

The topography data used has been mechanically measured from the surfaces of pins and discs used in pin on disc tests. This data was supplied by Konstantinos Poulios of DTU MEK. The methods developed below will therefore be used to model contact between such pins and discs. The example results produced below as demonstrations of the scripts have used the files Pin10SUSTADURvirginmag10offcenter111118.txt and Disc08SUSTADURlubricatedR62pos1.asc as data sources for pin and disc respectively. All script snippets in the following sections are in the MATLAB language.

3.1

3.1.1

Data structure

Available topography data for pins is of a three dimensional nature with the height of measurement points organized in a two dimensional matrix. 2

Going from one row to the next in the matrix represents moving a fixed distance in the x direction along the surface of the pin, and going from one column to the next in the matrix represents moving a fixed distance in the y direction along the surface of the pin.

Thus:

(3.1)

where i and j are matrix row and column numbers respectively, d is the distance between row and column measurements, and mij is the data contained in the matrix ij-cell. As an example, suppose the following measurement data matrix and distances are given:

(3.2)

(3.3)

On the other hand, available topography data for discs are of a two dimensional nature with measurements having been carried out only along a single line on the disc. Data is in the format of a two-column matrix with the contents of the first column representing horizontal position and the contents of the second column representing height. 3

To model the contact between pin and disc it is necessary to utilize three dimensional topograhy for both. According to Konstantinos Poulios of DTU MEK it is an acceptable approximation of the actual disc topography to simply extrude the 2D profile into the third dimension.

F igure 3.2 - L ef t: E xam ple of 2d profi le. R ight: Profi le extruded i nto thi rd di mension.

3.1.2

Data alignment

As investigations in this work will include a discrete point by point comparison between pin and disc it is necessary to align points so that points in disc data will have the same distance between them as points in pin data. As the resolution of the available disc data is about one order of magnitude higher than the resolution of the pin data, the designed script will remove all disc data points until it reaches the disc data point that is nearest the next pin data point which will then be aligned.

Figure 3.3 - An example of the distribution of measured data points across two surfaces

Assuming the crosses in Figure 3.3 are data points from the disc while the diamonds are data points from the pin, cross 10 will be aligned with diamond 2 and cross 20 will be aligned with diamond 3 with the result being shown in Figure 3.4.

To minimize inaccuracies arising from this operation, interpolation is performed when aligning data points. The above is implemented in a script as follows: 4

1. %A new variable for containing the aligned disc data 2. disc = zeros( size(pin(1:end , 1),1) , 2); 3. count = 0; 4. 5. j = 2; 6. for i = 1 : size(pin(1:end,1)), 7. %Find disc point just after next pin point 8. while disc_data(j , 1) < pin_xpos(i) 9. j = j+1; 10. end 11. 12. %For interpolation, calculate the slope between this and the last disc point 13. slope = (disc_data(j, 2) - disc_data(j-1, 2)) / disc_step; 14. 15. %Interpolation intpHeight = disc_data(j-1, 2) + slope * ( pin_xpos(i) disc_data(j-1,1) );

16. 17. %Assign new values 18. disc(i , 2) = intpHeight; 19. disc(i , 1) = pin_xpos(i); 20. end

3.1.3

Horizontalization

A plot of the raw disc data gives Figure 3.5. Inaccuracies in the measuring setup have caused the mean surface profile to skew away from the horizontal that would be expected from a nominally flat surface.

1. %Horizontalize disc data 2. %polyfit() will return a linear function that fits the data with a least squares method 3. p = polyfit(disc_data(1:end,1) , disc_data(1:end,2) , 1); 4. 5. %polyval() will return a vector that contains the difference between the linear function and 0 along all points of the disc data 6. yfit = polyval(p , disc_data(1:end,1)); 7.

8. %The difference is subtracted from the actual disc data to horizontalize it 9. disc_data(1:end, 2) = disc_data(1:end , 2) - yfit;

In the data at hand, horizontalization of pin data is not necessary. 3.1.4 Result

After removing intermediate disc data points and aligning the remaining points with the pin data points, extruding the 2D disc profile into the third dimension, and horizontalizing data, the result is that both pin and disc data are three dimensional point clouds with all points on one surface perfectly aligned in the x and y directions with corresponding points on the other surface. The data is now ready for analysis.

3.2

It is assumed that two nominally flat solids are pressed together with a force N, and that they are made from steel with a yield strength !y. The asperity tops that meet the opposing tops will deform elastically and plastically until the contact area is large enough to carry the the total load N. The concepts apparent contact area and real contact area are used in the following. The apparent contact area is the area of the two surfaces in contact, L!W. The real contact area is the area of the contacting asperities which is much smaller that the apparent contact area. Thus:

! y " Ai = N

i=1

(3.4)

As we are interested in establishing a connection between force and contact area, what we want to find is the projected contact area in the direction of the force (z direction).

Figure 3.8 - 1: Two rough surfaces approaching. The upper surface is soft, the lower surface is hard. 2: Asperity in contact with opposing surface. Contact area highlighted in red. 3. Projected contact area highlighted in red.

Given this and the fact that all points have been aligned with points on the opposing surface, the real contact area can now be approximated using a discrete point by point analysis. Say we have matrixes A(x,y) and B(x,y) containing height measurements from two different surfaces. A new distance matrix is then defined as:

(3.5)

where dz is the distance between origins of the coordinate systems of the two surfaces as seen in Figure 3.7. The D matrix now contains the distance between any two opposing points on the surfaces. Where this distance is equal to or less than 0 the points are in contact. Let ntot be the amount of elements in D, and nc be the amount of elements in D that are equal to or below 0 (amount of points in contact). Dividing the 7

latter by the former gives us a contact ratio that can be applied to the apparent contact area to give us the real projected contact area:

Areal =

(3.6)

where Aapp is the apparent contact area equal to length times width of the surface. Assuming that the majority of deformation occurs plastically, and with the real projected contact area now estimated, the contact force can be calculated using (3.4):

N = ! y # Ai = ! y " Areal

i=1

(3.7)

1. %Create distance matrix 2. distance = zeros( ceil( size(pin(1,1:end),2)) , ceil(size(pin(1:end,1),1)) ); 3. 4. %meanDistance is the distance between the origins of the coordinate systems of the two surfaces, and not necessarily the actual mean distance between asperities of the two surfaces 5. meanDistance = 8e-6; 6. 7. %Iterate through both dimensions of the pin data matrix. As the disc data matrix only has one dimension, it is assumed the same profile holds for any depth of the disc 8. for i = 1:size(distance,1) 9. for j = 1:size(distance,2) 10. distance(i,j) = meanDistance - pin(j,i) - disc(j,2); 11. end 12. end 13. 14. %Results 15. contactRatio = contactsAmount / ( size(distance,1) * size(distance,2) ) 16. contactArea = contactRatio * pin_width * pin_height

To get an impression of the contact scenario a visualization is useful. Plotting the distance matrix yields Figure 3.9.

Figure 3.9 - Example of a plot of the distance matrix. Blue areas are in contact.

3.3

Friction force

The two dominant friction phenomena in contact between dry rough surfaces are adhesion friction and deformation friction.1 Adhesion Assuming the mean contact pressure is equal to the hardness of the material, which in turn is assumed to be very close to the bulk maximum shear stress, then the adhesive friction is:2

Fa = Ak

(3.8)

where A is the real contact area and k is the bulk maximum shear stress. As the real contact area has been estimated above, the adhesive friction component can now be estimated given the bulk maximum shear stress.

1 2

R. Gohar and H. Rahnejat, 2008, Fundamentals of Tribology, p. 54. R. Gohar and H. Rahnejat, 2008, Fundamentals of Tribology, p. 56.

Deformation Deformation friction consists of two subcomponents. One is the phenomena of surface asperities interlocking, where the only way to facilitate movement is by squashing or displacing opposing asperities laterally. This is a relatively insignificant contributor to deformation friction.3 The other component arises from asperities of the harder material making the softer opposing material deform plastically by ploughing grooves in the surface. Completing the calculation a friction force stemming from the ploughing component is complicated and outside the scope of this work, but to that end it will be useful to know the projected area that asperities of the hard surface will plough in the softer surface.

Figure 3.10 - Black line is the hard disc surface. Blue line is the undeformed pin.

Consider the situation in Figure 3.11 and assume the disc surface indicated by the black line is moving in the positive x-direction relative to the blue pin surface. The projected area that is obstructed in the x direction can then be approximated as the projected distance in the z direction from the highest

3

10

datapoint of the asperity to the lowest point of the asperity still in contact times the distance in the y-direction to the next set of data points. Summing across all data sets in the y-direction for this asperity and across all other disc asperities will give us an approximation of the total deformation area. This was implemented in a script as follows:

1. %Calculate deformation friction area 2. %Initiate variable 3. fricArea = 0; 4. 5. %The width that one dataset represents in the y direction 6. setWidth = 1 / pin_yres 7. 8. %Iterate through both dimensions of the pin 9. for i = 1:size(pin,1)-1 10. for j = 1:size(pin,2)-1 11. 12. %Calculate depth of penetration of this point 13. overlapThis = pin(i,j) + disc(i,2) - meanDistance; 14. 15. %Calculate depth of penetration of next point 16. overlapNext = pin(i+1,j) + disc(i+1,2) - meanDistance; 17. 18. %If next point is not in contact, set penetration to 0 19. if overlapNext < 0 20. overlapNext = 0; 21. end 22. 23. %First part of if-statement tests if this point is on a downhill slope in the movement direction (an uphill slope in the movement direction will not face any obstruction). Second part of if-statement tests if this point is in contact. 24. if disc(i,2) > disc(i+1,2) && overlapThis > 0 25. 26. %Add to fricArea the z-direction distance from the current point to the next multiplied by the width, that the dataset represents 27. fricArea = fricArea + (overlapThis - overlapNext) * setWidth; 28. end 29. end 30. end

The variable fricArea now contains the projected area obstructed by movement in the positive x-direction.

3.4

For statistical modelling of friction between rough surfaces, which is outside the scope of this work, it will be useful to know the mean angles of asperities compared to a completely plane surface. Note that given a specific point on a rough surface, angles can be determined in an infinite amount of directions from this point. However, for a friction analysis it is assumed that the direction of the friction force is known and that it will also be for this same direction that the angles would be useful to determine.

11

! = arctan(

y2 " y1 ) x2 " x1

(3.9)

As all angles between all data points in one direction has been determined as in (3.9), the mean angle is determined as follows:

! mean =

1 n "! i n i=1

(3.10)

This assumes that the spacing between all data points in this direction is equal which is the case in the data at hand. This has been programatically implemented as follows:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. %Calculate mean angle in disc meanSlope = 0; for i = 1:size(disc,1)-1 %The difference in y between two points are divided by the difference in x slope = ( disc(i+1,2)-disc(i,2) ) / ( disc(i+1,1)-disc(i,1) ); %Add slope divided by amount of slopes to the mean slope meanSlope = meanSlope + abs(slope) / (size(disc,1)-1); end %Convert slope to angle in degrees meanAngleDisc = atan(meanSlope); meanAngleDiscDeg = meanAngleDisc / (2*pi) * 360 %Calculate mean angle in pin using same procedure as in disc. Two iterations are necessary as pin matrix has two dimensions. meanSlope = 0; for i = 1:size(pin,1)-1 for j = 1:size(pin,2)-1 slope = (pin(i,j) - pin(i,j+1)) / (1/pin_yres); meanSlope = meanSlope + abs(slope) / (size(pin,1)*((size(pin,2)-1)) ) ; end end

21. 22. 23. 24. %Convert slope to angle in degrees 25. meanAnglePin = atan(meanSlope); 26. meanAnglePinDeg = meanAnglePin / (2*pi) * 360

12

3.5

A contact spot is an agglomeration of neighboring points in contact with the opposing surface. For further analysis of contact and friction mechanics it will be useful to know the size and amount of contact spots.

Figure 3.13 - Example of distribution of contact spots across two surfaces in contact. Black is not in contact, white is in contact.

To solve this programmatically, a recursive function has been written to explore the distance matrix from equation (3.5). The strategy is for the recursive function to identify all contact points that are connected to the current point, and thus define a contact spot consisting of all these points in contact. Below is the relevant part from the main script from where the recursive function is called:

1. 2. 3. 4. 5. 6. 7. %Create matrix for mapping discovered points with 1 foundPoints = zeros(size(distance,1), size(distance,2)); %Count amount of spots in this variable spotsAmount = 0; %Create vector for keeping track of how many spots of a certain size. For instance, spotSizes(15) will contain the number of spots of a size of 15 points spotSizes = zeros(10^4,1);

8. 9. 10. %Iterate through the distance matrix (D matrix) 11. for i = 1:size(distance,1) 12. for j = 1:size(distance,2) 13. 14. %New contact spot found if true 15. if distance(i,j) <= 0 && foundPoints(i,j) == 0 16. 17. %Add to amount of spots 18. spotsAmount = spotsAmount + 1; 19.

13

20. 21.

%Call recursive function to explore spot [foundPoints, spotSize] = expSpot(distance, foundPoints, i, j);

22. 23. %Collect spot size 24. spotSizes(spotSize) = spotSizes(spotSize) + 1; 25. end 26. end 27. end

Below is the recursive function expSpot(), which finds all contact points connected to the current point and thus defines a spot:

1. 2. 3. 4. 5. 6. 7. 8. 9. function [returnedPoints, returnedSize] = expSpot(distance, foundPoints, i, j) %The current point is marked as having been identified as a contact point foundPoints(i,j) = 1; %The currently known size of the spot is 1 point spotSize = 1;

%The following if statement returns true if the next point in the positive y-direction is a contact point that is not yet discovered 10. if j+1 <= size(distance,2) && distance(i,j+1) <= 0 && foundPoints(i,j+1) == 0 11. 12. %expSpot() now calls itself upon the neighboring undiscovered contact spot 13. [foundPoints, dspotSize] = expSpot(distance, foundPoints, i, j+1); 14. 15. %Increase the spotsize by what expSpot has just discovered 16. spotSize = spotSize + dspotSize; 17. end 18. 19. %The following if statement returns true if the next point in the negative y-direction is a contact point that is not yet discovered 20. if j-1 > 0 && distance(i,j-1) <= 0 && foundPoints(i,j-1) == 0 21. [foundPoints, dspotSize] = expSpot(distance, foundPoints, i, j-1); 22. spotSize = spotSize + dspotSize; 23. end 24. 25. %The following if statement returns true if the next point in the positive x-direction is a contact point that is not yet discovered 26. if i+1 <= size(distance,1) && distance(i+1,j) <= 0 && foundPoints(i+1,j) == 0 27. [foundPoints, dspotSize] = expSpot(distance, foundPoints, i+1, j); 28. spotSize = spotSize + dspotSize; 29. end 30. 31. %The following if statement returns true if the next point in the negative x-direction is a contact point that is not yet discovered 32. if i-1 > 0 && distance(i-1,j) <= 0 && foundPoints(i-1,j) == 0

14

33.

[foundPoints, dspotSize] = expSpot(distance, foundPoints, i1, j); 34. spotSize = spotSize + dspotSize; 35. end 36. 37. %Return the updated map of already discovered points 38. returnedPoints = foundPoints; 39. 40. %Return the currently known size of the spot 41. returnedSize = spotSize; 42. end

Applying this function to, for instance, the data visualized in Figure 3.13 gives us the amount of spots in the variable spotsAmount as 530. With this the average contact spot size can be determined using the area from equation (3.6):

Aspot ,mean =

Areal spotsAmount

(3.11)

The above function also produces the vector spotSizes which contains an account of how many spots of a given size are present. For instance, if spotSizes(15)=7, then the contact scenario contains 7 spots of a size of 15 points. This can be used to plot the distribution of spot sizes as seen in Figure 3.14.

Figure 3.14 - Distribution of spot sizes in the data seen in Figure 3.13

Knowing the total amount of points and the total apparent area being analyzed, the spot size in points can easily be converted to spot size in mm2:

sizemm2 = sizepts !

15

Aapp N pts

(3.12)

where Npts is the total amount of points, and Aapp is the apparent area being analyzed. With the mean area known, different characteristics of the contact spots can be easily determined assuming a certain geometry. For instance, if the contact spots are assumed to be mostly circular, the average radius is then:

r=

sizemm2

(3.13)

On typical computers the recursive function can only be applied to data sets of a certain size before the programming environment reaches its limits. In practice, many sets of topography data will have to be coarsened in resolution. For the data set used in the above example it was necessary to coarsen the data from 2,000,000 to about 30,000 points. It should be noted that the amount of contact spots conveyed by the data may be susceptible to change as data is coarsened, so a good estimate of the amount of contact spots may require an environment capable of handling recursions of larger data sets. This is further discussed in section 3.6.

3.6

3.6.1

Data coarsening

Scripting The data at hand for this work was of a resolution of about 2,000,000 data points for a surface. For some operations this turned out to be an impractically large amount of data for a typical computer to handle, and one can easily imagine larger data sets posing a problem for even more powerful computers. The data coarsening function will simply remove most data and keep data points at a certain interval as seen below:

1. %Disc data is kept in 'disc'. A temporary new variable, 'disc_new', of a smaller size is created. 2. %'skip' is the factor with which a data set will be made smaller. For instance, skip=5 will keep 1/5 of the original data. 3. disc_new = zeros(ceil(size(disc,1)/skip), 2); 4. 5. %Data is moved into the new variable according to the skip interval. 6. for i = 0:size(disc_new,1)-1 7. disc_new(i+1, 2) = disc(1 + i * skip, 2); 8. disc_new(i+1, 1) = disc(1 + i * skip, 1); 9. end 10. 11. %The old data is replaced by the smaller data. 12. disc = disc_new; 13. 14. %New variable for pin data. 15. pin_new = zeros(ceil(size(pin,1)/skip), ceil(size(pin,2)/skip)); 16. 17. %Pin data has an extra dimension so two for-loops are necessary.

16

1. %If x and y are amount of data points in each dimension of a grid, then the ratio of removed data will be: 2. % 1 - (x/skip)*(y/skip) / (x*y) = 1 - 1/skip^2 18. for i = 0:size(pin_new,1)-1 19. for j = 0:size(pin_new,2)-1 20. pin_new(i+1,j+1) = pin(1 + i * skip, 1 + j * skip); 21. end 22. end 23. 24. pin = pin_new; 25. 26. %Update resolutions 27. pin_xres = pin_xres / skip; 28. pin_yres = pin_yres / skip;

Coarsening and loss of precision By running the script with different values for skip resulting in different shares of data left, it will be determined how much data can be removed without a significant loss of precision in results. skip= Pin data left Contact area, mm 2 Contact area, change Deformati on area, mm 2 Deformati on area, change M ean angle disc M ean angle disc, % change M ean angle pin M ean angle pin, % change 1 100% 0.639 2 25% 0.639 0% 5 4% 0.639 0% 10 1% 0.641 0.31% 50 0.04% 0.625 2.19% 100 0.01% 0.696 8.92%

0.0311

0.0313

0.0303

0.0307

0.0123

0.00409

3.16 16.1 -

* Limits in computational power made it impossible to determine amount of contact spots for more than 10% data with the implemented script Table 3.1 - Loss of precision as data is removed * Limits in computational power made it impossible to determine amount of contact spots for more than 10% data with the implemented script

17

Table 3.1 it is seen that the estimation of contact area does not change significantly until only 0.01% of the original data is left. Even when only 0.04% data is retained the calculated area only differs a few percent. The calculated deformation area is seen to err within acceptable limits until 1% of the data is left. With only 0.04% data left, the error increases dramatically to 60.5%. The calculation of mean angles is seen to be more sensitive to data loss, and the inaccuracy in all cases shows itself as lower angles, never higher angles. This can be explained by the fact that as a sufficient amount of data points are skipped, the next data points to be kept is likely to be on the other side of a peak and thus the slope to the top of the mountain is lost.

For instance, in Figure 3.15 the three black asperities represent the original data set. By data coarsening only data points 1 and 2 are kept and the connecting red line is seen to have a much smaller slope angle than the original asperities. 3.6.2 Linear interpolation

To attempt to increase accuracy after removing data points, linear interpolation between the remaining data points will be performed. Here follows the functions to interpolate disc and pin data respectively:

1. 2. %Keep original data in intervals of 'skip', replace removed data with linearly interpolated points %For disc: Amount of data points to skip before keeping a point. (1 - 1/skip) is the ratio of data that will be removed. skip should be integer.

3. 4. %Move to the next data points to be kept 5. for i = 1+skip:skip:size(disc, 1) 6. 7. %For each removed data point 8. for j = 1:skip-1 9. 10. %Calculate slope of interpolation 11. slope = (disc(i,2) - disc(i-skip, 2)) / skip; 12. 13. %Replace point by interpolation 14. disc(i-skip+j, 2) = disc(i-skip, 2) + j * slope; 15. end 16. end 3. %For pin: Amount of data points to skip before keeping a point. Removing in two dimensions.

18

4. %If x and y are amount of data points in each dimension of a grid, then the ratio of removed data will be: 5. % 1 - (x/skip)*(y/skip) / (x*y) = 1 - 1/skip^2 6. 7. %First dimension of pin 8. for i = 1+skip:skip:size(pin, 1) 9. for j = 1:size(pin, 2) 10. for k = 1:skip-1 11. slope = (pin(i,j) - pin(i-skip, j)) / skip; 12. pin(i-skip+k, j) = pin(i-skip, j) + k * slope; 13. end 14. end 15. end 16. 17. %Second dimension of pin 18. for j = 1+skip:skip:size(pin, 2) 19. for i = 1:size(pin, 1) 20. for k = 1:skip-1 21. slope = (pin(i,j) - pin(i, j-skip)) / skip; 22. pin(i, j-skip+k) = pin(i, j-skip) + k * slope; 23. end 24. end 25. end 26.

Tests were then carried out on the same data set as in section 3.6.1. skip= Data left Contact area, mm 2 Contact area, change Deformati on area, mm 2 Deformati on area, change M ean angle disc M ean angle disc, % change M ean angle pin M ean angle pin, % change 1 100% 0.639 2 25% 0.639 0% 5 4% 0.637 0.31% 10 1% 0.633 0.94% 50 0.04% 0.582 8.92% 100 0.01% 0.695 8.76%

0.0311

0.0304

0.0273

0.0251

0.0110

0.00198

3.16 16.1 -

19

No increase in accuracy is observed with linear interpolation compared to simple data removal. 3.6.3 Polynomial interpolation

To attempt to increase accuracy after removing data points, polynomial interpolation between the remaining data points can be performed. To this end a script was written which, given vectors of x and y coordinates, will calculate coefficients for second degree polynomial splines connecting all points. However, the script turned out to be far too computationally heavy to be applied to more than about a dozen points on a typical computer. This section will examine the script and review its results as when applied to a small data set. With access to more computational power, the script may be applicable to complete data sets.

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. %Create coordinate vectors x = zeros(floor(size(disc,1) / skip) , 1); y = zeros(floor(size(disc,1) / skip) , 1); %Insert points from disc data for i = 1:floor(size(disc,1)/skip), x(i) = disc(1+(i-1)*skip,1); y(i) = disc(1+(i-1)*skip,2); end

%Use MATLAB's numerical equation solver, fsolve(), to determine spline coefficients. eqns() is a custom function that sets up spline equations. 12. result = fsolve(@(K) eqns(x,y,K) , ones(1,(size(x,1)-1)*3) ); 13. 14. %Save spline coefficients. A's are coefficients for x^2, B's are coefficients for x, and C's are standalone constants. 15. A = result(1 : size(x,1)-1 ); 16. B = result(size(x,1) : 2*size(x,1)-2 ); 17. C = result(2*size(x,1)-1 : 3*size(x,1)-3 );

fsolve() will iteratively pass guesses in K to the eqns() function until the results of all equations are 0, so all equations must be of the form f(x)=0. Below is the eqns() function which sets up equations:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. function fcns=eqns(x,y,K) %Guesses in K are split up in A, B, and C which are coefficients for x^2, x and 1 respectively. A = K(1 : size(x,1)-1 ); B = K(size(x,1) : 2*size(x,1)-2); C = K(2*size(x,1)-1 : 3*size(x,1)-3); %Vector for containing equations is initialized. syms H; temp = H;

%Equations for hitting all points (x,y) are now established. For this, two equations are needed for each spline segment, as each spline segment hits two points. 13. for i = 1:size(B,2)

20

14. 15. %The eqn() function returns a second degree polynomial. 16. temp(end+1) = eqn(x(i),y(i),A,B,C,i); 17. temp(end+1) = eqn(x(i+1),y(i+1),A,B,C,i); 18. end 19. 20. %Equations for slopes at spline intersections will now be established. One equation for each point where splines intersect is needed. 21. syms X; 22. for i = 1:size(A,2)-1 23. temp(end+1) = subs( diff(eqn(X,1,A,B,C,i),X) diff(eqn(X,1,A,B,C,i+1),X) , 'X' , x(i+1) ); 24. end 25. 26. %One more equation is needed to have an equal number of equations and unknowns. For this last equation it is arbitrarily decided to dictate a slope of 0 at the very first point. 27. temp(end+1) = subs( diff(eqn(X,0,A,B,C,1),X) - 0 , 'X' , x(1) ); 28. 29. %All equations are converted from symbolic format to double float format before being returned to fsolve(). 30. fcns = double( temp(2:end) ); 31. 32. end

1. 2. 3. function fcn=eqn(X,Y,A,B,C,i) fcn = A(i)*X^2 + B(i)*X + C(i) - Y; end

To test the script it has been applied to the small data set of 11 points as seen in Figure 3.16. In Figure 3.17 the coefficients calculated and saved in A, B and C have been used to plot the splines, and they are seen to intersect all points.

21

With a more powerful computer and/or a more efficient script, this could have been applied to the full data sets, and it could have been measured whether polynomial spline interpolation would result in a smaller loss of accuracy than simple data removal and linear interpolation.

3.7

For further analysis of surface roughness it may be useful to create an enlarged physical model of a rough surface. This can be done on a modern 3D printer which accepts an STL file as input for printing a three dimensional model. A file in the STL format consists of a mesh of triangles and will start with:

solid name

1. 2. 3. 4. 5. 6. 7. facet normal ni nj nk outer loop vertex v1x v1y v1z vertex v2x v2y v2z vertex v3x v3y v3z endloop endfacet

The above is repeated for all triangles. For use in most software, facet normals can be left undefined by assigning a zero-vector. The file is ended with:

endsolid name

22

Here follows the script for the makeSTL() function which produces a three dimensional model in the STL. It takes as arguments the filename to be written, the surface data to be modelled as a two dimensional matrix, and the physical distance between rows and columns in the matrix. The function can only handle surface data arranged in an orderly grid with equal distancing in rows and columns respectively.

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. function returned = makeSTL(filename, surface, x_dist, y_dist) fName = filename; %Text used in the STL file format str1 = 'solid name'; str2 = 'facet normal 0.0e+00 0.0e+00 0.0e+00'; str3 = 'outer loop'; str4 = 'vertex'; str5 = 'endloop'; str6 = 'endfacet'; %File is opened for writing fid = fopen(fName,'w'); %First line is printed fprintf(fid,'%s\r\n',str1); %Iterate through both dimensions of the matrix for i = 1 : size(surface,1)-1 for j = 1 : size(surface,2)-1

%For every four points forming a rectangle in the grid, two triangles will need to be created. 24. for k = 1 : 2; 25. 26. %Triangle vertexes are defined 27. if k == 1 28. vertex1 = [(i-1)*x_dist, (j-1)*y_dist, surface(i,j)]; 29. vertex2 = [(i-1)*x_dist, j*y_dist, surface(i,j+1)]; 30. vertex3 = [i*x_dist, j*y_dist, surface(i+1,j+1)]; 31. end 32. 33. if k == 2 34. vertex1 = [(i-1)*x_dist, (j-1)*y_dist, surface(i,j)]; 35. vertex3 = [i*x_dist, (j-1)*y_dist, surface(i+1,j)]; 36. vertex2 = [i*x_dist, j*y_dist, surface(i+1,j+1)]; 37. end 38. 39. %Begin printing triangle information to file 40. %Begin facet 41. fprintf(fid,'%s\r\n',str2); 42. fprintf(fid,'%s\r\n',str3); 43. 44. %Vertex 1 45. fprintf(fid,'%s ',str4); 46. fprintf(fid,'%d ',vertex1);

23

47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.

%Vertex 2 fprintf(fid,'\n%s ',str4); fprintf(fid,'%d ',vertex2); %Vertex 3 fprintf(fid,'\n%s ',str4); fprintf(fid,'%d ',vertex3); %End facet fprintf(fid,'%s\r\n',str5); fprintf(fid,'%s\r\n',str6); end end end %End file str7 = 'endsolid name'; fprintf(fid,'%s',str7); %Save and close file fclose(fid); end

Used on the supplied pin data in the file Pin10SUSTADURvirginmag10offcenter111118.txt the model is viewed in an STL viewer application as seen in Figure 3.18.

However, as the surface asperities are of a very small magnitude compared to the two other dimensions of the data, it can be hard see the features clearly when printed. Therefore another model will be created where the asperities are enhanced compared to the other dimensions. In Figure 3.19 the same surface data has been used, but the regular x_dist and y_dist parameters have been divided by 5. This will in effect produce asperities 5 times larger when compared to the other dimensions. 24

In Figure 3.20 the model in Figure 3.19 have been printed on DTU Matematikums ZCorp 3D printer. The printer software contains a function that solidifies the flat surface model seen in Figure 3.18 and Figure 3.19 to a solid object with a certain thickness. The circular pattern of asperities is clearly visible, however the printer also in error produced som straight coordinate lines that are not part of the surface.

Discussion

In the above a discrete point by point approach has been used at all times. It was originally the idea to create a triangular 3D mesh from the measured points, and then calculate the interfering area as the mesh comes into contact with the mest of another rough surface. 25

This would have the advantage of avoiding the need to align data points, possibly resulting in greater accuracy. However, the geometrical and programmatical complexity of analyzing the features of such a mesh and calculating the interference area with another mesh is much greather than when working with a point by point analysis. Especially in cases of high data resolution, as with the data employed in this work, the point by point model seems fully sufficient. The marginal added accuracy of a 3D mesh model is unlikely to outweigh the added complexity of geometry and programmatical calculations. Experimental verification Experimentally verifying the model and implementation above is not straight forward because of the many unknowns involved. A litterature search was performed to find suitable methods for experimental verification. The 2000 paper Contact Modeling - Forces by G. G. Adams and M. Nosonovsky refers to the 1992 paper On the experimental verification of the Greenwood-Williamson model for the contact of rough surfaces by HandzelPowierza Z., Klimczak T., and Polijaniuk A., and notes that they obtained good agreement with the theory within the range of elastic deformations and for quasi-isotropic surfaces. However, as this work only deals with deformations above the yield strength of the material, a model that is only in agreement with experimental results in the elastic range will not be useful. The 2006 paper Ultrasonic determination of real contact area of randomly rough surfaces in elastoplastic contact by A. Baltazar, J-Y. Kim, and S.I. Rokhlin proposes a method for calculating the real contact area using a !2 disribution of asperity heights with parameters determined from ultrasonical surface profile measurements. This method differs from most others in the field because it accounts for both elastic and plastic deformations and it could be interesting to compare the results of this method with results obtained from the model used in the present work. Some disagreement is to be expected as the present work does not account for elastic deformation.

Conclusion

A point by point model for calculating the real contact area between two nominally flat surfaces was established. A MATLAB script was implemented to read and restructure topology data from a pin and disk setup and calculate the real contact area using this model. Using the real contact area and the materials yield strength, the contact force was determined. Friction force from adhesion was approximated, and the projected area relevant for deformation ploughing friction was calculated. Furthermore, mean angles of the surfaces microasperities were calculated. Then the size and amount of contact spots were determined using a recursive MATLAB function. The distribution of sizes were plotted. Different techniques were applied to coarsen data for speed of computation: Simple data removal, linear interpolation, and polynomial interpolation.

26

When applying these techniques to example data sets of a pin and disk it was found that about 99.96% of data could be removed before a 2% inaccuracy would occur in the calculated real contact area. For calculating the projected deformation area, 99% of the data could be removed with only a 1.29% loss in precision. However, already at 75% data removal, the estimated mean angle in the disc would err by more than 4%. It was found that linear interpolation did not siginificantly improve upon these inaccuracies. Polynomial spline interpolation was implemented and demonstrated as a MATLAB script, but the script was found too computationally heavy to apply to an actual data set. To facilitate future research on rough surfaces, a script was developed to convert roughness data into a 3D model and save it as an STL file which can be used in a 3D printer. This allows an actual rough surface to be discussed at a magnified scale. The script also allowed for asperities to be enhanced to make them clearly visible. The script was used to produce an example of a magnified pin surface.

27

References

In order of appearance above: R. Gohar and H. Rahnejat, 2008, Fundamentals of Tribology G. G. Adams and M. Nosonovsky, 2000, Contact Modeling - Forces Baltazar, J-Y. Kim, and S.I. Rokhlin, 2006, Ultrasonic determination of real contact area of randomly rough surfaces in elastoplastic contact

Appendices

This work comes with the following electronic attachments to be found on CampusNet in the module of this project:

surfModel.m - Main MATLAB script for loading and analysing roughness data. eqns.m - MATLAB function for establishing equations for polynomial spline interpolation. eqn.m - MATLAB function returning a single second degree polynomial. expSpot.m - Recursive MATLAB function for that finds all data points connected to a contact spot. Used for counting amount of contact spots. makeSTL.m - MATLAB function for creating a 3D model from roughness data and saving it in a file of the STL format. Pin10SUSTADURvirginmag10offcenter111118.txt surface roughness measurements of a pin. Disc08SUSTADURlubricatedR62pos1.asc - surface roughness measurements of a disc. modelStandard.stl - 3D model for printing. modelAmplified.stl - 3D model for printing with amplified asperities.

28

- Dynamics ProjectUploaded byHarvy Evangelista
- IJETR022041Uploaded byerpublication
- IRJET-Manufacturing of Patient Specific Implant Models by 3D Printing Assisted Investment CastingUploaded byIRJET Journal
- ES11Finals ReviewerUploaded byTom John Bontoyan
- ghhjmomuhgyhuUploaded byjayakumar
- Elog GuideUploaded byjasierra7
- Paper Feed Mechanism Separation RollerUploaded bybinkyfish
- cv njumailUploaded byapi-425293056
- force of frictionUploaded bymahfuzul_haque
- Diestress Wizard Lab1Uploaded byvincent02hk_57881301
- matlabUploaded byMike H
- EMS Li SpatialInterpolationReview 2014Uploaded bytheodoradoukaina
- Ch-10Uploaded bySanjay Kumar
- intropostlab_exp4Uploaded byJC Nuqui
- Kriging InterpolationUploaded byyogesh
- FrictionUploaded byKiran S Kumar
- Forces-1Uploaded byArslan Saleem
- ForceUploaded bySam Jones
- Conveyor ChainUploaded byunknown_user_no1
- Vapo Bearing Maglev TechnologyUploaded byMokhammad Sanpradipto Jaluntoro
- 17 003 Joannides.rtio .Wheel Press FitUploaded byVivekDhameliya
- Mechanics Quiz Questions_co3 & Co-4Uploaded byDrSn Padhi
- Highway-Engineering by Chas.pdfUploaded byHenra Halim
- Pot Bearings for Bridges and StructuresUploaded byRatna Emmanuella Novitasari
- Friction Lab2015Uploaded byHeather Feather
- Paper_5_page29-32.pdfUploaded byMeghana
- Perturbation Methods for the Analysis of the DynamicUploaded byAlexander Bennett
- Linear Kinematics (Autosaved)Uploaded byJackson Wang
- G0143_03Uploaded bywellbeingempire
- 785.fullUploaded bydavidhartshorne

- Manufacturability Analysis to Combine Additive and Subtractive ProcessesUploaded byAparna Duggirala
- STEP 7 - Programming With STEP 7Uploaded byClaiton Nunes
- Best PracticesUploaded byfaisal58650
- Ansys Icem Cfd BrochureUploaded byKaan Yaman
- RE and dfhgRapid ProductUploaded byIshak Ansar
- KISSlicer_manual_EN_080215.pdfUploaded byusermella
- AndrewJacksonSlidesOFW7Uploaded byvenkat_09
- Learning Robotics Through Developing a Virtual Robot Simulator in Matlab FinalUploaded byPhạm Ngọc Hòa
- Moldflow TutorialUploaded byArmando Jim
- RP pptUploaded bySahil Sharma
- Mimics Student Edition Course BookUploaded byIngrid Grisel
- Additive ManufactUploaded byAnca Maria Trusca
- Informatics Olympiad Websites and BookUploaded byDavid Turner
- Rapid PrototypingUploaded byAnonymous ecgeyhV
- Imp Notes on rapid prototypingUploaded byAshok Kumar
- ArduinoUploaded byDos Sin
- Data Exchange InterfaceUploaded byManjunatha.chennai
- STL Sand Trap LouverUploaded byImran Hussain
- A Method to Generate Lattice Structure for Additive ManufacturingUploaded bythlpap
- Of Grass GeomUploaded byEMILIO
- Standard Triangulation Language (Stl) FileUploaded byகுமணன்சேனாபதியார்
- Rapid Prototyping Seminar Report.docxUploaded byNaomi Cooke
- Characterization of Parametric Internal Structures for ComponentsUploaded byguilloteARG
- Laminated Object ManufacturingUploaded byjun005
- f3dmanual_3dshopUploaded bygaddargaddar
- Siemens Simatic S 7 300 - 400 -Programming With STEP 7Uploaded byduniaengineering8666
- Mechanism Teaching PPTUploaded bySongXiaoChi
- Drpicz3eUploaded bydzinsyah
- CAESES_STARCCM_optimizationUploaded byalex mobile
- 3D Print SketchupUploaded byArtur Coelho