• Aucun résultat trouvé

E XEMPLE D ' UTILISATION DU PROGRAMME MOCREG

Dans le document Hydraulique fluviale (Page 30-56)

Le programme a été utilisé pour résoudre l'Ex.5.B, p. 300 à 321. Ex. 5.B

Dans un canal rectangulaire prismatique en béton rugueux ayant une largeur de B = 5 [m], l'écoulement est uniforme avec une profondeur d'eau de hn = 1.20 [m]. Pendant le passage d'une crue, le débit augmente linéairement jusqu'à une valeur de Q = 50 [m3/s] dans un temps t' = 20 [min] et redescend linéairement au débit initial dans un temps t'' = 60 [min]. Le canal a une pente de fond de Jf = 0.001 et son coefficient de frottement est estimé à n = 0.020 [m-1/3s]. La longueur du canal étudié est de 3 [km]. En utilisant la méthode des caractéristiques, déterminer :

i) l'hydrogramme aux deux stations L1 = 1.5 [km] et L2 = 3 [km];

ii) le moment où se produit le débit maximum, Qmax , aux stations L1 et L2 respectivement;

iii) l'atténuation de la profondeur maximale d'eau aux stations L1 et L2 ;

iv) le temps nécessaire pour que la profondeur d'eau devienne enfin uniforme à la station L2 .

Le programme MOCREG est écrit en FORTRAN standard et peut être exécuté sur la plupart des micro-ordinateurs. La structure du programme est très similaire à celle du programme EXPLIC. Le programme est écrit de manière didactique et n'a pas la prétention d'être optimisé. Un grand nombre de commentaires insérés dans le code expliquent le déroulement du programme pas par pas. Dans la mesure du possible, le nom des variables est choisi de façon à rappeler la notation utilisée à la sect. 5.2 et dans les explications données ci-avant. Une liste complète des variables avec leur type, ainsi que des explications, figurent au début du programme.

S'il le souhaite, l'utilisateur peut introduire les données du problème de façon interactive (voir Fig. Ex.5.B.5), en répondant aux questions posées par le programme. De nombreux commentaires glissés dans le dialogue rappellent les sujets traités dans le livre et guident l'utilisateur dans ses choix. Le programme teste les erreurs éventuelles dans l'introduction des données. En cas d'erreur, la question est reposée jusqu'à ce que l'utilisateur réponde correctement. Les erreurs relatives à la stabilité de la solution (non- respect de la condition de stabilité de Courant) sont également détectées et signalées par un message d'erreur; ce dernier indique également la modification à apporter.

Le programme peut également lire les données du problème à partir d'un fichier de données, préparé à l'avance par l'utilisateur.

IV.5.1) Définition du domaine de solution

Comme c'est le cas dans le programme EXPLIC, l'espace-temps est visualisé comme un système de coordonnées cartésiennes, x-t, sur un plan horizontal (voir Fig. Ex.5.B.1 et Fig.5.4). L'axe du canal, d'une longueur de LT = 3 [km], coïncide avec l'axe x. Il est divisé en plusieurs tronçons de longueur ∆x (variable DX). Le nombre de noeuds ainsi

obtenu est de NN.

Perpendiculaire à l'axe de l'espace, x, l'axe de temps (variable T) commence au temps t = 0 à l'origine et va jusqu'à l'infini, par pas de temps ∆t (variable DT). Pour les besoins du problème, on admettra toutefois que la solution s'arrête au temps t = TMAX. La valeur de TMAX sera fournie par l'utilisateur comme donnée d'entrée.

On désire connaître les profondeurs, h(x,t) (variable H), et les vitesses, U(x,t) (variable U), à chaque point de cet espace-temps. De telles variables peuvent être représentées sous forme d'un troisième axe perpendiculaire au plan de l'espace-temps, x-t; ce qui donne un espace à trois dimensions.

t L M R x t = TMAX J J + 1 t = 0 x = 0 x x - ∆x x + ∆x x = LT I I - 1 I = 1 I = NN I + 1 ∆x ∆x t = t + ∆t t = t ∆t (DT) P (DX) (DX) hn Q0 , U0 h(x,t) ou U(x,t)

Fig. Ex.5.B.1 Le domaine de solution et sa discrétisation.

IV.5.2) Discrétisation des équations pour la méthode des caractéristiques au pas de temps fixe

IV.5.2.1) Conditions initiales

On utilise les mêmes conditions initiales que celles utilisées dans l'Ex. 5.B : hn ( H0) = 1.20 [m] ; Uo (U0) = 1.374 [m/s] ; Qo (Q0) = 1.374 [m/s] Fro = Uo



gho = 1.374 √

(9.81) (1.2) = 0.40 [-] ⇒ l'écoulement est fluvial Pour les détails, voir les explications données dans l'Ex. 5.B.

IV.5.2.2) Stockage des informations dans le programme

Les variables représentant la profondeur d'eau, la vitesse d'écoulement, le débit d'écoulement, la célérité absolue et la pente de la ligne d'énergie aux noeuds du domaine de solution sont stockées dans des matrices à deux dimensions; respectivement H(J,I), U(J,I), Q(J,I), C(J,I) et JE(J,I). L'indice J (numéro de ligne) représente le temps, tandis que l'indice I (numéro de colonne) représente le numéro du noeud, c.-à-d. la position le long de l'axe x.

Afin de réserver la place nécessaire au stockage des matrices dans la mémoire de l'ordinateur, il y a lieu de fixer des limites quant au nombre maximum de lignes et de colonnes que l'on peut avoir. Le nombre de colonnes est dicté par le nombre maximum de divisions que l'on désire le long de l'axe x. Dans le programme, ce nombre a été fixé arbitrairement à MAXDIV = 100, ce qui permet d'écrire que le nombre maximum de noeuds sera de NNMAX = MAXDIV + 1 = 101. Pour augmenter le nombre autorisé de divisions, et par conséquent le nombre autorisé de noeuds, il suffit de changer la valeur du paramètre MAXDIV et de recompiler le programme.

Pour économiser de la place de stockage dans la mémoire, les matrices (H, U, Q, C et JE) sont déclarées avec seulement deux lignes (J = 1 et J = 2). Au début des calculs, les valeurs initiales de H, U, Q, C et JE sont stockées sur la ligne J = 1 en utilisant les conditions initiales. A chaque pas de temps, les calculs sont faits pour obtenir les valeurs sur la ligne J = 2 et les résultats sont immédiatement écrits sur un fichier. Ensuite, les valeurs de la ligne J = 1 sont remplacées par les valeurs de la ligne J = 2, et ainsi de suite.

IV.5.2.3) Discrétisation des équations

Les éqs. IV.21 et IV.22 sont récrites sous la forme suivante:

U K K K c c c K K K c c P neg pos neg R L R neg pos neg R L = + − +     = + − +     1 1 1 ; h K K g c c P pos neg L R = − +     1 1

Les variables Kpos et Kneg sont calculées directement à l'aide des éqs. IV.19 et IV.20.

La vitesse, la profondeur d'eau, la célérité absolue, et la pente de la ligne d'énergie au point L (UL, hL, CL et JEL) et au point R (UR, hR, CR et JER) sont calculées respectivement à partir des équations IV.28, IV.29, IV.30, IV.34, IV.35 et IV.36, qui sont sous une forme utilisable directement. Ces équations peuvent être utilisées pour calculer la profondeur et la vitesse pour les noeuds de I = 2 à I = NN–1. Elles ne conviendront par contre pas pour les noeuds I = 1 et I = NN. Les calculs pour ces noeuds doivent utiliser les conditions de bord définies dans les données du problème.

IV.5.2.4) Conditions de bord en amont

En amont du canal, I = 1, on connaît l'hydrogramme de crue, c.-à-d. le débit en fonction du temps, comme le montre la Fig. Ex.5.B.3. Le débit au pas de temps J+1, Qj+1

i , est donné par la forme de l'hydrogramme imposé à l'entrée. Dans le

cas présent, l'hydrogramme est triangulaire (voir Fig. Ex.5.B.3). On le décrira par interpolation linéaire :

si T ≤ TP : Qj+1 i = Q0 + QMAX – Q0 TP T si TP < T ≤ TP+TPD : Qj+1 i = QMAX – QMAX – Q0 TPD [T – TP] si T > TP+TPD : Qj+1 i = Q0

En sachant le débit entrant au prochain pas temps Q(x = 0, t+∆t), la profondeur d'eau, hj+1

i , est calculée en résolvant la racine du polynomial cubique dans l'éq.

IV.40 à l'aide de la méthode numérique de Newton-Raphson. La vitesse, la profondeur d'eau, la célérité absolue, et la pente de la ligne d'énergie au point R (UR, hR, CR et JER) sont calculées respectivement à partir des équations IV.34, IV.35 et IV.36, qui sont sous une forme utilisable directement.

Ensuite la vitesse d'écoulement est obtenue par la continuité : Uj+1 i = Qj+1 i Sj+1 i

où la surface mouillée, Sj+1

i , correspondant à la profondeur, h j+1

i , est calculée

selon la forme de la section du canal. IV.5.2.5) Conditions de bord en aval

A l'extrémité aval du canal, on admet que la courbe de tarage est définie par la relation de Manning Strickler (voir éq. 3.16). En utilisant cette condition la profondeur d'eau, hj+1

de la méthode numérique de Newton-Raphson. La vitesse, la profondeur d'eau, la célérité absolue, et la pente de la ligne d'énergie au point L (UL, hL, CL et JEL) sont calculées respectivement à partir des équations IV.28, IV.29 et IV.30, qui sont sous une forme utilisable directement.

Ensuite la vitesse d'écoulement est obtenue par la continuité : Uj+1 i = Qj+1 i Sj+1 i

où la surface mouillée, Sj+1

i , correspondant à la profondeur, h j+1

i , est calculée

selon la forme de la section du canal.

Voir les remarques dans le texte du programme EXPLIC dans le livre concernant les conséquences de l'admission de la validité de la courbe hauteur-débit correspondant à l'écoulement uniforme, Q =

f

(hn), au noeud NN.

IV.5.3) Structure du programme MOCREG

Le programme MOCREG a une structure modulaire. Il est composé d'un programme

principal et de plusieurs sous-programmes, chacun exécutant une tâche bien définie.

L'organigramme du programme présenté à la Fig. IV.6 montre les liaisons entre les différents modules. Pour une meilleure compréhension, on conseille au lecteur de prendre le temps de suivre la logique du programme directement à partir du code. Des commentaires sont abondamment utilisés pour en faciliter la lecture. Une description complète de toutes les variables se trouve au début du programme principal. Les tâches exécutées par les divers modules sont décrites ci-après (voir Fig. IV.6) :

- Le programme principal EXPLIC contrôle le déroulement de l'ensemble du programme en appelant quatre sous-programmes :

- Le sous-programme LIREF lit les données du problème à partir d'un fichier de données dont le nom est fourni par l'utilisateur en tapant au clavier. Il calcule également les différents paramètres utiles ainsi que les valeurs du débit, Q0, et de la vitesse, U0, au temps t = 0 selon la formule de Manning (éq. 3.16).

- Le sous-programme LIRE lit les données du problème en questionnant l'utilisateur. Il calcule également les différents paramètres utiles ainsi que les valeurs du débit, Q0, et de la vitesse, U0, au temps t = 0 selon la formule de Manning (éq. 3.16). - Le sous-programme INIT attribue les conditions initiales à tous les noeuds au temps

t = 0. Ce sous-programme reçoit la valeur de HN donnée par l'utilisateur et les valeurs de Q0 et U0 calculées par le sous-programme LIRE et les attribue à tous les noeuds en remplissant les premières lignes des trois matrices H, Q et U. Il calcule également la célérité absolue et la pente de la ligne d'énergie à tous les noeuds pour remplir les premières lignes des matrices C et JE.

- Le sous-programme CALCUL contrôle le déroulement de calculs d'écoulement non permanent selon le schéma explicite. Ce sous-programme avance le temps, T, par des incréments, DT, constants et arrête les calculs quand T = TMAX. Il appelle six autres sous-programmes pour exécuter les différentes tâches:

- Le sous-programme TITRES est appelé une seule fois tout au début pour écrire les titres et les données du problème sur le fichier de sortie.

- Le sous-programme ECRIT, comme son nom l'indique, écrit les résultats sur le fichier de sortie à la fin de chaque pas de calcul.

PROGRAMME MOCREG programme principal qui contr™le le dŽroulement de l'ensemble SOUS-PROGRAMME LIREF Lire les donnŽes du

problme ˆ partir d'un fichier d'entrŽe

SOUS-PROGRAMME INIT attribuer les conditions

initiales aux neouds

SOUS-PROGRAMME CALCUL calculer la hauteur, la vitesse et le dŽbit dans

le temps et l'espace

SOUS-PROGRAMME TITRES Žcrire les titres des

colonnes sur le fichier de sortie

SOUS-PROGRAMME ECRIT Žcrire les rŽsultats d'un

pas de temps sur le fichier de sortie

SOUS-PROGRAMME QENTRE calculer le dŽbit au

noeud 1 pour le prochain pas de temps d'aprs l'hydrogramme SOUS-PROGRAMME AMONT calculer la profondeur et la vitesse au noeud 1 SOUS-PROGRAMME INTER calculer la profondeur, la vitesse et le dŽbit au noeuds I = 2 ˆ NN-1 SOUS-PROGRAMME FUNCTION RTSAFE rŽsoudre la racine d'une Žquation dans une inter- valle donnŽe avec la mŽthod Newton-Raphson SOUS-PROGRAMME AVAL calculer la profondeur, la vitesse et le dŽbit au noeud NN SOUS-PROGRAMME FHAM calculer f(hP) et f '(hP) au noeud 1 SOUS-PROGRAMME FHAV calculer f(hP) et f '(hP) au noeud NN SOUS-PROGRAMME LIRE Lire les donnŽes du problme en interrogeant

l'utilisateur

external

external

Fig. IV.6 Organigramme du programme MOCREG.

- Le sous-programme QENTRE calcule le débit entrant dans le canal à l'extrémité amont selon l'hydrogramme triangulaire spécifié par l'utilisateur.

- Le sous-programme AMONT reprend la valeur du débit calculée par le sous- programme QENTRE et calcule la profondeur et la vitesse pour le noeud I = 1. Il fait appel au sous-programme RTSAFE de type "FUNCTION" pour résoudre numériquement la racine d'un polynôme cubique codé dans le sous-programme, FHAM. Le nom FHAM est passé au RTSAFE dans la liste des arguments. A noter que, suivant les règles standard de Fortran, la variable FHAM est déclarée comme étant "EXTERNAL" .

- Le sous-programme INTER calcule la profondeur, le débit et la vitesse aux noeuds de I = 2 à I = NN –1, où NN est le nombre total de noeuds.

- Le dernier sous-programme AVAL, comme son nom l'indique, calcule la profondeur, le débit et la vitesse au noeud I = NN. Il fait appel au sous- programme RTSAFE de type "FUNCTION" pour résoudre numériquement la racine d'une équation non linéaire codée dans le sous-programme, FHAV. Le nom FHAV est passé au RTSAFE dans la liste des arguments. A noter que, suivant les règles standard de Fortran, la variable FHAV est déclarée comme étant "EXTERNAL" .

A la fin de chaque pas de temps, le sous-programme CALCUL remplace les valeurs du pas de temps précédent par les valeurs qui viennent d'être calculées.

- Le sous-programme RTSAFE de type "FUNCTION" reçoit quatre variables : • le nom du sous-programme (FUNCD) contenant le codage de la fonction dont

la racine doit être calculée ainsi que sa dérivée,

• l'extrémité gauche de la zone contenant la racine recherchée, • l'extrémité droite de la zone contenant la racine recherchée, • la précision avec laquelle la racine doit être calculée.

RTSAFE cherche la racine de la fonction envoyée en utilisant une procédure hybride qui est une combinaison des méthodes de Newton Raphson et de bissection. Le résultat est retourné sous le nom du sous-programme, c.-à-d. dans la variable RTSAFE. A noter que la variable FUNCD est déclarée comme étant "EXTERNAL"' suivant les règles standard de Fortran.

Le code pour RTSAFE a été adapté d'un code portant le même nom, qui a paru dans Press et al. (1992). Le lecteur est encouragé à consulter cet excellent ouvrage pour plus de détails.

- Le sous-programme FHAM calcule le polynomial cubique f(h) et sa dérivée f'(h) pour une valeur de h donnée, en utilisant respectivement éq. IV.40 et éq. IV.41. - Le sous-programme FHAV calcule une fonction non linéaire f(h) et sa dérivée

f'(h) pour une valeur de h donnée, en utilisant respectivement éq. IV.44 et éq.

IV.45.

IV.5.4) Solution de l'Ex.5.B en utilisant le programme MOCREG

Le dialogue entre l'utilisateur et l'ordinateur pour résoudre le présent problème est présenté à la Fig. IV.7. Les valeurs introduites par l'utilisateur sont suivies d'une touche de RETURN (CR ou ENTER sur certains ordinateurs). Le dialogue entre l'utilisateur et le programme est très similaire à celui présenté dans le programme EXPLIC. Dans le cas de MOCREG, l'utilisateur est invité à introduire quatre paramètres supplémentaires utilisés par le sous programme RTSAFE :

DELHAM est utilisé pour calculer les limites de l'intervalle dans lequel on cherche la racine de l'éq. IV.40, c.à-d. la profondeur en amont au prochain pas de temps H(2,1) :

limite inférieure : H1 = H(J,1) - DELHAM limite supérieure : H2 = H(J,1) + DELHAM

DELHAM est utilisé pour calculer les limites de l'intervalle dans lequel on cherche la racine de l'éq. IV.40, c.à-d. la profondeur en aval au prochain pas de temps H(2,1) :

limite inférieure : H1 = H(J,NN) - DELHAM limite supérieure : H2 = H(J,NN) + DELHAM

HAMTOL est utilisé comme critère de convergence pour calculer la racine de l'éq. IV.40, c.à-d. la profondeur en amont au prochain pas de temps H(2,1). HAVTOL est utilisé comme critère de convergence pour calculer la racine de l'éq. IV.40, c.à-d. la profondeur en aval au prochain pas de temps H(2,NN).

Il convient d'attirer l'attention sur deux points importants:

- Le premier point concerne le pas de temps spécifié pour les calculs. On constate que, comme c'était le cas pour le programme EXPLIC, la valeur de DT = 0.1 [s] introduite dans le programme est beaucoup plus faible que 6.242 [s] dictée par la condition de stabilité de Courant calculée pour les conditions initiales. Il convient de rappeler que la méthode de caractéristiques est une méthode explicite. L'obligation d'utiliser des petits pas de temps pour assurer une solution stable constitue le principal désavantage du schéma explicite pour lequel la condition de Courant est une condition "nécessaire mais pas suffisante". Le lecteur devrait lui-même lancer le programme avec différentes combinaisons de DX et DT pour se rendre compte que les valeurs de DT nécessaires pour assurer une solution stable se situent sensiblement en dessous de celles spécifiées par la valeur initiale de la condition de stabilité de Courant. En effet, l'expérience montre que le pas de temps doit être inférieur à un vingtième de la valeur indiquée par la condition de Courant.

A noter que la valeur du pas de temps selon la condition de Courant n'est pas constante, mais qu'elle varie d'un pas de temps à l'autre et d'une station à l'autre, selon les nouvelles valeurs calculées de la vitesse, U, et de la célérité des ondes, c (cette dernière dépend de la nouvelle profondeur d'eau, h, calculée). La condition de Courant est vérifiée en permanence dans le sous-programme pour chaque nouveau point calculé. En cas de violation de cette condition, un message d'erreur apparaît et le programme s'arrête.

- Le deuxième point concerne le résultat des calculs à écrire sur le fichier de sortie. Il est évident que l'écriture des profondeurs, des débits et des vitesses à tous les noeuds pour tous les pas de temps n'est pas pratique. Par conséquent, l'utilisateur est invité à choisir trois numéros de noeud pour lesquels il désire connaître la solution dans le temps. Dans le cas présent, on a choisi les noeuds 1 , 51 et 101, qui représentent le début, le milieu et la fin du canal. L'utilisateur est en outre invité à fixer la fréquence d'écriture des résultats. Dans le cas présent, on désire connaître les valeurs à tous les 1200 pas de temps. Un pas de temps étant de 0.1 [s], cela revient à connaître les résultats toutes les 2 minutes.

Comme le montre le deuxième type de dialogue avec MOCREG présenté à la Fig. IV.8, les utilisateurs expérimentés peuvent introduire les données du problème dans l'ordinateur par le biais d'un fichier de texte (format ASCII) tel qu'il est représenté à la Fig. IV.9. A noter que le programme MOCREG ne lit que les valeurs des variables écrites au début de chaque ligne. Les noms des variables sont ignorés par le programme. Ils ont été inclus pour faciliter la compréhension de l'utilisateur.

IV.5.5) Analyse des résultats de calculs et commentaires

Le fichier de sortie du programme MOCREG est présenté à la Fig. IV.8. Les valeurs maximales du débit, de la profondeur et de la vitesse pour les trois noeuds en question sont signalées par un astérisque (*). Une représentation graphique des résultats est également présentée à la Fig. IV.11.

La Fig. Ex.5.B.7a est une représentation axonométrique des profondeurs d'eau, h(x,t), sur l'ensemble de l'espace-temps, plan x-t, de la solution qui s'étend de x = 0 [m] à

x = 3000 [m] et de t = 0 [s], c.-à-d. du début de la crue à x = 0 [m], jusqu'au

PROGRAMME DE CALCUL POUR ECOULEMENTS NON PERMANENTS METHODE DES CARACTERISTIQUES

SYSTEME D'UNITE : METRIQUE VOUS AVEZ DEUX POSSIBILITE :

1- LIRE LES DONNES DEPUIS UN FICHIER

2- INTROUDIRE LES DONNES INTERACTIVEMENT A PARTIR DU CLAVIER

TAPER LE NUMERO DU CHOIX QUI CONVIENT = 2 LECTURE INTERACTIVE DES DONNEES DU PROBLEME LECTURE DES DONNEES CONCERNANT LE CANAL :

LE CANAL PEUT AVOIR UNE SECTION TRAPEZOIDALE, RECTANGULAIRE (m = 0) OU TRIANGULAIRE (B = 0).

LARGEUR DU FOND DU CANAL ? B (m) = 5.0 RETURN

PENTE DES BERGES ? m (-) = 0.0 RETURN

PENTE DU FOND DU CANAL ? Jf (-) = 0.001 RETURN

COEFFICIENT DE MANNING ? n (m^-1/3 s) = 0.02 RETURN

PROFONDEUR POUR ECOULEMENT UNIFORME ? hn (m) = 1.2 RETURN

LONGUEUR TOTALE DU CANAL ? LT (m) = 3000. RETURN

EN UTILISANT LA FORMULE DE MANNING (EQ. 3.16 OU 3.33)

LE DEBIT D'ECOULEMENT UNIFORME EST DONC, Qo (m3/s) = 8.249 LECTURE DES DONNEES CONCERNANT LES CONDITIONS AUX LIMITES (AMONT) : ON ADMET UN HYDROGRAMME TRIANGULAIRE DEFINI PAR TROIS PARAMETRES : TEMPS DE MONTEE ? t' (s) = 1200.

DEBIT DE POINTE ? QMAX (m3/s) = 50. TEMPS DE DESCENTE ? t'' (s) = 3600 ATTENTION ! ...

POUR t > (t' + t'') = 4800.000 (s), ON ADMET QUE Q = Qo

Dans le document Hydraulique fluviale (Page 30-56)

Documents relatifs