CCPP SciDoc v7.0.0  v7.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
GFS_suite_interstitial_1.F90
1
4
6
7 contains
8
12 subroutine gfs_suite_interstitial_1_run (im, levs, ntrac, dtf, dtp, slmsk, area, dxmin, dxinv, pgr, &
13 islmsk, work1, work2, psurf, dudt, dvdt, dtdt, dqdt, errmsg, errflg)
14
15 use machine, only: kind_phys
16
17 implicit none
18
19 ! interface variables
20 integer, intent(in ) :: im, levs, ntrac
21 real(kind=kind_phys), intent(in ) :: dtf, dtp, dxmin, dxinv
22 real(kind=kind_phys), intent(in ), dimension(:) :: slmsk, area, pgr
23
24 integer, intent(out), dimension(:) :: islmsk
25 real(kind=kind_phys), intent(out), dimension(:) :: work1, work2, psurf
26 real(kind=kind_phys), intent(out), dimension(:,:) :: dudt, dvdt, dtdt
27 real(kind=kind_phys), intent(out), dimension(:,:,:) :: dqdt
28
29 character(len=*), intent(out) :: errmsg
30 integer, intent(out) :: errflg
31
32 ! local variables
33 real(kind=kind_phys), parameter :: zero = 0.0_kind_phys, one = 1.0_kind_phys
34 integer :: i, k, n
35
36 ! Initialize CCPP error handling variables
37 errmsg = ''
38 errflg = 0
39
40 do i = 1, im
41 islmsk(i) = nint(slmsk(i))
42
43 work1(i) = (log(area(i)) - dxmin) * dxinv
44 work1(i) = max(zero, min(one, work1(i)))
45 work2(i) = one - work1(i)
46 psurf(i) = pgr(i)
47 end do
48
49 do k=1,levs
50 do i=1,im
51 dudt(i,k) = zero
52 dvdt(i,k) = zero
53 dtdt(i,k) = zero
54 enddo
55 enddo
56 do n=1,ntrac
57 do k=1,levs
58 do i=1,im
59 dqdt(i,k,n) = zero
60 enddo
61 enddo
62 enddo
63
64 end subroutine gfs_suite_interstitial_1_run
65