Changeset 57c5b2e in flexpart.git


Ignore:
Timestamp:
Sep 13, 2015, 7:54:53 PM (9 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:
cbad0f1
Parents:
f55fdce
Message:

Bug fixed where number of particles released (MPI version) was not always correct

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/releaseparticles_mpi.f90

    r5f9d14a r57c5b2e  
    5555  use com_mod
    5656  use random_mod, only: ran1
    57   use mpi_mod, only: mp_partid, maxpart_mpi, mp_partgroup_np, mp_seed
     57  use mpi_mod, only: mp_partid, maxpart_mpi, mp_partgroup_np, mp_seed, mpif_mpi_barrier
    5858
    5959  implicit none
     
    7878  logical :: first_call=.true.
    7979
    80   ! Use different seed for each process
     80  ! Use different seed for each process.
     81  !****************************************************************************
    8182  if (first_call) then
    8283    idummy=idummy+mp_seed
     
    152153  !**********************************************************************
    153154
     155        rfraction=rfraction*average_timecorrect
     156
     157        rfraction=rfraction+xmasssave(i)  ! number to be released at this time
     158
     159        ! number to be released for one process
     160        if (mp_partid.lt.mod(int(rfraction),mp_partgroup_np)) then
     161          addone=1
     162        else
     163          addone=0
     164        end if
     165
     166        numrel=int(rfraction/mp_partgroup_np) + addone
     167
     168        xmasssave(i)=rfraction-int(rfraction)
     169
     170      else
     171! All particles are released in this time interval
     172! ************************************************
    154173        if (mp_partid.lt.mod(npart(i),mp_partgroup_np)) then
    155174          addone=1
     
    158177        end if
    159178
    160         rfraction=rfraction*average_timecorrect/real(mp_partgroup_np)
    161 
    162         rfraction=rfraction+xmasssave(i)  ! number to be released at this time
    163         numrel=int(rfraction)+addone
    164         xmasssave(i)=rfraction-real(numrel)
    165       else
    166         if (mp_partid.lt.mod(npart(i),mp_partgroup_np)) then
    167           addone=1
    168         else
    169           addone=0
    170         end if
    171 
    172179        numrel=npart(i)/mp_partgroup_np+addone
    173180      endif
    174 
     181     
    175182      xaux=xpoint2(i)-xpoint1(i)
    176183      yaux=ypoint2(i)-ypoint1(i)
     
    208215               xmass1(ipart,k)=xmass(i,k)/real(npart(i)) &
    209216                    *timecorrect(k)/average_timecorrect
    210   !            write (*,*) 'xmass1: ',xmass1(ipart,k),ipart,k
     217  !             write (*,*) 'xmass1: ',xmass1(ipart,k),ipart,k
    211218  ! Assign certain properties to particle
    212219  !**************************************
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG