diff --git a/Overlap/CMakeLists.txt b/Overlap/CMakeLists.txt index aec41a35f447756d01b7d2745db9e1fab3bc4d99..25225fc6e585ac88336da95fb95975e58b8b0d8b 100644 --- a/Overlap/CMakeLists.txt +++ b/Overlap/CMakeLists.txt @@ -10,8 +10,7 @@ add_executable(eddy_graph eddy_graph.f90 weight.f90 send_snapshot.f90 ${CMAKE_SOURCE_DIR}/Common/read_eddy.f90 ${CMAKE_SOURCE_DIR}/Common/write_eddy.f90 - ${CMAKE_SOURCE_DIR}/Common/derived_types.f90 unit_edge_m.f90 - write_edge.f90) + ${CMAKE_SOURCE_DIR}/Common/derived_types.f90 unit_edge_m.f90) target_include_directories(eddy_graph PRIVATE ${fortrangis_INCLUDE_DIR}) diff --git a/Overlap/Tests/CMakeLists.txt b/Overlap/Tests/CMakeLists.txt index b78bd969ba615c48972db45af0444adcc9921bf0..91afd320c0e119e393472f1385c4524db0d27b30 100644 --- a/Overlap/Tests/CMakeLists.txt +++ b/Overlap/Tests/CMakeLists.txt @@ -10,8 +10,7 @@ add_executable(test_overlap ${CMAKE_SOURCE_DIR}/Common/shp_tr_create.f90 write_overlap.f90 ${CMAKE_CURRENT_LIST_DIR}/test_overlap.f90 ${CMAKE_SOURCE_DIR}/Common/shp_tr_open.f90 - ${CMAKE_SOURCE_DIR}/Common/shp_tr_close.f90 unit_edge_m.f90 - write_edge.f90) + ${CMAKE_SOURCE_DIR}/Common/shp_tr_close.f90 unit_edge_m.f90) target_link_libraries(test_overlap shapelib_03 geometry contour_531 gpc_f ezmpi nr_util jumble MPI::MPI_Fortran) @@ -85,7 +84,7 @@ add_executable(test_write_overlap ${CMAKE_SOURCE_DIR}/Common/shp_tr_create.f90 ${CMAKE_SOURCE_DIR}/Common/write_eddy.f90 write_overlap.f90 ${CMAKE_CURRENT_LIST_DIR}/test_write_overlap.f90 - ${CMAKE_SOURCE_DIR}/Common/shp_tr_close.f90 unit_edge_m.f90 write_edge.f90) + ${CMAKE_SOURCE_DIR}/Common/shp_tr_close.f90 unit_edge_m.f90) target_link_libraries(test_write_overlap shapelib_03 contour_531 nr_util jumble) target_include_directories(test_write_overlap PRIVATE ${fortrangis_INCLUDE_DIR}) diff --git a/Overlap/Tests/test_overlap.f90 b/Overlap/Tests/test_overlap.f90 index 257c0d25ff6244f46267cc28724ab6193a6d4da7..9ee409088f8d10f37cab55ee20f145c0730d2c19 100644 --- a/Overlap/Tests/test_overlap.f90 +++ b/Overlap/Tests/test_overlap.f90 @@ -15,7 +15,7 @@ program test_overlap use shp_tr_close_m, only: shp_tr_close use shp_tr_create_m, only: shp_tr_create use shp_tr_open_m, only: shp_tr_open - use unit_edge_m, only: open_edge_file, unit_edge_cyclo, unit_edge_anti + use unit_edge_m, only: open_edge_file, unit_edge use write_overlap_m, only: init_interpolated_eddy implicit none @@ -98,22 +98,17 @@ program test_overlap call open_edge_file(rank = 0) ! Title lines: - write(unit_edge_cyclo, fmt = "(1x, a)") '"predecessor date subscript" ' & + write(unit_edge, fmt = "(1x, a)") '"predecessor date subscript" ' & // '"predecessor eddy subscript" "successor date subscript" ' & // '"successor eddy subscript"' - write(unit_edge_cyclo, fmt = *) "k1 i1 k2 i2 weight" - write(unit_edge_anti, fmt = "(1x, a)") '"predecessor date subscript" ' & - // '"predecessor eddy subscript" "successor date subscript" ' & - // '"successor eddy subscript"' - write(unit_edge_anti, fmt = *) "k1 i1 k2 i2 weight" + write(unit_edge, fmt = *) "k1 i1 k2 i2 weight" call shp_tr_create(hshp, shp_tr_dir = "SHPC") call init_interpolated_eddy call overlap(flow, nlon, nlat, periodic, dist_lim, hshp, k = k_test_2, & delta = max_delta, j = max_delta + 1) - close(unit_edge_cyclo) - close(unit_edge_anti) - print *, 'Created files "edgelist_cyclo.csv" and "edgelist_anti.csv".' + close(unit_edge) + print *, 'Created file "edgelist.csv".' CALL shp_tr_close(hshp) print *, 'Created shapefiles for interpolated eddies in SHPC.' diff --git a/Overlap/Tests/test_write_overlap.f90 b/Overlap/Tests/test_write_overlap.f90 index 8bbaba2bdc03b605c814bfed85a1e9cdc2ff3c25..86b9bf0f7b09bf1fc16dfb45f3b4330aef7cb326 100644 --- a/Overlap/Tests/test_write_overlap.f90 +++ b/Overlap/Tests/test_write_overlap.f90 @@ -5,7 +5,7 @@ program test_write_overlap use derived_types, only: shp_tr use shp_tr_close_m, only: shp_tr_close use shp_tr_create_m, only: shp_tr_create - use unit_edge_m, only: open_edge_file, unit_edge_cyclo, unit_edge_anti + use unit_edge_m, only: open_edge_file, unit_edge use write_overlap_m, only: write_overlap, init_interpolated_eddy implicit none @@ -28,14 +28,10 @@ program test_write_overlap call open_edge_file(rank = 0) ! Title lines: - write(unit_edge_cyclo, fmt = "(1x, a)") '"predecessor date subscript" ' & + write(unit_edge, fmt = "(1x, a)") '"predecessor date subscript" ' & // '"predecessor eddy subscript" "successor date subscript" ' & // '"successor eddy subscript"' - write(unit_edge_cyclo, fmt = *) "k1 i1 k2 i2 weight" - write(unit_edge_anti, fmt = "(1x, a)") '"predecessor date subscript" ' & - // '"predecessor eddy subscript" "successor date subscript" ' & - // '"successor eddy subscript"' - write(unit_edge_anti, fmt = *) "k1 i1 k2 i2 weight" + write(unit_edge, fmt = *) "k1 i1 k2 i2 weight" call shp_tr_create(hshp, shp_tr_dir = "SHPC") call init_interpolated_eddy @@ -43,9 +39,8 @@ program test_write_overlap i_interp = 10 + [(j_interp, j_interp = 1, delta - 1)], & cyclone = .true., coord_extr_1 = coord_extr_1, ssh_extr_1 = ssh_extr_1, & coord_extr_2 = coord_extr_2, ssh_extr_2 = ssh_extr_2, w = 0.) - close(unit_edge_cyclo) - close(unit_edge_anti) - print *, 'Created files "edgelist_cyclo.csv" and "edgelist_anti.csv".' + close(unit_edge) + print *, 'Created file "edgelist.csv".' CALL shp_tr_close(hshp) print *, 'Created shapefiles in SHPC.' diff --git a/Overlap/eddy_graph.f90 b/Overlap/eddy_graph.f90 index 1d5ae88e264b18e22f459e1d8a4dd40e83337c71..855b0403ea632d285d7ae1defb7dfe5a491c17ba 100644 --- a/Overlap/eddy_graph.f90 +++ b/Overlap/eddy_graph.f90 @@ -14,7 +14,7 @@ program eddy_graph use dispatch_snapshot_m, only: dispatch_snapshot use get_snapshot_m, only: get_snapshot use overlap_m, only: overlap - use unit_edge_m, only: open_edge_file, unit_edge_cyclo, unit_edge_anti + use unit_edge_m, only: open_edge_file, unit_edge use shp_tr_open_m, only: shp_tr_open use shp_tr_close_m, only: shp_tr_close use shp_tr_create_m, only: shp_tr_create @@ -206,8 +206,7 @@ program eddy_graph CALL shp_tr_close(hshp) close(unit_isolated) close(unit_number_eddies) - close(unit_edge_cyclo) - close(unit_edge_anti) + close(unit_edge) call mpi_finalize end program eddy_graph diff --git a/Overlap/eddy_graph_in.sh b/Overlap/eddy_graph_in.sh index c7c180c08fa7293cbfeecd0bf470589041b4f4f4..1dd8cf427b61f20f9cef53f35aef788ec0073bdf 100755 --- a/Overlap/eddy_graph_in.sh +++ b/Overlap/eddy_graph_in.sh @@ -1,7 +1,7 @@ #!/bin/bash -# This program creates edgelists and interpolated eddies. You run it -# only once and it processes both anticyclones and cyclones. +# This program creates the edge list and interpolated eddies, for a +# given orientation of eddies. # Note: no need to sort number_eddies.csv, already sorted by construction. @@ -36,11 +36,9 @@ rank=0 while ((rank < $1)) do cat number_eddies_$rank.csv >>number_eddies.csv - cat edgelist_cyclo_$rank.csv >>edgelist_cyclo_no_header.csv - cat edgelist_anti_$rank.csv >>edgelist_anti_no_header.csv + cat edgelist_$rank.csv >>edgelist_no_header.csv cat isolated_nodes_$rank.txt >>isolated_nodes.txt - rm number_eddies_$rank.csv edgelist_@(cyclo|anti)_$rank.csv \ - isolated_nodes_$rank.txt + rm number_eddies_$rank.csv edgelist_$rank.csv isolated_nodes_$rank.txt ((rank += 1)) done @@ -48,18 +46,15 @@ done export LC_NUMERIC=C # for the sort command -for orientation in cyclo anti -do - cat >edgelist_$orientation.csv <<EOF +cat >edgelist.csv <<EOF "predecessor date" "predecessor eddy subscript" "successor date" "successor eddy subscript" d1 i1 d2 i2 weight -$(sort --key=1 --key=2 --numeric-sort edgelist_${orientation}_no_header.csv) +$(sort --key=1 --key=2 --numeric-sort edgelist_no_header.csv) EOF - rm edgelist_${orientation}_no_header.csv -done +rm edgelist_no_header.csv -echo "Created files \"number_eddies.csv\", \"edgelist_cyclo.csv\", " \ - "\"edgelist_anti.csv\" and \"isolated_nodes.txt\"." +echo "Created files \"number_eddies.csv\", \"edgelist.csv\", " \ + "and \"isolated_nodes.txt\"." rm -rf SHPC mv SHPC_0 SHPC rank=1 diff --git a/Overlap/unit_edge_m.f90 b/Overlap/unit_edge_m.f90 index 3517b6c9b5cdb91133d9d5af50919dc2ed2eca2d..7506d5e58c067c260334b04f8d5a7d64590acb88 100644 --- a/Overlap/unit_edge_m.f90 +++ b/Overlap/unit_edge_m.f90 @@ -2,8 +2,8 @@ module unit_edge_m implicit none - integer, protected:: unit_edge_cyclo = - huge(0), unit_edge_anti = - huge(0) - ! logical unit numbers for files containing edge lists + integer, protected:: unit_edge = - huge(0) + ! logical unit numbers for file containing edge list contains @@ -18,15 +18,9 @@ contains !-------------------------------------------------------------- - call new_unit(unit_edge_cyclo) - write(unit = file, fmt = '("edgelist_cyclo_", i0, ".csv")') rank - open(unit_edge_cyclo, file = trim(file), status = "replace", & - action = "write") - - call new_unit(unit_edge_anti) - write(unit = file, fmt = '("edgelist_anti_", i0, ".csv")') rank - open(unit_edge_anti, file = trim(file), status = "replace", & - action = "write") + call new_unit(unit_edge) + write(unit = file, fmt = '("edgelist_", i0, ".csv")') rank + open(unit_edge, file = trim(file), status = "replace", action = "write") end subroutine open_edge_file diff --git a/Overlap/write_edge.f90 b/Overlap/write_edge.f90 deleted file mode 100644 index 69538262fec14b92220859229bc24056453a71ea..0000000000000000000000000000000000000000 --- a/Overlap/write_edge.f90 +++ /dev/null @@ -1,25 +0,0 @@ -module write_edge_m - - implicit none - -contains - - subroutine write_edge(cyclone, k1, i1, k2, i2, w) - - use unit_edge_m, only: unit_edge_cyclo, unit_edge_anti - - logical, intent(in):: cyclone - integer, intent(in):: k1, i1, k2, i2 - real, intent(in):: w - - ! Local: - integer unit_edge - - !-------------------------------------------------------------------- - - unit_edge = merge(unit_edge_cyclo, unit_edge_anti, cyclone) - write(unit_edge, fmt = *) k1, i1, k2, i2, w - - end subroutine write_edge - -end module write_edge_m diff --git a/Overlap/write_overlap.f90 b/Overlap/write_overlap.f90 index beb30bdc6d8f8b90ff5c7bcead5f338e4a72ddb6..6df325e809041ed1eb5b3a0b69ec1119179d853b 100644 --- a/Overlap/write_overlap.f90 +++ b/Overlap/write_overlap.f90 @@ -19,8 +19,8 @@ contains use nr_util, only: twopi use derived_types, only: shp_tr + use unit_edge_m, only: unit_edge use write_eddy_m, only: write_eddy - use write_edge_m, only: write_edge TYPE(shp_tr), intent(in):: hshp_interp integer, intent(in):: k ! date index @@ -65,12 +65,12 @@ contains k_interp = k - delta + j_interp call write_eddy(e, hshp_interp, k_interp, i_interp(j_interp)) - call write_edge(cyclone, k_interp - 1, i_pred, k_interp, & - i_interp(j_interp), w) + write(unit_edge, fmt = *) k_interp - 1, i_pred, k_interp, & + i_interp(j_interp), w i_pred = i_interp(j_interp) end do - call write_edge(cyclone, k - 1, i_pred, k, i2, w) + write(unit_edge, fmt = *) k - 1, i_pred, k, i2, w end subroutine write_overlap