Changeset 3275 for trunk/LMDZ.PLUTO.old
- Timestamp:
- Mar 20, 2024, 3:05:14 PM (8 months ago)
- Location:
- trunk/LMDZ.PLUTO.old
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO.old
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/compile1d
r3175 r3275 1 1 #!/bin/bash 2 3 ./makegcm_cygwin -debug -fdefault-real-8 -d 25 -b 17x23 -t 7 -s 1 -p pluto testphys1d 2 export PATH=$PATH:. 3 ./makegcm_spirit_gfortran -debug -fdefault-real-8 -d 25 -t 7 -s 2 -b 17x23 -p pluto testphys1d 4 # ./makegcm_cygwin -debug -fdefault-real-8 -d 25 -b 17x23 -t 7 -s 1 -p pluto testphys1d -
trunk/LMDZ.PLUTO.old/deftank
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/deftank/gcm
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/deftank/kbo_def
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/deftank/nogcm
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/deftank/nogcm_simple
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/deftank/testphys1d
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/bibio
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/dyn3d
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/dyn3d/poubelle
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/dyn3d/startsHD
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/dyn3d/stock
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/filtrez
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/grid
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/grid/dimension
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/phypluto
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/phypluto/callcorrk.F
r3175 r3275 5 5 & fluxsurf_sw,fluxtop_lw,fluxtop_sw,fluxtop_dn, 6 6 & reffrad,tau_col,ptime,pday,firstcall,lastcall,zzlay) 7 7 8 8 use radinc_h 9 9 use radcommon_h 10 use ioipsl_getincom 10 use ioipsl_getincom 11 11 use radii_mod 12 12 use aerosol_mod … … 24 24 ! 25 25 ! Authors 26 ! ------- 26 ! ------- 27 27 ! Emmanuel 01/2001, Forget 09/2001 28 28 ! Robin Wordsworth (2009) … … 37 37 !----------------------------------------------------------------------- 38 38 ! Declaration of the arguments (INPUT - OUTPUT) on the LMD GCM grid 39 ! Layer #1 is the layer near the ground. 39 ! Layer #1 is the layer near the ground. 40 40 ! Layer #nlayermx is the layer at the top. 41 41 … … 44 44 INTEGER ngrid,nlayer 45 45 INTEGER igout 46 REAL aerosol(ngrid,nlayermx,naerkind) ! aerosol opacity tau 46 REAL aerosol(ngrid,nlayermx,naerkind) ! aerosol opacity tau 47 47 REAL albedo(ngrid) ! SW albedo 48 48 REAL emis(ngrid) ! LW emissivity … … 110 110 real*8 fluxupi_nu(L_NLAYRAD,L_NSPECTI) ! for 1D diagnostic 111 111 REAL*8 fmneti(L_NLAYRAD),fmnetv(L_NLAYRAD) 112 real*8 fmneti_nu(L_NLAYRAD,L_NSPECTI) ! 113 real*8 fmnetv_nu(L_NLAYRAD,L_NSPECTV) ! 112 real*8 fmneti_nu(L_NLAYRAD,L_NSPECTI) ! 113 real*8 fmnetv_nu(L_NLAYRAD,L_NSPECTV) ! 114 114 REAL*8 fluxupv(L_NLAYRAD),fluxupi(L_NLAYRAD) 115 115 REAL*8 fluxdnv(L_NLAYRAD),fluxdni(L_NLAYRAD) … … 137 137 save qxvaer, qsvaer, gvaer 138 138 save qxiaer, qsiaer, giaer 139 save QREFvis3d, QREFir3d 139 save QREFvis3d, QREFir3d 140 140 141 141 REAL tau_col(ngrid) ! diagnostic from aeropacity … … 220 220 call setspv ! basic visible properties 221 221 222 ! Radiative Hazes 222 ! Radiative Hazes 223 223 if (aerohaze) then 224 224 … … 231 231 !-------------------------------------------------- 232 232 do iaer=1,naerkind 233 if ((iaer.eq.iaero_haze)) then 234 call haze_reffrad(ngrid,nlayer,reffrad(1,1,iaer), 233 if ((iaer.eq.iaero_haze)) then 234 call haze_reffrad(ngrid,nlayer,reffrad(1,1,iaer), 235 235 & nueffrad(1,1,iaer)) 236 236 endif … … 238 238 if (haze_radproffix) then 239 239 print*, 'haze_radproffix=T : fixed profile for haze rad' 240 else 240 else 241 241 print*,'reffrad haze:',reffrad(1,1,iaero_haze) 242 242 print*,'nueff haze',nueffrad(1,1,iaero_haze) … … 272 272 !----------------------------------------------------------------------- 273 273 ! Get 3D aerosol optical properties. 274 ! ici on selectionne les proprietes opt correspondant a reffrad 274 ! ici on selectionne les proprietes opt correspondant a reffrad 275 275 if (aerohaze) then 276 276 !-------------------------------------------------- … … 283 283 endif 284 284 285 call aeroptproperties(ngrid,nlayer,reffrad,nueffrad, 286 & QVISsQREF3d,omegaVIS3d,gVIS3d, 287 & QIRsQREF3d,omegaIR3d,gIR3d, 285 call aeroptproperties(ngrid,nlayer,reffrad,nueffrad, 286 & QVISsQREF3d,omegaVIS3d,gVIS3d, 287 & QIRsQREF3d,omegaIR3d,gIR3d, 288 288 & QREFvis3d,QREFir3d) 289 289 290 290 ! Get aerosol optical depths. 291 call aeropacity(ngrid,nlayer,nq,pplay,pplev,pq,aerosol, 292 & reffrad,QREFvis3d,QREFir3d, 291 call aeropacity(ngrid,nlayer,nq,pplay,pplev,pq,aerosol, 292 & reffrad,QREFvis3d,QREFir3d, 293 293 & tau_col) 294 294 endif … … 298 298 IF (methane) then 299 299 vmrch4(:,:)=0. 300 300 301 301 if (ch4fix) then 302 302 if (vmrch4_proffix) then 303 303 !! Interpolate on the model vertical grid 304 304 do ig=1,ngridmx 305 CALL interp_line(levdat,vmrdat,Nfine,306 & zzlay(ig,:)/1000.,vmrch4(ig,:),nlayer)305 ! CALL interp_line(levdat,vmrdat,Nfine, 306 ! & zzlay(ig,:)/1000.,vmrch4(ig,:),nlayer) 307 307 enddo 308 308 else … … 317 317 ! Prepare NON LTE correction in Pluto atmosphere 318 318 IF (nlte) then 319 CALL nlte_ch4(ngrid,nlayer,nq,pplay,pplev,pt,vmrch4,320 & eps_nlte_sw23,eps_nlte_sw33,eps_nlte_lw)319 ! CALL nlte_ch4(ngrid,nlayer,nq,pplay,pplev,pt,vmrch4, 320 ! & eps_nlte_sw23,eps_nlte_sw33,eps_nlte_lw) 321 321 ENDIF 322 322 c Net atmospheric radiative cooling rate from C2H2 (K.s-1): … … 343 343 ! shortwave 344 344 do iaer=1,naerkind 345 DO nw=1,L_NSPECTV 345 DO nw=1,L_NSPECTV 346 346 do l=1,nlayermx 347 347 348 temp1=QVISsQREF3d(ig,nlayermx+1-l,nw,iaer) 348 temp1=QVISsQREF3d(ig,nlayermx+1-l,nw,iaer) 349 349 $ *QREFvis3d(ig,nlayermx+1-l,iaer) 350 350 351 temp2=QVISsQREF3d(ig,max(nlayermx-l,1),nw,iaer) 351 temp2=QVISsQREF3d(ig,max(nlayermx-l,1),nw,iaer) 352 352 $ *QREFvis3d(ig,max(nlayermx-l,1),iaer) 353 353 qxvaer(2*l,nw,iaer) = temp1 … … 378 378 379 379 ! longwave 380 DO nw=1,L_NSPECTI 380 DO nw=1,L_NSPECTI 381 381 do l=1,nlayermx 382 382 383 temp1=QIRsQREF3d(ig,nlayermx+1-l,nw,iaer) 383 temp1=QIRsQREF3d(ig,nlayermx+1-l,nw,iaer) 384 384 $ *QREFir3d(ig,nlayermx+1-l,iaer) 385 385 386 temp2=QIRsQREF3d(ig,max(nlayermx-l,1),nw,iaer) 386 temp2=QIRsQREF3d(ig,max(nlayermx-l,1),nw,iaer) 387 387 $ *QREFir3d(ig,max(nlayermx-l,1),iaer) 388 388 … … 421 421 do nw=1,L_NSPECTV 422 422 if(qsvaer(k,nw,iaer).gt.1.05*qxvaer(k,nw,iaer))then 423 print*,'Serious problems with qsvaer values' 423 print*,'Serious problems with qsvaer values' 424 424 print*,'in callcorrk' 425 425 call abort … … 430 430 end do 431 431 432 do nw=1,L_NSPECTI 432 do nw=1,L_NSPECTI 433 433 if(qsiaer(k,nw,iaer).gt.1.05*qxiaer(k,nw,iaer))then 434 434 print*,'Serious problems with qsiaer values' … … 448 448 !----------------------------------------------------------------------- 449 449 ! Aerosol optical depths 450 IF (aerohaze) THEN 451 do iaer=1,naerkind ! heritage generic 450 IF (aerohaze) THEN 451 do iaer=1,naerkind ! heritage generic 452 452 do k=0,nlayer-1 453 453 pweight= 454 454 $ (pplay(ig,L_NLAYRAD-k)-pplev(ig,L_NLAYRAD-k+1))/ 455 455 $ (pplev(ig,L_NLAYRAD-k)-pplev(ig,L_NLAYRAD-k+1)) 456 if (QREFvis3d(ig,L_NLAYRAD-k,iaer).ne.0) then 456 if (QREFvis3d(ig,L_NLAYRAD-k,iaer).ne.0) then 457 457 temp=aerosol(ig,L_NLAYRAD-k,iaer)/ 458 458 $ QREFvis3d(ig,L_NLAYRAD-k,iaer) … … 479 479 ! Albedo and emissivity 480 480 albi=1-emis(ig) ! longwave 481 albv=albedo(ig) ! shortwave 481 albv=albedo(ig) ! shortwave 482 482 acosz=mu0(ig) ! cosine of sun incident angle 483 483 484 484 !----------------------------------------------------------------------- 485 ! Methane vapour 485 ! Methane vapour 486 486 487 487 c qvar = mixing ratio … … 490 490 c datagcm/composition.in for the k-coefficients. 491 491 qvar(:)=0. 492 IF (methane) then 492 IF (methane) then 493 493 494 494 do l=1,nlayer … … 554 554 !! following lines changed in 03/2015 to solve upper atmosphere bug 555 555 ! plevrad(1) = 0. 556 ! plevrad(2) = max(pgasmin,0.0001*plevrad(3)) 556 ! plevrad(2) = max(pgasmin,0.0001*plevrad(3)) 557 557 ! 558 558 ! tlevrad(1) = tlevrad(2) … … 563 563 ! 564 564 ! pmid(1) = plevrad(2) 565 ! pmid(2) = plevrad(2) 565 ! pmid(2) = plevrad(2) 566 566 567 567 DO l=1,L_NLAYRAD-1 … … 574 574 pmid(L_LEVELS) = plevrad(L_LEVELS) 575 575 tmid(L_LEVELS) = tlevrad(L_LEVELS) 576 576 577 577 !TB 578 578 if ((PMID(2).le.1.e-5).and.(ig.eq.1)) then … … 608 608 endif 609 609 enddo 610 610 611 611 !======================================================================= 612 612 ! Calling the main radiative transfer subroutines … … 614 614 !----------------------------------------------------------------------- 615 615 ! Shortwave 616 616 617 617 IF(fract(ig) .GE. 1.0e-4) THEN ! only during daylight IPM?! flux UV... 618 618 … … 623 623 END DO 624 624 625 !print*, 'starting optcv' 625 !print*, 'starting optcv' 626 626 call optcv(dtauv,tauv,taucumv,plevrad, 627 627 $ qxvaer,qsvaer,gvaer,wbarv,cosbv,tauray,tauaero, … … 666 666 ! IR spectral output from top of the atmosphere 667 667 if(specOLR)then 668 do nw=1,L_NSPECTI 668 do nw=1,L_NSPECTI 669 669 OLR_nu(ig,nw)=nfluxtopi_nu(nw) 670 670 end do … … 673 673 ! ********************************************************** 674 674 ! Finally, the heating rates 675 ! g/cp*DF/DP 675 ! g/cp*DF/DP 676 676 ! ********************************************************** 677 677 … … 682 682 !dtsw(ig,L_NLAYRAD+1-l)=(fmnetv(l)-fmnetv(l-1))*dpp !averaged dtlw on each wavelength 683 683 do nw=1,L_NSPECTV 684 dtsw_nu(L_NLAYRAD+1-l,nw)= 684 dtsw_nu(L_NLAYRAD+1-l,nw)= 685 685 & (fmnetv_nu(l,nw)-fmnetv_nu(l-1,nw))*dpp 686 686 end do … … 689 689 !dtlw(ig,L_NLAYRAD+1-l)=(fmneti(l)-fmneti(l-1))*dpp !averaged dtlw on each wavelength 690 690 do nw=1,L_NSPECTI 691 dtlw_nu(L_NLAYRAD+1-l,nw)= 692 & (fmneti_nu(l,nw)-fmneti_nu(l-1,nw))*dpp 691 dtlw_nu(L_NLAYRAD+1-l,nw)= 692 & (fmneti_nu(l,nw)-fmneti_nu(l-1,nw))*dpp 693 693 end do 694 END DO 695 694 END DO 695 696 696 ! values at top of atmosphere 697 697 dpp = g/(cpp*scalep*(plevrad(3)-plevrad(1))) 698 698 699 ! SW 699 ! SW 700 700 !dtsw(ig,L_NLAYRAD)=(fmnetv(1)-nfluxtopv)*dpp 701 701 do nw=1,L_NSPECTV … … 704 704 end do 705 705 706 ! LW 707 c dtlw(ig,L_NLAYRAD)=(fmneti(1)-nfluxtopi) *dpp 706 ! LW 707 c dtlw(ig,L_NLAYRAD)=(fmneti(1)-nfluxtopi) *dpp 708 708 do nw=1,L_NSPECTI 709 709 dtlw_nu(L_NLAYRAD,nw)= … … 717 717 718 718 if (.not.nlte) then 719 eps_nlte_sw23(ig,:) =1. ! IF no NLTE 720 eps_nlte_sw33(ig,:) =1. ! IF no NLTE 721 eps_nlte_lw(ig,:) =1. ! IF no NLTE 719 eps_nlte_sw23(ig,:) =1. ! IF no NLTE 720 eps_nlte_sw33(ig,:) =1. ! IF no NLTE 721 eps_nlte_lw(ig,:) =1. ! IF no NLTE 722 722 endif 723 723 724 724 do l=1,nlayer 725 725 726 726 !LW 727 dtlw(ig,l) =0. 727 dtlw(ig,l) =0. 728 728 ! dtlw_co(ig,l) =0. ! only for diagnostic 729 729 do nw=1,L_NSPECTI 730 730 ! wewei : wavelength in micrometer 731 if ((wavei(nw).gt.6.).and.(wavei(nw).lt.9)) then 731 if ((wavei(nw).gt.6.).and.(wavei(nw).lt.9)) then 732 732 dtlw_nu(l,nw)=dtlw_nu(l,nw)*eps_nlte_lw(ig,l) 733 else 733 else 734 734 !dtlw_nu(l,nw)=1.*dtlw_nu(l,nw) ! no CO correction (Strobbel 1996) 735 735 dtlw_nu(l,nw)=0.33*dtlw_nu(l,nw) ! CO correction (Strobbel 1996) 736 736 ! dtlw_co(ig,l)=dtlw_co(ig,l)+ dtlw_nu(l,nw) ! diagnostic 737 737 end if 738 dtlw(ig,l)=dtlw(ig,l)+ dtlw_nu(l,nw) !average now on each wavelength 738 dtlw(ig,l)=dtlw(ig,l)+ dtlw_nu(l,nw) !average now on each wavelength 739 739 end do 740 740 ! adding c2h2 if cooling active … … 743 743 !SW 744 744 dtsw(ig,l) =0. 745 745 746 746 if (strobel) then 747 747 748 748 do nw=1,L_NSPECTV 749 if ((wavev(nw).gt.2).and.(wavev(nw).lt.2.6)) then 749 if ((wavev(nw).gt.2).and.(wavev(nw).lt.2.6)) then 750 750 dtsw_nu(l,nw)=dtsw_nu(l,nw)*eps_nlte_sw23(ig,l) 751 elseif ((wavev(nw).gt.3).and.(wavev(nw).lt.3.6)) then 751 elseif ((wavev(nw).gt.3).and.(wavev(nw).lt.3.6)) then 752 752 dtsw_nu(l,nw)=dtsw_nu(l,nw)*eps_nlte_sw33(ig,l) 753 753 else 754 754 dtsw_nu(l,nw)=dtsw_nu(l,nw) 755 755 end if 756 dtsw(ig,l)=dtsw(ig,l)+ dtsw_nu(l,nw) 756 dtsw(ig,l)=dtsw(ig,l)+ dtsw_nu(l,nw) 757 757 end do 758 758 … … 764 764 enddo 765 765 766 endif 766 endif 767 767 768 768 … … 771 771 772 772 ! Diagnotics for last call for each grid point 773 !if (lastcall) then 773 !if (lastcall) then 774 774 775 775 !print*,'albedi vis=',albv … … 806 806 endif 807 807 808 if(lastcall)then 808 if(lastcall)then 809 809 810 810 ! 1D Output … … 816 816 open(116,file='surf_vals.out') 817 817 write(116,*) tsurf(1),pplev(1,1), 818 & fluxtop_dn(1) - fluxtop_sw(1),fluxtop_lw(1) 818 & fluxtop_dn(1) - fluxtop_sw(1),fluxtop_lw(1) 819 819 do nw=1,L_NSPECTV 820 820 write(116,*) wavev(nw),fmnetv_nu(L_NLAYRAD,nw) … … 830 830 if(diagrad_OLR)then 831 831 open(117,file='OLRnu.out') 832 write(117,*) 'IR wavel - band width - OLR' 832 write(117,*) 'IR wavel - band width - OLR' 833 833 do nw=1,L_NSPECTI 834 834 write(117,*) wavei(nw), 835 835 & abs(1.e4/bwnv(nw)-1.e4/bwnv(nw+1)),OLR_nu(1,nw) 836 enddo 836 enddo 837 837 close(117) 838 838 endif … … 846 846 write(118,*) plevrad(2*l) 847 847 do nw=1,L_NSPECTI 848 write(119,*) fluxupi_nu(l,nw) 848 write(119,*) fluxupi_nu(l,nw) 849 849 enddo 850 enddo 850 enddo 851 851 close(118) 852 852 close(119) -
trunk/LMDZ.PLUTO.old/libf/phypluto/cooling_stock
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
-
trunk/LMDZ.PLUTO.old/libf/phypluto/physiq.F
r3237 r3275 1849 1849 call WRITEDIAGFI(ngrid,"u","Zonal wind","m.s-1",3,zu) 1850 1850 call WRITEDIAGFI(ngrid,"v","Meridional wind","m.s-1",3,zv) 1851 ! call WRITEDIAGFI(ngrid,"pressure","Pression","Pa",3,pplay)1851 call WRITEDIAGFI(ngrid,"p","Pression","Pa",3,pplay) 1852 1852 call WRITEDIAGFI(ngrid,"fluxrad","fluxrad", 1853 1853 & "W m-2",2,fluxrad) … … 2073 2073 call WRITEDIAGFI(ngrid,"ps","surface pressure","Pa",0,ps) 2074 2074 call WRITEDIAGFI(ngrid,"temp","temperature","K",3,zt) 2075 call WRITEDIAGFI(ngrid,"p","Pression","Pa",3,pplay) 2075 2076 2076 2077 call WRITEDIAGFI(ngrid,"fluxsurf_sw","sw surface flux", -
trunk/LMDZ.PLUTO.old/libo
-
Property
svn:ignore
set to
*.e
*.mod
-
Property
svn:ignore
set to
Note: See TracChangeset
for help on using the changeset viewer.