diff --git a/Tests/Input/Region_4/2006_01_01/extremum.dbf b/Tests/Input/Region_4/2006_01_01/Snapshot/extremum.dbf similarity index 100% rename from Tests/Input/Region_4/2006_01_01/extremum.dbf rename to Tests/Input/Region_4/2006_01_01/Snapshot/extremum.dbf diff --git a/Tests/Input/Region_4/2006_01_01/extremum.shp b/Tests/Input/Region_4/2006_01_01/Snapshot/extremum.shp similarity index 100% rename from Tests/Input/Region_4/2006_01_01/extremum.shp rename to Tests/Input/Region_4/2006_01_01/Snapshot/extremum.shp diff --git a/Tests/Input/Region_4/2006_01_01/extremum.shx b/Tests/Input/Region_4/2006_01_01/Snapshot/extremum.shx similarity index 100% rename from Tests/Input/Region_4/2006_01_01/extremum.shx rename to Tests/Input/Region_4/2006_01_01/Snapshot/extremum.shx diff --git a/Tests/Input/Region_4/2006_01_01/max_speed_contour.dbf b/Tests/Input/Region_4/2006_01_01/Snapshot/max_speed_contour.dbf similarity index 100% rename from Tests/Input/Region_4/2006_01_01/max_speed_contour.dbf rename to Tests/Input/Region_4/2006_01_01/Snapshot/max_speed_contour.dbf diff --git a/Tests/Input/Region_4/2006_01_01/max_speed_contour.shp b/Tests/Input/Region_4/2006_01_01/Snapshot/max_speed_contour.shp similarity index 100% rename from Tests/Input/Region_4/2006_01_01/max_speed_contour.shp rename to Tests/Input/Region_4/2006_01_01/Snapshot/max_speed_contour.shp diff --git a/Tests/Input/Region_4/2006_01_01/max_speed_contour.shx b/Tests/Input/Region_4/2006_01_01/Snapshot/max_speed_contour.shx similarity index 100% rename from Tests/Input/Region_4/2006_01_01/max_speed_contour.shx rename to Tests/Input/Region_4/2006_01_01/Snapshot/max_speed_contour.shx diff --git a/Tests/Input/Region_4/2006_01_01/outermost_contour.dbf b/Tests/Input/Region_4/2006_01_01/Snapshot/outermost_contour.dbf similarity index 100% rename from Tests/Input/Region_4/2006_01_01/outermost_contour.dbf rename to Tests/Input/Region_4/2006_01_01/Snapshot/outermost_contour.dbf diff --git a/Tests/Input/Region_4/2006_01_01/outermost_contour.shp b/Tests/Input/Region_4/2006_01_01/Snapshot/outermost_contour.shp similarity index 100% rename from Tests/Input/Region_4/2006_01_01/outermost_contour.shp rename to Tests/Input/Region_4/2006_01_01/Snapshot/outermost_contour.shp diff --git a/Tests/Input/Region_4/2006_01_01/outermost_contour.shx b/Tests/Input/Region_4/2006_01_01/Snapshot/outermost_contour.shx similarity index 100% rename from Tests/Input/Region_4/2006_01_01/outermost_contour.shx rename to Tests/Input/Region_4/2006_01_01/Snapshot/outermost_contour.shx diff --git a/Tests/Input/successive_overlap_nml.txt b/Tests/Input/successive_overlap_nml.txt index f4f7c4fee69eb4d70a80dedf31691122fcac3700..bdaa2ae247c2803e152e14510ec91e2bc81ced49 100644 --- a/Tests/Input/successive_overlap_nml.txt +++ b/Tests/Input/successive_overlap_nml.txt @@ -1,5 +1,5 @@ &MAIN_NML - CORNER = 16.12500 , -38.87500 , + CORNER_deg = 16.12500 , -38.87500 , NLON = 20, NLAT = 20 / diff --git a/Tests/Input/successive_overlap_periodic_nml.txt b/Tests/Input/successive_overlap_periodic_nml.txt index 5a0fd63baf4951351ca6f574e2d58f4f1cd4b903..d3d7a77a64325f076baa09355a6720ac8e78dc82 100644 --- a/Tests/Input/successive_overlap_periodic_nml.txt +++ b/Tests/Input/successive_overlap_periodic_nml.txt @@ -1,6 +1,6 @@ &MAIN_NML - CORNER = 0.000000 , -81.00000 , - STEP = 20.00000 , 18.00000 , + CORNER_deg = 0.000000 , -81.00000 , + STEP_deg = 20.00000 , 18.00000 , NLON = 18, NLAT = 10, DIST_LIM = 4 diff --git a/Tests/Input/successive_overlap_region_5_nml.txt b/Tests/Input/successive_overlap_region_5_nml.txt index 7c7e9ef81209a02efb951acfa375cc1322f005ba..a0efab248e9d9a4fe540f2cc0a20fc7fd7ba4ec4 100644 --- a/Tests/Input/successive_overlap_region_5_nml.txt +++ b/Tests/Input/successive_overlap_region_5_nml.txt @@ -1,5 +1,5 @@ &MAIN_NML - CORNER = 0.12500 , -59.875, , + CORNER_deg = 0.12500 , -59.875, , NLON = 120, NLAT = 180 / diff --git a/Tests/long_tests.json b/Tests/long_tests.json index 2db098f8f61f569b0c14fead1aeaf37310bf46f3..8365bf26dec58f1c646e2f6c5d47f91a0057b2e2 100644 --- a/Tests/long_tests.json +++ b/Tests/long_tests.json @@ -6,7 +6,7 @@ "input": "&main_nml min_amp = 0.001/\n" }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_3", "required": [["$input_dir/h_region_3.nc", "h.nc"], ["$input_dir/uv_region_3.nc", "uv.nc"]], @@ -14,7 +14,7 @@ "description": "Larger region, 120 x 120. Includes degenerate extrema." }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_3_min", "required": [["$input_dir/h_region_3.nc", "h.nc"], ["$input_dir/uv_region_3.nc", "uv.nc"]], @@ -22,7 +22,7 @@ "description": "Same as Extraction_eddies_region_3 except with 1 mm minimum amplitude." }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_5", "required": [["$input_dir/h_region_5.nc", "h.nc"], ["$input_dir/uv_region_5.nc", "uv.nc"]], diff --git a/Tests/short_tests.json b/Tests/short_tests.json index ee4db9b0f461ffca3f404fa0bd889711b8ef0dfb..41b484ce06e505a19b61c977b7e3ac4ff87d6e6a 100644 --- a/Tests/short_tests.json +++ b/Tests/short_tests.json @@ -137,14 +137,14 @@ "input": "&MAIN_NML IND_TARG_EXTR=19,11 /\n" }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_1", "required": [["$input_dir/h_region_1.nc", "h.nc"], ["$input_dir/uv_region_1.nc", "uv.nc"]], "input": "&main_nml min_amp = 0./\n" }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_1_noise", "required": [["$input_dir/h_region_1.nc", "h.nc"], ["$input_dir/uv_region_1.nc", "uv.nc"]], @@ -152,14 +152,14 @@ "description" : "Same as Extraction_eddies_region_1 but with non-zero minimal amplitude." }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_2", "required": [["$input_dir/h_region_2.nc", "h.nc"], ["$input_dir/uv_region_2.nc", "uv.nc"]], "input": "&main_nml min_amp = 0./\n" }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_2_noise", "required": [["$input_dir/h_region_2.nc", "h.nc"], ["$input_dir/uv_region_2.nc", "uv.nc"]], @@ -178,7 +178,7 @@ "stdin_filename": "$input_dir/inside_4_false_nml.txt" }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_region_4", "required": ["$input_dir/Region_4/2006_01_01/h.nc", "$input_dir/Region_4/2006_01_01/uv.nc"], "input": "&main_nml /\n", @@ -201,71 +201,15 @@ "description": "Area of a multipolygon, with a hole in one polygon." }, { - "args": "$compil_prod_dir/test_read_eddy", + "args": "$compil_prod_dir/test_read_eddy.sh", "required": - [ - ["$input_dir/Region_4/2006_01_01/extremum.dbf", "extremum_old.dbf"], - ["$input_dir/Region_4/2006_01_01/extremum.shp", "extremum_old.shp"], - ["$input_dir/Region_4/2006_01_01/extremum.shx", "extremum_old.shx"], - [ - "$input_dir/Region_4/2006_01_01/max_speed_contour.dbf", - "max_speed_contour_old.dbf" - ], - [ - "$input_dir/Region_4/2006_01_01/max_speed_contour.shp", - "max_speed_contour_old.shp" - ], - [ - "$input_dir/Region_4/2006_01_01/max_speed_contour.shx", - "max_speed_contour_old.shx" - ], - [ - "$input_dir/Region_4/2006_01_01/outermost_contour.dbf", - "outermost_contour_old.dbf" - ], - [ - "$input_dir/Region_4/2006_01_01/outermost_contour.shp", - "outermost_contour_old.shp" - ], - [ - "$input_dir/Region_4/2006_01_01/outermost_contour.shx", - "outermost_contour_old.shx" - ] - ], + [["$input_dir/Region_4/2006_01_01/Snapshot", "Snapshot_old"]], "title": "Read_eddy" }, { - "args": "$compil_prod_dir/test_read_snapshot", + "args": "$compil_prod_dir/test_read_snapshot.sh", "required": - [ - ["$input_dir/Region_4/2006_01_01/extremum.dbf", "extremum_old.dbf"], - ["$input_dir/Region_4/2006_01_01/extremum.shp", "extremum_old.shp"], - ["$input_dir/Region_4/2006_01_01/extremum.shx", "extremum_old.shx"], - [ - "$input_dir/Region_4/2006_01_01/max_speed_contour.dbf", - "max_speed_contour_old.dbf" - ], - [ - "$input_dir/Region_4/2006_01_01/max_speed_contour.shp", - "max_speed_contour_old.shp" - ], - [ - "$input_dir/Region_4/2006_01_01/max_speed_contour.shx", - "max_speed_contour_old.shx" - ], - [ - "$input_dir/Region_4/2006_01_01/outermost_contour.dbf", - "outermost_contour_old.dbf" - ], - [ - "$input_dir/Region_4/2006_01_01/outermost_contour.shp", - "outermost_contour_old.shp" - ], - [ - "$input_dir/Region_4/2006_01_01/outermost_contour.shx", - "outermost_contour_old.shx" - ] - ], + [["$input_dir/Region_4/2006_01_01/Snapshot", "Snapshot_old"]], "title": "Read_snapshot", "stdin_filename": "$input_dir/read_snapshot_nml.txt" }, @@ -282,9 +226,8 @@ "description": "Overlap of a snapshot with itself.", "required": [ - "$input_dir/Region_4/2006_01_01/*.dbf", - "$input_dir/Region_4/2006_01_01/*.shx", - "$input_dir/Region_4/2006_01_01/*.shp" + ["$input_dir/Region_4/2006_01_01/Snapshot", "Snapshot_1"], + ["$input_dir/Region_4/2006_01_01/Snapshot", "Snapshot_2"] ], "stdin_filename": "$input_dir/successive_overlap_nml.txt" }, @@ -293,7 +236,7 @@ "title" : "Nearby_extr", "required": [ - "$tests_old_dir/Extraction_eddies_region_1_noise/extremum.*", + "$tests_old_dir/Extraction_eddies_region_1_noise/Snapshot/extremum.*", "$tests_old_dir/Local_extrema/extr_map.nc" ] }, @@ -303,9 +246,14 @@ "description": "Same as Successive_overlap, but with larger domain: region 5 instead of region 4.", "required": [ - "$tests_old_dir/Extraction_eddies_region_5/extremum.*", - "$tests_old_dir/Extraction_eddies_region_5/max_speed_contour.*", - "$tests_old_dir/Extraction_eddies_region_5/outermost_contour.*" + [ + "$tests_old_dir/Extraction_eddies_region_5/Snapshot", + "Snapshot_1" + ], + [ + "$tests_old_dir/Extraction_eddies_region_5/Snapshot", + "Snapshot_2" + ] ], "stdin_filename": "$input_dir/successive_overlap_region_5_nml.txt" }, @@ -331,7 +279,7 @@ "description": "test_set_all_outerm with periodicity." }, { - "args": "$compil_prod_dir/extraction_eddies", + "args": "$compil_prod_dir/extraction_eddies.sh", "title": "Extraction_eddies_periodic", "required": [["$input_dir/h_2006_01_01_coarse.nc", "h.nc"], ["$input_dir/uv_2006_01_01_coarse.nc", "uv.nc"]], @@ -344,9 +292,14 @@ "description": "Overlap of a snapshot with itself. Global coarse grid.", "required": [ - "$tests_old_dir/Extraction_eddies_periodic/*.dbf", - "$tests_old_dir/Extraction_eddies_periodic/*.shx", - "$tests_old_dir/Extraction_eddies_periodic/*.shp" + [ + "$tests_old_dir/Extraction_eddies_periodic/Snapshot", + "Snapshot_1" + ], + [ + "$tests_old_dir/Extraction_eddies_periodic/Snapshot", + "Snapshot_2" + ] ], "stdin_filename": "$input_dir/successive_overlap_periodic_nml.txt" } diff --git a/Tests/test_read_eddy.f90 b/Tests/test_read_eddy.f90 index 343378f5ccd2bbdd50a6461a1d172d89cde668d6..cb6a5f15b729085316040574c77d7fba1f58985d 100644 --- a/Tests/test_read_eddy.f90 +++ b/Tests/test_read_eddy.f90 @@ -20,10 +20,11 @@ program test_read_eddy !------------------------------------------------------------------------- - call shp_open_03("extremum_old", pszaccess = "rb", hshp = hshp_extremum) - call shp_open_03("outermost_contour_old", pszaccess = "rb", & + call shp_open_03("Snapshot_old/extremum", pszaccess = "rb", & + hshp = hshp_extremum) + call shp_open_03("Snapshot_old/outermost_contour", pszaccess = "rb", & hshp = hshp_outermost) - call shp_open_03("max_speed_contour_old", pszaccess = "rb", & + call shp_open_03("Snapshot_old/max_speed_contour", pszaccess = "rb", & hshp = hshp_max_speed) call read_field_indices(hshp_extremum, hshp_outermost, hshp_max_speed) call read_eddy(e, k, i, hshp_extremum, hshp_outermost, hshp_max_speed, & diff --git a/Tests/test_read_eddy.sh b/Tests/test_read_eddy.sh new file mode 100755 index 0000000000000000000000000000000000000000..3515a65eaadd6c453063b3920ae33691347aa255 --- /dev/null +++ b/Tests/test_read_eddy.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -xe +script_dir=`dirname $0` +mkdir Snapshot +$script_dir/test_read_eddy diff --git a/Tests/test_read_snapshot.f90 b/Tests/test_read_snapshot.f90 index 19f330976f29d4f73851b88f8c73467d9d827aa6..0682f08bc3788b9eda6b3efaaadbc0cf9d518565 100644 --- a/Tests/test_read_snapshot.f90 +++ b/Tests/test_read_snapshot.f90 @@ -49,10 +49,11 @@ program test_read_snapshot if (periodic) call assert(2 * dist_lim * step(1) < 180., & "test_read_snapshot dist_lim") - call shp_open_03("extremum_old", pszaccess = "rb", hshp = hshp_extremum) - call shp_open_03("outermost_contour_old", pszaccess = "rb", & + call shp_open_03("Snapshot_old/extremum", pszaccess = "rb", & + hshp = hshp_extremum) + call shp_open_03("Snapshot_old/outermost_contour", pszaccess = "rb", & hshp = hshp_outermost) - call shp_open_03("max_speed_contour_old", pszaccess = "rb", & + call shp_open_03("Snapshot_old/max_speed_contour", pszaccess = "rb", & hshp = hshp_max_speed) call read_field_indices(hshp_extremum, hshp_outermost, hshp_max_speed) call read_snapshot(s, k, hshp_extremum, hshp_outermost, hshp_max_speed, & diff --git a/Tests/test_read_snapshot.sh b/Tests/test_read_snapshot.sh new file mode 100755 index 0000000000000000000000000000000000000000..e2305419a4f672045b6fc07ae77b075eb0d5a630 --- /dev/null +++ b/Tests/test_read_snapshot.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -xe +script_dir=`dirname $0` +mkdir Snapshot +$script_dir/test_read_snapshot diff --git a/Tests/test_successive_overlap.f90 b/Tests/test_successive_overlap.f90 index 6d42e716ba56987f7b338114de9cb70d67bb45d7..14996a291881bef43604951cce3fcb810bd59ac5 100644 --- a/Tests/test_successive_overlap.f90 +++ b/Tests/test_successive_overlap.f90 @@ -21,10 +21,13 @@ program test_successive_overlap TYPE(shpfileobject) hshp_outermost ! shapefile outermost_contour TYPE(shpfileobject) hshp_max_speed ! shapefile max_speed_contour - real:: corner(2) = [huge(0.), huge(0.)] + real:: corner_deg(2) = [huge(0.), huge(0.)], corner(2) ! longitude and latitude of the corner of the whole grid, in degrees + ! and in rad - real:: step(2) = [0.25, 0.25] ! longitude and latitude steps, in degrees + real:: step_deg(2) = [0.25, 0.25], step(2) + ! longitude and latitude steps, in degrees and in rad + logical periodic ! grid is periodic in longitude integer:: nlon = - 1, nlat = - 1 @@ -32,7 +35,7 @@ program test_successive_overlap ! We look for an overlapping eddy at dist_lim (in grid points) of ! the first extremum. - namelist /main_nml/ corner, step, nlon, nlat, dist_lim + namelist /main_nml/ corner_deg, step_deg, nlon, nlat, dist_lim !------------------------------------------------------------------------- @@ -42,21 +45,37 @@ program test_successive_overlap write(unit = *, nml = main_nml) ! As we are requiring the grid spacing to be uniform, the value of - ! "periodic" may be deduced from the values of step(1) and nlon: - periodic = nint(360. / step(1)) == nlon + ! "periodic" may be deduced from the values of step_deg(1) and nlon: + periodic = nint(360. / step_deg(1)) == nlon print *, "periodic = ", periodic - if (periodic) call assert(2 * dist_lim * step(1) < 180., & + if (periodic) call assert(2 * dist_lim * step_deg(1) < 180., & "test_successive_overlap dist_lim") - call shp_open_03("extremum", pszaccess = "rb", hshp = hshp_extremum) - call shp_open_03("outermost_contour", pszaccess = "rb", & + corner = corner_deg * deg_to_rad + step = step_deg * deg_to_rad + + call shp_open_03("Snapshot_1/extremum", pszaccess = "rb", & + hshp = hshp_extremum) + call shp_open_03("Snapshot_1/outermost_contour", pszaccess = "rb", & hshp = hshp_outermost) - call shp_open_03("max_speed_contour", pszaccess = "rb", & + call shp_open_03("Snapshot_1/max_speed_contour", pszaccess = "rb", & hshp = hshp_max_speed) call read_field_indices(hshp_extremum, hshp_outermost, hshp_max_speed) call read_snapshot(flow(1), k, hshp_extremum, hshp_outermost, & - hshp_max_speed, corner * deg_to_rad, step * deg_to_rad, nlon, nlat, & - periodic, dist_lim) + hshp_max_speed, corner, step, nlon, nlat, periodic, dist_lim) + CALL shpclose(hshp_extremum) + CALL shpclose(hshp_outermost) + CALL shpclose(hshp_max_speed) + + call shp_open_03("Snapshot_2/extremum", pszaccess = "rb", & + hshp = hshp_extremum) + call shp_open_03("Snapshot_2/outermost_contour", pszaccess = "rb", & + hshp = hshp_outermost) + call shp_open_03("Snapshot_2/max_speed_contour", pszaccess = "rb", & + hshp = hshp_max_speed) + ! We assume that the field indices are the same than in snapshot_1. + call read_snapshot(flow(2), k, hshp_extremum, hshp_outermost, & + hshp_max_speed, corner, step, nlon, nlat, periodic, dist_lim) CALL shpclose(hshp_extremum) CALL shpclose(hshp_outermost) CALL shpclose(hshp_max_speed) @@ -73,7 +92,7 @@ program test_successive_overlap write(unit_edgelist, fmt = *) "k1 i1 k2 i2 weight" call successive_overlap(flow, unit_edgelist, nlon, nlat, periodic, dist_lim, & - j = 2, k = k + 1) + j = 2, k = k) close(unit_edgelist) print *, 'Created file "edgelist.csv".' diff --git a/extraction_eddies.f90 b/extraction_eddies.f90 index b571c46a032aea6e96bf4f6431f5b800b981e5a6..5f04e0a673766c94271b5ac83a42eb8d8c8988db 100644 --- a/extraction_eddies.f90 +++ b/extraction_eddies.f90 @@ -191,10 +191,10 @@ program extraction_eddies print *, "Number of extrema:", s%number_vis_extr CALL shpclose(hshp_extremum) - print *, 'Created shapefile "extremum".' + print *, 'Created shapefile "Snapshot/extremum".' CALL shpclose(hshp_outermost) - print *, 'Created shapefile "outermost_contour".' + print *, 'Created shapefile "Snapshot/outermost_contour".' CALL shpclose(hshp_max_speed) - print *, 'Created shapefile "max_speed_contour".' + print *, 'Created shapefile "Snapshot/max_speed_contour".' end program extraction_eddies diff --git a/extraction_eddies.sh b/extraction_eddies.sh new file mode 100755 index 0000000000000000000000000000000000000000..78c8655b5b2de0b774582791b685fcd1aecf3588 --- /dev/null +++ b/extraction_eddies.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -xe +script_dir=`dirname $0` +mkdir Snapshot +$script_dir/extraction_eddies diff --git a/init_shapefiles.f90 b/init_shapefiles.f90 index c262ac461a344397f2a147bd4aaa5beaefef3f66..cb219ac854b8cdce3ec8d500f995276a421087c6 100644 --- a/init_shapefiles.f90 +++ b/init_shapefiles.f90 @@ -28,7 +28,7 @@ contains !--------------------------------------------------------------------- - call shp_create_03("extremum", shpt_point, hshp_extremum) + call shp_create_03("Snapshot/extremum", 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', & @@ -44,7 +44,8 @@ contains call dbf_add_field_03(ifield_extr_speed, hshp_extremum, 'speed', ftdouble, & nwidth = 13, ndecimals = 6) - call shp_create_03("outermost_contour", shpt_polygon, hshp_outermost) + call shp_create_03("Snapshot/outermost_contour", shpt_polygon, & + hshp_outermost) call dbf_add_field_03(ifield_out_r_eq_area, hshp_outermost, & 'r_eq_area', ftdouble, nwidth = 10, ndecimals = 4) call dbf_add_field_03(ifield_out_ssh, hshp_outermost, 'ssh', ftdouble, & @@ -56,7 +57,8 @@ contains call dbf_add_field_03(ifield_out_radius4, hshp_outermost, 'radius4', & ftinteger, nwidth = 2, ndecimals = 0) - call shp_create_03("max_speed_contour", shpt_polygon, hshp_max_speed) + call shp_create_03("Snapshot/max_speed_contour", shpt_polygon, & + hshp_max_speed) call dbf_add_field_03(ifield_max_speed_r_eq_area, hshp_max_speed, & 'r_eq_area', ftdouble, nwidth = 10, ndecimals = 4) call dbf_add_field_03(ifield_max_speed_ssh, hshp_max_speed, 'ssh', &