20                                    forcet, forceq, cactiv, cactiv_m, conv_act, conv_act_m,         &
 
   21                                    rrfs_sd, ntsmoke, ntdust, ntcoarsepm, chem3d, gq0,              &
 
   24      use machine, 
only: kind_phys
 
   28      logical,          
intent(in)  :: flag_init
 
   29      logical,          
intent(in)  :: flag_restart
 
   30      logical,          
intent(in)  :: rrfs_sd
 
   31      integer,          
intent(in)  :: kdt
 
   32      real(kind_phys),  
intent(in)  :: fhour
 
   33      real(kind_phys),  
intent(in)  :: dtp
 
   34      real(kind_phys),  
intent(in)  :: t(:,:)
 
   35      real(kind_phys),  
intent(in)  :: q(:,:)
 
   36      real(kind_phys),  
intent(in),    
optional :: prevst(:,:)
 
   37      real(kind_phys),  
intent(in),    
optional :: prevsq(:,:)
 
   39      real(kind_phys),  
intent(out),   
optional :: forcet(:,:)
 
   40      real(kind_phys),  
intent(out),   
optional :: forceq(:,:)
 
   41      integer,          
intent(out),   
optional :: cactiv(:)
 
   42      integer,          
intent(out),   
optional :: cactiv_m(:)
 
   43      integer,          
intent(in)  :: ntsmoke, ntdust, ntcoarsepm
 
   45      real(kind_phys),  
intent(in),    
optional :: conv_act(:)
 
   46      real(kind_phys),  
intent(in),    
optional :: conv_act_m(:)
 
   47      real(kind_phys),  
intent(inout), 
optional :: chem3d(:,:,:)
 
   48      real(kind_phys),  
intent(inout) :: gq0(:,:,:)
 
   50      character(len=*), 
intent(out) :: errmsg
 
   51      integer,          
intent(out) :: errflg
 
   54      real(kind=kind_phys) :: dtdyn
 
   63      if(flag_init .and. .not.flag_restart) 
then 
   69        dtdyn=3600.0*(fhour)/kdt
 
   72          forcet(:,:)=(t(:,:) - prevst(:,:))/dtp
 
   73          forceq(:,:)=(q(:,:) - prevsq(:,:))/dtp
 
   77          forcet(:,:)=(t(:,:) - prevst(:,:))/dtdyn
 
   78          forceq(:,:)=(q(:,:) - prevsq(:,:))/dtdyn
 
   84      cactiv(:)=nint(conv_act(:))
 
   85      cactiv_m(:)=nint(conv_act_m(:))
 
   88       chem3d(:,:,1) = gq0(:,:,ntsmoke)
 
   89       chem3d(:,:,2) = gq0(:,:,ntdust)
 
   90       chem3d(:,:,3) = gq0(:,:,ntcoarsepm)
 
 
subroutine, public cu_gf_driver_pre_run(flag_init, flag_restart, kdt, fhour, dtp, t, q, prevst, prevsq, forcet, forceq, cactiv, cactiv_m, conv_act, conv_act_m, rrfs_sd, ntsmoke, ntdust, ntcoarsepm, chem3d, gq0, errmsg, errflg)