mdfexdiffulibre: 1D diffusion, boundary constant, FD explicit, unbounded by F

Description Usage Arguments Value Examples

View source: R/funcs_diffs_explicit_nolimF.R

Description

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.

Usage

1
mdfexdiffulibre(D,dt,dx,l,T,C_i=0,C_f=1)

Arguments

D

Coefficient of diffusion, constant

dt

different between each time steps

dx

different between each space (x) steps

l

half-length of the slab, usually in cm

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.

Value

A matrix with round(T/dt,0) number of row and round(L/dx,0) number of column, profiling the diffusion on slab.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
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
dx = 0.01 # space step in cm
l = 0.25 # half-thickness of the slab, in cm
T = 432000 # Total measured time in seconds (~5 days)
u <- mdfexdiffulibre(D,dt,dx,l,T,C_i,C_f)

# Using plotly for plotting a contour plot
library(plotly)

df.list <- list(x = seq(-l,l,length.out = ncol(u)),
                y = seq(0,T,length.out = nrow(u)),
                z = u)

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 = "t (s)"))

ahmad-alkadri/Rdiffsolver documentation built on Feb. 4, 2020, 9:45 p.m.