Ignore:
Timestamp:
Jul 10, 2014, 3:19:01 PM (10 years ago)
Author:
emillour
Message:

Generic GCM:
Some cleanup to simplify dynamics/physics interactions by getting rid
of dimphys.h (i.e. the nlayermx parameter) and minimizing use of
dimension.h in the physics.
EM

File:
1 edited

Legend:

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

    r858 r1308  
    1       subroutine totalcloudfrac(ngrid,nq,rneb,totalrneb,pplev,pq,tau)
     1      subroutine totalcloudfrac(ngrid,nlayer,nq,rneb,totalrneb,pplev,pq,tau)
    22
    33      use watercommon_h
     
    1919!==================================================================
    2020
    21 #include "dimensions.h"
    22 #include "dimphys.h"
     21!#include "dimensions.h"
     22!#include "dimphys.h"
    2323#include "comcstfi.h"
    2424#include "callkeys.h"
    2525
    2626      integer,intent(in) :: ngrid        ! number of atmospheric columns
     27      integer,intent(in) :: nlayer       ! number of atmospheric layers
    2728      integer,intent(in) :: nq           ! number of tracers
    28       real,intent(in) :: rneb(ngrid,nlayermx)    ! cloud fraction     
     29      real,intent(in) :: rneb(ngrid,nlayer)    ! cloud fraction     
    2930      real,intent(out) :: totalrneb(ngrid)       ! total cloud fraction
    30       real,intent(in) :: pplev(ngrid,nlayermx+1) ! inter-layer pressure (Pa)
    31       real,intent(in) :: pq(ngrid,nlayermx,nq)   ! tracers (.../kg_of_air)
    32       real,intent(in) :: tau(ngrid,nlayermx)
     31      real,intent(in) :: pplev(ngrid,nlayer+1) ! inter-layer pressure (Pa)
     32      real,intent(in) :: pq(ngrid,nlayer,nq)   ! tracers (.../kg_of_air)
     33      real,intent(in) :: tau(ngrid,nlayer)
    3334
    34       real, dimension(nlayermx+1) :: masse
     35      real, dimension(nlayer+1) :: masse
    3536      integer, parameter          :: recovery=7
    3637      integer ltau_max
     
    4748      real clear,tau_min
    4849      real, parameter ::  tau_c=0.1 !threshold of optical depth for the calculation of total cloud fraction
    49       real rneb2(nlayermx)
     50      real rneb2(nlayer)
    5051
    5152
     
    5556         if (recovery.eq.1) then
    5657            clear = (1.-rneb(ig,1))
    57             do l=2,nlayermx      
     58            do l=2,nlayer     
    5859               clear = clear*(1.-rneb(ig,l))
    5960            enddo
     
    6263         elseif (recovery.eq.2) then
    6364            totalrneb(ig) = rneb(ig,1)
    64             do l=2,14 !nlayermx      
     65            do l=2,14 !nlayer   
    6566               totalrneb(ig) = max(rneb(ig,l),totalrneb(ig))
    6667            enddo
     
    6869         elseif (recovery.eq.3) then
    6970            totalrneb(ig) = rneb(ig,1)
    70             do l=2,nlayermx      
     71            do l=2,nlayer   
    7172               totalrneb(ig) = min(rneb(ig,l),totalrneb(ig))
    7273            enddo
     
    7778         elseif (recovery.eq.5) then
    7879            totalrneb(ig) = rneb(ig,1)           
    79             do l=1,nlayermx
     80            do l=1,nlayer
    8081               masse(l)=pq(ig,l,igcm_h2o_ice)*(pplev(ig,l)-pplev(ig,l+1))
    8182            enddo
     
    8586         elseif (recovery.eq.6) then
    8687            totalrneb(ig) = 0.           
    87             do l=1,nlayermx
     88            do l=1,nlayer
    8889               masse(l)=pq(ig,l,igcm_h2o_ice)*(pplev(ig,l)-pplev(ig,l+1))
    8990               masse(l)=max(masse(l),0.)
    9091            enddo
    9192            massetot=sum(masse,dim=1)
    92             do l=1,nlayermx
     93            do l=1,nlayer
    9394               totalrneb(ig) = totalrneb(ig)+rneb(ig,l)*masse(l)/massetot
    9495            enddo
     
    9697         elseif (recovery.eq.7) then
    9798
    98             rneb2(:)=rneb(ig,1:nlayermx)
    99             tau_min=MIN(tau_c,MAXVAL(tau(ig,1:nlayermx))/2.)
    100             do l=1,nlayermx
     99            rneb2(:)=rneb(ig,1:nlayer)
     100            tau_min=MIN(tau_c,MAXVAL(tau(ig,1:nlayer))/2.)
     101            do l=1,nlayer
    101102               if(tau(ig,l)<tau_min) rneb2(l)=0.       
    102103            enddo
    103             totalrneb(ig)=maxval(rneb2(1:nlayermx))
     104            totalrneb(ig)=maxval(rneb2(1:nlayer))
    104105
    105106         endif                  ! (recovery=)   
Note: See TracChangeset for help on using the changeset viewer.