diff --git a/GNUmakefile b/GNUmakefile
index bb36ba89a07beb3cb840eb1de03be565181372be..25f6de276f47d7c0e41152ac6e4f102b3ccefc46 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -15,6 +15,8 @@ src_test_get_snapshot = test_get_snapshot.f get_snapshot.f dispatch_snapshot.f w
 
 src_test_set_all_outerm = test_set_all_outerm.f derived_types.f set_all_outerm.f local_extrema.f get_1_outerm.f good_contour.f spherical_polygon_area.f
 
+src_test_weight = test_weight.f weight.f derived_types.f
+
 sources := $(shell cat ${makefile_dir}/file_list)
 
 lib_list = contour_531 numer_rec_95 shapelib_03 netcdf95 geometry jumble netcdff fortrangis shp fortranc nr_util
@@ -26,9 +28,10 @@ obj_test_get_1_outerm := $(src_test_get_1_outerm:.f=.o)
 obj_test_set_max_speed := $(src_test_set_max_speed:.f=.o)
 obj_test_get_snapshot := $(src_test_get_snapshot:.f=.o)
 obj_test_set_all_outerm := $(src_test_set_all_outerm:.f=.o)
+obj_test_weight := $(src_test_weight:.f=.o)
 objects := $(sources:.f=.o)
 
-execut = test_good_contour test_inside_4 test_get_1_outerm test_local_extrema test_max_speed_contour_ssh test_mean_speed test_set_max_speed test_get_snapshot test_set_all_outerm
+execut = test_good_contour test_inside_4 test_get_1_outerm test_local_extrema test_max_speed_contour_ssh test_mean_speed test_set_max_speed test_get_snapshot test_set_all_outerm test_weight
 
 # 3. Compiler-dependent part
 
@@ -57,6 +60,7 @@ test_local_extrema: ${obj_test_local_extrema}
 test_mean_speed: mean_speed.o
 test_get_snapshot: ${obj_test_get_snapshot}
 test_set_all_outerm: ${obj_test_set_all_outerm}
+test_weight: ${obj_test_weight}
 
 depend ${makefile_dir}/depend.mk:
 	makedepf90 -free -Wmissing -Wconfused $(addprefix -I, ${VPATH}) -nosrc $(addprefix -u , ${lib_list} shapelib netcdf intrinsic) ${sources} >${makefile_dir}/depend.mk
diff --git a/Tests/test_get_1_outerm.f b/Tests/test_get_1_outerm.f
index ae3a1aaf1f0224b7ddb2640693b64727be0ce45a..2adec74419b6ce2a8943e966a22807ad494f4107 100644
--- a/Tests/test_get_1_outerm.f
+++ b/Tests/test_get_1_outerm.f
@@ -10,7 +10,7 @@ program test_get_1_outerm
   use get_1_outerm_m, only: get_1_outerm
   use shapelib, only: shpt_polygon, shpfileobject, ftdouble, shpclose
   use shapelib_03, only: shp_create_03, dbf_add_field_03, &
-       shp_append_simple_object_03, dbf_write_attribute_03
+       shp_append_object_03, dbf_write_attribute_03
 
   implicit none
 
@@ -83,7 +83,7 @@ program test_get_1_outerm
      call shp_create_03("test_get_1_outerm", shpt_polygon, shphandle)
      call dbf_add_field_03(field_number, shphandle, 'level', ftdouble, &
           nwidth = 13, ndecimals = 6)
-     call shp_append_simple_object_03(shape_number, shphandle, shpt_polygon, &
+     call shp_append_object_03(shape_number, shphandle, shpt_polygon, &
           outermost_contour%points / pi * 180.)
      call dbf_write_attribute_03(shphandle, shape_number, ifield = 0, &
           fieldvalue = outermost_contour%ssh)
diff --git a/Tests/test_good_contour.f b/Tests/test_good_contour.f
index a42c65b750b960825f8bc405726238f745132b7d..02d8b3861a6354bf963f1cdd45eae1398fdbc307 100644
--- a/Tests/test_good_contour.f
+++ b/Tests/test_good_contour.f
@@ -9,7 +9,7 @@ program test_good_contour
   use nr_util, only: assert
   use shapelib, only: shpt_polygon, shpfileobject, ftdouble, shpclose
   use shapelib_03, only: shp_create_03, dbf_add_field_03, &
-       shp_append_simple_object_03, dbf_write_attribute_03
+       shp_append_object_03, dbf_write_attribute_03
 
   implicit none
 
@@ -75,8 +75,7 @@ program test_good_contour
      call shp_create_03("test_good_contour", shpt_polygon, shphandle)
      call dbf_add_field_03(field_number, shphandle, 'level', ftdouble, &
           nwidth = 13, ndecimals = 6)
-     call shp_append_simple_object_03(shape_number, shphandle, shpt_polygon, &
-          c%points)
+     call shp_append_object_03(shape_number, shphandle, shpt_polygon, c%points)
      call dbf_write_attribute_03(shphandle, shape_number, ifield = 0, &
           fieldvalue = level)
      CALL shpclose(shphandle)
diff --git a/Tests/test_set_all_outerm.f b/Tests/test_set_all_outerm.f
index b38f8a5cf23356ce512edf7757c0e5b8aac9326e..3804111785455a75daeaebbd5c9a63d0e5fb9457 100644
--- a/Tests/test_set_all_outerm.f
+++ b/Tests/test_set_all_outerm.f
@@ -11,7 +11,7 @@ program test_set_all_outerm
   use shapelib, only: shpt_point, shpt_polygon, shpfileobject, ftdouble, &
        shpclose, ftinteger
   use shapelib_03, only: shp_create_03, dbf_add_field_03, shp_append_point_03, &
-       dbf_write_attribute_03, shp_append_null_03, shp_append_simple_object_03
+       dbf_write_attribute_03, shp_append_null_03, shp_append_object_03
 
   implicit none
 
@@ -135,8 +135,7 @@ program test_set_all_outerm
         if (s%list_vis(i)%outermost_contour%n_points == 0) then
            call shp_append_null_03(ishape, hshp_outermost)
         else
-           call shp_append_simple_object_03(ishape, hshp_outermost, &
-                shpt_polygon, &
+           call shp_append_object_03(ishape, hshp_outermost, shpt_polygon, &
                 s%list_vis(i)%outermost_contour%points * rad_over_deg)
         end if
      end if
diff --git a/Tests/test_set_max_speed.f b/Tests/test_set_max_speed.f
index 956b16e229d6ecbcd0f54fde793cb08de27727c0..b82560bb8be6dc80cdeaf7369be046db0c40b1ff 100644
--- a/Tests/test_set_max_speed.f
+++ b/Tests/test_set_max_speed.f
@@ -12,7 +12,7 @@ program test_set_max_speed
   use shapelib, only: shpt_polygon, shpfileobject, ftdouble, shpclose, &
        shpobject, dbfreadattribute
   use shapelib_03, only: shp_open_03, shp_create_03, dbf_add_field_03, &
-       shp_append_simple_object_03, dbf_write_attribute_03, shp_read_object_03
+       shp_append_object_03, dbf_write_attribute_03, shp_read_object_03
 
   implicit none
 
@@ -112,7 +112,7 @@ program test_set_max_speed
   call dbf_add_field_03(ifield, hshp, 'speed', ftdouble, nwidth = 20, &
        ndecimals = 6)
 
-  call shp_append_simple_object_03(ishape, hshp, shpt_polygon, &
+  call shp_append_object_03(ishape, hshp, shpt_polygon, &
        e%max_speed_contour%points * rad_over_deg)
   call dbf_write_attribute_03(hshp, ishape, 0, e%max_speed_contour%ssh)
   call dbf_write_attribute_03(hshp, ishape, 1, e%max_speed_contour%area)
diff --git a/Tests/test_weight.f b/Tests/test_weight.f
new file mode 100644
index 0000000000000000000000000000000000000000..8ae642aa07f4a3858cb211fa0a4acf4a5c40d5cb
--- /dev/null
+++ b/Tests/test_weight.f
@@ -0,0 +1,24 @@
+program test_weight
+
+  use derived_types, only: eddy
+  use nr_util, only: pi
+  use weight_m, only: weight
+
+  implicit none
+
+  real, parameter:: deg_over_rad = pi / 180.
+  type(eddy) e1, e2
+
+  !---------------------------------------------------------------------
+
+  e1%max_speed = 0.15
+  e1%max_speed_contour%area = pi * 5e4**2
+  e1%coord_extr(2) = - 20. * deg_over_rad
+
+  e2%max_speed = 0.1
+  e2%max_speed_contour%area = pi * 6e4**2
+  e2%coord_extr(2) = - 25. * deg_over_rad
+  
+  print *, "weight = ", weight(e1, e2)
+  
+end program test_weight
diff --git a/Tests/tests.json b/Tests/tests.json
index a8958fb1412d781fa904ecd5e67be0acf21f2508..284b5f87e3cc84080421d5ac7e7f1fc3c094b322 100644
--- a/Tests/tests.json
+++ b/Tests/tests.json
@@ -185,5 +185,6 @@
 		     ["$input_dir/2006_01/uv_region_5.nc", "uv.nc"]],
 	"input": "1e-3\n",
 	"description": "Same as Get_snapshot_region_4 with larger domain."
-    }
+    },
+    {"args": "$compil_prod_dir/test_weight", "title": "Weight"}
 ]
diff --git a/depend.mk b/depend.mk
index cd0d446148c481de8ce75084a2a6cb6a66bb40f4..ffea460e81a66f0e1ea3471815572235829d355c 100644
--- a/depend.mk
+++ b/depend.mk
@@ -15,3 +15,5 @@ test_set_all_outerm.o : set_all_outerm.o derived_types.o
 test_set_max_speed.o : set_max_speed.o derived_types.o 
 test_get_1_outerm.o : get_1_outerm.o derived_types.o 
 write_eddy.o : derived_types.o 
+weight.o : derived_types.o 
+test_weight.o : weight.o derived_types.o 
diff --git a/derived_types.f b/derived_types.f
index 3ed5b5b584f4fcaf2a3813f7aa494b0baf828a0d..4f705e1f1dd1e430cadd523e9ea209907b7f9109 100644
--- a/derived_types.f
+++ b/derived_types.f
@@ -16,7 +16,7 @@ module derived_types
      real ssh_extremum ! in m
      logical cyclone
      type(ssh_contour) outermost_contour, max_speed_contour
-     real max_speed ! average on max_speed_contour, in m s-1
+     real max_speed ! average of azimuthal speed on max_speed_contour, in m s-1
      logical suff_amp ! outermost_contour found and sufficient
                       ! amplitude of ssh between extremum and
                       ! outermost contour
diff --git a/file_list b/file_list
index 73904baf99023dcbf10e1e62da5074354dbc8b65..5dde0340feff08d0168d67dd4d43a1a2f5f3b476 100644
--- a/file_list
+++ b/file_list
@@ -23,3 +23,5 @@ test_set_all_outerm.f
 test_set_max_speed.f
 test_get_1_outerm.f
 write_eddy.f
+weight.f
+test_weight.f
diff --git a/weight.f b/weight.f
new file mode 100644
index 0000000000000000000000000000000000000000..d7a5719548bc67a0f54372c6fc4ca2e37c097bc6
--- /dev/null
+++ b/weight.f
@@ -0,0 +1,46 @@
+module weight_m
+
+  implicit none
+
+  private rossby_number
+
+contains
+
+  pure real function weight(e1, e2)
+
+    ! Computes the weight of an edge.
+
+    use derived_types, only: eddy
+
+    type(eddy), intent(in):: e1, e2
+
+    !--------------------------------------------------------
+
+    weight = abs(rossby_number(e2) - rossby_number(e1))
+
+  end function weight
+
+  !****************************************************
+
+  pure real function rossby_number(e)
+
+    ! Computes the Rossby number for the maximum-speed contour.
+
+    use derived_types, only: eddy
+    use nr_util, only: pi
+
+    type(eddy), intent(in):: e
+
+    ! Local:
+
+    real, parameter:: omega = 2 * pi / 86164.
+    ! angular speed of rotation of the Earth, in rad s-1
+    
+    !----------------------------------------------------------
+
+    rossby_number = abs(e%max_speed / (sqrt(e%max_speed_contour%area / pi) &
+         * 2. * omega * sin(e%coord_extr(2))))
+
+  end function rossby_number
+
+end module weight_m
diff --git a/write_eddy.f b/write_eddy.f
index ef3ea1a8e7d53c96e6a332792d88bac209ebd580..c329d63768c3927017f546c304b5fe56ae377d97 100644
--- a/write_eddy.f
+++ b/write_eddy.f
@@ -10,7 +10,7 @@ contains
     use nr_util, only: pi
     use shapelib, only: shpfileobject, shpt_polygon
     use shapelib_03, only: shp_append_point_03, dbf_write_attribute_03, &
-         shp_append_simple_object_03, shp_append_null_03
+         shp_append_object_03, shp_append_null_03
     
     type(eddy), intent(in):: e
     integer, intent(in):: k ! date index
@@ -54,15 +54,15 @@ contains
        if (e%outermost_contour%n_points == 0) then
           call shp_append_null_03(ishape, hshp_outermost)
        else
-          call shp_append_simple_object_03(ishape, hshp_outermost, &
-               shpt_polygon, e%outermost_contour%points * rad_over_deg)
+          call shp_append_object_03(ishape, hshp_outermost, shpt_polygon, &
+               e%outermost_contour%points * rad_over_deg)
        end if
 
        if (e%max_speed == 0.) then
           call shp_append_null_03(ishape, hshp_max_speed)
        else
-          call shp_append_simple_object_03(ishape, hshp_max_speed, &
-               shpt_polygon, e%max_speed_contour%points * rad_over_deg)
+          call shp_append_object_03(ishape, hshp_max_speed, shpt_polygon, &
+               e%max_speed_contour%points * rad_over_deg)
        end if
     end if