Skip to content
Snippets Groups Projects
Commit 53ad7eb5 authored by Виктория Суязова's avatar Виктория Суязова Committed by Anna Shestakova
Browse files

added ice surface type

parent 11b664e2
No related branches found
No related tags found
No related merge requests found
......@@ -167,8 +167,8 @@ contains
dataset%filename = get_dataset_filename(id)
dataset%nmax = 0
dataset%surface = surface_lake
dataset%surface_type = surface_lake
dataset%surface = surface_ice
dataset%surface_type = surface_ice
dataset%z0_h = -1.0
dataset%lai = 1.0
dataset%depth = 10.0
......
......@@ -243,13 +243,13 @@ contains
!write (*,*) surface_type, 'esm'
call get_dynamic_roughness_definition(surface_type, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
forest_z0m_id, usersf_z0m_id, z0m_id)
forest_z0m_id, usersf_z0m_id, ice_z0m_id, z0m_id)
call get_dynamic_roughness_all(z0_m, u_dyn0, U, depth, h, numerics%maxiters_charnock, z0_m1, z0m_id)
call get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t_id, lake_z0t_id, snow_z0t_id, &
forest_z0t_id, usersf_z0t_id, z0t_id)
forest_z0t_id, usersf_z0t_id, ice_z0t_id, z0t_id)
Re = u_dyn0 * z0_m / nu_air
......
......@@ -148,12 +148,12 @@ contains
call get_dynamic_roughness_definition(surface_type, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
forest_z0m_id, usersf_z0m_id, z0m_id)
forest_z0m_id, usersf_z0m_id, ice_z0m_id, z0m_id)
call get_dynamic_roughness_all(z0_m, u_dyn0, U, depth, h, numerics%maxiters_charnock, z0_m, z0m_id)
call get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t_id, lake_z0t_id, snow_z0t_id, &
forest_z0t_id, usersf_z0t_id, z0t_id)
forest_z0t_id, usersf_z0t_id, ice_z0t_id, z0t_id)
Re = u_dyn0 * z0_m / nu_air
......
......@@ -150,12 +150,12 @@ contains
surface_type=meteo%surface_type
call get_dynamic_roughness_definition(surface_type, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
forest_z0m_id, usersf_z0m_id, z0m_id)
forest_z0m_id, usersf_z0m_id, ice_z0m_id, z0m_id)
call get_dynamic_roughness_all(z0_m, u_dyn0, U, depth, h, numerics%maxiters_charnock, z0_m1, z0m_id)
call get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t_id, lake_z0t_id, snow_z0t_id, &
forest_z0t_id, usersf_z0t_id, z0t_id)
forest_z0t_id, usersf_z0t_id, ice_z0t_id, z0t_id)
Re = u_dyn0 * z0_m / nu_air
......
......@@ -166,12 +166,12 @@ contains
call get_dynamic_roughness_definition(surface_type, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
forest_z0m_id, usersf_z0m_id, z0m_id)
forest_z0m_id, usersf_z0m_id, ice_z0m_id, z0m_id)
call get_dynamic_roughness_all(z0_m, u_dyn0, U, depth, h, numerics%maxiters_charnock, z0_m1, z0m_id)
call get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t_id, lake_z0t_id, snow_z0t_id, &
forest_z0t_id, usersf_z0t_id, z0t_id)
forest_z0t_id, usersf_z0t_id, ice_z0t_id, z0t_id)
Re = u_dyn0 * z0_m / nu_air
......
......@@ -232,12 +232,12 @@ contains
surface_type=meteo%surface_type
call get_dynamic_roughness_definition(surface_type, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
forest_z0m_id, usersf_z0m_id, z0m_id)
forest_z0m_id, usersf_z0m_id, ice_z0m_id, z0m_id)
call get_dynamic_roughness_all(z0_m, u_dyn0, U, depth, h, numerics%maxiters_charnock, z0_m, z0m_id)
call get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t_id, lake_z0t_id, snow_z0t_id, &
forest_z0t_id, usersf_z0t_id, z0t_id)
forest_z0t_id, usersf_z0t_id, ice_z0t_id, z0t_id)
Re = u_dyn0 * z0_m / nu_air
......
......@@ -34,8 +34,9 @@ module sfx_surface
integer, public, parameter :: surface_land = 1 !< land surface
integer, public, parameter :: surface_lake = 2 !< lake surface
integer, public, parameter :: surface_snow = 3 !< snow covered surface
integer, public, parameter :: surface_forest = 4 !< snow covered surface
integer, public, parameter :: surface_user = 5 !< snow covered surface
integer, public, parameter :: surface_forest = 4 !< forest covered surface
integer, public, parameter :: surface_user = 5 !< coast covered surface
integer, public, parameter :: surface_ice = 6 !< ice covered surface
character(len = 16), parameter :: surface_ocean_tag = 'ocean'
character(len = 16), parameter :: surface_land_tag = 'land'
......@@ -43,6 +44,7 @@ module sfx_surface
character(len = 16), parameter :: surface_snow_tag = 'snow'
character(len = 16), parameter :: surface_forest_tag = 'forest'
character(len = 16), parameter :: surface_user_tag = 'user'
character(len = 16), parameter :: surface_ice_tag = 'ice'
integer, public, parameter :: z0m_ch = 0
......@@ -92,9 +94,11 @@ module sfx_surface
integer, public, parameter :: ocean_z0m_id = z0m_ch !< ocean surface
integer, public, parameter :: land_z0m_id = z0m_map_id !< land surface
integer, public, parameter :: lake_z0m_id = z0m_fe !< lake surface
integer, public, parameter :: snow_z0m_id = z0m_ow !< snow covered surface
integer, public, parameter :: snow_z0m_id = z0m_map_id !< snow covered surface
integer, public, parameter :: forest_z0m_id = z0m_map_id !< forest csurface
integer, public, parameter :: usersf_z0m_id = z0m_ch !< user surface
integer, public, parameter :: ice_z0m_id = z0m_ch !< ice surface
integer, public, parameter :: ocean_z0t_id = z0t_kl_water !< ocean surface
integer, public, parameter :: land_z0t_id = z0t_mix !< land surface
......@@ -102,6 +106,7 @@ module sfx_surface
integer, public, parameter :: snow_z0t_id = z0t_zi !< snow covered surface
integer, public, parameter :: forest_z0t_id = z0t_ot !< forest csurface
integer, public, parameter :: usersf_z0t_id = z0t_kl_water !< user surface
integer, public, parameter :: ice_z0t_id = z0t_zi !< user surface
! --------------------------------------------------------------------------------
real, parameter, private :: kappa = 0.40 !< von Karman constant [n/d]
......@@ -158,6 +163,8 @@ contains
id = surface_forest
else if (trim(tag) == trim(surface_user_tag)) then
id = surface_user
else if (trim(tag) == trim(surface_ice_tag)) then
id = surface_ice
end if
end function
......@@ -180,6 +187,8 @@ contains
tag = surface_forest_tag
else if (id == surface_user) then
tag = surface_user_tag
else if (id == surface_ice) then
tag = surface_ice_tag
end if
end function
......@@ -322,7 +331,7 @@ contains
! dynamic roughness definition
! --------------------------------------------------------------------------------
subroutine get_dynamic_roughness_definition(surface_type, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
forest_z0m_id, usersf_z0m_id, z0m_id)
forest_z0m_id, usersf_z0m_id, ice_z0m_id, z0m_id)
! ----------------------------------------------------------------------------
integer, intent(out) :: z0m_id
......@@ -334,7 +343,7 @@ contains
integer, intent(in) :: snow_z0m_id
integer, intent(in) :: forest_z0m_id
integer, intent(in) :: usersf_z0m_id
integer, intent(in) :: ice_z0m_id
! ---------------------------------------------------------------------------
if (surface_type == surface_ocean) then
......@@ -349,6 +358,8 @@ contains
z0m_id = forest_z0m_id
else if (surface_type == surface_user) then
z0m_id = usersf_z0m_id
else if (surface_type == surface_ice) then
z0m_id = ice_z0m_id
end if
!write (*,*) z0m_id, surface_type
end subroutine
......@@ -390,7 +401,7 @@ end subroutine
! thermal roughness definition
! --------------------------------------------------------------------------------
subroutine get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t_id, lake_z0t_id, snow_z0t_id, &
forest_z0t_id, usersf_z0t_id, z0t_id)
forest_z0t_id, usersf_z0t_id, ice_z0t_id, z0t_id)
! ----------------------------------------------------------------------------
integer, intent(out) :: z0t_id
......@@ -402,6 +413,7 @@ subroutine get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t
integer, intent(in) :: snow_z0t_id
integer, intent(in) :: forest_z0t_id
integer, intent(in) :: usersf_z0t_id
integer, intent(in) :: ice_z0t_id
! ---------------------------------------------------------------------------
......@@ -417,6 +429,8 @@ subroutine get_thermal_roughness_definition(surface_type, ocean_z0t_id, land_z0t
z0t_id = forest_z0t_id
else if (surface_type == surface_user) then
z0t_id = usersf_z0t_id
else if (surface_type == surface_ice) then
z0t_id = ice_z0t_id
end if
end subroutine
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment