45 integer :: ibdatein,ibtimein,nspecin,itimein,numpointin,i,j,ix
46 integer :: id1,id2,it1,it2
47 real :: xlonin,ylatin,
ran1,topo,hmixi,pvi,qvi,rhoi,tri,tti
49 real(kind=dp) :: julin,julpartin,
juldate
51 integer :: idummy = -8
58 open(unitpartin,file=path(2)(1:length(2))//
'header', &
59 form=
'unformatted',err=998)
61 read(unitpartin) ibdatein,ibtimein
67 read(unitpartin) nspecin
69 if ((ldirect.eq.1).and.(nspec.ne.nspecin)) goto 997
74 read(unitpartin) j,specin
75 if ((ldirect.eq.1).and.(species(i)(1:7).ne.specin)) goto 996
78 read(unitpartin) numpointin
79 if (numpointin.ne.numpoint) goto 995
103 open(unitpartin,file=path(2)(1:length(2))//
'partposit_end', &
104 form=
'unformatted',err=998)
107 100
read(unitpartin,end=99) itimein
110 read(unitpartin) npoint(i),xlonin,ylatin,ztra1(i),itramem(i), &
111 topo,pvi,qvi,rhoi,hmixi,tri,tti,(xmass1(i,j),j=1,nspec)
113 if (xlonin.eq.-9999.9) goto 100
114 xtra1(i)=(xlonin-xlon0)/dx
115 ytra1(i)=(ylatin-ylat0)/dy
116 numparticlecount=max(numparticlecount,npoint(i))
123 julin=
juldate(ibdatein,ibtimein)+
real(itimein,kind=dp)/86400._dp
124 if (abs(julin-bdate).gt.1.e-5) goto 994
126 julpartin=
juldate(ibdatein,ibtimein)+ &
127 real(itramem(i),kind=dp)/86400._dp
128 nclass(i)=min(int(
ran1(idummy)*
real(nclassunc))+1, &
132 itramem(i)=nint((julpartin-bdate)*86400.)
133 itrasplit(i)=ldirect*itsplit
139 994
write(*,*)
' #### FLEXPART MODEL ERROR IN READPARTPOSITIONS#### '
140 write(*,*)
' #### ENDING TIME OF PREVIOUS MODEL RUN DOES #### '
141 write(*,*)
' #### NOT AGREE WITH STARTING TIME OF THIS RUN.#### '
144 write(*,*)
'julin: ',julin,id1,it1
145 write(*,*)
'bdate: ',bdate,id2,it2
148 995
write(*,*)
' #### FLEXPART MODEL ERROR IN READPARTPOSITIONS#### '
149 write(*,*)
' #### NUMBER OF RELEASE LOCATIONS DOES NOT #### '
150 write(*,*)
' #### AGREE WITH CURRENT SETTINGS! #### '
153 996
write(*,*)
' #### FLEXPART MODEL ERROR IN READPARTPOSITIONS#### '
154 write(*,*)
' #### SPECIES NAMES TO BE READ IN DO NOT #### '
155 write(*,*)
' #### AGREE WITH CURRENT SETTINGS! #### '
158 997
write(*,*)
' #### FLEXPART MODEL ERROR IN READPARTPOSITIONS#### '
159 write(*,*)
' #### THE NUMBER OF SPECIES TO BE READ IN DOES #### '
160 write(*,*)
' #### NOT AGREE WITH CURRENT SETTINGS! #### '
163 998
write(*,*)
' #### FLEXPART MODEL ERROR! THE FILE #### '
164 write(*,*)
' #### '//path(2)(1:length(2))//
'grid'//
' #### '
165 write(*,*)
' #### CANNOT BE OPENED. IF A FILE WITH THIS #### '
166 write(*,*)
' #### NAME ALREADY EXISTS, DELETE IT AND START #### '
167 write(*,*)
' #### THE PROGRAM AGAIN. #### '
subroutine caldate(juldate, yyyymmdd, hhmiss)
subroutine readpartpositions
real(kind=dp) function juldate(yyyymmdd, hhmiss)