11 subroutine gfs_scnv_generic_pre_run (im, levs, ldiag3d, qdiag3d, gu0, gv0, gt0, gq0, &
12 save_u, save_v, save_t, save_q, ntqv, nsamftrac, flag_for_scnv_generic_tend, &
13 dtidx, index_of_process_scnv, ntcw,ntiw,ntclamt,ntrw,ntsw,ntrnc,ntsnc,ntgl,ntgnc, &
14 ntsigma, cscnv, satmedmf, trans_trac, ras, ntrac, clw, errmsg, errflg)
20 integer,
intent(in) :: im, levs, ntqv, nsamftrac, index_of_process_scnv, dtidx(:,:)
21 integer,
intent(in) :: ntcw,ntiw,ntclamt,ntrw,ntsw,ntrnc,ntsnc,ntgl,ntgnc, ntsigma,ntrac
22 logical,
intent(in) :: ldiag3d, qdiag3d, flag_for_scnv_generic_tend
23 real(kind=kind_phys),
dimension(:,:),
intent(in) :: gu0, gv0, gt0
24 real(kind=kind_phys),
dimension(:,:,:),
intent(in) :: gq0
25 real(kind=kind_phys),
dimension(:,:,:),
intent(inout) :: save_q
26 real(kind=kind_phys),
dimension(:,:),
intent(inout) :: save_u, save_v, save_t
27 character(len=*),
intent(out) :: errmsg
28 integer,
intent(out) :: errflg
29 logical,
intent(in) :: cscnv, satmedmf, trans_trac, ras
30 real(kind=kind_phys),
dimension(:,:,:),
intent(in) :: clw
32 integer :: i, k, n, tracers
38 if (ldiag3d .and. flag_for_scnv_generic_tend)
then
41 save_u(i,k) = gu0(i,k)
42 save_v(i,k) = gv0(i,k)
43 save_t(i,k) = gt0(i,k)
47 if (cscnv .or. satmedmf .or. trans_trac .or. ras)
then
50 if ( n /= ntcw .and. n /= ntiw .and. n /= ntclamt .and. &
51 n /= ntrw .and. n /= ntsw .and. n /= ntrnc .and. &
52 n /= ntsnc .and. n /= ntgl .and. n /= ntgnc .and. n /= ntsigma)
then
54 if(dtidx(100+n,index_of_process_scnv)>0)
then
55 save_q(:,:,n) = clw(:,:,tracers)
61 if(dtidx(100+n,index_of_process_scnv)>0)
then
62 save_q(:,:,n) = gq0(:,:,n)
66 save_q(:,:,ntqv) = gq0(:,:,ntqv)