Advanced packages commonly define a set of features in packagedata, then reference them by feature number from several other blocks. This is a one-to-many PK/FK relationship where an arbitrary number of rows in other blocks may reference each row/feature in packagedata.
For example, LAK, MAW, and UZF (and GWT/GWE variants') connectiondata. The "feature number" field name may vary (generally ifno, but some use custom names like rno/lakeno/mawno/uzfno) but the pattern is the same: one row per connection.
SFR connectiondata, on the other hand, has one row per reach, with rows defined as (ifno, ic), where ic is a variable-length inline array of size ncon, looked up in packagedata for the given ifno. Consider normalizing this to one row per connection? This would be a breaking change and would make input files more verbose, but would follow the established pattern for other advanced packages.
Advanced packages commonly define a set of features in
packagedata, then reference them by feature number from several other blocks. This is a one-to-many PK/FK relationship where an arbitrary number of rows in other blocks may reference each row/feature inpackagedata.For example, LAK, MAW, and UZF (and GWT/GWE variants')
connectiondata. The "feature number" field name may vary (generallyifno, but some use custom names likerno/lakeno/mawno/uzfno) but the pattern is the same: one row per connection.SFR
connectiondata, on the other hand, has one row per reach, with rows defined as(ifno, ic), whereicis a variable-length inline array of sizencon, looked up inpackagedatafor the givenifno. Consider normalizing this to one row per connection? This would be a breaking change and would make input files more verbose, but would follow the established pattern for other advanced packages.