added README_changes.txt
[wrffire.git] / wrfv2_fire / chem / KPP / kpp / kpp-2.1 / drv / general_stochastic.f90
blobb7c93614ff0528a5cc732ebb8a007f080e055743
1 PROGRAM KPP_ROOT_Driver
3 USE KPP_ROOT_Model
4 USE KPP_ROOT_Initialize, ONLY: Initialize
6 IMPLICIT NONE
8 !~~~> No. of Stochastic events per simulation snaphot
9 INTEGER :: Nevents
10 !~~~> No. of Stochastic tau-steps simulation snaphot
11 INTEGER :: Nsteps
12 !~~~> No. of Molecules
13 INTEGER :: NmlcV(NVAR), NmlcF(NFIX)
14 !~~~> Random numbers
15 REAL :: r1, r2
16 !~~~> Local variables
17 INTEGER :: i
18 KPP_REAL :: T, Tau, SCT(NREACT)
20 !~~~~> Initialize and prescribe volume and no. of events
21 CALL Initialize()
22 ! Volume = 1000.0d0
23 Nevents = 5000
24 Nsteps = 10
25 Tau = (TEND-TSTART)/100.0
26 !~~~~~~~~~~~~~~~~
28 !~~~> Translate initial values from conc. to NmlcVules
29 NmlcV(1:NVAR) = INT(Volume*VAR(1:NVAR))
30 NmlcF(1:NFIX) = INT(Volume*FIX(1:NFIX))
31 !~~~> Compute the stochastic reaction rates
32 CALL Update_RCONST()
33 CALL StochasticRates( RCONST, Volume, SCT )
35 !~~~> Save initial data
36 OPEN(10, file='KPP_ROOT_stochastic.dat')
37 WRITE(10,992) T, (NmlcV(i),i=1,NVAR)
39 !~~~> TIME loop starts
40 T = TSTART
41 kron: DO WHILE (T < TEND)
43 WRITE(6,991) T,(SPC_NAMES(i),NmlcV(i), i=1,NVAR)
45 !~~~> Choose here one of the following time-stepping routines
46 CALL Gillespie(Nevents, T, SCT, NmlcV, NmlcF)
47 ! CALL TauLeap(Nsteps, Tau, T, SCT, NmlcV, NmlcF)
49 WRITE(10,992) T, (NmlcV(i),i=1,NVAR)
51 END DO kron
52 !~~~> TIME loop ends
54 WRITE(6,991) T,(SPC_NAMES(i), NmlcV(i), i=1,NVAR)
56 CLOSE(10)
58 991 FORMAT('T=',F12.3,20(A,'=',I5,'; '))
59 992 FORMAT(E24.14,200(1X,I12))
62 END PROGRAM KPP_ROOT_Driver