Decomposition Modeling
This commit is contained in:
parent
f68c9b10fb
commit
7b48a4a5e2
@ -329,7 +329,54 @@ sir.ode.sol.b <- ode45(f = function(t,y){sir.f(t,y,k=sir.params.b)},
|
|||||||
plot.sir(sir.ode.sol.b, "ODE45 with a=3")
|
plot.sir(sir.ode.sol.b, "ODE45 with a=3")
|
||||||
|
|
||||||
## 6. Decomp of dinitrogen pentoxygen into nitrogen dioxide and molecular oxygen
|
## 6. Decomp of dinitrogen pentoxygen into nitrogen dioxide and molecular oxygen
|
||||||
|
decomp.f <- function(t, y, k) {
|
||||||
|
dA <- -k[1]*y[1] + k[2]* y[2]*y[4]
|
||||||
|
dB <- k[1]*y[1] - k[2]*y[2]*y[4] + 2*k[4]*y[4]*y[5]
|
||||||
|
dC <- k[3]*y[2]*y[4]
|
||||||
|
dD <- k[1]*y[1] - k[2]*y[2]*y[4] - k[3]*y[2]*y[4] - k[4]*y[4]*y[5]
|
||||||
|
dE <- k[3]*y[2]*y[4] - k[4]*y[4]*y[5]
|
||||||
|
return(as.matrix(c(dA, dB, dC, dD, dE)))
|
||||||
|
}
|
||||||
|
|
||||||
# a) k1=1.0, k2=0.5, k3=0.2,k4=1.5, [N2O5]o=1, all other IC's=0, t=0 -> 10
|
# a) k1=1.0, k2=0.5, k3=0.2,k4=1.5, [N2O5]o=1, all other IC's=0, t=0 -> 10
|
||||||
|
decomp.params <- c(1.0, 0.5, 0.2, 1.5)
|
||||||
|
A0 <- 1
|
||||||
|
B0 <- 0; C0 <- 0; D0 <- 0; E0 <- 0
|
||||||
|
tmin <- 0
|
||||||
|
tmax <- 10
|
||||||
|
|
||||||
# b) Increase k4 to make the intermediate species -> 0
|
decomp.ode.sol <- ode45(f = function(t,y){decomp.f(t,y,k=decomp.params)},
|
||||||
|
y = c(A0, B0, C0, D0, E0),
|
||||||
|
t0 = tmin, tfinal = tmax)
|
||||||
|
|
||||||
|
# plot
|
||||||
|
plot.decomp <- function(sol, method){
|
||||||
|
# - pred/prey columns melted to 1 column called "value"
|
||||||
|
sol.melted <- melt(data.frame(time=sol$t,
|
||||||
|
N2O5=sol$y[,1],
|
||||||
|
NO2=sol$y[,2],
|
||||||
|
O2=sol$y[,3],
|
||||||
|
NO3=sol$y[,4],
|
||||||
|
NO=sol$y[,5]),
|
||||||
|
id = "time") # melt based on time
|
||||||
|
# New column created with variable names, called “variable”
|
||||||
|
colnames(sol.melted)[2] <- "Group" # used in legend
|
||||||
|
|
||||||
|
g <- ggplot(data = sol.melted,
|
||||||
|
aes(x = time, y = value, color = Group))
|
||||||
|
g <- g + geom_point(size=2)
|
||||||
|
g <- g + xlab("time [seconds]") + ylab("Concentration")
|
||||||
|
g <- g + ggtitle(paste("Decomposition Model Using", method))
|
||||||
|
show(g)
|
||||||
|
}
|
||||||
|
|
||||||
|
plot.decomp(decomp.ode.sol, "ODE45")
|
||||||
|
|
||||||
|
# b) Increase k4 to make the intermediate species -> 0
|
||||||
|
k4 <- 10
|
||||||
|
decomp.params.b <- c(1.0, 0.5, 0.2, k4)
|
||||||
|
decomp.ode.sol.b <- ode45(f = function(t,y){decomp.f(t,y,k=decomp.params.b)},
|
||||||
|
y = c(A0, B0, C0, D0, E0),
|
||||||
|
t0 = tmin, tfinal = 100)
|
||||||
|
plot.decomp(decomp.ode.sol.b, paste("ODE45 Using k4 =", k4))
|
||||||
|
decomp.ode.sol.b$y[,5]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user