Skip to content

introduce consistent FLOWLINK parameters for KCU values#1011

Open
hrajagers wants to merge 10 commits into
mainfrom
all/feature/UNST-10053_introduce_FLOWLINK_parameters
Open

introduce consistent FLOWLINK parameters for KCU values#1011
hrajagers wants to merge 10 commits into
mainfrom
all/feature/UNST-10053_introduce_FLOWLINK_parameters

Conversation

@hrajagers

Copy link
Copy Markdown
Member

What was done

  • Introduced a set of FLOWLINK_ parameters to replace the magic numbers -2,-1,1,2,3,4,5,7.

Evidence of the work done

  • Video/figures
    <add video/figures if applicable>
  • Clear from the issue description
  • Not applicable

Tests

  • Tests updated
    <add testcase numbers if applicable, Issue number>
  • Not applicable

Documentation

  • Documentation updated
    <add description of changes if applicable, Issue number>
  • Not applicable

Issue link

Closes UNST-10053

@hrajagers hrajagers self-assigned this Jun 26, 2026
@hrajagers hrajagers marked this pull request as ready for review June 29, 2026 16:18
@hrajagers hrajagers requested a review from Copilot June 29, 2026 18:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 in network_data (including boundary and closed link codes).
  • Replaced many comparisons/assignments of kn(3, :) and kcu(:) magic numbers with LINK_* 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_yu to LINK_xu/LINK_yu changes 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.

hrajagers and others added 4 commits June 29, 2026 23:44
…NST-10053_introduce_FLOWLINK_parameters

Resolved conflicts:
#	src/engines_gpl/dflowfm/packages/dflowfm_kernel/src/dflowfm_io/unstruc_netcdf.f90
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants