19 subroutine cu_gf_driver_pre_run (flag_init, flag_restart, gf_coldstart, kdt, fhour, dtp, t, q, prevst, prevsq, &
20 forcet, forceq, cactiv, cactiv_m, conv_act, conv_act_m, &
21 ntsmoke, ntdust, ntcoarsepm, chem3d, gq0, errmsg, errflg)
23 use machine,
only: kind_phys
27 logical,
intent(in) :: flag_init
28 logical,
intent(in) :: flag_restart
29 logical,
intent(in) :: gf_coldstart
30 integer,
intent(in) :: kdt
31 real(kind_phys),
intent(in) :: fhour
32 real(kind_phys),
intent(in) :: dtp
33 real(kind_phys),
intent(in) :: t(:,:)
34 real(kind_phys),
intent(in) :: q(:,:)
35 real(kind_phys),
intent(in) :: prevst(:,:)
36 real(kind_phys),
intent(in) :: prevsq(:,:)
38 real(kind_phys),
intent(out) :: forcet(:,:)
39 real(kind_phys),
intent(out) :: forceq(:,:)
40 integer,
intent(out) :: cactiv(:)
41 integer,
intent(out) :: cactiv_m(:)
42 integer,
intent(in) :: ntsmoke, ntdust, ntcoarsepm
44 real(kind_phys),
intent(in) :: conv_act(:)
45 real(kind_phys),
intent(in) :: conv_act_m(:)
46 real(kind_phys),
intent(inout),
optional :: chem3d(:,:,:)
47 real(kind_phys),
intent(inout) :: gq0(:,:,:)
49 character(len=*),
intent(out) :: errmsg
50 integer,
intent(out) :: errflg
53 real(kind=kind_phys) :: dtdyn
62 if((flag_init .and. .not.flag_restart) .or. gf_coldstart)
then
68 dtdyn=3600.0*(fhour)/kdt
71 forcet(:,:)=(t(:,:) - prevst(:,:))/dtp
72 forceq(:,:)=(q(:,:) - prevsq(:,:))/dtp
76 forcet(:,:)=(t(:,:) - prevst(:,:))/dtdyn
77 forceq(:,:)=(q(:,:) - prevsq(:,:))/dtdyn
83 cactiv(:)=nint(conv_act(:))
84 cactiv_m(:)=nint(conv_act_m(:))
86 if (
present(chem3d))
then
87 chem3d(:,:,1) = gq0(:,:,ntsmoke)
88 chem3d(:,:,2) = gq0(:,:,ntdust)
89 chem3d(:,:,3) = gq0(:,:,ntcoarsepm)
subroutine, public cu_gf_driver_pre_run(flag_init, flag_restart, gf_coldstart, kdt, fhour, dtp, t, q, prevst, prevsq, forcet, forceq, cactiv, cactiv_m, conv_act, conv_act_m, ntsmoke, ntdust, ntcoarsepm, chem3d, gq0, errmsg, errflg)