Changeset fdc0f03 in flexpart.git


Ignore:
Timestamp:
Jan 21, 2016, 10:48:22 AM (8 years ago)
Author:
Espen Sollum ATMOS <eso@…>
Branches:
master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
Children:
fddc6ec
Parents:
41d8574
Message:

Code for cloud water should be correct if the total cw is stored in field clwc (old scheme) or in field qc (new scheme). Minor edits in some files.

Location:
src
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • src/advance.f90

    r5f9d14a rfdc0f03  
    550550  !!! CHANGE
    551551     
    552   !!!----- TEST OF THE WELL-MIXED CRITERION: modified by mc,  not to be included in final version mc
    553       ! if (zt.lt.h) then
    554       !     i_well=int(zt/h*25.)+1
    555       !     well_mixed_vector(i_well)=well_mixed_vector(i_well)+dt
    556       !     well_mixed_norm=well_mixed_norm+dt
    557       !     avg_air_dens(i_well)=avg_air_dens(i_well)+rhoa*dt
    558       !     avg_wst=avg_wst+wst*dt
    559       !     avg_ol=avg_ol+ol*dt
    560       !     avg_h=avg_h+h*dt
    561       ! end if
    562       ! h_well=h
    563   !------- END TEST
    564      
    565552  ! Determine probability of deposition
    566553  !************************************
  • src/conccalc.f90

    r8a65cb0 rfdc0f03  
    2121
    2222subroutine conccalc(itime,weight)
    23   !                      i     i
     23  !                 i     i
    2424  !*****************************************************************************
    2525  !                                                                            *
  • src/concoutput_mpi.f90

    rb069789 rfdc0f03  
    321321            do kz=1,numzgrid
    322322              do l=1,nclassunc
    323 !                auxgrid(l)=gridunc0(ix,jy,kz,ks,kp,l,nage)
    324323                auxgrid(l)=gridunc(ix,jy,kz,ks,kp,l,nage)
    325324              end do
  • src/gridcheck.f90

    rd6a0977 rfdc0f03  
    8484  real(kind=4) :: xaux1,xaux2,yaux1,yaux2
    8585  real(kind=8) :: xaux1in,xaux2in,yaux1in,yaux2in
    86   integer :: gribVer,parCat,parNum,typSurf,valSurf,discipl,parID
     86  integer :: gribVer,parCat,parNum,typSurf,valSurf,discipl,parId
    8787  !HSO  end
    8888  integer :: ix,jy,i,ifn,ifield,j,k,iumax,iwmax,numskip
     
    198198  elseif ((parCat.eq.1).and.(parNum.eq.83).and.(typSurf.eq.105)) then ! clwc
    199199    isec1(6)=246         ! indicatorOfParameter
     200    ! readclouds=.true.
     201    ! sumclouds=.false.
    200202  elseif ((parCat.eq.1).and.(parNum.eq.84).and.(typSurf.eq.105)) then ! ciwc
    201203    isec1(6)=247         ! indicatorOfParameter
    202204!ZHG end
     205! ESO qc(=clwc+ciwc)
     206  elseif ((parCat.eq.201).and.(parNum.eq.31).and.(typSurf.eq.105)) then ! qc
     207    isec1(6)=201031      ! indicatorOfParameter
     208    ! readclouds=.true.
     209    ! sumclouds=.true.
    203210  elseif ((parCat.eq.3).and.(parNum.eq.0).and.(typSurf.eq.1)) then !SP
    204211    isec1(6)=134         ! indicatorOfParameter
  • src/makefile

    r02d4810 rfdc0f03  
    418418timemanager_mpi.o: com_mod.o flux_mod.o mpi_mod.o oh_mod.o outg_mod.o \
    419419        par_mod.o point_mod.o unc_mod.o xmass_mod.o
     420unc_mod.o: par_mod.o
    420421verttransform.o: cmapf_mod.o com_mod.o par_mod.o
    421422verttransform_gfs.o: cmapf_mod.o com_mod.o par_mod.o
  • src/mpi_mod.f90

    r41d8574 rfdc0f03  
    119119  logical, parameter :: mp_dbg_out = .false.
    120120  logical, parameter :: mp_time_barrier=.true.
    121   logical, parameter :: mp_measure_time=.true.
     121  logical, parameter :: mp_measure_time=.false.
    122122  logical, parameter :: mp_exact_numpart=.true.
    123123
     
    477477
    478478! real
    479       call MPI_SCATTER(uap,numpart_mpi,mp_pp,MPI_IN_PLACE,&
    480            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    481       if (mp_ierr /= 0) goto 600
    482       call MPI_SCATTER(ucp,numpart_mpi,mp_pp,MPI_IN_PLACE,&
    483            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    484       if (mp_ierr /= 0) goto 600
    485       call MPI_SCATTER(uzp,numpart_mpi,mp_pp,MPI_IN_PLACE,&
    486            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    487       if (mp_ierr /= 0) goto 600
    488 
    489       call MPI_SCATTER(us,numpart_mpi,mp_pp,MPI_IN_PLACE,&
    490            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    491       if (mp_ierr /= 0) goto 600
    492       call MPI_SCATTER(vs,numpart_mpi,mp_pp,MPI_IN_PLACE,&
    493            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    494       if (mp_ierr /= 0) goto 600
    495       call MPI_SCATTER(ws,numpart_mpi,mp_pp,MPI_IN_PLACE,&
    496            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
     479      call MPI_SCATTER(uap,numpart_mpi,mp_sp,MPI_IN_PLACE,&
     480           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     481      if (mp_ierr /= 0) goto 600
     482      call MPI_SCATTER(ucp,numpart_mpi,mp_sp,MPI_IN_PLACE,&
     483           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     484      if (mp_ierr /= 0) goto 600
     485      call MPI_SCATTER(uzp,numpart_mpi,mp_sp,MPI_IN_PLACE,&
     486           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     487      if (mp_ierr /= 0) goto 600
     488
     489      call MPI_SCATTER(us,numpart_mpi,mp_sp,MPI_IN_PLACE,&
     490           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     491      if (mp_ierr /= 0) goto 600
     492      call MPI_SCATTER(vs,numpart_mpi,mp_sp,MPI_IN_PLACE,&
     493           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     494      if (mp_ierr /= 0) goto 600
     495      call MPI_SCATTER(ws,numpart_mpi,mp_sp,MPI_IN_PLACE,&
     496           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
    497497      if (mp_ierr /= 0) goto 600
    498498
     
    503503           &numpart_mpi,mp_dp,id_root,mp_comm_used,mp_ierr)
    504504      if (mp_ierr /= 0) goto 600
    505       call MPI_SCATTER(ztra1,numpart_mpi,mp_pp,MPI_IN_PLACE,&
    506            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
     505      call MPI_SCATTER(ztra1,numpart_mpi,mp_sp,MPI_IN_PLACE,&
     506           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
    507507      if (mp_ierr /= 0) goto 600
    508508
    509509      do i=1,nspec
    510         call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_pp,MPI_IN_PLACE,&
    511              &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
     510        call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_sp,MPI_IN_PLACE,&
     511             &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
    512512        if (mp_ierr /= 0) goto 600
    513513      end do
     
    537537
    538538! reals
    539       call MPI_SCATTER(uap,numpart_mpi,mp_pp,uap,&
    540            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    541       if (mp_ierr /= 0) goto 600
    542       call MPI_SCATTER(ucp,numpart_mpi,mp_pp,ucp,&
    543            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    544       if (mp_ierr /= 0) goto 600
    545       call MPI_SCATTER(uzp,numpart_mpi,mp_pp,uzp,&
    546            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    547       if (mp_ierr /= 0) goto 600
    548 
    549       call MPI_SCATTER(us,numpart_mpi,mp_pp,us,&
    550            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    551       if (mp_ierr /= 0) goto 600
    552       call MPI_SCATTER(vs,numpart_mpi,mp_pp,vs,&
    553            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
    554       if (mp_ierr /= 0) goto 600
    555       call MPI_SCATTER(ws,numpart_mpi,mp_pp,ws,&
    556            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
     539      call MPI_SCATTER(uap,numpart_mpi,mp_sp,uap,&
     540           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     541      if (mp_ierr /= 0) goto 600
     542      call MPI_SCATTER(ucp,numpart_mpi,mp_sp,ucp,&
     543           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     544      if (mp_ierr /= 0) goto 600
     545      call MPI_SCATTER(uzp,numpart_mpi,mp_sp,uzp,&
     546           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     547      if (mp_ierr /= 0) goto 600
     548
     549      call MPI_SCATTER(us,numpart_mpi,mp_sp,us,&
     550           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     551      if (mp_ierr /= 0) goto 600
     552      call MPI_SCATTER(vs,numpart_mpi,mp_sp,vs,&
     553           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
     554      if (mp_ierr /= 0) goto 600
     555      call MPI_SCATTER(ws,numpart_mpi,mp_sp,ws,&
     556           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
    557557      if (mp_ierr /= 0) goto 600
    558558
     
    563563           &numpart_mpi,mp_dp,id_root,mp_comm_used,mp_ierr)
    564564      if (mp_ierr /= 0) goto 600
    565       call MPI_SCATTER(ztra1,numpart_mpi,mp_pp,ztra1,&
    566            &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
     565      call MPI_SCATTER(ztra1,numpart_mpi,mp_sp,ztra1,&
     566           &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
    567567      if (mp_ierr /= 0) goto 600
    568568
    569569      do i=1,nspec
    570         call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_pp,xmass1(:,i),&
    571              &numpart_mpi,mp_pp,id_root,mp_comm_used,mp_ierr)
     570        call MPI_SCATTER(xmass1(:,i),numpart_mpi,mp_sp,xmass1(:,i),&
     571             &numpart_mpi,mp_sp,id_root,mp_comm_used,mp_ierr)
    572572        if (mp_ierr /= 0) goto 600
    573573      end do
     
    657657
    658658! Reals:
    659       call MPI_GATHER(uap, numpart_mpi, mp_pp, uap, &
    660            &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    661       if (mp_ierr /= 0) goto 600
    662       call MPI_GATHER(ucp, numpart_mpi, mp_pp, ucp, &
    663            &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    664       if (mp_ierr /= 0) goto 600
    665       call MPI_GATHER(uzp, numpart_mpi, mp_pp, uzp, &
    666            &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    667       if (mp_ierr /= 0) goto 600
    668 
    669       call MPI_GATHER(us, numpart_mpi, mp_pp, us, &
    670            &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    671       if (mp_ierr /= 0) goto 600
    672       call MPI_GATHER(vs, numpart_mpi, mp_pp, vs, &
    673            &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    674       if (mp_ierr /= 0) goto 600
    675       call MPI_GATHER(ws, numpart_mpi, mp_pp, ws, &
    676            &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     659      call MPI_GATHER(uap, numpart_mpi, mp_sp, uap, &
     660           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     661      if (mp_ierr /= 0) goto 600
     662      call MPI_GATHER(ucp, numpart_mpi, mp_sp, ucp, &
     663           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     664      if (mp_ierr /= 0) goto 600
     665      call MPI_GATHER(uzp, numpart_mpi, mp_sp, uzp, &
     666           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     667      if (mp_ierr /= 0) goto 600
     668
     669      call MPI_GATHER(us, numpart_mpi, mp_sp, us, &
     670           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     671      if (mp_ierr /= 0) goto 600
     672      call MPI_GATHER(vs, numpart_mpi, mp_sp, vs, &
     673           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     674      if (mp_ierr /= 0) goto 600
     675      call MPI_GATHER(ws, numpart_mpi, mp_sp, ws, &
     676           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    677677      if (mp_ierr /= 0) goto 600
    678678
     
    684684           &numpart_mpi, mp_dp, id_root, mp_comm_used, mp_ierr)
    685685      if (mp_ierr /= 0) goto 600
    686       call MPI_GATHER(ztra1, numpart_mpi, mp_pp, ztra1, &
    687            &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     686      call MPI_GATHER(ztra1, numpart_mpi, mp_sp, ztra1, &
     687           &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    688688      if (mp_ierr /= 0) goto 600
    689689
    690690      do i=1, nspec
    691         call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_pp, xmass1(:,i), &
    692              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     691        call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_sp, xmass1(:,i), &
     692             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    693693        if (mp_ierr /= 0) goto 600
    694694
     
    722722
    723723! Reals:
    724         call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, uap, &
    725              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    726         if (mp_ierr /= 0) goto 600
    727         call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, ucp, &
    728              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    729         if (mp_ierr /= 0) goto 600
    730         call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, uzp, &
    731              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    732         if (mp_ierr /= 0) goto 600
    733 
    734         call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, us, &
    735              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     724        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, uap, &
     725             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     726        if (mp_ierr /= 0) goto 600
     727        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, ucp, &
     728             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     729        if (mp_ierr /= 0) goto 600
     730        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, uzp, &
     731             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     732        if (mp_ierr /= 0) goto 600
     733
     734        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, us, &
     735             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    736736        if (mp_ierr /= 0) goto 600
    737         call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, vs, &
    738              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    739         if (mp_ierr /= 0) goto 600
    740         call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, ws, &
    741              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     737        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, vs, &
     738             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     739        if (mp_ierr /= 0) goto 600
     740        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, ws, &
     741             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    742742        if (mp_ierr /= 0) goto 600
    743743
     
    749749             &numpart_mpi, mp_dp, id_root, mp_comm_used, mp_ierr)
    750750        if (mp_ierr /= 0) goto 600
    751         call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, ztra1, &
    752              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     751        call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, ztra1, &
     752             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    753753        if (mp_ierr /= 0) goto 600
    754754
    755755        do i=1, nspec
    756           call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_pp, xmass1(:,i), &
    757                &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     756          call MPI_GATHER(MPI_IN_PLACE, numpart_mpi, mp_sp, xmass1(:,i), &
     757               &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    758758          if (mp_ierr /= 0) goto 600
    759759        end do
     
    784784
    785785! Reals:
    786         call MPI_GATHER(uap, numpart_mpi, mp_pp, uap, &
    787              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    788         if (mp_ierr /= 0) goto 600
    789         call MPI_GATHER(ucp, numpart_mpi, mp_pp, ucp, &
    790              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    791         if (mp_ierr /= 0) goto 600
    792         call MPI_GATHER(uzp, numpart_mpi, mp_pp, uzp, &
    793              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    794         if (mp_ierr /= 0) goto 600
    795 
    796         call MPI_GATHER(us, numpart_mpi, mp_pp, us, &
    797              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     786        call MPI_GATHER(uap, numpart_mpi, mp_sp, uap, &
     787             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     788        if (mp_ierr /= 0) goto 600
     789        call MPI_GATHER(ucp, numpart_mpi, mp_sp, ucp, &
     790             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     791        if (mp_ierr /= 0) goto 600
     792        call MPI_GATHER(uzp, numpart_mpi, mp_sp, uzp, &
     793             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     794        if (mp_ierr /= 0) goto 600
     795
     796        call MPI_GATHER(us, numpart_mpi, mp_sp, us, &
     797             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    798798        if (mp_ierr /= 0) goto 600
    799         call MPI_GATHER(vs, numpart_mpi, mp_pp, vs, &
    800              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
    801         if (mp_ierr /= 0) goto 600
    802         call MPI_GATHER(ws, numpart_mpi, mp_pp, ws, &
    803              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     799        call MPI_GATHER(vs, numpart_mpi, mp_sp, vs, &
     800             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
     801        if (mp_ierr /= 0) goto 600
     802        call MPI_GATHER(ws, numpart_mpi, mp_sp, ws, &
     803             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    804804        if (mp_ierr /= 0) goto 600
    805805
     
    811811             &numpart_mpi, mp_dp, id_root, mp_comm_used, mp_ierr)
    812812        if (mp_ierr /= 0) goto 600
    813         call MPI_GATHER(ztra1, numpart_mpi, mp_pp, ztra1, &
    814              &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     813        call MPI_GATHER(ztra1, numpart_mpi, mp_sp, ztra1, &
     814             &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    815815        if (mp_ierr /= 0) goto 600
    816816
    817817        do i=1, nspec
    818           call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_pp, xmass1(:,i), &
    819                &numpart_mpi, mp_pp, id_root, mp_comm_used, mp_ierr)
     818          call MPI_GATHER(xmass1(:,i), numpart_mpi, mp_sp, xmass1(:,i), &
     819               &numpart_mpi, mp_sp, id_root, mp_comm_used, mp_ierr)
    820820          if (mp_ierr /= 0) goto 600
    821821        end do
     
    914914! Static fields/variables sent only at startup
    915915    if (first_call) then
    916       call MPI_Bcast(oro(:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    917       if (mp_ierr /= 0) goto 600
    918       call MPI_Bcast(excessoro(:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    919       if (mp_ierr /= 0) goto 600
    920       call MPI_Bcast(lsm(:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    921       if (mp_ierr /= 0) goto 600
    922       call MPI_Bcast(xlanduse(:,:,:),d2_size3*numclass,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     916      call MPI_Bcast(oro(:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     917      if (mp_ierr /= 0) goto 600
     918      call MPI_Bcast(excessoro(:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     919      if (mp_ierr /= 0) goto 600
     920      call MPI_Bcast(lsm(:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     921      if (mp_ierr /= 0) goto 600
     922      call MPI_Bcast(xlanduse(:,:,:),d2_size3*numclass,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    923923      if (mp_ierr /= 0) goto 600
    924924      call MPI_Bcast(wftime,d1_size1,MPI_INTEGER,id_read,MPI_COMM_WORLD,mp_ierr)
     
    934934    endif
    935935
    936     call MPI_Bcast(uu(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    937     if (mp_ierr /= 0) goto 600
    938     call MPI_Bcast(vv(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    939     if (mp_ierr /= 0) goto 600
    940     call MPI_Bcast(uupol(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    941     if (mp_ierr /= 0) goto 600
    942     call MPI_Bcast(vvpol(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    943     if (mp_ierr /= 0) goto 600
    944     call MPI_Bcast(ww(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     936    call MPI_Bcast(uu(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     937    if (mp_ierr /= 0) goto 600
     938    call MPI_Bcast(vv(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     939    if (mp_ierr /= 0) goto 600
     940    call MPI_Bcast(uupol(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     941    if (mp_ierr /= 0) goto 600
     942    call MPI_Bcast(vvpol(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     943    if (mp_ierr /= 0) goto 600
     944    call MPI_Bcast(ww(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    945945    if (mp_ierr /= 0) goto 600
    946     call MPI_Bcast(tt(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    947     if (mp_ierr /= 0) goto 600
    948     call MPI_Bcast(rho(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    949     if (mp_ierr /= 0) goto 600
    950     call MPI_Bcast(drhodz(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    951     if (mp_ierr /= 0) goto 600
    952     call MPI_Bcast(tth(:,:,:,li:ui),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    953     if (mp_ierr /= 0) goto 600
    954     call MPI_Bcast(qvh(:,:,:,li:ui),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    955     if (mp_ierr /= 0) goto 600
    956     call MPI_Bcast(qv(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     946    call MPI_Bcast(tt(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     947    if (mp_ierr /= 0) goto 600
     948    call MPI_Bcast(rho(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     949    if (mp_ierr /= 0) goto 600
     950    call MPI_Bcast(drhodz(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     951    if (mp_ierr /= 0) goto 600
     952    call MPI_Bcast(tth(:,:,:,li:ui),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     953    if (mp_ierr /= 0) goto 600
     954    call MPI_Bcast(qvh(:,:,:,li:ui),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     955    if (mp_ierr /= 0) goto 600
     956    call MPI_Bcast(qv(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    957957    if (mp_ierr /= 0) goto 600
    958     call MPI_Bcast(pv(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     958    call MPI_Bcast(pv(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    959959    if (mp_ierr /= 0) goto 600
    960960    call MPI_Bcast(clouds(:,:,:,li:ui),d3s1,MPI_INTEGER1,id_read,MPI_COMM_WORLD,mp_ierr)
     
    963963! cloud water/ice:
    964964    if (readclouds) then
    965       ! call MPI_Bcast(icloud_stats(:,:,:,li:ui),d2s1*5,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     965      ! call MPI_Bcast(icloud_stats(:,:,:,li:ui),d2s1*5,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    966966      ! if (mp_ierr /= 0) goto 600
    967       call MPI_Bcast(clw4(:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    968       if (mp_ierr /= 0) goto 600
    969       ! call MPI_Bcast(clwc(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     967      call MPI_Bcast(clw4(:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     968      if (mp_ierr /= 0) goto 600
     969      ! call MPI_Bcast(clwc(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    970970      ! if (mp_ierr /= 0) goto 600
    971       ! call MPI_Bcast(ciwc(:,:,:,li:ui),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     971      ! call MPI_Bcast(ciwc(:,:,:,li:ui),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    972972      ! if (mp_ierr /= 0) goto 600
    973973    end if
    974974
    975975! 2D fields
    976     call MPI_Bcast(cloudsh(:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    977     if (mp_ierr /= 0) goto 600
    978     call MPI_Bcast(vdep(:,:,:,li:ui),d2s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    979     if (mp_ierr /= 0) goto 600
    980     call MPI_Bcast(ps(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     976    call MPI_Bcast(cloudsh(:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     977    if (mp_ierr /= 0) goto 600
     978    call MPI_Bcast(vdep(:,:,:,li:ui),d2s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     979    if (mp_ierr /= 0) goto 600
     980    call MPI_Bcast(ps(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    981981    if (mp_ierr /= 0) goto 600
    982     call MPI_Bcast(sd(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     982    call MPI_Bcast(sd(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    983983    if (mp_ierr /= 0) goto 600
    984     call MPI_Bcast(tcc(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     984    call MPI_Bcast(tcc(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    985985    if (mp_ierr /= 0) goto 600
    986     call MPI_Bcast(tt2(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    987     if (mp_ierr /= 0) goto 600
    988     call MPI_Bcast(td2(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    989     if (mp_ierr /= 0) goto 600
    990     call MPI_Bcast(lsprec(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    991     if (mp_ierr /= 0) goto 600
    992     call MPI_Bcast(convprec(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    993     if (mp_ierr /= 0) goto 600
    994     call MPI_Bcast(ustar(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    995     if (mp_ierr /= 0) goto 600
    996     call MPI_Bcast(wstar(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    997     if (mp_ierr /= 0) goto 600
    998     call MPI_Bcast(hmix(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    999     if (mp_ierr /= 0) goto 600
    1000     call MPI_Bcast(tropopause(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     986    call MPI_Bcast(tt2(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     987    if (mp_ierr /= 0) goto 600
     988    call MPI_Bcast(td2(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     989    if (mp_ierr /= 0) goto 600
     990    call MPI_Bcast(lsprec(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     991    if (mp_ierr /= 0) goto 600
     992    call MPI_Bcast(convprec(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     993    if (mp_ierr /= 0) goto 600
     994    call MPI_Bcast(ustar(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     995    if (mp_ierr /= 0) goto 600
     996    call MPI_Bcast(wstar(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     997    if (mp_ierr /= 0) goto 600
     998    call MPI_Bcast(hmix(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     999    if (mp_ierr /= 0) goto 600
     1000    call MPI_Bcast(tropopause(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    10011001    if (mp_ierr /= 0) goto 600
    1002     call MPI_Bcast(oli(:,:,:,li:ui),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1003     if (mp_ierr /= 0) goto 600
    1004 
    1005     call MPI_Bcast(z0,numclass,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     1002    call MPI_Bcast(oli(:,:,:,li:ui),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1003    if (mp_ierr /= 0) goto 600
     1004
     1005    call MPI_Bcast(z0,numclass,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    10061006    if (mp_ierr /= 0) goto 600
    10071007
     
    10941094! Static fields/variables sent only at startup
    10951095    if (first_call) then
    1096       call MPI_Bcast(oron(:,:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1097       if (mp_ierr /= 0) goto 600
    1098       call MPI_Bcast(excessoron(:,:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1099       if (mp_ierr /= 0) goto 600
    1100       call MPI_Bcast(lsmn(:,:,:),d2_size3,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1101       if (mp_ierr /= 0) goto 600
    1102       call MPI_Bcast(xlandusen(:,:,:,:),d2_size3*numclass,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     1096      call MPI_Bcast(oron(:,:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1097      if (mp_ierr /= 0) goto 600
     1098      call MPI_Bcast(excessoron(:,:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1099      if (mp_ierr /= 0) goto 600
     1100      call MPI_Bcast(lsmn(:,:,:),d2_size3,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1101      if (mp_ierr /= 0) goto 600
     1102      call MPI_Bcast(xlandusen(:,:,:,:),d2_size3*numclass,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    11031103      if (mp_ierr /= 0) goto 600
    11041104      first_call=.false.
     
    11101110    do i=1, numbnests
    11111111! 3D fields
    1112       call MPI_Bcast(uun(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1113       if (mp_ierr /= 0) goto 600
    1114       call MPI_Bcast(vvn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1115       if (mp_ierr /= 0) goto 600
    1116       call MPI_Bcast(wwn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1117       if (mp_ierr /= 0) goto 600
    1118       call MPI_Bcast(ttn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1119       if (mp_ierr /= 0) goto 600
    1120       call MPI_Bcast(rhon(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1121       if (mp_ierr /= 0) goto 600
    1122       call MPI_Bcast(drhodzn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1123       if (mp_ierr /= 0) goto 600
    1124       call MPI_Bcast(tthn(:,:,:,li:ui,i),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1125       if (mp_ierr /= 0) goto 600
    1126       call MPI_Bcast(qvhn(:,:,:,li:ui,i),d3s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1127       if (mp_ierr /= 0) goto 600
    1128       call MPI_Bcast(qvn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1129       if (mp_ierr /= 0) goto 600
    1130       call MPI_Bcast(pvn(:,:,:,li:ui,i),d3s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     1112      call MPI_Bcast(uun(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1113      if (mp_ierr /= 0) goto 600
     1114      call MPI_Bcast(vvn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1115      if (mp_ierr /= 0) goto 600
     1116      call MPI_Bcast(wwn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1117      if (mp_ierr /= 0) goto 600
     1118      call MPI_Bcast(ttn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1119      if (mp_ierr /= 0) goto 600
     1120      call MPI_Bcast(rhon(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1121      if (mp_ierr /= 0) goto 600
     1122      call MPI_Bcast(drhodzn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1123      if (mp_ierr /= 0) goto 600
     1124      call MPI_Bcast(tthn(:,:,:,li:ui,i),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1125      if (mp_ierr /= 0) goto 600
     1126      call MPI_Bcast(qvhn(:,:,:,li:ui,i),d3s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1127      if (mp_ierr /= 0) goto 600
     1128      call MPI_Bcast(qvn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1129      if (mp_ierr /= 0) goto 600
     1130      call MPI_Bcast(pvn(:,:,:,li:ui,i),d3s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    11311131      if (mp_ierr /= 0) goto 600
    11321132      call MPI_Bcast(cloudsn(:,:,:,li:ui,i),d3s1,MPI_INTEGER1,id_read,MPI_COMM_WORLD,mp_ierr)
     
    11341134
    11351135! 2D fields
    1136       call MPI_Bcast(cloudsnh(:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1137       if (mp_ierr /= 0) goto 600
    1138       call MPI_Bcast(vdepn(:,:,:,li:ui,i),d2s2,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1139       if (mp_ierr /= 0) goto 600
    1140       call MPI_Bcast(psn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1141       if (mp_ierr /= 0) goto 600
    1142       call MPI_Bcast(sdn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1143       if (mp_ierr /= 0) goto 600
    1144       call MPI_Bcast(tccn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1145       if (mp_ierr /= 0) goto 600
    1146       call MPI_Bcast(tt2n(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1147       if (mp_ierr /= 0) goto 600
    1148       call MPI_Bcast(td2n(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1149       if (mp_ierr /= 0) goto 600
    1150       call MPI_Bcast(lsprecn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1151       if (mp_ierr /= 0) goto 600
    1152       call MPI_Bcast(convprecn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1153       if (mp_ierr /= 0) goto 600
    1154       call MPI_Bcast(ustarn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1155       if (mp_ierr /= 0) goto 600
    1156       call MPI_Bcast(wstarn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1157       if (mp_ierr /= 0) goto 600
    1158       call MPI_Bcast(olin(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1159       if (mp_ierr /= 0) goto 600
    1160       call MPI_Bcast(hmixn(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
    1161       if (mp_ierr /= 0) goto 600
    1162       call MPI_Bcast(tropopausen(:,:,:,li:ui,i),d2s1,mp_pp,id_read,MPI_COMM_WORLD,mp_ierr)
     1136      call MPI_Bcast(cloudsnh(:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1137      if (mp_ierr /= 0) goto 600
     1138      call MPI_Bcast(vdepn(:,:,:,li:ui,i),d2s2,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1139      if (mp_ierr /= 0) goto 600
     1140      call MPI_Bcast(psn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1141      if (mp_ierr /= 0) goto 600
     1142      call MPI_Bcast(sdn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1143      if (mp_ierr /= 0) goto 600
     1144      call MPI_Bcast(tccn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1145      if (mp_ierr /= 0) goto 600
     1146      call MPI_Bcast(tt2n(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1147      if (mp_ierr /= 0) goto 600
     1148      call MPI_Bcast(td2n(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1149      if (mp_ierr /= 0) goto 600
     1150      call MPI_Bcast(lsprecn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1151      if (mp_ierr /= 0) goto 600
     1152      call MPI_Bcast(convprecn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1153      if (mp_ierr /= 0) goto 600
     1154      call MPI_Bcast(ustarn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1155      if (mp_ierr /= 0) goto 600
     1156      call MPI_Bcast(wstarn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1157      if (mp_ierr /= 0) goto 600
     1158      call MPI_Bcast(olin(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1159      if (mp_ierr /= 0) goto 600
     1160      call MPI_Bcast(hmixn(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
     1161      if (mp_ierr /= 0) goto 600
     1162      call MPI_Bcast(tropopausen(:,:,:,li:ui,i),d2s1,mp_sp,id_read,MPI_COMM_WORLD,mp_ierr)
    11631163      if (mp_ierr /= 0) goto 600
    11641164    end do
     
    12521252      if (dest.eq.id_read) cycle
    12531253      i=dest*nvar_async
    1254       call MPI_Isend(uu(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1255       if (mp_ierr /= 0) goto 600
    1256       i=i+1
    1257       call MPI_Isend(vv(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1258       if (mp_ierr /= 0) goto 600
    1259       i=i+1
    1260       call MPI_Isend(uupol(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1261       if (mp_ierr /= 0) goto 600
    1262       i=i+1
    1263       call MPI_Isend(vvpol(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1264       if (mp_ierr /= 0) goto 600
    1265       i=i+1
    1266       call MPI_Isend(ww(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1267       if (mp_ierr /= 0) goto 600
    1268       i=i+1
    1269       call MPI_Isend(tt(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1270       if (mp_ierr /= 0) goto 600
    1271       i=i+1
    1272       call MPI_Isend(rho(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1273       if (mp_ierr /= 0) goto 600
    1274       i=i+1
    1275       call MPI_Isend(drhodz(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1276       if (mp_ierr /= 0) goto 600
    1277       i=i+1
    1278       call MPI_Isend(tth(:,:,:,mind),d3s2,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1279       if (mp_ierr /= 0) goto 600
    1280       i=i+1
    1281       call MPI_Isend(qvh(:,:,:,mind),d3s2,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1282       if (mp_ierr /= 0) goto 600
    1283       i=i+1
    1284       call MPI_Isend(qv(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1285       if (mp_ierr /= 0) goto 600
    1286       i=i+1
    1287       call MPI_Isend(pv(:,:,:,mind),d3s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1254      call MPI_Isend(uu(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1255      if (mp_ierr /= 0) goto 600
     1256      i=i+1
     1257      call MPI_Isend(vv(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1258      if (mp_ierr /= 0) goto 600
     1259      i=i+1
     1260      call MPI_Isend(uupol(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1261      if (mp_ierr /= 0) goto 600
     1262      i=i+1
     1263      call MPI_Isend(vvpol(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1264      if (mp_ierr /= 0) goto 600
     1265      i=i+1
     1266      call MPI_Isend(ww(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1267      if (mp_ierr /= 0) goto 600
     1268      i=i+1
     1269      call MPI_Isend(tt(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1270      if (mp_ierr /= 0) goto 600
     1271      i=i+1
     1272      call MPI_Isend(rho(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1273      if (mp_ierr /= 0) goto 600
     1274      i=i+1
     1275      call MPI_Isend(drhodz(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1276      if (mp_ierr /= 0) goto 600
     1277      i=i+1
     1278      call MPI_Isend(tth(:,:,:,mind),d3s2,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1279      if (mp_ierr /= 0) goto 600
     1280      i=i+1
     1281      call MPI_Isend(qvh(:,:,:,mind),d3s2,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1282      if (mp_ierr /= 0) goto 600
     1283      i=i+1
     1284      call MPI_Isend(qv(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1285      if (mp_ierr /= 0) goto 600
     1286      i=i+1
     1287      call MPI_Isend(pv(:,:,:,mind),d3s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    12881288      if (mp_ierr /= 0) goto 600
    12891289      i=i+1
     
    12921292      if (mp_ierr /= 0) goto 600
    12931293
    1294       call MPI_Isend(cloudsh(:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1295       if (mp_ierr /= 0) goto 600
    1296       i=i+1
    1297       call MPI_Isend(vdep(:,:,:,mind),d2s2,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1298       if (mp_ierr /= 0) goto 600
    1299       i=i+1
    1300       call MPI_Isend(ps(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1301       if (mp_ierr /= 0) goto 600
    1302       i=i+1
    1303       call MPI_Isend(sd(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1304       if (mp_ierr /= 0) goto 600
    1305       i=i+1
    1306       call MPI_Isend(tcc(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1307       if (mp_ierr /= 0) goto 600
    1308       i=i+1
    1309       call MPI_Isend(tt2(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1310       if (mp_ierr /= 0) goto 600
    1311       i=i+1
    1312       call MPI_Isend(td2(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1313       if (mp_ierr /= 0) goto 600
    1314       i=i+1
    1315       call MPI_Isend(lsprec(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1316       if (mp_ierr /= 0) goto 600
    1317       i=i+1
    1318       call MPI_Isend(convprec(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1319       if (mp_ierr /= 0) goto 600
    1320       i=i+1
    1321       call MPI_Isend(ustar(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1322       if (mp_ierr /= 0) goto 600
    1323       i=i+1
    1324       call MPI_Isend(wstar(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1325       if (mp_ierr /= 0) goto 600
    1326       i=i+1
    1327       call MPI_Isend(hmix(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1328       if (mp_ierr /= 0) goto 600
    1329       i=i+1
    1330       call MPI_Isend(tropopause(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    1331       if (mp_ierr /= 0) goto 600
    1332       i=i+1
    1333       call MPI_Isend(oli(:,:,:,mind),d2s1,mp_pp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1294      call MPI_Isend(cloudsh(:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1295      if (mp_ierr /= 0) goto 600
     1296      i=i+1
     1297      call MPI_Isend(vdep(:,:,:,mind),d2s2,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1298      if (mp_ierr /= 0) goto 600
     1299      i=i+1
     1300      call MPI_Isend(ps(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1301      if (mp_ierr /= 0) goto 600
     1302      i=i+1
     1303      call MPI_Isend(sd(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1304      if (mp_ierr /= 0) goto 600
     1305      i=i+1
     1306      call MPI_Isend(tcc(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1307      if (mp_ierr /= 0) goto 600
     1308      i=i+1
     1309      call MPI_Isend(tt2(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1310      if (mp_ierr /= 0) goto 600
     1311      i=i+1
     1312      call MPI_Isend(td2(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1313      if (mp_ierr /= 0) goto 600
     1314      i=i+1
     1315      call MPI_Isend(lsprec(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1316      if (mp_ierr /= 0) goto 600
     1317      i=i+1
     1318      call MPI_Isend(convprec(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1319      if (mp_ierr /= 0) goto 600
     1320      i=i+1
     1321      call MPI_Isend(ustar(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1322      if (mp_ierr /= 0) goto 600
     1323      i=i+1
     1324      call MPI_Isend(wstar(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1325      if (mp_ierr /= 0) goto 600
     1326      i=i+1
     1327      call MPI_Isend(hmix(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1328      if (mp_ierr /= 0) goto 600
     1329      i=i+1
     1330      call MPI_Isend(tropopause(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
     1331      if (mp_ierr /= 0) goto 600
     1332      i=i+1
     1333      call MPI_Isend(oli(:,:,:,mind),d2s1,mp_sp,dest,tm1,MPI_COMM_WORLD,reqs(i),mp_ierr)
    13341334      if (mp_ierr /= 0) goto 600
    13351335
     
    13371337      if (readclouds) then
    13381338        i=i+1
    1339         ! call MPI_Isend(icloud_stats(:,:,:,mind),d2s1*5,mp_pp,dest,tm1,&
     1339        ! call MPI_Isend(icloud_stats(:,:,:,mind),d2s1*5,mp_sp,dest,tm1,&
    13401340        !      &MPI_COMM_WORLD,reqs(i),mp_ierr)
    1341         call MPI_Isend(clw4(:,:,mind),d2s1,mp_pp,dest,tm1,&
     1341        call MPI_Isend(clw4(:,:,mind),d2s1,mp_sp,dest,tm1,&
    13421342             &MPI_COMM_WORLD,reqs(i),mp_ierr)
    13431343
    13441344        if (mp_ierr /= 0) goto 600
    13451345
    1346         ! call MPI_Isend(clwc(:,:,:,mind),d3s1,mp_pp,dest,tm1,&
     1346        ! call MPI_Isend(clwc(:,:,:,mind),d3s1,mp_sp,dest,tm1,&
    13471347        !      &MPI_COMM_WORLD,reqs(i),mp_ierr)
    13481348        ! if (mp_ierr /= 0) goto 600
    13491349        ! i=i+1
    13501350
    1351         ! call MPI_Isend(ciwc(:,:,:,mind),d3s1,mp_pp,dest,tm1,&
     1351        ! call MPI_Isend(ciwc(:,:,:,mind),d3s1,mp_sp,dest,tm1,&
    13521352        !      &MPI_COMM_WORLD,reqs(i),mp_ierr)
    13531353        ! if (mp_ierr /= 0) goto 600
     
    14311431! Get MPI tags/requests for communications
    14321432    j=mp_pid*nvar_async
    1433     call MPI_Irecv(uu(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
    1434          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1435     if (mp_ierr /= 0) goto 600
    1436     j=j+1
    1437     call MPI_Irecv(vv(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
    1438          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1439     if (mp_ierr /= 0) goto 600
    1440     j=j+1
    1441     call MPI_Irecv(uupol(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
    1442          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1443     if (mp_ierr /= 0) goto 600
    1444     j=j+1
    1445     call MPI_Irecv(vvpol(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
    1446          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1447     if (mp_ierr /= 0) goto 600
    1448     j=j+1
    1449     call MPI_Irecv(ww(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
     1433    call MPI_Irecv(uu(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
     1434         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1435    if (mp_ierr /= 0) goto 600
     1436    j=j+1
     1437    call MPI_Irecv(vv(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
     1438         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1439    if (mp_ierr /= 0) goto 600
     1440    j=j+1
     1441    call MPI_Irecv(uupol(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
     1442         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1443    if (mp_ierr /= 0) goto 600
     1444    j=j+1
     1445    call MPI_Irecv(vvpol(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
     1446         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1447    if (mp_ierr /= 0) goto 600
     1448    j=j+1
     1449    call MPI_Irecv(ww(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
    14501450         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    14511451    if (mp_ierr /= 0) goto 600
    14521452    j=j+1
    1453     call MPI_Irecv(tt(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
    1454          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1455     if (mp_ierr /= 0) goto 600
    1456     j=j+1
    1457     call MPI_Irecv(rho(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
    1458          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1459     if (mp_ierr /= 0) goto 600
    1460     j=j+1
    1461     call MPI_Irecv(drhodz(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
    1462          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1463     if (mp_ierr /= 0) goto 600
    1464     j=j+1
    1465     call MPI_Irecv(tth(:,:,:,mind),d3s2,mp_pp,id_read,MPI_ANY_TAG,&
    1466          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1467     if (mp_ierr /= 0) goto 600
    1468     j=j+1
    1469     call MPI_Irecv(qvh(:,:,:,mind),d3s2,mp_pp,id_read,MPI_ANY_TAG,&
    1470          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1471     if (mp_ierr /= 0) goto 600
    1472     j=j+1
    1473 
    1474     call MPI_Irecv(qv(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
     1453    call MPI_Irecv(tt(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
     1454         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1455    if (mp_ierr /= 0) goto 600
     1456    j=j+1
     1457    call MPI_Irecv(rho(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
     1458         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1459    if (mp_ierr /= 0) goto 600
     1460    j=j+1
     1461    call MPI_Irecv(drhodz(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
     1462         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1463    if (mp_ierr /= 0) goto 600
     1464    j=j+1
     1465    call MPI_Irecv(tth(:,:,:,mind),d3s2,mp_sp,id_read,MPI_ANY_TAG,&
     1466         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1467    if (mp_ierr /= 0) goto 600
     1468    j=j+1
     1469    call MPI_Irecv(qvh(:,:,:,mind),d3s2,mp_sp,id_read,MPI_ANY_TAG,&
     1470         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1471    if (mp_ierr /= 0) goto 600
     1472    j=j+1
     1473
     1474    call MPI_Irecv(qv(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
    14751475         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    14761476    if (mp_ierr /= 0) goto 600
    14771477    j=j+1
    1478     call MPI_Irecv(pv(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
     1478    call MPI_Irecv(pv(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
    14791479         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    14801480    if (mp_ierr /= 0) goto 600
     
    14851485    j=j+1
    14861486
    1487     call MPI_Irecv(cloudsh(:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1488          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1489     if (mp_ierr /= 0) goto 600
    1490     j=j+1
    1491     call MPI_Irecv(vdep(:,:,:,mind),d2s2,mp_pp,id_read,MPI_ANY_TAG,&
    1492          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1493     if (mp_ierr /= 0) goto 600
    1494     j=j+1
    1495     call MPI_Irecv(ps(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
     1487    call MPI_Irecv(cloudsh(:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1488         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1489    if (mp_ierr /= 0) goto 600
     1490    j=j+1
     1491    call MPI_Irecv(vdep(:,:,:,mind),d2s2,mp_sp,id_read,MPI_ANY_TAG,&
     1492         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1493    if (mp_ierr /= 0) goto 600
     1494    j=j+1
     1495    call MPI_Irecv(ps(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
    14961496         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    14971497    if (mp_ierr /= 0) goto 600
    14981498    j=j+1
    1499     call MPI_Irecv(sd(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
     1499    call MPI_Irecv(sd(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
    15001500         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    15011501    if (mp_ierr /= 0) goto 600
    15021502    j=j+1
    1503     call MPI_Irecv(tcc(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
     1503    call MPI_Irecv(tcc(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
    15041504         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    15051505    if (mp_ierr /= 0) goto 600
    15061506    j=j+1
    1507     call MPI_Irecv(tt2(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1508          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1509     if (mp_ierr /= 0) goto 600
    1510     j=j+1
    1511     call MPI_Irecv(td2(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1512          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1513     if (mp_ierr /= 0) goto 600
    1514     j=j+1
    1515     call MPI_Irecv(lsprec(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1516          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1517     if (mp_ierr /= 0) goto 600
    1518     j=j+1
    1519     call MPI_Irecv(convprec(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1520          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1521     if (mp_ierr /= 0) goto 600
    1522 
    1523     call MPI_Irecv(ustar(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1524          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1525     if (mp_ierr /= 0) goto 600
    1526     j=j+1
    1527     call MPI_Irecv(wstar(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1528          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1529     if (mp_ierr /= 0) goto 600
    1530     j=j+1
    1531     call MPI_Irecv(hmix(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
    1532          &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1533     if (mp_ierr /= 0) goto 600
    1534     j=j+1
    1535     call MPI_Irecv(tropopause(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
     1507    call MPI_Irecv(tt2(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1508         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1509    if (mp_ierr /= 0) goto 600
     1510    j=j+1
     1511    call MPI_Irecv(td2(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1512         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1513    if (mp_ierr /= 0) goto 600
     1514    j=j+1
     1515    call MPI_Irecv(lsprec(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1516         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1517    if (mp_ierr /= 0) goto 600
     1518    j=j+1
     1519    call MPI_Irecv(convprec(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1520         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1521    if (mp_ierr /= 0) goto 600
     1522
     1523    call MPI_Irecv(ustar(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1524         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1525    if (mp_ierr /= 0) goto 600
     1526    j=j+1
     1527    call MPI_Irecv(wstar(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1528         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1529    if (mp_ierr /= 0) goto 600
     1530    j=j+1
     1531    call MPI_Irecv(hmix(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
     1532         &MPI_COMM_WORLD,reqs(j),mp_ierr)
     1533    if (mp_ierr /= 0) goto 600
     1534    j=j+1
     1535    call MPI_Irecv(tropopause(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
    15361536         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    15371537    if (mp_ierr /= 0) goto 600
    15381538    j=j+1
    1539     call MPI_Irecv(oli(:,:,:,mind),d2s1,mp_pp,id_read,MPI_ANY_TAG,&
     1539    call MPI_Irecv(oli(:,:,:,mind),d2s1,mp_sp,id_read,MPI_ANY_TAG,&
    15401540         &MPI_COMM_WORLD,reqs(j),mp_ierr)
    15411541    if (mp_ierr /= 0) goto 600
     
    15471547      j=j+1
    15481548
    1549       ! call MPI_Irecv(icloud_stats(:,:,:,mind),d2s1*5,mp_pp,id_read,MPI_ANY_TAG,&
     1549      ! call MPI_Irecv(icloud_stats(:,:,:,mind),d2s1*5,mp_sp,id_read,MPI_ANY_TAG,&
    15501550      !      &MPI_COMM_WORLD,reqs(j),mp_ierr)
    1551       call MPI_Irecv(clw4(:,:,mind),d2s1*5,mp_pp,id_read,MPI_ANY_TAG,&
     1551      call MPI_Irecv(clw4(:,:,mind),d2s1*5,mp_sp,id_read,MPI_ANY_TAG,&
    15521552           &MPI_COMM_WORLD,reqs(j),mp_ierr)
    15531553      if (mp_ierr /= 0) goto 600
    15541554
    1555       ! call MPI_Irecv(clwc(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
     1555      ! call MPI_Irecv(clwc(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
    15561556      !      &MPI_COMM_WORLD,reqs(j),mp_ierr)   
    15571557      ! if (mp_ierr /= 0) goto 600
    15581558      ! j=j+1
    1559       ! call MPI_Irecv(ciwc(:,:,:,mind),d3s1,mp_pp,id_read,MPI_ANY_TAG,&
     1559      ! call MPI_Irecv(ciwc(:,:,:,mind),d3s1,mp_sp,id_read,MPI_ANY_TAG,&
    15601560      !      &MPI_COMM_WORLD,reqs(j),mp_ierr)   
    15611561      ! if (mp_ierr /= 0) goto 600
     
    16561656
    16571657! 1) Using a separate grid (gridunc0) for received values
    1658 ! call MPI_Reduce(gridunc, gridunc0, grid_size3d, mp_pp, MPI_SUM, id_root, &
     1658! call MPI_Reduce(gridunc, gridunc0, grid_size3d, mp_sp, MPI_SUM, id_root, &
    16591659!      & mp_comm_used, mp_ierr)
    16601660! if (mp_ierr /= 0) goto 600
     
    16621662! 2) Using in-place reduction
    16631663    if (lroot) then
    1664       call MPI_Reduce(MPI_IN_PLACE, gridunc, grid_size3d, mp_pp, MPI_SUM, id_root, &
     1664      call MPI_Reduce(MPI_IN_PLACE, gridunc, grid_size3d, mp_sp, MPI_SUM, id_root, &
    16651665           & mp_comm_used, mp_ierr)
    16661666      if (mp_ierr /= 0) goto 600
    16671667    else
    1668       call MPI_Reduce(gridunc, gridunc, grid_size3d, mp_pp, MPI_SUM, id_root, &
     1668      call MPI_Reduce(gridunc, gridunc, grid_size3d, mp_sp, MPI_SUM, id_root, &
    16691669           & mp_comm_used, mp_ierr)
    16701670    end if
    16711671
    16721672    if ((WETDEP).and.(ldirect.gt.0)) then
    1673       call MPI_Reduce(wetgridunc, wetgridunc0, grid_size2d, mp_pp, MPI_SUM, id_root, &
     1673      call MPI_Reduce(wetgridunc, wetgridunc0, grid_size2d, mp_sp, MPI_SUM, id_root, &
    16741674           & mp_comm_used, mp_ierr)
    16751675      if (mp_ierr /= 0) goto 600
     
    16771677
    16781678    if ((DRYDEP).and.(ldirect.gt.0)) then
    1679       call MPI_Reduce(drygridunc, drygridunc0, grid_size2d, mp_pp, MPI_SUM, id_root, &
     1679      call MPI_Reduce(drygridunc, drygridunc0, grid_size2d, mp_sp, MPI_SUM, id_root, &
    16801680           & mp_comm_used, mp_ierr)
    16811681      if (mp_ierr /= 0) goto 600
     
    16841684! Receptor concentrations   
    16851685    if (lroot) then
    1686       call MPI_Reduce(MPI_IN_PLACE,creceptor,rcpt_size,mp_pp,MPI_SUM,id_root, &
     1686      call MPI_Reduce(MPI_IN_PLACE,creceptor,rcpt_size,mp_sp,MPI_SUM,id_root, &
    16871687           & mp_comm_used,mp_ierr)
    16881688      if (mp_ierr /= 0) goto 600
    16891689    else
    1690       call MPI_Reduce(creceptor,creceptor,rcpt_size,mp_pp,MPI_SUM,id_root, &
     1690      call MPI_Reduce(creceptor,creceptor,rcpt_size,mp_sp,MPI_SUM,id_root, &
    16911691           & mp_comm_used,mp_ierr)
    16921692    end if
     
    17321732
    17331733! Using a separate grid (gridunc0) for received values, for debugging
    1734 ! call MPI_Reduce(griduncn, griduncn0, grid_size3d, mp_pp, MPI_SUM, id_root, &
     1734! call MPI_Reduce(griduncn, griduncn0, grid_size3d, mp_sp, MPI_SUM, id_root, &
    17351735!      & mp_comm_used, mp_ierr)
    17361736! if (mp_ierr /= 0) goto 600
     
    17381738! Using in-place reduction
    17391739    if (lroot) then
    1740       call MPI_Reduce(MPI_IN_PLACE, griduncn, grid_size3d, mp_pp, MPI_SUM, id_root, &
     1740      call MPI_Reduce(MPI_IN_PLACE, griduncn, grid_size3d, mp_sp, MPI_SUM, id_root, &
    17411741           & mp_comm_used, mp_ierr)
    17421742      if (mp_ierr /= 0) goto 600
    17431743    else
    1744       call MPI_Reduce(griduncn, griduncn, grid_size3d, mp_pp, MPI_SUM, id_root, &
     1744      call MPI_Reduce(griduncn, griduncn, grid_size3d, mp_sp, MPI_SUM, id_root, &
    17451745           & mp_comm_used, mp_ierr)
    17461746    end if
    17471747
    17481748    if ((WETDEP).and.(ldirect.gt.0)) then
    1749       call MPI_Reduce(wetgriduncn, wetgriduncn0, grid_size2d, mp_pp, MPI_SUM, id_root, &
     1749      call MPI_Reduce(wetgriduncn, wetgriduncn0, grid_size2d, mp_sp, MPI_SUM, id_root, &
    17501750           & mp_comm_used, mp_ierr)
    17511751      if (mp_ierr /= 0) goto 600
     
    17531753
    17541754    if ((DRYDEP).and.(ldirect.gt.0)) then
    1755       call MPI_Reduce(drygriduncn, drygriduncn0, grid_size2d, mp_pp, MPI_SUM, id_root, &
     1755      call MPI_Reduce(drygriduncn, drygriduncn0, grid_size2d, mp_sp, MPI_SUM, id_root, &
    17561756           & mp_comm_used, mp_ierr)
    17571757      if (mp_ierr /= 0) goto 600
  • src/par_mod.f90

    r41d8574 rfdc0f03  
    4242  !****************************************************************
    4343  ! Parameter defining KIND parameter for double/single precision
     44  ! 'cp' sets the precision for some internal calculations (sp or dp),
     45  ! sp is default but dp can be used for increased precision.
     46  ! WARNING: for now, do not use 'dp'
    4447  !****************************************************************
    4548
    4649  integer,parameter :: dp=selected_real_kind(P=15)
    4750  integer,parameter :: sp=selected_real_kind(6)
    48 
     51  integer,parameter :: cp=sp ! sp is default
    4952
    5053  !***********************************************************
  • src/readwind_mpi.f90

    r41d8574 rfdc0f03  
    458458!hg
    459459    call shift_field(clwch,nxfield,ny,nuvzmax,nuvz,numwfmem,n)
    460     call shift_field(ciwch,nxfield,ny,nuvzmax,nuvz,numwfmem,n)
     460    if (.not.sumclouds) call shift_field(ciwch,nxfield,ny,nuvzmax,nuvz,numwfmem,n)
    461461!hg end
    462462
  • src/timemanager.f90

    r41d8574 rfdc0f03  
    113113  real :: drydeposit(maxspec),gridtotalunc,wetgridtotalunc
    114114  real :: drygridtotalunc,xold,yold,zold,xmassfract
     115  real, parameter :: e_inv = 1.0/exp(1.0)
    115116  !double precision xm(maxspec,maxpointspec_act),
    116117  !    +                 xm_depw(maxspec,maxpointspec_act),
     
    594595!ZHG 2015
    595596                  !CGZ-lifetime: Check mass fraction left/save lifetime
    596                    ! if(real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.0.01.and.checklifetime(j,ks).eq.0.)then
     597                   ! if(real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.inv_e.and.checklifetime(j,ks).eq.0.)then
    597598                       !Mass below 1% of initial >register lifetime
    598599                       ! checklifetime(j,ks)=abs(itra1(j)-itramem(j))
  • src/timemanager_mpi.f90

    r41d8574 rfdc0f03  
    116116  real :: drydeposit(maxspec),gridtotalunc,wetgridtotalunc
    117117  real :: drygridtotalunc,xold,yold,zold,xmassfract
     118  real, parameter :: e_inv = 1.0/exp(1.0)
    118119!double precision xm(maxspec,maxpointspec_act),
    119120!    +                 xm_depw(maxspec,maxpointspec_act),
     
    755756                   
    756757                   !CGZ-lifetime: Check mass fraction left/save lifetime
    757                    ! if(lroot.and.real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.0.01.and.checklifetime(j,ks).eq.0.)then
     758                   ! if(lroot.and.real(npart(npoint(j)))*xmass1(j,ks)/xmass(npoint(j),ks).lt.inv_e.and.checklifetime(j,ks).eq.0.)then
    758759                       !Mass below 1% of initial >register lifetime
    759760                   !     checklifetime(j,ks)=abs(itra1(j)-itramem(j))
  • src/unc_mod.f90

    r8a65cb0 rfdc0f03  
    2222module unc_mod
    2323
     24  use par_mod, only:cp
     25
    2426  implicit none
    2527
    2628  real,allocatable ,dimension (:,:,:,:,:,:,:) :: gridunc
    2729  real,allocatable, dimension (:,:,:,:,:,:,:) :: griduncn
    28   real,allocatable, dimension (:,:,:,:,:,:) :: drygridunc
    29   real,allocatable, dimension (:,:,:,:,:,:) :: drygriduncn
    30   real,allocatable, dimension (:,:,:,:,:,:) :: wetgridunc
    31   real,allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn
     30  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygridunc
     31  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygriduncn
     32  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgridunc
     33  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn
    3234
    3335! For sum of individual contributions, used for the MPI version
    34   real,allocatable, dimension (:,:,:,:,:,:) :: drygridunc0
    35   real,allocatable, dimension (:,:,:,:,:,:) :: drygriduncn0
    36   real,allocatable, dimension (:,:,:,:,:,:) :: wetgridunc0
    37   real,allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn0
     36  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygridunc0
     37  real(cp),allocatable, dimension (:,:,:,:,:,:) :: drygriduncn0
     38  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgridunc0
     39  real(cp),allocatable, dimension (:,:,:,:,:,:) :: wetgriduncn0
    3840
    3941  real,allocatable, dimension (:,:,:,:,:) :: init_cond
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG