12 Options = odeset('AbsTol',ATOLS,'RelTol',RTOLS,'Jacobian',@KPP_ROOT_Jac_Chem);
14 % ********** TIME LOOP *************************
16 C(1:KPP_NVAR) = VAR(1:KPP_NVAR);
17 C((KPP_NVAR+1):KPP_NSPEC) = FIX(1:KPP_NFIX);
18 DVAL = KPP_ROOT_GetMass( C );
19 if ( ~isempty(SMASS) )
20 fprintf('Initial Mass = %10.4e\n', DVAL(1:NMASS)/CFACTOR);
23 % KPP_ROOT_InitializeSaveData;
25 % disp(['Done[%] Time[h] ',SPC_NAMES(MONITOR(1:NMONITOR))])
29 Tspan = linspace( TSTART, TEND, 100 );
31 [T, Y] = ode15s(@KPP_ROOT_Fun_Chem, Tspan, VAR, Options);
33 VAR(1:KPP_NVAR) = Y(length(T),1:KPP_NVAR)';
34 Y = [Y, ones(length(T),1)*FIX(:)'];
36 C(1:KPP_NVAR) = VAR(1:KPP_NVAR);
37 C((NVAR+1):NSPEC) = FIX(1:NFIX);
38 DVAL = KPP_ROOT_GetMass( C );
40 fprintf('done %6.1f, %7.2h hours', (TIME-TSTART)/(TEND-TSTART), TIME/3600.);
41 disp( Y(:,MONITOR(1:NMONITOR))/CFACTOR );
42 if ( ~isempty(SMASS) )
43 fprintf('Final Mass = %10.4e\n', DVAL(1:NMASS)/CFACTOR);
47 figure; plot( (T)/3600, Y(:,MONITOR(i))/CFACTOR );
48 title( SPC_NAMES( MONITOR(i),:) ,'FontSize',12);
49 set(gca,'XLim',[TSTART,TEND]/3600,'FontSize',12);
50 xlabel('Time [ h ]','FontSize',12);
51 ylabel('Concentration','FontSize',12);
54 % KPP_ROOT_FUNC_SaveData;
55 % KPP_ROOT_FUNC_CloseSaveData;
60 % function P = KPP_ROOT_Fun_Chem(T, Y)
62 % global TIME FIX RCONST
66 % KPP_ROOT_Update_SUN;
67 % KPP_ROOT_Update_RCONST;
68 % P = KPP_ROOT_Fun( Y, FIX, RCONST );
73 % function J = KPP_ROOT_Jac_Chem(T, Y)
75 % global TIME FIX RCONST ;
79 % KPP_ROOT_Update_SUN;
80 % KPP_ROOT_Update_RCONST;
81 % J = KPP_ROOT_Jac_SP( Y, FIX, RCONST );