Changeset 462f74b in flexpart.git for src/conccalc.f90


Ignore:
Timestamp:
Jul 12, 2016, 11:02:42 AM (8 years ago)
Author:
Sabine Eckhardt <sabine@…>
Branches:
master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
Children:
842074e
Parents:
f28aa0a
Message:

first version of the backward scavenging

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/conccalc.f90

    rfdc0f03 r462f74b  
    2121
    2222subroutine conccalc(itime,weight)
    23   !                 i     i
     23  !                      i     i
    2424  !*****************************************************************************
    2525  !                                                                            *
     
    6161
    6262
     63  integer :: usekernel
     64
     65  usekernel=0
     66  if (usekernel.ne.1) then
     67     write (*,*) 'NOT USING THE KERNEL!'
     68  endif
    6369  ! For forward simulations, make a loop over the number of species;
    6470  ! for backward simulations, make an additional loop over the
     
    181187  !*****************************************************************************
    182188
    183       if ((itage.lt.10800).or.(xl.lt.0.5).or.(yl.lt.0.5).or. &
     189      if (((itage.lt.10800).or.(xl.lt.0.5).or.(yl.lt.0.5).or. &
    184190           (xl.gt.real(numxgrid-1)-0.5).or. &
    185            (yl.gt.real(numygrid-1)-0.5)) then             ! no kernel, direct attribution to grid cell
     191           (yl.gt.real(numygrid-1)-0.5)).or.(usekernel.eq.0)) then             ! no kernel, direct attribution to grid cell
    186192        if ((ix.ge.0).and.(jy.ge.0).and.(ix.le.numxgrid-1).and. &
    187193             (jy.le.numygrid-1)) then
    188           do ks=1,nspec
    189             gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     194          if (SCAVDEP) then
     195             do ks=1,nspec
     196               gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     197                 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     198                 xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*xscav_frac1(i,ks)
     199             end do
     200          else
     201             do ks=1,nspec
     202               gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    190203                 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    191204                 xmass1(i,ks)/rhoi*weight
    192           end do
     205             end do
     206          endif
    193207        endif
    194208
     
    220234          if ((jy.ge.0).and.(jy.le.numygrid-1)) then
    221235            w=wx*wy
    222             do ks=1,nspec
    223               gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     236            if (SCAVDEP) then
     237               do ks=1,nspec
     238                 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     239                   gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     240                   xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*w*weight*xscav_frac1(i,ks)
     241               end do
     242            else
     243               do ks=1,nspec
     244                 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    224245                   gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    225246                   xmass1(i,ks)/rhoi*weight*w
    226             end do
     247               end do
     248            endif
    227249          endif
    228250
    229251          if ((jyp.ge.0).and.(jyp.le.numygrid-1)) then
    230252            w=wx*(1.-wy)
    231             do ks=1,nspec
    232               gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     253            if (SCAVDEP) then
     254              do ks=1,nspec
     255                 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     256                   gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     257                   xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*w*xscav_frac1(i,ks)
     258               end do
     259             else
     260              do ks=1,nspec
     261                 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    233262                   gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    234263                   xmass1(i,ks)/rhoi*weight*w
    235             end do
    236           endif
    237         endif
     264               end do
     265             endif
     266          endif
     267        endif !ix ge 0
    238268
    239269
     
    241271          if ((jyp.ge.0).and.(jyp.le.numygrid-1)) then
    242272            w=(1.-wx)*(1.-wy)
    243             do ks=1,nspec
    244               gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     273            if (SCAVDEP) then
     274               do ks=1,nspec
     275                 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     276                   gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     277                   xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*w*weight*xscav_frac1(i,ks)
     278               end do
     279            else
     280               do ks=1,nspec
     281                 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    245282                   gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    246283                   xmass1(i,ks)/rhoi*weight*w
    247             end do
     284               end do
     285            endif
    248286          endif
    249287
    250288          if ((jy.ge.0).and.(jy.le.numygrid-1)) then
    251289            w=(1.-wx)*wy
    252             do ks=1,nspec
    253               gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     290            if (SCAVDEP) then
     291               do ks=1,nspec
     292                 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     293                   gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     294                   xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*w*xscav_frac1(i,ks)
     295               end do
     296            else
     297               do ks=1,nspec
     298                 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    254299                   gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    255300                   xmass1(i,ks)/rhoi*weight*w
    256             end do
    257           endif
    258         endif
    259       endif
    260 
    261 
     301               end do
     302            endif
     303          endif
     304        endif !ixp ge 0
     305     endif
    262306
    263307  !************************************
     
    285329          if ((ix.ge.0).and.(jy.ge.0).and.(ix.le.numxgridn-1).and. &
    286330               (jy.le.numygridn-1)) then
    287             do ks=1,nspec
    288               griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     331            if (SCAVDEP) then
     332               do ks=1,nspec
     333                 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     334                   griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     335                   xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*xscav_frac1(i,ks)
     336               end do
     337            else
     338               do ks=1,nspec
     339                 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    289340                   griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    290341                   xmass1(i,ks)/rhoi*weight
    291             end do
     342               end do
     343            endif
    292344          endif
    293345
     
    319371            if ((jy.ge.0).and.(jy.le.numygridn-1)) then
    320372              w=wx*wy
    321               do ks=1,nspec
    322                 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     373              if (SCAVDEP) then
     374                 do ks=1,nspec
     375                   griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     376                     griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     377                     xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*w*xscav_frac1(i,ks)
     378                 end do
     379              else
     380                do ks=1,nspec
     381                   griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    323382                     griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    324383                     xmass1(i,ks)/rhoi*weight*w
    325               end do
     384                 end do
     385              endif
    326386            endif
    327387
    328388            if ((jyp.ge.0).and.(jyp.le.numygridn-1)) then
    329389              w=wx*(1.-wy)
    330               do ks=1,nspec
    331                 griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     390              if (SCAVDEP) then
     391                 do ks=1,nspec
     392                   griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     393                     griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     394                     xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*w*xscav_frac1(i,ks)
     395                 end do
     396              else
     397                 do ks=1,nspec
     398                   griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    332399                     griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    333400                     xmass1(i,ks)/rhoi*weight*w
    334               end do
     401                 end do
     402              endif
    335403            endif
    336404          endif
     
    340408            if ((jyp.ge.0).and.(jyp.le.numygridn-1)) then
    341409              w=(1.-wx)*(1.-wy)
    342               do ks=1,nspec
    343                 griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     410              if (SCAVDEP) then
     411                 do ks=1,nspec
     412                   griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     413                     griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     414                     xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*w*xscav_frac1(i,ks)
     415                 end do
     416              else
     417                 do ks=1,nspec
     418                   griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    344419                     griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    345420                     xmass1(i,ks)/rhoi*weight*w
    346               end do
     421                 end do
     422              endif
    347423            endif
    348424
    349425            if ((jy.ge.0).and.(jy.le.numygridn-1)) then
    350426              w=(1.-wx)*wy
    351               do ks=1,nspec
    352                 griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     427              if (SCAVDEP) then
     428                 do ks=1,nspec
     429                   griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     430                     griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     431                     xmass1(i,ks)/(1-xscav_frac1(i,ks))/rhoi*weight*w*xscav_frac1(i,ks)
     432                 end do
     433              else
     434                 do ks=1,nspec
     435                    griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    353436                     griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    354437                     xmass1(i,ks)/rhoi*weight*w
    355               end do
     438                 end do
     439              endif
    356440            endif
    357441          endif
    358442        endif
    359 
    360443      endif
    361444    endif
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG