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)