wolfhece.mesh2d.wolf2dprev
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
- class wolfhece.mesh2d.wolf2dprev.prev_parameters_blocks(parent: prev_parameters_simul = None)[source]
Paramètres de calcul propres aux blocs.
- Il y a :
23 paramètres généraux - NB_BLOCK_GEN_PAR
60 paramètres (potentiels) de “debug” - Tous les paramètres debug ne sont pas utilisés pour le moment - NB_BLOCK_DEBUG_PAR.
:remark : Les noms de variables ne sont pas nécessairement identiques à ceux utilisés dans le code Fortran.
- _set_general_debug_params(gen: list, debug: list)[source]
Définit les paramètres généraux et de debug
- set_params_topography_operator(op: wolfhece.PyVertexvectors.Literal[Mean, Max, Min, 1, 2, 3] = 'Mean')[source]
Définit le type d’opérateur topographique
- get_params_topography_operator() tuple[int, str] [source]
Retourne le type d’opérateur topographique
- set_params_reconstruction_type(reconstruction_intern: wolfhece.PyVertexvectors.Literal[constant rec, linear rec, 0, 1] = 0, reconstruction_frontier: wolfhece.PyVertexvectors.Literal[constant rec, linear limited, linear not limited, 0, 2, 1] = 2, reconstruction_free: wolfhece.PyVertexvectors.Literal[constant rec, linear limited, linear not limited, 0, 2, 1] = 0, limiter_variable: wolfhece.PyVertexvectors.Literal[h, (h+z), 0, 1] = 0, frontier_treatment: wolfhece.PyVertexvectors.Literal[Nothing, Average, 1, 0] = 1, number_neighbors_in_limiting_phase: int = 5)[source]
Définit le type de reconstruction pour différents types de bords
- Parameters:
reconstruction_intern – Reconstruction interne
reconstruction_frontier – Reconstruction des bords frontière
reconstruction_free – Reconstruction des bords libres
limiter_variable – Limiter la hauteur ‘h’ ou ou la surface libre ‘h+z’
frontier_treatment – Traitement des frontières
number_neighbors_in_limiting_phase – Nombre de voisins pour la limitation
- set_params_flux_type(flux_type: wolfhece.PyVertexvectors.Literal[HECE original, VAM-5, VAM-5 with vertical velocites, VAM-5 with vertical velocites and solid transport, HECE in terms of h, u, v, HECE in terms of Volume, qx, qy, HECE with H "energy formulation" in slope term, HECE under pressure (H), HECE under pressure (Volume instead of H), 1, 2, 3, 4, 5, 6, 7, 8, 9])[source]
- get_params_flux_type() tuple[int, str] [source]
Retourne le type de flux
See : ntypflux in Modules_wolf/2D/Wolf2D-Preprocessing.f90
- set_params_froud_max(froude_max: float)[source]
Définit le Froude maximum
Si, localement, le Froude maximum est dépassé, le code limitera les inconnues de débit spécifique à la valeur du Froude maximum en conservant inchangée la hauteur d’eau.
Valeur par défaut : 20.
- set_params_conflict_resolution(mode: wolfhece.PyVertexvectors.Literal[Original, Centered, Nothing, 0, 1, 2])[source]
Définit la résolution des conflits
- set_evolutive_domain(evolutive_domain: wolfhece.PyVertexvectors.Literal[No, Yes, 0, 1])[source]
Définit le domaine évolutif
- set_params_sediment(model: wolfhece.PyVertexvectors.Literal[No sediment model, Drifting, Drifting and suspension, 0, 1, 2] = 'No sediment model', drifting_model: wolfhece.PyVertexvectors.Literal[No drifting, Meyer-Peter-Muller, Rickemann, 0, 1, 2] = 'No drifting', porosity: float = 0.0, d_mean: float = 0.0, s_sedim: float = 2.65, vthetacr: float = 0.0, reduced_slope: float = 0.0, d30: float = 0, d90: float = 0.0)[source]
Définit le modèle sédimentaire
- Parameters:
model – Modèle sédimentaire
drifting_model – Modèle de transport par charriage
porosity – Porosité
d_mean – Diamètre moyen
s_sedim – Densité relative des sédiments
vthetacr – Tension adimensionnelle critique pour la mise en mouvement
reduced_slope – Pente réduite
d30 – D30
d90 – D90
- set_params_gravity_discharge(activated: bool, critical_slope: float, natural_slope: float)[source]
Définit si le modèle de décharge solide gravitaire est activé
- Parameters:
activated – booléen indiquant si le modèle de décharge solide gravitaire doit être activé
critical_slope – Pente critique
natural_slope – Pente naturelle
- get_params_gravity_discharge() dict [source]
Retourne les paramètres du modèle de décharge solide gravitaire
- set_params_steady_sediment(porosity: float, d_mean: float, s_sedim: float = 2.65, vthetacr: float = 0.0, drifting_mode: wolfhece.PyVertexvectors.Literal[Meyer - Peter - Muller, Rickemann, 1, 2] = 'Meyer-Peter-Muller', epssedim: float = 1e-10, epsstabbed: float = 1e-10, reduced_slope: float = 1.0)[source]
Définit les paramètres du modèle sédimentaire
- Loi de Meyer-Peter et Müller pour le charriage :
$ Q = C * sqrt{s * g * d^3} * (s - Rcr)^{3/2} $
$ s = rho_sedim / rho_eau $
$ Rcr = vthetacr $
$ d = d_moyen $
- Parameters:
porosity – Porosité
d_moyen – Diamètre moyen
s_sedim – Densité relative des sédiments
vthetacr – Tension adimensionnelle critique pour la mise en mouvement
ntype_charriage – Type de loi de transport par charriage
epssedim – Epsilon sur h pour recalculer le fond
epsstabfond – Epsilon pour l’arrêt stationnaire sur base de la variation de la topo de fond
pente_reduite – Pente réduite – si <= 0, forcé à 1 càd “sans bedforms”
- set_params_unsteady_topo_bathymetry(activated: bool, model: int)[source]
Définit si la topo est variable ou non
sur base d’une succession de matrices de topo
sur base d’une triangulation dynamique
see : Modules_wolf/2D/Wolf2D-DonneesInst.f90 “!GESTION DE LA TOPO INSTATIONNAIRE” for more information
- get_params_unsteady_topo_bathymetry() dict [source]
Retourne les paramètres de la topo variable
Les paramètres sont globaux, pas spécifiques à un bloc –> voir les paramètres globaux associés
- get_params_collapse_building() dict [source]
Retourne les paramètres de l’effacement des bâtiments
Les paramètres sont globaux, pas spécifiques à un bloc –> voir les paramètres globaux associés
- set_params_mobile_contour(activated: bool, which: wolfhece.PyVertexvectors.Literal[1, -1] = 1)[source]
Définit si le contour est mobile ou non
CMCH
text file
first line : number of points
next lines : time, x, y, acm
CMXY
text file
first line : number of polygons, max number of points (in a polygon)
- for each polygon
first line : number of points, index of the polygon
next lines : x, y
:remark Only support 1 polygon for now
- set_params_mobile_forcing(activated: bool)[source]
Définit si le forcing mobile est activé ou non
see: Modules_wolf/2D/Wolf2D-DonneesInst.f90 – FORCING_MOB for more information
.fmpar file must be present in the simulation directory .fm file must be present in the simulation directory .fmch file must be present in the simulation directory
FMPAR
text file
first line : dx, dy
second line : nx, ny
FM
binary file
sequential arrays of forcing along X, Y and Z – shape of one array = (nx, ny)
series of 3 arrays for each time
FMCH
text file
on each line : time, origx, origy
Track ‘FORCING_MOB’ in the Fortran code for more information
- check_params_forcing() tuple[bool, str] [source]
Vérifie les paramètres de forcing et la présence du fichier associé
- set_params_danger_map(activated: bool, hmin: float, which: wolfhece.PyVertexvectors.Literal[(Toa + H), Qx, Qy, with Z and toa_q, with Z, toa_q, v, toa_v] = '(Toa + H), Qx, Qy')[source]
Définit si la carte de risque est activée ou non
- Parameters:
activated – booléen indiquant si la carte de risque doit être calculée
hmin – incrément de hauteur minimale pour activer la carte de risque de temps d’arrivée
- set_params_surface_friction(model_type: wolfhece.PyVertexvectors.Literal[Horizontal, Modified surface corrected 2D (HECE), Modified surface corrected 2D + Lateral external borders (HECE), Horizontal and Lateral external borders, Modified surface (slope), Modified surface (slope) + Lateral external borders, Horizontal and Lateral external borders (HECE), Modified surface (slope) + Lateral external borders (HECE), Horizontal -- Bathurst, Horizontal -- Bathurst-Colebrook, Horizontal -- Chezy, Horizontal -- Colebrook, Horizontal -- Barr, Horizontal -- Bingham, Horizontal -- Frictional fluid, Horizontal and Lateral external borders (Colebrook), Horizontal and Lateral external borders (Barr)])[source]
Définit le mode de calcul de surface de friction à utiliser
- set_params_turbulence(model_type: wolfhece.PyVertexvectors.Literal[k-eps HECE, No, Smagorinski, Fisher, k-eps, k, 0, 1, 2, 3, 4, 6], nu_water: float = 1e-06, cnu: float = 0.09, maximum_nut: float = 0.001, c3e: float = 0.8, clk: float = 0.0001, cle: float = 10.0)[source]
Définit le modèle de turbulence à utiliser
- Parameters:
model_type – type de modèle de turbulence
nu_water – viscosité cinématique de l’eau
cnu – coefficient de viscosité turbulente
maximum_nut – valeur maximale de la viscosité turbulente – A utiliser pour éviter les valeurs trop élevées mais une valeur trop basse influencera le résultat
c3e – coefficient c3e
clk – coefficient clk
cle – coefficient cle
- set_params_vam5_turbulence(nu_vertical: float, turbulence_model: int)[source]
Définit les paramètres du modèle VAM5
- Parameters:
nu_vertical – viscosité verticale pour VAM5
turbulence_model – modèle de turbulence pour VAM5
- set_params_infiltration_momentum_correction(ux: float, vy: float)[source]
Définit les corrections de moment pour l’infiltration
- get_params_infiltration_momentum_correction() dict [source]
Retourne les corrections de moment pour l’infiltration
- reset_params_infiltration_momentum_correction()[source]
Réinitialise les corrections de moment pour l’infiltration
- set_params_infiltration_bridge(a: float, cd: float, zseuil: float, width: float)[source]
Définit les paramètres de transfert entre 2 zones d’infiltration/exfiltration de part et d’autre d’un pont
- Le débit échangé est calculé sur base de la somme de 2 contributions :
un écoulement sous pression Q_1 = sqrt{a * |Z_1 - Z_2|} * sign(Z_1 - Z_2)
un écoulement de type déversoir Q_2 = cd * sqrt{2 * g * (Z_1 + U^2 / {2g} - Zseuil)^3} * width
La somme des 2 débits est ensuite répartie sur les mailles des 2 zones d’infiltration/exfiltration.
Il est prélevé dans les zones impaires et injecté dans les zones paires suivantes.
see : Modules_wolf/2D/Wolf2D-DonneesInst.f90 - CALC_CHARGE_ET_DEBIT_2
- reset_params_infiltration_bridges()[source]
Réinitialise les paramètres de transfert entre 2 zones d’infiltration/exfiltration de part et d’autre d’un pont
- set_params_infiltration_weir(cd: float, zseuil: float, width: float)[source]
Définit les paramètres d’un déversoir pour l’exfiltration variable
$ Q = cd * sqrt{2 * g * (Z + U^2 / {2g} - Zseuil)^3} * width $
- avec :
Z : altitude de surface libre moyenne sur la zone d’infiltration
U : vitesse moyenne sur la zone d’infiltration
cd : coefficient de débit
zseuil : altitude du seuil
width : largeur du déversoir
Le débit est ensuite réparti sur les mailles de la zone d’exfiltration (retrait de matière si Q>0).
- set_params_infiltration_weir_poly3(a: float, b: float, c: float, d: float, zseuil: float, width: float)[source]
Définit les paramètres d’un déversoir pour l’exfiltration variable de type polynomiale
$ H = Z - Z_seuil $
$ Cd = a * H^3 + b * H^2 + c * H + d $
$ Q = 2/3 * Cd * sqrt{2 * g * H^3} * width $
- avec :
Z : altitude de surface libre moyenne sur la zone d’infiltration
a, b, c, d : coefficients
zseuil : altitude du seuil
width : largeur du déversoir
Le débit est ensuite réparti sur les mailles de la zone d’exfiltration (retrait de matière si Q>0).
- set_params_infiltration_polynomial2(a: float, b: float, c: float)[source]
Définit les paramètres d’une infiltration variable de type polynomiale
$ Q = a * Z^2 + b * Z + c $
- avec
Z : altitude de surface libre moyenne sur la zone d’infiltration
a, b, c : coefficients
Le débit est ensuite réparti sur les mailles de la zone d’infiltration (apport de matière si Q>0).
- reset_params_infiltration_polynomial2()[source]
Réinitialise les paramètres de l’infiltration polynomiale
- set_params_infiltration_power(d: float, e: float)[source]
Définit les paramètres d’une infiltration variable de type puissance
$ Q = d * sqrt{Z-e} $
- avec :
Z : altitude de surface libre moyenne sur la zone d’infiltration
d : coefficient
e : hauteur minimale de l’infiltration variable (si Z <= e, l’infiltration est nulle)
Le débit est ensuite réparti sur les mailles de la zone d’infiltration (apport de matière si Q>0).
- reset_params_infiltration_power()[source]
Réinitialise les paramètres de l’infiltration de type puissance
- set_params_bingham_model(rho: float)[source]
Définit les paramètres du modèle de Bingham
- Parameters:
rho – viscosité plastique
- set_params_frictional_model(hs: float, cv: float, ru0: float)[source]
Set the frictional model parameters
- _set_debug_params(values: list)[source]
Définition des paramètres de débogage sur base d’une liste de valeurs
- _set_general_params(values: list)[source]
Définition des 23 paramètres généraux sur base d’une liste de valeurs
- write_file(f)[source]
Writing the general parameters in a file
:remark The order of the parameters is important
- write_debug(f)[source]
Writing the debug parameters in a file
- Parameters:
f – file to write in
:remark The order of the parameters is important
- apply_changes_to_memory()[source]
Apply the changes made in the GUI to the memory.
This method is called when the user clicks on the “Apply” button in the GUI.
Effective transfer will be done in the _callback_param_from_gui method.
- _callback_param_from_gui()[source]
Set the parameters from the Wolf_Param object.
Callback routine set in the PyParams instance.
- get_parameter(group: str, name: str) wolfhece.PyVertexvectors.Union[int, float] [source]
Get a parameter value
- set_parameter(group: str, name: str, value: wolfhece.PyVertexvectors.Union[int, float]) None [source]
Set a parameter value
- get_active_params() dict [source]
Retourne les paramètres qui sont différents des valeurs par défaut
- _set_block_params(toShow=True, force=False) wolfhece.PyParams.Wolf_Param [source]
Création d’un objet Wolf_Param et, si souhaité, affichage des paramètres via GUI wxPython
- Parameters:
toShow – booléen indiquant si les paramètres doivent être affichés via GUI wxPython
- _fillin_general_parameters()[source]
General parameters
Create list of groups ans parameter names to be used in the GUI/Wolf_Params object
:remark The order of the parameters is important
- _fillin_debug_parameters()[source]
Debug parameters
Create list of groups ans parameter names to be used in the GUI/Wolf_Params object
:remark The order of the parameters is important
- show(show_in_active_if_default: bool = False)[source]
Show the parameters of the block in a WX frame
- is_like(other: prev_parameters_blocks) bool [source]
Check if two prev_parameters_blocks are similar
- copy(other: prev_parameters_blocks) None [source]
Copy the parameters of another prev_parameters_blocks
- diff(other: wolfhece.PyVertexvectors.Union[prev_parameters_blocks, list[prev_parameters_blocks]]) dict [source]
Return the differences between two prev_parameters_blocks
- diff_print(other: wolfhece.PyVertexvectors.Union[prev_parameters_blocks, list[prev_parameters_blocks]]) str [source]
Return the differences between two prev_parameters_blocks as a string
- class wolfhece.mesh2d.wolf2dprev.boundary_condition_2D(i: int, j: int, ntype: int, val: float, direction: int = 1)[source]
Type des CL générales, faibles et fortes @author Pierre Archambeau
- class wolfhece.mesh2d.wolf2dprev.prev_boundary_conditions(parent: prev_parameters_simul)[source]
Classe pour le stockage des CL générales, faibles et fortes
@author pierre archambeau
- mybc: list[boundary_condition_2D][source]
- fillgrid(gridto: wolfhece.CpGrid.CpGrid)[source]
- add(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float, orient: str)[source]
Add a new constraint i,j : indices ntype: type of the constraint orient: oritentation, used for drawing
- list_bc_ij()[source]
Liste des indices CL existantes
:return : 2 listes distinctes avec les indices i et j des CL
- change(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float)[source]
Remplace une CL existante
- class wolfhece.mesh2d.wolf2dprev.prev_parameters_simul(parent: prev_sim2D = None)[source]
Paramètres de simulation d’un modèle WOLF2D original
@author pierre archambeau
- property has_turbulence[source]
Check if the simulation has turbulence
Remark : Turbulence is a bloc parameter, so we need to check all blocks
- blocks: list[prev_parameters_blocks][source]
- strong_bc: prev_boundary_conditions[source]
- weak_bc_x: prev_boundary_conditions[source]
- weak_bc_y: prev_boundary_conditions[source]
- check_all(verbosity=0) tuple[bool, str] [source]
Call all check_params* routines in this class and all blocks
- Parameters:
verbosity – 0 = errors only, 1 = errors and warnings, 2 = everything, 3 = everything + group names
- set_mesh_only()[source]
Set the mesher only flag
When launched, the Fortran program will only generate the mesh and stop.
- add_block(block: prev_parameters_blocks = None, name: str = '')[source]
- is_like(other: prev_parameters_simul) bool [source]
Check if two prev_parameters_simul are similar
- copy(other: prev_parameters_simul) None [source]
Copy the parameters of another prev_parameters_simul
- diff(other: prev_parameters_simul) dict [source]
Return the differences between two prev_parameters_simul
- diff_print(other: prev_parameters_simul) str [source]
Return the differences between two prev_parameters_simul as a string
- set_params_geometry(dx: float, dy: float, nbx: int, nby: int, origx: float, origy: float, translx: float = 0.0, transly: float = 0.0)[source]
Set the geometry parameters of the simulation.
- set_params_time_iterations(nb_timesteps: int = 1000, optimize_timestep: bool = True, first_timestep_duration: float = 0.1, writing_frequency: wolfhece.PyVertexvectors.Union[int, float] = 1, writing_mode: wolfhece.PyVertexvectors.Literal[Iterations, Seconds, 0, 1] = 0, writing_type: wolfhece.PyVertexvectors.Literal[Binary compressed, Binary Full, Text, 1, 2, 3] = 3, initial_cond_reading_mode: wolfhece.PyVertexvectors.Literal[Binary, Binary per blocks, Text, 0, 1, 2] = 2, writing_force_onlyonestep: bool = False)[source]
Set the time/iterations parameters of the simulation.
- Parameters:
nb_timesteps – Number of timesteps to perform
optimize_timestep – Optimize the timestep
first_timestep_duration – Duration of the first timestep
writing_frequency – Writing frequency of the results
writing_mode – Writing mode of the results
writing_type – Writing type of the results
initial_cond_reading_mode – Initial condition reading mode
writing_force_onlyonestep – Force writing only one step
- check_params_time_iterations() tuple[bool, str] [source]
Check the time/iterations parameters of the simulation.
- set_params_temporal_scheme(RungeKutta: wolfhece.PyVertexvectors.Literal[RK21, RK22, RK31a, RK31b, RK31c, RK41a, RK41b, RK44, Euler] = 0.3, CourantNumber: float = 0.25, dt_factor: float = 100.0)[source]
Set the temporal scheme parameters of the simulation.
- check_params_temporal_scheme() tuple[bool, str] [source]
Check the temporal scheme parameters of the simulation.
- set_params_collapsible_building(hmax_bat: float = 7.0, vmax_bat: float = 2.0, qmax_bat: float = 7.0)[source]
Set the parameters for the collapsible buildings.
- check_params_collapsible_building() tuple[bool, str] [source]
Check the collapsible building parameters.
- add_weak_bc_x(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float)[source]
Add a boundary condition on a left vertical border of cell. i,j: coordinate of the cell where the left border must be set
as a boundary. i,j are 1-based (grid coordinates.)
- add_weak_bc_y(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float)[source]
Add a boundary condition on a bottom horizontal border of cell. i,j: coordinate of the cell where the left border must be set
as a boundary. i,j are 1-based (grid coordinates.)
- apply_changes_to_memory()[source]
Apply the changes made in the GUI to the memory.
This method is called when the user clicks on the “Apply” button in the GUI.
Effective transfer will be done in the _callback_param_from_gui method.
- _callback_param_from_gui()[source]
Set the parameters from the Wolf_Param object.
Callback routine set in the Wolf_Param object.
- _set_sim_params(toShow=True) wolfhece.PyParams.Wolf_Param [source]
Création d’un objet Wolf_Param et, si souhaité, affichage des paramètres via GUI wxPython
- Parameters:
toShow – booléen indiquant si les paramètres doivent être affichés via GUI wxPython
- _set_general_params(values: list)[source]
Définition des 36 paramètres généraux sur base d’une liste de valeurs
- _fillin_general_parameters()[source]
General parameters
Create list of groups ans parameter names to be used in the GUI/Wolf_Params object
:remark The order of the parameters is important
- _fillin_debug_parameters()[source]
Debug parameters
Create list of groups ans parameter names to be used in the GUI/Wolf_Params object
:remark The order of the parameters is important
- _get_groups_and_names(sort=True) list[tuple[str, str]] [source]
Retourne la liste des couples (group, name)
- get_active_params() tuple[dict, dict] [source]
Retourne les paramètres qui sont différents des valeurs par défaut
- get_all_params() tuple[dict, dict] [source]
Retourne tous les paramètres, y compris les valeurs par défaut
- get_active_params_extended() dict [source]
Retourne tous les paramètres actifs aisi que ceux des blocs dans une clé spécifique à chaque bloc
- get_all_params_extended() dict [source]
Retourne tous les paramètres aisi que ceux des blocs dans une clé spécifique à chaque bloc
- get_active_params_block(i_block: int) dict [source]
Retourne les paramètres actifs du bloc i_block (1-based)
- get_all_params_block(i_block: int) dict [source]
Retourne tous les paramètres du bloc i_block (1-based)
- get_parameter(group: str, name: str) wolfhece.PyVertexvectors.Union[int, float] [source]
Set a parameter value
- class wolfhece.mesh2d.wolf2dprev.prev_infiltration(parent: prev_sim2D = None, fn: str = '', to_read: bool = True)[source]
Infiltration
Gère à la fois le fichier ‘.fil’ (quantités au cours du temps) et accès au ‘.inf’ (matrice) via ‘parent’ ou en autonomie
- Author:
Pierre Archambeau
- add_infiltration(time_start: float, zones_values: list[float])[source]
Add an infiltration point in the infiltration chronology.
- Param:
time_start start time of the infiltration (in seconds)
- Param:
zones_values an array representing the quantity of water per second to add to each infiltration zones, starting at time_start. The first item corrsesponds to the zone 1, second item corresponds to zone 2 and so on.
- class wolfhece.mesh2d.wolf2dprev.prev_suxsuy(parent: prev_sim2D)[source]
Enumération des bords potentiellement conditions limites selon X et Y
Dans WOLF, un bord X est un segment géométrique orienté selon Y –> le débit normal au bord est orienté selon X Dans WOLF, un bord Y est un segment géométrique orienté selon X –> le débit normal au bord est orienté selon Y
La logique d’appellation est donc “hydraulique”
@remark Utile pour l’interface VB6/Python pour l’affichage
- is_like(other: prev_suxsuy) tuple[bool, str] [source]
Compare two prev_suxsuy objects
- class wolfhece.mesh2d.wolf2dprev.blocks_file(parent: wolfhece.PyVertexvectors.Union[prev_sim2D] = None)[source]
Objet permettant la lecture et la manipulation d’un fichier .BLOC
- Objectif :
fournir l’information nécessaire au code Fortran pour mailler le domaine en MB
- contient des informations géométriques
domaine de calcul
contour de bloc
- contient des informations de résolution de maillage
tailles de maille souhaitées selon X et Y pour chaque bloc
- Contenu du fichier :
nombre de blocs, nombre maximum de vertices contenu dans les polygones présents (soit contour extérieur, soit contour de bloc)
- nombre de vertices à lire pour le contour général (une valeur négative indique que 3 colonnes sont à lire)
liste de vertices du contour général (sur 2 – X,Y – ou 3 colonnes – X,Y, flag – la 3ème colonne ne devrait contenir que 0 ou 1 – 1==segment à ignorer dans les calcul d’intersection du mailleur)
@remark En pratique, le “flag” sera stocké dans la propriété “z” du vertex –> sans doute pas optimal pour la compréhension –> à modifier ??
- informations pour chaque bloc
nombre de vertices du polygone de contour
liste de vertices (2 colonnes – X et Y)
- extension du bloc calé sur la grille magnétique et étendu afin de permettre le stockage des relations de voisinage (2 lignes avec 2 valeurs par ligne)
xmin, xmax
ymin, ymax
@remark L’extension, sur tout le pourtour, vaut 2*dx_bloc+dx_max_bloc selon X et 2*dy_bloc+dy_max_bloc selon Y @remark Pour une taille de maille uniforme on ajoute donc l’équivalent de 6 mailles selon chaque direction (3 avant et 3 après)
- résolution pour chaque bloc (“nb_blocs” lignes)
dx, dy
- Remarques :
nb_blocs n’est pas un invariant. Il faut donc faire attention lors de la création/manipulation de l’objet –> A fixer?
pour les simulations existantes, la taille de la grille magnétique n’est pas une information sauvegardée dans les fichiers mais provient du VB6 au moment de la création de la simulation @TODO : coder/rendre une grille magnétique et sans doute définir où stocker l’info pour garantir un archivage correct
- property general_contour_zone: wolfhece.PyVertexvectors.zone[source]
- property blocks_extents_zone: wolfhece.PyVertexvectors.zone[source]
- property external_border: wolfhece.PyVertexvectors.vector[source]
Return the external border of the simulation
- my_blocks: list[block_description][source]
- set_external_border(contour: wolfhece.PyVertexvectors.vector)[source]
Set the external contour – Replace the existing one if any
- add_block(contour: wolfhece.PyVertexvectors.zone, dx: float, dy: float)[source]
Add a block to the list of blocks
- delete_block(idx: int)[source]
Delete a block from the list
- Parameters:
idx – index of the block to delete - 1-based
- insert_block(idx: int, contour: wolfhece.PyVertexvectors.zone, dx: float, dy: float)[source]
Insert a block in the list
- Parameters:
idx – index where to insert the block - 1-based
- get_contour_block(idx: int) wolfhece.PyVertexvectors.vector [source]
Get the contour of a block
- is_like(other: blocks_file) tuple[bool, str] [source]
Check if the bloc file is like another one
- class wolfhece.mesh2d.wolf2dprev.block_contour(lines: list = ..., is2D=True, name='', parentzone=None)[source]
Bases:
wolfhece.PyVertexvectors.vector
Extension d’un vecteur afin de stocker un polygone de contour soit du domaine de calcul, soit d’un bloc
- L’extension est utile pour définir la propriété :
mylimits
- et les routines:
set_limits
verify_limits
- wolfhece.mesh2d.wolf2dprev.COLOURS_BLOCKS = [(0, 0, 255), (255, 0, 0), (0, 255, 0), (255, 255, 0), (255, 0, 255), (0, 255, 255), (0, 125,...[source]
- class wolfhece.mesh2d.wolf2dprev.block_description(parent: blocks_file, lines=[], idx: int = 0)[source]
- parent: blocks_file[source]
- contour: block_contour[source]
- ymax: float[source]
- Classe permettant de contenir:
le polygone de définition du bloc
les bornes de l’étendue augmentée
Ici xmin, xmax, ymin, ymax sont à dissocier des propriétés du vecteur contour et ne représentent donc pas les coordonnées min et max des vertices mais bien une zone rectangulaire contenant tout le bloc
- setup(contour: wolfhece.PyVertexvectors.vector, dx: float, dy: float)[source]
Fill in the block with a given value
- Parameters:
contour – vector representing the block contour
dx – resolution along X
dy – resolution along Y
- class wolfhece.mesh2d.wolf2dprev.xy_file(simparent: wolfhece.PyVertexvectors.Union[prev_sim2D] = None)[source]
Contour du domaine
Les infos de cette classe sont redondantes avec le contour contenu dans le fichier .bloc Dans l’interface VB6, il est cependant généré avant le fichier .bloc
@remark Le fichier n’est pas utilisé par le code de calcul Fortran –> principalement pré-traitement/visualisation
- class wolfhece.mesh2d.wolf2dprev.prev_lst_file(parent: prev_sim2D = None)[source]
- class wolfhece.mesh2d.wolf2dprev.prev_sim2D(fname: wolfhece.PyVertexvectors.Union[str, pathlib.Path] = None, parent=None, clear=False)[source]
Modélisation 2D CPU – version 2D originale non OO
Cette classe est en construction et ne contient pas encore toutes les fonctionnalités.
Elle devrait à terme être utilisée dans l’objet Wolf2DModel de PyGui afin de séparer le stockage des données de la visualisation et interface WX.
- property common_mask_MB: list[wolfhece.PyVertexvectors.np.ndarray][source]
Common mask for multiblock arrays
- property fine_arrays: list[wolfhece.wolf_array.WolfArray][source]
List of fine arrays
- property MB_arrays: list[wolfhece.wolf_array.WolfArrayMB][source]
List of multiblock arrays
- property mymnap: wolfhece.wolf_array.WolfArrayMNAP[source]
- property mnap: wolfhece.wolf_array.WolfArrayMNAP[source]
- property external_border: wolfhece.PyVertexvectors.vector[source]
Return the external border of the simulation
- property nb_weak_bc_x: int[source]
Nombre de conditions limites faibles sur le bord X
Alias de myparam.weak_bc_x.nb_bc
- property nb_weak_bc_y: int[source]
Nombre de conditions limites faibles sur le bord Y
Alias de myparam.weak_bc_y.nb_bc
- get_Zones_from_extension(extension: str) wolfhece.PyVertexvectors.Zones [source]
Get the Zones from the extension
- get_wolf_array(extension: str) wolfhece.wolf_array.WolfArray [source]
Get the WolfArray from the extension
- force_reload(which_one: wolfhece.PyVertexvectors.Union[str, wolfhece.wolf_array.WolfArray, wolfhece.wolf_array.WolfArrayMB])[source]
Force the reload of the WolfArray
- force_load(force_reload=False)[source]
Force the (re)loading of the fine arrays
- Params force_reload:
force the reloading of the fine arrays
- create_fine_arrays(default_frot: float = 0.04, with_tubulence=False)[source]
Create the fine arrays
- Parameters:
default_frot – default value for the roughness coefficient
with_tubulence – create the turbulence arrays (epsbin and kbin)
- create_napbin()[source]
Create the napbin file
Based on the external border, it will create a napbin file with fine mesh size.
- set_mesh_fine_size(dx: float, dy: float)[source]
Set the mesh size and origin
- Parameters:
dx – mesh size along X
dy – mesh size along Y
- set_external_border_vector(contour: wolfhece.PyVertexvectors.vector)[source]
Add the external border to the bloc file
- set_external_border_xy(xmin: float, xmax: float, ymin: float, ymax: float)[source]
Set the external border to the bloc file
- set_external_border_nxny(xmin: float, ymin: float, nbx: int, nby: int, dx: float, dy: float)[source]
Set the external border to the bloc file
- set_external_border_header(header: wolfhece.wolf_array.header_wolf)[source]
Set the external border to the bloc file
- set_external_border_wolfarray(src_array: wolfhece.wolf_array.WolfArray, mode: wolfhece.PyVertexvectors.Literal[prev_sim2D.set_external_border_wolfarray.header, prev_sim2D.set_external_border_wolfarray.contour], abs: bool = True)[source]
Set the external border to the bloc file
- Parameters:
src_array – source array
mode – mode to use
abs – if True, use the World coordinates – (ox+trlx, oy+trly), else use the local coordinates – (ox, oy)
- add_block(contour: wolfhece.PyVertexvectors.vector, dx: float, dy: float, name: str = '')[source]
Add a block to the bloc file
- modify_block(idx: int, contour: wolfhece.PyVertexvectors.vector, dx: float, dy: float)[source]
Modify a block in the bloc file
- set_magnetic_grid(dx: float, dy: float, origx: float, origy: float)[source]
Définition de la grille magnétique
- Parameters:
dx (float) – taille de maille selon X
dy (float) – taille de maille selon Y
origx (float) – origine selon X (coordonnée du noeud d’intersection)
origy (float) – origine selon Y (coordonnée du noeud d’intersection)
- save_parameters()[source]
Sauvegarde des paramètres de simulation
Les conditions limites sont contenues dans le fichier .par
- get_parameters_in_group(group: str)[source]
Renvoi des paramètres d’un groupe de paramètres de simulation
- get_parameters_groups_and_names()[source]
Renvoi des groupes et des noms de paramètres de simulation
- get_active_parameters_block(block: int)[source]
Renvoi des paramètres de simulation actifs pour un bloc donné
- get_all_parameters_block(block: int)[source]
Renvoi de tous les paramètres de simulation pour un bloc donné
- get_parameter(group: str, name: str, block: int = None)[source]
Renvoi d’un paramètre de simulation
- Parameters:
group (str) – groupe du paramètre
name (str) – nom du paramètre
block (int) – numéro du bloc (1-based)
- set_parameter(group: str, name: str, value: wolfhece.PyVertexvectors.Union[float, int], block: int = None)[source]
Modification d’un paramètre de simulation
- Parameters:
group (str) – groupe du paramètre
name (str) – nom du paramètre
value (Union[float, int]) – valeur du paramètre
block (int) – numéro du bloc (1-based) – -1 == all blocks
- get_group_name_from_list(target: wolfhece.PyVertexvectors.Literal[Global, Block] = 'Global', which: wolfhece.PyVertexvectors.Literal[General, Debug] = 'General')[source]
Get group and name from a list for VB6 nostalgia / specialist mode
- get_parameters_from_list(target: wolfhece.PyVertexvectors.Literal[Global, Block] = 'Global', which: wolfhece.PyVertexvectors.Literal[General, Debug] = 'General', idx_block: int = 0)[source]
Get parameters from a list for VB6 nostalgia / specialist mode
- Parameters:
target (Literal['Global', 'Block']) – target of the parameters
which (Literal['General', 'Debug']) – which parameters to get
idx_block (int) – index of the block (1-based)
- set_parameters_from_list(target: wolfhece.PyVertexvectors.Literal[Global, Block] = 'Global', which: wolfhece.PyVertexvectors.Literal[General, Debug] = 'General', values: list[int, float] = [], idx_block: int = 0)[source]
Set parameters from a list for VB6 nostalgia / specialist mode
- Parameters:
target (Literal['Global', 'Block']) – target of the parameters
which (Literal['General', 'Debug']) – which parameters to set
values (list[int, float]) – list of values
idx_block (int) – index of the block (1-based)
- get_header(abs=False)[source]
Renvoi d’un header avec les infos géométriques de la simulation
Version monobloc et résolution fine
- Parameters:
abs (bool) – si True, les origines sont décalées des translations et les translations sont mises à 0
- get_header_MB(abs=False)[source]
Renvoi d’un header avec les infos multi-blocs
- Parameters:
abs (bool) – si True, les origines sont décalées des translations et les translations sont mises à 0
- verify_files()[source]
Vérification de la présence des en-têtes dans les différents fichiers présents sur disque.
Cette routine est nécessaire pour s’assurer de la cohérence des headers. Certaines versions de l’interface VB6 présentaient un bug lors de la sauvegarde des fichiers ce qui peut avoir comme conséquence de décaler les données (double application des translations vers le monde réel).
- get_filepath(which: wolfhece.PyVertexvectors.Literal[.top, .hbin, .qxbin, .qybin, .napbin, .topini_fine, .frot, .inf, .kbin, .epsbin, .hbinb, .qxbinb, .qybinb, .kbinb, .epsbinb, .topini, .frotini] = '')[source]
Renvoi du chemin complet d’un fichier
- exists_file(which: wolfhece.PyVertexvectors.Literal[.top, .hbin, .qxbin, .qybin, .napbin, .topini_fine, .frot, .inf, .kbin, .epsbin, .hbinb, .qxbinb, .qybinb, .kbinb, .epsbinb, .topini, .frotini] = '') bool [source]
Vérification de l’existence d’un fichier
- last_modification_date(which: wolfhece.PyVertexvectors.Literal[.top, .hbin, .qxbin, .qybin, .napbin, .topini_fine, .frot, .inf, .kbin, .epsbin, .hbinb, .qxbinb, .qybinb, .kbinb, .epsbinb, .topini, .frotini] = '', tz=tz.utc) str [source]
Renvoi de la date de dernière modification d’un fichier
- read_fine_array(which: wolfhece.PyVertexvectors.Literal[.top, .hbin, .qxbin, .qybin, .napbin, .topini_fine, .frot, .inf, .kbin, .epsbin] = '') wolfhece.wolf_array.WolfArray [source]
Lecture d’une matrice fine
- Parameters:
which (str -- extension with point (e.g. '.hbin')) – suffixe du fichier
- Returns:
WolfArray
- read_MB_array(which: wolfhece.PyVertexvectors.Literal[.hbinb, .qxbinb, .qybinb, .frotini, .topini, .epsbinb, .kbinb] = '') wolfhece.wolf_array.WolfArrayMB [source]
Lecture d’une matrice MB
- Parameters:
which (str -- extension with point (e.g. '.hbinb')) – suffixe du fichier
- Returns:
WolfArrayMB
- help_files() str [source]
Informations sur les fichiers et les types de données qu’ils contiennent.
- check_infiltration() str [source]
- Informations sur les zones d’infiltration :
nombre de zones dans le fichier .inf et .fil
nombre de cellules de chaque zone
première maille de chaque zone
nombre de temps énumérés dans le fichier .fil
Warning si le nombre de zones est différent entre les fichiers .inf et .fil
- copy2gpu(dirout: str = '') str [source]
Copie des matrices d’une simulation CPU pour le code GPU
- Parameters:
dirout (str) – répertoire de sortie
- copy_parameters(other: prev_sim2D)[source]
Copie des paramètres d’une simulation à une autre
- Parameters:
other (prev_sim2D) – autre simulation
- is_like(other: prev_sim2D) tuple[bool, str] [source]
Vérification de la similarité de deux simulations
- Parameters:
other (prev_sim2D) – autre simulation
- Returns:
True si les simulations sont similaires
- add_weak_bc_x(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float)[source]
Ajout d’une condition limite faible sur le bord X
Alias de myparam.add_weak_bc_x
- add_weak_bc_y(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float)[source]
Ajout d’une condition limite faible sur le bord Y
Alias de myparam.add_weak_bc_y
- remove_weak_bc_x(i: int, j: int)[source]
Suppression d’une condition limite faible sur le bord X
Alias de myparam.weak_bc_x.remove
- remove_weak_bc_y(i: int, j: int)[source]
Suppression d’une condition limite faible sur le bord Y
Alias de myparam.weak_bc_y.remove
- change_weak_bc_x(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float)[source]
Modification d’une condition limite faible sur le bord X
Alias de myparam.weak_bc_x.change
- change_weak_bc_y(i: int, j: int, ntype: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, value: float)[source]
Modification d’une condition limite faible sur le bord Y
Alias de myparam.weak_bc_y.change
- exists_weak_bc_x(i: int, j: int) bool [source]
Vérification de l’existence d’une condition limite faible sur le bord X
Alias de myparam.weak_bc_x.exists
- exists_weak_bc_y(i: int, j: int) bool [source]
Vérification de l’existence d’une condition limite faible sur le bord Y
Alias de myparam.weak_bc_y.exists
- list_bc_x() list[boundary_condition_2D] [source]
Liste des conditions limites existantes sur les bords X
- list_bc_y() list[boundary_condition_2D] [source]
Liste des conditions limites existantes sur les bords X
- list_bc_x_ij() tuple[list[int], list[int]] [source]
Liste des conditions limites existantes sur les bords X
- list_bc_y_ij() tuple[list[int], list[int]] [source]
Liste des conditions limites existantes sur les bords X
- list_bc_ij() tuple[tuple[list[int], list[int]], tuple[list[int], list[int]]] [source]
Liste des conditions limites existantes sur les bords X et Y
- Returns:
tuple avec les indices des conditions limites [entiers 32 bits]
- list_bc() tuple[list[boundary_condition_2D], list[boundary_condition_2D]] [source]
Liste des conditions limites existantes sur les bords X et Y
- Returns:
tuple avec instances “boundary_condition_2D”
- get_bc_x(i: int, j: int) list[boundary_condition_2D] [source]
Renvoi d’une condition limite faible sur le bord X
Alias de myparam.weak_bc_x.get_bc
- get_bc_y(i: int, j: int) list[boundary_condition_2D] [source]
Renvoi d’une condition limite faible sur le bord Y
Alias de myparam.weak_bc_y.get_bc
- list_pot_bc_x() tuple[wolfhece.PyVertexvectors.np.ndarray, wolfhece.PyVertexvectors.np.ndarray] [source]
Liste des conditions limites potentielles sur le bord X
- Return i,j:
indices des conditions limites potentielles [entiers 32 bits]
- list_pot_bc_y() tuple[wolfhece.PyVertexvectors.np.ndarray, wolfhece.PyVertexvectors.np.ndarray] [source]
Liste des conditions limites potentielles sur le bord X
- Return i,j:
indices des conditions limites potentielles [entiers 32 bits]
- plot_borders(xy_or_ij: wolfhece.PyVertexvectors.Literal[xy, ij] = 'xy', figax: tuple[wolfhece.PyVertexvectors.plt.Figure, wolfhece.PyVertexvectors.plt.Axes] = None, xcolor: str = 'b', ycolor: str = 'r')[source]
Plot the borders
- get_frequent_parameters() tuple[list[tuple[str, str]], list[tuple[str, str]], tuple[list[int], list[int], list[int], list[int]]] [source]
Renvoi des paramètres de simulation fréquents
- Les valeurs retournées sont :
les groupes et noms des paramètres globaux
les groupes et noms des paramètres de blocs
les indices des paramètres globaux (generaux et debug) et de blocs (generaux et debug)
- check_all(verbosity=0) str [source]
Vérification de la cohérence des paramètres de simulation.
Si les tests ne passent pas, un log d’erreur est généré.
- Parameters:
verbosity – 0 = errors only, 1 = errors and warnings, 2 = everything, 3 = everything + group names
- Returns:
message de log
- Return type:
str
- help_values_parameter(group: str, name: str)[source]
Aide sur les valeurs possibles des paramètres de simulation
- help_useful_fct() tuple[str, dict[str:dict[str, list[str]]]] [source]
Useful functions/routines for parameters manipulation
:return (ret, dict) : ret is a string with the description of the function, dict is a dictionary with the function names sorted by category (Global, Block) and type (set, get, reset, check)
- _from_params_gpu(imported_params: prev_parameters_simul = None)[source]
This is a __init__ helper. This will be used in the constructor to create a mono-block model from scratch (i.e. not reading from disk; providing base matrices).
- Parameters:
myparam – The parameters to build the model with.
- set_gpu_test(dt: float = None, n_timesteps: int = None, writing_frequency: wolfhece.PyVertexvectors.Union[int, float] = None, reset_bc: bool = False, optimize_dt: bool = None, Runge_Kutta_pond: float = None, Courant_number: float = None, max_Froude: float = None, writing_mode: wolfhece.PyVertexvectors.Literal[seconds, timesteps, 0, 1] = None)[source]
Usual settings for a GPU test
- add_boundary_condition(i: int, j: int, bc_type: wolfhece.mesh2d.cst_2D_boundary_conditions.BCType_2D, bc_value: float, border: wolfhece.mesh2d.cst_2D_boundary_conditions.Direction)[source]
Add a weak boundary condition to the model.
- Parameters:
i – i-position of the boundary condition (1-based)
j – j-position of the boundary condition (1-based)
bc_type – type of boundary condition
bc_value – value/parameter of the boundary condition
border – mesh’s border on which the boundary condtion applies
- setup_oneblock(contour: wolfhece.PyVertexvectors.Union[wolfhece.PyVertexvectors.vector, wolfhece.wolf_array.WolfArray, tuple, dict, wolfhece.wolf_array.header_wolf], block_spatial_stepsize: float, friction_coefficient: float = 0.04, translate_contour: bool = True)[source]
Setup a single block model
- Parameters:
contour (Union[vector, WolfArray, tuple, dict, header_wolf]) – contour of the model
dx – spatial step [m]
frot (float) – friction coefficient
translate_contour (bool) – translate the contour to have the first point at (0, 0)
- mimic_mask(source: wolfhece.wolf_array.WolfArray)[source]
Copy the mask of the source array to all arrays in the model.