Changes in / [52aabab:e603ee6] in flexpart.git
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
r4ba50e6 re603ee6 1 FP_ecmwf_gfortran*2 *.o3 *_mod.mod4 1 .DS_Store 5 2 output -
src/FLEXPART.f90
r414a5e5 rb4d29ce 50 50 integer :: idummy = -320 51 51 character(len=256) :: inline_options !pathfile, flexversion, arg2 52 integer :: index_v 52 53 53 54 54 ! Generate a large number of random numbers … … 61 61 62 62 ! FLEXPART version string 63 ! flexversion='Version 9.2 beta (2014-07-01)' 64 flexversion='Version 9.2.0.1 (2015-01-27)' 65 ! default inlide options 66 inline_options='none' 67 !verbosity flags defined in com_mod.f90 68 63 flexversion='Version 9.2 beta (2014-07-01)' 64 verbosity=0 65 69 66 ! Read the pathnames where input/output files are stored 70 67 !******************************************************* 71 68 69 inline_options='none' 72 70 select case (iargc()) 73 case (2) !2 parameters: pathfile and inline options71 case (2) 74 72 call getarg(1,arg1) 75 73 pathfile=arg1 76 74 call getarg(2,arg2) 77 75 inline_options=arg2 78 case (1) !1 parameter pathfiel or inline options76 case (1) 79 77 call getarg(1,arg1) 80 78 pathfile=arg1 … … 83 81 inline_options=arg1 84 82 endif 85 case (0) !default behavior83 case (0) 86 84 write(pathfile,'(a11)') './pathnames' 87 85 end select … … 91 89 print*,'Welcome to FLEXPART ', trim(flexversion) 92 90 print*,'FLEXPART is free software released under the GNU General Public License.' 93 94 ! inline options allow to fine tune the verbosity during run time 95 ! e.g.: show compilation parameters or input variables, time execution 91 96 92 if (inline_options(1:1).eq.'-') then 97 ! if (index(inline_options,'v').gt.0) then 98 ! print*, 'verbose mode' 99 ! verbosity=1 100 ! index_v=index(inline_options,'v') 101 ! if (inline_options(index_v+1:index_v+1).eq.'2') then 102 ! verbosity=2 103 ! endif 104 ! endif 105 106 !if (trim(inline_options).eq.'-v'.or.trim(inline_options).eq.'-v1') then 107 if (index(inline_options,'v').gt.0) then 108 index_v=index(inline_options,'v') 109 print*, 'Verbose mode: display additional information during run' 93 if (trim(inline_options).eq.'-v'.or.trim(inline_options).eq.'-v1') then 94 print*, 'Verbose mode 1: display detailed information during run' 110 95 verbosity=1 111 if (inline_options(index_v+1:index_v+1).eq.'2') then 96 endif 97 if (trim(inline_options).eq.'-v2') then 98 print*, 'Verbose mode 2: display more detailed information during run' 112 99 verbosity=2 113 endif 114 print*, 'verbosity level=', verbosity !inline_options(index_v+1:index_v+1) 115 116 endif 117 !iif (trim(inline_options).eq.'-v2') then 118 ! print*, 'Verbose mode 2: display more detailed information during run' 119 ! verbosity=2 120 !endif 121 122 if (index(inline_options,'i').gt.0) then 123 !if (trim(inline_options).eq.'-i') then 124 index_v=index(inline_options,'i') 125 print*, 'Info mode: provide run specific information and stop' 100 endif 101 if (trim(inline_options).eq.'-i') then 102 print*, 'Info mode: provide detailed run specific information and stop' 126 103 verbosity=1 127 104 info_flag=1 128 !if (trim(inline_options).eq.'-i2') then 129 if (inline_options(index_v+1:index_v+1).eq.'2') then 130 print*, 'Including input files' 131 ! verbosity=1 132 info_flag=2 133 endif 134 endif 135 !if (trim(inline_options).eq.'-i2') then 136 ! print*, 'Info mode: provide more detailed run specific information and stop' 137 ! verbosity=1 138 ! info_flag=2 139 !endif 140 if (index(inline_options,'t').gt.0) then 141 time_flag=1 142 print*, 'timing execution: not implemented' 143 !stop 144 endif 145 if (index(inline_options,'d').gt.0) then 146 debug_flag=1 147 print*, 'debug: not implemented' 148 print*, 'debug_flag=', debug_flag 149 !stop 150 endif 105 endif 106 if (trim(inline_options).eq.'-i2') then 107 print*, 'Info mode: provide more detailed run specific information and stop' 108 verbosity=2 109 info_flag=1 110 endif 151 111 endif 152 112 153 113 if (verbosity.gt.0) then 154 print*, 'FLEXPART>******************************'155 print*, 'FLEXPART>* verbosity level:', verbosity156 print*, 'FLEXPART>* info only: ', info_flag157 print*, 'FLEXPART>* time execution: ', time_flag158 print*, 'FLEXPART>******************************'159 160 print*, 'FLEXPART> parameters from par_mod'161 print*, 'FLEXPART> nxmax= ', nxmax162 print*, 'FLEXPART> nymax= ', nymax163 print*, 'FLEXPART> nuvzmax=', nuvzmax164 print*, 'FLEXPART> nwzmax= ', nwzmax165 print*, 'FLEXPART> nzmax= ', nzmax166 print*, 'FLEXPART> nxshift=', nxshift167 print*, 'FLEXPART> maxpart=', maxpart168 print*, 'FLEXPART> maxspec=', maxspec169 170 if (info_flag.eq.1) stop171 114 write(*,*) 'call readpaths' 172 115 endif 173 116 call readpaths(pathfile) 174 117 175 !if (time_flag.gt.1) then !show clock info 118 if (verbosity.gt.1) then !show clock info 119 !print*,'length(4)',length(4) 176 120 !count=0,count_rate=1000 177 CALL SYSTEM_CLOCK(count_clock0, count_rate, count_max)121 CALL SYSTEM_CLOCK(count_clock0, count_rate, count_max) 178 122 !WRITE(*,*) 'SYSTEM_CLOCK',count, count_rate, count_max 179 123 !WRITE(*,*) 'SYSTEM_CLOCK, count_clock0', count_clock0 180 124 !WRITE(*,*) 'SYSTEM_CLOCK, count_rate', count_rate 181 125 !WRITE(*,*) 'SYSTEM_CLOCK, count_max', count_max 182 !endif126 endif 183 127 184 128 ! Read the user specifications for the current model run … … 190 134 call readcommand 191 135 if (verbosity.gt.0) then 192 write(*,*) ' ldirect 193 write(*,*) ' ibdate,ibtime=', 136 write(*,*) ' ldirect=', ldirect 137 write(*,*) ' ibdate,ibtime=',ibdate,ibtime 194 138 write(*,*) ' iedate,ietime=', iedate,ietime 195 endif 196 if (time_flag.gt.0) then 139 if (verbosity.gt.1) then 197 140 CALL SYSTEM_CLOCK(count_clock, count_rate, count_max) 198 141 write(*,*) 'SYSTEM_CLOCK',(count_clock - count_clock0)/real(count_rate) !, count_rate, count_max 199 142 endif 143 endif 200 144 201 145 ! Read the age classes to be used … … 206 150 call readageclasses 207 151 208 if ( time_flag.gt.1) then152 if (verbosity.gt.1) then 209 153 CALL SYSTEM_CLOCK(count_clock, count_rate, count_max) 210 154 write(*,*) 'SYSTEM_CLOCK',(count_clock - count_clock0)/real(count_rate) !, count_rate, count_max … … 224 168 225 169 if (verbosity.gt.0) then 226 write(*,*) 'FLEXPART> call gridcheck' 227 endif 170 write(*,*) 'call gridcheck' 171 endif 172 228 173 call gridcheck 229 174 230 if ( time_flag.gt.0) then175 if (verbosity.gt.1) then 231 176 CALL SYSTEM_CLOCK(count_clock, count_rate, count_max) 232 177 write(*,*) 'SYSTEM_CLOCK',(count_clock - count_clock0)/real(count_rate) !, count_rate, count_max … … 242 187 243 188 if (verbosity.gt.0) then 244 write(*,*) ' FLEXPART>call readoutgrid'189 write(*,*) 'call readoutgrid' 245 190 endif 246 191 … … 250 195 call readoutgrid_nest 251 196 if (verbosity.gt.0) then 252 write(*,*) ' FLEXPART>readoutgrid_nest'197 write(*,*) '# readoutgrid_nest' 253 198 endif 254 199 endif … … 258 203 259 204 if (verbosity.eq.1) then 260 print*,' FLEXPART>call readreceptors'205 print*,'call readreceptors' 261 206 endif 262 207 call readreceptors … … 272 217 273 218 if (verbosity.gt.0) then 274 print*,' FLEXPART>call readlanduse'219 print*,'call readlanduse' 275 220 endif 276 221 call readlanduse … … 280 225 281 226 if (verbosity.gt.0) then 282 print*,' FLEXPART>call assignland'227 print*,'call assignland' 283 228 endif 284 229 call assignland … … 288 233 289 234 if (verbosity.gt.0) then 290 print*,' FLEXPART>call readreleases'235 print*,'call readreleases' 291 236 endif 292 237 call readreleases … … 328 273 else 329 274 if (verbosity.gt.0) then 330 print*,' setnumpart=0, numparticlecount=0'275 print*,'numpart=0, numparticlecount=0' 331 276 endif 332 277 numpart=0 … … 363 308 364 309 call writeheader 365 ! write header in ASCII format310 ! FLEXPART 9.2 ticket ?? write header in ASCII format 366 311 call writeheader_txt 367 312 !if (nested_output.eq.1) call writeheader_nest … … 412 357 !******************************** 413 358 414 if ( time_flag.gt.0) then415 CALL SYSTEM_CLOCK(count_clock, count_rate, count_max)416 write(*,*) 'SYSTEM_CLOCK',(count_clock - count_clock0)/real(count_rate) !, count_rate, count_max417 endif418 if (info_flag.eq.2) then419 print*, 'info only mode (stop before call timemanager)'420 stop421 endif422 if (verbosity.gt.0) then359 if (verbosity.gt.0) then 360 if (verbosity.gt.1) then 361 CALL SYSTEM_CLOCK(count_clock, count_rate, count_max) 362 write(*,*) 'SYSTEM_CLOCK',(count_clock - count_clock0)/real(count_rate) !, count_rate, count_max 363 endif 364 if (info_flag.eq.1) then 365 print*, 'info only mode (stop)' 366 stop 367 endif 423 368 print*,'call timemanager' 424 369 endif -
src/com_mod.f90
re92a713 rb4d29ce 23 23 !**************************************************************** 24 24 25 character :: path(numpath+2*maxnests)* 25625 character :: path(numpath+2*maxnests)*120 26 26 integer :: length(numpath+2*maxnests) 27 27 character(len=256) :: pathfile, flexversion, arg1, arg2 … … 686 686 integer :: verbosity=0 687 687 integer :: info_flag=0 688 integer :: time_flag=0689 integer :: debug_flag=0690 688 integer :: count_clock, count_clock0, count_rate, count_max 691 689 logical :: nmlout=.true. -
src/gridcheck.f90
r6470a47 rb4d29ce 446 446 nuvz+1,nwz 447 447 write(*,*) 448 write(*,'(a)') ' gridcheck>Mother domain:'449 write(*,'(a,f10.5,a,f10.5,a,f10.5)') ' gridcheck>Longitude range: ', &448 write(*,'(a)') ' Mother domain:' 449 write(*,'(a,f10.5,a,f10.5,a,f10.5)') ' Longitude range: ', & 450 450 xlon0,' to ',xlon0+(nx-1)*dx,' Grid distance: ',dx 451 write(*,'(a,f10.5,a,f10.5,a,f10.5)') ' gridcheck>Latitude range : ', &451 write(*,'(a,f10.5,a,f10.5,a,f10.5)') ' Latitude range : ', & 452 452 ylat0,' to ',ylat0+(ny-1)*dy,' Grid distance: ',dy 453 453 write(*,*) … … 545 545 '###### ' 546 546 write(*,*) 547 !write(*,'(a)') '!!! PLEASE INSERT A NEW CD-ROM AND !!!'548 !write(*,'(a)') '!!! PRESS ANY KEY TO CONTINUE... !!!'549 !write(*,'(a)') '!!! ...OR TERMINATE FLEXPART PRESSING!!!'550 !write(*,'(a)') '!!! THE "X" KEY... !!!'551 !write(*,*)552 !read(*,'(a)') opt553 !if(opt.eq.'X') then547 write(*,'(a)') '!!! PLEASE INSERT A NEW CD-ROM AND !!!' 548 write(*,'(a)') '!!! PRESS ANY KEY TO CONTINUE... !!!' 549 write(*,'(a)') '!!! ...OR TERMINATE FLEXPART PRESSING!!!' 550 write(*,'(a)') '!!! THE "X" KEY... !!!' 551 write(*,*) 552 read(*,'(a)') opt 553 if(opt.eq.'X') then 554 554 stop 555 !else556 !goto 5557 !endif555 else 556 goto 5 557 endif 558 558 559 559 end subroutine gridcheck -
src/makefile
rda396a2 r4fbe7a5 6 6 LIBPATH1 = /xnilu_wrk/flex_wrk/bin64/grib_api/lib 7 7 LIBPATH2 = /usr/lib/x86_64-linux-gnu/ 8 FFLAGS = -O2 8 FFLAGS = -O2 -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -I$(INCPATH) 9 9 #FFLAGS = -fbounds-check -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -I$(INCPATH) 10 10 LDFLAGS = $(FFLAGS) -L$(LIBPATH2) -L$(LIBPATH1) -lgrib_api_f90 -lgrib_api -lm -ljasper -
src/par_mod.f90
rda396a2 r0b71109 123 123 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !FNL XF 124 124 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=152,nwzmax=152,nzmax=152 !ECMWF new 125 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !ECMWF125 integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !ECMWF 126 126 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=26,nwzmax=26,nzmax=26 127 127 !integer,parameter :: nxmax=721,nymax=361,nuvzmax=64,nwzmax=64,nzmax=64 128 integer,parameter :: nxmax=721,nymax=361,nuvzmax=138,nwzmax=138,nzmax=138 !ECMWF 0.5129 128 !integer,parameter :: nxmax=1201,nymax=235,nuvzmax=58,nwzmax=58,nzmax=58 130 129 131 130 integer,parameter :: nxshift=359 ! for ECMWF 132 !integer,parameter :: nxshift=718 ! for ECMWF 0.5133 131 !integer,parameter :: nxshift=0 ! for GFS or FNL (XF) 134 132 … … 156 154 !********************************************* 157 155 158 !integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0159 integer,parameter :: maxnests=1,nxmaxn=361,nymaxn=351 !ECMWF156 integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0 157 !integer,parameter :: maxnests=1,nxmaxn=351,nymaxn=351 !ECMWF 160 158 !integer,parameter :: maxnests=1, nxmaxn=201, nymaxn=161 ! FNL XF 161 159 ! maxnests maximum number of nested grids … … 200 198 !************************************************** 201 199 202 integer,parameter :: maxpart= 4000000203 integer,parameter :: maxspec= 1200 integer,parameter :: maxpart=150000 201 integer,parameter :: maxspec=4 204 202 205 203 -
src/readcommand.f90
rcd1f691 rb4d29ce 444 444 if ((ipout.ne.0).and.(ipout.ne.1).and.(ipout.ne.2)) then 445 445 write(*,*) ' #### FLEXPART MODEL ERROR! FILE COMMAND: #### ' 446 write(*,*) ' #### IPOUT MUST BE 0, 1, or 2! #### '446 write(*,*) ' #### IPOUT MUST BE 1, 2 OR 3! #### ' 447 447 stop 448 448 endif -
src/readpaths.f90
r18c1336 rb4d29ce 63 63 length(i)=index(path(i),' ')-1 64 64 65 66 if (verbosity.gt.0) then67 print*, 'path read', i, '=', path(i)68 end if69 65 70 end do71 72 73 do i=1,numpath74 75 66 string_test = path(i) 76 67 character_test = string_test(length(i):length(i)) 77 68 !print*, 'character_test, string_test ', character_test, string_test 78 69 if ((character_test .NE. '/') .AND. (i .LT. 4)) then 79 print*, ' readpaths>WARNING: path not ending in /'70 print*, 'WARNING: path not ending in /' 80 71 print*, path(i) 81 72 path(i) = string_test(1:length(i)) // '/' … … 83 74 print*, 'fix: padded with /' 84 75 print*, path(i) 85 print*, 'length(i) increased 1' , length(i)76 print*, 'length(i) increased 1' 86 77 endif 87 88 end do 89 90 78 end do 91 79 92 80 ! Check whether any nested subdomains are to be used … … 107 95 30 numbnests=i-1 108 96 109 if (verbosity.gt.0) then110 do i=1,numpath111 print*, 'path tested', i, '=', path(i)112 end do113 end if114 115 97 close(unitpath) 116 98 return 117 118 119 120 99 121 100 998 write(*,*) ' #### TRAJECTORY MODEL ERROR! ERROR WHILE #### ' -
src/readreleases.f90
r242571d rb4d29ce 126 126 ! prepare namelist output if requested 127 127 if (nmlout.eqv..true.) then 128 !open(unitreleasesout,file=path(2)(1:length(2))//'RELEASES.namelist',access='append',status='new',err=1000) 129 open(unitreleasesout,file=path(2)(1:length(2))//'RELEASES.namelist',err=1000) 128 open(unitreleasesout,file=path(2)(1:length(2))//'RELEASES.namelist',access='append',status='new',err=1000) 130 129 endif 131 130 … … 259 258 if (stat.ne.0) write(*,*)'ERROR: could not allocate xmasssave' 260 259 261 write (*,*) ' readreleases>Releasepoints : ', numpoint260 write (*,*) 'Releasepoints : ', numpoint 262 261 263 262 do i=1,numpoint … … 294 293 295 294 do i=1,nspec 296 if (verbosity.gt.0) then297 print*, 'readreleases> call readspecies', i298 endif299 300 295 if (readerror.ne.0) then 301 296 read(unitreleases,*,err=998) specnum_rel(i) … … 499 494 endif ! if namelist format 500 495 501 502 if (verbosity.gt.1 .and. numpoint.eq.1) then ! verbosity 2 or larger503 write(*,*) 'numpoint=', numpoint504 print*, id1,it1505 print*, id2,it2506 print*, xpoint1(numpoint)507 print*, ypoint1(numpoint)508 print*, xpoint2(numpoint)509 print*, ypoint2(numpoint)510 print*, 'kindz=' , kindz(numpoint)511 print*, zpoint1(numpoint)512 print*, zpoint2(numpoint)513 print*, npart(numpoint)514 do i=1,nspec515 !mass(i)=516 print*, 'xmass=', xmass(numpoint,i)517 end do518 print*, compoint(numpoint)519 endif520 521 522 496 ! If a release point contains no particles, stop and issue error message 523 497 !*********************************************************************** … … 562 536 write(*,*) 'after simulation stops.' 563 537 write(*,*) 'Make files COMMAND and RELEASES consistent.' 564 write(*,*) jul1, ' < ' , bdate565 write(*,*) ' .or. '566 write(*,*) jul2 , ' > ', edate567 568 538 stop 569 539 endif … … 593 563 endif 594 564 595 if (verbosity.gt.1 .and. numpoint.eq.1) then ! verbosity 2 or larger596 print*, 'ireleasestart(',numpoint,')', ireleasestart(numpoint)597 print*, 'ireleaseend(',numpoint,')', ireleaseend(numpoint)598 endif599 600 565 ! Determine the release rate (particles per second) and total number 601 566 ! of particles released during the simulation -
src/readspecies.f90
r43c8684 rb4d29ce 103 103 write(aspecnumb,'(i3.3)') specnum(pos_spec) 104 104 open(unitspecies,file=path(1)(1:length(1))//'SPECIES/SPECIES_'//aspecnumb,status='old',form='formatted',err=998) 105 106 if (verbosity.gt.0) then 107 write(*,*) 'reading SPECIES',specnum(pos_spec) 108 endif 105 !write(*,*) 'reading SPECIES',specnum(pos_spec) 109 106 110 107 ASSSPEC=.FALSE.
Note: See TracChangeset
for help on using the changeset viewer.