De koppeling tussen het 1D en 2D mesh gaat via de 1D2D links. Deze verbindingen zijn vergelijkbaar met de ‘normale’ flowlinks tussen 1D-rekenpunten en 2D-rekenpunten: de volledige stromingsvergelijking met momentum worden opgelost. De link wordt dus niet gesimuleerd met een overlaatvergelijking, zoals dit bij SOBEK gebeurde. Dit is overigens in D-Hydro wel mogelijk door een landboundary de specificeren die de 1D2D-link kruist.
Het genereren van de linkjes met D-Hydamo gaat met de functies generate_1d_to_2d
en generate_2d_to_1d
. De eerste probeert vanuit elk 1D rekenpunt een koppeling met een 2D cell te leggen, de tweede omgekeerd.
1D naar 2D
De functie generate_1d_to_2d
biedt de mogelijkheid om linkjes te genereren met een maximale lengte, en op specifieke takken. De codedocumentatie ligt toe hoe de functie te gebruiken.
def generate_1d_to_2d(self, max_distance=np.inf, branchid=None): """ Generate 1d2d links from 1d nodes. Each 1d node is connected to the nearest 2d cell. A maximum distance can be specified to remove links that are too long. Also the branchid can be specified, if you only want to generate links from certain 1d branches. Parameters ---------- max_distance : int, float The maximum length of a link. All longer links are removed. branchid : str or list ID's of branches for which the connection from 1d to 2d is made. """
2D naar 1D
De functie generate_2d_to_1d
biedt de mogelijkheid om van 2D naar 1D te genereren. Hierin wordt onderscheidt gemaakt tussen links tussen:
overlappende cellen. Het 1d en 2d mesh kruisen elkaar, vaak in het geval van kleine watergangen. Per 2d cel wordt een link gelegd naar de 1d cel(len) die het kruist.
niet overlappende cellen. De meshes liggen naast elkaar, vaak in het geval van grotere watergangen en riviertakken. In dit geval kan niet op basis van overlap een link worden gelegd, dus wordt er gezocht naar de dichtstbijzijnde 1d cel, vanuit 2d. In tegenstelling tot de 1d-naar-2d optie wordt er dus wel links en rechts een verbinding gelegd. Om te zorgen dat alleen cellen direct naast de watergang een verbinding krijgen worden alle verbindingen die een andere 2d-cel kruisen verwijderd.
De codedocumentatie biedt meer informatie over het gebruik van de functie.
def generate_2d_to_1d(self, max_distance=np.inf, intersecting=True, branchid=None): """ Generate 1d2d links from 2d cells. A maximum distance can be specified to remove links that are too long. Also a branchid can be specified to only generate links to certain branches. In case of a 1D and 2D grid that is on top of each other the user might want to generate links only for intersecting cells, where in case of non-overlapping meshes the use might want to use the shortest distance. This behaviour can be specified with the option intersecting: 1. intersecting = True: each 2d cell crossing a 1d branch segment is connected to the nearest 1d cell. 2. intersecting = False: each 2d cell is connected to the nearest 1d cell, If the link crosses another cell it is removed. In case of option 2. setting a max distance will speed up the the process a bit. Parameters ---------- max_distance : int, float Maximum allowed length for a link intersecting : bool Make connections for intersecting 1d and 2d cells or based on nearest neighbours branchid : str or list of str Generate only to specified 1d branches """
Add Comment