1 SUBROUTINE olwc ( KIDIA,KFDIA,KLON,KLEV &
 
    2      &  , pbint,pbsuin,pcldld,pcldlu,pcntrb,pemis,pfdn,pfup &
 
  105 integer_m :: ikcp1, ikm1, ikp1, imaxc, imxm1, imxp1, jcloud,&
 
  106              &jk, jk1, jk2, jkj, jl, imx1, imx2, jkc, jkcp1, jkm1, jkp1
 
  131     IF (pcldlu(jl,jk).GT.
repclc) 
THEN 
  136     imaxc=max(imxp(jl),imaxc)
 
  146     pflux(jl,1,jk) = pfup(jl,jk)
 
  147     pflux(jl,2,jk) = pfdn(jl,jk)
 
  167         zupf(jl,jk2,jk1)=pfup(jl,jk1)
 
  168         zdnf(jl,jk2,jk1)=pfdn(jl,jk1)
 
  188       IF (jk .GT. jkcp1) 
THEN 
  191             zfu(jl) = zfu(jl) + pcntrb(jl,jk,jkj)
 
  197         zupf(jl,jkcp1,jk)=pbint(jl,jk)-zfu(jl)
 
  210       IF (jk .LT. jcloud) 
THEN 
  213             zfd(jl) = zfd(jl) + pcntrb(jl,jk,jkj)
 
  218         zdnf(jl,jkcp1,jk)=-pbint(jl,jk)-zfd(jl)
 
  234         zclm(jl,jk1,jk2) = 0.
 
  249     DO jk = jk1 - 1 , 1 , -1
 
  253           zclear(jl)=zclear(jl)*(1.0-max(pcldlu(jl,jk),zcloud(jl))) &
 
  254           &                       /(1.0-min(zcloud(jl),1.-
repclc))
 
  255           zclm(jl,jk1,jk) = 1.0 - zclear(jl)
 
  256           zcloud(jl) = pcldlu(jl,jk)
 
  257         ELSE IF (
novlp.EQ.2) 
THEN  
  259           zcloud(jl) = max(zcloud(jl) , pcldlu(jl,jk))
 
  260           zclm(jl,jk1,jk) = zcloud(jl)
 
  261         ELSE IF (
novlp.EQ.3) 
THEN 
  263           zclear(jl) = zclear(jl)*(1.0 - pcldlu(jl,jk))
 
  264           zcloud(jl) = 1.0 - zclear(jl)
 
  265           zclm(jl,jk1,jk) = zcloud(jl)
 
  284            zclear(jl)=zclear(jl)*(1.0-max(pcldld(jl,jk),zcloud(jl))) &
 
  285            &                    /(1.0-min(zcloud(jl),1.-
repclc))
 
  286            zclm(jl,jk1,jk) = 1.0 - zclear(jl)
 
  287            zcloud(jl) = pcldld(jl,jk)
 
  288          ELSE IF (
novlp.EQ.2) 
THEN  
  290            zcloud(jl) = max(zcloud(jl) , pcldld(jl,jk))
 
  291            zclm(jl,jk1,jk) = zcloud(jl)
 
  292          ELSE IF (
novlp.EQ.3) 
THEN 
  294            zclear(jl) = zclear(jl)*(1.0 - pcldld(jl,jk))
 
  295            zcloud(jl) = 1.0 - zclear(jl)
 
  296            zclm(jl,jk1,jk) = zcloud(jl)
 
  311     pflux(jl,2,
klev+1) = 0.
 
  314   DO jk1 = 
klev , 1 , -1
 
  319       zfd(jl) = (1. - zclm(jl,jk1,
klev)) * zdnf(jl,1,jk1)
 
  323       zfd(jl) = zfd(jl) + zclm(jl,jk1,jk1) * zdnf(jl,jk1+1,jk1)
 
  328     DO jk = 
klev-1 , jk1 , -1
 
  330         zcfrac = zclm(jl,jk1,jk+1) - zclm(jl,jk1,jk)
 
  331         zfd(jl) =  zfd(jl) + zcfrac * zdnf(jl,jk+2,jk1)
 
  336       pflux(jl,2,jk1) = zfd(jl)
 
  348     pflux(jl,1,1) = pemis(jl)*pbsuin(jl)-(1.-pemis(jl))*pflux(jl,2,1)
 
  361       zfu(jl) = (1. - zclm(jl,jk1,1)) * zupf(jl,1,jk1)
 
  365       zfu(jl) =  zfu(jl) + zclm(jl,jk1,jk1-1) * zupf(jl,jk1,jk1)
 
  372         zcfrac = zclm(jl,jk1,jk-1) - zclm(jl,jk1,jk)
 
  373         zfu(jl) =  zfu(jl) + zcfrac * zupf(jl,jk  ,jk1)
 
  378       pflux(jl,1,jk1) = zfu(jl)
 
subroutine olwc(KIDIA, KFDIA, KLON, KLEV, PBINT, PBSUIN, PCLDLD, PCLDLU, PCNTRB, PEMIS, PFDN, PFUP, PFLUX)