Lab 3 Particle Size Analysis
Example Data
Make sure you use fraction passing in the calculations. If you use percent instead of fraction passing the equations and code will not work.
Videos below showing how to do the data analysis for this lab in either Excel or R.
The following example data set is used:
Sieve Size (mm) | Average Size in Class (mm) | Percent in Class | Fraction Retained | Fraction Passing |
---|---|---|---|---|
90 | NA | 0.0 | 0.000 | 1.000 |
75 | 82.1584 | 4.7 | 0.047 | 0.953 |
19 | 37.7492 | 14.4 | 0.191 | 0.809 |
4 | 8.7178 | 20.7 | 0.398 | 0.602 |
1 | 2 | 17.5 | 0.573 | 0.427 |
0.6 | 0.7746 | 7.1 | 0.644 | 0.356 |
0.125 | 0.2739 | 13.6 | 0.780 | 0.220 |
0.063 | 0.0887 | 6.2 | 0.842 | 0.158 |
Pan | 1.3 x 10-7 | 15.8 | 1.000 | 0.000 |
For average size in class: \(82.1584 = \sqrt{90 \times 75}\). For the last row \(1.3 \times 10^{-7} = e^{-\frac{1}{0.063}}\).
Excel
For this lab, I would recommend making the plots by hand if using Excel. See the end of the video on using R to see how the plots should look.
R
To do the analysis in R, you must install R and RStudio on your computer. The following links should work for most in the class. If you need help, contact me.
Install R:
Install RStudio:
See the beginning of the Excel video for some more insight into the fraction passing calculations
Code for generating plots:
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
size.vec <- seq(from = 0.01, to = 0.1, by = 0.01)
size.use <- numeric()
for(i in 1:4){
size.use <- c(size.use,size.vec*10^(i-1))
}
size.use <- unique(size.use)
size.majors <- 0.01*10^seq(from = 0, to = 4, by = 1)
size.majors.gs <- log(size.majors)
frac.pass <- seq(from = 0.01, to = 0.1, by = 0.01)
frac.pass <- c(frac.pass,frac.pass*10)
frac.pass.majors <- c(0.01,0.1,1)
frac.pass.majors.gs <- log(frac.pass.majors)
frac.pass <- unique(frac.pass)
frac.pass <- frac.pass[-10]
gs.transf.size <- log(size.use)
gs.transf.frac <- log(frac.pass)
main.label <- paste("G-S Plot By: ", user.name)
user.first <- unlist(strsplit(user.name, split =" "))[1]
user.last <- unlist(strsplit(user.name, split =" "))[2]
pdf(paste(user.last, user.first,"G-S_Plot.pdf", sep = "_"))
par(mar = c(4,4,4,1))
plot(1,ylim = range(gs.transf.frac), xlim = range(gs.transf.size),main= main.label,xlab ="Size (mm)", ylab = "Cumulative Fraction Passing", xaxt = "n", yaxt = "n", cex = 0.8)
abline(v = gs.transf.size, lty = 2, col = "grey", lwd = 0.7)
abline(v = size.majors.gs, lty = 2)
abline(h = gs.transf.frac, lty = 2, col = "grey", lwd = 0.7)
abline(h = frac.pass.majors.gs, lty = 2)
axis(1,at = size.majors.gs, labels = as.character(size.majors), cex.axis = 0.5)
axis(2,at = gs.transf.frac, labels = FALSE, cex.axis = 0.6)
axis(2, at = gs.transf.frac[c(1,seq(from = 2, to = 10, by = 2),seq(from = 11, to = 19, by = 2))], tick = FALSE,labels = frac.pass[c(1,seq(from = 2, to = 10, by = 2),seq(from = 11, to = 19, by = 2))], cex.axis = 0.5)
points(ln.X, gs.ln.Y, pch = 19, col = "red")
lines(gs.transf.size, m*gs.transf.size - m*log(k))
abline(v = log(k), col ="red", lty = 2)
text(x = log(k), y = log(0.01),labels = paste("k = ",round(k, digits = 3), "mm", sep = ""), adj = c(0,1))
dev.off()
size.majors.rr <- log(size.majors)
frac.pass.majors.rr <- log(-log(1-frac.pass.majors))
frac.pass <- unique(frac.pass)
frac.pass <- frac.pass[-10]
rr.transf.size <- log(size.use)
rr.transf.frac <- log(-log(1-frac.pass))
main.label <- paste("R-R Plot By: ", user.name)
pdf(paste(user.last, user.first,"R-R_Plot.pdf", sep = "_"))
par(mar = c(4,4,4,1))
plot(NA,ylim = range(rr.transf.frac), xlim = range(rr.transf.size),xlab ="Size (mm)", main = main.label, ylab = "Cumulative Fraction Passing", xaxt = "n", yaxt = "n", cex = 0.8)
abline(v = rr.transf.size, lty = 2, col = "grey", lwd = 0.7)
abline(v = size.majors.rr, lty = 2)
abline(h = gs.transf.frac, lty = 2, col = "grey", lwd = 0.7)
abline(h = frac.pass.majors.rr, lty = 2)
abline(h = rr.transf.frac[length(rr.transf.frac)], lty = 2)
abline(h = log(-log(1-0.6321)), lty = 2, col= "red")
axis(1,at = size.majors.rr, labels = as.character(size.majors), cex.axis = 0.5)
axis(2,at = rr.transf.frac, labels = FALSE, cex.axis = 0.6)
axis(2, at = rr.transf.frac[c(1,seq(from = 2, to = 10, by = 2),seq(from = 11, to = 19, by = 2))], tick = FALSE,labels = frac.pass[c(1,seq(from = 2, to = 10, by = 2),seq(from = 11, to = 19, by = 2))], cex.axis = 0.5)
points(ln.X, rr.ln.Y, pch = 19, col = "blue")
lines(rr.transf.size, rr.m*rr.transf.size - rr.m*log(R))
abline(v = log(R), col ="red", lty = 2)
text(x = log(R), y = log(0.01),labels = paste("R = ",round(R, digits = 3), "mm", sep = ""), adj = c(0,1))
dev.off()