1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
program tt
implicit none
integer, parameter :: n = 100
integer :: i
double precision :: k1, k2, k3, K4
double precision :: dt, dz, G
double precision :: XH2O
double precision, dimension(n) :: XNO, XNO2, XHNO2
double precision, dimension(n) :: dXNO, dXNO2, dXHNO2
double precision, dimension(n) :: dfrac, frac
i = 0
dz = 0.1d0
XNO(:) = 0.5d0
XNO2(:) = 0.3d0
XHNO2(:) = 0.1d0
XH2O = 0.2d0
k1 = 1.d0
k2 = 1.d0
k3 = 1.d0
k4 = 1.d0
G = 1.d0
dt = 0.001d0
do while (i<n-1)
i=i+1
dXNO(i)=dz*(-G*k1*XNO(i)*XNO2(i)*XH2O+G*k1*XHNO2(i)**2)
dXNO2(i)=dz*(-G*k1*XNO(i)*XNO2(i)*XH2O+G*k1*XHNO2(i)**2)
dXHNO2(i)=dz*G*(k1*XNO(i)*XNO2(i)*XH2O &
+k4*XH2O**2*(1-frac(i)))/(k2+k3*frac(i))
dfrac(i)=dt*(-k4*(1-frac(i))*XH2O**2+k3*frac(i)*XHNO2(i)**2)
frac(i)=DMAX1(frac(i)-dt*dfrac(i),0.0D+00)
XNO2(i+1)=XNO2(i)+dXNO2(i)
XNO(i+1)=XNO(i)+dXNO(i)
XHNO2(i+1)=XHNO2(i)+dXHNO2(i)
enddo
end program tt |
Partager