From bf045ac7813a4c258b320bd09bfb230c104830b1 Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Fri, 6 Apr 2018 15:11:53 +0200
Subject: [PATCH] Move initialization of shapefiles to a separate procedure,
 init_shapefiles. This allows us to have variables for DBF field numbers, as
 module variables. We avoid the burden of passing this large number of
 variables as arguments to write_eddy. Safer to have variables for DBF field
 numbers than relying on the order of those fields.

Remove file_list. This was a duplication of information.

Use named constant for missing max speed value. It is used in two procedures.
---
 GNUmakefile               |  4 +-
 Tests/test_get_snapshot.f | 64 ++++---------------------------
 depend.mk                 | 18 ++++-----
 derived_types.f           |  1 +
 dispatch_snapshot.f       | 12 ++----
 file_list                 | 27 -------------
 get_snapshot.f            |  4 +-
 init_shapefiles.f         | 73 ++++++++++++++++++++++++++++++++++++
 write_eddy.f              | 79 +++++++++++++++++++++++----------------
 9 files changed, 145 insertions(+), 137 deletions(-)
 delete mode 100644 file_list
 create mode 100644 init_shapefiles.f

diff --git a/GNUmakefile b/GNUmakefile
index 6a01739a..7c713820 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -11,13 +11,13 @@ src_test_get_1_outerm = good_contour.f test_get_1_outerm.f derived_types.f get_1
 
 src_test_set_max_speed = test_set_max_speed.f derived_types.f set_max_speed.f good_contour.f max_speed_contour_ssh.f mean_speed.f spherical_polygon_area.f inside_4.f
 
-src_test_get_snapshot = test_get_snapshot.f get_snapshot.f dispatch_snapshot.f write_eddy.f send_snapshot.f receive_snapshot.f local_extrema.f set_max_speed.f outermost_possible_level.f get_1_outerm.f max_speed_contour_ssh.f good_contour.f spherical_polygon_area.f mean_speed.f inside_4.f set_all_outerm.f derived_types.f
+src_test_get_snapshot = test_get_snapshot.f get_snapshot.f dispatch_snapshot.f write_eddy.f send_snapshot.f receive_snapshot.f local_extrema.f set_max_speed.f outermost_possible_level.f get_1_outerm.f max_speed_contour_ssh.f good_contour.f spherical_polygon_area.f mean_speed.f inside_4.f set_all_outerm.f derived_types.f init_shapefiles.f
 
 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)
+sources := $(sort ${src_test_local_extrema} ${src_test_get_1_outerm} ${src_test_set_max_speed} ${src_test_get_snapshot} ${src_test_set_all_outerm} ${src_test_weight}) test_good_contour.f test_inside_4.f test_max_speed_contour_ssh.f test_mean_speed.f
 
 lib_list = contour_531 numer_rec_95 shapelib_03 netcdf95 geometry jumble netcdff fortrangis shp fortranc nr_util
 
diff --git a/Tests/test_get_snapshot.f b/Tests/test_get_snapshot.f
index 09c5103e..36253bcb 100644
--- a/Tests/test_get_snapshot.f
+++ b/Tests/test_get_snapshot.f
@@ -6,34 +6,24 @@ program test_get_snapshot
   use derived_types, only: snapshot
   use dispatch_snapshot_m, only: dispatch_snapshot
   use get_snapshot_m, only: get_snapshot
+  use init_shapefiles_m, only: init_shapefiles
   use jumble, only: new_unit
   use netcdf, only: nf90_nowrite
   use netcdf95, only: nf95_open, find_coord, nf95_inquire_dimension, &
        nf95_get_var, nf95_close
   use nr_util, only: pi, assert
-  use shapelib, only: shpt_point, shpt_polygon, shpfileobject, ftdouble, &
-       shpclose, ftinteger
-  use shapelib_03, only: shp_create_03, dbf_add_field_03
+  use shapelib, only: shpfileobject, shpclose
 
   implicit none
 
   type(snapshot) s
   real, parameter:: deg_over_rad = pi / 180.
 
-  TYPE(shpfileobject) hshp_extremum
-  ! shapefile extremum_$m. The fields in the DBF file are, in that
-  ! order: ssh, date index, eddy index, interpolated, cyclone,
-  ! sufficient amplitude, speed.
+  TYPE(shpfileobject) hshp_extremum ! shapefile extremum_$m
+  TYPE(shpfileobject) hshp_outermost ! shapefile outermost_contour_$m
+  TYPE(shpfileobject) hshp_max_speed ! shapefile x_speed_contour_$m
 
-  TYPE(shpfileobject) hshp_outermost
-  ! shapefile outermost_contour_$m. The fields in the DBF file are,
-  ! in that order: area, ssh, date index, eddy index, twice, radius4.
-
-  TYPE(shpfileobject) hshp_max_speed
-  ! shapefile x_speed_contour_$m. The fields in the DBF file are, in
-  ! that order: area, ssh, date index, eddy index.
-
-  integer ifield, unit_isolated, unit_number_eddies
+  integer unit_isolated, unit_number_eddies
 
   real:: min_amp = 0.
   ! minimum amplitude of ssh, between extremum and outermost contour,
@@ -71,46 +61,8 @@ program test_get_snapshot
        step = &
        [longitude(2) - longitude(1), latitude(2) - latitude(1)]  * deg_over_rad)
 
-  call shp_create_03("extremum_1", shpt_point, hshp_extremum)
-  call dbf_add_field_03(ifield, hshp_extremum, 'ssh', ftdouble, nwidth = 13, &
-       ndecimals = 6)
-  call dbf_add_field_03(ifield, hshp_extremum, 'date_index', ftinteger, &
-       nwidth = 4, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_extremum, 'eddy_index', ftinteger, &
-       nwidth = 5, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_extremum, 'interpolat', ftinteger, &
-       nwidth = 1, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_extremum, 'cyclone', ftinteger, &
-       nwidth = 1, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_extremum, 'suff_amp', ftinteger, &
-       nwidth = 1, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_extremum, 'speed', ftdouble, nwidth = 13, &
-       ndecimals = 6)
-
-  call shp_create_03("outermost_contour_1", shpt_polygon, hshp_outermost)
-  call dbf_add_field_03(ifield, hshp_outermost, 'area', ftdouble, nwidth = 20, &
-       ndecimals = 6)
-  call dbf_add_field_03(ifield, hshp_outermost, 'ssh', ftdouble, nwidth = 13, &
-       ndecimals = 6)
-  call dbf_add_field_03(ifield, hshp_outermost, 'date_index', ftinteger, &
-       nwidth = 4, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_outermost, 'eddy_index', ftinteger, &
-       nwidth = 5, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_outermost, 'twice', ftinteger, &
-       nwidth = 1, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_outermost, 'radius4', ftinteger, &
-       nwidth = 2, ndecimals = 0)
-
-  call shp_create_03("max_speed_contour_1", shpt_polygon, hshp_max_speed)
-  call dbf_add_field_03(ifield, hshp_max_speed, 'area', ftdouble, nwidth = 20, &
-       ndecimals = 6)
-  call dbf_add_field_03(ifield, hshp_max_speed, 'ssh', ftdouble, nwidth = 13, &
-       ndecimals = 6)
-  call dbf_add_field_03(ifield, hshp_max_speed, 'date_index', ftinteger, &
-       nwidth = 4, ndecimals = 0)
-  call dbf_add_field_03(ifield, hshp_max_speed, 'eddy_index', ftinteger, &
-       nwidth = 5, ndecimals = 0)
-
+  call init_shapefiles(hshp_extremum, hshp_outermost, hshp_max_speed)
+  
   call new_unit(unit_isolated)
   open(unit_isolated, file = "isolated_nodes_1.csv", status = "replace", &
        action = "write")
diff --git a/depend.mk b/depend.mk
index ffea460e..22092c0d 100644
--- a/depend.mk
+++ b/depend.mk
@@ -1,19 +1,19 @@
 dispatch_snapshot.o : write_eddy.o send_snapshot.o derived_types.o 
+get_1_outerm.o : spherical_polygon_area.o outermost_possible_level.o good_contour.o derived_types.o 
 get_snapshot.o : set_all_outerm.o set_max_speed.o receive_snapshot.o derived_types.o 
 receive_snapshot.o : derived_types.o 
 send_snapshot.o : derived_types.o 
 set_all_outerm.o : local_extrema.o get_1_outerm.o derived_types.o 
 set_max_speed.o : spherical_polygon_area.o mean_speed.o max_speed_contour_ssh.o inside_4.o good_contour.o derived_types.o 
-get_1_outerm.o : spherical_polygon_area.o outermost_possible_level.o good_contour.o derived_types.o 
-test_get_snapshot.o : get_snapshot.o dispatch_snapshot.o derived_types.o 
-test_good_contour.o : good_contour.o 
-test_inside_4.o : inside_4.o 
+test_get_1_outerm.o : get_1_outerm.o derived_types.o 
+test_get_snapshot.o : init_shapefiles.o get_snapshot.o dispatch_snapshot.o derived_types.o 
 test_local_extrema.o : local_extrema.o 
-test_max_speed_contour_ssh.o : max_speed_contour_ssh.o 
-test_mean_speed.o : mean_speed.o 
 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 
+weight.o : derived_types.o 
+write_eddy.o : init_shapefiles.o derived_types.o 
+test_good_contour.o : good_contour.o 
+test_inside_4.o : inside_4.o 
+test_max_speed_contour_ssh.o : max_speed_contour_ssh.o 
+test_mean_speed.o : mean_speed.o 
diff --git a/derived_types.f b/derived_types.f
index 0a13596a..e5508d12 100644
--- a/derived_types.f
+++ b/derived_types.f
@@ -59,6 +59,7 @@ module derived_types
   end type snapshot
 
   real, parameter:: missing_ssh = 1e4 ! flag for undefined contour
+  real, parameter:: missing_speed = 1e4 ! flag for missing max speed
 
 contains
 
diff --git a/dispatch_snapshot.f b/dispatch_snapshot.f
index 7ede12ac..81188696 100644
--- a/dispatch_snapshot.f
+++ b/dispatch_snapshot.f
@@ -15,19 +15,13 @@ contains
 
     type(snapshot), intent(in):: s
 
-    TYPE(shpfileobject), intent(inout):: hshp_extremum
-    ! shapefile extremum_$m. We assume that the fields in the DBF file
-    ! are, in that order: ssh, date index, eddy index, interpolated,
-    ! cyclone, sufficient amplitude, speed.
+    TYPE(shpfileobject), intent(inout):: hshp_extremum ! shapefile extremum_$m
 
     TYPE(shpfileobject), intent(inout):: hshp_outermost
-    ! shapefile outermost_contour_$m. We assume that the fields in the
-    ! DBF file are, in that order: area, ssh, date index, eddy index,
-    ! twice, radius4.
+    ! shapefile outermost_contour_$m
 
     TYPE(shpfileobject), intent(inout):: hshp_max_speed
-    ! shapefile x_speed_contour_$m. We assume that the fields in the
-    ! DBF file are, in that order: area, ssh, date index, eddy index.
+    ! shapefile x_speed_contour_$m
 
     integer, intent(in):: unit_isolated
     ! logical unit for file isolated_nodes_$m.csv
diff --git a/file_list b/file_list
deleted file mode 100644
index 5dde0340..00000000
--- a/file_list
+++ /dev/null
@@ -1,27 +0,0 @@
-derived_types.f
-dispatch_snapshot.f
-get_snapshot.f
-good_contour.f
-inside_4.f
-local_extrema.f
-max_speed_contour_ssh.f
-mean_speed.f
-outermost_possible_level.f
-receive_snapshot.f
-send_snapshot.f
-set_all_outerm.f
-set_max_speed.f
-get_1_outerm.f
-spherical_polygon_area.f
-test_get_snapshot.f
-test_good_contour.f
-test_inside_4.f
-test_local_extrema.f
-test_max_speed_contour_ssh.f
-test_mean_speed.f
-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/get_snapshot.f b/get_snapshot.f
index 93886e98..648b9afb 100644
--- a/get_snapshot.f
+++ b/get_snapshot.f
@@ -10,7 +10,7 @@ contains
     use, intrinsic:: ieee_arithmetic, only: ieee_value, IEEE_QUIET_NAN
 
     use contour_531, only: convert_to_ind, null_polyline
-    use derived_types, only: snapshot, null_ssh_contour
+    use derived_types, only: snapshot, null_ssh_contour, missing_speed
     use netcdf, only: nf90_nowrite
     use netcdf95, only: nf95_open, nf95_close, nf95_inq_varid, nf95_get_var, &
          nf95_get_att
@@ -103,7 +103,7 @@ contains
                   step)
           else
              s%list_vis(i)%speed_cont = null_ssh_contour()
-             s%list_vis(i)%max_speed = 1e4
+             s%list_vis(i)%max_speed = missing_speed
              s%list_vis(i)%radius4 = 0
           end if
        end do
diff --git a/init_shapefiles.f b/init_shapefiles.f
new file mode 100644
index 00000000..adbb6f7a
--- /dev/null
+++ b/init_shapefiles.f
@@ -0,0 +1,73 @@
+module init_shapefiles_m
+
+  implicit none
+
+  integer, protected:: ifield_extr_ssh, ifield_extr_date, &
+       ifield_extr_eddy_index, ifield_extr_interp, ifield_extr_cycl, &
+       ifield_extr_suff_amp, ifield_extr_speed
+  integer, protected:: ifield_out_area, ifield_out_ssh, ifield_out_date, &
+       ifield_out_eddy_index, ifield_out_twice, ifield_out_radius4
+  integer, protected:: ifield_max_speed_area, ifield_max_speed_ssh, &
+       ifield_max_speed_date, ifield_max_speed_eddy_index
+  
+contains
+
+  subroutine init_shapefiles(hshp_extremum, hshp_outermost, hshp_max_speed)
+
+    use shapelib, only: shpt_point, shpt_polygon, shpfileobject, ftdouble, &
+         ftinteger
+    use shapelib_03, only: shp_create_03, dbf_add_field_03
+
+    TYPE(shpfileobject), intent(out):: hshp_extremum ! shapefile extremum_$m
+
+    TYPE(shpfileobject), intent(out):: hshp_outermost
+    ! shapefile outermost_contour_$m
+
+    TYPE(shpfileobject), intent(out):: hshp_max_speed
+    ! shapefile x_speed_contour_$m
+
+    !---------------------------------------------------------------------
+
+    call shp_create_03("extremum_1", shpt_point, hshp_extremum)
+    call dbf_add_field_03(ifield_extr_ssh, hshp_extremum, 'ssh', ftdouble, &
+         nwidth = 13, ndecimals = 6)
+    call dbf_add_field_03(ifield_extr_date, hshp_extremum, 'date_index', &
+         ftinteger, nwidth = 4, ndecimals = 0)
+    call dbf_add_field_03(ifield_extr_eddy_index, hshp_extremum, 'eddy_index', &
+         ftinteger, nwidth = 5, ndecimals = 0)
+    call dbf_add_field_03(ifield_extr_interp, hshp_extremum, 'interpolat', &
+         ftinteger, nwidth = 1, ndecimals = 0)
+    call dbf_add_field_03(ifield_extr_cycl, hshp_extremum, 'cyclone', &
+         ftinteger, nwidth = 1, ndecimals = 0)
+    call dbf_add_field_03(ifield_extr_suff_amp, hshp_extremum, 'suff_amp', &
+         ftinteger, nwidth = 1, ndecimals = 0)
+    call dbf_add_field_03(ifield_extr_speed, hshp_extremum, 'speed', ftdouble, &
+         nwidth = 13, ndecimals = 6)
+
+    call shp_create_03("outermost_contour_1", shpt_polygon, hshp_outermost)
+    call dbf_add_field_03(ifield_out_area, hshp_outermost, 'area', ftdouble, &
+         nwidth = 20, ndecimals = 6)
+    call dbf_add_field_03(ifield_out_ssh, hshp_outermost, 'ssh', ftdouble, &
+         nwidth = 13, ndecimals = 6)
+    call dbf_add_field_03(ifield_out_date, hshp_outermost, 'date_index', &
+         ftinteger, nwidth = 4, ndecimals = 0)
+    call dbf_add_field_03(ifield_out_eddy_index, hshp_outermost, 'eddy_index', &
+         ftinteger, nwidth = 5, ndecimals = 0)
+    call dbf_add_field_03(ifield_out_twice, hshp_outermost, 'twice', &
+         ftinteger, nwidth = 1, ndecimals = 0)
+    call dbf_add_field_03(ifield_out_radius4, hshp_outermost, 'radius4', &
+         ftinteger, nwidth = 2, ndecimals = 0)
+
+    call shp_create_03("max_speed_contour_1", shpt_polygon, hshp_max_speed)
+    call dbf_add_field_03(ifield_max_speed_area, hshp_max_speed, 'area', &
+         ftdouble, nwidth = 20, ndecimals = 6)
+    call dbf_add_field_03(ifield_max_speed_ssh, hshp_max_speed, 'ssh', &
+         ftdouble, nwidth = 13, ndecimals = 6)
+    call dbf_add_field_03(ifield_max_speed_date, hshp_max_speed, 'date_index', &
+         ftinteger, nwidth = 4, ndecimals = 0)
+    call dbf_add_field_03(ifield_max_speed_eddy_index, hshp_max_speed, &
+         'eddy_index', ftinteger, nwidth = 5, ndecimals = 0)
+
+  end subroutine init_shapefiles
+
+end module init_shapefiles_m
diff --git a/write_eddy.f b/write_eddy.f
index 2b8b9b8a..03e5bceb 100644
--- a/write_eddy.f
+++ b/write_eddy.f
@@ -7,53 +7,59 @@ contains
   subroutine write_eddy(e, k, i, hshp_extremum, hshp_outermost, hshp_max_speed)
 
     use, intrinsic:: ieee_arithmetic, only: ieee_is_nan
-    
-    use derived_types, only: eddy
+
+    use derived_types, only: eddy, missing_speed
+    use init_shapefiles_m, only: ifield_extr_ssh, ifield_extr_date, &
+         ifield_extr_eddy_index, ifield_extr_interp, ifield_extr_cycl, &
+         ifield_extr_suff_amp, ifield_extr_speed, ifield_out_area, &
+         ifield_out_ssh, ifield_out_date, ifield_out_eddy_index, &
+         ifield_out_twice, ifield_out_radius4, ifield_max_speed_area, &
+         ifield_max_speed_ssh, ifield_max_speed_date, &
+         ifield_max_speed_eddy_index 
     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_object_03, shp_append_null_03
-    
+
     type(eddy), intent(in):: e
     integer, intent(in):: k ! date index
     integer, intent(in):: i ! eddy index
 
-    TYPE(shpfileobject), intent(inout):: hshp_extremum
-    ! shapefile extremum_$m. We assume that the fields in the DBF file
-    ! are, in that order: ssh, date index, eddy index, interpolated,
-    ! cyclone, sufficient amplitude, speed.
+    TYPE(shpfileobject), intent(inout):: hshp_extremum ! shapefile extremum_$m
 
     TYPE(shpfileobject), intent(inout):: hshp_outermost
-    ! shapefile outermost_contour_$m. We assume that the fields in the
-    ! DBF file are, in that order: area, ssh, date index, eddy index,
-    ! twice, radius4.
+    ! shapefile outermost_contour_$m
 
     TYPE(shpfileobject), intent(inout):: hshp_max_speed
-    ! shapefile x_speed_contour_$m. We assume that the fields in the
-    ! DBF file are, in that order: area, ssh, date index, eddy index.
+    ! shapefile x_speed_contour_$m
 
     ! Local:
     integer ishape
     real, parameter:: rad_over_deg = 180. / pi
-    
+
     !-------------------------------------------------------------
 
     call shp_append_point_03(ishape, hshp_extremum, e%coord_extr * rad_over_deg)
-    call dbf_write_attribute_03(hshp_extremum, ishape, 0, e%ssh_extr)
-    call dbf_write_attribute_03(hshp_extremum, ishape, 1, k)
-    call dbf_write_attribute_03(hshp_extremum, ishape, 2, i)
-    call dbf_write_attribute_03(hshp_extremum, ishape, 3, &
+    
+    call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_ssh, &
+         e%ssh_extr)
+    call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_date, k)
+    call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_eddy_index, &
+         i)
+    call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_interp, &
          merge(1, 0, e%interpolated))
-    call dbf_write_attribute_03(hshp_extremum, ishape, 4, &
+    call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_cycl, &
          merge(1, 0, e%cyclone))
-    call dbf_write_attribute_03(hshp_extremum, ishape, 5, &
+    call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_suff_amp, &
          merge(1, 0, e%suff_amp))
 
     if (ieee_is_nan(e%max_speed)) then
-       call dbf_write_attribute_03(hshp_extremum, ishape, 6, 1e4)
+       call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_speed, &
+            missing_speed)
        ! (Cannot write NaN to dbf file.)
     else
-       call dbf_write_attribute_03(hshp_extremum, ishape, 6, e%max_speed)
+       call dbf_write_attribute_03(hshp_extremum, ishape, ifield_extr_speed, &
+            e%max_speed)
     end if
 
     if (e%interpolated) then
@@ -75,17 +81,26 @@ contains
        end if
     end if
 
-    call dbf_write_attribute_03(hshp_outermost, ishape, 0, e%out_cont%area)
-    call dbf_write_attribute_03(hshp_outermost, ishape, 1, e%out_cont%ssh)
-    call dbf_write_attribute_03(hshp_outermost, ishape, 2, k)
-    call dbf_write_attribute_03(hshp_outermost, ishape, 3, i)
-    call dbf_write_attribute_03(hshp_outermost, ishape, 4, merge(1, 0, e%twice))
-    call dbf_write_attribute_03(hshp_outermost, ishape, 5, e%radius4)
-    
-    call dbf_write_attribute_03(hshp_max_speed, ishape, 0, e%speed_cont%area)
-    call dbf_write_attribute_03(hshp_max_speed, ishape, 1, e%speed_cont%ssh)
-    call dbf_write_attribute_03(hshp_max_speed, ishape, 2, k)
-    call dbf_write_attribute_03(hshp_max_speed, ishape, 3, i)
+    call dbf_write_attribute_03(hshp_outermost, ishape, ifield_out_area, &
+         e%out_cont%area)
+    call dbf_write_attribute_03(hshp_outermost, ishape, ifield_out_ssh, &
+         e%out_cont%ssh)
+    call dbf_write_attribute_03(hshp_outermost, ishape, ifield_out_date, k)
+    call dbf_write_attribute_03(hshp_outermost, ishape, ifield_out_eddy_index, &
+         i)
+    call dbf_write_attribute_03(hshp_outermost, ishape, ifield_out_twice, &
+         merge(1, 0, e%twice))
+    call dbf_write_attribute_03(hshp_outermost, ishape, ifield_out_radius4, &
+         e%radius4)
+
+    call dbf_write_attribute_03(hshp_max_speed, ishape, ifield_max_speed_area, &
+         e%speed_cont%area)
+    call dbf_write_attribute_03(hshp_max_speed, ishape, ifield_max_speed_ssh, &
+         e%speed_cont%ssh)
+    call dbf_write_attribute_03(hshp_max_speed, ishape, ifield_max_speed_date, &
+         k)
+    call dbf_write_attribute_03(hshp_max_speed, ishape, &
+         ifield_max_speed_eddy_index, i)
 
   end subroutine write_eddy
 
-- 
GitLab