Changeset 3275 for trunk/LMDZ.PLUTO.old


Ignore:
Timestamp:
Mar 20, 2024, 3:05:14 PM (8 months ago)
Author:
afalco
Message:

Pluto PCM:
Changed _vap to _gas;
Included surfprop.F90;
callcorrk includes methane
AF

Location:
trunk/LMDZ.PLUTO.old
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO.old

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/compile1d

    r3175 r3275  
    11#!/bin/bash
    2 
    3 ./makegcm_cygwin -debug -fdefault-real-8 -d 25 -b 17x23 -t 7 -s 1 -p pluto testphys1d
     2export 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
  • trunk/LMDZ.PLUTO.old/deftank/gcm

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/deftank/kbo_def

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/deftank/nogcm

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/deftank/nogcm_simple

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/deftank/testphys1d

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/bibio

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/dyn3d

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/dyn3d/poubelle

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/dyn3d/startsHD

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/dyn3d/stock

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/filtrez

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/grid

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/grid/dimension

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/phypluto

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/phypluto/callcorrk.F

    r3175 r3275  
    55     &     fluxsurf_sw,fluxtop_lw,fluxtop_sw,fluxtop_dn,
    66     &     reffrad,tau_col,ptime,pday,firstcall,lastcall,zzlay)
    7          
     7
    88      use radinc_h
    99      use radcommon_h
    10       use ioipsl_getincom 
     10      use ioipsl_getincom
    1111      use radii_mod
    1212      use aerosol_mod
     
    2424!
    2525!     Authors
    26 !     ------- 
     26!     -------
    2727!     Emmanuel 01/2001, Forget 09/2001
    2828!     Robin Wordsworth (2009)
     
    3737!-----------------------------------------------------------------------
    3838!     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.
    4040!     Layer #nlayermx is the layer at the top.
    4141
     
    4444      INTEGER ngrid,nlayer
    4545      INTEGER igout
    46       REAL aerosol(ngrid,nlayermx,naerkind) ! aerosol opacity tau 
     46      REAL aerosol(ngrid,nlayermx,naerkind) ! aerosol opacity tau
    4747      REAL albedo(ngrid)                    ! SW albedo
    4848      REAL emis(ngrid)                      ! LW emissivity
     
    110110      real*8 fluxupi_nu(L_NLAYRAD,L_NSPECTI) ! for 1D diagnostic
    111111      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) !
    114114      REAL*8 fluxupv(L_NLAYRAD),fluxupi(L_NLAYRAD)
    115115      REAL*8 fluxdnv(L_NLAYRAD),fluxdni(L_NLAYRAD)
     
    137137      save qxvaer, qsvaer, gvaer
    138138      save qxiaer, qsiaer, giaer
    139       save QREFvis3d, QREFir3d 
     139      save QREFvis3d, QREFir3d
    140140
    141141      REAL tau_col(ngrid) ! diagnostic from aeropacity
     
    220220         call setspv            ! basic visible properties
    221221
    222          ! Radiative Hazes 
     222         ! Radiative Hazes
    223223         if (aerohaze) then
    224224
     
    231231           !--------------------------------------------------
    232232           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),
    235235     &             nueffrad(1,1,iaer))
    236236              endif
     
    238238           if (haze_radproffix) then
    239239              print*, 'haze_radproffix=T : fixed profile for haze rad'
    240            else 
     240           else
    241241              print*,'reffrad haze:',reffrad(1,1,iaero_haze)
    242242              print*,'nueff haze',nueffrad(1,1,iaero_haze)
     
    272272!-----------------------------------------------------------------------
    273273!     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
    275275      if (aerohaze) then
    276276        !--------------------------------------------------
     
    283283        endif
    284284
    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,
    288288     &      QREFvis3d,QREFir3d)
    289289
    290290        ! 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,
    293293     &      tau_col)
    294294      endif
     
    298298      IF (methane) then
    299299        vmrch4(:,:)=0.
    300        
     300
    301301        if (ch4fix) then
    302302           if (vmrch4_proffix) then
    303303            !! Interpolate on the model vertical grid
    304304             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)
    307307             enddo
    308308           else
     
    317317!     Prepare NON LTE correction in Pluto atmosphere
    318318      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)
    321321      ENDIF
    322322c     Net atmospheric radiative cooling rate from C2H2 (K.s-1):
     
    343343!     shortwave
    344344            do iaer=1,naerkind
    345                DO nw=1,L_NSPECTV 
     345               DO nw=1,L_NSPECTV
    346346                  do l=1,nlayermx
    347347
    348                      temp1=QVISsQREF3d(ig,nlayermx+1-l,nw,iaer) 
     348                     temp1=QVISsQREF3d(ig,nlayermx+1-l,nw,iaer)
    349349     $                    *QREFvis3d(ig,nlayermx+1-l,iaer)
    350350
    351                      temp2=QVISsQREF3d(ig,max(nlayermx-l,1),nw,iaer) 
     351                     temp2=QVISsQREF3d(ig,max(nlayermx-l,1),nw,iaer)
    352352     $                    *QREFvis3d(ig,max(nlayermx-l,1),iaer)
    353353                     qxvaer(2*l,nw,iaer)  = temp1
     
    378378
    379379!     longwave
    380                DO nw=1,L_NSPECTI 
     380               DO nw=1,L_NSPECTI
    381381                  do l=1,nlayermx
    382382
    383                      temp1=QIRsQREF3d(ig,nlayermx+1-l,nw,iaer) 
     383                     temp1=QIRsQREF3d(ig,nlayermx+1-l,nw,iaer)
    384384     $                    *QREFir3d(ig,nlayermx+1-l,iaer)
    385385
    386                      temp2=QIRsQREF3d(ig,max(nlayermx-l,1),nw,iaer) 
     386                     temp2=QIRsQREF3d(ig,max(nlayermx-l,1),nw,iaer)
    387387     $                    *QREFir3d(ig,max(nlayermx-l,1),iaer)
    388388
     
    421421                  do nw=1,L_NSPECTV
    422422                     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'
    424424                        print*,'in callcorrk'
    425425                        call abort
     
    430430                  end do
    431431
    432                   do nw=1,L_NSPECTI 
     432                  do nw=1,L_NSPECTI
    433433                     if(qsiaer(k,nw,iaer).gt.1.05*qxiaer(k,nw,iaer))then
    434434                        print*,'Serious problems with qsiaer values'
     
    448448!-----------------------------------------------------------------------
    449449!     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
    452452            do k=0,nlayer-1
    453453               pweight=
    454454     $              (pplay(ig,L_NLAYRAD-k)-pplev(ig,L_NLAYRAD-k+1))/
    455455     $              (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
    457457                 temp=aerosol(ig,L_NLAYRAD-k,iaer)/
    458458     $              QREFvis3d(ig,L_NLAYRAD-k,iaer)
     
    479479!     Albedo and emissivity
    480480         albi=1-emis(ig)        ! longwave
    481          albv=albedo(ig)        ! shortwave 
     481         albv=albedo(ig)        ! shortwave
    482482         acosz=mu0(ig)          ! cosine of sun incident angle
    483483
    484484!-----------------------------------------------------------------------
    485 !     Methane vapour 
     485!     Methane vapour
    486486
    487487c     qvar = mixing ratio
     
    490490c     datagcm/composition.in for the k-coefficients.
    491491         qvar(:)=0.
    492          IF (methane) then 
     492         IF (methane) then
    493493
    494494           do l=1,nlayer
     
    554554!! following lines changed in 03/2015 to solve upper atmosphere bug
    555555!        plevrad(1) = 0.
    556 !        plevrad(2) = max(pgasmin,0.0001*plevrad(3))     
     556!        plevrad(2) = max(pgasmin,0.0001*plevrad(3))
    557557!
    558558!        tlevrad(1) = tlevrad(2)
     
    563563!
    564564!        pmid(1) = plevrad(2)
    565 !        pmid(2) = plevrad(2) 
     565!        pmid(2) = plevrad(2)
    566566
    567567         DO l=1,L_NLAYRAD-1
     
    574574         pmid(L_LEVELS) = plevrad(L_LEVELS)
    575575         tmid(L_LEVELS) = tlevrad(L_LEVELS)
    576      
     576
    577577      !TB
    578578         if ((PMID(2).le.1.e-5).and.(ig.eq.1)) then
     
    608608          endif
    609609         enddo
    610      
     610
    611611!=======================================================================
    612612!     Calling the main radiative transfer subroutines
     
    614614!-----------------------------------------------------------------------
    615615!     Shortwave
    616        
     616
    617617         IF(fract(ig) .GE. 1.0e-4) THEN ! only during daylight  IPM?! flux UV...
    618618
     
    623623            END DO
    624624
    625             !print*, 'starting optcv' 
     625            !print*, 'starting optcv'
    626626            call optcv(dtauv,tauv,taucumv,plevrad,
    627627     $           qxvaer,qsvaer,gvaer,wbarv,cosbv,tauray,tauaero,
     
    666666!        IR spectral output from top of the atmosphere
    667667         if(specOLR)then
    668             do nw=1,L_NSPECTI 
     668            do nw=1,L_NSPECTI
    669669               OLR_nu(ig,nw)=nfluxtopi_nu(nw)
    670670            end do
     
    673673! **********************************************************
    674674!     Finally, the heating rates
    675 !     g/cp*DF/DP 
     675!     g/cp*DF/DP
    676676! **********************************************************
    677677
     
    682682               !dtsw(ig,L_NLAYRAD+1-l)=(fmnetv(l)-fmnetv(l-1))*dpp   !averaged dtlw on each wavelength
    683683               do nw=1,L_NSPECTV
    684                  dtsw_nu(L_NLAYRAD+1-l,nw)= 
     684                 dtsw_nu(L_NLAYRAD+1-l,nw)=
    685685     &              (fmnetv_nu(l,nw)-fmnetv_nu(l-1,nw))*dpp
    686686               end do
     
    689689               !dtlw(ig,L_NLAYRAD+1-l)=(fmneti(l)-fmneti(l-1))*dpp   !averaged dtlw on each wavelength
    690690               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
    693693               end do
    694          END DO     
    695          
     694         END DO
     695
    696696         ! values at top of atmosphere
    697697         dpp = g/(cpp*scalep*(plevrad(3)-plevrad(1)))
    698698
    699          ! SW 
     699         ! SW
    700700         !dtsw(ig,L_NLAYRAD)=(fmnetv(1)-nfluxtopv)*dpp
    701701         do nw=1,L_NSPECTV
     
    704704         end do
    705705
    706          ! LW 
    707 c        dtlw(ig,L_NLAYRAD)=(fmneti(1)-nfluxtopi) *dpp 
     706         ! LW
     707c        dtlw(ig,L_NLAYRAD)=(fmneti(1)-nfluxtopi) *dpp
    708708         do nw=1,L_NSPECTI
    709709             dtlw_nu(L_NLAYRAD,nw)=
     
    717717
    718718         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
    722722         endif
    723  
     723
    724724         do l=1,nlayer
    725725
    726726            !LW
    727             dtlw(ig,l) =0. 
     727            dtlw(ig,l) =0.
    728728!           dtlw_co(ig,l) =0.  ! only for diagnostic
    729729            do nw=1,L_NSPECTI
    730730              ! 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
    732732                dtlw_nu(l,nw)=dtlw_nu(l,nw)*eps_nlte_lw(ig,l)
    733               else 
     733              else
    734734                !dtlw_nu(l,nw)=1.*dtlw_nu(l,nw) ! no CO correction (Strobbel 1996)
    735735                dtlw_nu(l,nw)=0.33*dtlw_nu(l,nw) ! CO correction (Strobbel 1996)
    736736!               dtlw_co(ig,l)=dtlw_co(ig,l)+ dtlw_nu(l,nw) ! diagnostic
    737737              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
    739739            end do
    740740            ! adding c2h2 if cooling active
     
    743743            !SW
    744744            dtsw(ig,l) =0.
    745  
     745
    746746            if (strobel) then
    747747
    748748             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
    750750                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
    752752                dtsw_nu(l,nw)=dtsw_nu(l,nw)*eps_nlte_sw33(ig,l)
    753753              else
    754754                dtsw_nu(l,nw)=dtsw_nu(l,nw)
    755755              end if
    756               dtsw(ig,l)=dtsw(ig,l)+ dtsw_nu(l,nw) 
     756              dtsw(ig,l)=dtsw(ig,l)+ dtsw_nu(l,nw)
    757757             end do
    758758
     
    764764             enddo
    765765
    766             endif 
     766            endif
    767767
    768768
     
    771771
    772772!     Diagnotics for last call for each grid point
    773          !if (lastcall) then 
     773         !if (lastcall) then
    774774
    775775          !print*,'albedi vis=',albv
     
    806806      endif
    807807
    808       if(lastcall)then 
     808      if(lastcall)then
    809809
    810810        ! 1D Output
     
    816816               open(116,file='surf_vals.out')
    817817               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)
    819819               do nw=1,L_NSPECTV
    820820                 write(116,*) wavev(nw),fmnetv_nu(L_NLAYRAD,nw)
     
    830830           if(diagrad_OLR)then
    831831               open(117,file='OLRnu.out')
    832                write(117,*) 'IR wavel - band width - OLR' 
     832               write(117,*) 'IR wavel - band width - OLR'
    833833               do nw=1,L_NSPECTI
    834834                   write(117,*) wavei(nw),
    835835     &        abs(1.e4/bwnv(nw)-1.e4/bwnv(nw+1)),OLR_nu(1,nw)
    836                enddo   
     836               enddo
    837837               close(117)
    838838           endif
     
    846846                 write(118,*) plevrad(2*l)
    847847                 do nw=1,L_NSPECTI
    848                      write(119,*) fluxupi_nu(l,nw) 
     848                     write(119,*) fluxupi_nu(l,nw)
    849849                 enddo
    850                enddo 
     850               enddo
    851851               close(118)
    852852               close(119)
  • trunk/LMDZ.PLUTO.old/libf/phypluto/cooling_stock

    • Property svn:ignore set to
      *.e
      *.mod
  • trunk/LMDZ.PLUTO.old/libf/phypluto/physiq.F

    r3237 r3275  
    18491849          call WRITEDIAGFI(ngrid,"u","Zonal wind","m.s-1",3,zu)
    18501850          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)
    18521852          call WRITEDIAGFI(ngrid,"fluxrad","fluxrad",
    18531853     &                                        "W m-2",2,fluxrad)
     
    20732073          call WRITEDIAGFI(ngrid,"ps","surface pressure","Pa",0,ps)
    20742074          call WRITEDIAGFI(ngrid,"temp","temperature","K",3,zt)
     2075          call WRITEDIAGFI(ngrid,"p","Pression","Pa",3,pplay)
    20752076
    20762077          call WRITEDIAGFI(ngrid,"fluxsurf_sw","sw surface flux",
  • trunk/LMDZ.PLUTO.old/libo

    • Property svn:ignore set to
      *.e
      *.mod
Note: See TracChangeset for help on using the changeset viewer.