Ignore:
Timestamp:
Mar 16, 2012, 7:11:41 PM (13 years ago)
Author:
jleconte
Message:

removed cpp3D and nonideal stuff.

Location:
trunk/LMDZ.GENERIC/libf/phystd
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/phystd/callcorrk.F90

    r538 r586  
    11      subroutine callcorrk(ngrid,nlayer,pq,nq,qsurf,           &
    22          albedo,emis,mu0,pplev,pplay,pt,                      &
    3           tsurf,fract,dist_star,aerosol,cpp3D,muvar,           &
     3          tsurf,fract,dist_star,aerosol,muvar,           &
    44          dtlw,dtsw,fluxsurf_lw,                               &
    55          fluxsurf_sw,fluxtop_lw,fluxabs_sw,fluxtop_dn,        &
     
    164164      real totcloudfrac(ngridmx)
    165165      logical clearsky
    166 
    167 !     Allow variations in cp with location
    168       real cpp3D(ngridmx,nlayermx)   ! specific heat capacity at const. pressure
    169166
    170167      ! for weird cloud test
     
    825822
    826823!     Finally, the heating rates
    827          if(nonideal)then
    828 
    829             DO l=2,L_NLAYRAD
    830                dtsw(ig,L_NLAYRAD+1-l)=(fmnetv(l)-fmnetv(l-1))  &
    831                     *g/(cpp3D(ig,L_NLAYRAD+1-l)                &
    832                     *scalep*(plevrad(2*l+1)-plevrad(2*l-1)))
    833                dtlw(ig,L_NLAYRAD+1-l)=(fmneti(l)-fmneti(l-1))  &
    834                     *g/(cpp3D(ig,L_NLAYRAD+1-l)                &
    835                     *scalep*(plevrad(2*l+1)-plevrad(2*l-1)))           
    836             END DO     
     824
     825         DO l=2,L_NLAYRAD
     826            dtsw(ig,L_NLAYRAD+1-l)=(fmnetv(l)-fmnetv(l-1))  &
     827                *g/(cpp*scalep*(plevrad(2*l+1)-plevrad(2*l-1)))
     828            dtlw(ig,L_NLAYRAD+1-l)=(fmneti(l)-fmneti(l-1))  &
     829                *g/(cpp*scalep*(plevrad(2*l+1)-plevrad(2*l-1)))
     830         END DO     
    837831
    838832!     These are values at top of atmosphere
    839             dtsw(ig,L_NLAYRAD)=(fmnetv(1)-nfluxtopv)           &
    840                  *g/(cpp3D(ig,L_NLAYRAD)*scalep*(plevrad(3)-plevrad(1)))
    841             dtlw(ig,L_NLAYRAD)=(fmneti(1)-nfluxtopi)           &
    842                  *g/(cpp3D(ig,L_NLAYRAD)*scalep*(plevrad(3)-plevrad(1)))
    843 
    844          else
    845 
    846             DO l=2,L_NLAYRAD
    847                dtsw(ig,L_NLAYRAD+1-l)=(fmnetv(l)-fmnetv(l-1))  &
    848                    *g/(cpp*scalep*(plevrad(2*l+1)-plevrad(2*l-1)))
    849                dtlw(ig,L_NLAYRAD+1-l)=(fmneti(l)-fmneti(l-1))  &
    850                    *g/(cpp*scalep*(plevrad(2*l+1)-plevrad(2*l-1)))
    851             END DO     
    852 
    853 !     These are values at top of atmosphere
    854             dtsw(ig,L_NLAYRAD)=(fmnetv(1)-nfluxtopv)           &
    855                 *g/(cpp*scalep*(plevrad(3)-plevrad(1)))
    856             dtlw(ig,L_NLAYRAD)=(fmneti(1)-nfluxtopi)           &
    857                 *g/(cpp*scalep*(plevrad(3)-plevrad(1)))
    858 
    859          endif
     833         dtsw(ig,L_NLAYRAD)=(fmnetv(1)-nfluxtopv)           &
     834             *g/(cpp*scalep*(plevrad(3)-plevrad(1)))
     835         dtlw(ig,L_NLAYRAD)=(fmneti(1)-nfluxtopi)           &
     836             *g/(cpp*scalep*(plevrad(3)-plevrad(1)))
    860837
    861838!     ---------------------------------------------------------------
  • trunk/LMDZ.GENERIC/libf/phystd/condense_cloud.F90

    r526 r586  
    44          piceco2,psolaralb,pemisurf, &
    55          pdtc,pdtsrfc,pdpsrf,pduc,pdvc, &
    6           pdqc,reffrad,cpp3D)
     6          pdqc,reffrad)
    77
    88      use radinc_h, only : naerkind
     
    8383      REAL reffrad(ngrid,nlayer,naerkind)
    8484
    85 !     Allow variations in cp with location
    86       REAL cpp3D(ngridmx,nlayermx)   ! specific heat capacity at const. pressure
    87 
    8885
    8986
     
    376373               pdtc(ig,l)=0.
    377374
    378                ! tweak ccond if the gas is non-ideal
    379                if(nonideal)then   
    380                   ccond=cpp3D(ig,l)/(g*latcond)
    381                endif
    382 
    383375
    384376   !     ztcond-> ztnuc in test beneath to nucleate only when super saturation occurs(JL 2011)
  • trunk/LMDZ.GENERIC/libf/phystd/inifis.F

    r538 r586  
    216216         write(*,*) " calladj = ",calladj
    217217       
    218          write(*,*)"Gas is nonideal CO2 ?"
    219          nonideal=.false.
    220          call getin("nonideal",nonideal)
    221          write(*,*)" nonideal = ",nonideal
    222218
    223219! Test of incompatibility
  • trunk/LMDZ.GENERIC/libf/phystd/kcm1d.F90

    r366 r586  
    5252  real emis, albedo
    5353
    54   real cpp3D(nlayermx)   ! specific heat capacity at const. pressure
    55   real rcp3D(nlayermx)   ! R / specific heat capacity
    5654  real muvar(nlayermx+1)
    5755
     
    235233     call callcorrk(ngridmx,nlayer,q,nqmx,qsurf,      &
    236234          albedo,emis,mu0,plev,play,temp,                    &
    237           tsurf,fract,dist_star,aerosol,cpp3D,muvar,         &
     235          tsurf,fract,dist_star,aerosol,cpp,muvar,         &
    238236          dtlw,dtsw,fluxsurf_lw,fluxsurf_sw,fluxtop_lw,    &
    239237          fluxabs_sw,fluxtop_dn,reffrad,tau_col,  &
  • trunk/LMDZ.GENERIC/libf/phystd/physiq.F90

    r538 r586  
    321321      real h2otot
    322322
    323 !     included by RW to allow variations in cp with location
    324       real cpp3D(ngridmx,nlayermx)   ! specific heat capacity at const. pressure
    325       real rcp3D(ngridmx,nlayermx)   ! R / specific heat capacity
    326       real cppNI, rcpNI, nnu         ! last one just for Seb version
    327       real zpopskNI(ngridmx,nlayermx)
    328323
    329324
     
    643638!     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    644639
    645       do l=1,nlayer
    646          do ig=1,ngrid
    647             call calc_cpp3d(cppNI,rcpNI,pt(ig,l),pplay(ig,l))
    648             cpp3D(ig,l)  = cppNI
    649             rcp3D(ig,l)  = rcpNI
    650          enddo
    651       enddo
    652 
    653       do l=1,nlayer
    654          do ig=1,ngrid
    655             zh(ig,l)       = pt(ig,l)
    656             zpopskNI(ig,l) = pt(ig,l)/zh(ig,l)
    657             zpopsk(ig,l)   = pt(ig,l)/zh(ig,l)
    658             ! we're only after zpopskNI here, not zh
    659             ! zh is calculated seperately before both vdifc and convadj
    660          enddo
    661       enddo
     640
    662641         
    663642      do l=1,nlayer
     
    717696              call callcorrk(ngrid,nlayer,pq,nq,qsurf,                   &
    718697                      albedo,emis,mu0,pplev,pplay,pt,                    &
    719                       tsurf,fract,dist_star,aerosol,cpp3D,muvar,         &
     698                      tsurf,fract,dist_star,aerosol,muvar,               &
    720699                      zdtlw,zdtsw,fluxsurf_lw,fluxsurf_sw,fluxtop_lw,    &
    721700                      fluxabs_sw,fluxtop_dn,OLR_nu,OSR_nu,               &
     
    731710                 call callcorrk(ngrid,nlayer,pq,nq,qsurf,                  &
    732711                      albedo,emis,mu0,pplev,pplay,pt,                      &
    733                       tsurf,fract,dist_star,aerosol,cpp3D,muvar,           &
     712                      tsurf,fract,dist_star,aerosol,muvar,                 &
    734713                      zdtlw1,zdtsw1,fluxsurf_lw1,fluxsurf_sw1,fluxtop_lw1, &
    735714                      fluxabs_sw1,fluxtop_dn,OLR_nu1,OSR_nu1,              &
     
    850829               do l = 1, nlayer
    851830                  masse  = (pplev(ig,l) - pplev(ig,l+1))/g
    852                   dEtotSW = dEtotSW + cpp3D(ig,l)*masse*zdtsw(ig,l)*area(ig)
    853                   dEtotLW = dEtotLW + cpp3D(ig,l)*masse*zdtlw(ig,l)*area(ig)
     831                  dEtotSW = dEtotSW + cpp*masse*zdtsw(ig,l)*area(ig)
     832                  dEtotLW = dEtotLW + cpp*masse*zdtlw(ig,l)*area(ig)
    854833               enddo
    855834               dEtotsSW = dEtotsSW + fluxsurf_sw(ig)*(1.-albedo(ig))*area(ig)
     
    937916               do l = 1, nlayer
    938917                  masse = (pplev(ig,l) - pplev(ig,l+1))/g
    939                   dEtot = dEtot + cpp3D(ig,l)*masse*zdtdif(ig,l)*area(ig)
     918                  dEtot = dEtot + cpp*masse*zdtdif(ig,l)*area(ig)
    940919                 
    941920                  vabs  = sqrt(pdu(ig,l)**2 + pdv(ig,l)**2)
     
    10301009         do l=1,nlayer
    10311010            do ig=1,ngrid
    1032                if(nonideal)then
    1033                   zdh(ig,l) = pdt(ig,l)/zpopskNI(ig,l)
    1034                else
    1035                   zdh(ig,l) = pdt(ig,l)/zpopsk(ig,l)
    1036                endif
     1011               zdh(ig,l) = pdt(ig,l)/zpopsk(ig,l)
    10371012            enddo
    10381013         enddo
     
    10411016         zdhadj(:,:)=0.0
    10421017
    1043          if(nonideal)then
    1044             print*,'Nonideal is not used at the moment'
    1045             call abort
    1046             call convadj(ngrid,nlayer,nq,ptimestep,    &
    1047                  pplay,pplev,zpopskNI,                 &
    1048                  pu,pv,zh,pq,                          &
    1049                  pdu,pdv,zdh,pdq,                      &
    1050                  zduadj,zdvadj,zdhadj,                 &
    1051                  zdqadj)
    1052          else
    1053            
    1054             call convadj(ngrid,nlayer,nq,ptimestep,    &
    1055                  pplay,pplev,zpopsk,                   &
    1056                  pu,pv,zh,pq,                          &
    1057                  pdu,pdv,zdh,pdq,                      &
    1058                  zduadj,zdvadj,zdhadj,                 &
    1059                  zdqadj)
    1060 
    1061          endif
     1018
     1019         call convadj(ngrid,nlayer,nq,ptimestep,    &
     1020              pplay,pplev,zpopsk,                   &
     1021              pu,pv,zh,pq,                          &
     1022              pdu,pdv,zdh,pdq,                      &
     1023              zduadj,zdvadj,zdhadj,                 &
     1024              zdqadj)
    10621025
    10631026         do l=1,nlayer
     
    10651028               pdu(ig,l) = pdu(ig,l) + zduadj(ig,l)
    10661029               pdv(ig,l) = pdv(ig,l) + zdvadj(ig,l)
    1067                if(nonideal)then
    1068                   pdt(ig,l)    = pdt(ig,l) + zdhadj(ig,l)*zpopskNI(ig,l)
    1069                   zdtadj(ig,l) = zdhadj(ig,l)*zpopskNI(ig,l) ! for diagnostic only
    1070                else
    1071                   pdt(ig,l)    = pdt(ig,l) + zdhadj(ig,l)*zpopsk(ig,l)
    1072                   zdtadj(ig,l) = zdhadj(ig,l)*zpopsk(ig,l) ! for diagnostic only
    1073                endif
     1030               pdt(ig,l)    = pdt(ig,l) + zdhadj(ig,l)*zpopsk(ig,l)
     1031               zdtadj(ig,l) = zdhadj(ig,l)*zpopsk(ig,l) ! for diagnostic only
    10741032            enddo
    10751033         enddo
     
    10921050               do l = 1, nlayer
    10931051                  masse = (pplev(ig,l) - pplev(ig,l+1))/g
    1094                   dEtot = dEtot + cpp3D(ig,l)*masse*zdtadj(ig,l)*area(ig)
     1052                  dEtot = dEtot + cpp*masse*zdtadj(ig,l)*area(ig)
    10951053               enddo
    10961054            enddo
     
    11421100              qsurf(1,igcm_co2_ice),albedo,emis,            &
    11431101              zdtc,zdtsurfc,pdpsrf,zduc,zdvc,               &
    1144               zdqc,reffrad,cpp3D)
     1102              zdqc,reffrad)
    11451103
    11461104         do l=1,nlayer
     
    11731131               do l = 1, nlayer
    11741132                  masse = (pplev(ig,l) - pplev(ig,l+1))/g
    1175                   dEtot = dEtot + cpp3D(ig,l)*masse*zdtc(ig,l)*area(ig)
     1133                  dEtot = dEtot + cpp*masse*zdtc(ig,l)*area(ig)
    11761134               enddo
    11771135               dEtots = dEtots + capcal(ig)*zdtsurfc(ig)*area(ig)
     
    12311189                     do l = 1, nlayer
    12321190                        masse = (pplev(ig,l) - pplev(ig,l+1))/g
    1233                         dEtot = dEtot + cpp3D(ig,l)*masse*(dtmoist(ig,l)+dtevap(ig,l))*area(ig)
    1234                         madjdE(ig) = madjdE(ig) + cpp3D(ig,l)*masse*(dtmoist(ig,l)+dtevap(ig,l))
     1191                        dEtot = dEtot + cpp*masse*(dtmoist(ig,l)+dtevap(ig,l))*area(ig)
     1192                        madjdE(ig) = madjdE(ig) + cpp*masse*(dtmoist(ig,l)+dtevap(ig,l))
    12351193                     enddo
    12361194                  enddo
     
    12961254                     do l = 1, nlayer
    12971255                        masse = (pplev(ig,l) - pplev(ig,l+1))/g
    1298                         dEtot = dEtot + cpp3D(ig,l)*masse*(dtlscale(ig,l)+dtevap(ig,l))*area(ig)
    1299                         lscaledE(ig) = lscaledE(ig) + cpp3D(ig,l)*masse*(dtlscale(ig,l)+dtevap(ig,l))
     1256                        dEtot = dEtot + cpp*masse*(dtlscale(ig,l)+dtevap(ig,l))*area(ig)
     1257                        lscaledE(ig) = lscaledE(ig) + cpp*masse*(dtlscale(ig,l)+dtevap(ig,l))
    13001258                     enddo
    13011259                  enddo
     
    13691327                    do l = 1, nlayer
    13701328                       masse = (pplev(ig,l) - pplev(ig,l+1))/g
    1371                        dEtot = dEtot + cpp3D(ig,l)*masse*zdtrain(ig,l)*area(ig)
     1329                       dEtot = dEtot + cpp*masse*zdtrain(ig,l)*area(ig)
    13721330                    enddo
    13731331                 enddo
     
    13851343                    do l = 1, nlayer
    13861344                       masse = (pplev(ig,l) - pplev(ig,l+1))/g
    1387                        dEtot = dEtot + cpp3D(ig,l)*masse*zdtrain(ig,l)*area(ig)
     1345                       dEtot = dEtot + cpp*masse*zdtrain(ig,l)*area(ig)
    13881346                    enddo
    13891347                 enddo
     
    16701628         do l=1,nlayer
    16711629            fluxdyn(ig)=fluxdyn(ig) - (zdtdyn(ig,l)/ptimestep)   &
    1672                  *(pplev(ig,l)-pplev(ig,l+1))*cpp3D(ig,l)/g
     1630                 *(pplev(ig,l)-pplev(ig,l+1))*cpp/g
    16731631         enddo
    16741632      enddo
     
    17601718            print*,'SW energy balance SW++ - ASR = ',dEtotSW+dEtotsSW-ASR/totarea,' W m-2'
    17611719            print*,'LW energy balance LW++ + ***ASR*** = ',dEtotLW+dEtotsLW+ASR/totarea,' W m-2'
     1720            print*,'LW energy balance LW++ - ***OLR*** = ',dEtotLW+dEtotsLW+OLR/totarea,' W m-2'
    17621721         endif
    17631722
  • trunk/LMDZ.GENERIC/libf/phystd/rcm1d.F

    r534 r586  
    106106      real logplevs(nlayermx)
    107107
    108 !     added by RDW to allow variations in cp with location
    109       REAL cpp3D(ngridmx,nlayermx)   ! specific heat capacity at const. pressure
    110       REAL rcp3D(ngridmx,nlayermx)   ! R / specific heat capacity
    111      
    112108!     added by BC
    113109      REAL cloudfrac(ngridmx,nlayermx)
     
    631627c     ~~~~~~~~~~~~~~~~~~~~~
    632628
    633         if(nonideal)then
    634 
    635            DO ilayer=1,nlayer
    636               call calc_cpp3d(cpp3D(1,ilayer),
    637      $             rcp3D(1,ilayer),temp(ilayer),play(ilayer))
    638            ENDDO
    639 
    640            DO ilayer=1,nlayer
    641 
    642 !              if(autozlevs)then
    643 !                 s(ilayer)=(play(ilayer)/psurf)**rcp3D(1,ilayer)
    644 !              else
    645                  s(ilayer)=
    646      &                (aps(ilayer)/psurf+bps(ilayer))**rcp3D(1,ilayer)
    647 !              endif
    648 
    649               h(ilayer)=cpp3D(1,ilayer)*temp(ilayer)/(pks*s(ilayer))
    650            ENDDO
    651 
    652         else
    653            DO ilayer=1,nlayer
     629
     630      DO ilayer=1,nlayer
    654631
    655632!              if(autozlevs)then
    656633!                 s(ilayer)=(play(ilayer)/psurf)**rcp
    657634!              else
    658                  s(ilayer)=(aps(ilayer)/psurf+bps(ilayer))**rcp
     635          s(ilayer)=(aps(ilayer)/psurf+bps(ilayer))**rcp
    659636!              endif
    660637              !s(ilayer)=(aps(ilayer)/psurf+bps(ilayer))**rcp
    661               h(ilayer)=cpp*temp(ilayer)/(pks*s(ilayer))
    662            ENDDO
    663         endif
     638          h(ilayer)=cpp*temp(ilayer)/(pks*s(ilayer))
     639       ENDDO
     640
    664641!      DO ilayer=1,nlayer
    665642!        s(ilayer)=(aps(ilayer)/psurf+bps(ilayer))**rcp
  • trunk/LMDZ.GENERIC/libf/phystd/vdifc.F

    r303 r586  
    170170                iice=igcm_h2o_ice ! simply to make the code legible               
    171171                                  ! to be generalised later
    172          endif
    173 
    174          if(ngridmx.ne.1)then
    175             if(nonideal)then
    176                print*,'Nonideal doesnt work yet in 3D!!!'
    177                call abort
    178             endif
    179172         endif
    180173
Note: See TracChangeset for help on using the changeset viewer.