diff --git a/srcF/sfx_config.f90 b/srcF/sfx_config.f90
index 37006392c33de03254dded73654e8cab5bd814f8..b2a26202b9e09e683f3d73ce471d8b5bb80cbcc7 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_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
diff --git a/srcF/sfx_esm.f90 b/srcF/sfx_esm.f90
index f696c5fee0b55dccc70c037117161f883bba1fa2..b26813ec836688529a2dc55a05cd3d9da46d451a 100644
--- a/srcF/sfx_esm.f90
+++ b/srcF/sfx_esm.f90
@@ -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
diff --git a/srcF/sfx_log.f90 b/srcF/sfx_log.f90
index 8131c5ca960aa99cf88fe3925225d3e24cbc8ed8..6a51cf302b7c094316578dfa07f1541f689873eb 100644
--- a/srcF/sfx_log.f90
+++ b/srcF/sfx_log.f90
@@ -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
         
diff --git a/srcF/sfx_most.f90 b/srcF/sfx_most.f90
index 97cf97c0c45ae7bb066f864a5db6736995de6f30..968693eec0fe9c9bebbee1b6dc5f36e3610e7c28 100644
--- a/srcF/sfx_most.f90
+++ b/srcF/sfx_most.f90
@@ -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
 
diff --git a/srcF/sfx_most_snow.f90 b/srcF/sfx_most_snow.f90
index 6bae4bacea7b83f9c3fdf2c579d4b4549d28d603..cc7d250c6e5938fea6f1423d55893a7ae79d8ee9 100644
--- a/srcF/sfx_most_snow.f90
+++ b/srcF/sfx_most_snow.f90
@@ -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
         
diff --git a/srcF/sfx_sheba.f90 b/srcF/sfx_sheba.f90
index 4e51cb8497d802c6b72368ef47e0b5b228f727ff..ad61fd94f10ca07683d9e6251dc5adebd75650ad 100644
--- a/srcF/sfx_sheba.f90
+++ b/srcF/sfx_sheba.f90
@@ -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
         
diff --git a/srcF/sfx_surface.f90 b/srcF/sfx_surface.f90
index 7e0b659cb1023a864dd1e18a5fb734d51b431b6f..8f4ebe64f9a9b336499f3d419dfce0640efb98c5 100644
--- a/srcF/sfx_surface.f90
+++ b/srcF/sfx_surface.f90
@@ -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