Description Usage Arguments Value Examples
View source: R/funcs_diffs_explicit_reqs.R
Function to solve diffusion equation using finite difference method, forward euler or explicit scheme, applied in the condition where: a) the diffusion occurs inside a slab of material unidimensionally, or only along one axis, b) the coefficient of diffusion is constant, and c) the boundary conditions are constant. It will return the solution values for the requested time point(s).
1 | mdfexdifftreq(D,dt,l,treq,T,C_i=0,C_f=1,F=0.5)
|
D |
Coefficient of diffusion, constant |
dt |
different between each time steps |
l |
half-length of the slab, usually in cm |
treq |
requested time value(s) |
T |
Total calculated diffusion time |
C_i |
Initial concentration value inside the slab |
C_f |
Dirichlet boundary condition, final concentration coming from the outside of the slab, with one or two elements. If there is only one element, the two sides of the slab (x = -l and x = l) will have the same C_f. If there are two elements, the first element (C_f[1]) will be on x = -l while the second one will be on x = l. |
F |
Fourier's mesh number, should be less than or equal to 0.5 to make sure that the solution is stable |
A matrix with length(treq) number of row and round(L/(sqrt(D*dt/F)),0) number of column, profiling the diffusion on the slab for the requested time point(s).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | C_i = 0.00 # Initial concentration inside the slab
C_f = 1.00 # Final concentration coming from outside
D = 10^-7 # Coefficient of diffusion, cm^2/s
dt = 60 # difference between each time step
l = 0.25 # half-thickness of the slab, in cm
F = 0.5 # Fourier's mesh number
T = 432000 # Total measured time in seconds (~5 days)
treq = seq(1e2,1e5,length.out = 40) # requested time points
ureq <- mdfexdifftreq(D,dt,l,treq,T,C_i,C_f,F)
# Using plotly for plotting a contour plot
library(plotly)
df.list <- list(x = seq(-l,l,length.out = ncol(ureq)),
y = treq,
z = ureq)
plot_ly() %>%
add_contour(x = df.list$x, y = df.list$y, z = df.list$z) %>%
layout(title = "Contour plot diffusion",
xaxis = list(title = "x"),
yaxis = list(title = "Requested time points (s)"))
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.