File: C:\NOAA\NEMS_11731\src\atmos\gfs\phys\d3d_def.f

1           module d3d_def
2           use machine
3           implicit none
4     !
5           REAL(KIND=KIND_RAD) ,ALLOCATABLE :: DT3DT(:,:,:,:,:)
6           REAL(KIND=KIND_RAD) ,ALLOCATABLE :: DQ3DT(:,:,:,:,:)
7           REAL(KIND=KIND_RAD) ,ALLOCATABLE :: DU3DT(:,:,:,:,:)
8           REAL(KIND=KIND_RAD) ,ALLOCATABLE :: DV3DT(:,:,:,:,:)
9           REAL(KIND=KIND_RAD) ,ALLOCATABLE :: upd_mf(:,:,:,:)
10          &,                                   dwn_mf(:,:,:,:)
11          &,                                   det_mf(:,:,:,:)
12          &,                                   dkh(:,:,:,:)
13          &,                                   rnp(:,:,:,:)
14           REAL(KIND=KIND_RAD) ,ALLOCATABLE :: CLDCOV(:,:,:)
15     !
16           contains
17     !
18           subroutine d3d_init(ngptc,nblck,lonr,lats_node_r,levs,pl_coeff,
19          &                    ldiag3d,lggfs3d)
20           implicit none
21           integer ngptc,nblck,lonr,lats_node_r,levs,pl_coeff
22           logical ldiag3d, lggfs3d
23     !
24           if (ldiag3d) then
25             allocate (DT3DT(NGPTC,LEVS,6,NBLCK,lats_node_r))
26             allocate (DU3DT(NGPTC,LEVS,4,NBLCK,lats_node_r))
27             allocate (DV3DT(NGPTC,LEVS,4,NBLCK,lats_node_r))
28      !    else
29      !      allocate (DT3DT(1,1,6,NBLCK,lats_node_r))
30      !      allocate (DU3DT(1,1,4,NBLCK,lats_node_r))
31      !      allocate (DV3DT(1,1,4,NBLCK,lats_node_r))
32           endif
33           if (ldiag3d .or. lggfs3d) then
34             allocate (DQ3DT(NGPTC,LEVS,5+pl_coeff,NBLCK,lats_node_r))
35             allocate (CLDCOV(LEVS,LONR,lats_node_r))
36             allocate (upd_mf(NGPTC,LEVS,NBLCK,lats_node_r))
37             allocate (dwn_mf(NGPTC,LEVS,NBLCK,lats_node_r))
38             allocate (det_mf(NGPTC,LEVS,NBLCK,lats_node_r))
39      !    else
40      !      allocate (DQ3DT(1,1,5+pl_coeff,NBLCK,lats_node_r))
41      !      allocate (CLDCOV(1,1,lats_node_r))
42      !      allocate (upd_mf(1,1,NBLCK,lats_node_r))
43      !      allocate (dwn_mf(1,1,NBLCK,lats_node_r))
44      !      allocate (det_mf(1,1,NBLCK,lats_node_r))
45           endif
46           if (lggfs3d) then
47             allocate (dkh(NGPTC,LEVS,NBLCK,lats_node_r))
48             allocate (rnp(NGPTC,LEVS,NBLCK,lats_node_r))
49      !    else
50      !      allocate (dkh(1,1,NBLCK,lats_node_r))
51      !      allocate (rnp(1,1,NBLCK,lats_node_r))
52           endif
53     
54     !
55           end subroutine d3d_init
56     !
57           subroutine d3d_zero(ldiag3d,lggfs3d)
58           implicit none
59           logical ldiag3d, lggfs3d
60           real, parameter :: zero=0.0
61     !
62            if (ldiag3d) then
63              DT3DT  = zero
64              DU3DT  = zero
65              DV3DT  = zero
66            endif
67            if (ldiag3d .or. lggfs3d) then
68              DQ3DT  = zero
69              CLDCOV = zero
70              upd_mf = zero
71              dwn_mf = zero
72              det_mf = zero
73            endif
74            if (lggfs3d) then
75              dkh    = zero
76              rnp    = zero
77            endif
78     !
79           end subroutine d3d_zero
80           end module d3d_def
81