Lab 3 Particle Size Analysis

Lab 3

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()
Previous
Next