Changeset 2eefa58 in flexpart.git
- Timestamp:
- May 27, 2019, 3:28:44 PM (5 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug
- Children:
- 6741557
- Parents:
- f963113
- Location:
- src
- Files:
-
- 3 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
src/FLEXPART.f90
r0a94e13 r2eefa58 137 137 write(*,*) 'call readpaths' 138 138 endif 139 call readpaths (pathfile)139 call readpaths 140 140 141 141 if (verbosity.gt.1) then !show clock info … … 452 452 endif 453 453 454 if (verbosity.gt.0) write (*,*) 'timemanager> call wetdepo' 454 455 call timemanager(metdata_format) 456 455 457 456 458 if (verbosity.gt.0) then … … 467 469 endif 468 470 end do 469 write (*,*) 'timemanager> call wetdepo'470 471 endif 471 472 -
src/FLEXPART_MPI.f90
r0c8c7f2 r2eefa58 146 146 write(*,*) 'call readpaths' 147 147 endif 148 call readpaths (pathfile)148 call readpaths 149 149 150 150 if (verbosity.gt.1) then !show clock info -
src/com_mod.f90
r0a94e13 r2eefa58 124 124 ! lnetcdfout 1 for netcdf grid output, 0 if not. Set in COMMAND (namelist input) 125 125 126 integer :: linversionout 127 ! linversionout 1 for one grid_time output file for each release containing all timesteps 128 126 129 integer :: nageclass,lage(maxageclass) 127 130 … … 176 179 real :: ri(5,numclass),rac(5,numclass),rcl(maxspec,5,numclass) 177 180 real :: rgs(maxspec,5,numclass),rlu(maxspec,5,numclass) 178 real :: rm(maxspec),dryvel(maxspec) 181 real :: rm(maxspec),dryvel(maxspec),kao(maxspec) 179 182 real :: ohcconst(maxspec),ohdconst(maxspec),ohnconst(maxspec) 180 183 … … 361 364 real :: ciwc(0:nxmax-1,0:nymax-1,nzmax,numwfmem)=0.0 !ice [kg/kg] 362 365 real :: clw(0:nxmax-1,0:nymax-1,nzmax,numwfmem)=0.0 !combined [m3/m3] 363 366 ! RLT add pressure and dry air density 367 real :: prs(0:nxmax-1,0:nymax-1,nzmax,numwfmem) 368 real :: rho_dry(0:nxmax-1,0:nymax-1,nzmax,numwfmem) 364 369 real :: pv(0:nxmax-1,0:nymax-1,nzmax,numwfmem) 365 370 real :: rho(0:nxmax-1,0:nymax-1,nzmax,numwfmem) … … 383 388 ! uupol,vvpol [m/s] wind components in polar stereographic projection 384 389 ! tt [K] temperature data 390 ! prs air pressure 385 391 ! qv specific humidity data 386 392 ! pv (pvu) potential vorticity -
src/concoutput.f90
r20963b1 r2eefa58 72 72 real :: sp_fact 73 73 real :: outnum,densityoutrecept(maxreceptor),xl,yl 74 ! RLT 75 real :: densitydryrecept(maxreceptor) 76 real :: factor_dryrecept(maxreceptor) 74 77 75 78 !real densityoutgrid(0:numxgrid-1,0:numygrid-1,numzgrid), … … 106 109 character(LEN=8),save :: file_stat='REPLACE' 107 110 logical :: ldates_file 111 logical :: lexist 108 112 integer :: ierr 109 113 character(LEN=100) :: dates_char … … 203 207 densityoutgrid(ix,jy,kz)=(rho(iix,jjy,kzz,mind)*dz1+ & 204 208 rho(iix,jjy,kzz-1,mind)*dz2)/dz 209 ! RLT 210 densitydrygrid(ix,jy,kz)=(rho_dry(iix,jjy,kzz,mind)*dz1+ & 211 rho_dry(iix,jjy,kzz-1,mind)*dz2)/dz 205 212 end do 206 213 end do … … 214 221 !densityoutrecept(i)=rho(iix,jjy,1,2) 215 222 densityoutrecept(i)=rho(iix,jjy,1,mind) 223 ! RLT 224 densitydryrecept(i)=rho_dry(iix,jjy,1,mind) 216 225 end do 217 226 227 ! RLT 228 ! conversion factor for output relative to dry air 229 factor_drygrid=densityoutgrid/densitydrygrid 230 factor_dryrecept=densityoutrecept/densitydryrecept 218 231 219 232 ! Output is different for forward and backward simulations … … 353 366 ! Concentration output 354 367 !********************* 355 if ((iout.eq.1).or.(iout.eq.3).or.(iout.eq.5) .or.(iout.eq.6)) then368 if ((iout.eq.1).or.(iout.eq.3).or.(iout.eq.5)) then 356 369 357 370 ! Wet deposition … … 614 627 end do 615 628 629 ! RLT Aug 2017 630 ! Write out conversion factor for dry air 631 inquire(file=path(2)(1:length(2))//'factor_drygrid',exist=lexist) 632 if (lexist) then 633 ! open and append 634 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid',form='unformatted',& 635 status='old',action='write',access='append') 636 else 637 ! create new 638 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid',form='unformatted',& 639 status='new',action='write') 640 endif 641 sp_count_i=0 642 sp_count_r=0 643 sp_fact=-1. 644 sp_zer=.true. 645 do kz=1,numzgrid 646 do jy=0,numygrid-1 647 do ix=0,numxgrid-1 648 if (factor_drygrid(ix,jy,kz).gt.(1.+smallnum).or.factor_drygrid(ix,jy,kz).lt.(1.-smallnum)) then 649 if (sp_zer.eqv..true.) then ! first value not equal to one 650 sp_count_i=sp_count_i+1 651 sparse_dump_i(sp_count_i)= & 652 ix+jy*numxgrid+kz*numxgrid*numygrid 653 sp_zer=.false. 654 sp_fact=sp_fact*(-1.) 655 endif 656 sp_count_r=sp_count_r+1 657 sparse_dump_r(sp_count_r)= & 658 sp_fact*factor_drygrid(ix,jy,kz) 659 else ! factor is one 660 sp_zer=.true. 661 endif 662 end do 663 end do 664 end do 665 write(unitoutfactor) sp_count_i 666 write(unitoutfactor) (sparse_dump_i(i),i=1,sp_count_i) 667 write(unitoutfactor) sp_count_r 668 write(unitoutfactor) (sparse_dump_r(i),i=1,sp_count_r) 669 close(unitoutfactor) 670 671 616 672 if (gridtotal.gt.0.) gridtotalunc=gridsigmatotal/gridtotal 617 673 if (wetgridtotal.gt.0.) wetgridtotalunc=wetgridsigmatotal/ & … … 640 696 endif 641 697 642 698 ! RLT Aug 2017 699 ! Write out conversion factor for dry air 700 if (numreceptor.gt.0) then 701 inquire(file=path(2)(1:length(2))//'factor_dryreceptor',exist=lexist) 702 if (lexist) then 703 ! open and append 704 open(unitoutfactor,file=path(2)(1:length(2))//'factor_dryreceptor',form='unformatted',& 705 status='old',action='write',access='append') 706 else 707 ! create new 708 open(unitoutfactor,file=path(2)(1:length(2))//'factor_dryreceptor',form='unformatted',& 709 status='new',action='write') 710 endif 711 write(unitoutfactor) itime 712 write(unitoutfactor) (factor_dryrecept(i),i=1,numreceptor) 713 close(unitoutfactor) 714 endif 643 715 644 716 ! Reinitialization of grid -
src/concoutput_nest.f90
r7d02c2f r2eefa58 70 70 real :: sp_fact 71 71 real :: outnum,densityoutrecept(maxreceptor),xl,yl 72 ! RLT 73 real :: densitydryrecept(maxreceptor) 74 real :: factor_dryrecept(maxreceptor) 72 75 73 76 !real densityoutgrid(0:numxgrid-1,0:numygrid-1,numzgrid), … … 96 99 character :: adate*8,atime*6 97 100 character(len=3) :: anspec 101 logical :: lexist 98 102 integer :: mind 99 103 ! mind eso:added to ensure identical results between 2&3-fields versions … … 164 168 densityoutgrid(ix,jy,kz)=(rho(iix,jjy,kzz,mind)*dz1+ & 165 169 rho(iix,jjy,kzz-1,mind)*dz2)/dz 170 ! RLT 171 densitydrygrid(ix,jy,kz)=(rho_dry(iix,jjy,kzz,mind)*dz1+ & 172 rho_dry(iix,jjy,kzz-1,mind)*dz2)/dz 166 173 end do 167 174 end do … … 175 182 !densityoutrecept(i)=rho(iix,jjy,1,2) 176 183 densityoutrecept(i)=rho(iix,jjy,1,mind) 184 ! RLT 185 densitydryrecept(i)=rho_dry(iix,jjy,1,mind) 177 186 end do 178 187 188 ! RLT 189 ! conversion factor for output relative to dry air 190 factor_drygrid=densityoutgrid/densitydrygrid 191 factor_dryrecept=densityoutrecept/densitydryrecept 179 192 180 193 ! Output is different for forward and backward simulations … … 551 564 end do 552 565 566 ! RLT Aug 2017 567 ! Write out conversion factor for dry air 568 inquire(file=path(2)(1:length(2))//'factor_drygrid_nest',exist=lexist) 569 if (lexist) then 570 ! open and append 571 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid_nest',form='unformatted',& 572 status='old',action='write',access='append') 573 else 574 ! create new 575 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid_nest',form='unformatted',& 576 status='new',action='write') 577 endif 578 sp_count_i=0 579 sp_count_r=0 580 sp_fact=-1. 581 sp_zer=.true. 582 do kz=1,numzgrid 583 do jy=0,numygridn-1 584 do ix=0,numxgridn-1 585 if (factor_drygrid(ix,jy,kz).gt.(1.+smallnum).or.factor_drygrid(ix,jy,kz).lt.(1.-smallnum)) then 586 if (sp_zer.eqv..true.) then ! first value not equal to one 587 sp_count_i=sp_count_i+1 588 sparse_dump_i(sp_count_i)= & 589 ix+jy*numxgridn+kz*numxgridn*numygridn 590 sp_zer=.false. 591 sp_fact=sp_fact*(-1.) 592 endif 593 sp_count_r=sp_count_r+1 594 sparse_dump_r(sp_count_r)= & 595 sp_fact*factor_drygrid(ix,jy,kz) 596 else ! factor is one 597 sp_zer=.true. 598 endif 599 end do 600 end do 601 end do 602 write(unitoutfactor) sp_count_i 603 write(unitoutfactor) (sparse_dump_i(i),i=1,sp_count_i) 604 write(unitoutfactor) sp_count_r 605 write(unitoutfactor) (sparse_dump_r(i),i=1,sp_count_r) 606 close(unitoutfactor) 553 607 554 608 -
src/concoutput_surf.f90
r16b61a5 r2eefa58 72 72 real :: sp_fact 73 73 real :: outnum,densityoutrecept(maxreceptor),xl,yl 74 ! RLT 75 real :: densitydryrecept(maxreceptor) 76 real :: factor_dryrecept(maxreceptor) 74 77 75 78 !real densityoutgrid(0:numxgrid-1,0:numygrid-1,numzgrid), … … 101 104 character :: adate*8,atime*6 102 105 character(len=3) :: anspec 106 logical :: lexist 103 107 104 108 … … 180 184 densityoutgrid(ix,jy,kz)=(rho(iix,jjy,kzz,2)*dz1+ & 181 185 rho(iix,jjy,kzz-1,2)*dz2)/dz 186 ! RLT 187 densitydrygrid(ix,jy,kz)=(rho_dry(iix,jjy,kzz,2)*dz1+ & 188 rho_dry(iix,jjy,kzz-1,2)*dz2)/dz 182 189 end do 183 190 end do … … 190 197 jjy=max(min(nint(yl),nymin1),0) 191 198 densityoutrecept(i)=rho(iix,jjy,1,2) 199 ! RLT 200 densitydryrecept(i)=rho_dry(iix,jjy,1,2) 192 201 end do 193 202 203 ! RLT 204 ! conversion factor for output relative to dry air 205 factor_drygrid=densityoutgrid/densitydrygrid 206 factor_dryrecept=densityoutrecept/densitydryrecept 194 207 195 208 ! Output is different for forward and backward simulations … … 596 609 end do 597 610 611 ! RLT Aug 2017 612 ! Write out conversion factor for dry air 613 inquire(file=path(2)(1:length(2))//'factor_drygrid',exist=lexist) 614 if (lexist) then 615 ! open and append 616 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid',form='unformatted',& 617 status='old',action='write',access='append') 618 else 619 ! create new 620 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid',form='unformatted',& 621 status='new',action='write') 622 endif 623 sp_count_i=0 624 sp_count_r=0 625 sp_fact=-1. 626 sp_zer=.true. 627 do kz=1,1 628 do jy=0,numygrid-1 629 do ix=0,numxgrid-1 630 if (factor_drygrid(ix,jy,kz).gt.(1.+smallnum).or.factor_drygrid(ix,jy,kz).lt.(1.-smallnum)) then 631 if (sp_zer.eqv..true.) then ! first value not equal to one 632 sp_count_i=sp_count_i+1 633 sparse_dump_i(sp_count_i)= & 634 ix+jy*numxgrid+kz*numxgrid*numygrid 635 sp_zer=.false. 636 sp_fact=sp_fact*(-1.) 637 endif 638 sp_count_r=sp_count_r+1 639 sparse_dump_r(sp_count_r)= & 640 sp_fact*factor_drygrid(ix,jy,kz) 641 else ! factor is one 642 sp_zer=.true. 643 endif 644 end do 645 end do 646 end do 647 write(unitoutfactor) sp_count_i 648 write(unitoutfactor) (sparse_dump_i(i),i=1,sp_count_i) 649 write(unitoutfactor) sp_count_r 650 write(unitoutfactor) (sparse_dump_r(i),i=1,sp_count_r) 651 close(unitoutfactor) 652 653 598 654 if (gridtotal.gt.0.) gridtotalunc=gridsigmatotal/gridtotal 599 655 if (wetgridtotal.gt.0.) wetgridtotalunc=wetgridsigmatotal/ & … … 622 678 endif 623 679 624 680 ! RLT Aug 2017 681 ! Write out conversion factor for dry air 682 if (numreceptor.gt.0) then 683 inquire(file=path(2)(1:length(2))//'factor_dryreceptor',exist=lexist) 684 if (lexist) then 685 ! open and append 686 open(unitoutfactor,file=path(2)(1:length(2))//'factor_dryreceptor',form='unformatted',& 687 status='old',action='write',access='append') 688 else 689 ! create new 690 open(unitoutfactor,file=path(2)(1:length(2))//'factor_dryreceptor',form='unformatted',& 691 status='new',action='write') 692 endif 693 write(unitoutfactor) itime 694 write(unitoutfactor) (factor_dryrecept(i),i=1,numreceptor) 695 close(unitoutfactor) 696 endif 625 697 626 698 ! Reinitialization of grid -
src/concoutput_surf_nest.f90
r6a678e3 r2eefa58 70 70 real :: sp_fact 71 71 real :: outnum,densityoutrecept(maxreceptor),xl,yl 72 ! RLT 73 real :: densitydryrecept(maxreceptor) 74 real :: factor_dryrecept(maxreceptor) 72 75 73 76 !real densityoutgrid(0:numxgrid-1,0:numygrid-1,numzgrid), … … 96 99 character :: adate*8,atime*6 97 100 character(len=3) :: anspec 98 101 logical :: lexist 99 102 100 103 ! Determine current calendar date, needed for the file name … … 159 162 densityoutgrid(ix,jy,kz)=(rho(iix,jjy,kzz,2)*dz1+ & 160 163 rho(iix,jjy,kzz-1,2)*dz2)/dz 164 ! RLT 165 densitydrygrid(ix,jy,kz)=(rho_dry(iix,jjy,kzz,2)*dz1+ & 166 rho_dry(iix,jjy,kzz-1,2)*dz2)/dz 161 167 end do 162 168 end do … … 169 175 jjy=max(min(nint(yl),nymin1),0) 170 176 densityoutrecept(i)=rho(iix,jjy,1,2) 177 ! RLT 178 densitydryrecept(i)=rho_dry(iix,jjy,1,2) 171 179 end do 172 180 181 ! RLT 182 ! conversion factor for output relative to dry air 183 factor_drygrid=densityoutgrid/densitydrygrid 184 factor_dryrecept=densityoutrecept/densitydryrecept 173 185 174 186 ! Output is different for forward and backward simulations … … 317 329 write(unitoutgrid) sp_count_r 318 330 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 319 write(unitoutgrid) sp_count_r320 write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r)331 ! write(unitoutgrid) sp_count_r 332 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 321 333 322 334 ! Dry deposition … … 354 366 write(unitoutgrid) sp_count_r 355 367 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 356 write(unitoutgrid) sp_count_r357 write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r)368 ! write(unitoutgrid) sp_count_r 369 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 358 370 359 371 … … 399 411 write(unitoutgrid) sp_count_r 400 412 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 401 write(unitoutgrid) sp_count_r402 write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r)413 ! write(unitoutgrid) sp_count_r 414 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 403 415 else 404 416 … … 440 452 write(unitoutgrid) sp_count_r 441 453 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 442 write(unitoutgrid) sp_count_r443 write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r)454 ! write(unitoutgrid) sp_count_r 455 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 444 456 endif ! surf_only 445 457 … … 487 499 write(unitoutgridppt) sp_count_r 488 500 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 489 write(unitoutgridppt) sp_count_r490 write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r)501 ! write(unitoutgridppt) sp_count_r 502 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 491 503 492 504 … … 526 538 write(unitoutgridppt) sp_count_r 527 539 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 528 write(unitoutgridppt) sp_count_r529 write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r)540 ! write(unitoutgridppt) sp_count_r 541 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 530 542 531 543 … … 570 582 write(unitoutgridppt) sp_count_r 571 583 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 572 write(unitoutgridppt) sp_count_r573 write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r)584 ! write(unitoutgridppt) sp_count_r 585 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 574 586 else 575 587 … … 611 623 write(unitoutgridppt) sp_count_r 612 624 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 613 write(unitoutgridppt) sp_count_r614 write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r)625 ! write(unitoutgridppt) sp_count_r 626 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 615 627 endif ! surf_only 616 628 … … 624 636 625 637 end do 638 639 ! RLT Aug 2017 640 ! Write out conversion factor for dry air 641 inquire(file=path(2)(1:length(2))//'factor_drygrid_nest',exist=lexist) 642 if (lexist) then 643 ! open and append 644 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid_nest',form='unformatted',& 645 status='old',action='write',access='append') 646 else 647 ! create new 648 open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid_nest',form='unformatted',& 649 status='new',action='write') 650 endif 651 sp_count_i=0 652 sp_count_r=0 653 sp_fact=-1. 654 sp_zer=.true. 655 do kz=1,1 656 do jy=0,numygridn-1 657 do ix=0,numxgridn-1 658 if (factor_drygrid(ix,jy,kz).gt.(1.+smallnum).or.factor_drygrid(ix,jy,kz).lt.(1.-smallnum)) then 659 if (sp_zer.eqv..true.) then ! first value not equal to one 660 sp_count_i=sp_count_i+1 661 sparse_dump_i(sp_count_i)= & 662 ix+jy*numxgridn+kz*numxgridn*numygridn 663 sp_zer=.false. 664 sp_fact=sp_fact*(-1.) 665 endif 666 sp_count_r=sp_count_r+1 667 sparse_dump_r(sp_count_r)= & 668 sp_fact*factor_drygrid(ix,jy,kz) 669 else ! factor is one 670 sp_zer=.true. 671 endif 672 end do 673 end do 674 end do 675 write(unitoutfactor) sp_count_i 676 write(unitoutfactor) (sparse_dump_i(i),i=1,sp_count_i) 677 write(unitoutfactor) sp_count_r 678 write(unitoutfactor) (sparse_dump_r(i),i=1,sp_count_r) 679 close(unitoutfactor) 626 680 627 681 -
src/getfields.f90
r6ecb30a r2eefa58 87 87 real :: pvhn(0:nxmaxn-1,0:nymaxn-1,nuvzmax,maxnests) 88 88 real :: wwhn(0:nxmaxn-1,0:nymaxn-1,nwzmax,maxnests) 89 ! RLT added partial pressure water vapor 90 real :: pwater(0:nxmax-1,0:nymax-1,nzmax,numwfmem) 91 integer :: kz, ix 92 character(len=100) :: rowfmt 89 93 90 94 integer :: indmin = 1 … … 153 157 40 indmin=indj 154 158 155 if (WETBKDEP) then156 157 endif159 if (WETBKDEP) then 160 call writeprecip(itime,memind(1)) 161 endif 158 162 159 163 else … … 204 208 60 indmin=indj 205 209 206 if (WETBKDEP) then 207 call writeprecip(itime,memind(1)) 208 endif 209 210 endif 210 if (WETBKDEP) then 211 call writeprecip(itime,memind(1)) 212 endif 213 214 end if 215 216 ! RLT calculate dry air density 217 pwater=qv*prs/((r_air/r_water)*(1.-qv)+qv) 218 rho_dry=(prs-pwater)/(r_air*tt) 219 220 ! test density 221 ! write(rowfmt,'(A,I6,A)') '(',nymax,'(E11.4,1X))' 222 ! if(itime.eq.0) then 223 ! open(500,file=path(2)(1:length(2))//'rho_dry.txt',status='replace',action='write') 224 ! do kz=1,nzmax 225 ! do ix=1,nxmax 226 ! write(500,fmt=rowfmt) rho_dry(ix,:,kz,1) 227 ! end do 228 ! end do 229 ! close(500) 230 ! open(500,file=path(2)(1:length(2))//'rho.txt',status='replace',action='write') 231 ! do kz=1,nzmax 232 ! do ix=1,nxmax 233 ! write(500,fmt=rowfmt) rho(ix,:,kz,1) 234 ! end do 235 ! end do 236 ! close(500) 237 ! endif 211 238 212 239 lwindinterv=abs(memtime(2)-memtime(1)) -
src/makefile
r0a94e13 r2eefa58 128 128 redist.o \ 129 129 concoutput_surf.o concoutput_surf_nest.o \ 130 concoutput_inversion_nest.o \ 131 concoutput_inversion.o \ 130 132 getfields.o \ 131 133 readwind_ecmwf.o … … 200 202 drydepokernel_nest.o zenithangle.o \ 201 203 ohreaction.o getvdep_nests.o \ 202 initial_cond_calc.o initial_cond_output.o \204 initial_cond_calc.o initial_cond_output.o initial_cond_output_inversion.o \ 203 205 dynamic_viscosity.o get_settling.o \ 204 206 initialize_cbl_vel.o re_initialize_particle.o \ … … 272 274 conccalc_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o unc_mod.o 273 275 concoutput.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o 276 concoutput_inversion.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o 274 277 concoutput_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o point_mod.o \ 275 278 unc_mod.o mean_mod.o 276 279 concoutput_nest.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o 280 concoutput_inversion_nest.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mean_mod.o 277 281 concoutput_nest_mpi.o: com_mod.o mpi_mod.o outg_mod.o par_mod.o point_mod.o \ 278 282 unc_mod.o mean_mod.o … … 321 325 initial_cond_calc.o: com_mod.o outg_mod.o par_mod.o unc_mod.o 322 326 initial_cond_output.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o 327 initial_cond_output_inversion.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o 323 328 initialize.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o random_mod.o 324 329 initialize_cbl_vel.o: com_mod.o par_mod.o random_mod.o -
src/outg_mod.f90
r4c64400 r2eefa58 37 37 real,allocatable, dimension (:,:,:) :: areanorth 38 38 real,allocatable, dimension (:,:,:) :: densityoutgrid 39 real,allocatable, dimension (:,:,:) :: densitydrygrid ! added RLT 40 real,allocatable, dimension (:,:,:) :: factor_drygrid ! added RLT 39 41 real,allocatable, dimension (:,:,:) :: factor3d 40 42 real,allocatable, dimension (:,:,:) :: grid -
src/outgrid_init.f90
rd2a5a83 r2eefa58 268 268 if (stat.ne.0) write(*,*)'ERROR: could not allocate gridunc' 269 269 allocate(densityoutgrid(0:max(numxgrid,numxgridn)-1, & 270 0:max(numygrid,numygridn)-1,numzgrid),stat=stat) 271 if (stat.ne.0) write(*,*)'ERROR: could not allocate gridunc' 272 ! RLT 273 allocate(densitydrygrid(0:max(numxgrid,numxgridn)-1, & 274 0:max(numygrid,numygridn)-1,numzgrid),stat=stat) 275 if (stat.ne.0) write(*,*)'ERROR: could not allocate gridunc' 276 allocate(factor_drygrid(0:max(numxgrid,numxgridn)-1, & 270 277 0:max(numygrid,numygridn)-1,numzgrid),stat=stat) 271 278 if (stat.ne.0) write(*,*)'ERROR: could not allocate gridunc' -
src/par_mod.f90
r0a94e13 r2eefa58 30 30 ! Update 15 August 2013 IP * 31 31 ! * 32 ! ESO 2016: *33 ! GFS specific parameters moved to gfs_mod.f90 *34 ! ECMWF specific parameters moved to ecmwf_mod.f90 *35 32 ! * 36 33 !******************************************************************************* … … 80 77 real,parameter :: pi=3.14159265, r_earth=6.371e6, r_air=287.05, ga=9.81 81 78 real,parameter :: cpa=1004.6, kappa=0.286, pi180=pi/180., vonkarman=0.4 79 ! additional constants RLT Aug-2017 80 real,parameter :: rgas=8.31447 81 real,parameter :: r_water=461.495 82 82 83 83 ! pi number "pi" … … 89 89 ! kappa exponent of formula for potential temperature 90 90 ! vonkarman von Karman constant 91 ! rgas universal gas constant [J/mol/K] 92 ! r_water specific gas constant for water vapor [J/kg/K] 91 93 92 94 real,parameter :: karman=0.40, href=15., convke=2.0 … … 290 292 integer,parameter :: unitboundcond=89 291 293 integer,parameter :: unittmp=101 294 ! RLT 295 integer,parameter :: unitoutfactor=102 292 296 293 297 !****************************************************** -
src/readcommand.f90
r0a94e13 r2eefa58 114 114 surf_only, & 115 115 cblflag, & 116 linversionout, & 116 117 ohfields_path 117 118 … … 147 148 surf_only=0 148 149 cblflag=0 ! if using old-style COMMAND file, set to 1 here to use mc cbl routine 150 linversionout=0 149 151 ohfields_path="../../flexin/" 150 152 … … 414 416 !********************************************************************** 415 417 416 if ((iout.lt.1).or.(iout.gt. 6)) then418 if ((iout.lt.1).or.(iout.gt.5)) then 417 419 write(*,*) ' #### FLEXPART MODEL ERROR! FILE COMMAND: #### ' 418 420 write(*,*) ' #### IOUT MUST BE 1, 2, 3, 4 OR 5 FOR #### ' … … 474 476 write(*,*) '#### FOR DOMAIN FILLING RUNS OUTPUT FOR ####' 475 477 write(*,*) '#### EACH RELEASE IS FORBIDDEN ! ####' 478 stop 479 endif 480 481 ! Inversion output format only for backward runs 482 !***************************************************************************** 483 484 if ((linversionout.eq.1).and.(ldirect.eq.1)) then 485 write(*,*) '#### FLEXPART MODEL ERROR! FILE COMMAND: ####' 486 write(*,*) '#### INVERSION OUTPUT FORMAT ONLY FOR ####' 487 write(*,*) '#### BACKWARD RUNS ####' 476 488 stop 477 489 endif -
src/readpaths.f90
r62e65c7 r2eefa58 20 20 !********************************************************************** 21 21 22 subroutine readpaths !(pathfile)22 subroutine readpaths 23 23 24 24 !***************************************************************************** -
src/timemanager.f90
r0a94e13 r2eefa58 408 408 #endif 409 409 else 410 if (linversionout.eq.1) then 411 call concoutput_inversion(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc) 412 if (verbosity.eq.1) then 413 print*,'called concoutput_inversion' 414 call system_clock(count_clock) 415 write(*,*) 'system clock',count_clock - count_clock0 416 endif 417 else 410 418 call concoutput_surf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc) 419 endif 411 420 if (verbosity.eq.1) then 412 421 print*,'called concoutput_surf ' … … 422 431 call concoutput_nest(itime,outnum) 423 432 else 433 if(linversionout.eq.1) then 434 call concoutput_inversion_nest(itime,outnum) 435 else 424 436 call concoutput_surf_nest(itime,outnum) 437 endif 425 438 endif 426 439 else … … 739 752 if (ipout.eq.2) call partoutput(itime) ! dump particle positions 740 753 741 if (linit_cond.ge.1) call initial_cond_output(itime) ! dump initial cond. field 754 if (linit_cond.ge.1) then 755 if(linversionout.eq.1) then 756 call initial_cond_output_inversion(itime) ! dump initial cond. field 757 else 758 call initial_cond_output(itime) ! dump initial cond. fielf 759 endif 760 endif 742 761 743 762 !close(104) -
src/verttransform_ecmwf.f90
rd005a67 r2eefa58 81 81 real,dimension(0:nxmax-1,0:nymax-1,nuvzmax) :: rhoh,uvzlev,wzlev 82 82 real,dimension(0:nxmax-1,0:nymax-1,nzmax) :: pinmconv 83 ! RLT added pressure 84 real,dimension(0:nxmax-1,0:nymax-1,nuvzmax) :: prsh 83 85 real,dimension(0:nxmax-1,0:nymax-1) :: tvold,pold,pint,tv 84 86 real,dimension(0:nymax-1) :: cosf … … 218 220 !************************* 219 221 220 221 222 do jy=0,nymin1 222 223 do ix=0,nxmin1 … … 229 230 wzlev(:,:,1)=0. 230 231 rhoh(:,:,1)=pold/(r_air*tvold) 232 ! RLT add pressure 233 prsh(:,:,1)=ps(:,:,1,n) 231 234 232 235 … … 236 239 do kz=2,nuvz 237 240 pint=akz(kz)+bkz(kz)*ps(:,:,1,n) 241 ! RLT add pressure 242 prsh(:,:,kz)=pint 238 243 tv=tth(:,:,kz,n)*(1.+0.608*qvh(:,:,kz,n)) 239 244 rhoh(:,:,kz)=pint(:,:)/(r_air*tv) … … 287 292 pv(:,:,1,n)=pvh(:,:,1) 288 293 rho(:,:,1,n)=rhoh(:,:,1) 294 ! RLT add pressure 295 prs(:,:,1,n)=prsh(:,:,1) 289 296 290 297 uu(:,:,nz,n)=uuh(:,:,nuvz) … … 300 307 pv(:,:,nz,n)=pvh(:,:,nuvz) 301 308 rho(:,:,nz,n)=rhoh(:,:,nuvz) 302 309 ! RLT 310 prs(:,:,nz,n)=prsh(:,:,nuvz) 303 311 304 312 kmin=2 … … 320 328 pv(ix,jy,iz,n)=pv(ix,jy,nz,n) 321 329 rho(ix,jy,iz,n)=rho(ix,jy,nz,n) 330 ! RLT 331 prs(ix,jy,iz,n)=prs(ix,jy,nz,n) 322 332 else 323 333 innuvz: do kz=idx(ix,jy),nuvz … … 353 363 pv(ix,jy,iz,n)=(pvh(ix,jy,kz-1)*dz2+pvh(ix,jy,kz)*dz1)/dz 354 364 rho(ix,jy,iz,n)=(rhoh(ix,jy,kz-1)*dz2+rhoh(ix,jy,kz)*dz1)/dz 365 ! RLT add pressure 366 prs(ix,jy,iz,n)=(prsh(ix,jy,kz-1)*dz2+prsh(ix,jy,kz)*dz1)/dz 355 367 endif 356 368 enddo
Note: See TracChangeset
for help on using the changeset viewer.