Simulation numérique directe
de la convection thermique d'un fluide pur
en cavité cartésienne (2D ou 3D)

1. Le Programme

Programme (en Fortran 77) pour la simulation directe de la convection thermique de fluide pur en géométrie cartésienne.
Résolution des équations de Navier-Stokes, pour un fluide incompressible, par méthode pseudospectrale (basée sur les polynômes de Tchebychev) en espace, et d'ordre 2, 3 ou 4 en temps.

Programmes et subroutines (UNIX) PROG.tar.gz
Programmes et subroutines (DOS)
(c.-à-d.: fichiers au format texte MS-DOS; ni plus, ni moins; ne pas s'attendre à un installeur ou une belle interface presse-bouton...)
Prog.zip
Notice d'utilisation (PostScript) utilisation.ps
Notice d'utilisation (PDF) utilisation.pdf

Rapide autocritique:
C'est un code de recherche brut de décoffrage: Peu convivial et insuffisamment commenté, sur lequel sont successivement passés plusieurs programmeurs...
Il fonctionne toutefois très bien en l'état actuel (attesté par la validation sur quelques cas test non triviaux).

2. Quelques utilitaires connexes

Pour réaliser diverses taches de pré- et/ou post-traitement sur le fichier de données fort.##, ## étant un nombre représentatif du type de simulation auquel le fichier est associé (voir la notice d'utilisation).
Ces utilitaires, écrits en C, sont autonomes et s'exécutent (une fois compilés, evidemment) sous forme de ligne de commande.

2.1. Récupération d'informations

L'utilitaire about_fort permet de récupérer des informations générales sur un fichier fort.## : Maillage, valeurs des nombres de Rayleigh et Prandlt, valeur du pas de temps, ...
Ces informations sont affichées à l'écran.
Exemple: (sur un fichier fort.23 issu d'une simulation 2D)
$ about_fort fort.23
! Lecture du fichier: fort.23
! Fichier de 'type': fort.23  --> Simulation par schema temporel ABER3
! Geometrie et nombre de variables:
NDIM= 2 NPER= 0 NCOMP= 2        NNONV= 1        NVAR= 3
! Rapports de forme:
AL[1]=Ax=0.5    AL[2]=Ay=0.5
! Conditions aux limites:
ABC[ 1]=1       ABC[ 2]=1       ABC[ 3]=0       ABC[ 4]=0       ABC[ 5]=0      ABC[ 6]=0
ABC[ 7]=1       ABC[ 8]=1       ABC[ 9]=0       ABC[10]=0       ABC[11]=0      ABC[12]=0
ABC[13]=1       ABC[14]=1       ABC[15]=0       ABC[16]=0       ABC[17]=0      ABC[18]=0
ABC[19]=1       ABC[20]=1       ABC[21]=0       ABC[22]=0       ABC[23]=0      ABC[24]=0
ABC[25]=1       ABC[26]=1       ABC[27]=0       ABC[28]=0       ABC[29]=1      ABC[30]=0
ABC[31]=0       ABC[32]=0       ABC[33]=1       ABC[34]=1       ABC[35]=0      ABC[36]=0
! Degres polynomiaux:
N[1]=Nx=80      N[2]=Ny=80
! Parametres:
RE=0
PR=0.025
RA=150000
PE=0
GR=0
SC=0
RM=0
DT=2e-05
Récupérez ici le programme about_fort.c, ainsi que le fichier d'en-tête endian_util.h, et compilez avec votre compilateur C préféré.

2.2. Permutation du type d'endian du fichier de données

Le fichier contenant les données (nombre de dimensions, valeurs des champs et autres paramètres,...), fort.## (le ## étant un nombre représentatif du type de simulation auquel le fichier est associé; c.f. la notice d'utilisation) est binaire (i.e.: non-formaté). Hélas, celon les plateformes sur lesquelles ces fichier sont écrits, cela implique qu'ils soient rédigés en little endian ou big endian (la différence entre les deux repose uniquement sur l'ordre d'écriture des octets représentant une donnée). En clair, un fichier binaire écrit sur une machine utilisant un type d'endian sera illisible sur une machine utilisant l'autre.
L'utilitaire swap_fort permet de lire un fichier fort.##, dont le format endian n'est pas celui de la machine sur laquelle est executé l'utilitaire swap_fort, pour créer un nouveau fichier fort.##, codé en 'bon' endian.
Un exemple pour fixer les idées:
Un calcul, effectué sur une machine1, qui lit/écrit en little endian, donne un fichier fort.23.
On souhaite utiliser ce fichier sur une machine 2, qui lit/écrit en big endian. Pour cela, il faut d'abord importer le fichier (tel quel) de la machine 1 à la machine 2, puis, sur la machine 2, effectuer la manipulation suivante:
swap_fort fort.23 fort.23.ok
Le fichier ainsi créé, fort.23.ok, est utilisable par la machine 2.
Récupérez ici le programme swap_fort.c, ainsi que le fichier d'en-tête endian_util.h, et compilez avec votre compilateur C préféré.

2.3. Ajout d'une perturbation

L'utilitaire perturb_fort permet d'ajouter une perturbation (thermique) aléatoire, d'amplitude fixée par l'utilisateur, à un écoulement (fichier fort.##) donné.
"Perturbation (thermique) aléatoire d'amplitude fixée" signifie simplement qu'à chaque valeur de température sur la grille (valeurs données dans le fichier fort.##) est ajouté une valeur V = r.A; où r est une quantitée aléatoire comprise entre -1 et +1, et A l'amplitude fixée par l'utilisateur.
Exemple:
Disposant d'un fichier fort.23, on souhaite ajouter une perturbation thermique d'amplitude 10-5. On effectue pour cela la manipulation suivante:
$ perturb_fort fort.23. fort.23.pert
! Amplitude de la perturbation? 1e-5
! Perturbation (thermique) d'amplitude: 1e-05
! Ecriture dans le fichier: fort.23.pert
Le fichier fort.23.pert contient l'écoulement perturbé.
Récupérez ici le programme perturb_fort.c, ainsi que les fichiers d'en-tête endian_util.h et lire_fort_util.h, puis compilez avec votre compilateur C préféré.

2.4. Création d'une sortie Tecplot à partir d'un fichier fort.

L'utilitaire fort2tec permet, à partir d'un fichier fort.##, de créer un fichier de sortie (ASCII) au format Tecplot identique à celui qui est créé par le programme en fin de simulation.
Exemple:
Disposant d'un fichier fort.23 (2D ou 3D, d'une simulation de n'importe quel ordre temporel), on souhaite créer le fichier champs.tec correspondant:
$ fort2tec fort.23
Fichier d'entrees fort.23
Fichier de sorties champs.tec
On peut également préciser le nom du fichier de sortie en deuxième argument de la commande:
$ fort2tec fort.23.ra5000 champs.ra5000.tec
Fichier d'entrees fort.23.ra5000
Fichier de sorties champs.ra5000.tec
Récupérez ici le programme fort2tec.c, ainsi que le fichier d'en-tête lire_fort_util.h, puis compilez avec votre compilateur C préféré.

 Liens connexes: Quelques éléments sur l'emploi des méthodes pseudospectrales (Tchebychev) pour la résolution d'équations différentielles sont disponibles dans la section Arithmurgistan de ce site.
Derniers ajouts: 20/12/08
Page: Fluides > Convection thermique > Programme