Changeset 37017c8 in flexpart.git for src/timemanager.f90
- Timestamp:
- Jul 15, 2015, 9:36:05 AM (9 years ago)
- Branches:
- svn-petra, svn-trunk
- Children:
- cbd7de3
- Parents:
- 0317b57
- git-author:
- Ignacio Pisso <Ignacio.Pisso@…> (07/15/15 08:45:07)
- git-committer:
- Ignacio Pisso <Ignacio.Pisso@…> (07/15/15 09:36:05)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/timemanager.f90
rb4d29ce r37017c8 43 43 ! call convection BEFORE new fields are read in BWD mode * 44 44 ! Changes Caroline Forster, Feb 2005 * 45 !new interface between flexpart and convection scheme * 46 !Emanuel's latest subroutine convect43c.f is used * 45 ! new interface between flexpart and convection scheme * 46 ! Emanuel's latest subroutine convect43c.f is used * 47 ! Changes Stefan Henne, Harald Sodemann, 2013-2014 * 48 ! added netcdf output code * 47 49 !***************************************************************************** 48 50 ! * 49 51 ! Variables: * 50 ! DEP.true. if either wet or dry deposition is switched on *52 ! dep .true. if either wet or dry deposition is switched on * 51 53 ! decay(maxspec) [1/s] decay constant for radioactive decay * 52 ! DRYDEP.true. if dry deposition is switched on *54 ! drydep .true. if dry deposition is switched on * 53 55 ! ideltas [s] modelling period * 54 56 ! itime [s] actual temporal position of calculation * … … 70 72 ! prob probability of absorption at ground due to dry * 71 73 ! deposition * 72 ! WETDEP.true. if wet deposition is switched on *74 ! wetdep .true. if wet deposition is switched on * 73 75 ! weight weight for each concentration sample (1/2 or 1) * 74 76 ! uap(maxpart),ucp(maxpart),uzp(maxpart) = random velocities due to * … … 92 94 use par_mod 93 95 use com_mod 96 #ifdef NETCDF_OUTPUT 97 use netcdf_output_mod, only: concoutput_netcdf, concoutput_nest_netcdf,concoutput_surf_netcdf, concoutput_surf_nest_netcdf 98 #endif 94 99 95 100 implicit none … … 129 134 130 135 136 itime=0 131 137 !write(*,45) itime,numpart,gridtotalunc,wetgridtotalunc,drygridtotalunc 132 138 write(*,46) float(itime)/3600,itime,numpart … … 141 147 do itime=0,ideltas,lsynctime 142 148 143 144 149 ! Computation of wet deposition, OH reaction and mass transfer 145 150 ! between two species every lsynctime seconds … … 152 157 !******************************************************************** 153 158 154 if ( WETDEP.and. itime .ne. 0 .and. numpart .gt. 0) then159 if (wetdep .and. itime .ne. 0 .and. numpart .gt. 0) then 155 160 if (verbosity.gt.0) then 156 161 write (*,*) 'timemanager> call wetdepo' … … 159 164 endif 160 165 161 if ( OHREA.and. itime .ne. 0 .and. numpart .gt. 0) &166 if (ohrea .and. itime .ne. 0 .and. numpart .gt. 0) & 162 167 call ohreaction(itime,lsynctime,loutnext) 163 168 164 if ( ASSSPEC.and. itime .ne. 0 .and. numpart .gt. 0) then169 if (assspec .and. itime .ne. 0 .and. numpart .gt. 0) then 165 170 stop 'associated species not yet implemented!' 166 171 ! call transferspec(itime,lsynctime,loutnext) … … 240 245 !*********************************************************************** 241 246 242 if ( DEP.and.(itime.eq.loutnext).and.(ldirect.gt.0)) then247 if (dep.and.(itime.eq.loutnext).and.(ldirect.gt.0)) then 243 248 do ks=1,nspec 244 249 do kp=1,maxpointspec_act … … 350 355 if ((iout.le.3.).or.(iout.eq.5)) then 351 356 if (surf_only.ne.1) then 352 call concoutput(itime,outnum,gridtotalunc, & 353 wetgridtotalunc,drygridtotalunc) 357 if (lnetcdfout.eq.1) then 358 #ifdef NETCDF_OUTPUT 359 call concoutput_netcdf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc) 360 #endif 361 else 362 call concoutput(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc) 363 endif 354 364 else 355 if (verbosity.eq.1) then 356 print*,'call concoutput_surf ' 357 CALL SYSTEM_CLOCK(count_clock) 358 WRITE(*,*) 'SYSTEM_CLOCK',count_clock - count_clock0 359 endif 360 call concoutput_surf(itime,outnum,gridtotalunc, & 361 wetgridtotalunc,drygridtotalunc) 362 if (verbosity.eq.1) then 363 print*,'called concoutput_surf ' 364 CALL SYSTEM_CLOCK(count_clock) 365 WRITE(*,*) 'SYSTEM_CLOCK',count_clock - count_clock0 366 endif 365 if (verbosity.eq.1) then 366 print*,'call concoutput_surf ' 367 call system_clock(count_clock) 368 write(*,*) 'system clock',count_clock - count_clock0 369 endif 370 if (lnetcdfout.eq.1) then 371 #ifdef NETCDF_OUTPUT 372 call concoutput_surf_netcdf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc) 373 #endif 374 else 375 call concoutput_surf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc) 376 if (verbosity.eq.1) then 377 print*,'called concoutput_surf ' 378 call system_clock(count_clock) 379 write(*,*) 'system clock',count_clock - count_clock0 380 endif 381 endif 367 382 endif 368 383 369 if ((nested_output.eq.1).and.(surf_only.ne.1)) call concoutput_nest(itime,outnum) 370 if ((nested_output.eq.1).and.(surf_only.eq.1)) call concoutput_surf_nest(itime,outnum) 384 if (nested_output .eq. 1) then 385 if (lnetcdfout.eq.0) then 386 if (surf_only.ne.1) then 387 call concoutput_nest(itime,outnum) 388 else 389 call concoutput_surf_nest(itime,outnum) 390 endif 391 else 392 #ifdef NETCDF_OUTPUT 393 if (surf_only.ne.1) then 394 call concoutput_nest_netcdf(itime,outnum) 395 else 396 call concoutput_surf_nest_netcdf(itime,outnum) 397 endif 398 #endif 399 endif 400 endif 371 401 outnum=0. 372 402 endif … … 474 504 !**************************** 475 505 476 xold= xtra1(j)477 yold= ytra1(j)506 xold=real(xtra1(j)) 507 yold=real(ytra1(j)) 478 508 zold=ztra1(j) 479 509 … … 515 545 endif 516 546 517 if ( DRYDEPSPEC(ks)) then ! dry deposition547 if (drydepspec(ks)) then ! dry deposition 518 548 drydeposit(ks)=xmass1(j,ks)*prob(ks)*decfact 519 549 xmass1(j,ks)=xmass1(j,ks)*(1.-prob(ks))*decfact … … 526 556 endif 527 557 528 529 558 if (mdomainfill.eq.0) then 530 559 if (xmass(npoint(j),ks).gt.0.) & … … 538 567 if (xmassfract.lt.0.0001) then ! terminate all particles carrying less mass 539 568 itra1(j)=-999999999 569 if (verbosity.gt.0) then 570 print*,'terminated particle ',j,' for small mass' 571 endif 540 572 endif 541 573 542 574 ! Sabine Eckhardt, June 2008 543 575 ! don't create depofield for backward runs 544 if (DRYDEP.AND.(ldirect.eq.1)) then 545 call drydepokernel(nclass(j),drydeposit,real(xtra1(j)), & 546 real(ytra1(j)),nage,kp) 547 if (nested_output.eq.1) call drydepokernel_nest( & 548 nclass(j),drydeposit,real(xtra1(j)),real(ytra1(j)), & 549 nage,kp) 576 if (drydep.AND.(ldirect.eq.1)) then 577 call drydepokernel(nclass(j),drydeposit,real(xtra1(j)),real(ytra1(j)),nage,kp) 578 if (nested_output.eq.1) then 579 call drydepokernel_nest(nclass(j),drydeposit,real(xtra1(j)),real(ytra1(j)),nage,kp) 580 endif 550 581 endif 551 582 … … 554 585 555 586 if (abs(itra1(j)-itramem(j)).ge.lage(nageclass)) then 556 if (linit_cond.ge.1) & 557 call initial_cond_calc(itime+lsynctime,j) 587 if (linit_cond.ge.1) call initial_cond_calc(itime+lsynctime,j) 558 588 itra1(j)=-999999999 589 if (verbosity.gt.0) then 590 print*,'terminated particle ',j,' for age' 591 endif 559 592 endif 560 593 endif … … 584 617 585 618 if (iflux.eq.1) then 586 619 deallocate(flux) 587 620 endif 588 if ( OHREA.eqv..TRUE.) then589 621 if (ohrea.eqv..TRUE.) then 622 deallocate(OH_field,OH_field_height) 590 623 endif 591 624 if (ldirect.gt.0) then 592 deallocate(drygridunc,wetgridunc)625 deallocate(drygridunc,wetgridunc) 593 626 endif 594 627 deallocate(gridunc) … … 597 630 deallocate(xmasssave) 598 631 if (nested_output.eq.1) then 599 600 601 deallocate(griduncn,drygriduncn,wetgriduncn)602 632 deallocate(orooutn, arean, volumen) 633 if (ldirect.gt.0) then 634 deallocate(griduncn,drygriduncn,wetgriduncn) 635 endif 603 636 endif 604 637 deallocate(outheight,outheighthalf) 605 deallocate(oroout, area,volume)638 deallocate(oroout,area,volume) 606 639 607 640 end subroutine timemanager
Note: See TracChangeset
for help on using the changeset viewer.