Changeset 08a38b5 in flexpart.git for src/conccalc_mpi.f90


Ignore:
Timestamp:
Oct 3, 2017, 3:44:21 PM (7 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:
de4c5e9
Parents:
bb579a9
Message:

Added (hardcoded) option to output number of particles per grid cell.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/conccalc_mpi.f90

    re52967c r08a38b5  
    205205        if ((ix.ge.0).and.(jy.ge.0).and.(ix.le.numxgrid-1).and. &
    206206             (jy.le.numygrid-1)) then
    207           do ks=1,nspec
    208             gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    209                  gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    210                  xmass1(i,ks)/rhoi*weight
    211           end do
     207          if (DRYBKDEP.or.WETBKDEP) then
     208            do ks=1,nspec
     209              gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     210                   gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     211                   xmass1(i,ks)/rhoi*weight*max(xscav_frac1(i,ks),0.0)
     212            end do
     213          else
     214            if (lparticlecountoutput) then
     215              do ks=1,nspec
     216                gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     217                     gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+1
     218              end do
     219            else
     220              do ks=1,nspec
     221                gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     222                     gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     223                     xmass1(i,ks)/rhoi*weight
     224              end do
     225            end if
     226          endif
    212227        endif
    213228
     
    239254          if ((jy.ge.0).and.(jy.le.numygrid-1)) then
    240255            w=wx*wy
    241             do ks=1,nspec
    242               gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     256            if (DRYBKDEP.or.WETBKDEP) then
     257               do ks=1,nspec
     258                 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     259                   gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     260                   xmass1(i,ks)/rhoi*w*weight*max(xscav_frac1(i,ks),0.0)
     261               end do
     262            else
     263               do ks=1,nspec
     264                 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    243265                   gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    244266                   xmass1(i,ks)/rhoi*weight*w
    245             end do
     267               end do
     268            endif
    246269          endif
    247270
    248271          if ((jyp.ge.0).and.(jyp.le.numygrid-1)) then
    249272            w=wx*(1.-wy)
    250             do ks=1,nspec
    251               gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     273            if (DRYBKDEP.or.WETBKDEP) then
     274              do ks=1,nspec
     275                 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     276                   gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     277                   xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0)
     278               end do
     279             else
     280              do ks=1,nspec
     281                 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    252282                   gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    253283                   xmass1(i,ks)/rhoi*weight*w
    254             end do
     284               end do
     285             endif
    255286          endif
    256287        endif
     
    260291          if ((jyp.ge.0).and.(jyp.le.numygrid-1)) then
    261292            w=(1.-wx)*(1.-wy)
    262             do ks=1,nspec
    263               gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     293            if (DRYBKDEP.or.WETBKDEP) then
     294               do ks=1,nspec
     295                 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     296                   gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     297                   xmass1(i,ks)/rhoi*w*weight*max(xscav_frac1(i,ks),0.0)
     298               end do
     299            else
     300               do ks=1,nspec
     301                 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    264302                   gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    265303                   xmass1(i,ks)/rhoi*weight*w
    266             end do
     304               end do
     305            endif
    267306          endif
    268307
    269308          if ((jy.ge.0).and.(jy.le.numygrid-1)) then
    270309            w=(1.-wx)*wy
    271             do ks=1,nspec
    272               gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     310            if (DRYBKDEP.or.WETBKDEP) then
     311               do ks=1,nspec
     312                 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     313                   gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     314                   xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0)
     315               end do
     316            else
     317               do ks=1,nspec
     318                 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    273319                   gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    274320                   xmass1(i,ks)/rhoi*weight*w
    275             end do
     321               end do
     322            endif
    276323          endif
    277324        endif
     
    304351          if ((ix.ge.0).and.(jy.ge.0).and.(ix.le.numxgridn-1).and. &
    305352               (jy.le.numygridn-1)) then
    306             do ks=1,nspec
    307               griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     353            if (DRYBKDEP.or.WETBKDEP) then
     354               do ks=1,nspec
     355                 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    308356                   griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    309                    xmass1(i,ks)/rhoi*weight
    310             end do
     357                   xmass1(i,ks)/rhoi*weight*max(xscav_frac1(i,ks),0.0)
     358               end do
     359            else
     360              if (lparticlecountoutput) then
     361                do ks=1,nspec
     362                  griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     363                       griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+1
     364                end do
     365              else
     366                do ks=1,nspec
     367                  griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     368                       griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     369                       xmass1(i,ks)/rhoi*weight
     370                end do
     371              endif
     372            endif
    311373          endif
    312374
     
    338400            if ((jy.ge.0).and.(jy.le.numygridn-1)) then
    339401              w=wx*wy
    340               do ks=1,nspec
    341                 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     402              if (DRYBKDEP.or.WETBKDEP) then
     403                 do ks=1,nspec
     404                   griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     405                     griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     406                     xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0)
     407                 end do
     408              else
     409                do ks=1,nspec
     410                   griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    342411                     griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    343412                     xmass1(i,ks)/rhoi*weight*w
    344               end do
     413                 end do
     414              endif
    345415            endif
    346416
    347417            if ((jyp.ge.0).and.(jyp.le.numygridn-1)) then
    348418              w=wx*(1.-wy)
    349               do ks=1,nspec
    350                 griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     419              if (DRYBKDEP.or.WETBKDEP) then
     420                 do ks=1,nspec
     421                   griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     422                     griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     423                     xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0)
     424                 end do
     425              else
     426                 do ks=1,nspec
     427                   griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    351428                     griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    352429                     xmass1(i,ks)/rhoi*weight*w
    353               end do
     430                 end do
     431              endif
    354432            endif
    355433          endif
     
    359437            if ((jyp.ge.0).and.(jyp.le.numygridn-1)) then
    360438              w=(1.-wx)*(1.-wy)
    361               do ks=1,nspec
    362                 griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     439              if (DRYBKDEP.or.WETBKDEP) then
     440                 do ks=1,nspec
     441                   griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
     442                     griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
     443                     xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0)
     444                 end do
     445              else
     446                 do ks=1,nspec
     447                   griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= &
    363448                     griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ &
    364449                     xmass1(i,ks)/rhoi*weight*w
    365               end do
     450                 end do
     451              endif
    366452            endif
    367453
    368454            if ((jy.ge.0).and.(jy.le.numygridn-1)) then
    369455              w=(1.-wx)*wy
    370               do ks=1,nspec
    371                 griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     456              if (DRYBKDEP.or.WETBKDEP) then
     457                 do ks=1,nspec
     458                   griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
     459                     griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
     460                     xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0)
     461                 end do
     462              else
     463                 do ks=1,nspec
     464                    griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= &
    372465                     griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ &
    373466                     xmass1(i,ks)/rhoi*weight*w
    374               end do
     467                 end do
     468              endif
    375469            endif
    376470          endif
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG