Brevet FR2676573A1 — publié le 19921120

PROCEDE DE VISUALISATION EN TEMPS REEL D'ECOULEMENTS DE FLUIDES La présente invention se rapporte à un procédé de visualisation réaliste et animé en temps réel d'écoulements de fluides, et à son dispositif de mise en oeuvre. Pour visualiser un écoulement de fluide, en particulier un fluide diphasique, dans des canalisations et des réservoirs, on pourrait avoir recours au dessin animé de type cinématographique, mais un tel procédé ne pourrait être que préenregistré et non pas être la représentation en temps réel d'un phénomène physique réel ou modélisé. On pourrait également envisager la synthétisation informatique des images, mais pour parvenir à un bon réalisme, en temps réel, et pour tenir compte de tous les cas possibles, il faudrait mettre en oeuvre des moyens informatiques complexes, onéreux et spécifiques. La présente invention a pour pour objet un procédé de visualisation en temps réel d'écoulements de fluides, en particulier de fluides diphasiques, ainsi que des phénomènes thermohydrauliques liés à ces fluides, et ce, de façon la plus réaliste possible, en faisant appel à des moyens peu onéreux, faciles à mettre en oeuvre (calculateur graphique standard) et permettant de visualiser distinctement tous les phénomènes liés à ces écoulements. Le procédé de l'invention consiste à découper le circuit de fluide en surfaces graphiques élémentaires, à projeter dans l'espace écran d'un écran de visualisation une fenêtre rectangulaire de la dimension d'une surface graphique élémentaire qui se déplace sur une texture préexistante stockée dans une mémoire et correspondant à l'aspect sous lequel on désire visualiser le fluide. On associe à chacun des pixels d'une surface graphique élémentaire des "bits de visibilité", et on projette sur l'écran les pixels de la texture affectés de leurs bits de visibilité. Un aspect avantageux de l'invention consiste à éviter les discontinuités dans le mouvement, en utilisant une copie de la texture de base dans au moins une direction, la fenêtre étant déplacée de la texture de base vers sa copie, lorsqu'elle est entièrement dans la copie, et poursuit son mouvement, on la ramène dans la texture de base à une position équivalente. L'invention sera mieux comprise à la lecture de la description détaillée d'un mode de mise en oeuvre, pris à titre d'exemple non limitatif et illustré par le dessin annexé, sur lequel - la figure l est un schéma simplifié illustrant le procédé de base de l'invention - la figure 2 est un schéma simplifié illustrant l'utilisation de bits de visibilité par plan pour déterminer un aspect - la figure 3 est un ensemble de diagrammes illustrant l'utilisation de copies de texture pour assurer la continuité du mouvement horizontal, selon le procédé de l'invention - la figure 4 est un diagramme illustrant la généralisation du procédé selon la figure 3 aux deux dimensions du plan -- la figure 5 est un diagramme illustrant le principe d'unicité de la projection (effacement et mise à jour simultanée) selon le procédé de l'invention, et - la figure 6 est un diagramme illustrant globalement le processus d'animation selon le procédé de l'invention. L'invention est décrite ci-dessous en référence à la visualisation sur l'écran d'un calculateur graphique standard des écoulements fluides diphasiques (mélange eau-vapeur) dans un circuit de refroidissement de centrale nucléaire, mais il est bien entendu qu'elle n'est pas limitée à une telle application et qu'elle peut être mise en oeuvre pour la visualisation d'états (écoulement, convection ...) de divers fluides ou gaz à une ou plusieurs phases et/ou à densités différentes, et ce, dans divers autres domaines. Les moyens mis en oeuvre peuvent être un calculateur graphique standard à mémoire d'écran, et la mémoire contenant les textures peut être celle du calculateur et/ou une autre mémoire (par exemple celle d'un autre calculateur). Dans le cas de l'application à un circuit fluide de centrale nucléaire, on visualise les phénomènes d'écoulement eau-vapeur du circuit de refroidissement de la centrale, les phénomènes d'ébullition, d'entraînement de bulles ou de gouttes, ... et en particulier les écoulements en phase accidentelle. L'image est alors pilotée par un logiciel de calcul thermohydraulique qui n'entre pas dans le cadre du procédé de l'invention. Ainsi que schématiquement représenté en figure l, le procédé de l'invention part d'une texture 1 précalculée. Cette texture peut figurer seulement un liquide, ou un liquide dans lequel sont incluses des bulles d'air, ou un gaz, ou un mélange de deux phases (liquide-gaz ...). Dans le cas où cette texture doit représenter un liquide seul ou un gaz seul, on y représente une alternance de zones claires et de zones sombres afin de pouvoir visualiser un écoulement homogène, ces zones étant des bandes sensiblement perpendiculaires à la direction générale d'écoulement (c'est-à-dire à la direction de déplacement de la fenêtrer décrite ci-dessous). Le contraste entre zones sombres et zones claires est choisi au gré de l'utilisateur, selon les caractéristiques du dispositif de visualisation, et peut même être un dégradé à plusieurs tons. On a représenté en figure l l'espace écran visible 2 sur lequel est visualisé le circuit de refroidissement d'un réacteur nucléaire, en coupe axiale, les parois des conduites, réservoirs et autres circuits pouvant être représentés en gris. Pour simplifier le dessin, on n'a représenté sur l'espace 2 qu'une portion 3 de conduite. Cette portion 3 est découpée en "noeuds" graphiques élémentaires 4.1, 4.2, 4.3, ..., qui sont des surfaces graphiques élémentaires à animer. Pour chacun de ces noeuds graphiques, l'effet d'animation est obtenu par les projections successives dans l'espace écran 2 d'une fenêtre rectangulaire 5 de la dimension des noeuds, qui se "déplace" sur la texture l. Les déplacements de la fenêtre 5 ne sont pas, bien entendu, des déplacements physiques, étant donné que la texture i est définie en mémoire par les valeurs des pixels la composant et que la fenêtre 5 est définie par un ensemble d'adresses de tous les pixels compris dans cette fenêtre. La projection de la fenêtre sur les noeuds successifs est effectuée à chaque mise à jour de l'image affichée sur l'espace écran 2 (cycles de calcul). Cette mise à jour peut par exemple être effectuée au rythme de 24 ou 25 images par seconde, comme dans le cas des dessins animés. Cette projection est avantageusement une opération du type "copy-block", très répandue en graphisme informatique, dont les paramètres d'exécution principaux sont la désignation de l'origine (sur la texture) et de la destination (sur l'écran), ainsi que le mode de combinaison bit à bit entre les pixels d'origine et de destination. Le déplacement de la fenêtre sur la texture suit une trajectoire qui est fonction des phénomènes à visualiser. Cette trajectoire peut être paramétrée dans le temps pour obtenir des mouvements rectilignes, curvilignes, alternatifs, indéterministes ... La texture précalculée l est stockée dans une mémoire de travail, qui peut être la mémoire centrale, une partie de la mémoire écran, une mémoire tampon d'écran (distincte de la mémoire écran), ou tout autre dispositif mémoire dépendant de l'application particulière du procédé de l'invention (calculateur et logiciel associé). Application du procédé aux noeuds graphiques de forme quelconque En général, les noeuds à visualiser ne sont pas des rectangles, et peuvent avoir une forme quelconque, or l'opération précitée de projection ne peut traiter que des rectangles. Selon le procédé de l'invention, on définit dans les tables de couleurs associées aux pixels de la texture à visualiser des "bits de visibilité" qui déterminent ce qui sera vu on non sur l'écran, la projection s'effectuant sur un rectangle enveloppe du noeud à visualiser. On a illustré en figure 2 cet aspect du procédé de l'invention dans le cas d'une image d'écoulement de fluide dans une conduite coudée. On a représenté sur la figure 2 plusieurs plans Pl, P2, P3 ...Pn dont chacun a une fonction de visualisation spécifique. Ainsi, le plan Pi est celui déterminant la visibilité des informations relatives à la paroi de la conduite coudée. Ce plan Pi comporte quatre zones, à savoir deux zones de paroi 6, 8, une zone 7 comprise entre les zones 6 et 8 (intérieur de la conduite), et deux zones 9, 10 à l'extérieur des parois, d'un côté et de l'autre de la conduite. Il suffit donc dans ce cas de deux bits de visibilité pour donner un aspect particulier à chacune de ces zones.Ainsi, par exemple pour les plans Pi et P2, les zones 6 et 8 pour être visibles en couleur uniforme, grise par exemple, sont affectés des bits de visibilité 10, la zone 7 des bits 01, les zones 9, 10 des bits 00 (en noir) et la zone de fond d'écran li des bits il (en noir également). Le plan Pi est le plan de validation de visibilité des parois 6, 8 (seules les zones 6 et 8 ont le bit de visibilité l), le plan P2 celui de validation de visibilité de l'écoulement (seule la zone 7 a le bit de visibilité l), les plans P3 à PN sont les plans de définition de l'écoulement, c'est-à-dire de codage des pixels de texture, comprenant les motifs (bulles, vagues, ondelettes ...) et le fond. D'autres plans supplémentaires peuvent servir, le cas échéant, à définir d'autres motifs ou éléments à visualiser. A la visualisation, les plans sont superposés et la projection de la fenêtre respecte la combinaison de leurs bits qui se fait de façon à obtenir l'aspect voulu pour les diverses zones. Pour pouvoir mettre en oeuvre les techniques de projection mentionnées ci-dessus, il est nécessaire que le calculateur dispose de tables de couleurs programmables afin de pouvoir définir l'aspect des zones déterminées par les bits de visibilité. La complexité géométrique du noeud graphique ou la richesse de la texture est sans influence sur la vitesse du traitement et la capacité mémoire nécessaire, du fait que la texture du fluide est précalculée et que la forme de ce noeud est prédéterminée et mémorisée une fois pour toutes. Traitement de la fenêtre en limite de texture Les dimensions relatives texture/fenêtre, ainsi que les vitesses d'animation sont a priori quelconques. La situation où la fenêtre n'est plus contenue totalement dans la texture se présente donc souvent. Dans cette situation, il faut soit admettre des discontinuités dans le mouvement (provoquant une impression visuelle de "sauts"), soit traiter d'une manière distincte la partie de la fenêtre se trouvant dans la texture et la partie hors de la texture, ce qui est en général incompatible avec la fréquence de mise à jour de l'image nécessaire pour obtenir une animation réaliste. La solution selon l'invention consiste à utiliser une copie de la texture, adjacente dans la direction du déplacement de la fenêtre, à la texture origine. Comme représenté en figure 3, la fenêtre 11 suit par exemple une trajectoire rectiligne horizontale. Dans cette figure 3, les différents instants Xn-l' xn, xn+1, correspondent à des instants d'itération successifs du calculateur commandant la visualisation. En haut de la figure, à l'instant un 1' la fenêtre 11 commence à sortir par la droite de la texture origine 12 et sa partie droite se trouve en fait dans la texture 13, copie de la texture 12, qui est disposée à la droite de la texture 12, adjacente à celle-ci. A l'instant xn, la fenêtre 11 est presque entièrement contenue dans la texture 13 (milieu de la figure 3).Juste avant l'instant un+1, la fenêtre 11 a fini de quitter la texture origine 12, et à l'instant xn+1 (bas de la figure 3), la fenêtre 11 est ramenée dans la texture origine 12 à une position équivalente à celle qu'elle aurait dans la texture copie 13, et ainsi de suite. On obtient ainsi une continuité dans l'effet visuel, et un traitement du contenu de la fenêtre toujours similaire. Le calcul, en fonction du temps, de la coordonnée x. (i=n-1, n, n+1, ...) pointant l'origine de la projection de la fenêtre sur la texture est particulièrement simple : c'est le reste de la division entière du chemin total fictif parcouru par la fenêtre, par la dimension, dans le sens du mouvement, de la texture, soit expression dans laquelle k est un coefficient d'adaptation proportionnel à l'incrément de temps réel par cycle de calcul, et i, le numéro de cycle de calcul, qui est incrémenté à chaque intération d'image. Tous les termes de l'expression sont entiers, et xi peut être directement une coordonnée de pixel de l'image à représenter. On a représenté en figure 4 la généralisation du procédé de l'invention à une trajectoire quelconque. La texture origine 14 est copiée quatre fois : une copie 15 sur sa droite, et, en-dessous des textures 14 et 15, les textures 16, 17 sont respectivement les copies des textures 14 et 15. Ainsi, on obtient la continuité d'animation aussi bien pour une trajectoire (T1) sensiblement horizontale, que pour une trajectoire (T2) sensiblement verticale ou pour une trajectoire (T3) oblique. Bien entendu, pour un mouvement en sens inverse sur une trajectoire similaire à T1, T2 ou T3, les rôles des textures sont inversés par exemple pour T1 parcouru en sens inverse, la texture origine serait 15 et la copie serait 14. Unicité de l'opération de projection dans l'espace écran Lors d'une itération pour un noeud de l'espace écran, il faut réaliser les deux fonctions suivantes 1. effacement de la texture projetée dans le noeud au cycle de calcul précédent 2. écriture dans le même noeud de la nouvelle texture du cycle courant. Ces deux fonctions doivent être réalisées simultanément, par une unique opération de projection, pour éviter les effets visuels de clignotement des motifs de la texture et pour bénéficier d'une fréquence d'animation élevée. Selon l'invention, ces conditions sont remplies grâce à la mémorisation, dans la mémoire de travail, de deux textures de motifs identiques, mais de codages complémentaires, les motifs étant codés, dans le cas présent, sur deux bits pour chaque pixel. De plus, un opérateur de projection différent est associé à chacune de ces textures. Par conséquent, pour un motif donné, la mémoire de travail contient deux textures, par exemple - texture normale : codage motif : 11, opérateur de projection OU - texture complémentaire : codage motif 00, opérateur de projection : ET Le processus d'animation utilise alternativement chacune de ces deux textures avec l'opérateur associé. Ainsi, après initialisation du noeud (projection de la texture de base, seule), on obtient la séquence suivante. Cycle de calcul Texture utilisée Type de projection et résultante O(initialisation) normale néant n-l complémentaire ET n normale OU n+i complémentaire ET n+2 normale OU On a représenté en figure 5, de façon très simplifiée un exemple de mise en oeuvre de cet aspect de l'invention. Sur cette figure, on n'a représenté que les deux plans des pixels concernant les motifs de la texture. Pour la texture normale, représentée en haut à gauche, le plan 18 relatif au motif ne comporte, pour simplifier les explications, que quelques motifs 20 disséminés dans ce plan, et le plan 19 est uniformément à 1. Le codage des pixels à visualiser est, 01 pour le fond texture et 11 pour les motifs. Pour la texture complémentaire, le plan 22 contient les mêmes motifs 23 que ceux du plan 18 et le plan 21 est uniformément à 0. Ainsi pour la texture normale, l'opération OU appliquée, sur une texture complémentaire sur l'écran, donnera "11" pour les motifs et 01 pour le fond c'est-à-dire restitue la texture normale. Inversement, pour la texture complémentaire, l'opération ET appliquée sur une texture normale sur l'écran donne 00 pour les motifs et 01 pour le fond, c'est-à-dire restitue la texture complémentaire. Ainsi, sur le diagramme de la figure 5, si, pour une initialisation du premier cycle C1, le calculateur commande l'opération "ET" > la texture complémentaire est visible sur l'écran. Au cycle suivant C2, après déplacement de la fenêtre, l'opérateur OU est utilisé à la projection. La texture normale vient remplacer sur l'écran la texture complémentaire dans le noeud avec déplacement relatif dans la direction de déplacement des motifs de texture par rapport à la position précédente. Pour le cycle suivant C3, l'opérateur de projection ET fait apparaître sur l'espace écran la texture complémentaire qui vient remplacer la texture normale avec un déplacement élémentaire des motifs dans la direction de déplacement, par rapport à ce qui était visible sur l'espace écran au cycle C2, et ainsi de suite.Si l'alternance des projections, délimitées par la fenêtre de projection, des textures normale et complémentaire se fait à un rythme suffisamment rapide (par exemple toutes les 80 ms), et si le pas des mouvements relatifs de la fenêtre de projection est suffisamment fin (de l'ordre de quelques pixels), on obtient un effet d'animation réaliste et non saccadé. L'utilisation des textures normale et complémentaire avec projection ET/OU alternée permet de regrouper en une seule opération de calcul les fonctions d'effacement et d'écriture des motifs du noeud correspondant. Les bits des plans de textures qui ne concernent pas la définition des motifs à déplacer ont une valeur telle que les plans correspondants du noeud dans l'espace écran ne sont pas affectés par les projections d'animation, à savoir "O" pour la texture normale (opération OU) et "1" pour la texture complémentaire (opérateur ET). Les bits concernés dans ces plans de textures sont les bits de visibilité et les bits de codage de la couleur de fond de texture. Sur le diagramme de la figure 6, on a représenté de manière très schématisée le processus d'animation d'un noeud de l'image à visualiser. Sur la partie supérieure du dessin (se rapportant à une partie de la mémoire de travail), on a représenté une texture de base normale 18 et une texture de base complémentaire 19 (on a représenté en traits interrompus les débuts des copies de chacune de ces textures de base). Sur la partie inférieure de la figure 6, on a représenté une partie de l'espace écran correspondant, et en particulier un noeud 20 d'une portion de conduite coudée 21. Dans la texture 18, on a schématiquement représenté quatre positions successives 22A à 22D d'une fenêtre se déplaçant le long d'une trajectoire 23 sur cette texture. Les positions 22A à 22D sont représentées éloignées les unes des autres pour la clarté du dessin, mais en réalité elles sont presque confondues, le déplacement d'une position à la suivante pouvant correspondre à un pixel sur l'espace écran. Les positions correspondantes sur la texture 19 sont référencées 24A à 24D, sur la trajectoire 25 (identique à la trajectoire 23). On a représenté en traits continus les positions dans la texture qui correspondent à une opération de projection de la fenêtre, à savoir 22A et 22C dans la texture 18, et 24B, 24D dans la texture 19. Les autres positions, sont représentées en traits interrompus et correspondent à une projection depuis l'autre texture que celle considérée. Les projections visibles sur l'espace écran sont référencées V1 à V4 et sont faites dans l'ordre V1 à V4. Pour V1 (opérateur OU pour 18), la fenêtre 22A est projetée sur le noeud 20. Pour V2 (opérateur ET pour 19) la fenêtre 24B est projetée sur le noeud 20, et ainsi de suite pour les positions suivantes des fenêtres dans 18 et 19. Si les positions successives des fenêtres sont très proches les unes des autres et si les opérations de projection sont commandées à un rythme suffisamment rapide (par exemple au moins 15 fois par seconde), on obtient une animation réaliste et non saccadée. REVENDICATIONS 1. Procédé de visualisation en temps réel d'écoulements de fluides et de phénomènes thermohydrauliques liés à ces fluides, caractérisé par le fait qu'il consiste à découper le circuit de fluide en surfaces graphiques élémentaires, à projeter dans l'espace écran d'un écran de visualisation une fenêtre rectangulaire de la dimension d'une surface graphique élémentaire qui se déplace sur une texture préexistante stockée dans une mémoire et correspondant à l'aspect sous lequel on désire visualiser le fluide. 2. Procédé selon la revendication 1, caractérisé par le fait que l'on définit dans les tables de couleurs associées aux pixels de la texture à visualiser des bits de visibilité qui déterminent ce qui sera vu ou non sur l'écran, dans le but de conserver l'image de la surface graphique élémentaire lors de l'opération de projection. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé par le fait que l'on utilise une copie de la texture de base dans au moins une direction, la fenêtre étant déplacée de la texture de base vers sa copie, lorsqu'elle est entièrement dans la copie et poursuit son mouvement, on la ramène dans la structure de base à une position équivalente. 4. Procédé selon l'une des revendications précédentes, caractérisé par le fait que l'on onmémorise dans la mémoire de travail deux textures de motifs identiques, de codages complémentaires, chacune des deux textures servant alternativement à la projection sur l'espace écran. 5. Procédé selon la revendication 4, caractérisé par le fait que l'on associe un opérateur de projection différent à chacune des textures. 6. Procédé selon la revendication 5, caractérisé par le fait que l'un des opérateurs est un "ET" logique, et l'autre un "OU" logique.