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

added ice surface type

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