diff --git a/srcF/sfx_config.f90 b/srcF/sfx_config.f90 index b679e597548b90a9caa63882b3b8b13c2c164255..37006392c33de03254dded73654e8cab5bd814f8 100644 --- a/srcF/sfx_config.f90 +++ b/srcF/sfx_config.f90 @@ -167,8 +167,8 @@ contains dataset%filename = get_dataset_filename(id) dataset%nmax = 0 - dataset%surface = surface_land - dataset%surface_type = surface_land + dataset%surface = surface_lake + dataset%surface_type = surface_lake dataset%z0_h = -1.0 dataset%lai = 1.0 dataset%depth = 10.0 diff --git a/srcF/sfx_surface.f90 b/srcF/sfx_surface.f90 index b20c202da61f3d1713dcda4601859943904dc268..ced62f49d5a3fea48c3e175d54cd31365c654d2d 100644 --- a/srcF/sfx_surface.f90 +++ b/srcF/sfx_surface.f90 @@ -98,7 +98,7 @@ module sfx_surface integer, public, parameter :: ocean_z0t_id = z0t_kl_water !< ocean surface integer, public, parameter :: land_z0t_id = z0t_kl_land !< land surface - integer, public, parameter :: lake_z0t_id = z0t_re !< lake surface + integer, public, parameter :: lake_z0t_id = z0t_br !< lake surface integer, public, parameter :: snow_z0t_id = z0t_kl_land !< snow covered surface integer, public, parameter :: forest_z0t_id = z0t_du !< forest csurface integer, public, parameter :: usersf_z0t_id = z0t_mix !< user surface diff --git a/srcF/sfx_z0m_all_surface.f90 b/srcF/sfx_z0m_all_surface.f90 index e0a224b48ff5595d7cc93bee99d2506b8c8b9b42..4d6f2edea2d7cd0a67b9a5db64ec2c9ceacd5646 100644 --- a/srcF/sfx_z0m_all_surface.f90 +++ b/srcF/sfx_z0m_all_surface.f90 @@ -200,7 +200,7 @@ subroutine get_dynamic_roughness_map(z0_m, u_dyn0, U, h, z0m_map) z0_m=z0m_map h0_m = h / z0_m u_dyn0 = U * kappa / log(h0_m) - write(*,*) z0_m, 'map' + end subroutine ! -------------------------------------------------------------------------------- diff --git a/srcF/sfx_z0t_all_surface.f90 b/srcF/sfx_z0t_all_surface.f90 index 9ab7ecc15071fe9114eb17fe4063f1a79e501f5b..72fc0528b6c9a835328b0b7197c80d0529583df3 100644 --- a/srcF/sfx_z0t_all_surface.f90 +++ b/srcF/sfx_z0t_all_surface.f90 @@ -266,19 +266,26 @@ module sfx_z0t_all_surface real, intent(in) :: z0_m !< aerodynamic roughness [m] real, intent(in) :: Re !< roughness Reynolds number [n/d] - - + + real Re1, Re_min + + Re_min =0.75 + Re1=max(Re, Re_min) - z0_t = z0_m*(-0.56*(4.0*(Re)**(0.5)-3.4)) - + z0_t = z0_m*(-0.56*(4.0*(Re1)**(0.5)-3.4)) + if (z0_t<0) z0_t = z0_m*0.9 + if (z0_m>z0_t) then B=alog(z0_m/z0_t) - + else + z0_t = z0_m*0.9 + B=alog(z0_m/z0_t) + end if ! --- define roughness [thermal] !z0_t = z0_m / exp(B) - !write(*,*) z0_t, B, Re, 're' + !write(*,*) z0_m, z0_t, B, Re1, 're' end subroutine