Dewberry / ripple1d

Utilities for reuse of HEC-RAS models for NWM
https://ripple1d.readthedocs.io/en/latest/
MIT License
3 stars 0 forks source link

Duplicate cross section names #225

Open sclaw opened 1 month ago

sclaw commented 1 month ago

HEC-RAS can only take cross section names of length 8 characters. To fix cases when a sub model would have name greater than 8 length, names are stored as floats and rounded to the nearest whole number. This can create instances of duplicate cross section names, especially when an engineer elected to put their names in units of miles. RAS models with duplicate cross sections are invalid and will not run. See example below. Suggested: use autoincremented station names instead of preserving original stationing/names.

Collection: mip_02050107 Model: SusquehRvr_DanvilleLAMP Sub model: 8153841

Source model: image

Sub model (does not run): image

ar-siddiqui commented 1 month ago

Did the original model have duplicate names? I must be missing something but why can't we just use what was in the original model?

sclaw commented 1 month ago

The original model did not have duplicate names. When this sub model is created, it adjusts stationing from the most d/s cross section (581386). The second cross-section was originally 0.16, but it becomes 581386.16. Since 581386.16 is more than 8 characters (RAS name length limit), ripple1d rounds the name to 581386.0.

ar-siddiqui commented 1 month ago

Is there a reason why we are renaming cross-sections and not using original cross section names?

sclaw commented 1 month ago

I think that decision came out of a conversation before I joined. @mdeshotel can you weigh in?

mdeshotel commented 1 month ago

We have to ensure that river stationing increases as we move upstream (RAS requirement). So if the most downstream cross section on a tributary originally started at 1000 but the main stem (whose cross section we are also using) has a station of 500000 we need to increase the tributary river station to be 500000 + 1000 to ensure river stationing increases as we move upstream.

Secondly different RAS models represent stationing as an integer and some as a floating point (an engineers decision). This causes issues between the text file names and how hdf was storing the names, so forcing it to be floating point was just cleaner.

Similar to the first point, river station 500000 + 15.3948=500015.3948 results in 10 characters. This exceeds the 8 character limit so rounding was implemented to avoid this; i.e, 500015.4.

I think the rounding is causing issues here for models whose river stationing is in miles instead of feet.

As I mentioned previously, because of these complications, I would recommend that we rename the river stations to be 1,2,3,4,5, etc. Simple, clean, and less chance for these issues.

-reminder that RAS doesn't use these river stations for calculations so it would not effect the results.

ar-siddiqui commented 1 month ago

Ah so RAS does not use station names in calculations but still wants them in order? weird.

mdeshotel commented 1 month ago

yes that is correct. -very weird. furthermore, I found that you can sort of hack RAS by passing a non-numeric character to the river stationing (via the geometry text file) which it will accept.. but we would run into similar character limit issues if we tried to prepended some random non-numeric character to the source model stationing.

ar-siddiqui commented 1 month ago

I don't have any issues with the solution you recommended here. @sclaw do you take any issue with this solution? We should document why we did what we did in technical documentation.

As I mentioned previously, because of these complications, I would recommend that we rename the river stations to be 1,2,3,4,5, etc. Simple, clean, and less chance for these issues.

sclaw commented 1 month ago

It think that's a great solution.