L’un des défis récurrents liés à l’utilisation de logiciels de simulation tels que COMSOL Multiphysics® reste l’importation et la conversion efficaces de données issues d’autres sources. Lorsque vous êtes confronté à cela pour la première fois, vous pouvez être amené à effectuer la conversion manuellement. Mais souvent, ces tâches prennent de l’ampleur et l’on peut vous demander de convertir le même type de données à plusieurs reprises. Dans cet article de blog, nous allons voir comment les outils d’IA, associés à COMSOL®, peuvent vous aider à tirer parti de votre savoir-faire en matière de conversions pour en faire une procédure réutilisable.
Comprendre les difficultés liées au transfert de données
On nous demande souvent comment importer dans COMSOL® des données disponibles sous différents formats. Ces données se trouvent généralement dans des fichiers texte, et leurs formats peuvent être spécifiques, sans qu’il n’existe d’outils de conversion adaptés. Nos clients connaissent souvent très bien ces formats, tandis que nous comprenons précisément comment ces données doivent être utilisées au sein de COMSOL®. Dans ce contexte, l’IA peut considérablement faciliter la mise en place d’un processus de conversion des données. Examinons cela à travers un cas pratique.
Un scénario type
Supposons qu’on nous ait fourni un fichier texte contenant la description d’un modèle thermique réduit. Un modèle réduit diffère quelque peu des modèles par éléments finis que vous connaissez peut-être dans COMSOL Multiphysics®. Les modèles réduits utilisent des noeuds qui représentent des volumes de matière. Chaque volume possède une masse volumique et une chaleur spécifique connues; chaque noeud est donc associé à une masse thermique. La température d’un noeud peut augmenter sous l’effet d’un chargement thermique appliqué, et la chaleur peut circuler entre les noeuds soit par conduction, soit par rayonnement, calculés en fonction de la différence de température entre deux noeuds. On peut également considérer des noeuds à température fixe, appelés puits thermiques. Pour illustrer cela de manière plus concrète, nous allons construire un modèle réduit très simple représentant un satellite dans l’espace lointain.
Le modèle de satellite sur lequel nous allons travailler est illustré dans la figure ci-dessous. Il s’agit d’une structure cubique avec deux panneaux solaires dépassant de chaque côté. Les six faces du cube et les deux panneaux solaires sont chacun représentés par un seul noeud thermique. Il existe un flux thermique par conduction entre les faces adjacentes de la structure cubique et un flux thermique par rayonnement entre les faces latérales et les panneaux solaires. Il existe également un flux thermique par rayonnement depuis toutes les faces vers l’espace lointain. L’objectif de ce modèle est de calculer l’évolution de la température dans le temps, à partir d’une température initiale. Nous supposerons que les chargements solaires et planétaires sont négligeables, comme lorsqu’un satellite géostationnaire entre en éclipse, et que le seul chargement est dû à un dispositif de chauffage situé sur un noeud.
Schéma d’un modèle thermique réduit à huit noeuds représentant un satellite. Il existe une conduction entre les noeuds de la boîte, ainsi qu’un rayonnement depuis tous les noeuds vers l’espace lointain.
Les modèles réduits sont couramment utilisés, et différents formats de fichiers permettent de les représenter. Afin que cet exemple reste indépendant du format, nous allons générer un fichier dont l’esprit, à défaut de la syntaxe exacte, s’apparente à ces formats. Comme nous le verrons, la syntaxe exacte n’est pas l’essentiel. Voici un extrait de notre exemple de fichier:
TSINK, 99, 2.7 # Thermal Sink 99
NODE, 10, 300, 12150 # Node 10
…
NODE, 80, 300, 3220 # Node 80
LOAD, 60, 750 # Load on node 60
CON, 1020, 10, 20, 0.71 # Conductor 10 - 20
…
CON, 5020, 50, 20, 0.71 # Conductor 50 - 20
RAD, 2070, 20, 70, 8.9e-9 # Radiation 20 - 70
…
RAD, 8099, 80, 99, 1.8e-7 # Radiation 80 - 99
Ce fichier contient cinq types de données: TSINK, NODE, LOAD, CON, et RAD. Ceux-ci désignent respectivement les puits de température, les noeuds de température dotés d’une masse, les chargements thermiques sur des noeuds spécifiques, les connexions conductrices entre les noeuds, et les connexions radiatives entre les noeuds ou entre un noeud et un puits. Les informations figurant après le symbole # sont des commentaires. Si vous connaissez des types de fichiers similaires, le format ci-dessus peut être décrit comme un nouveau langage au sens informatique du terme.
Pour reprendre quelques termes supplémentaires issus de l’informatique, les informations contenues dans ce fichier constituent un graphe connexe, où les données décrivant la conduction et le rayonnement correspondent à des arêtes entre les noeuds. Cela s’avère particulièrement utile, car les outils d’IA sont particulièrement performants pour traiter ce type de structures de données. Gardons cela à l’esprit pour plus tard, mais concentrons-nous maintenant sur l’importation de ces données dans COMSOL®.
L’équivalent COMSOL
Bien que COMSOL Multiphysics® intègre une interface Système thermique discret dans le module Heat Transfer, nous préférons une solution plus légère pour les modèles de grande taille. La solution la plus simple pour représenter les données ci-dessus consiste à utiliser la fonctionnalité Équations globales. Étant donné que les données que nous essayons d’importer représentent une structure tridimensionnelle, mais que le fichier d’entrée ne contient pas suffisamment d’informations sur la forme et les dimensions de la géométrie, il est justifié de représenter le modèle de façon abstraite.
Équations globales permet de représenter le réseau du graphe sous la forme d’un système couplé d’équations différentielles ordinaires, c’est-à-dire des équations de la forme:
Ces équations peuvent être représentées dans l’interface graphique, comme le montre la capture d’écran ci-dessous. Il est également possible d’exporter et d’importer un ensemble complet de ces équations globales à l’aide des boutons Enregistrer dans un fichier et Charger à partir d’un fichier.
Capture d’écran illustrant comment implémenter un système d’équations différentielles ordinaires. Notez également les boutons Enregistrer et Charger.
Le modèle que nous essayons de reproduire ici peut être créé avec neuf entrées pour les noeuds et le puits. Je les ai saisies à la main. C’était un peu fastidieux, mais je savais que je n’aurais à le faire qu’une seule fois, donc cela en valait la peine. Notez que le fichier d’origine avait été rédigé en partant d’un ensemble présupposé d’unités, de sorte que toutes les équations étaient adimensionnées. Après avoir saisi ces données dans l’interface utilisateur, j’ai exporté le modèle vers un fichier texte. En voici quelques lignes:
NODE10 12150*d(NODE10,t)[s]-((0.71*(NODE20-NODE10)+0.71*(NODE30-NODE10)+0.71*(NODE40-NODE10)+0.71*(NODE50-NODE10))+(4.5e-8*(TSINK99^4-NODE10^4))) 300 0 "Node 10"
...
NODE60 12150*d(NODE60,t)[s]-((750)+(0.71*(NODE20-NODE60)+0.71*(NODE30-NODE60)+0.71*(NODE40-NODE60)+0.71*(NODE50-NODE60))+(4.5e-8*(TSINK99^4-NODE60^4))) 300 0 "Node 60"
...
TSINK99 TSINK99-2.7 2.7 0 "Thermal Sink 99"
Construire l’outil de conversion grâce à l’IA
À ce stade, nous devrions avoir une bonne compréhension de ces deux fichiers. Nous devrions également comprendre qu’un fichier contenant des centaines, voire des milliers d’entrées, nécessitera un certain degré d’automatisation. Ce qui n’est peut-être pas si évident, c’est que nous convertissons les données d’un graphe représenté sous forme d’une liste d’arêtes en une représentation sous forme d’une liste d’incidences, tirant parti de la faible densité du graphe. Les lecteurs ayant quelques connaissances en informatique reconnaîtront que ce type d’algorithme de conversion n’est pas simple à mettre en oeuvre.
Heureusement, ce sont précisément le genre de tâches que l’IA peut aider à automatiser. Pour être clair, nous n’allons pas demander à l’IA d’effectuer la conversion; nous allons lui demander de créer un outil de conversion polyvalent. Mais que devons-nous lui demander exactement? Comment lui indiquer de créer cet outil de conversion pour nous?
Ces deux fichiers texte contiennent déjà la quasi-totalité des données dont nous avons besoin. Il ne nous reste plus qu’à les importer dans l’outil d’IA de notre choix et à utiliser une instruction du type:
Voici un fichier contenant des noeuds et des puits, représentant les noeuds d'un graphe de réseau. Les connexions entre les noeuds sont définies par des lignes CON et RAD. Tout ce qui suit le signe # est un commentaire. Je dois convertir le premier fichier au format du second. Enonce les règles de transformation entre les deux.
Dans ce cas précis, j’ai utilisé ChatGPT. Au bout d’environ une minute, l’outil m’a fourni une description complète et compréhensible expliquant comment effectuer la conversion. J’ai été particulièrement impressionné par le fait que cet outil d’IA ait reconnu que le fichier faisait référence à un problème thermique et ait identifié la nature du terme radiatif non linéaire.
Extrait de la réponse générée par ChatGPT.
En examinant ce résultat en détail, j’ai acquis la certitude que l’outil avait bien compris la tâche. Il faut garder à l’esprit que le fichier d’entrée utilise un langage unique et non documenté pour décrire un modèle thermique réduit. Il ne me restait plus qu’une étape: demander à l’outil d’IA de générer du code que je pourrais exécuter de manière autonome. Pour cela, il a fallu ajouter une instruction supplémentaire:
Écris un bloc de code Java autonome à utiliser dans l’éditeur de méthodes de COMSOL pour convertir n’importe quel fichier du format d’origine vers ce format.
J’ai demandé du code Java ici parce que je souhaitais exécuter tout cela entièrement dans COMSOL Multiphysics®. De la même manière que ChatGPT n’a eu aucune difficulté à comprendre le format spécifique du fichier d’entrée, il n’a pas non plus eu de mal à écrire du code dans le langage de programmation que j’avais demandé.
Le code obtenu comptait plusieurs centaines de lignes; je ne le présenterai donc pas ici. Je l’ai toutefois parcouru rapidement et j’ai remarqué que ChatGPT avait ajouté des commentaires pour faciliter la lecture et avait même intégré une vérification des erreurs, de sorte que le programme renvoyait un message d’erreur explicite en cas de fichier non valide. Le code s’est compilé et a fonctionné sans problème, et j’ai pu effectuer quelques vérifications préliminaires en générant des résultats.
De manière générale, il est important de vérifier et de valider le code de conversion, et la bonne approche dépend du format des données. Parfois, un contrôle visuel ponctuel de quelques cas peut suffire; d’autres fois, il peut être nécessaire d’adopter une démarche plus rigoureuse. Une approche consiste à écrire également un convertisseur inverse, ce qui revient essentiellement à effectuer un aller-retour avec les données et à vérifier qu’elles correspondent toujours à l’original. Nous pouvons également recourir à l’IA pour cette étape.
Exemple de résultat calculé à partir du fichier d’entrée.
À ce stade, certains lecteurs pourraient se demander: pourquoi ne pas simplement intégrer ce convertisseur dans la suite de produits COMSOL? Je tiens à souligner que cet exemple correspond à un fichier de réseau thermique minimaliste, utilisant un langage spécifique. Dans la pratique, les fichiers de modèles thermiques réduits peuvent comporter bien plus de types de données, nécessiter l’association de plusieurs fichiers, voire contenir du code personnalisé mettant en oeuvre, par exemple, un type spécifique d’algorithme de contrôle thermostatique. Écrire un convertisseur polyvalent pourrait impliquer de couvrir de nombreux cas particuliers qui ne se présenteraient peut-être jamais dans un même fichier. De plus, une conversion biunivoque n’est pas toujours la meilleure solution. Il faut parfois prendre du recul et chercher à comprendrece que l’auteur du fichier d’origine souhaitait exactement modéliser. C’est particulièrement vrai pour ce type de modèles de réseaux thermiques, mais c’est un sujet qui mérite d’être abordé une autre fois.
Remarques sur la conversion de fichiers et l’IA en général
Il convient de souligner à nouveau le peu d’efforts qu’il a fallu pour en arriver là. Nous disposions déjà du fichier exemple. Nous avons certes passé un certain temps à déterminer la meilleure façon de le représenter dans COMSOL® et à générer un exemple de syntaxe, mais l’interaction avec l’outil d’IA a été minime: deux fichiers ont été téléchargés, deux consignes ont été données, et les résultats étaient applicables à n’importe quel fichier utilisant le même format. Le temps total d’interaction avec l’outil d’IA n’est que de quelques minutes.
Si vous devez effectuer ce type de conversion de fichiers ou de données structurées, vous pourrez vous familiariser rapidement avec ce workflow. Et si vous avez besoin d’intégrer davantage de fonctionnalités? Essayez d’ajouter quelques lignes supplémentaires d’exemples d’entrée et de sortie, puis relancez l’outil d’IA. Qu’en est-il des autres données que vous souhaitez importer automatiquement dans COMSOL? Votre entreprise dispose peut-être d’une vaste base de données propriétaire de matériaux, dans un format personnalisé, que vous devez importer. Utilisez cette approche pour écrire le convertisseur. Gardez à l’esprit que les données propriétaires elles-mêmes n’ont pas besoin d’être partagées avec l’outil d’IA; seul le format des données est partagé. Vous obtenez en retour un algorithme et le code source.
Plus généralement, comme évoqué dans un précédent article de blog COMSOL, les outils d’IA connaissent une évolution constante et rapide. Pour les types de problèmes que les utilisateurs de COMSOL doivent résoudre, ces capacités s’avèrent de plus en plus utiles.
Pour finir, je vais vous présenter les résultats d’une dernière requête, dans laquelle j’ai demandé à l’IA de dessiner sa propre interprétation de l’objet représenté par ce fichier. Le résultat est présenté ci-dessous. Ce n’est pas encore tout à fait au point, mais je ne manquerai pas de revenir sur ce sujet dans quelques mois pour voir comment les choses ont évolué.
Comment l’IA interprète les équations globales.
Prochaine étape
Comment pourriez-vous utiliser ce workflow pour faciliter votre modélisation dans COMSOL? Donnez-nous votre avis ci-dessous ou contactez-nous!

Commentaires (0)