







module cldwat

















   use shr_kind_mod,  only: r8 => shr_kind_r8




   use wv_saturation, only: estblf, hlatv, tmin, hlatf, rgasv, pcf, &
                            cp, epsqs, ttrice




   use module_cam_support, only: masterproc, &
        pcols, pver, pverp, &
        endrun, &
        iulog


   implicit none




   private
   save



   public cldwat_fice          
   public cldwat_readnl
   integer, public::  ktop      




   real(r8),public :: icritw = 2.0e-4
   real(r8),public :: icritc = 45.0e-6
   real(r8),public :: conke  = 5.0e-6





   real(r8), private:: tmax_fice
   real(r8), private:: tmin_fice
   real(r8), private:: tmax_fsnow 
   real(r8), private:: tmin_fsnow 
   real(r8), private:: rhonot   
   real(r8), private:: t0       
   real(r8), private:: cldmin   
   real(r8), private:: small    
   real(r8), private:: c        
   real(r8), private:: d        
   real(r8), private:: esi      
   real(r8), private:: esw      
   real(r8), private:: nos      
   real(r8), private:: pi       
   real(r8), private:: gravit   
   real(r8), private:: rh2o
   real(r8), private:: prhonos
   real(r8), private:: thrpd    
   real(r8), private:: gam3pd   
   real(r8), private:: gam4pd   
   real(r8), private:: rhoi     
   real(r8), private:: rhos     
   real(r8), private:: rhow     
   real(r8), private:: mcon01   
   real(r8), private:: mcon02   
   real(r8), private:: mcon03   
   real(r8), private:: mcon04   
   real(r8), private:: mcon05   
   real(r8), private:: mcon06   
   real(r8), private:: mcon07   
   real(r8), private:: mcon08   

   integer, private ::  k1mb    


   real(r8) :: capnsi               
   real(r8) :: capnc                
   real(r8) :: capnw                
   real(r8) :: kconst               
   real(r8) :: effc                 
   real(r8) :: alpha                
   real(r8) :: capc                 
   real(r8) :: convfw               
   real(r8) :: cracw                
   real(r8) :: critpr               
   real(r8) :: ciautb               

  
  real(r8), parameter :: unset_r8 = huge(1.0_r8)

contains

  subroutine cldwat_readnl(nlfile)

   character(len=*), intent(in) :: nlfile  
end subroutine cldwat_readnl


  subroutine cldwat_fice(ncol, t, fice, fsnow)








    use physconst,          only: tmelt
    implicit none


    integer,  intent(in)  :: ncol                 
    real(r8), intent(in)  :: t(pcols,pver)        

    real(r8), intent(out) :: fice(pcols,pver)     
    real(r8), intent(out) :: fsnow(pcols,pver)    


    integer :: i,k                                   



    
    
    tmax_fice = tmelt    - 10._r8
    tmin_fice = tmax_fice - 30._r8
    tmax_fsnow = tmelt
    tmin_fsnow = tmelt   - 5._r8

    

    do k=1,pver
       do i=1,ncol


          if (t(i,k) > tmax_fice) then
             fice(i,k) = 0.0_r8


          else if (t(i,k) < tmin_fice) then
             fice(i,k) = 1.0_r8


          else 
             fice(i,k) =(tmax_fice - t(i,k)) / (tmax_fice - tmin_fice)
          end if




          if (t(i,k) > tmax_fsnow) then
             fsnow(i,k) = 0.0_r8


          else if (t(i,k) < tmin_fsnow) then
             fsnow(i,k) = 1.0_r8


          else 
             fsnow(i,k) =(tmax_fsnow - t(i,k)) / (tmax_fsnow - tmin_fsnow)
          end if

       end do
    end do

    return
  end subroutine cldwat_fice
end module cldwat
