Changeset 1682 for palm/trunk/SOURCE/land_surface_model.f90
- Timestamp:
- Oct 7, 2015 11:56:08 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/land_surface_model.f90
r1591 r1682 1 MODULE land_surface_model_mod 2 1 !> @file land_surface_model.f90 3 2 !--------------------------------------------------------------------------------! 4 3 ! This file is part of PALM. … … 20 19 ! Current revisions: 21 20 ! ----------------- 22 ! 21 ! Code annotations made doxygen readable 23 22 ! 24 23 ! Former revisions: … … 65 64 ! Description: 66 65 ! ------------ 67 ! Land surface model, consisting of a solver for the energy balance at the 68 ! surface and a four layer soil scheme. The scheme is similar to the TESSEL 69 ! scheme implemented in the ECMWF IFS model, with modifications according to 70 ! H-TESSEL. The implementation is based on the formulation implemented in the 71 ! DALES and UCLA-LES models. 72 ! 73 ! To do list: 74 ! ----------- 75 ! - Check dewfall parametrization for fog simulations 76 ! - Consider partial absorption of the net shortwave radiation by the surface layer 77 ! - Allow for water surfaces, check performance for bare soils 78 ! - Invert indices (running from -3 to 0. Currently: nzb_soil=0, nzt_soil=3)) 79 ! - Implement surface runoff model (required when performing long-term LES with 80 ! considerable precipitation 81 ! 82 ! Notes: 83 ! ------ 84 ! - No time step criterion is required as long as the soil layers do not become 85 ! too thin 66 !> Land surface model, consisting of a solver for the energy balance at the 67 !> surface and a four layer soil scheme. The scheme is similar to the TESSEL 68 !> scheme implemented in the ECMWF IFS model, with modifications according to 69 !> H-TESSEL. The implementation is based on the formulation implemented in the 70 !> DALES and UCLA-LES models. 71 !> 72 !> @todo Check dewfall parametrization for fog simulations. 73 !> @todo Consider partial absorption of the net shortwave radiation by the surface layer. 74 !> @todo Allow for water surfaces, check performance for bare soils. 75 !> @todo Invert indices (running from -3 to 0. Currently: nzb_soil=0, nzt_soil=3)). 76 !> @todo Implement surface runoff model (required when performing long-term LES with 77 !> considerable precipitation. 78 !> 79 !> @note No time step criterion is required as long as the soil layers do not become 80 !> too thin. 86 81 !------------------------------------------------------------------------------! 82 MODULE land_surface_model_mod 83 87 84 USE arrays_3d, & 88 85 ONLY: pt, pt_p, q_p, qsws, rif, shf, ts, us, z0, z0h … … 116 113 ! 117 114 !-- LSM model constants 118 INTEGER(iwp), PARAMETER :: nzb_soil = 0, & ! :bottom of the soil model (to be switched)119 nzt_soil = 3, & ! :top of the soil model (to be switched)120 nzs = 4 ! :number of soil layers (fixed for now)121 122 INTEGER(iwp) :: dots_soil = 0 ! :starting index for timeseries output115 INTEGER(iwp), PARAMETER :: nzb_soil = 0, & !< bottom of the soil model (to be switched) 116 nzt_soil = 3, & !< top of the soil model (to be switched) 117 nzs = 4 !< number of soil layers (fixed for now) 118 119 INTEGER(iwp) :: dots_soil = 0 !< starting index for timeseries output 123 120 124 121 INTEGER(iwp), DIMENSION(0:1) :: id_dim_zs_xy, id_dim_zs_xz, id_dim_zs_yz, & … … 141 138 ! 142 139 !-- LSM variables 143 INTEGER(iwp) :: veg_type = 2, & ! :vegetation type, 0: user-defined, 1-19: generic (see list)144 soil_type = 3 ! :soil type, 0: user-defined, 1-6: generic (see list)145 146 LOGICAL :: conserve_water_content = .TRUE., & ! :open or closed bottom surface for the soil model147 dewfall = .TRUE., & ! :allow/inhibit dewfall148 land_surface = .FALSE. ! :flag parameter indicating wheather the lsm is used140 INTEGER(iwp) :: veg_type = 2, & !< vegetation type, 0: user-defined, 1-19: generic (see list) 141 soil_type = 3 !< soil type, 0: user-defined, 1-6: generic (see list) 142 143 LOGICAL :: conserve_water_content = .TRUE., & !< open or closed bottom surface for the soil model 144 dewfall = .TRUE., & !< allow/inhibit dewfall 145 land_surface = .FALSE. !< flag parameter indicating wheather the lsm is used 149 146 150 147 ! value 9999999.9_wp -> generic available or user-defined value must be set 151 148 ! otherwise -> no generic variable and user setting is optional 152 REAL(wp) :: alpha_vangenuchten = 9999999.9_wp, & ! :NAMELIST alpha_vg153 canopy_resistance_coefficient = 9999999.9_wp, & ! :NAMELIST g_d154 c_surface = 20000.0_wp, & ! :Surface (skin) heat capacity155 drho_l_lv, & ! :(rho_l * l_v)**-1156 exn, & ! :value of the Exner function157 e_s = 0.0_wp, & ! :saturation water vapour pressure158 field_capacity = 9999999.9_wp, & ! :NAMELIST m_fc159 f_shortwave_incoming = 9999999.9_wp, & ! :NAMELIST f_sw_in160 hydraulic_conductivity = 9999999.9_wp, & ! :NAMELIST gamma_w_sat161 ke = 0.0_wp, & ! :Kersten number162 lambda_surface_stable = 9999999.9_wp, & ! :NAMELIST lambda_surface_s163 lambda_surface_unstable = 9999999.9_wp, & ! :NAMELIST lambda_surface_u164 leaf_area_index = 9999999.9_wp, & ! :NAMELIST lai165 l_vangenuchten = 9999999.9_wp, & ! :NAMELIST l_vg166 min_canopy_resistance = 9999999.9_wp, & ! :NAMELIST r_canopy_min167 min_soil_resistance = 50.0_wp, & ! :NAMELIST r_soil_min168 m_total = 0.0_wp, & ! :weighted total water content of the soil (m3/m3)169 n_vangenuchten = 9999999.9_wp, & ! :NAMELIST n_vg170 q_s = 0.0_wp, & ! :saturation specific humidity171 residual_moisture = 9999999.9_wp, & ! :NAMELIST m_res172 rho_cp, & ! :rho_surface * cp173 rho_lv, & ! :rho * l_v174 rd_d_rv, & ! :r_d / r_v175 saturation_moisture = 9999999.9_wp, & ! :NAMELIST m_sat176 vegetation_coverage = 9999999.9_wp, & ! :NAMELIST c_veg177 wilting_point = 9999999.9_wp, & ! :NAMELIST m_wilt178 z0_eb = 9999999.9_wp, & ! :NAMELIST z0 (lsm_par)179 z0h_eb = 9999999.9_wp ! :NAMELIST z0h (lsm_par)149 REAL(wp) :: alpha_vangenuchten = 9999999.9_wp, & !< NAMELIST alpha_vg 150 canopy_resistance_coefficient = 9999999.9_wp, & !< NAMELIST g_d 151 c_surface = 20000.0_wp, & !< Surface (skin) heat capacity 152 drho_l_lv, & !< (rho_l * l_v)**-1 153 exn, & !< value of the Exner function 154 e_s = 0.0_wp, & !< saturation water vapour pressure 155 field_capacity = 9999999.9_wp, & !< NAMELIST m_fc 156 f_shortwave_incoming = 9999999.9_wp, & !< NAMELIST f_sw_in 157 hydraulic_conductivity = 9999999.9_wp, & !< NAMELIST gamma_w_sat 158 ke = 0.0_wp, & !< Kersten number 159 lambda_surface_stable = 9999999.9_wp, & !< NAMELIST lambda_surface_s 160 lambda_surface_unstable = 9999999.9_wp, & !< NAMELIST lambda_surface_u 161 leaf_area_index = 9999999.9_wp, & !< NAMELIST lai 162 l_vangenuchten = 9999999.9_wp, & !< NAMELIST l_vg 163 min_canopy_resistance = 9999999.9_wp, & !< NAMELIST r_canopy_min 164 min_soil_resistance = 50.0_wp, & !< NAMELIST r_soil_min 165 m_total = 0.0_wp, & !< weighted total water content of the soil (m3/m3) 166 n_vangenuchten = 9999999.9_wp, & !< NAMELIST n_vg 167 q_s = 0.0_wp, & !< saturation specific humidity 168 residual_moisture = 9999999.9_wp, & !< NAMELIST m_res 169 rho_cp, & !< rho_surface * cp 170 rho_lv, & !< rho * l_v 171 rd_d_rv, & !< r_d / r_v 172 saturation_moisture = 9999999.9_wp, & !< NAMELIST m_sat 173 vegetation_coverage = 9999999.9_wp, & !< NAMELIST c_veg 174 wilting_point = 9999999.9_wp, & !< NAMELIST m_wilt 175 z0_eb = 9999999.9_wp, & !< NAMELIST z0 (lsm_par) 176 z0h_eb = 9999999.9_wp !< NAMELIST z0h (lsm_par) 180 177 181 178 REAL(wp), DIMENSION(nzb_soil:nzt_soil) :: & 182 ddz_soil, & ! :1/dz_soil183 ddz_soil_stag, & ! :1/dz_soil_stag184 dz_soil, & ! :soil grid spacing (center-center)185 dz_soil_stag, & ! :soil grid spacing (edge-edge)186 root_extr = 0.0_wp, & ! :root extraction179 ddz_soil, & !< 1/dz_soil 180 ddz_soil_stag, & !< 1/dz_soil_stag 181 dz_soil, & !< soil grid spacing (center-center) 182 dz_soil_stag, & !< soil grid spacing (edge-edge) 183 root_extr = 0.0_wp, & !< root extraction 187 184 root_fraction = (/9999999.9_wp, 9999999.9_wp, & 188 9999999.9_wp, 9999999.9_wp /), & ! :distribution of root surface area to the individual soil layers189 zs = (/0.07_wp, 0.28_wp, 1.00_wp, 2.89_wp/), & ! :soil layer depths (m)190 soil_moisture = 0.0_wp ! :soil moisture content (m3/m3)185 9999999.9_wp, 9999999.9_wp /), & !< distribution of root surface area to the individual soil layers 186 zs = (/0.07_wp, 0.28_wp, 1.00_wp, 2.89_wp/), & !< soil layer depths (m) 187 soil_moisture = 0.0_wp !< soil moisture content (m3/m3) 191 188 192 189 REAL(wp), DIMENSION(nzb_soil:nzt_soil+1) :: & 193 190 soil_temperature = (/290.0_wp, 287.0_wp, 285.0_wp, 283.0_wp, & 194 283.0_wp /) ! :soil temperature (K)191 283.0_wp /) !< soil temperature (K) 195 192 196 193 #if defined( __nopointer ) 197 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_surface, & ! :surface temperature (K)198 t_surface_p, & ! :progn. surface temperature (K)199 m_liq_eb, & ! :liquid water reservoir (m)200 m_liq_eb_av, & ! :liquid water reservoir (m)201 m_liq_eb_p ! :progn. liquid water reservoir (m)194 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_surface, & !< surface temperature (K) 195 t_surface_p, & !< progn. surface temperature (K) 196 m_liq_eb, & !< liquid water reservoir (m) 197 m_liq_eb_av, & !< liquid water reservoir (m) 198 m_liq_eb_p !< progn. liquid water reservoir (m) 202 199 #else 203 200 REAL(wp), DIMENSION(:,:), POINTER :: t_surface, & … … 213 210 ! 214 211 !-- Temporal tendencies for time stepping 215 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: tt_surface_m, & ! :surface temperature tendency (K)216 tm_liq_eb_m ! :liquid water reservoir tendency (m)212 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: tt_surface_m, & !< surface temperature tendency (K) 213 tm_liq_eb_m !< liquid water reservoir tendency (m) 217 214 218 215 ! 219 216 !-- Energy balance variables 220 217 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: & 221 alpha_vg, & ! :coef. of Van Genuchten222 c_liq, & ! :liquid water coverage (of vegetated area)223 c_liq_av, & ! :average of c_liq224 c_soil_av, & ! :average of c_soil225 c_veg, & ! :vegetation coverage226 c_veg_av, & ! :average of c_veg227 f_sw_in, & ! :fraction of absorbed shortwave radiation by the surface layer (not implemented yet)228 ghf_eb, & ! :ground heat flux229 ghf_eb_av, & ! :average of ghf_eb230 gamma_w_sat, & ! :hydraulic conductivity at saturation231 g_d, & ! :coefficient for dependence of r_canopy on water vapour pressure deficit232 lai, & ! :leaf area index233 lai_av, & ! :average of lai234 lambda_h_sat, & ! :heat conductivity for dry soil235 lambda_surface_s, & ! :coupling between surface and soil (depends on vegetation type)236 lambda_surface_u, & ! :coupling between surface and soil (depends on vegetation type)237 l_vg, & ! :coef. of Van Genuchten238 m_fc, & ! :soil moisture at field capacity (m3/m3)239 m_res, & ! :residual soil moisture240 m_sat, & ! :saturation soil moisture (m3/m3)241 m_wilt, & ! :soil moisture at permanent wilting point (m3/m3)242 n_vg, & ! :coef. Van Genuchten243 qsws_eb, & ! :surface flux of latent heat (total)244 qsws_eb_av, & ! :average of qsws_eb245 qsws_liq_eb, & ! :surface flux of latent heat (liquid water portion)246 qsws_liq_eb_av, & ! :average of qsws_liq_eb247 qsws_soil_eb, & ! :surface flux of latent heat (soil portion)248 qsws_soil_eb_av, & ! :average of qsws_soil_eb249 qsws_veg_eb, & ! :surface flux of latent heat (vegetation portion)250 qsws_veg_eb_av, & ! :average of qsws_veg_eb251 rad_net_l, & ! :local copy of rad_net (net radiation at surface)252 r_a, & ! :aerodynamic resistance253 r_a_av, & ! :avergae of r_a254 r_canopy, & ! :canopy resistance255 r_soil, & ! :soil resitance256 r_soil_min, & ! :minimum soil resistance257 r_s, & ! :total surface resistance (combination of r_soil and r_canopy)258 r_s_av, & ! :avergae of r_s259 r_canopy_min, & ! :minimum canopy (stomatal) resistance260 shf_eb, & ! :surface flux of sensible heat261 shf_eb_av ! :average of shf_eb218 alpha_vg, & !< coef. of Van Genuchten 219 c_liq, & !< liquid water coverage (of vegetated area) 220 c_liq_av, & !< average of c_liq 221 c_soil_av, & !< average of c_soil 222 c_veg, & !< vegetation coverage 223 c_veg_av, & !< average of c_veg 224 f_sw_in, & !< fraction of absorbed shortwave radiation by the surface layer (not implemented yet) 225 ghf_eb, & !< ground heat flux 226 ghf_eb_av, & !< average of ghf_eb 227 gamma_w_sat, & !< hydraulic conductivity at saturation 228 g_d, & !< coefficient for dependence of r_canopy on water vapour pressure deficit 229 lai, & !< leaf area index 230 lai_av, & !< average of lai 231 lambda_h_sat, & !< heat conductivity for dry soil 232 lambda_surface_s, & !< coupling between surface and soil (depends on vegetation type) 233 lambda_surface_u, & !< coupling between surface and soil (depends on vegetation type) 234 l_vg, & !< coef. of Van Genuchten 235 m_fc, & !< soil moisture at field capacity (m3/m3) 236 m_res, & !< residual soil moisture 237 m_sat, & !< saturation soil moisture (m3/m3) 238 m_wilt, & !< soil moisture at permanent wilting point (m3/m3) 239 n_vg, & !< coef. Van Genuchten 240 qsws_eb, & !< surface flux of latent heat (total) 241 qsws_eb_av, & !< average of qsws_eb 242 qsws_liq_eb, & !< surface flux of latent heat (liquid water portion) 243 qsws_liq_eb_av, & !< average of qsws_liq_eb 244 qsws_soil_eb, & !< surface flux of latent heat (soil portion) 245 qsws_soil_eb_av, & !< average of qsws_soil_eb 246 qsws_veg_eb, & !< surface flux of latent heat (vegetation portion) 247 qsws_veg_eb_av, & !< average of qsws_veg_eb 248 rad_net_l, & !< local copy of rad_net (net radiation at surface) 249 r_a, & !< aerodynamic resistance 250 r_a_av, & !< avergae of r_a 251 r_canopy, & !< canopy resistance 252 r_soil, & !< soil resitance 253 r_soil_min, & !< minimum soil resistance 254 r_s, & !< total surface resistance (combination of r_soil and r_canopy) 255 r_s_av, & !< avergae of r_s 256 r_canopy_min, & !< minimum canopy (stomatal) resistance 257 shf_eb, & !< surface flux of sensible heat 258 shf_eb_av !< average of shf_eb 262 259 263 260 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 264 lambda_h, & ! :heat conductivity of soil (?)265 lambda_w, & ! :hydraulic diffusivity of soil (?)266 gamma_w, & ! :hydraulic conductivity of soil (?)267 rho_c_total ! :volumetric heat capacity of the actual soil matrix (?)261 lambda_h, & !< heat conductivity of soil (?) 262 lambda_w, & !< hydraulic diffusivity of soil (?) 263 gamma_w, & !< hydraulic conductivity of soil (?) 264 rho_c_total !< volumetric heat capacity of the actual soil matrix (?) 268 265 269 266 #if defined( __nopointer ) 270 267 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: & 271 t_soil, & ! :Soil temperature (K)272 t_soil_av, & ! :Average of t_soil273 t_soil_p, & ! :Prog. soil temperature (K)274 m_soil, & ! :Soil moisture (m3/m3)275 m_soil_av, & ! :Average of m_soil276 m_soil_p ! :Prog. soil moisture (m3/m3)268 t_soil, & !< Soil temperature (K) 269 t_soil_av, & !< Average of t_soil 270 t_soil_p, & !< Prog. soil temperature (K) 271 m_soil, & !< Soil moisture (m3/m3) 272 m_soil_av, & !< Average of m_soil 273 m_soil_p !< Prog. soil moisture (m3/m3) 277 274 #else 278 275 REAL(wp), DIMENSION(:,:,:), POINTER :: & … … 287 284 288 285 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 289 tt_soil_m, & ! :t_soil storage array290 tm_soil_m, & ! :m_soil storage array291 root_fr ! :root fraction (sum=1)286 tt_soil_m, & !< t_soil storage array 287 tm_soil_m, & !< m_soil storage array 288 root_fr !< root fraction (sum=1) 292 289 293 290 … … 518 515 ! Description: 519 516 ! ------------ 520 ! --Allocate land surface model arrays and define pointers517 !> Allocate land surface model arrays and define pointers 521 518 !------------------------------------------------------------------------------! 522 519 SUBROUTINE init_lsm_arrays … … 601 598 ! Description: 602 599 ! ------------ 603 ! --Initialization of the land surface model600 !> Initialization of the land surface model 604 601 !------------------------------------------------------------------------------! 605 602 SUBROUTINE init_lsm … … 608 605 IMPLICIT NONE 609 606 610 INTEGER(iwp) :: i ! :running index611 INTEGER(iwp) :: j ! :running index612 INTEGER(iwp) :: k ! :running index607 INTEGER(iwp) :: i !< running index 608 INTEGER(iwp) :: j !< running index 609 INTEGER(iwp) :: k !< running index 613 610 614 611 … … 920 917 ! Description: 921 918 ! ------------ 922 ! Solver for the energy balance at the surface. 923 ! 924 ! Note: surface fluxes are calculated in the land surface model, but these are 925 ! not used in the atmospheric code. The fluxes are calculated afterwards in 926 ! prandtl_fluxes using the surface values of temperature and humidity as 927 ! provided by the land surface model. In this way, the fluxes in the land 928 ! surface model are not equal to the ones calculated in prandtl_fluxes 919 !> Solver for the energy balance at the surface. 920 !> @note Surface fluxes are calculated in the land surface model, but these are 921 !> not used in the atmospheric code. The fluxes are calculated afterwards in 922 !> prandtl_fluxes using the surface values of temperature and humidity as 923 !> provided by the land surface model. In this way, the fluxes in the land 924 !> surface model are not equal to the ones calculated in prandtl_fluxes 929 925 !------------------------------------------------------------------------------! 930 926 SUBROUTINE lsm_energy_balance … … 933 929 IMPLICIT NONE 934 930 935 INTEGER(iwp) :: i ! :running index936 INTEGER(iwp) :: j ! :running index937 INTEGER(iwp) :: k, ks ! :running index938 939 REAL(wp) :: f1, & ! :resistance correction term 1940 f2, & ! :resistance correction term 2941 f3, & ! :resistance correction term 3942 m_min, & ! :minimum soil moisture943 T_1, & ! :actual temperature at first grid point944 e, & ! :water vapour pressure945 e_s, & ! :water vapour saturation pressure946 e_s_dt, & ! :derivate of e_s with respect to T947 tend, & ! :tendency948 dq_s_dt, & ! :derivate of q_s with respect to T949 coef_1, & ! :coef. for prognostic equation950 coef_2, & ! :coef. for prognostic equation951 f_qsws, & ! :factor for qsws_eb952 f_qsws_veg, & ! :factor for qsws_veg_eb953 f_qsws_soil, & ! :factor for qsws_soil_eb954 f_qsws_liq, & ! :factor for qsws_liq_eb955 f_shf, & ! :factor for shf_eb956 lambda_surface, & ! :Current value of lambda_surface957 m_liq_eb_max ! :maxmimum value of the liq. water reservoir931 INTEGER(iwp) :: i !< running index 932 INTEGER(iwp) :: j !< running index 933 INTEGER(iwp) :: k, ks !< running index 934 935 REAL(wp) :: f1, & !< resistance correction term 1 936 f2, & !< resistance correction term 2 937 f3, & !< resistance correction term 3 938 m_min, & !< minimum soil moisture 939 T_1, & !< actual temperature at first grid point 940 e, & !< water vapour pressure 941 e_s, & !< water vapour saturation pressure 942 e_s_dt, & !< derivate of e_s with respect to T 943 tend, & !< tendency 944 dq_s_dt, & !< derivate of q_s with respect to T 945 coef_1, & !< coef. for prognostic equation 946 coef_2, & !< coef. for prognostic equation 947 f_qsws, & !< factor for qsws_eb 948 f_qsws_veg, & !< factor for qsws_veg_eb 949 f_qsws_soil, & !< factor for qsws_soil_eb 950 f_qsws_liq, & !< factor for qsws_liq_eb 951 f_shf, & !< factor for shf_eb 952 lambda_surface, & !< Current value of lambda_surface 953 m_liq_eb_max !< maxmimum value of the liq. water reservoir 958 954 959 955 … … 1308 1304 ! Description: 1309 1305 ! ------------ 1310 ! 1311 ! Soil model as part of the land surface model. The model predicts soil 1312 ! temperature and water content. 1306 !> Soil model as part of the land surface model. The model predicts soil 1307 !> temperature and water content. 1313 1308 !------------------------------------------------------------------------------! 1314 1309 SUBROUTINE lsm_soil_model … … 1317 1312 IMPLICIT NONE 1318 1313 1319 INTEGER(iwp) :: i ! :running index1320 INTEGER(iwp) :: j ! :running index1321 INTEGER(iwp) :: k ! :running index1322 1323 REAL(wp) :: h_vg ! :Van Genuchten coef. h1324 1325 REAL(wp), DIMENSION(nzb_soil:nzt_soil) :: gamma_temp, & ! :temp. gamma1326 lambda_temp, & ! :temp. lambda1327 tend ! :tendency1314 INTEGER(iwp) :: i !< running index 1315 INTEGER(iwp) :: j !< running index 1316 INTEGER(iwp) :: k !< running index 1317 1318 REAL(wp) :: h_vg !< Van Genuchten coef. h 1319 1320 REAL(wp), DIMENSION(nzb_soil:nzt_soil) :: gamma_temp, & !< temp. gamma 1321 lambda_temp, & !< temp. lambda 1322 tend !< tendency 1328 1323 1329 1324 DO i = nxlg, nxrg … … 1564 1559 ! Description: 1565 1560 ! ------------ 1566 ! Calculation of specific humidity of the surface layer (surface)1561 !> Calculation of specific humidity of the surface layer (surface) 1567 1562 !------------------------------------------------------------------------------! 1568 1563 SUBROUTINE calc_q_surface … … 1570 1565 IMPLICIT NONE 1571 1566 1572 INTEGER :: i ! :running index1573 INTEGER :: j ! :running index1574 INTEGER :: k ! :running index1575 REAL(wp) :: resistance ! :aerodynamic and soil resistance term1567 INTEGER :: i !< running index 1568 INTEGER :: j !< running index 1569 INTEGER :: k !< running index 1570 REAL(wp) :: resistance !< aerodynamic and soil resistance term 1576 1571 1577 1572 DO i = nxlg, nxrg … … 1605 1600 ! Description: 1606 1601 ! ------------ 1607 ! Swapping of timelevels1602 !> Swapping of timelevels 1608 1603 !------------------------------------------------------------------------------! 1609 1604 SUBROUTINE lsm_swap_timelevel ( mod_count )
Note: See TracChangeset
for help on using the changeset viewer.