Index: src/advance.f90
===================================================================
--- src/advance.f90	(revision 5f9d14aa526df192efa539f87fc409fdeeeee06c)
+++ src/advance.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -550,17 +550,4 @@
   !!! CHANGE
       
-  !!!----- TEST OF THE WELL-MIXED CRITERION: modified by mc,  not to be included in final version mc
-      ! if (zt.lt.h) then
-      !     i_well=int(zt/h*25.)+1
-      !     well_mixed_vector(i_well)=well_mixed_vector(i_well)+dt
-      !     well_mixed_norm=well_mixed_norm+dt
-      !     avg_air_dens(i_well)=avg_air_dens(i_well)+rhoa*dt
-      !     avg_wst=avg_wst+wst*dt
-      !     avg_ol=avg_ol+ol*dt
-      !     avg_h=avg_h+h*dt
-      ! end if
-      ! h_well=h
-  !------- END TEST
-      
   ! Determine probability of deposition
   !************************************
Index: src/conccalc.f90
===================================================================
--- src/conccalc.f90	(revision 8a65cb0801b09eb0ae933a1afabbe10361a9021b)
+++ src/conccalc.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -21,5 +21,5 @@
 
 subroutine conccalc(itime,weight)
-  !                      i     i
+  !                 i     i
   !*****************************************************************************
   !                                                                            *
Index: src/concoutput_mpi.f90
===================================================================
--- src/concoutput_mpi.f90	(revision b069789750d732a1423ad6d9725c05a10cfd55c5)
+++ src/concoutput_mpi.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -321,5 +321,4 @@
             do kz=1,numzgrid
               do l=1,nclassunc
-!                auxgrid(l)=gridunc0(ix,jy,kz,ks,kp,l,nage)
                 auxgrid(l)=gridunc(ix,jy,kz,ks,kp,l,nage)
               end do
Index: src/gridcheck.f90
===================================================================
--- src/gridcheck.f90	(revision d6a09777de02ba48864df5a70d9160b51767c086)
+++ src/gridcheck.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -84,5 +84,5 @@
   real(kind=4) :: xaux1,xaux2,yaux1,yaux2
   real(kind=8) :: xaux1in,xaux2in,yaux1in,yaux2in
-  integer :: gribVer,parCat,parNum,typSurf,valSurf,discipl,parID
+  integer :: gribVer,parCat,parNum,typSurf,valSurf,discipl,parId
   !HSO  end
   integer :: ix,jy,i,ifn,ifield,j,k,iumax,iwmax,numskip
@@ -198,7 +198,14 @@
   elseif ((parCat.eq.1).and.(parNum.eq.83).and.(typSurf.eq.105)) then ! clwc
     isec1(6)=246         ! indicatorOfParameter
+    ! readclouds=.true.
+    ! sumclouds=.false.
   elseif ((parCat.eq.1).and.(parNum.eq.84).and.(typSurf.eq.105)) then ! ciwc
     isec1(6)=247         ! indicatorOfParameter
 !ZHG end
+! ESO qc(=clwc+ciwc)
+  elseif ((parCat.eq.201).and.(parNum.eq.31).and.(typSurf.eq.105)) then ! qc
+    isec1(6)=201031      ! indicatorOfParameter
+    ! readclouds=.true.
+    ! sumclouds=.true.
   elseif ((parCat.eq.3).and.(parNum.eq.0).and.(typSurf.eq.1)) then !SP
     isec1(6)=134         ! indicatorOfParameter
Index: src/makefile
===================================================================
--- src/makefile	(revision 02d48101db394c367857c2a17518b73c18b6d4c2)
+++ src/makefile	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -418,4 +418,5 @@
 timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o oh_mod.o outg_mod.o \
 	par_mod.o point_mod.o unc_mod.o xmass_mod.o
+unc_mod.o: par_mod.o
 verttransform.o: cmapf_mod.o com_mod.o par_mod.o 
 verttransform_gfs.o: cmapf_mod.o com_mod.o par_mod.o
Index: src/mpi_mod.f90
===================================================================
--- src/mpi_mod.f90	(revision 41d8574bea1b0f91e61dffd5dd1d17882407f826)
+++ src/mpi_mod.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -119,5 +119,5 @@
   logical, parameter :: mp_dbg_out = .false.
   logical, parameter :: mp_time_barrier=.true.
-  logical, parameter :: mp_measure_time=.true.
+  logical, parameter :: mp_measure_time=.false.
   logical, parameter :: mp_exact_numpart=.true.
 
@@ -477,22 +477,22 @@
 
 ! real
-      call MPI_SCATTER(uap,numpart_mpi,mp_pp,MPI_IN_PLACE,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(ucp,numpart_mpi,mp_pp,MPI_IN_PLACE,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(uzp,numpart_mpi,mp_pp,MPI_IN_PLACE,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-
-      call MPI_SCATTER(us,numpart_mpi,mp_pp,MPI_IN_PLACE,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(vs,numpart_mpi,mp_pp,MPI_IN_PLACE,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(ws,numpart_mpi,mp_pp,MPI_IN_PLACE,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
+      call MPI_SCATTER(uap,numpart_mpi,mp_sp,MPI_IN_PLACE,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(ucp,numpart_mpi,mp_sp,MPI_IN_PLACE,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(uzp,numpart_mpi,mp_sp,MPI_IN_PLACE,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+
+      call MPI_SCATTER(us,numpart_mpi,mp_sp,MPI_IN_PLACE,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(vs,numpart_mpi,mp_sp,MPI_IN_PLACE,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(ws,numpart_mpi,mp_sp,MPI_IN_PLACE,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
       if (mp_ierr /= 0) goto 600
 
@@ -503,11 +503,11 @@
            &numpart_mpi,mp_dp,id_root,mp_comm_used,mp_ierr)
       if (mp_ierr /= 0) goto 600 
-      call MPI_SCATTER(ztra1,numpart_mpi,mp_pp,MPI_IN_PLACE,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
+      call MPI_SCATTER(ztra1,numpart_mpi,mp_sp,MPI_IN_PLACE,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
       if (mp_ierr /= 0) goto 600 
 
       do i=1,nspec
-        call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_pp,MPI_IN_PLACE,&
-             &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
+        call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_sp,MPI_IN_PLACE,&
+             &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
         if (mp_ierr /= 0) goto 600 
       end do
@@ -537,22 +537,22 @@
 
 ! reals
-      call MPI_SCATTER(uap,numpart_mpi,mp_pp,uap,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(ucp,numpart_mpi,mp_pp,ucp,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(uzp,numpart_mpi,mp_pp,uzp,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-
-      call MPI_SCATTER(us,numpart_mpi,mp_pp,us,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(vs,numpart_mpi,mp_pp,vs,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_SCATTER(ws,numpart_mpi,mp_pp,ws,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
+      call MPI_SCATTER(uap,numpart_mpi,mp_sp,uap,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(ucp,numpart_mpi,mp_sp,ucp,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(uzp,numpart_mpi,mp_sp,uzp,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+
+      call MPI_SCATTER(us,numpart_mpi,mp_sp,us,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(vs,numpart_mpi,mp_sp,vs,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_SCATTER(ws,numpart_mpi,mp_sp,ws,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
       if (mp_ierr /= 0) goto 600
 
@@ -563,11 +563,11 @@
            &numpart_mpi,mp_dp,id_root,mp_comm_used,mp_ierr)
       if (mp_ierr /= 0) goto 600 
-      call MPI_SCATTER(ztra1,numpart_mpi,mp_pp,ztra1,&
-           &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
+      call MPI_SCATTER(ztra1,numpart_mpi,mp_sp,ztra1,&
+           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
       if (mp_ierr /= 0) goto 600 
 
       do i=1,nspec
-        call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_pp,xmass1(:,i),&
-             &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
+        call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_sp,xmass1(:,i),&
+             &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
         if (mp_ierr /= 0) goto 600 
       end do
@@ -657,22 +657,22 @@
 
 ! Reals:
-      call MPI_GATHER(uap, numpart_mpi, mp_pp, uap, &
-           &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_GATHER(ucp, numpart_mpi, mp_pp, ucp, &
-           &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_GATHER(uzp, numpart_mpi, mp_pp, uzp, &
-           &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-
-      call MPI_GATHER(us, numpart_mpi, mp_pp, us, &
-           &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_GATHER(vs, numpart_mpi, mp_pp, vs, &
-           &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_GATHER(ws, numpart_mpi, mp_pp, ws, &
-           &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+      call MPI_GATHER(uap, numpart_mpi, mp_sp, uap, &
+           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_GATHER(ucp, numpart_mpi, mp_sp, ucp, &
+           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_GATHER(uzp, numpart_mpi, mp_sp, uzp, &
+           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+
+      call MPI_GATHER(us, numpart_mpi, mp_sp, us, &
+           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_GATHER(vs, numpart_mpi, mp_sp, vs, &
+           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_GATHER(ws, numpart_mpi, mp_sp, ws, &
+           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600
 
@@ -684,11 +684,11 @@
            &numpart_mpi, mp_dp, id_root, mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600 
-      call MPI_GATHER(ztra1, numpart_mpi, mp_pp, ztra1, &
-           &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+      call MPI_GATHER(ztra1, numpart_mpi, mp_sp, ztra1, &
+           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600 
 
       do i=1, nspec
-        call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_pp, xmass1(:,i), &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+        call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_sp, xmass1(:,i), &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600 
 
@@ -722,22 +722,22 @@
 
 ! Reals:
-        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, uap, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, ucp, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, uzp, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-
-        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, us, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, uap, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, ucp, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, uzp, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+
+        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, us, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600
-        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, vs, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, ws, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, vs, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, ws, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600
 
@@ -749,11 +749,11 @@
              &numpart_mpi, mp_dp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, ztra1, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, ztra1, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600 
 
         do i=1, nspec
-          call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, xmass1(:,i), &
-               &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+          call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, xmass1(:,i), &
+               &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
           if (mp_ierr /= 0) goto 600 
         end do
@@ -784,22 +784,22 @@
 
 ! Reals:
-        call MPI_GATHER(uap, numpart_mpi, mp_pp, uap, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(ucp, numpart_mpi, mp_pp, ucp, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(uzp, numpart_mpi, mp_pp, uzp, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-
-        call MPI_GATHER(us, numpart_mpi, mp_pp, us, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+        call MPI_GATHER(uap, numpart_mpi, mp_sp, uap, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+        call MPI_GATHER(ucp, numpart_mpi, mp_sp, ucp, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+        call MPI_GATHER(uzp, numpart_mpi, mp_sp, uzp, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+
+        call MPI_GATHER(us, numpart_mpi, mp_sp, us, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600
-        call MPI_GATHER(vs, numpart_mpi, mp_pp, vs, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
-        if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(ws, numpart_mpi, mp_pp, ws, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+        call MPI_GATHER(vs, numpart_mpi, mp_sp, vs, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
+        if (mp_ierr /= 0) goto 600 
+        call MPI_GATHER(ws, numpart_mpi, mp_sp, ws, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600
 
@@ -811,11 +811,11 @@
              &numpart_mpi, mp_dp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600 
-        call MPI_GATHER(ztra1, numpart_mpi, mp_pp, ztra1, &
-             &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+        call MPI_GATHER(ztra1, numpart_mpi, mp_sp, ztra1, &
+             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
         if (mp_ierr /= 0) goto 600 
 
         do i=1, nspec
-          call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_pp, xmass1(:,i), &
-               &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
+          call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_sp, xmass1(:,i), &
+               &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
           if (mp_ierr /= 0) goto 600 
         end do
@@ -914,11 +914,11 @@
 ! Static fields/variables sent only at startup
     if (first_call) then
-      call MPI_Bcast(oro(:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(excessoro(:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(lsm(:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(xlanduse(:,:,:),d2_size3*numclass,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+      call MPI_Bcast(oro(:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(excessoro(:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(lsm(:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(xlanduse(:,:,:),d2_size3*numclass,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
       if (mp_ierr /= 0) goto 600 
       call MPI_Bcast(wftime,d1_size1,MPI_INTEGER,id_read,MPI_COMM_WORLD,mp_ierr)
@@ -934,27 +934,27 @@
     endif
 
-    call MPI_Bcast(uu(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(vv(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(uupol(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(vvpol(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(ww(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(uu(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(vv(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(uupol(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(vvpol(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(ww(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600
-    call MPI_Bcast(tt(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(rho(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(drhodz(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(tth(:,:,:,li:ui),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(qvh(:,:,:,li:ui),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(qv(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(tt(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(rho(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(drhodz(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(tth(:,:,:,li:ui),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(qvh(:,:,:,li:ui),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(qv(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600
-    call MPI_Bcast(pv(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(pv(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600 
     call MPI_Bcast(clouds(:,:,:,li:ui),d3s1,MPI_INTEGER1,id_read,MPI_COMM_WORLD,mp_ierr)
@@ -963,45 +963,45 @@
 ! cloud water/ice:
     if (readclouds) then
-      ! call MPI_Bcast(icloud_stats(:,:,:,li:ui),d2s1*5,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+      ! call MPI_Bcast(icloud_stats(:,:,:,li:ui),d2s1*5,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
       ! if (mp_ierr /= 0) goto 600
-      call MPI_Bcast(clw4(:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      ! call MPI_Bcast(clwc(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+      call MPI_Bcast(clw4(:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      ! call MPI_Bcast(clwc(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
       ! if (mp_ierr /= 0) goto 600
-      ! call MPI_Bcast(ciwc(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+      ! call MPI_Bcast(ciwc(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
       ! if (mp_ierr /= 0) goto 600
     end if
 
 ! 2D fields
-    call MPI_Bcast(cloudsh(:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(vdep(:,:,:,li:ui),d2s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(ps(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(cloudsh(:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(vdep(:,:,:,li:ui),d2s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(ps(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600
-    call MPI_Bcast(sd(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(sd(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600
-    call MPI_Bcast(tcc(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(tcc(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600
-    call MPI_Bcast(tt2(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(td2(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(lsprec(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(convprec(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(ustar(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(wstar(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(hmix(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    call MPI_Bcast(tropopause(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(tt2(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(td2(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(lsprec(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(convprec(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(ustar(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(wstar(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(hmix(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    call MPI_Bcast(tropopause(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600
-    call MPI_Bcast(oli(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-
-    call MPI_Bcast(z0,numclass,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+    call MPI_Bcast(oli(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+
+    call MPI_Bcast(z0,numclass,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     if (mp_ierr /= 0) goto 600 
 
@@ -1094,11 +1094,11 @@
 ! Static fields/variables sent only at startup
     if (first_call) then
-      call MPI_Bcast(oron(:,:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(excessoron(:,:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(lsmn(:,:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(xlandusen(:,:,:,:),d2_size3*numclass,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+      call MPI_Bcast(oron(:,:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(excessoron(:,:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(lsmn(:,:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(xlandusen(:,:,:,:),d2_size3*numclass,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
       if (mp_ierr /= 0) goto 600
       first_call=.false.
@@ -1110,23 +1110,23 @@
     do i=1, numbnests 
 ! 3D fields
-      call MPI_Bcast(uun(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(vvn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(wwn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_Bcast(ttn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(rhon(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(drhodzn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(tthn(:,:,:,li:ui,i),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(qvhn(:,:,:,li:ui,i),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(qvn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_Bcast(pvn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+      call MPI_Bcast(uun(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(vvn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(wwn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_Bcast(ttn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(rhon(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(drhodzn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(tthn(:,:,:,li:ui,i),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(qvhn(:,:,:,li:ui,i),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(qvn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_Bcast(pvn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
       if (mp_ierr /= 0) goto 600 
       call MPI_Bcast(cloudsn(:,:,:,li:ui,i),d3s1,MPI_INTEGER1,id_read,MPI_COMM_WORLD,mp_ierr)
@@ -1134,31 +1134,31 @@
 
 ! 2D fields
-      call MPI_Bcast(cloudsnh(:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_Bcast(vdepn(:,:,:,li:ui,i),d2s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(psn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_Bcast(sdn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_Bcast(tccn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      call MPI_Bcast(tt2n(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(td2n(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(lsprecn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(convprecn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(ustarn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(wstarn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(olin(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(hmixn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      call MPI_Bcast(tropopausen(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
+      call MPI_Bcast(cloudsnh(:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_Bcast(vdepn(:,:,:,li:ui,i),d2s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(psn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_Bcast(sdn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_Bcast(tccn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      call MPI_Bcast(tt2n(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(td2n(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(lsprecn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(convprecn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(ustarn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(wstarn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(olin(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(hmixn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      call MPI_Bcast(tropopausen(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
       if (mp_ierr /= 0) goto 600 
     end do
@@ -1252,38 +1252,38 @@
       if (dest.eq.id_read) cycle
       i=dest*nvar_async
-      call MPI_Isend(uu(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(vv(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(uupol(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(vvpol(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(ww(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      i=i+1
-      call MPI_Isend(tt(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(rho(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(drhodz(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(tth(:,:,:,mind),d3s2,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(qvh(:,:,:,mind),d3s2,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(qv(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      i=i+1
-      call MPI_Isend(pv(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      call MPI_Isend(uu(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(vv(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(uupol(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(vvpol(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(ww(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      i=i+1
+      call MPI_Isend(tt(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(rho(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(drhodz(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(tth(:,:,:,mind),d3s2,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(qvh(:,:,:,mind),d3s2,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(qv(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      i=i+1
+      call MPI_Isend(pv(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
       if (mp_ierr /= 0) goto 600
       i=i+1
@@ -1292,44 +1292,44 @@
       if (mp_ierr /= 0) goto 600 
 
-      call MPI_Isend(cloudsh(:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(vdep(:,:,:,mind),d2s2,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(ps(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      i=i+1
-      call MPI_Isend(sd(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      i=i+1
-      call MPI_Isend(tcc(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      i=i+1
-      call MPI_Isend(tt2(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(td2(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(lsprec(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(convprec(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(ustar(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(wstar(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(hmix(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600 
-      i=i+1
-      call MPI_Isend(tropopause(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
-      if (mp_ierr /= 0) goto 600
-      i=i+1
-      call MPI_Isend(oli(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      call MPI_Isend(cloudsh(:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(vdep(:,:,:,mind),d2s2,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(ps(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      i=i+1
+      call MPI_Isend(sd(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      i=i+1
+      call MPI_Isend(tcc(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      i=i+1
+      call MPI_Isend(tt2(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(td2(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(lsprec(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(convprec(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(ustar(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(wstar(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(hmix(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600 
+      i=i+1
+      call MPI_Isend(tropopause(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
+      if (mp_ierr /= 0) goto 600
+      i=i+1
+      call MPI_Isend(oli(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
       if (mp_ierr /= 0) goto 600 
 
@@ -1337,17 +1337,17 @@
       if (readclouds) then
         i=i+1
-        ! call MPI_Isend(icloud_stats(:,:,:,mind),d2s1*5,mp_pp,dest,tm1,&
+        ! call MPI_Isend(icloud_stats(:,:,:,mind),d2s1*5,mp_sp,dest,tm1,&
         !      &MPI_COMM_WORLD,reqs(i),mp_ierr)
-        call MPI_Isend(clw4(:,:,mind),d2s1,mp_pp,dest,tm1,&
+        call MPI_Isend(clw4(:,:,mind),d2s1,mp_sp,dest,tm1,&
              &MPI_COMM_WORLD,reqs(i),mp_ierr)
 
         if (mp_ierr /= 0) goto 600
 
-        ! call MPI_Isend(clwc(:,:,:,mind),d3s1,mp_pp,dest,tm1,&
+        ! call MPI_Isend(clwc(:,:,:,mind),d3s1,mp_sp,dest,tm1,&
         !      &MPI_COMM_WORLD,reqs(i),mp_ierr)
         ! if (mp_ierr /= 0) goto 600
         ! i=i+1
 
-        ! call MPI_Isend(ciwc(:,:,:,mind),d3s1,mp_pp,dest,tm1,&
+        ! call MPI_Isend(ciwc(:,:,:,mind),d3s1,mp_sp,dest,tm1,&
         !      &MPI_COMM_WORLD,reqs(i),mp_ierr)
         ! if (mp_ierr /= 0) goto 600
@@ -1431,50 +1431,50 @@
 ! Get MPI tags/requests for communications
     j=mp_pid*nvar_async
-    call MPI_Irecv(uu(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(vv(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(uupol(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(vvpol(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(ww(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(uu(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(vv(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(uupol(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(vvpol(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(ww(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600
     j=j+1
-    call MPI_Irecv(tt(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(rho(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(drhodz(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(tth(:,:,:,mind),d3s2,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(qvh(:,:,:,mind),d3s2,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-
-    call MPI_Irecv(qv(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(tt(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(rho(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(drhodz(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(tth(:,:,:,mind),d3s2,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(qvh(:,:,:,mind),d3s2,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+
+    call MPI_Irecv(qv(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600
     j=j+1
-    call MPI_Irecv(pv(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(pv(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600 
@@ -1485,57 +1485,57 @@
     j=j+1
 
-    call MPI_Irecv(cloudsh(:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(vdep(:,:,:,mind),d2s2,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(ps(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(cloudsh(:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(vdep(:,:,:,mind),d2s2,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(ps(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600
     j=j+1
-    call MPI_Irecv(sd(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(sd(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600
     j=j+1
-    call MPI_Irecv(tcc(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(tcc(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600
     j=j+1
-    call MPI_Irecv(tt2(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(td2(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(lsprec(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(convprec(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-
-    call MPI_Irecv(ustar(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(wstar(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(hmix(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
-         &MPI_COMM_WORLD,reqs(j),mp_ierr)
-    if (mp_ierr /= 0) goto 600 
-    j=j+1
-    call MPI_Irecv(tropopause(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(tt2(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(td2(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(lsprec(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(convprec(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+
+    call MPI_Irecv(ustar(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(wstar(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(hmix(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
+         &MPI_COMM_WORLD,reqs(j),mp_ierr)
+    if (mp_ierr /= 0) goto 600 
+    j=j+1
+    call MPI_Irecv(tropopause(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600
     j=j+1
-    call MPI_Irecv(oli(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
+    call MPI_Irecv(oli(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
          &MPI_COMM_WORLD,reqs(j),mp_ierr)
     if (mp_ierr /= 0) goto 600 
@@ -1547,15 +1547,15 @@
       j=j+1
 
-      ! call MPI_Irecv(icloud_stats(:,:,:,mind),d2s1*5,mp_pp,id_read,MPI_ANY_TAG,&
+      ! call MPI_Irecv(icloud_stats(:,:,:,mind),d2s1*5,mp_sp,id_read,MPI_ANY_TAG,&
       !      &MPI_COMM_WORLD,reqs(j),mp_ierr)
-      call MPI_Irecv(clw4(:,:,mind),d2s1*5,mp_pp,id_read,MPI_ANY_TAG,&
+      call MPI_Irecv(clw4(:,:,mind),d2s1*5,mp_sp,id_read,MPI_ANY_TAG,&
            &MPI_COMM_WORLD,reqs(j),mp_ierr)
       if (mp_ierr /= 0) goto 600
 
-      ! call MPI_Irecv(clwc(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
+      ! call MPI_Irecv(clwc(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
       !      &MPI_COMM_WORLD,reqs(j),mp_ierr)    
       ! if (mp_ierr /= 0) goto 600 
       ! j=j+1
-      ! call MPI_Irecv(ciwc(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
+      ! call MPI_Irecv(ciwc(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
       !      &MPI_COMM_WORLD,reqs(j),mp_ierr)    
       ! if (mp_ierr /= 0) goto 600 
@@ -1656,5 +1656,5 @@
 
 ! 1) Using a separate grid (gridunc0) for received values
-! call MPI_Reduce(gridunc, gridunc0, grid_size3d, mp_pp, MPI_SUM, id_root, &
+! call MPI_Reduce(gridunc, gridunc0, grid_size3d, mp_sp, MPI_SUM, id_root, &
 !      & mp_comm_used, mp_ierr)
 ! if (mp_ierr /= 0) goto 600
@@ -1662,14 +1662,14 @@
 ! 2) Using in-place reduction
     if (lroot) then
-      call MPI_Reduce(MPI_IN_PLACE, gridunc, grid_size3d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(MPI_IN_PLACE, gridunc, grid_size3d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600
     else
-      call MPI_Reduce(gridunc, gridunc, grid_size3d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(gridunc, gridunc, grid_size3d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
     end if
 
     if ((WETDEP).and.(ldirect.gt.0)) then
-      call MPI_Reduce(wetgridunc, wetgridunc0, grid_size2d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(wetgridunc, wetgridunc0, grid_size2d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600
@@ -1677,5 +1677,5 @@
 
     if ((DRYDEP).and.(ldirect.gt.0)) then
-      call MPI_Reduce(drygridunc, drygridunc0, grid_size2d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(drygridunc, drygridunc0, grid_size2d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600
@@ -1684,9 +1684,9 @@
 ! Receptor concentrations    
     if (lroot) then
-      call MPI_Reduce(MPI_IN_PLACE,creceptor,rcpt_size,mp_pp,MPI_SUM,id_root, &
+      call MPI_Reduce(MPI_IN_PLACE,creceptor,rcpt_size,mp_sp,MPI_SUM,id_root, &
            & mp_comm_used,mp_ierr)
       if (mp_ierr /= 0) goto 600
     else
-      call MPI_Reduce(creceptor,creceptor,rcpt_size,mp_pp,MPI_SUM,id_root, &
+      call MPI_Reduce(creceptor,creceptor,rcpt_size,mp_sp,MPI_SUM,id_root, &
            & mp_comm_used,mp_ierr)
     end if
@@ -1732,5 +1732,5 @@
 
 ! Using a separate grid (gridunc0) for received values, for debugging
-! call MPI_Reduce(griduncn, griduncn0, grid_size3d, mp_pp, MPI_SUM, id_root, &
+! call MPI_Reduce(griduncn, griduncn0, grid_size3d, mp_sp, MPI_SUM, id_root, &
 !      & mp_comm_used, mp_ierr)
 ! if (mp_ierr /= 0) goto 600
@@ -1738,14 +1738,14 @@
 ! Using in-place reduction
     if (lroot) then
-      call MPI_Reduce(MPI_IN_PLACE, griduncn, grid_size3d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(MPI_IN_PLACE, griduncn, grid_size3d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600
     else
-      call MPI_Reduce(griduncn, griduncn, grid_size3d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(griduncn, griduncn, grid_size3d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
     end if
 
     if ((WETDEP).and.(ldirect.gt.0)) then
-      call MPI_Reduce(wetgriduncn, wetgriduncn0, grid_size2d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(wetgriduncn, wetgriduncn0, grid_size2d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600
@@ -1753,5 +1753,5 @@
 
     if ((DRYDEP).and.(ldirect.gt.0)) then
-      call MPI_Reduce(drygriduncn, drygriduncn0, grid_size2d, mp_pp, MPI_SUM, id_root, &
+      call MPI_Reduce(drygriduncn, drygriduncn0, grid_size2d, mp_sp, MPI_SUM, id_root, &
            & mp_comm_used, mp_ierr)
       if (mp_ierr /= 0) goto 600
Index: src/par_mod.f90
===================================================================
--- src/par_mod.f90	(revision 41d8574bea1b0f91e61dffd5dd1d17882407f826)
+++ src/par_mod.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -42,9 +42,12 @@
   !****************************************************************
   ! Parameter defining KIND parameter for double/single precision
+  ! 'cp' sets the precision for some internal calculations (sp or dp),
+  ! sp is default but dp can be used for increased precision.
+  ! WARNING: for now, do not use 'dp'
   !****************************************************************
 
   integer,parameter :: dp=selected_real_kind(P=15)
   integer,parameter :: sp=selected_real_kind(6)
-
+  integer,parameter :: cp=sp ! sp is default
 
   !***********************************************************
Index: src/readwind_mpi.f90
===================================================================
--- src/readwind_mpi.f90	(revision 41d8574bea1b0f91e61dffd5dd1d17882407f826)
+++ src/readwind_mpi.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -458,5 +458,5 @@
 !hg
     call shift_field(clwch,nxfield,ny,nuvzmax,nuvz,numwfmem,n)
-    call shift_field(ciwch,nxfield,ny,nuvzmax,nuvz,numwfmem,n)
+    if (.not.sumclouds) call shift_field(ciwch,nxfield,ny,nuvzmax,nuvz,numwfmem,n)
 !hg end
 
Index: src/timemanager.f90
===================================================================
--- src/timemanager.f90	(revision 41d8574bea1b0f91e61dffd5dd1d17882407f826)
+++ src/timemanager.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -113,4 +113,5 @@
   real :: drydeposit(maxspec),gridtotalunc,wetgridtotalunc
   real :: drygridtotalunc,xold,yold,zold,xmassfract
+  real, parameter :: e_inv = 1.0/exp(1.0)
   !double precision xm(maxspec,maxpointspec_act),
   !    +                 xm_depw(maxspec,maxpointspec_act),
@@ -594,5 +595,5 @@
 !ZHG 2015
                   !CGZ-lifetime: Check mass fraction left/save lifetime
-                   ! if(real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.0.01.and.checklifetime(j,ks).eq.0.)then
+                   ! if(real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.inv_e.and.checklifetime(j,ks).eq.0.)then
                        !Mass below 1% of initial >register lifetime
                        ! checklifetime(j,ks)=abs(itra1(j)-itramem(j))
Index: src/timemanager_mpi.f90
===================================================================
--- src/timemanager_mpi.f90	(revision 41d8574bea1b0f91e61dffd5dd1d17882407f826)
+++ src/timemanager_mpi.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -116,4 +116,5 @@
   real :: drydeposit(maxspec),gridtotalunc,wetgridtotalunc
   real :: drygridtotalunc,xold,yold,zold,xmassfract
+  real, parameter :: e_inv = 1.0/exp(1.0)
 !double precision xm(maxspec,maxpointspec_act),
 !    +                 xm_depw(maxspec,maxpointspec_act),
@@ -755,5 +756,5 @@
                    
                    !CGZ-lifetime: Check mass fraction left/save lifetime
-                   ! if(lroot.and.real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.0.01.and.checklifetime(j,ks).eq.0.)then
+                   ! if(lroot.and.real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.inv_e.and.checklifetime(j,ks).eq.0.)then
                        !Mass below 1% of initial >register lifetime
                    !     checklifetime(j,ks)=abs(itra1(j)-itramem(j))
Index: src/unc_mod.f90
===================================================================
--- src/unc_mod.f90	(revision 8a65cb0801b09eb0ae933a1afabbe10361a9021b)
+++ src/unc_mod.f90	(revision fdc0f03d0fd969385acd98d3a3206e9d802172bb)
@@ -22,18 +22,20 @@
 module unc_mod
 
+  use par_mod, only:cp
+
   implicit none
 
   real,allocatable ,dimension (:,:,:,:,:,:,:) :: gridunc
   real,allocatable, dimension (:,:,:,:,:,:,:) :: griduncn
-  real,allocatable, dimension (:,:,:,:,:,:) :: drygridunc
-  real,allocatable, dimension (:,:,:,:,:,:) :: drygriduncn
-  real,allocatable, dimension (:,:,:,:,:,:) :: wetgridunc
-  real,allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygridunc
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygriduncn
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgridunc
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn
 
 ! For sum of individual contributions, used for the MPI version
-  real,allocatable, dimension (:,:,:,:,:,:) :: drygridunc0
-  real,allocatable, dimension (:,:,:,:,:,:) :: drygriduncn0
-  real,allocatable, dimension (:,:,:,:,:,:) :: wetgridunc0
-  real,allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn0
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygridunc0
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygriduncn0
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgridunc0
+  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn0
 
   real,allocatable, dimension (:,:,:,:,:) :: init_cond
