source: palm/trunk/UTIL/chemistry/gasphase_preproc/kpp/drv/general_ddm_ic.f @ 3997

Last change on this file since 3997 was 2696, checked in by kanani, 6 years ago

Merge of branch palm4u into trunk

File size: 3.2 KB
Line 
1C --- Driver for computing sensitivity coefficients w.r.t. all initial values
2      PROGRAM driver
3
4      INCLUDE 'KPP_ROOT_Parameters.h'
5      INCLUDE 'KPP_ROOT_Global.h'
6
7C ---  Number of sensitivity coefficients to compute
8C ---  Note: this value is set for sensitivities w.r.t. all initial values
9C ---       it may have to be changed for other applications
10      INTEGER NSENSIT
11      PARAMETER (NSENSIT = NVAR)
12     
13      KPP_REAL  DVAL(NSPEC)
14      KPP_REAL  Y(NVAR*(NSENSIT+1))
15C ---  Note: Y contains: (1:NVAR) concentrations, followed by
16C ---                   (1:NVAR) sensitivities w.r.t. first parameter, followed by
17C ---                   etc.,  followed by         
18C ---                   (1:NVAR) sensitivities w.r.t. NSENSIT's parameter
19
20      INTEGER i
21
22C --- The type of sensitivity coefficients to compute
23C --- DDMTYPE = 0 : sensitivities w.r.t. initial values
24C --- DDMTYPE = 1 : sensitivities w.r.t. parameters
25      DDMTYPE = 0
26   
27C ---- TIME VARIABLES ------------------     
28
29      TSTART = 0
30      TEND = TSTART + 600
31      DT = 60.
32      TEMP = 298
33
34      STEPMIN = 0.01
35      STEPMAX = 900
36
37      PRINT*,'Please provide: RTOL = , ATOL = '
38      READ*,RTOLS, ATOLS
39      do i=1,NVAR
40        RTOL(i) = RTOLS
41        ATOL(i) = ATOLS
42      end do
43   
44C ********** TIME LOOP *************************
45
46      CALL Initialize()
47
48C -- Initialize Concentrations and Sensitivities
49      DO i=1,NVAR
50         Y(i) = VAR(i)
51      END DO
52       
53C ---  Note: the initial values below are for sensitivities w.r.t. initial values;
54C ---       they may have to be changed for other applications
55      DO j=1,NSENSIT
56        DO i=1,NVAR
57           Y(i+NVAR*j) = 0.0D0
58        END DO
59        Y(j+NVAR*j) = 1.0D0
60      END DO
61
62      CALL InitSaveData()
63
64      WRITE(6,990) (SPC_NAMES(MONITOR(i)), i=1,NMONITOR),
65     *             (SMASS(i), i=1,NMASS )
66990   FORMAT('done[%] Time[h] ',20(4X,A6))
67
68      TIME = TSTART
69      DO WHILE (TIME .lt. TEND)
70
71        CALL GetMass( C, DVAL )
72        WRITE(6,991) (TIME-TSTART)/(TEND-TSTART)*100, TIME/3600.,
73     *               (C(MONITOR(i))/CFACTOR, i=1,NMONITOR),
74     *               (DVAL(i)/CFACTOR, i=1,NMASS)
75991   FORMAT(F6.1,'% ',F7.2,3X,20(E10.4,2X))
76
77        CALL SaveData()
78
79        CALL Update_SUN()
80        CALL Update_RCONST()
81       
82        CALL INTEGRATE( NSENSIT, Y, TIME, TIME+DT )
83
84        DO i=1,NVAR
85           VAR(i) = Y(i)
86        END DO
87       
88      END DO
89
90      CALL GetMass( C, DVAL )
91      WRITE(6,991) (TIME-TSTART)/(TEND-TSTART)*100, TIME/3600.,
92     *               (C(MONITOR(i))/CFACTOR, i=1,NMONITOR),
93     *               (DVAL(i)/CFACTOR, i=1,NMASS)
94
95C      DO i=1,NSENSIT
96C        WRITE(6,992) i, ( Y(NVAR*i+j), j=1,NVAR )         
97C      END DO
98C 992  FORMAT('SEN(',I3,') = ',1000(E10.4,2X))
99
100      CALL SaveData()
101
102C *********** END TIME LOOP ********
103      OPEN(20, FILE='KPP_ROOT_results.m')
104      WRITE(6,*) '**************************************************'
105      WRITE(6,*) '* Concentrations and Sensitivities at final time *'
106      WRITE(6,*) '*  were written in the file KPP_ROOT_results.m  *'
107      WRITE(6,*) '**************************************************'
108      DO i=0,NSENSIT
109        WRITE(20,993) ( Y(NVAR*i+j), j=1,NVAR )         
110      END DO
111 993  FORMAT(1000(E24.16,2X))
112
113      CALL CloseSaveData()
114
115      STOP
116      END
117
Note: See TracBrowser for help on using the repository browser.