Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / chem / KPP / kpp / kpp-2.1 / drv / general.f90
blobcda21d08e948a9834901dba45cf44e14c6980b44
1 PROGRAM KPP_ROOT_Driver
3 USE KPP_ROOT_Model
4 USE KPP_ROOT_Initialize, ONLY: Initialize
6 KPP_REAL :: T, DVAL(NSPEC)
7 KPP_REAL :: RSTATE(20)
8 INTEGER :: i
10 !~~~> TIME VARIABLES
12 STEPMIN = 0.0d0
13 STEPMAX = 0.0d0
15 DO i=1,NVAR
16 RTOL(i) = 1.0d-4
17 ATOL(i) = 1.0d-3
18 END DO
20 CALL Initialize()
21 CALL InitSaveData()
23 !~~~> Time loop
24 T = TSTART
25 kron: DO WHILE (T < TEND)
27 CALL GetMass( C, DVAL )
28 WRITE(6,991) (T-TSTART)/(TEND-TSTART)*100, T, &
29 ( TRIM(SPC_NAMES(MONITOR(i))), &
30 C(MONITOR(i))/CFACTOR, i=1,NMONITOR ), &
31 ( TRIM(SMASS(i)), DVAL(i)/CFACTOR, i=1,NMASS )
32 TIME = T
33 CALL SaveData()
34 CALL Update_SUN()
35 CALL Update_RCONST()
37 CALL INTEGRATE( TIN = T, TOUT = T+DT, RSTATUS_U = RSTATE, &
38 ICNTRL_U = (/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /) )
39 T = RSTATE(1)
41 END DO kron
42 !~~~> End Time loop
44 CALL GetMass( C, DVAL )
45 WRITE(6,991) (T-TSTART)/(TEND-TSTART)*100, T, &
46 ( TRIM(SPC_NAMES(MONITOR(i))), &
47 C(MONITOR(i))/CFACTOR, i=1,NMONITOR ), &
48 ( TRIM(SMASS(i)), DVAL(i)/CFACTOR, i=1,NMASS )
49 TIME = T
50 CALL SaveData()
51 CALL CloseSaveData()
53 990 FORMAT('Done[%]. Time ',20(4X,A12))
54 991 FORMAT(F6.1,'%. T=',E9.3,2X,200(A,'=',E11.4,'; '))
56 END PROGRAM KPP_ROOT_Driver