Index: /palm/trunk/SOURCE/Makefile
===================================================================
--- /palm/trunk/SOURCE/Makefile	(revision 3879)
+++ /palm/trunk/SOURCE/Makefile	(revision 3880)
@@ -1513,7 +1513,4 @@
 	buoyancy.o \
 	chemistry_model_mod.o \
-	chem_gasphase_mod.o \
-	chem_modules.o \
-	chem_photolysis_mod.o \
 	coriolis.o \
 	cpulog_mod.o \
Index: /palm/trunk/SOURCE/chemistry_model_mod.f90
===================================================================
--- /palm/trunk/SOURCE/chemistry_model_mod.f90	(revision 3879)
+++ /palm/trunk/SOURCE/chemistry_model_mod.f90	(revision 3880)
@@ -285,9 +285,21 @@
  MODULE chemistry_model_mod
 
+    USE advec_s_pw_mod,                                                                            &
+         ONLY:  advec_s_pw
+
+    USE advec_s_up_mod,                                                                            &
+         ONLY:  advec_s_up
+
+    USE advec_ws,                                                                                  &
+         ONLY:  advec_s_ws
+
+    USE diffusion_s_mod,                                                                           &
+         ONLY:  diffusion_s
+
     USE kinds,                                                                                     &
          ONLY:  iwp, wp
 
     USE indices,                                                                                   &
-         ONLY:  nbgp, nz, nzb, nzt, nysg, nyng, nxlg, nxrg, nys, nyn, nx, nxl, nxr, ny, wall_flags_0
+         ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, nz, nzb, nzt, wall_flags_0
 
     USE pegrid,                                                                                    &
@@ -319,5 +331,9 @@
     USE statistics
 
+    USE surface_mod,                                                                               &
+         ONLY:  surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v, surf_usm_h, surf_usm_v
+
     IMPLICIT NONE
+
     PRIVATE
     SAVE
@@ -614,14 +630,6 @@
  SUBROUTINE chem_3d_data_averaging( mode, variable )
 
+
     USE control_parameters
-
-    USE indices
-
-    USE kinds
-
-    USE surface_mod,                                                         &
-         ONLY:  surf_def_h, surf_lsm_h, surf_usm_h   
-
-    IMPLICIT NONE
 
     CHARACTER (LEN=*) ::  mode     !< 
@@ -736,7 +744,4 @@
         ONLY:  bc_radiation_l, bc_radiation_n, bc_radiation_r, bc_radiation_s
 
-    USE indices,                                                               &  
-        ONLY:  nxl, nxr, nzt                              
-
     USE arrays_3d,                                                             &     
         ONLY:  dzu                                                
@@ -873,15 +878,14 @@
 ! ------------
 !> Boundary conditions for prognostic variables in chemistry: decycling in the 
-!> x-direction
+!> x-direction-
+!> Decycling of chemistry variables: Dirichlet BCs with cyclic is frequently not
+!> approproate for chemicals compounds since they may accumulate too much.
+!> If no proper boundary conditions from a DYNAMIC input file are available,
+!> de-cycling applies the initial profiles at the inflow boundaries for
+!> Dirichlet boundary conditions
 !------------------------------------------------------------------------------!
  SUBROUTINE chem_boundary_conds_decycle()
-!
-!-- Decycling of chemistry variables: Dirichlet BCs with cyclic is frequently not
-!-- approproate for chemicals compounds since they may accumulate too much.
-!-- If no proper boundary conditions from a DYNAMIC input file are available,
-!-- de-cycling applies the initial profiles at the inflow boundaries for
-!-- Dirichlet boundary conditions
-
-    IMPLICIT NONE 
+
+
     INTEGER(iwp) ::  boundary  !< 
     INTEGER(iwp) ::  ee        !<
@@ -1060,5 +1064,4 @@
  SUBROUTINE chem_check_data_output( var, unit, i, ilen, k )
 
-    IMPLICIT NONE
 
     CHARACTER (LEN=*) ::  unit     !<
@@ -1129,12 +1132,12 @@
 
     USE arrays_3d
+
     USE control_parameters,                                                    &
         ONLY:  data_output_pr, message_string
-    USE indices
+
     USE profil_parameter
+
     USE statistics
 
-
-    IMPLICIT NONE
 
     CHARACTER (LEN=*) ::  unit     !< 
@@ -1180,5 +1183,4 @@
  SUBROUTINE chem_check_parameters
 
-    IMPLICIT NONE
 
     LOGICAL  ::  found
@@ -1280,9 +1282,4 @@
                                   two_d, nzb_do, nzt_do, fill_value )
 
-    USE indices
-
-    USE kinds
-
-    IMPLICIT NONE
 
     CHARACTER (LEN=*) ::  grid       !<
@@ -1364,12 +1361,6 @@
  SUBROUTINE chem_data_output_3d( av, variable, found, local_pf, fill_value, nzb_do, nzt_do )
 
-    USE indices
-
-    USE kinds
 
     USE surface_mod
-
-
-    IMPLICIT NONE
 
     CHARACTER (LEN=*)    ::  variable     !<
@@ -1478,11 +1469,10 @@
  SUBROUTINE chem_data_output_mask( av, variable, found, local_pf )
 
+
     USE control_parameters
-    USE indices
-    USE kinds
+
     USE surface_mod,                                                                  &
         ONLY:  get_topography_top_index_ji
 
-    IMPLICIT NONE
 
     CHARACTER(LEN=5)  ::  grid        !< flag to distinquish between staggered grids
@@ -1607,5 +1597,4 @@
  SUBROUTINE chem_define_netcdf_grid( var, found, grid_x, grid_y, grid_z )
 
-    IMPLICIT NONE
 
     CHARACTER (LEN=*), INTENT(IN)  ::  var          !<
@@ -1639,5 +1628,4 @@
  SUBROUTINE chem_header( io )
 
-    IMPLICIT NONE 
 
     INTEGER(iwp), INTENT(IN) ::  io            !< Unit of the output file
@@ -1763,5 +1751,4 @@
         ONLY:  init_3d
 
-    IMPLICIT NONE
 
     INTEGER(iwp) ::  i !< running index x dimension
@@ -1809,5 +1796,4 @@
                netcdf_data_input_chemistry_data
 
-    IMPLICIT NONE
 !
 !-- Local variables
@@ -1970,5 +1956,4 @@
     USE chem_modules
 
-    IMPLICIT NONE
 !
 !-- Local variables
@@ -2053,5 +2038,4 @@
         ONLY:  dt_3d, intermediate_timestep_count, time_since_reference_point
 
-    IMPLICIT NONE
 
     INTEGER,INTENT(IN)       :: i
@@ -2163,9 +2147,7 @@
     USE control_parameters
 
-    USE kinds
     USE pegrid
     USE statistics
 
-    IMPLICIT NONE
 
     CHARACTER (LEN=80) ::  line                        !< dummy string that contains the current line of the parameter file
@@ -2477,23 +2459,6 @@
 !> prognostic_equations.
 !------------------------------------------------------------------------------!
- SUBROUTINE chem_prognostic_equations( cs_scalar_p, cs_scalar, tcs_scalar_m,   &
-      pr_init_cs, ilsp )
-
-    USE advec_s_pw_mod,                                                        &
-         ONLY:  advec_s_pw
-    USE advec_s_up_mod,                                                        &
-         ONLY:  advec_s_up
-    USE advec_ws,                                                              &
-         ONLY:  advec_s_ws 
-    USE diffusion_s_mod,                                                       &
-         ONLY:  diffusion_s
-    USE indices,                                                               &
-         ONLY:  nxl, nxr, nyn, nys, wall_flags_0
-    USE pegrid
-    USE surface_mod,                                                           &
-         ONLY:  surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v, surf_usm_h,     &
-         surf_usm_v
-
-    IMPLICIT NONE
+ SUBROUTINE chem_prognostic_equations()
+
 
     INTEGER ::  i   !< running index
@@ -2501,89 +2466,92 @@
     INTEGER ::  k   !< running index
 
-    INTEGER(iwp),INTENT(IN) ::  ilsp          !<
-
-    REAL(wp), DIMENSION(0:nz+1) ::  pr_init_cs   !<
-
-    REAL(wp), DIMENSION(:,:,:), POINTER ::  cs_scalar      !<
-    REAL(wp), DIMENSION(:,:,:), POINTER ::  cs_scalar_p    !<
-    REAL(wp), DIMENSION(:,:,:), POINTER ::  tcs_scalar_m   !<
-
-
-!
-!-- Tendency terms for chemical species
-    tend = 0.0_wp
-!    
-!-- Advection terms
-    IF ( timestep_scheme(1:5) == 'runge' )  THEN
-       IF ( ws_scheme_sca )  THEN
-          CALL advec_s_ws( cs_scalar, 'kc' )
+    INTEGER(iwp) ::  ilsp   !<
+
+
+    CALL cpu_log( log_point_s(25), 'chem.advec+diff+prog', 'start' )
+
+    DO  ilsp = 1, nspec
+!
+!--    Tendency terms for chemical species
+       tend = 0.0_wp
+!
+!--    Advection terms
+       IF ( timestep_scheme(1:5) == 'runge' )  THEN
+          IF ( ws_scheme_sca )  THEN
+             CALL advec_s_ws( chem_species(ilsp)%conc, 'kc' )
+          ELSE
+             CALL advec_s_pw( chem_species(ilsp)%conc )
+          ENDIF
        ELSE
-          CALL advec_s_pw( cs_scalar )
+          CALL advec_s_up( chem_species(ilsp)%conc )
        ENDIF
-    ELSE
-       CALL advec_s_up( cs_scalar )
-    ENDIF
-!
-!-- Diffusion terms  (the last three arguments are zero)
-    CALL diffusion_s( cs_scalar,                                               &
-         surf_def_h(0)%cssws(ilsp,:),                             &
-         surf_def_h(1)%cssws(ilsp,:),                             &
-         surf_def_h(2)%cssws(ilsp,:),                             &
-         surf_lsm_h%cssws(ilsp,:),                                &
-         surf_usm_h%cssws(ilsp,:),                                &
-         surf_def_v(0)%cssws(ilsp,:),                             &
-         surf_def_v(1)%cssws(ilsp,:),                             &
-         surf_def_v(2)%cssws(ilsp,:),                             &
-         surf_def_v(3)%cssws(ilsp,:),                             &
-         surf_lsm_v(0)%cssws(ilsp,:),                             &
-         surf_lsm_v(1)%cssws(ilsp,:),                             &
-         surf_lsm_v(2)%cssws(ilsp,:),                             &
-         surf_lsm_v(3)%cssws(ilsp,:),                             &
-         surf_usm_v(0)%cssws(ilsp,:),                             &
-         surf_usm_v(1)%cssws(ilsp,:),                             &
-         surf_usm_v(2)%cssws(ilsp,:),                             &
-         surf_usm_v(3)%cssws(ilsp,:) )
-!    
-!-- Prognostic equation for chemical species
-    DO  i = nxl, nxr
-       DO  j = nys, nyn    
-          DO  k = nzb+1, nzt
-             cs_scalar_p(k,j,i) =   cs_scalar(k,j,i)                           &
-                  + ( dt_3d  *                                 &
-                  (   tsc(2) * tend(k,j,i)                 &
-                  + tsc(3) * tcs_scalar_m(k,j,i)         &
-                  )                                        & 
-                  - tsc(5) * rdf_sc(k)                       &
-                  * ( cs_scalar(k,j,i) - pr_init_cs(k) )    &   
-                  )                                          &
-                  * MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )       
-
-             IF ( cs_scalar_p(k,j,i) < 0.0_wp )  cs_scalar_p(k,j,i) = 0.1_wp * cs_scalar(k,j,i)
+!
+!--    Diffusion terms  (the last three arguments are zero)
+       CALL diffusion_s( chem_species(ilsp)%conc,                                                  &
+            surf_def_h(0)%cssws(ilsp,:),                                                           &
+            surf_def_h(1)%cssws(ilsp,:),                                                           &
+            surf_def_h(2)%cssws(ilsp,:),                                                           &
+            surf_lsm_h%cssws(ilsp,:),                                                              &
+            surf_usm_h%cssws(ilsp,:),                                                              &
+            surf_def_v(0)%cssws(ilsp,:),                                                           &
+            surf_def_v(1)%cssws(ilsp,:),                                                           &
+            surf_def_v(2)%cssws(ilsp,:),                                                           &
+            surf_def_v(3)%cssws(ilsp,:),                                                           &
+            surf_lsm_v(0)%cssws(ilsp,:),                                                           &
+            surf_lsm_v(1)%cssws(ilsp,:),                                                           &
+            surf_lsm_v(2)%cssws(ilsp,:),                                                           &
+            surf_lsm_v(3)%cssws(ilsp,:),                                                           &
+            surf_usm_v(0)%cssws(ilsp,:),                                                           &
+            surf_usm_v(1)%cssws(ilsp,:),                                                           &
+            surf_usm_v(2)%cssws(ilsp,:),                                                           &
+            surf_usm_v(3)%cssws(ilsp,:) )
+!
+!--    Prognostic equation for chemical species
+       DO  i = nxl, nxr
+          DO  j = nys, nyn
+             DO  k = nzb+1, nzt
+                chem_species(ilsp)%conc_p(k,j,i) =   chem_species(ilsp)%conc(k,j,i)                &
+                     + ( dt_3d  *                                                                  &
+                     (   tsc(2) * tend(k,j,i)                                                      &
+                     + tsc(3) * chem_species(ilsp)%tconc_m(k,j,i)                                  &
+                     )                                                                             &
+                     - tsc(5) * rdf_sc(k)                                                          &
+                     * ( chem_species(ilsp)%conc(k,j,i) - chem_species(ilsp)%conc_pr_init(k) )     &
+                     )                                                                             &
+                     * MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 0 ) )
+
+                IF ( chem_species(ilsp)%conc_p(k,j,i) < 0.0_wp )  THEN
+                   chem_species(ilsp)%conc_p(k,j,i) = 0.1_wp * chem_species(ilsp)%conc(k,j,i)
+                ENDIF
+             ENDDO
           ENDDO
        ENDDO
-    ENDDO
-!
-!-- Calculate tendencies for the next Runge-Kutta step
-    IF ( timestep_scheme(1:5) == 'runge' )  THEN
-       IF ( intermediate_timestep_count == 1 )  THEN
-          DO  i = nxl, nxr
-             DO  j = nys, nyn   
-                DO  k = nzb+1, nzt
-                   tcs_scalar_m(k,j,i) = tend(k,j,i)
+!
+!--    Calculate tendencies for the next Runge-Kutta step
+       IF ( timestep_scheme(1:5) == 'runge' )  THEN
+          IF ( intermediate_timestep_count == 1 )  THEN
+             DO  i = nxl, nxr
+                DO  j = nys, nyn
+                   DO  k = nzb+1, nzt
+                      chem_species(ilsp)%tconc_m(k,j,i) = tend(k,j,i)
+                   ENDDO
                 ENDDO
              ENDDO
-          ENDDO
-       ELSEIF ( intermediate_timestep_count < &
-            intermediate_timestep_count_max )  THEN
-          DO  i = nxl, nxr
-             DO  j = nys, nyn
-                DO  k = nzb+1, nzt
-                   tcs_scalar_m(k,j,i) = - 9.5625_wp * tend(k,j,i)             &
-                        + 5.3125_wp * tcs_scalar_m(k,j,i)
+          ELSEIF ( intermediate_timestep_count < &
+               intermediate_timestep_count_max )  THEN
+             DO  i = nxl, nxr
+                DO  j = nys, nyn
+                   DO  k = nzb+1, nzt
+                      chem_species(ilsp)%tconc_m(k,j,i) = - 9.5625_wp * tend(k,j,i)                &
+                           + 5.3125_wp * chem_species(ilsp)%tconc_m(k,j,i)
+                   ENDDO
                 ENDDO
              ENDDO
-          ENDDO
+          ENDIF
        ENDIF
-    ENDIF
+
+    ENDDO
+
+    CALL cpu_log( log_point_s(25), 'chem.advec+diff+prog', 'stop' )
 
  END SUBROUTINE chem_prognostic_equations
@@ -2598,95 +2566,78 @@
 !> prognostic_equations.
 !------------------------------------------------------------------------------!
- SUBROUTINE chem_prognostic_equations_ij( cs_scalar_p, cs_scalar, tcs_scalar_m,                 &
-      pr_init_cs, i, j, i_omp_start, tn, ilsp, flux_s_cs, diss_s_cs,                            &
-      flux_l_cs, diss_l_cs )
-    USE pegrid         
-    USE advec_ws,                                                                               &
-         ONLY:  advec_s_ws 
-    USE advec_s_pw_mod,                                                                         &
-         ONLY:  advec_s_pw
-    USE advec_s_up_mod,                                                                         &
-         ONLY:  advec_s_up
-    USE diffusion_s_mod,                                                                        &
-         ONLY:  diffusion_s
-    USE indices,                                                                                &
-         ONLY:  wall_flags_0
-    USE surface_mod,                                                                            &
-         ONLY:  surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v, surf_usm_h, surf_usm_v
-
-
-    IMPLICIT NONE
-
-    REAL(wp), DIMENSION(:,:,:), POINTER   :: cs_scalar_p, cs_scalar, tcs_scalar_m
-
-    INTEGER(iwp),INTENT(IN) :: i, j, i_omp_start, tn, ilsp
-    REAL(wp), DIMENSION(nzb+1:nzt,0:threads_per_task-1)          :: flux_s_cs   !<
-    REAL(wp), DIMENSION(nzb+1:nzt,0:threads_per_task-1)          :: diss_s_cs   !<
-    REAL(wp), DIMENSION(nzb+1:nzt,nys:nyn,0:threads_per_task-1)  :: flux_l_cs   !<
-    REAL(wp), DIMENSION(nzb+1:nzt,nys:nyn,0:threads_per_task-1)  :: diss_l_cs   !<
-    REAL(wp), DIMENSION(0:nz+1)                                  :: pr_init_cs  !<
-
+ SUBROUTINE chem_prognostic_equations_ij( i, j, i_omp_start, tn )
+
+
+    INTEGER(iwp),INTENT(IN) :: i, j, i_omp_start, tn
+    INTEGER(iwp) :: ilsp
 !
 !-- local variables
 
     INTEGER :: k
+
+    DO  ilsp = 1, nspec
 !
 !--    Tendency-terms for chem spcs.
-    tend(:,j,i) = 0.0_wp
-!    
-!-- Advection terms
-    IF ( timestep_scheme(1:5) == 'runge' )  THEN
-       IF ( ws_scheme_sca )  THEN
-          CALL advec_s_ws( i, j, cs_scalar, 'kc', flux_s_cs, diss_s_cs,                &
-               flux_l_cs, diss_l_cs, i_omp_start, tn )
+       tend(:,j,i) = 0.0_wp
+!
+!--    Advection terms
+       IF ( timestep_scheme(1:5) == 'runge' )  THEN
+          IF ( ws_scheme_sca )  THEN
+             CALL advec_s_ws( i, j, chem_species(ilsp)%conc, 'kc', chem_species(ilsp)%flux_s_cs,   &
+                              chem_species(ilsp)%diss_s_cs, chem_species(ilsp)%flux_l_cs,          &
+                              chem_species(ilsp)%diss_l_cs, i_omp_start, tn )
+          ELSE
+             CALL advec_s_pw( i, j, chem_species(ilsp)%conc )
+          ENDIF
        ELSE
-          CALL advec_s_pw( i, j, cs_scalar )
+          CALL advec_s_up( i, j, chem_species(ilsp)%conc )
        ENDIF
-    ELSE
-       CALL advec_s_up( i, j, cs_scalar )
-    ENDIF
-!
-!-- Diffusion terms (the last three arguments are zero)
-
-    CALL diffusion_s( i, j, cs_scalar,                                                 &
-         surf_def_h(0)%cssws(ilsp,:), surf_def_h(1)%cssws(ilsp,:),        &
-         surf_def_h(2)%cssws(ilsp,:),                                     &
-         surf_lsm_h%cssws(ilsp,:), surf_usm_h%cssws(ilsp,:),              &
-         surf_def_v(0)%cssws(ilsp,:), surf_def_v(1)%cssws(ilsp,:),        &
-         surf_def_v(2)%cssws(ilsp,:), surf_def_v(3)%cssws(ilsp,:),        &
-         surf_lsm_v(0)%cssws(ilsp,:), surf_lsm_v(1)%cssws(ilsp,:),        &
-         surf_lsm_v(2)%cssws(ilsp,:), surf_lsm_v(3)%cssws(ilsp,:),        &
-         surf_usm_v(0)%cssws(ilsp,:), surf_usm_v(1)%cssws(ilsp,:),        &
-         surf_usm_v(2)%cssws(ilsp,:), surf_usm_v(3)%cssws(ilsp,:) )
-!    
-!-- Prognostic equation for chem spcs
-    DO  k = nzb+1, nzt
-       cs_scalar_p(k,j,i) = cs_scalar(k,j,i) + ( dt_3d  *                       &
-            ( tsc(2) * tend(k,j,i) +         &
-            tsc(3) * tcs_scalar_m(k,j,i) ) & 
-            - tsc(5) * rdf_sc(k)             &
-            * ( cs_scalar(k,j,i) - pr_init_cs(k) )    &   
-            )                                                  &
-            * MERGE( 1.0_wp, 0.0_wp,                  &      
-            BTEST( wall_flags_0(k,j,i), 0 )   &             
-            )       
-
-       IF ( cs_scalar_p(k,j,i) < 0.0_wp )  cs_scalar_p(k,j,i) = 0.1_wp * cs_scalar(k,j,i)    !FKS6
+!
+!--    Diffusion terms (the last three arguments are zero)
+
+       CALL diffusion_s( i, j, chem_species(ilsp)%conc,                                            &
+            surf_def_h(0)%cssws(ilsp,:), surf_def_h(1)%cssws(ilsp,:),                              &
+            surf_def_h(2)%cssws(ilsp,:),                                                           &
+            surf_lsm_h%cssws(ilsp,:), surf_usm_h%cssws(ilsp,:),                                    &
+            surf_def_v(0)%cssws(ilsp,:), surf_def_v(1)%cssws(ilsp,:),                              &
+            surf_def_v(2)%cssws(ilsp,:), surf_def_v(3)%cssws(ilsp,:),                              &
+            surf_lsm_v(0)%cssws(ilsp,:), surf_lsm_v(1)%cssws(ilsp,:),                              &
+            surf_lsm_v(2)%cssws(ilsp,:), surf_lsm_v(3)%cssws(ilsp,:),                              &
+            surf_usm_v(0)%cssws(ilsp,:), surf_usm_v(1)%cssws(ilsp,:),                              &
+            surf_usm_v(2)%cssws(ilsp,:), surf_usm_v(3)%cssws(ilsp,:) )
+!
+!--    Prognostic equation for chem spcs
+       DO  k = nzb+1, nzt
+          chem_species(ilsp)%conc_p(k,j,i) = chem_species(ilsp)%conc(k,j,i) + ( dt_3d  *           &
+               ( tsc(2) * tend(k,j,i) +                                                            &
+               tsc(3) * chem_species(ilsp)%tconc_m(k,j,i) )                                        &
+               - tsc(5) * rdf_sc(k)                                                                &
+               * ( chem_species(ilsp)%conc(k,j,i) - chem_species(ilsp)%conc_pr_init(k) )           &
+               )                                                                                   &
+               * MERGE( 1.0_wp, 0.0_wp,                                                            &
+               BTEST( wall_flags_0(k,j,i), 0 )                                                     &
+               )
+
+          IF ( chem_species(ilsp)%conc_p(k,j,i) < 0.0_wp )  THEN
+             chem_species(ilsp)%conc_p(k,j,i) = 0.1_wp * chem_species(ilsp)%conc(k,j,i)    !FKS6
+          ENDIF
+       ENDDO
+!
+!--    Calculate tendencies for the next Runge-Kutta step
+       IF ( timestep_scheme(1:5) == 'runge' )  THEN
+          IF ( intermediate_timestep_count == 1 )  THEN
+             DO  k = nzb+1, nzt
+                chem_species(ilsp)%tconc_m(k,j,i) = tend(k,j,i)
+             ENDDO
+          ELSEIF ( intermediate_timestep_count < &
+               intermediate_timestep_count_max )  THEN
+             DO  k = nzb+1, nzt
+                chem_species(ilsp)%tconc_m(k,j,i) = -9.5625_wp * tend(k,j,i) +                     &
+                     5.3125_wp * chem_species(ilsp)%tconc_m(k,j,i)
+             ENDDO
+          ENDIF
+       ENDIF
+
     ENDDO
-!
-!-- Calculate tendencies for the next Runge-Kutta step
-    IF ( timestep_scheme(1:5) == 'runge' )  THEN
-       IF ( intermediate_timestep_count == 1 )  THEN
-          DO  k = nzb+1, nzt
-             tcs_scalar_m(k,j,i) = tend(k,j,i)
-          ENDDO
-       ELSEIF ( intermediate_timestep_count < &
-            intermediate_timestep_count_max )  THEN
-          DO  k = nzb+1, nzt
-             tcs_scalar_m(k,j,i) = -9.5625_wp * tend(k,j,i) + &
-                  5.3125_wp * tcs_scalar_m(k,j,i)
-          ENDDO
-       ENDIF
-    ENDIF
 
  END SUBROUTINE chem_prognostic_equations_ij
@@ -2704,9 +2655,4 @@
     USE control_parameters
 
-    USE indices
-
-    USE pegrid
-
-    IMPLICIT NONE 
 
     CHARACTER (LEN=20) :: spc_name_av !<   
@@ -2778,10 +2724,7 @@
 
     USE arrays_3d
-    USE indices
-    USE kinds
-    USE pegrid
+
     USE statistics
 
-    IMPLICIT NONE
 
     CHARACTER (LEN=*) ::  mode   !< 
@@ -2837,5 +2780,4 @@
  SUBROUTINE chem_swap_timelevel( level )
 
-    IMPLICIT NONE
 
     INTEGER(iwp), INTENT(IN) ::  level
@@ -2868,6 +2810,4 @@
  SUBROUTINE chem_wrd_local
 
-
-    IMPLICIT NONE 
 
     INTEGER(iwp) ::  lsp  !< running index for chem spcs. 
@@ -2953,6 +2893,4 @@
          ONLY:  cos_zenith
 
-
-    IMPLICIT NONE
 
     INTEGER(iwp), INTENT(IN) ::  i
@@ -4470,5 +4408,4 @@
 !--               calc_stom_o3flux, frac_sto_o3_lu, fac_surface_area_2_PLA)
 
-    IMPLICIT NONE
 
     CHARACTER(LEN=*), INTENT(IN) ::  compnam         !< component name
@@ -4638,5 +4575,4 @@
  SUBROUTINE rc_special( icmp, compnam, lu, t, nwet, rc_tot, ready, ccomp_tot )
 
-    IMPLICIT NONE
    
     CHARACTER(LEN=*), INTENT(IN)  ::  compnam     !< component name
@@ -4710,5 +4646,4 @@
  SUBROUTINE rc_gw( compnam, iratns, t, rh, nwet, sai_present, sai, gw )
 
-    IMPLICIT NONE
 !
 !-- Input/output variables:
@@ -4763,5 +4698,4 @@
  SUBROUTINE rw_so2( t, nwet, rh, iratns, sai_present, gw )
 
-    IMPLICIT NONE
 !
 !-- Input/output variables:
@@ -4835,5 +4769,4 @@
  SUBROUTINE rw_nh3_sutton( tsurf, rh,sai_present, gw )
 
-    IMPLICIT NONE
 !
 !-- Input/output variables:
@@ -4883,5 +4816,4 @@
  SUBROUTINE rw_constant( rw_val, sai_present, gw )
 
-    IMPLICIT NONE
 !
 !-- Input/output variables:
@@ -4909,5 +4841,4 @@
  SUBROUTINE rc_gstom( icmp, compnam, lu, lai_present, lai, solar_rad, sinphi, t, rh, diffusivity, gstom, p ) 
 
-    IMPLICIT NONE
 !
 !-- input/output variables:
@@ -5006,6 +4937,4 @@
 !>     8 = other                 GR = grassland
 !>     9 = desert                DE = desert
-
-    IMPLICIT NONE
 !
 !-- Emberson specific declarations
@@ -5144,5 +5073,4 @@
  SUBROUTINE par_dir_diff( solar_rad, sinphi, pres, pres_0, par_dir, par_diff )
 
-    IMPLICIT NONE
 
     REAL(wp), INTENT(IN) ::  solar_rad       !< solar radiation, dirict+diffuse (W m-2)
@@ -5211,5 +5139,4 @@
  SUBROUTINE rc_get_vpd( temp, rh, vpd )
 
-    IMPLICIT NONE
 !
 !-- Input/output variables:
@@ -5242,5 +5169,4 @@
  SUBROUTINE rc_gsoil_eff( icmp, lu, sai, ust, nwet, t, gsoil_eff )
 
-    IMPLICIT NONE
 !
 !-- Input/output variables:
@@ -5333,6 +5259,4 @@
  !-------------------------------------------------------------------
  SUBROUTINE rc_rinc( lu, sai, ust, rinc )
-
-    IMPLICIT NONE
 
 !
@@ -5376,6 +5300,4 @@
  !-------------------------------------------------------------------
  SUBROUTINE rc_rctot( gstom, gsoil_eff, gw, gc_tot, rc_tot )
-
-    IMPLICIT NONE
 
 !
@@ -5463,5 +5385,4 @@
 ! SUBROUTINE rc_comp_point_rc_eff( ccomp_tot, conc_ijk_ugm3, ra, rb, rc_tot, rc_eff )
 !
-!    IMPLICIT NONE
 !
 !!-- Input/output variables:
@@ -5522,6 +5443,4 @@
  ELEMENTAL FUNCTION sedimentation_velocity( rhopart, partsize, slipcor, visc ) RESULT( vs )
 
-    IMPLICIT NONE
-
 !
 !-- in/out
@@ -5548,6 +5467,4 @@
  SUBROUTINE drydepo_aero_zhang_vd( vd, rs, vs1, partsize, slipcor, nwet, tsurf, dens1, viscos1, &
       luc, ftop_lu, ustar )
-
-    IMPLICIT NONE  
 
 !
@@ -5652,7 +5569,4 @@
  !-------------------------------------------------------------------------------------
  SUBROUTINE get_rb_cell( is_water, z0h, ustar, diffusivity, rb )    
-
-
-    IMPLICIT NONE
 
 !
@@ -5712,6 +5626,4 @@
  ELEMENTAL FUNCTION watervaporpartialpressure( q, p ) RESULT( p_w )
 
-    IMPLICIT NONE
-
 !
 !-- in/out 
@@ -5753,7 +5665,4 @@
  ELEMENTAL FUNCTION saturationvaporpressure( t ) RESULT( e_sat_w )
 
-
-    IMPLICIT NONE
-
 !
 !-- in/out
@@ -5782,7 +5691,4 @@
  ELEMENTAL FUNCTION relativehumidity_from_specifichumidity( q, t, p ) RESULT( rh )
 
-
-    IMPLICIT NONE
-
 !
 !-- in/out 
Index: /palm/trunk/SOURCE/module_interface.f90
===================================================================
--- /palm/trunk/SOURCE/module_interface.f90	(revision 3879)
+++ /palm/trunk/SOURCE/module_interface.f90	(revision 3880)
@@ -168,4 +168,5 @@
               chem_actions,                                                    &
               chem_non_transport_physics,                                      &
+              chem_prognostic_equations,                                       &
               chem_swap_timelevel,                                             &
               chem_3d_data_averaging,                                          &
@@ -970,4 +971,5 @@
 
     IF ( bulk_cloud_model    )  CALL bcm_prognostic_equations()
+    IF ( air_chemistry       )  CALL chem_prognostic_equations()
     IF ( gust_module_enabled )  CALL gust_prognostic_equations()
     IF ( ocean_mode          )  CALL ocean_prognostic_equations()
@@ -993,4 +995,5 @@
 
     IF ( bulk_cloud_model    )  CALL bcm_prognostic_equations( i, j, i_omp_start, tn )
+    IF ( air_chemistry       )  CALL chem_prognostic_equations( i, j, i_omp_start, tn )
     IF ( gust_module_enabled )  CALL gust_prognostic_equations( i, j, i_omp_start, tn )
     IF ( ocean_mode          )  CALL ocean_prognostic_equations( i, j, i_omp_start, tn )
Index: /palm/trunk/SOURCE/prognostic_equations.f90
===================================================================
--- /palm/trunk/SOURCE/prognostic_equations.f90	(revision 3879)
+++ /palm/trunk/SOURCE/prognostic_equations.f90	(revision 3880)
@@ -387,12 +387,6 @@
         ONLY:  buoyancy
 
-    USE chem_modules,                                                          &
-        ONLY:  chem_gasphase_on, deposition_dry, chem_species
-
-    USE chem_gasphase_mod,                                                     &
-        ONLY:  nspec, spc_names
-
     USE chemistry_model_mod,                                                   &
-        ONLY:  chem_boundary_conds_decycle, chem_prognostic_equations
+        ONLY:  chem_boundary_conds_decycle
 
     USE control_parameters,                                                    &
@@ -518,5 +512,4 @@
 
     LOGICAL      ::  loop_start          !<
-    INTEGER(iwp) ::  lsp
 
 
@@ -1113,24 +1106,4 @@
           CALL module_interface_prognostic_equations( i, j, i_omp_start, tn )
 
-!
-!--       Calculate prognostic equation for chemical quantites
-          IF ( air_chemistry )  THEN
-             !> TODO: remove time measurement since it slows down performance because it will be called extremely often
-!
-!--          Loop over chemical species
-             DO  lsp = 1, nspec
-                CALL chem_prognostic_equations( chem_species(lsp)%conc_p,      &
-                                     chem_species(lsp)%conc,                   &
-                                     chem_species(lsp)%tconc_m,                &
-                                     chem_species(lsp)%conc_pr_init,           &
-                                     i, j, i_omp_start, tn, lsp,               &
-                                     chem_species(lsp)%flux_s_cs,              &
-                                     chem_species(lsp)%diss_s_cs,              &
-                                     chem_species(lsp)%flux_l_cs,              &
-                                     chem_species(lsp)%diss_l_cs )       
-             ENDDO
-
-          ENDIF   ! Chemical equations
-
        ENDDO  ! loop over j
     ENDDO  ! loop over i
@@ -1160,5 +1133,4 @@
     INTEGER(iwp) ::  j     !<
     INTEGER(iwp) ::  k     !<
-    INTEGER(iwp) ::  lsp   !< running index for chemical species
 
     REAL(wp)     ::  sbt  !<
@@ -1895,21 +1867,4 @@
     CALL module_interface_prognostic_equations()
 
-!
-!-- Calculate prognostic equation for chemical quantites
-    IF ( air_chemistry )  THEN
-       CALL cpu_log( log_point_s(25), 'chem.advec+diff+prog', 'start' )
-!
-!--    Loop over chemical species
-       DO  lsp = 1, nspec
-          CALL chem_prognostic_equations( chem_species(lsp)%conc_p,            &
-                                          chem_species(lsp)%conc,              &
-                                          chem_species(lsp)%tconc_m,           &
-                                          chem_species(lsp)%conc_pr_init,      &
-                                          lsp )
-       ENDDO
-
-       CALL cpu_log( log_point_s(25), 'chem.advec+diff+prog', 'stop' )             
-    ENDIF   ! Chemicals equations
-
  END SUBROUTINE prognostic_equations_vector
 
