MODE D'EMPLOI


I. Compilation

II. Utilisation du code

III. Utilisation avancée et Modification du code

IV. Résumé


I. Compilation

Le code REF/DIF 1, une fois rapatrié du Web et installé sur les stations de travail se présente de la facon suivante:

Le programme principal en Fortran doit donc être compilé pour pouvoir lancer REF/DIF 1. Grâce aux fichiers d'aide à la compilation (Makefile*.*), la compilation se résume à une instruction:

Cette instruction permet de générer les différents fichiers objets exécutables:

N.B.: Cette étape de compilation à priori simple peut s'avérer plus longue que prévu du fait de la présence dans les fichiers *.f de caractères parasites (^M), certainement apparus lors des différentes manipulations des fichiers. De plus ces ^M n'apparaissent pas sous le Text Editor, il faut utiliser VI pour assainir les fichiers.

A ce stade, il suffit de taper refdif1 pour lancer REF/DIF 1.

Retour au sommaire


II. Utilisation du code

REF/DIF 1 est un code de simulation de propagation de la houle prenant en compte la réfraction, la diffraction, le déferlement et la bathymétrie mais pas la réflexion. L'utilisation de ce logiciel ne nécessite que la connaissance de la bathymétrie et des caractéristique de la houle et du maillage. La visualisation des résultats doit être faite sous Matlab.

REF/DIF 1 est en fait structuré en trois parties, le corps principal avec le fichier refdif1, les fichiers de données, et les fichiers résultats.

Lors d'une utilisation classique, refdif1 fait appel lors de son exécution à deux fichiers de données: refdat.dat et indat.dat

Les résultats des calculs sont quant à eux écrits dans différents fichiers à raison d'une grandeur par fichier:

Enfin, cette version de REF/DIF dispose du fichier refdifplot.m qui permet d'automatiser la lecture des données et la visualisation des résultats qui doit être faite sous Matlab.

Fichiers sources:

- refdifv25.f : ce fichier écrit en Fortran 77 est le fichier source de REF/DIF 1. Il constitue le programme principal du code. Sa compilation génère refdif1 et refdifv25.o (fichiers exécutables permettant de lancer REF/DIF 1). refdif1 fait appel lors de son exécution à une subroutine contenue dans le fichier infile.f (fichier contenant la subroutine infile qui établit les liens entre le nom physique du fichier indat.dat et son nom logique)

- datgenv25.f : ce fichier, écrit en Fortran 77, est le fichier où sont codés les différents exemples d'utilisation et les cas test étudiés dans le manuel. L'exécution du fichier objet associé permet de choisir le cas test étudié, les dimensions des éléments bathymétriques, les caractéristiques de la houle... datgenv25.o fait appel lors de son exécution au fichier param.h qui permet de définir le nombre maximum de noeuds suivant x et y (ixr,iyr), le nombre maximum de subdivisions d'une cellule suivant x et y(ix,iy), le nombre maximum de fréquence dont est formée la houle (ncomp).

- surface.f : ce fichier écrit en Fortan 77 permet la conversion des résultats de REF/DIF 1 en données directement utilisables par Matlab

Fichiers de données:

- refdat.dat : ce fichier de données est le fichier où est entrée la bathymétrie. Ce fichier est donc soit à remplir à la main pour un exemple physique réel, soit à remplir à l'aide d'un petit programme par exemple en Fortran pour un cas avec une géométrie très simple. On pourrait aussi envisager d'automatiser cette étape en utilisant une table à digitaliser. Le zero correspond à la surface de l'eau , les valeurs négatives correspondent aux zones emergées. Les valeurs sont entrées en mètre. Comme nous l'avons vu, le maillage utilisé par REF/DIF 1 est un maillage structuré (rectangulaire). Il suffit donc de rentrer la cote des noeuds en procédant de la facon suivante:

5         10       15        20

     4         9      14       19
     3     8    13    18
     2     7    12    17
     1     6        11    16   

Le noeud 1, en bas à gauche, est le premier point en haut à droite du fichier, le noeud 2 sera dans le fichier refdat.dat le point à droite du premier. Le noeud 6 sera dans refdat.dat le point sous le noeud1...

noeud 1 noeud 2 noeud 3 noeud 4 noeud 5
noeud 6 noeud 7 noeud 8 noeud 9 noeud 10
noeud 11 noeud 12 noeud 13 noeud 14 noeud 15
... ... ... ... ...
... ... ... ... ...

Le format du nombre à utiliser pour entrer la cote des différents noeuds est défini dans refdifv25.f.

- indat.dat : ce fichier de données est le fichier où sont établis les liens entre les noms physiques des fichiers et les noms logiques, et où sont définies les caractéristiques de la houle et du maillage. Les liens ne changent pas d'un cas à un autre, il suffit donc de récupérer un fichier indat.dat généré par datgenv25.f et de l'adapter au cas étudié en modifiant les paramètres du maillage et de la houle.

Fichiers résultats:

- angle.dat : ce fichier résultat recoit l'angle que fait la direction de propagation de la houle en chaque noeud avec l'axe Ox (horizontal)

- depth.dat : ce fichier résultat contient la profondeur en chaque noeud utilisée pour les calculs avec correction de marée (elle diffère de la bathymétrie entrée dans refdat.dat pour les valeurs négatives, à savoir que toutes ces valeurs sont remplacées par 0.0010.)

- height.dat : ce fichier résultat contient la hauteur des vagues en chaque noeud.

- bottomu.dat : ce fichier résultat donne si cela est demandé l'ordre de la vitesse au fond

- surface.dat : ce fichier résultat généré si le paramètre isurface=1 contient pour chaque point de calcul dans le domaine, les informations suivantes: le nombre n de mailles selon y, les valeurs de y pour ces n mailles, x, et enfin a*exp(i*phi) pour les n mailles.

- outdat.dat.dat : ce fichier résultat contient les mêmes informations que surface.dat mais ne fourni ces informations que pour les noeuds en y et les points de calculs en x.

- refdifplot.m : ce fichier résultat est un fichier écrit en Fortran 77 destiné à Matlab. Il permet lors de son lancement sous Matlab de lire automatiquement la hauteur des vagues, l'angle entre la direction de propagation de la houle et l'axe Ox en tous les noeuds du domaine, la profondeur, les données de surface de sortie de REF/DIF 1. Il assure aussi la construction de différentes courbes. Ce programme utilise les routine de vecteurs de Matlab 4.2.

(- sxx.dat, sxy.dat, syy.dat: ces trois fichiers non disponibles dans cette version donneraient les contrainte de radiation)

   

Les paramètres à définir pour utiliser REF/DIF 1 sont ceux contenus dans indat.dat

Paramètres relatifs au maillage

- mr , nr : ces 2 paramètres définissent les dimensions de la grille. mr correspond au nombre de noeuds suivant x, nr donne le nombre de noeuds suivant y. Les valeurs maximum de ces valeurs sont fixées dans param.h par ixr et iyr.

- iu : ce paramètre permet de déterminer le système d'unités physiques dans lequel nous travaillons. iu=1 MKS. iu=2 English. Par défaut, iu=1.

- ntype : il permet de prendre en compte ou non les non-linéarités. ntype=0, modèle linéaire; ntype=1, modèle hybride; ntype=2, modèle de houle de Stokes

- icur : ce paramètre permet de prendre en compte des données relatives à des courants. icur=0, pas de courant; icur=1 données sur les courants. Par défaut icur=0.

- ibc : ibc permet de paramètrer les conditions aux limites. ibc=0 limites fermées; ibc=1, limites ouvertes. Par défaut, ibc=0.

- dxr, dyr: ce paramètre correspond à l'espacement entre deux noeuds respectivement suivant x et suivant y. Ces deltaX et deltaY doivent être uniforme sur toute la grille.

- dt : cette valeur définit la tolérance de profondeur

- ispace, md : ce paramètre permet de controller les subdivisions. ispace=0, le programme utilise ses propres subdivisions suivant x; ispace=1, l'utilisateur spécifie les subdivisions suivant x (md).

- nd : nd correspond au nombre de subdivisions suivant y.

- iff (1) (2) (3): ce terme triple permet de définir la dissipation. iff(1) permet d'activer les couches limites turbulentes. iff(2) permet d'activer un amortissement du fond poreux. iff(3) permet d'activer les couches limites laminaires. Si toutes les valeurs sont à zero, il n'y a pas d'amortissement.

- isp : ce paramètre permet à l'utilisateur de définir des spécifications de sous-grille. isp=0, pas de sous-grille à lire; isp=1, des données de sous-grille devront être lues.

- iinput : ce paramètre détermine le mode de calcul de la première ligne de valeurs de l'amplitude complexe A. Cette option n'étant pas disponible dans cette version de REF/DIF 1, on fixe iinput à 1.

- ioutput : ioutput spécifie la facon dont la dernière ligne d'amplitude complexe A calculée va être stockée dans owave.dat. ioutput=1, la sauvegarde de A n'est pas faite; ioutput=2, active cette option.

Paramètres relatif à la houle

- iwave : iwave décrit de type du "champ de houle". iwave=1 composantes de la houle discrètes; iwave=2, modèle de propagation directionnel

- nfreqs : cet entier correspond au nombre de composantes fréquentielles formant la houle. La valeur maximale de nfreqs est donnée dans param.h par ncomp.

- freqs : ce paramètre permet de définir la période de la houle pour chacune de ses composantes fréquentielles.

- tide : correction de la force de marée pour chaque composante. Ne disposant d'aucune précision sur ce terme nous l'avons fixé à zéro.

- nwavs : nombre de composantes de houle pour chaque fréquence.

- amp : amplitude de la houle pour chaque composante ( cote de la crête de la houle- cote de la valeur poyenne de la surface libre).

- dir : direction en degrés de la direction de propagation de la houle à l'infini par rapport à l'axe Ox. Il est à noter que ce paramètre doit être compris entre 60 et -60 degrés pour conserver la validité des équations parabolisées des équations de Berkhoff.

Nous n'avons travaillé qu'avec iwave=1, nous n'avons pas "décripté" tous les paramètres pour iwave=2. Si iwave=2, il faut définir en plus la direction centrale pour le spectre du modèle (thet0), freqs et tide, la variance pour chaque composante (edens), un facteur de propagation directionnel (nwavs), nseed (génération d'un nombre aléatoire), freqin, tidein.

Retour au sommaire


III. Utilisation avancée et Modification du code

La première opération lorsque que l'on veut utiliser REF/DIF 1 pour un cas différent des cas test consiste à modifier la bathymétrie et le maillage. Comme nous l'avons vu plus haut la bathymétrie est entrée dans le fichier refdat.dat sous forme de tableau de réels. Par défaut, ces réels doivent être des réels de 10 caractères dont 4 après la virgule (f10.4). Le nombre de noeuds sur une même ligne doit être conforme à celui donné par refdifv25.f. Par défaut, il est de 12 (12f10.4)

Dans l'exemple sur le Bassin d'Arcachon, nous n'avons pas respecté ce format (il est bien sûr possible d'ajuster tous les formats à chaque cas en modifiant refdifv25.f), nous avons donc un fichier refdat.dat de la forme suivante:

Sur cet extrait du fichier on retrouve bien le format f10.4. Mais, ce fichier est formé de 23 colonnes et 29 lignescomme nous pouvons le voir dans le fichier indat.dat (mr,nr).

La modification du nombre de noeuds sur une même ligne nécessite des modifications des formats de lecture sous refdifv25.f

Cette modification qui est à faire à 3 endroits dans refdifv25.f pour être validée doit être suivie d'un make all qui génère refdif1 prenant en compte le nouveau format de lecture des données.

Nous obtenons ainsi des résultats de la forme suivante sous Matlab où les lignes en pointillé sont les lignes bathymétriques et les lignes pleines sont les iso-amplitudes:

Pour cet exemple, la bathymétrie a été rentrée à la main, ce qui même pour un maillage 23*29 devient vite lassant. Cependant, il parait évident que dans un tel cas, il faut beaucoup plus qu'un noeud par km. pour obtenir des résultats en rapport avec la réalité. L'étude de tout cas physique sera donc précèdée d'une longue phase de saisie de données.

Pour accoître la lisibilité de refdat.dat, on peut aussi découper une ligne de cotes en un nombre entier de lignes à condition que le nombre total de noeuds reste toujours égal au nombre de points donné par indat.dat

Ainsi dans le cas de la baie, nous avons généré un maillage 110*180 (mr*nr) à l'aide d'un petit programme en Fortran tout en ne mettant que 12 noeuds par lignes.

indat.dat

Le fichier refdat.dat est donc formé de 1650 lignes de 12 noeuds, on retrouve bien les 19 800 noeuds du maillage. Cette manipulation qui consiste à découper une ligne de 180 noeuds en 15 lignes de 12 noeuds ne nécessite aucune modification dans refdifv25.f et semble de plus éviter des problèmes de lecture et d'écriture de données.

Pour générer le maillage de cette baie nous avons créé un petit programme Fortran be1.f entrant la bathymétrie dans refdat.dat qui permet de diminuer très fortement le temps de saisie des données.

be1.f

Ce petit programme nous a permis d'avoir un maillage de près de 20 000 points, et donc d'obtenir une bathymétrie précise. Cette méthode n'est applicable qu'aux cas avec une géométrie simple.

A travers ces 2 exemples, nous avons vu comment modifier le fichier source du code pour l'adapter à un maillage, et comment entrer de différents facon la bathymétrie dans refdat.dat.

L'étude de la propagation de la houle dans un milieu quelconque se fait toujours pour plusieurs période de houle, pour différentes amplitudes, et pour différents angles d'incidence de la houle au large. Ces caractéristiques de la houle comme nous l'avons vu ci-dessus sont définies dans indat.dat:

Pour modifier les caractéristique de la houle, il suffit donc de modifier dans indat.dat freqs, nwavs, amp et dir. L'exécution de refdif1 permettra alors d'obtenir tout simplement les résultats avec cette nouvelle houle qui pourront être visualisés sous Matlab. On peut dans ce même fichier définir le mode de propagation de la houle, le nombre de fréquences formant la houle et la correction de la marée (iwave, nfreqs,tide).

La bathymétrie étant définie dans refdat.dat, il est nécessaire de définir la grille dans indat.dat.

La modification du nombre de maille dans une direction ou de la distance entre 2 noeuds ou de n'importe quel autre paramètre se fait donc dans indat.dat en se conformant à la description des paramètres faite plus haut.

Une option intéressante de REF/DIF 1 mais que nous n'avons pu explorer faute de temps est la possibilité de définir des sous-grilles et donc de mailler plus serré à l'approche du rivage ou des singularités de la bathymétrie. Les paramètres md et nd permettent de définir le nombre de subdivisions suivant x et y. Si ips=1, les données relatives à la sous-grille doivent être lues dans un fichier de données supplémentaire subdat.dat.

Retour au sommaire


IV. Résumé

L'utilisation de REF/DIF 1 se résume donc en fait à:


Retour au menu du Manuel RDIF