wolfhece.wolfresults_2D
Author: HECE - University of Liege, Pierre Archambeau Date: 2024
Copyright (c) 2024 University of Liege. All rights reserved.
This script and its content are protected by copyright law. Unauthorized copying or distribution of this file, via any medium, is strictly prohibited.
Module Contents
- wolfhece.wolfresults_2D.outside_domain(val)[source]
Test if a value is outside the calculated domain
- wolfhece.wolfresults_2D.q_splitting(q_left, q_right)[source]
Splitting of the normal flow between two nodes
- wolfhece.wolfresults_2D.u_splitting(q_left, q_right, h_left, h_right)[source]
Splitting of the normal flow velocity between two nodes
- class wolfhece.wolfresults_2D.Props_Res_2D(parent: Wolfresults_2D, mapviewer=None)[source]
Bases:
wx.Frame
Fenêtre de propriétésd’un Wolfresults_2D
- class wolfhece.wolfresults_2D.views_2D[source]
Bases:
enum.Enum
Generic enumeration.
Derive from this class to define new enumerations.
- class wolfhece.wolfresults_2D.OneWolfResult(idx: int = 0, parent=None)[source]
Stockage des résultats d’un bloc de modèle WOLF2D
- property SelectionData: wolfhece.wolf_array.SelectionDataMB[source]
Return the data of the selection
- set_linkedvec(link: wolfhece.PyVertexvectors.vector)[source]
Set the linked vecteor – used for masking outside the vector
- set_epsilon(eps: float)[source]
Définit la valeur de l’epsilon pour le masquage des données.
Toute valeur de waterdepth inférieure à eps sera masquée. see “filter_inundation”
- Parameters:
eps – valeur de l’epsilon
- filter_inundation()[source]
- Apply filter on array :
mask data below eps
mask data outisde linkedvec
- filter_independent_zones(n_largest: int = 1)[source]
Apply filter on array : mask data outside n_largest independant zones
- set_current(which: views_2D)[source]
Définition de la vue courante
- Parameters:
which – vue courante (voir enum views_2D)
- update_pal(curpal: wolfhece.PyPalette.wolfpalette, graypal=None, bluepal=None)[source]
Mise à jour de la palette
- Parameters:
curpal – palette courante
graypal – palette grise
bluepal – palette bleue
- get_critdiam(which: int) wolfhece.wolf_array.WolfArray [source]
Calcul du dimètre critique
:param which : 0 = Shields ; 1 = Izbach
- get_u_shear() wolfhece.wolf_array.WolfArray [source]
Calcul de la vitesse de cisaillement
- get_shieldsnumber() wolfhece.wolf_array.WolfArray [source]
Calcul du nombre de Shields
- class wolfhece.wolfresults_2D.Wolfresults_2D(fname: str = None, mold=None, eps=0.0, idx: str = '', plotted: bool = True, mapviewer=None, need_for_wx: bool = False, loader=None)[source]
Bases:
wolfhece.drawing_obj.Element_To_Draw
Manipulation des résultats d’un modèle WOLF2D en multiblocs
La classe hérite de ‘Element_To_Draw’ afin d’être sûr de disposer des informations pour un éventuel affichage dans un viewer ‘WolfMapViewer’
- ATTENTION :
la classe contient un dictionnaire ‘myblocks’ d’objets ‘OneWolfResult’
les clés du dictionnaire sont de type ‘block1’, ‘block2’… ‘blockn’ –> voir fonction ‘getkeyblock’
les entrées ne sont PAS des matrices multiblocks ‘WolfArrayMB’ mais une classe ‘OneWolfResult’ contient plusieurs matrices pour chaque type de résultat (water depth, dischargeX, dischargeY, …)
la classe se comporte donc un peu comme une généralisation d’une matrice ‘WolfArrayMB’ mais il ne s’agit pas d’une extension par polymorphisme
on retrouve cependant plusieurs routines similaires afin de faciliter l’intégration dans un viewer WX
- property SelectionData: wolfhece.wolf_array.SelectionDataMB[source]
Return the data of the selection
- property active_blocks: list[wolfhece.wolf_array.WolfArray][source]
Return the active blocks
- myblocks: dict[str, OneWolfResult][source]
- head_blocks: dict[str, wolfhece.wolf_array.header_wolf][source]
- myblocfile: wolfhece.mesh2d.wolf2dprev.blocks_file[source]
- get_bounds(abs=True)[source]
Return bounds in coordinates
:param abs = if True, add translation to (x, y) (coordinate to global space) :return : tuple of two lists of two floats - ([xmin, xmax],[ymin, ymax])
- get_header(abs=True) wolfhece.wolf_array.header_wolf [source]
Récupération de l’entête de la matrice
- as_WolfArray(copyarray: bool = True, force_mb=False) wolfhece.wolf_array.WolfArray | wolfhece.wolf_array.WolfArrayMB [source]
Récupération d’une matrice MB ou Mono sur base du résultat courant
:param copyarray : si True alors on copie les données :param force_mb : if True then return a WolfArrayMB even if there is only one block
- load_default_colormap(which: str)[source]
Lecture d’une palette disponible dans le répertoire “models”
- get_times_steps(nb: int = None)[source]
Récupération des temps réels et des pas de calcul de chaque résultat sur disque
:param nb : nombre de résultats à lire - si None alors on lit tous les résultats :return : tuple (liste des temps, liste des pas de calcul)
- filter_inundation(eps: float = None, linkedvec: wolfhece.PyVertexvectors.vector = None)[source]
Apply filtering on array
:param eps : mask data below eps :param linkedvec : mask data outside linkedvec
- set_currentview(which=None, force_wx=False, force_updatepal: bool = False)[source]
Set the current view –> see ‘views_2D’ for supported values
:param which : view to set :param force_wx : if True, a wx dialog will be shown to set the minimum size of the vector field :param force_updatepal : if True, the palette will be updated
- allocate_ressources()[source]
Allocation de l’espace mémoire utile pour le stockage des résultats de chaque bloc
- get_nbresults(force_update_timessteps=True)[source]
Récupération du nombre de pas sauvegardés –> utilisation de la librairie Fortran
- read_oneblockresult_withoutmask(which_step: int = -1, whichblock: int = -1)[source]
Lecture d’un résultat pour un bloc spécifique –> utilisation de la librairie Fortran
:param which_step : timestep ; 0-based; -1 == last one :param whichblock : block index
- _read_oneblockresult_withoutmask_only_h(which_step: int = -1, whichblock: int = -1)[source]
Lecture d’un résultat pour un bloc spécifique –> utilisation de la librairie Fortran
:param which_step : timestep ; 0-based; -1 == last one :param whichblock : block index
- read_oneblockresult(which_step: int = -1, whichblock: int = -1)[source]
Lecture d’un résultat pour un bloc spécifique et application d’un masque sur base d’nu epsilon de hauteur d’eau
which_step: result number to read ; 0-based; -1 == last one whichblock : block index ; 1-based
- _read_oneblockresult_only_h(which_step: int = -1, whichblock: int = -1)[source]
Lecture d’un résultat pour un bloc spécifique et application d’un masque sur base d’nu epsilon de hauteur d’eau
which_step: result number to read ; 0-based; -1 == last one whichblock : block index ; 1-based
- read_oneresult(which: int = -1)[source]
Lecture d’un pas de sauvegarde
- Parameters:
which – result number to read; 0-based; -1 == last one
- _read_oneresult_only_h(which: int = -1)[source]
Lecture d’un pas de sauvegarde
- Parameters:
which – result number to read; 0-based; -1 == last one
- set_hqxqy_as_initial_conditions(idx: int = None, as_multiblocks: bool = True)[source]
Set the result as IC
:param idx : 0-based index
- set_keps_as_initial_conditions(idx: int = None, as_multiblocks: bool = True)[source]
Set the turbulent result as IC
:param idx : 0-based index
- get_h_for_block(block: int | str) wolfhece.wolf_array.WolfArray [source]
Retourne la matrice de hauteur d’eau pour un bloc spécifique
block : numéro du bloc; 1-based;
- get_top_for_block(block: int | str) wolfhece.wolf_array.WolfArray [source]
Retourne la matrice de topographie pour un bloc spécifique
block : numéro du bloc; 1-based;
- get_qx_for_block(block: int | str) wolfhece.wolf_array.WolfArray [source]
Retourne la matrice de débit selon X pour un bloc spécifique
block : numéro du bloc; 1-based;
- get_qy_for_block(block: int | str) wolfhece.wolf_array.WolfArray [source]
Retourne la matrice de débit selon Y pour un bloc spécifique
block : numéro du bloc; 1-based;
- get_values_as_wolf(i: int, j: int, which_block: int = 1)[source]
Retourne les valeurs associées à des indices (i,j) et un numéro de block
which_block : numéro du bloc; 1-based;
*** ATTENTION :
Les indices sont passés comme WOLF –> en numérotation Fortran (démarrage à 1 et non à 0)
- get_values_turb_as_wolf(i: int, j: int, which_block: int = 1)[source]
Retourne les valeurs de turbulence associées à des indices (i,j) et un numéro de block
which_block : numéro du bloc; 1-based;
ATTENTION : Les indices sont passés comme WOLF –> en numérottaion Fortran (démarrage à 1 et non à 0)
- get_header_block(which_block=1) wolfhece.wolf_array.header_wolf [source]
Obtention du header_wolf d’un block
which_block : numéro du bloc; 1-based;
- get_xy_infootprint_vect(myvect: wolfhece.PyVertexvectors.vector, which_block=1) tuple[numpy.ndarray, numpy.ndarray] [source]
:return numpy array content les coordonnées (x,y) des mailles dans l’empreinte du vecteur
- get_ij_infootprint_vect(myvect: wolfhece.PyVertexvectors.vector, which_block=1) numpy.ndarray [source]
- Returns:
numpy array content les indices ij des mailles dans l’empreinte du vecteur
- get_xy_inside_polygon(myvect: wolfhece.PyVertexvectors.vector, usemask=True)[source]
- Obtention des coordonnées contenues dans un polygone
usemask = restreint les éléments aux éléments non masqués de la matrice
- get_xy_under_polyline(myvect: wolfhece.PyVertexvectors.vector) dict[str, int, int] [source]
- Obtention des coordonnées (x,y) sous une polyligne avec séparation des points par bloc
usemask = restreint les éléments aux éléments non masqués de la matrice
- get_values_insidepoly(myvect: wolfhece.PyVertexvectors.vector, usemask: bool = True, agglo: bool = True, getxy: bool = False)[source]
Retourne les valeurs des mailles contenues dans un polygone Traite la matrice courante et l’altitude de fond si on est en vue ‘views_2D.WATERLEVEL’
:param myvect : polygone :param usemask (optional) restreint les éléments aux éléments non masqués de la matrice :param agglo (optional) agglomère le résultat en une seule liste plutôt que d’avoir autant de liste que de blocs :param getxy (optional) retourne en plus les coordonnées des points
:return myvalues : valeurs des mailles
- get_all_values_insidepoly(myvect: wolfhece.PyVertexvectors.vector, usemask=True, agglo=True, getxy=False)[source]
Récupération de toutes les valeurs dans un polygone
usemask (optional) restreint les éléments aux éléments non masqués de la matrice getxy (optional) retourne en plus les coordonnées des points
- get_all_values_underpoly(myvect: wolfhece.PyVertexvectors.vector, usemask=True, agglo=True, getxy=False, integrate_q=False)[source]
Récupération de toutes les valeurs sous la polyligne Les valeurs retrounées sont identiques à la fonction “get_values_from_xy” soit (h,qx,qy,vx,vy,vabs,fr,h+top,top),(i+1,j+1,curblock.idx+1)
usemask (optional) restreint les éléments aux éléments non masqués de la matrice getxy (optional) retourne en plus les coordonnées des points agglo (optional) agglomère le résultat en une seule liste plutôt que d’avoir autant de liste que de blocs
- get_q_alongpoly(myvect: wolfhece.PyVertexvectors.vector, x_or_y: str = 'x', to_sum=True)[source]
alias
- get_q_underpoly(myvect: wolfhece.PyVertexvectors.vector, x_or_y: str = 'x', to_sum=True)[source]
Récupération du débit sous un vecteur
to_sum pour sommer les valeurs et multiplier par la taille de maille
- get_q_alongpoly_with_neighbor(myvect: wolfhece.PyVertexvectors.vector, x_or_y: str = 'x', to_sum=True)[source]
Récupération du débit sous un vecteur mais uniquement si un voisin existe dans la direction d’intégration
to_sum pour sommer les valeurs et multiplier par la taille de maille
- get_q_alongpoly_raster_splitting(myvect: wolfhece.PyVertexvectors.vector, to_sum=True, to_rasterize=True)[source]
Récupération du débit sous un vecteur après avoir rasterisé selon les bords et appliqué le splitting WOLF aux flux
Forcage préalable du vecteur slon la grille de calcul
:param myvect : wolf polyline :param to_sum : pour sommer les valeurs et multiplier par la taille de maille :param to_rasterize : pour rasteriser le vecteur selon la grille de calcul
- _plot_one_q(vect: wolfhece.PyVertexvectors.vector, x_or_y: str = 'x', absolute=True) float [source]
- _plot_one_q_raster_splitting(vect: wolfhece.PyVertexvectors.vector, absolute=True, to_rasterize=True) float [source]
- setup_cache(start_idx: int, end_idx: int = -1, only_h: bool = False)[source]
Setup cache for results
#FIXME : not implemented for général 2D results – just for GPU Defined here for compatibility
- clear_cache()[source]
Clear cache
#FIXME : not implemented for général 2D results – just for GPU Defined here for compatibility
- get_hydrographs(vect: wolfhece.PyVertexvectors.vector | list[wolfhece.PyVertexvectors.vector] | wolfhece.PyVertexvectors.zone, progress_callback=None)[source]
Get hydrograph across a vector
- Parameters:
vect – wolf polyline or list of wolf polylines or zone
progress_callback – optional callback to update progress
- export_hydrographs(vect: wolfhece.PyVertexvectors.vector | list[wolfhece.PyVertexvectors.vector] | wolfhece.PyVertexvectors.zone, filename: str | pathlib.Path, progress_callback=None)[source]
Export hydrograph across a vector as CSV file
- Parameters:
vect – wolf polyline or list of wolf polylines or zone
filename – output filename
progress_callback – optional callback to update progress
- plot_q(vect: wolfhece.PyVertexvectors.vector | list[wolfhece.PyVertexvectors.vector], x_or_y: str | list[str] = 'border', toshow=False, absolute=True, figax=None)[source]
Plot discharge along vector
:param vector : wolf polyline – will be splitted according to spatial step size :param x_or_y : ‘x’ for qx, ‘y’ for qy - integration axis or ‘border’ for q normal at border :param toshow : show the plot :param absolute : plot absolute value of discharge :param figax : tuple of matplotlib figure and axis
- plot_h(xy: list[float] | wolfhece.PyVertexvectors.vector, h_or_z: Literal[h, z, head], toshow=False, figax=None)[source]
Plot water depth at one or multiple coordinates
:param xy : list of coordinates :param h_or_z : ‘h’ for water depth, ‘z’ for bed elevation, ‘head’ for water head :param toshow : show the plot :param figax : tuple of matplotlib figure and axis
- get_values_from_xy(x: float, y: float, aswolf=True, integrate_q=False)[source]
Retrouve les valeurs sur base de la coordonnée (x,y)
aswolf : (optional) si True alors ajoute 1 à i et j pour se retrouver en numérotation VB6/Fortran
- get_values_turb_from_xy(x: float, y: float, aswolf=True)[source]
Retrouve les valeurs de turbulence sur base de la coordonnée (x,y)
aswolf : (optional) si True alors ajoute 1 à i et j pour se retrouver en numérotation VB6/Fortran
- get_value(x: float, y: float, nullvalue=-1)[source]
Return the value of the current array at (X,Y) position
- get_values_labels(x: float, y: float)[source]
Return the values and labels of the current view at (X,Y) position
- get_value_elevation(x: float, y: float, nullvalue=-1)[source]
Return the value of the bed elevation at (X,Y) position
- get_xy_from_ij(i: int, j: int, which_block: int = 1, aswolf: bool = False, abs: bool = True)[source]
Retourne les coordonnées (x,y) depuis les indices (i,j) et le numéro de block
- Parameters:
i – i index
j – j index
which_block – block number; 1-based;
aswolf – True to add 1 to i and j to match the VB6/Fortran numbering format
abs – True to return absolute coordinates
- get_ij_from_xy(x: float, y: float, which_block: int = 1, aswolf=False, abs=True)[source]
Retrouve les indices d’un point (x,y) dans un bloc spécifique
Utilise la routine du même nom dans la martrice ‘waterdepth’
- Parameters:
x – x coordinate
y – y coordinate
which_block – block number; 1-based;
aswolf – True to add 1 to i and j to match the VB6/Fortran numbering format
abs – True to return absolute coordinates
- _test_bounds_block(x: float, y: float, curblock: OneWolfResult)[source]
Teste les bornes d’un bloc versus les coordonnées (x,y) d’un point
- enum_block_xy(x: float, y: float, aswolf=False, abs=True)[source]
Enumération des blocs contenant la coordonnée (x,y)
aswolf : True ajoute 1 à i et j pour corresppondre au format de numérotation VB6/Fortran
- get_blockij_from_xy(x: float, y: float, abs=True, aswolf=True)[source]
Retourne les indices i,j et le numéro du block depuis les coordonnées (x,y)
aswolf : True ajoute 1 à i et j pour corresppondre au format de numérotation VB6/Fortran
- uncheck_plot(unload=False)[source]
L’objet est décoché/pas à traiter dans une fenêtre graphique ‘WolfMapViewer’
- get_min_max(which: Literal[views_2D, views_2D, current])[source]
Retourne la valeur min et max de la topo, de la hauteur d’eau ou de la matrice courante
- get_working_array(onzoom=[])[source]
Délimitation d’une portion de matrice sur base de bornes
onzoom : Liste Python de type [xmin, xmax, ymin, ymax]
- updatepalette(which=0, onzoom=[])[source]
Mise à jour des palettes de couleur/colormaps
palgray : niveaux de gris palblue : niveaux de bleu mypal : coloration paramétrique
- Parameters:
which – 0
onzoom – Liste Python de type [xmin, xmax, ymin, ymax]
- plot(sx=None, sy=None, xmin=None, ymin=None, xmax=None, ymax=None, size=None)[source]
Dessin OpenGL
- fillonecellgrid(curscale, loci, locj, force=False)[source]
Dessin d’une fraction de la matrice pour tous les blocs
- set_current(which)[source]
Change le type de résultat à présenter/traiter
- Parameters:
which – mode de visualisation –> see ‘views_2D’ for supported values
- danger_map(start: int = 0, end: int = -1, every: int = 1) tuple[wolfhece.wolf_array.WolfArray, wolfhece.wolf_array.WolfArray, wolfhece.wolf_array.WolfArray, wolfhece.wolf_array.WolfArray] | tuple[wolfhece.wolf_array.WolfArrayMB, wolfhece.wolf_array.WolfArrayMB, wolfhece.wolf_array.WolfArrayMB, wolfhece.wolf_array.WolfArrayMB] [source]
Create Danger Maps
- Parameters:
start – start time step - 0-based
end – end time step - 0-based
every – step interval
:return : tuple of WolfArray or WolfArrayMB - H, U_norm, Q_norm, Z
- danger_map_only_h(start: int = 0, end: int = -1, every: int = 1) wolfhece.wolf_array.WolfArray [source]
Create Danger Maps
- Parameters:
start – start time step - 0-based
end – end time step - 0-based
every – step interval
:return : tuple of WolfArray or WolfArrayMB - H, U_norm, Q_norm
- export_as(outdir: str, fields: list[views_2D], which: Literal[geotiff, shape, numpy], multiband: bool = True)[source]
Export as geotiff or shapefile or numpy
- export_as_shape(outdir: str = '', fn: str = '', myarrays: list[wolfhece.wolf_array.WolfArray] = [], descr: list[str] = [], mask: wolfhece.wolf_array.WolfArray = None)[source]
Export multiple arrays to shapefile
- Parameters:
outdir – output directory
fn – filename – .shp will be added if not present
myarrays – list of Wolfarrays to export
descr – list of descriptions
mask – mask array – export only where mask > 0
- export_as_geotif(outdir: str = '', fn: str = '', myarrays: list[wolfhece.wolf_array.WolfArray] = [], descr: list[str] = [], multiband: bool = True)[source]
Export results as geotiff
- Parameters:
outdir – output directory
fn – filename – .tif will be added if not present
myarrays – list of Wolfarrays to export
descr – list of descriptions – Bands names