SCALE-RM
scale_urban_phy.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
11 !-------------------------------------------------------------------------------
13  !-----------------------------------------------------------------------------
14  !
15  !++ used modules
16  !
17  use scale_precision
18  use scale_stdio
21  !-----------------------------------------------------------------------------
22  implicit none
23  private
24  !-----------------------------------------------------------------------------
25  !
26  !++ Public procedure
27  !
28  public :: urban_phy_setup
29 
30  abstract interface
31  subroutine urb( &
32  TR_URB_t, &
33  TB_URB_t, &
34  TG_URB_t, &
35  TC_URB_t, &
36  QC_URB_t, &
37  UC_URB_t, &
38  TRL_URB_t, &
39  TBL_URB_t, &
40  TGL_URB_t, &
41  RAINR_URB_t, &
42  RAINB_URB_t, &
43  RAING_URB_t, &
44  ROFF_URB_t, &
45  SFC_TEMP, &
46  ALBD_LW, &
47  ALBD_SW, &
48  MWFLX, &
49  MUFLX, &
50  MVFLX, &
51  SHFLX, &
52  LHFLX, &
53  GHFLX, &
54  Z0M, &
55  Z0H, &
56  Z0E, &
57  U10, &
58  V10, &
59  T2, &
60  Q2, &
61  TMPA, &
62  PRES, &
63  W1, &
64  U1, &
65  V1, &
66  DENS, &
67  QA, &
68  Z1, &
69  PBL, &
70  PRSS, &
71  LWD, &
72  SWD, &
73  PREC, &
74  TR_URB, &
75  TB_URB, &
76  TG_URB, &
77  TC_URB, &
78  QC_URB, &
79  UC_URB, &
80  TRL_URB, &
81  TBL_URB, &
82  TGL_URB, &
83  RAINR_URB, &
84  RAINB_URB, &
85  RAING_URB, &
86  ROFF_URB, &
87  LON, &
88  LAT, &
89  NOWDATE, &
90  dt )
91  use scale_precision
94  implicit none
95 
96  real(RP), intent(out) :: TR_URB_t (IA,JA)
97  real(RP), intent(out) :: TB_URB_t (IA,JA)
98  real(RP), intent(out) :: TG_URB_t (IA,JA)
99  real(RP), intent(out) :: TC_URB_t (IA,JA)
100  real(RP), intent(out) :: QC_URB_t (IA,JA)
101  real(RP), intent(out) :: UC_URB_t (IA,JA)
102  real(RP), intent(out) :: TRL_URB_t (UKS:UKE,IA,JA)
103  real(RP), intent(out) :: TBL_URB_t (UKS:UKE,IA,JA)
104  real(RP), intent(out) :: TGL_URB_t (UKS:UKE,IA,JA)
105  real(RP), intent(out) :: RAINR_URB_t(IA,JA)
106  real(RP), intent(out) :: RAINB_URB_t(IA,JA)
107  real(RP), intent(out) :: RAING_URB_t(IA,JA)
108  real(RP), intent(out) :: ROFF_URB_t (IA,JA)
109 
110  real(RP), intent(out) :: SFC_TEMP(IA,JA)
111  real(RP), intent(out) :: ALBD_LW (IA,JA)
112  real(RP), intent(out) :: ALBD_SW (IA,JA)
113  real(RP), intent(out) :: MWFLX (IA,JA)
114  real(RP), intent(out) :: MUFLX (IA,JA)
115  real(RP), intent(out) :: MVFLX (IA,JA)
116  real(RP), intent(out) :: SHFLX (IA,JA)
117  real(RP), intent(out) :: LHFLX (IA,JA)
118  real(RP), intent(out) :: GHFLX (IA,JA)
119  real(RP), intent(out) :: Z0M (IA,JA)
120  real(RP), intent(out) :: Z0H (IA,JA)
121  real(RP), intent(out) :: Z0E (IA,JA)
122  real(RP), intent(out) :: U10 (IA,JA)
123  real(RP), intent(out) :: V10 (IA,JA)
124  real(RP), intent(out) :: T2 (IA,JA)
125  real(RP), intent(out) :: Q2 (IA,JA)
126 
127  real(RP), intent(in) :: TMPA (IA,JA)
128  real(RP), intent(in) :: PRES (IA,JA)
129  real(RP), intent(in) :: W1 (IA,JA)
130  real(RP), intent(in) :: U1 (IA,JA)
131  real(RP), intent(in) :: V1 (IA,JA)
132  real(RP), intent(in) :: DENS (IA,JA)
133  real(RP), intent(in) :: QA (IA,JA)
134  real(RP), intent(in) :: Z1 (IA,JA)
135  real(RP), intent(in) :: PBL (IA,JA)
136  real(RP), intent(in) :: PRSS (IA,JA)
137  real(RP), intent(in) :: LWD (IA,JA,2)
138  real(RP), intent(in) :: SWD (IA,JA,2)
139  real(RP), intent(in) :: PREC (IA,JA)
140 
141  real(RP), intent(in) :: TR_URB (IA,JA)
142  real(RP), intent(in) :: TB_URB (IA,JA)
143  real(RP), intent(in) :: TG_URB (IA,JA)
144  real(RP), intent(in) :: TC_URB (IA,JA)
145  real(RP), intent(in) :: QC_URB (IA,JA)
146  real(RP), intent(in) :: UC_URB (IA,JA)
147  real(RP), intent(in) :: TRL_URB (UKS:UKE,IA,JA)
148  real(RP), intent(in) :: TBL_URB (UKS:UKE,IA,JA)
149  real(RP), intent(in) :: TGL_URB (UKS:UKE,IA,JA)
150  real(RP), intent(in) :: RAINR_URB(IA,JA)
151  real(RP), intent(in) :: RAINB_URB(IA,JA)
152  real(RP), intent(in) :: RAING_URB(IA,JA)
153  real(RP), intent(in) :: ROFF_URB (IA,JA)
154 
155  real(RP), intent(in) :: LON
156  real(RP), intent(in) :: LAT
157  integer, intent(in) :: NOWDATE(6)
158  real(DP), intent(in) :: dt
159  end subroutine urb
160  end interface
161  procedure(urb), pointer :: urban_phy => null()
162  public :: urban_phy
163 
164  !-----------------------------------------------------------------------------
165  !
166  !++ Public parameters & variables
167  !
168  !-----------------------------------------------------------------------------
169  !
170  !++ Private procedure
171  !
172  !-----------------------------------------------------------------------------
173  !
174  !++ Private parameters & variables
175  !
176  !-----------------------------------------------------------------------------
177 contains
178 
179  subroutine urban_phy_setup( &
180  URBAN_TYPE, &
181  Z0M, &
182  Z0H, &
183  Z0E )
184  use scale_process, only: &
186  use scale_urban_phy_slc, only: &
189  implicit none
190 
191  character(len=*), intent(in) :: urban_type
192  real(RP), intent(out) :: z0m(ia,ja)
193  real(RP), intent(out) :: z0h(ia,ja)
194  real(RP), intent(out) :: z0e(ia,ja)
195  !---------------------------------------------------------------------------
196 
197  select case( urban_type )
198  case( 'SLC' )
199  call urban_phy_slc_setup( urban_type, & ! (in)
200  z0m, z0h, z0e ) ! (out)
202  case default
203  write(*,*) 'xxx invalid Urban type(', trim(urban_type), '). CHECK!'
204  call prc_mpistop
205  end select
206 
207  return
208  end subroutine urban_phy_setup
209 
210 end module scale_urban_phy
subroutine, public prc_mpistop
Abort MPI.
module URBAN / Physics
module STDIO
Definition: scale_stdio.F90:12
procedure(urb), pointer, public urban_phy
module grid index
integer, public ia
of whole cells: x, local, with HALO
subroutine, public urban_phy_slc_setup(URBAN_TYPE, Z0M, Z0H, Z0E)
Setup.
module URBAN / Surface fluxes with Single-layer Canpoy Model
module PROCESS
subroutine, public urban_phy_slc(TR_URB_t, TB_URB_t, TG_URB_t, TC_URB_t, QC_URB_t, UC_URB_t, TRL_URB_t, TBL_URB_t, TGL_URB_t, RAINR_URB_t, RAINB_URB_t, RAING_URB_t, ROFF_URB_t, SFC_TEMP, ALBD_LW, ALBD_SW, MWFLX, MUFLX, MVFLX, SHFLX, LHFLX, GHFLX, Z0M, Z0H, Z0E, U10, V10, T2, Q2, TMPA, PRSA, W1, U1, V1, DENS, QA, Z1, PBL, PRSS, LWD, SWD, PREC, TR_URB, TB_URB, TG_URB, TC_URB, QC_URB, UC_URB, TRL_URB, TBL_URB, TGL_URB, RAINR_URB, RAINB_URB, RAING_URB, ROFF_URB, LON, LAT, NOWDATE, dt)
Main routine for land submodel.
module PRECISION
subroutine, public urban_phy_setup(URBAN_TYPE, Z0M, Z0H, Z0E)
module urban grid index
integer, public ja
of whole cells: y, local, with HALO