SCALE-RM
scale_land_sfc.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
10 !-------------------------------------------------------------------------------
12  !-----------------------------------------------------------------------------
13  !
14  !++ used modules
15  !
16  use scale_precision
17  use scale_stdio
19  !-----------------------------------------------------------------------------
20  implicit none
21  private
22  !-----------------------------------------------------------------------------
23  !
24  !++ Public procedure
25  !
26  public :: land_sfc_setup
27 
28  abstract interface
29  subroutine lndsfc( &
30  LST_t, &
31  ZMFLX, &
32  XMFLX, &
33  YMFLX, &
34  SHFLX, &
35  LHFLX, &
36  GHFLX, &
37  U10, &
38  V10, &
39  T2, &
40  Q2, &
41  TMPA, &
42  PRSA, &
43  WA, &
44  UA, &
45  VA, &
46  RHOA, &
47  QVA, &
48  Z1, &
49  PBL, &
50  PRSS, &
51  LWD, &
52  SWD, &
53  TG, &
54  LST, &
55  QVEF, &
56  ALB_LW, &
57  ALB_SW, &
58  DZG, &
59  TCS, &
60  Z0M, &
61  Z0H, &
62  Z0E, &
63  dt )
64  use scale_precision
66  implicit none
67 
68  real(RP), intent(out) :: LST_t(IA,JA) ! tendency of LST
69  real(RP), intent(out) :: ZMFLX(IA,JA) ! z-momentum flux at the surface [kg/m/s2]
70  real(RP), intent(out) :: XMFLX(IA,JA) ! x-momentum flux at the surface [kg/m/s2]
71  real(RP), intent(out) :: YMFLX(IA,JA) ! y-momentum flux at the surface [kg/m/s2]
72  real(RP), intent(out) :: SHFLX(IA,JA) ! sensible heat flux at the surface [J/m2/s]
73  real(RP), intent(out) :: LHFLX(IA,JA) ! latent heat flux at the surface [J/m2/s]
74  real(RP), intent(out) :: GHFLX(IA,JA) ! ground heat flux at the surface [J/m2/s]
75  real(RP), intent(out) :: U10 (IA,JA) ! velocity u at 10m [m/s]
76  real(RP), intent(out) :: V10 (IA,JA) ! velocity v at 10m [m/s]
77  real(RP), intent(out) :: T2 (IA,JA) ! temperature at 2m [K]
78  real(RP), intent(out) :: Q2 (IA,JA) ! water vapor at 2m [kg/kg]
79 
80  real(RP), intent(in) :: TMPA(IA,JA) ! temperature at the lowest atmospheric layer [K]
81  real(RP), intent(in) :: PRSA(IA,JA) ! pressure at the lowest atmospheric layer [Pa]
82  real(RP), intent(in) :: WA (IA,JA) ! velocity w at the lowest atmospheric layer [m/s]
83  real(RP), intent(in) :: UA (IA,JA) ! velocity u at the lowest atmospheric layer [m/s]
84  real(RP), intent(in) :: VA (IA,JA) ! velocity v at the lowest atmospheric layer [m/s]
85  real(RP), intent(in) :: RHOA(IA,JA) ! density at the lowest atmospheric layer [kg/m3]
86  real(RP), intent(in) :: QVA (IA,JA) ! ratio of water vapor mass to total mass at the lowest atmospheric layer [kg/kg]
87  real(RP), intent(in) :: Z1 (IA,JA) ! cell center height at the lowest atmospheric layer [m]
88  real(RP), intent(in) :: PBL (IA,JA) ! the top of atmospheric mixing layer [m]
89  real(RP), intent(in) :: PRSS(IA,JA) ! pressure at the surface [Pa]
90  real(RP), intent(in) :: LWD (IA,JA) ! downward long-wave radiation flux at the surface (upward positive) [J/m2/s]
91  real(RP), intent(in) :: SWD (IA,JA) ! downward short-wave radiation flux at the surface (upward positive) [J/m2/s]
92 
93  real(RP), intent(in) :: TG (IA,JA) ! soil temperature [K]
94  real(RP), intent(in) :: LST (IA,JA) ! land surface temperature [K]
95  real(RP), intent(in) :: QVEF (IA,JA) ! efficiency of evaporation (0-1)
96  real(RP), intent(in) :: ALB_LW(IA,JA) ! surface albedo for LW (0-1)
97  real(RP), intent(in) :: ALB_SW(IA,JA) ! surface albedo for SW (0-1)
98  real(RP), intent(in) :: DZG (IA,JA) ! soil depth [m]
99  real(RP), intent(in) :: TCS (IA,JA) ! thermal conductivity for soil [J/m/K/s]
100  real(RP), intent(in) :: Z0M (IA,JA) ! roughness length for momemtum [m]
101  real(RP), intent(in) :: Z0H (IA,JA) ! roughness length for heat [m]
102  real(RP), intent(in) :: Z0E (IA,JA) ! roughness length for vapor [m]
103  real(DP), intent(in) :: dt ! delta time
104  end subroutine lndsfc
105  end interface
106  procedure(lndsfc), pointer :: land_sfc => null()
107  public :: land_sfc
108 
109  !-----------------------------------------------------------------------------
110  !
111  !++ Public parameters & variables
112  !
113  !-----------------------------------------------------------------------------
114  !
115  !++ Private procedure
116  !
117  !-----------------------------------------------------------------------------
118  !
119  !++ Private parameters & variables
120  !
121  !-----------------------------------------------------------------------------
122 contains
123 
124  subroutine land_sfc_setup( LAND_TYPE )
125  use scale_process, only: &
127  use scale_land_sfc_const, only: &
130  use scale_land_sfc_thin_slab, only: &
133  use scale_land_sfc_thick_slab, only: &
136  implicit none
137 
138  character(len=*), intent(in) :: land_type
139  !---------------------------------------------------------------------------
140 
141  select case( land_type )
142  case( 'CONST' )
143  call land_sfc_const_setup( land_type )
145  case( 'SLAB', 'THIN-SLAB' )
146  call land_sfc_thin_slab_setup( land_type )
148  case( 'THICK-SLAB' )
149  call land_sfc_thick_slab_setup( land_type )
151  end select
152 
153  return
154  end subroutine land_sfc_setup
155 
156 end module scale_land_sfc
subroutine, public land_sfc_thick_slab_setup(LAND_TYPE)
Setup.
module LAND / Surface fluxes with thin-slab land model
subroutine, public prc_mpistop
Abort MPI.
subroutine, public land_sfc_thick_slab(LST_t, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, GHFLX, U10, V10, T2, Q2, TMPA, PRSA, WA, UA, VA, RHOA, QVA, Z1, PBL, PRSS, LWD, SWD, TG, LST, QVEF, ALB_LW, ALB_SW, DZG, TCS, Z0M, Z0H, Z0E, dt)
module STDIO
Definition: scale_stdio.F90:12
module grid index
subroutine, public land_sfc_thin_slab_setup(LAND_TYPE)
Setup.
subroutine, public land_sfc_thin_slab(LST_t, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, GHFLX, U10, V10, T2, Q2, TMPA, PRSA, WA, UA, VA, RHOA, QVA, Z1, PBL, PRSS, LWD, SWD, TG, LST, QVEF, ALB_LW, ALB_SW, DZG, TCS, Z0M, Z0H, Z0E, dt)
module PROCESS
module LAND / Surface fluxes
subroutine, public land_sfc_setup(LAND_TYPE)
subroutine, public land_sfc_const(LST_t, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, GHFLX, U10, V10, T2, Q2, TMPA, PRSA, WA, UA, VA, RHOA, QVA, Z1, PBL, PRSS, LWD, SWD, TG, LST, QVEF, ALB_LW, ALB_SW, DZG, TCS, Z0M, Z0H, Z0E, dt_DP)
procedure(lndsfc), pointer, public land_sfc
module PRECISION
module LAND / Surface fluxes with thick-slab land model
subroutine, public land_sfc_const_setup(LAND_TYPE)
Setup.
module LAND / Surface fluxes with constant land model