introduce consistent FLOWLINK parameters for KCU values#1011
Open
hrajagers wants to merge 10 commits into
Open
introduce consistent FLOWLINK parameters for KCU values#1011hrajagers wants to merge 10 commits into
hrajagers wants to merge 10 commits into
Conversation
…_2D_BOUNDARY and LINK_1D_BOUNDARY in network_data.
…ent parameters defined in network_data
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces named LINK_* constants for flow/net link type codes and updates many call sites to use these constants instead of hard-coded integers (e.g., -2, -1, 0, 1, 2, 3, 4, 5, 7), improving readability and reducing “magic number” usage across grid/network operations.
Changes:
- Added additional
LINK_*parameters innetwork_data(including boundary and closed link codes). - Replaced many comparisons/assignments of
kn(3, :)andkcu(:)magic numbers withLINK_*constants across pre-/post-processing, compute, IO, and GUI code. - Renamed some identifiers/constants (e.g., intersection type) and updated callers accordingly.
Reviewed changes
Copilot reviewed 84 out of 84 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/utils_lgpl/gridgeom/packages/gridgeom/src/network_data.f90 | Adds/extends LINK_* parameters for link type codes. |
| src/utils_lgpl/gridgeom/packages/gridgeom/src/gridoperations.F90 | Replaces link-type magic numbers in grid operations logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_utils/unstruc_display.F90 | Uses LINK_1D constant when interpreting kcu for display. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_utils/rest_f90/find_crossed_links_kdtree2.f90 | Renames 1D-dual intersection type constant and updates logic/docs. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_utils/copylandboundaryto1dnetwork.f90 | Uses LINK_1D when creating 1D net links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_rgf/gridtonet.f90 | Uses LINK_2D when generating 2D net links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_rgf/connecthangingnodes.f90 | Uses LINK_2D/LINK_CLOSED for hanging node link creation/removal. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/timespace/fm_external_forcings.f90 | Uses LINK_1D_BOUNDARY/LINK_1D when selecting advection/link behavior. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/triangulatesamplestonetwork.f90 | Uses LINK_2D when creating links from triangulation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/thindams_on_netgeom.f90 | Uses LINK_CLOSED for thin-dam disabled net links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/sortlinks.f90 | Replaces link-type checks with LINK_* constants in sort logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/shift1dnetnodestoduikers.f90 | Uses LINK_CLOSED when disabling replaced links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/setlinktocenterweights.f90 | Skips LINK_1D2D_INTERNAL links using constant. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/setfixedweirs.f90 | Uses LINK_* constants to restrict fixed weirs by link type. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/setbranch_lc.f90 | Uses LINK_1D/LINK_1D_MAINBRANCH for branch counting/admin. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/setbobsonroofs.f90 | Uses LINK_2D/LINK_1D2D_ROOF constants in roof processing. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/setbobs.f90 | Uses LINK_* constants for bedlevel/bob logic across link types. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/setbedlevelfromextfile.f90 | Uses LINK_* constants for selecting 1D/2D net links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/remove_isolated_hanging_nodes.f90 | Uses LINK_2D constant in hanging-node removal logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/regrid1d.f90 | Uses LINK_1D when recreating 1D links during regrid. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/refinequads_casulli.f90 | Uses LINK_CLOSED for refinement skipping/disable logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/preparecells.f90 | Uses LINK_1D2D_* constants for 1D-in-2D contact handling. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/orthogonalisenet.f90 | Uses LINK_2D when handling problematic links for diagnostics. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/mergenodesinpolygon.f90 | Uses LINK_* constants when classifying/merging nodes/links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/makethindamadmin.f90 | Uses LINK_CLOSED when generating thin-dam admin. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/makenetnodescoding.f90 | Uses LINK_2D/LINK_CLOSED in net node coding. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/makenet.f90 | Uses LINK_1D when creating parametric 1D networks. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/make_mirrorcells.f90 | Uses LINK_2D/LINK_1D constants for mirror cell construction. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/make_dual_mesh.f90 | Uses LINK_2D when constructing a dual mesh. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/m_mergenodes.f90 | Uses LINK_CLOSED when disabling links during node merge. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/insert_netline.f90 | Uses LINK_2D to classify links when inserting a netline. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/getdxofconnectedkcu1.f90 | Uses LINK_1D/LINK_1D_MAINBRANCH when computing lateral widths. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/getcellsurface1d.f90 | Uses LINK_* constants for 1D surface area bookkeeping. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/getblu_from_bob.f90 | Uses LINK_1D2D_* constants in blu derivation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/get1ddir.f90 | Uses LINK_1D2D_INTERNAL constant to filter links for direction estimation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/get_meshbounds.f90 | Uses LINK_2D in mesh bounds computation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/get_link_neighboringcellcoords.f90 | Uses LINK_* constants for 1D vs 2D neighboring-cell coordinate lookup. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/gaanwestoppen.f90 | Uses LINK_1D/LINK_1D_MAINBRANCH in stop-criteria logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/flow_geominit.f90 | Replaces many kcu/kn3 magic numbers with LINK_* constants during geometry init. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/flow_flowinit.f90 | Replaces internal “link type” constants with LINK_* from network_data. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/flow_allocflow.f90 | Uses LINK_2D when scanning net links for 2D ranges. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/delnet.f90 | Uses LINK_CLOSED/LINK_2D in delete-net logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/cutcell_list.f90 | Uses LINK_2D when disabling flow-links associated with disabled net-links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/count_links.f90 | Uses LINK_1D/LINK_1D_MAINBRANCH for endpoint/link counting. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/closeto1dnetlink.f90 | Uses LINK_* constants when selecting 1D/pipe links for proximity tests. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/allocatelinktocornerweights.f90 | Uses LINK_2D/LINK_CLOSED in corner weight allocation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/prepost/addexternalboundarypoints.f90 | Uses LINK_2D_BOUNDARY/LINK_1D_BOUNDARY/LINK_2D in boundary point creation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/volume_table.f90 | Uses LINK_1D/LINK_1D_BOUNDARY when building volume tables. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/vol12d.f90 | Uses LINK_1D_BOUNDARY/LINK_1D2D_* constants in volume assembly. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/switchiadvnearlink.f90 | Uses LINK_1D/LINK_2D for advection switching near links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/setucxy1d.f90 | Uses LINK_1D_BOUNDARY for 1D boundary velocity assignment. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/setucxucyucxuucyunew.f90 | Uses LINK_1D2D_INTERNAL to skip internal links in accumulation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/setucxucyucxuucyu.f90 | Uses LINK_1D2D_INTERNAL/LINK_1D2D_LONGITUDINAL in velocity logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/setuc1d.f90 | Uses LINK_1D_BOUNDARY for boundary link handling. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/qucperpure1d.f90 | Uses LINK_1D_BOUNDARY constant to handle boundary links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/oned_functions.f90 | Uses LINK_* constants for 1D roughness/bobs/inflow bookkeeping. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/m_longculverts.f90 | Uses LINK_1D/LINK_1D2D_STREETINLET when identifying culvert-related links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/m_dambreak_breach_submodule.f90 | Uses LINK_1D2D_INTERNAL for dambreak link-width handling. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/m_1d2d_fixedweirs.f90 | Uses LINK_1D2D_INTERNAL/LINK_2D when finding/applying fixed weir effects. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/getprof_1d.f90 | Uses LINK_1D_BOUNDARY constant for custom boundary width handling. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/furu.f90 | Uses LINK_1D2D_INTERNAL in fixed-weir friction selection. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/furu_structures.f90 | Uses LINK_1D constant when selecting 1D structure treatment. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/duikerstoprofs.f90 | Uses LINK_1D/LINK_1D2D_STREETINLET constants for culvert profile mapping. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/advec.f90 | Uses LINK_1D/LINK_1D2D_INTERNAL constants in advection volume weighting. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/addlink1dkcu3.f90 | Updates comments to reference LINK_* constants. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute/addlink1d.f90 | Uses LINK_1D constant in 1D link volume computations. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute_waves/tauwavefetch.f90 | Uses LINK_CLOSED constant when identifying closed links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute_waves/surfbeat/xbeachwaves.f90 | Partially replaces magic number usage; updates comment to LINK_2D. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute_sediment/setucxucy_mor.f90 | Uses LINK_1D2D_INTERNAL to exclude internal links from accumulation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute_sediment/fm_upwbed.f90 | Uses LINK_1D_BOUNDARY constant in pure-1D morph boundary handling. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_kernel/compute_hydrology/setgrwflowexpl.f90 | Updates comment to reference LINK_1D2D_STREETINLET. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_io/wrwaq.F90 | Uses LINK_1D/LINK_1D_MAINBRANCH constants for WAQ geometry/export handling. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_io/unstruc_netcdf.f90 | Replaces several hard-coded link type values; also renames NetCDF flowlink coordinate variable names. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_io/reajanet.f90 | Uses LINK_2D when reading net links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_io/readadcircnet.f90 | Uses LINK_2D for generated ADCIRC links. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_gui/tekrai.f90 | Uses renamed intersection constant for 1D dual flowlink crossing. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_gui/teknet.f90 | Uses LINK_* constants in drawing logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_gui/setlinkcolour.f90 | Uses LINK_* constants to map link types to colors. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_gui/editnetw.f90 | Uses LINK_* constants when editing link types interactively. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_gui/changenumericalparameters4.f90 | Uses LINK_* constants when updating uniform profile parameters by link type. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_data/unstruc_structures.f90 | Updates internal variable naming and uses LINK_2D constant for midpoint logic. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_data/partition.F90 | Uses LINK_CLOSED to disable links and updates imports accordingly. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_data/m_flowgeom.f90 | Updates comments to reference LINK_* constants in documentation. |
| src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_data/allocateandset1dnodexyarrays.f90 | Uses LINK_1D/LINK_1D2D_LONGITUDINAL constants to filter links for plotting. |
Comments suppressed due to low confidence (1)
src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_io/unstruc_netcdf.f90:3889
- Renaming NetCDF variable names from
FlowLink_xu/FlowLink_yutoLINK_xu/LINK_yuchanges the output schema and will break backward compatibility for restart/map readers and downstream tooling expecting the established names. This appears unrelated to introducing LINK_* constants for KCU values, so consider keeping the NetCDF names stable (or adding fallback read support for the old names).
if (lnx > 0) then
ierr = nf90_def_var(irstfile, 'LINK_xu', nf90_double, [id_flowlinkdim], id_flowlinkxu)
ierr = nf90_def_var(irstfile, 'LINK_yu', nf90_double, [id_flowlinkdim], id_flowlinkyu)
ierr = unc_addcoordatts(irstfile, id_flowlinkxu, id_flowlinkyu, jsferic)
ierr = nf90_put_att(irstfile, id_flowlinkxu, 'long_name', 'x-coordinate of flow link center (velocity point)')
ierr = nf90_put_att(irstfile, id_flowlinkyu, 'long_name', 'y-coordinate of flow link center (velocity point)')
end if
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…NST-10053_introduce_FLOWLINK_parameters Resolved conflicts: # src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_io/unstruc_netcdf.f90
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was done
FLOWLINK_parameters to replace the magic numbers -2,-1,1,2,3,4,5,7.Evidence of the work done
<add video/figures if applicable>
Tests
<add testcase numbers if applicable, Issue number>
Documentation
<add description of changes if applicable, Issue number>
Issue link
Closes UNST-10053