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é.