Differential equations for chemical kinetics
Atmospheric Modelling course Sampo Smolander sampo.smolander@helsinki.fi 15.11.2010
Sampo Smolander Chemical kinetics 15.11.2010 1 / 24
Differential equations for chemical kinetics Atmospheric Modelling - - PowerPoint PPT Presentation
Differential equations for chemical kinetics Atmospheric Modelling course Sampo Smolander sampo.smolander@helsinki.fi 15.11.2010 Sampo Smolander Chemical kinetics 15.11.2010 1 / 24 Chemical equation products : reactants rate
Sampo Smolander Chemical kinetics 15.11.2010 1 / 24
Sampo Smolander Chemical kinetics 15.11.2010 2 / 24
Sampo Smolander Chemical kinetics 15.11.2010 3 / 24
Sampo Smolander Chemical kinetics 15.11.2010 4 / 24
Sampo Smolander Chemical kinetics 15.11.2010 5 / 24
http://en.wikipedia.org/wiki/Brusselator http://www.idea.wsu.edu/OscilChem/#Brusselator%20Model
Sampo Smolander Chemical kinetics 15.11.2010 6 / 24
∂[X] ∂t = −k1[A]
∂[X] ∂t =
∂[Y] ∂t = −k2[X]2[Y]
∂[X] ∂t = −k3[X][B] ∂[Y] ∂t =
∂[X] ∂t = −k4[X]
Sampo Smolander Chemical kinetics 15.11.2010 7 / 24
∂[X] ∂t = −k1[A] , ∂[X] ∂t = k2[X]2[Y] , ∂[X] ∂t = −k3[X][B] , ∂[X] ∂t = −k4[X] into
Sampo Smolander Chemical kinetics 15.11.2010 8 / 24
Sampo Smolander Chemical kinetics 15.11.2010 9 / 24
! c(1)=X, c(2)=Y; cc(1)=A, cc(2)=B SUBROUTINE deriv (dc, c , cc , k) REAL(dp) , INTENT( in ) : : c(dim_c) , cc(dim_cc) ,k(dim_k) REAL(dp) , INTENT(out) : : dc(dim_c) dc(1) = k(1)✯cc(1) + k(2)✯c(1)✯c(1)✯c(2) & − k(3)✯cc(2)✯c(1) − k(4)✯c(1) dc(2) = k(3)✯cc(2)✯c(1) − k(2)✯c(1)✯c(1)✯c(2) END SUBROUTINE deriv
Sampo Smolander Chemical kinetics 15.11.2010 10 / 24
PROGRAM brusselator ! http : / / en. wikipedia . org / wiki / Brusselator IMPLICIT NONE INTEGER, PARAMETER : : dp = SELECTED_REAL_KIND(15) ! so that things w il l be in double precision ! http : / / en. wikipedia . org / wiki / Double_precision_floating−point_format INTEGER, PARAMETER : : dim_c = 2, dim_cc = 2, dim_k = 4 REAL(dp) : : dt , t , t2 , k(dim_k) ,c(dim_c) ,dc(dim_c) , cc(dim_cc) dt = 0.2 ! time step k = ( / 1.0 , 1.0 , 1.0 , 1.0 / ) ! rate coeffs ! i n i t i a l conditions cc(1) = 1.0 ; cc(2) = 2.5 ; c(1) = 1.0 ; c(2) = 0.0 t = 0.0 ; t2 = 10✯60.0 WRITE(✯ ,✯) c DO WHILE ( t < t2 ) CALL deriv (dc , c , cc , k) c = c + dc✯dt WRITE(✯ ,✯) c t = t+dt END DO CONTAINS SUBROUTINE deriv (dc , c , cc , k) REAL(dp) , INTENT( in ) : : c(dim_c) , cc(dim_cc) ,k(dim_k) REAL(dp) , INTENT(out) : : dc(dim_c) dc(1) = k(1)✯cc(1) + k(2)✯c(1)✯c(1)✯c(2) − k(3)✯cc(2)✯c(1) − k(4)✯c(1) dc(2) = k(3)✯cc(2)✯c(1) − k(2)✯c(1)✯c(1)✯c(2) END SUBROUTINE deriv END PROGRAM brusselator Sampo Smolander Chemical kinetics 15.11.2010 11 / 24
20 40 60 80 100 120 140 0.5 1.0 1.5 2.0 2.5 3.0 3.5 20 40 60 80 100 120 140 0.5 1.0 1.5 2.0 2.5 3.0 3.5
Sampo Smolander Chemical kinetics 15.11.2010 12 / 24
50 100 150 200 250 300 0.5 1.0 1.5 2.0 2.5 3.0 3.5 50 100 150 200 250 300 0.5 1.0 1.5 2.0 2.5 3.0 3.5
Sampo Smolander Chemical kinetics 15.11.2010 13 / 24
∂t , ∂c2 ∂t , . . .
Sampo Smolander Chemical kinetics 15.11.2010 14 / 24
∂t = f(C, t) defines a vector field in every
Sampo Smolander Chemical kinetics 15.11.2010 15 / 24
Sampo Smolander Chemical kinetics 15.11.2010 16 / 24
∂t
∂t
Sampo Smolander Chemical kinetics 15.11.2010 17 / 24
Sampo Smolander Chemical kinetics 15.11.2010 18 / 24
Sampo Smolander Chemical kinetics 15.11.2010 19 / 24
Sampo Smolander Chemical kinetics 15.11.2010 20 / 24
Sampo Smolander Chemical kinetics 15.11.2010 21 / 24
5 10 15 20 25 30 0.5 1.0 1.5 2.0 2.5 3.0 3.5
(So that they should have about the same computational cost)
Sampo Smolander Chemical kinetics 15.11.2010 22 / 24
5 10 15 20 25 30 0.5 1.0 1.5 2.0 2.5 3.0 3.5
Sampo Smolander Chemical kinetics 15.11.2010 23 / 24
Sampo Smolander Chemical kinetics 15.11.2010 24 / 24