{"id":1263,"date":"2026-08-21T14:31:38","date_gmt":"2026-08-21T14:31:38","guid":{"rendered":"https:\/\/matforge.org\/?p=1263","raw":"https:\/\/matforge.org\/?p=1263"},"modified":"2026-08-21T14:31:38","modified_gmt":"2026-08-21T14:31:38","slug":"how-fipy-handles-meshes-and-grid-structures","status":"publish","type":"post","link":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/","title":{"rendered":"Comment Fipy g\u00e8re les maillages et les structures de grille","raw":"Comment Fipy g\u00e8re les maillages et les structures de grille"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 12<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><article>\n<p>FIPY est un cadre bas\u00e9 sur Python pour r\u00e9soudre des \u00e9quations aux d\u00e9riv\u00e9es partielles avec la m\u00e9thode du volume fini. Il est couramment utilis\u00e9 pour la diffusion, le transfert de chaleur, la mod\u00e9lisation en champ de phase, l&rsquo;\u00e9lectrochimie, le transport li\u00e9 aux fluides et d&rsquo;autres probl\u00e8mes qui peuvent \u00eatre exprim\u00e9s \u00e0 travers des \u00e9quations de conservation.<\/p>\n<p>Chaque simulation FIPY commence par un maillage. Le maillage d\u00e9finit le domaine physique, le divise en volumes de contr\u00f4le, identifie les limites entre ces volumes et d\u00e9termine o\u00f9 les variables num\u00e9riques sont stock\u00e9es. Un maillage soigneusement s\u00e9lectionn\u00e9 peut rendre un mod\u00e8le pr\u00e9cis et efficace. Un maillage m\u00e9diocre peut cr\u00e9er des calculs instables, des gradients irr\u00e9alistes ou un co\u00fbt de calcul inutile.<\/p>\n<p>FIPY prend en charge de simples grilles cart\u00e9siennes, un espacement non uniforme, des domaines p\u00e9riodiques, des coordonn\u00e9es cylindriques et sph\u00e9riques, des structures triangulaires et des mailles cr\u00e9\u00e9es avec GMSH. La compr\u00e9hension de ces options aide les utilisateurs \u00e0 s\u00e9lectionner la grille la plus simple qui repr\u00e9sente toujours correctement le probl\u00e8me physique.<\/p>\n<h2>Qu&rsquo;est-ce qu&rsquo;un maillage dans Fipy&nbsp;?<\/h2>\n<p>Un maillage est une repr\u00e9sentation discr\u00e8te d&rsquo;une r\u00e9gion physique continue. Au lieu de r\u00e9soudre une \u00e9quation diff\u00e9rentielle \u00e0 chaque point possible, FIPY divise le domaine en un nombre fini de cellules et calcule en leur sein des valeurs approximatives.<\/p>\n<p>Chaque cellule agit comme un volume de contr\u00f4le. Les quantit\u00e9s physiques telles que la temp\u00e9rature, la concentration, la pression ou la fraction de phase sont g\u00e9n\u00e9ralement associ\u00e9es aux centres cellulaires. Le transport entre les cellules voisines est calcul\u00e9 sur les faces qui les s\u00e9parent.<\/p>\n<p>Le maillage fournit \u00e0 la fois la g\u00e9om\u00e9trie et la topologie. La g\u00e9om\u00e9trie d\u00e9crit les tailles, les coordonn\u00e9es, les zones et les volumes. La topologie d\u00e9crit les cellules qui partagent des visages et comment les \u00e9l\u00e9ments sont connect\u00e9s.<\/p>\n<p>Cette information permet \u00e0 FIPY de transformer une \u00e9quation diff\u00e9rentielle en un syst\u00e8me d&rsquo;\u00e9quations alg\u00e9briques qu&rsquo;un solveur num\u00e9rique peut traiter.<\/p>\n<h2>Cellules, visages et sommets<\/h2>\n<p>Les maillages Fipy sont construits autour de trois principaux composants structuraux : cellules, faces et sommets.<\/p>\n<p>Les cellules sont les volumes de contr\u00f4le utilis\u00e9s par la m\u00e9thode du volume fini. Une cellule unidimensionnelle est un segment de ligne. Une cellule bidimensionnelle peut \u00eatre un rectangle ou un triangle. Une cellule tridimensionnelle peut \u00eatre une bo\u00eete ou un autre volume poly\u00e9drique.<\/p>\n<p>Les visages forment les limites des cellules. Une face int\u00e9rieure s\u00e9pare deux cellules voisines. Une face ext\u00e9rieure se trouve sur la limite ext\u00e9rieure du domaine complet.<\/p>\n<p>Les sommets d\u00e9finissent les points g\u00e9om\u00e9triques \u00e0 partir desquels les faces et les cellules sont construites. La plupart des utilisateurs ne manipulent pas les sommets directement lorsqu&rsquo;ils travaillent avec des grilles r\u00e9guli\u00e8res, mais ils deviennent importants lors de l&rsquo;importation ou de la cr\u00e9ation de g\u00e9om\u00e9trie irr\u00e9guli\u00e8re.<\/p>\n<p>Les relations entre ces composants d\u00e9terminent la fa\u00e7on dont les valeurs et les flux se d\u00e9placent dans la simulation.<\/p>\n<h2>Pourquoi la structure de maillage est importante dans la m\u00e9thode du volume fini<\/h2>\n<p>La m\u00e9thode du volume fini int\u00e8gre une \u00e9quation gouvernante sur chaque cellule. Il calcule ensuite la quantit\u00e9 d&rsquo;une quantit\u00e9 physique qui p\u00e9n\u00e8tre ou sort \u00e0 travers les faces environnantes.<\/p>\n<p>Pour un probl\u00e8me de diffusion, FIPY estime les gradients entre les valeurs de cellules voisines et calcule le flux diffusif sur chaque face. Pour un probl\u00e8me de convection, la direction et l&rsquo;ampleur du transport d\u00e9pendent des vitesses centr\u00e9es sur le visage et des vecteurs normaux.<\/p>\n<p>La taille des cellules influence la r\u00e9solution. La zone du visage influence la quantit\u00e9 de flux. Le volume cellulaire affecte l&rsquo;accumulation et les termes sources. La distance entre les centres cellulaires voisins affecte les approximations de gradient.<\/p>\n<p>Par cons\u00e9quent, le maillage n&rsquo;est pas seulement un conteneur visuel. Sa g\u00e9om\u00e9trie entre directement dans les \u00e9quations num\u00e9riques.<\/p>\n<h2>Maillages structur\u00e9s et non structur\u00e9s<\/h2>\n<p>Un maillage structur\u00e9 organise les cellules dans un mod\u00e8le pr\u00e9visible. Les grilles rectangulaires sont l&rsquo;exemple le plus courant. Les cellules forment des lignes, des colonnes et des couches, et leurs voisins peuvent \u00eatre identifi\u00e9s syst\u00e9matiquement.<\/p>\n<p>Les grilles structur\u00e9es sont faciles \u00e0 cr\u00e9er et g\u00e9n\u00e9ralement efficaces \u00e0 traiter. Ils conviennent aux domaines rectangulaires, aux syst\u00e8mes en couches, aux canaux et aux probl\u00e8mes avec des limites simples.<\/p>\n<p>Un maillage non structur\u00e9 ne suit pas une disposition r\u00e9guli\u00e8re de rang\u00e9es et de colonnes. Il peut contenir des triangles, des t\u00e9tra\u00e8dres ou des polygones irr\u00e9guliers. Les mailles non structur\u00e9es peuvent s&rsquo;adapter aux limites courbes, aux trous, aux caract\u00e9ristiques \u00e9troites et \u00e0 la g\u00e9om\u00e9trie d&rsquo;ing\u00e9nierie complexe de mani\u00e8re plus pr\u00e9cise.<\/p>\n<p>La flexibilit\u00e9 d&rsquo;un maillage non structur\u00e9 s&rsquo;accompagne d&rsquo;un co\u00fbt suppl\u00e9mentaire. La g\u00e9n\u00e9ration de maillage, le contr\u00f4le de la qualit\u00e9, la s\u00e9lection des limites et le traitement num\u00e9rique deviennent plus compliqu\u00e9s.<\/p>\n<h2>Cr\u00e9ation d&rsquo;une grille unidimensionnelle<\/h2>\n<p>Le maillage fipy le plus simple est <code>Grid1D<\/code>. Il divise une ligne en un nombre sp\u00e9cifi\u00e9 de cellules.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(nx=100, dx=0.01)<\/code><\/pre>\n<p>Le param\u00e8tre <code>nx<\/code> d\u00e9finit le nombre de cellules. Le param\u00e8tre <code>dx<\/code> d\u00e9finit la largeur de chaque cellule. Dans cet exemple, la longueur totale du domaine est une unit\u00e9.<\/p>\n<p>Les grilles unidimensionnelles sont utiles pour la diffusion en couches, le transfert de chaleur \u00e0 travers un mur, les changements de concentration le long d&rsquo;un canal et les syst\u00e8mes \u00e0 forte sym\u00e9trie. Un mod\u00e8le 1D est souvent beaucoup plus rapide qu&rsquo;une simulation 2D ou 3D et peut \u00eatre suffisant lorsque des variations dans d&rsquo;autres directions peuvent \u00eatre ignor\u00e9es.<\/p>\n<h2>Cr\u00e9ation d&rsquo;une grille bidimensionnelle<\/h2>\n<p>Un domaine rectangulaire \u00e0 deux dimensions peut \u00eatre cr\u00e9\u00e9 avec <code>Grid2D<\/code>.<\/p>\n<pre><code>from fipy import Grid2D\n\nmesh = Grid2D(\n    nx=50,\n    ny=30,\n    dx=0.02,\n    dy=0.02\n)<\/code><\/pre>\n<p>Le maillage contient 50 cellules le long de l&rsquo;axe des x et 30 cellules le long de l&rsquo;axe Y. Chaque cellule a une largeur de 0,02 unit\u00e9 et une hauteur de 0,02 unit\u00e9.<\/p>\n<p>Cette structure est adapt\u00e9e au transfert de chaleur planaire, aux microstructures de mat\u00e9riaux, \u00e0 la diffusion sur les surfaces, aux probl\u00e8mes \u00e9lectrostatiques et \u00e0 de nombreux exemples de champs de phase.<\/p>\n<p>Une grille rectangulaire est g\u00e9n\u00e9ralement le meilleur point de d\u00e9part lorsque le domaine physique est simple. Il est facile de visualiser, d&rsquo;affiner et de tester l&rsquo;ind\u00e9pendance du maillage.<\/p>\n<h2>Cr\u00e9ation d&rsquo;une grille en trois dimensions<\/h2>\n<p>FIPY fournit <code>Grid3D<\/code> pour les domaines volum\u00e9triques.<\/p>\n<pre><code>from fipy import Grid3D\n\nmesh = Grid3D(\n    nx=40,\n    ny=30,\n    nz=20,\n    dx=0.01,\n    dy=0.01,\n    dz=0.01\n)<\/code><\/pre>\n<p>Les simulations tridimensionnelles peuvent repr\u00e9senter une g\u00e9om\u00e9trie spatiale compl\u00e8te, mais elles n\u00e9cessitent beaucoup plus de m\u00e9moire et de temps de traitement. Doubler le nombre de cellules dans toutes les directions peut augmenter le nombre total de cellules d&rsquo;un facteur huit.<\/p>\n<p>Avant d&rsquo;utiliser une grille 3D, il est utile de v\u00e9rifier si la sym\u00e9trie ou la r\u00e9duction dimensionnelle peut fournir un r\u00e9sultat ad\u00e9quat. Un mod\u00e8le radial cylindrique ou unidimensionnel peut parfois remplacer une simulation 3D beaucoup plus co\u00fbteuse.<\/p>\n<h2>Espacement uniforme et non uniforme<\/h2>\n<p>Une grille uniforme utilise des cellules de taille \u00e9gale le long d&rsquo;un axe donn\u00e9. Ceci est pratique lorsque la solution change progressivement dans tout le domaine.<\/p>\n<p>Certains probl\u00e8mes contiennent des gradients nets pr\u00e8s d&rsquo;une limite, d&rsquo;une interface ou d&rsquo;une source. L&rsquo;utilisation d&rsquo;une grille fine partout peut \u00eatre inutile. FIPY peut cr\u00e9er un espacement non uniforme en recevant une s\u00e9quence de largeurs de cellules.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(\n    dx=(0.01, 0.01, 0.02, 0.04, 0.08)\n)<\/code><\/pre>\n<p>Les cellules s&rsquo;\u00e9largissent progressivement. Les cellules plus petites peuvent \u00eatre plac\u00e9es pr\u00e8s d&rsquo;une limite importante, tandis que les cellules plus grandes couvrent les r\u00e9gions o\u00f9 la solution change lentement.<\/p>\n<p>Les grilles non uniformes r\u00e9duisent le co\u00fbt de calcul, mais des changements brutaux de taille de cellule peuvent r\u00e9duire la qualit\u00e9 num\u00e9rique. Les dimensions des cellules doivent g\u00e9n\u00e9ralement changer progressivement plut\u00f4t que de sauter entre des valeurs extr\u00eamement diff\u00e9rentes.<\/p>\n<h2>Acc\u00e9der aux centres de cellules<\/h2>\n<p>FIPY expose les coordonn\u00e9es de la cellule via <code>mesh.cellCenters<\/code>. Ces coordonn\u00e9es sont souvent utilis\u00e9es pour d\u00e9finir les conditions initiales, les sources, les coefficients spatiaux et les r\u00e9gions d&rsquo;int\u00e9r\u00eat.<\/p>\n<pre><code>x, y = mesh.cellCenters<\/code><\/pre>\n<p>Un utilisateur peut cr\u00e9er une r\u00e9gion initiale circulaire en appliquant une condition logique aux coordonn\u00e9es :<\/p>\n<pre><code>initial_region = (\n    (x - 0.5) ** 2 + (y - 0.5) ** 2\n) &lt; 0.1 ** 2<\/code><\/pre>\n<p>Le masque bool\u00e9en qui en r\u00e9sulte identifie les cellules dont les centres tombent \u00e0 l&rsquo;int\u00e9rieur du cercle.<\/p>\n<p>Les coordonn\u00e9es du centre de cellule sont particuli\u00e8rement utiles car la plupart des variables de solution FIPY sont stock\u00e9es sous forme d&rsquo;objets <code>CellVariable<\/code>.<\/p>\n<h2>Variables de cellule et association de maillage<\/h2>\n<p>A <code>CellVariable<\/code> stocke une valeur pour chaque cellule du maillage.<\/p>\n<pre><code>from fipy import CellVariable\n\ntemperature = CellVariable(\n    name=\"temperature\",\n    mesh=mesh,\n    value=300.0\n)<\/code><\/pre>\n<p>La variable re\u00e7oit automatiquement le m\u00eame nombre de valeurs que le maillage a des cellules. Il acc\u00e8de \u00e9galement aux op\u00e9rations bas\u00e9es sur le maillage telles que les gradients, l&rsquo;interpolation de la face et les contraintes.<\/p>\n<p>Les valeurs ne peuvent \u00eatre modifi\u00e9es que dans les cellules s\u00e9lectionn\u00e9es :<\/p>\n<pre><code>temperature.setValue(\n    500.0,\n    where=initial_region\n)<\/code><\/pre>\n<p>Cette relation entre les variables et les maillages permet \u00e0 Fipy de g\u00e9rer les op\u00e9rations d\u00e9pendantes de la g\u00e9om\u00e9trie sans obliger les utilisateurs \u00e0 assembler chaque matrice manuellement.<\/p>\n<h2>Centres de visage et variables de visage<\/h2>\n<p>Les visages sont importants car les flux les traversent. Leurs coordonn\u00e9es sont disponibles via <code>mesh.faceCenters<\/code>.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters<\/code><\/pre>\n<p>Les coordonn\u00e9es du visage peuvent \u00eatre utilis\u00e9es pour identifier les limites ou appliquer une condition uniquement \u00e0 une partie d&rsquo;un bord.<\/p>\n<p>FIPY prend \u00e9galement en charge les objets <code>FaceVariable<\/code>. Ceux-ci sont utiles pour des quantit\u00e9s naturellement situ\u00e9es sur des faces, telles que la vitesse d&rsquo;\u00e9coulement ou le flux sp\u00e9cifi\u00e9 de l&rsquo;ext\u00e9rieur.<\/p>\n<p>Une variable centr\u00e9e sur les cellules peut souvent \u00eatre interpol\u00e9e sur des faces gr\u00e2ce \u00e0 des propri\u00e9t\u00e9s telles que <code>faceValue<\/code>. Son gradient au niveau des visages est accessible via <code>faceGrad<\/code>.<\/p>\n<p>Il est important de choisir l&#8217;emplacement correct pour une variable. Les temp\u00e9ratures et les concentrations sont g\u00e9n\u00e9ralement centr\u00e9es sur les cellules, tandis que les flux et les vitesses de transport sont souvent centr\u00e9s sur le visage.<\/p>\n<h2>Volumes de cellules, zones de visage et normales<\/h2>\n<p>FIPY calcule automatiquement les propri\u00e9t\u00e9s g\u00e9om\u00e9triques. Les volumes de cellules sont disponibles jusqu&rsquo;\u00e0 <code>mesh.cellVolumes<\/code>. En 2D, ces valeurs repr\u00e9sentent des zones de cellules sous les hypoth\u00e8ses dimensionnelles du mod\u00e8le.<\/p>\n<p>Les zones du visage influencent la quantit\u00e9 totale de mat\u00e9riau, de chaleur ou de quantit\u00e9 de mouvement traversant une limite. Les normales du visage identifient la direction perpendiculaire \u00e0 chaque face.<\/p>\n<p>L&rsquo;orientation d&rsquo;une normale est importante lors du calcul des flux vers l&rsquo;ext\u00e9rieur et vers l&rsquo;int\u00e9rieur. Un flux positif dans une direction peut repr\u00e9senter un flux n\u00e9gatif par rapport \u00e0 une cellule voisine.<\/p>\n<p>Ces propri\u00e9t\u00e9s permettent \u00e0 FIPY d&rsquo;appliquer de mani\u00e8re coh\u00e9rente les lois de conservation sur les diff\u00e9rentes formes de grille et les syst\u00e8mes de coordonn\u00e9es.<\/p>\n<h2>Visages ext\u00e9rieurs et int\u00e9rieurs<\/h2>\n<p>Fipy s\u00e9pare les visages en groupes ext\u00e9rieurs et int\u00e9rieurs. Les faces ext\u00e9rieures forment la limite ext\u00e9rieure du domaine. Les faces int\u00e9rieures relient les cellules voisines.<\/p>\n<p>Les masques correspondants sont disponibles sous la forme :<\/p>\n<pre><code>mesh.exteriorFaces\nmesh.interiorFaces<\/code><\/pre>\n<p>Les faces ext\u00e9rieures sont couramment utilis\u00e9es pour les conditions aux limites. Les faces int\u00e9rieures participent au transport ordinaire entre les cellules.<\/p>\n<p>Les grilles cart\u00e9siennes r\u00e9guli\u00e8res fournissent \u00e9galement des masques directionnels pratiques tels que <code>facesLeft<\/code>, <code>facesRight<\/code>, <code>facesTop<\/code> et <code>facesBottom<\/code>.<\/p>\n<pre><code>temperature.constrain(\n    350.0,\n    where=mesh.facesLeft\n)\n\ntemperature.constrain(\n    300.0,\n    where=mesh.facesRight\n)<\/code><\/pre>\n<p>Cela applique des valeurs fixes aux limites gauche et droite.<\/p>\n<h2>Cr\u00e9ation de masques de limite personnalis\u00e9s<\/h2>\n<p>Une condition physique ne peut s&rsquo;appliquer qu&rsquo;\u00e0 une partie d&rsquo;une limite. Les masques personnalis\u00e9s peuvent combiner des ensembles de visages standard avec des conditions de coordonn\u00e9es.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters\n\nheated_section = (\n    mesh.facesTop\n    &amp; (x_face &gt; 0.4)\n    &amp; (x_face &lt; 0.6)\n)\n\ntemperature.constrain(\n    400.0,\n    where=heated_section\n)<\/code><\/pre>\n<p>Cet exemple ne limite que la partie centrale de la limite sup\u00e9rieure.<\/p>\n<p>Les masques personnalis\u00e9s peuvent \u00e9galement s\u00e9lectionner des limites circulaires, des interfaces, des entr\u00e9es, des points de vente ou des faces \u00e0 proximit\u00e9 d&rsquo;une coordonn\u00e9e sp\u00e9cifi\u00e9e. Il est important de cr\u00e9er des masques \u00e0 partir des coordonn\u00e9es du visage lors de l&rsquo;application des conditions aux limites du visage. Un masque cellulaire et un masque facial ont des longueurs et des objectifs diff\u00e9rents.<\/p>\n<h2>Structures de grille p\u00e9riodiques<\/h2>\n<p>Les mailles p\u00e9riodiques relient les c\u00f4t\u00e9s oppos\u00e9s d&rsquo;un domaine. Une valeur laissant un c\u00f4t\u00e9 r\u00e9-entre efficacement par l&rsquo;autre.<\/p>\n<p>FIPY fournit des classes de grille p\u00e9riodiques pour une, deux et trois dimensions. Certaines variantes s&rsquo;appliquent uniquement \u00e0 la p\u00e9riodicit\u00e9 le long des axes s\u00e9lectionn\u00e9s.<\/p>\n<p>Les grilles p\u00e9riodiques sont utiles pour les microstructures r\u00e9p\u00e9t\u00e9es, les mod\u00e8les de cristal, les volumes de mat\u00e9riaux repr\u00e9sentatifs, les syst\u00e8mes en forme d&rsquo;onde et les simulations de champ de phase o\u00f9 les limites externes artificielles d\u00e9formeraient la solution.<\/p>\n<p>Les utilisateurs doivent se rappeler qu&rsquo;une direction p\u00e9riodique ne se comporte pas comme une limite ext\u00e9rieure ordinaire. L&rsquo;application de contraintes de limites contradictoires aux faces connect\u00e9es peut produire un mod\u00e8le incorrect.<\/p>\n<h2>Grilles cylindriques et sph\u00e9riques<\/h2>\n<p>Les grilles cart\u00e9siennes ne sont pas toujours le choix le plus efficace. FIPY fournit des classes de maillage cylindriques et sph\u00e9riques pour les syst\u00e8mes \u00e0 sym\u00e9trie radiale.<\/p>\n<p>Une grille cylindrique peut repr\u00e9senter un transfert de chaleur \u00e0 travers une paroi de tuyau, une diffusion radiale ou un r\u00e9acteur axisym\u00e9trique. Les volumes de cellules et les zones de face changent avec Radius, et Fipy explique automatiquement cette g\u00e9om\u00e9trie.<\/p>\n<p>Une grille unidimensionnelle sph\u00e9rique peut mod\u00e9liser la diffusion dans une particule, un transfert de chaleur \u00e0 l&rsquo;int\u00e9rieur d&rsquo;une sph\u00e8re ou un transport chimique radial.<\/p>\n<p>Ces maillages sp\u00e9cifiques aux coordonn\u00e9es peuvent remplacer des calculs multidimensionnels co\u00fbteux lorsque la solution est sym\u00e9trique. Cependant, ils ne doivent pas \u00eatre utilis\u00e9s lorsque des variations angulaires importantes sont pr\u00e9sentes.<\/p>\n<h2>Maillages triangulaires et asym\u00e9triques<\/h2>\n<p>FIPY comprend des structures triangulaires telles que <code>Tri2D<\/code>. Les cellules triangulaires peuvent fournir une discr\u00e9tisation diff\u00e9rente d&rsquo;une r\u00e9gion bidimensionnelle et peuvent \u00eatre utiles pour tester le comportement num\u00e9rique.<\/p>\n<p>Les grilles asym\u00e9triques s&rsquo;\u00e9loignent intentionnellement des sommets d&rsquo;un arrangement orthogonal. Ils peuvent d\u00e9montrer comment un solveur r\u00e9pond \u00e0 la g\u00e9om\u00e9trie non orthogonale.<\/p>\n<p>Une asym\u00e9trie forte peut r\u00e9duire la pr\u00e9cision du gradient et augmenter l&rsquo;erreur num\u00e9rique. Un maillage avec de nombreuses cellules de mauvaise qualit\u00e9 peut fonctionner moins bien qu&rsquo;une grille plus grossi\u00e8re mais bien form\u00e9e.<\/p>\n<p>La qualit\u00e9 du maillage doit donc \u00eatre \u00e9valu\u00e9e s\u00e9par\u00e9ment de la r\u00e9solution du maillage. L&rsquo;ajout de cellules plus d\u00e9form\u00e9es n&rsquo;am\u00e9liore pas n\u00e9cessairement la solution.<\/p>\n<h2>Mod\u00e9lisation de la g\u00e9om\u00e9trie complexe avec GMSH<\/h2>\n<p>Les grilles r\u00e9guli\u00e8res sont limit\u00e9es lorsque le domaine contient des courbes, des trous, des limites irr\u00e9guli\u00e8res ou des caract\u00e9ristiques tridimensionnelles d\u00e9taill\u00e9es. Fipy peut utiliser GMSH pour g\u00e9n\u00e9rer ou importer des maillages plus complexes.<\/p>\n<p>Un maillage bidimensionnel de base peut \u00eatre cr\u00e9\u00e9 \u00e0 partir des commandes GMSH :<\/p>\n<pre><code>from fipy import Gmsh2D\n\nmesh = Gmsh2D(\"\"\"\n    cellSize = 0.05;\n\n    Point(1) = {0, 0, 0, cellSize};\n    Point(2) = {1, 0, 0, cellSize};\n    Point(3) = {1, 1, 0, cellSize};\n    Point(4) = {0, 1, 0, cellSize};\n\n    Line(1) = {1, 2};\n    Line(2) = {2, 3};\n    Line(3) = {3, 4};\n    Line(4) = {4, 1};\n\n    Curve Loop(1) = {1, 2, 3, 4};\n    Plane Surface(1) = {1};\n\"\"\")<\/code><\/pre>\n<p>GMSH peut \u00e9galement charger la g\u00e9om\u00e9trie \u00e0 partir d&rsquo;un fichier <code>.geo<\/code> ou importer un fichier <code>.msh<\/code> g\u00e9n\u00e9r\u00e9. Conserver une g\u00e9om\u00e9trie complexe dans un fichier s\u00e9par\u00e9 rend souvent le mod\u00e8le Python plus facile \u00e0 entretenir.<\/p>\n<h2>Raffinement local<\/h2>\n<p>Les probl\u00e8mes complexes ne n\u00e9cessitent souvent que de petites cellules dans certaines zones. Le raffinement local peut am\u00e9liorer la r\u00e9solution \u00e0 proximit\u00e9 des interfaces, des coins, des limites, des sources, des canaux \u00e9troits ou des gradients abrupts.<\/p>\n<p>GMSH fournit des contr\u00f4les flexibles pour d\u00e9finir la taille des \u00e9l\u00e9ments locaux. Une r\u00e9gion fine peut \u00eatre plac\u00e9e autour d&rsquo;une caract\u00e9ristique importante tandis que le reste du domaine utilise des cellules plus grandes.<\/p>\n<p>Cette approche est g\u00e9n\u00e9ralement plus efficace que le raffinage de l&rsquo;ensemble du r\u00e9seau. Cependant, les transitions entre les r\u00e9gions fines et grossi\u00e8res doivent \u00eatre progressives. Des changements de taille soudains peuvent r\u00e9duire la qualit\u00e9 num\u00e9rique ou cr\u00e9er des cellules mal form\u00e9es.<\/p>\n<h2>Test de convergence de maillage<\/h2>\n<p>Un r\u00e9sultat de simulation ne doit pas d\u00e9pendre fortement d&rsquo;une taille de maillage arbitraire. Les tests de convergence de maillage v\u00e9rifient si la solution devient stable \u00e0 mesure que la grille est raffin\u00e9e.<\/p>\n<p>Un test pratique utilise au moins deux ou trois r\u00e9solutions. L&rsquo;utilisateur compare une quantit\u00e9 importante, telle que la temp\u00e9rature maximale, la concentration moyenne, la position de l&rsquo;interface ou le flux total.<\/p>\n<p>Si le r\u00e9sultat change consid\u00e9rablement apr\u00e8s le raffinement, le maillage d&rsquo;origine \u00e9tait probablement trop grossier. Si la diff\u00e9rence devient faible, un raffinement suppl\u00e9mentaire peut ne pas justifier son co\u00fbt de calcul.<\/p>\n<p>La convergence doit \u00eatre test\u00e9e pour le r\u00e9sultat qui compte pour l&rsquo;\u00e9tude. Un maillage peut pr\u00e9dire avec pr\u00e9cision une valeur moyenne tout en ne parvenant pas \u00e0 capturer un maximum local.<\/p>\n<h2>Maillages dans des simulations parall\u00e8les<\/h2>\n<p>Les simulations de grande taille FIPY peuvent r\u00e9partir un maillage sur plusieurs processus. Chaque processus fonctionne avec une partie du domaine et \u00e9change des informations avec des parties voisines.<\/p>\n<p>Les maillages parall\u00e8les peuvent contenir des cellules locales, des cellules de chevauchement et des valeurs globalement identifi\u00e9es. La taille d&rsquo;un tableau NumPy local peut donc diff\u00e9rer du nombre total de cellules dans le maillage complet.<\/p>\n<p>Les utilisateurs doivent \u00eatre prudents lorsqu&rsquo;ils indexent directement les tableaux ou exportent des valeurs lors de l&rsquo;ex\u00e9cution parall\u00e8le. Le code qui suppose que chaque processus poss\u00e8de le maillage complet peut fonctionner en mode s\u00e9rie mais \u00e9chouer en mode parall\u00e8le.<\/p>\n<p>L&rsquo;ex\u00e9cution parall\u00e8le peut r\u00e9duire le temps d&rsquo;ex\u00e9cution pour de gros probl\u00e8mes, mais la surcharge de communication peut limiter les avantages pour les petits maillages.<\/p>\n<h2>Inspection et visualisation d&rsquo;un maillage<\/h2>\n<p>Un maillage doit \u00eatre inspect\u00e9 avant de r\u00e9soudre une \u00e9quation complexe. Les utilisateurs peuvent v\u00e9rifier le nombre de cellules, les plages de coordonn\u00e9es, les volumes, les masques ext\u00e9rieurs et les s\u00e9lections de limites.<\/p>\n<p>Les visionneuses FIPY peuvent afficher une variable sur le maillage&nbsp;:<\/p>\n<pre><code>from fipy import Viewer\n\nviewer = Viewer(vars=temperature)\nviewer.plot()<\/code><\/pre>\n<p>La visualisation peut r\u00e9v\u00e9ler des dimensions de domaine incorrectes, un espacement cellulaire inattendu, des r\u00e9gions manquantes ou des masques de limite mal s\u00e9lectionn\u00e9s.<\/p>\n<p>Pour la g\u00e9om\u00e9trie bas\u00e9e sur GMSH, il est utile d&rsquo;inspecter le maillage g\u00e9n\u00e9r\u00e9 dans un outil de visualisation d\u00e9di\u00e9 avant de commencer une longue simulation.<\/p>\n<h2>Erreurs courantes pour d\u00e9butants<\/h2>\n<p>Une erreur courante consiste \u00e0 confondre le nombre de cellules avec la taille physique. Une grille de 100 cellules n&rsquo;a pas une longueur de 100 \u00e0 moins que chaque cellule ne soit d&rsquo;une unit\u00e9 de largeur.<\/p>\n<p>Une autre erreur consiste \u00e0 appliquer une contrainte de limite avec un masque cellulaire au lieu d&rsquo;un masque facial. Les conditions aux limites agissent g\u00e9n\u00e9ralement sur les faces ext\u00e9rieures.<\/p>\n<p>Les utilisateurs peuvent \u00e9galement choisir une grille trop grossi\u00e8re pour capturer un gradient ou inutilement bien pour un probl\u00e8me simple.<\/p>\n<p>D&rsquo;autres probl\u00e8mes courants incluent des hypoth\u00e8ses de coordonn\u00e9es incorrectes, un espacement non uniforme brutal, une mauvaise qualit\u00e9 des \u00e9l\u00e9ments GMSH, des conditions p\u00e9riodiques contradictoires et des tests de convergence de saut.<\/p>\n<h2>Choisir le bon maillage Fipy<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Type de maillage<\/th>\n<th>Meilleure utilisation<\/th>\n<th>Principale limitation<\/th>\n<\/tr>\n<tr>\n<td><code>Grid1D<\/code><\/td>\n<td>Transport en couches et unidirectionnel<\/td>\n<td>ne peut pas repr\u00e9senter la variation lat\u00e9rale<\/td>\n<\/tr>\n<tr>\n<td><code>Grid2D<\/code><\/td>\n<td>Domaines planaires rectangulaires<\/td>\n<td>Limit\u00e9 aux limites simples<\/td>\n<\/tr>\n<tr>\n<td><code>Grid3D<\/code><\/td>\n<td>Mod\u00e8les volum\u00e9triques complets<\/td>\n<td>Co\u00fbt de calcul \u00e9lev\u00e9<\/td>\n<\/tr>\n<tr>\n<td>Grille non uniforme<\/td>\n<td>D\u00e9grad\u00e9s et interfaces localis\u00e9s<\/td>\n<td>N\u00e9cessite des transitions d&rsquo;espacement prudentes<\/td>\n<\/tr>\n<tr>\n<td>Grille p\u00e9riodique<\/td>\n<td>Structures et cellules unitaires r\u00e9p\u00e9t\u00e9es<\/td>\n<td>Les fronti\u00e8res oppos\u00e9es sont li\u00e9es<\/td>\n<\/tr>\n<tr>\n<td>Grille cylindrique ou sph\u00e9rique<\/td>\n<td>Syst\u00e8mes radialement sym\u00e9triques<\/td>\n<td>Invalide lorsque la variation angulaire est importante<\/td>\n<\/tr>\n<tr>\n<td>Maille GMSH<\/td>\n<td>G\u00e9om\u00e9trie courbe et irr\u00e9guli\u00e8re<\/td>\n<td>G\u00e9n\u00e9ration et contr\u00f4le de la qualit\u00e9 plus complexes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Un workflow de s\u00e9lection de maillage pratique<\/h2>\n<p>Commencez par identifier la forme physique du domaine et les dimensions dans lesquelles la solution peut varier. V\u00e9rifiez si la sym\u00e9trie peut r\u00e9duire un probl\u00e8me 3D en 2D ou 1D.<\/p>\n<p>Choisissez la classe de maillage la plus simple et la plus simple. Estimez o\u00f9 des gradients ou des interfaces forts peuvent appara\u00eetre et ajuster la taille des cellules en cons\u00e9quence.<\/p>\n<p>Inspectez les centres de cellules, les dimensions du domaine, les volumes et les masques de limite. Visualisez le maillage et appliquez une simple variable de test avant de r\u00e9soudre l&rsquo;\u00e9quation compl\u00e8te.<\/p>\n<p>Ex\u00e9cutez la simulation sur plusieurs r\u00e9solutions et comparez les principaux r\u00e9sultats. D\u00e9placez-vous vers GMSH, le raffinement local ou le traitement parall\u00e8le uniquement lorsque la grille de base ne peut pas r\u00e9pondre aux exigences g\u00e9om\u00e9triques ou num\u00e9riques.<\/p>\n<h2>Conclusion<\/h2>\n<p>Les maillages FIPY d\u00e9finissent la g\u00e9om\u00e9trie, la connectivit\u00e9, les volumes de cellules, les faces et les coordonn\u00e9es utilis\u00e9es par la m\u00e9thode du volume fini. Ils fournissent la structure sur laquelle fonctionnent les variables, les \u00e9quations, les flux et les conditions aux limites.<\/p>\n<p>Les classes r\u00e9guli\u00e8res telles que <code>Grid1D<\/code>, <code>Grid2D<\/code> et <code>Grid3D<\/code> couvrent de nombreux probl\u00e8mes courants. Les maillages non uniformes, p\u00e9riodiques, cylindriques, sph\u00e9riques, triangulaires et GMSH prennent en charge des domaines plus sp\u00e9cialis\u00e9s.<\/p>\n<p>Le maillage le plus d\u00e9taill\u00e9 n&rsquo;est pas automatiquement le meilleur. Un bon maillage capture le comportement physique requis tout en gardant un co\u00fbt de calcul g\u00e9rable. Des masques de limite corrects, une qualit\u00e9 cellulaire raisonnable, des syst\u00e8mes de coordonn\u00e9es appropri\u00e9s et des tests de convergence sont tous essentiels.<\/p>\n<p>En choisissant la grille la plus simple et en affinant uniquement le cas \u00e9ch\u00e9ant, les utilisateurs de FIPY peuvent cr\u00e9er des simulations plus faciles \u00e0 comprendre, plus rapides \u00e0 r\u00e9soudre et plus fiables.<\/p>\n<\/article>\n","protected":false,"raw":"<article>\n<p>FIPY est un cadre bas\u00e9 sur Python pour r\u00e9soudre des \u00e9quations aux d\u00e9riv\u00e9es partielles avec la m\u00e9thode du volume fini. Il est couramment utilis\u00e9 pour la diffusion, le transfert de chaleur, la mod\u00e9lisation en champ de phase, l'\u00e9lectrochimie, le transport li\u00e9 aux fluides et d'autres probl\u00e8mes qui peuvent \u00eatre exprim\u00e9s \u00e0 travers des \u00e9quations de conservation.<\/p>\n<p>Chaque simulation FIPY commence par un maillage. Le maillage d\u00e9finit le domaine physique, le divise en volumes de contr\u00f4le, identifie les limites entre ces volumes et d\u00e9termine o\u00f9 les variables num\u00e9riques sont stock\u00e9es. Un maillage soigneusement s\u00e9lectionn\u00e9 peut rendre un mod\u00e8le pr\u00e9cis et efficace. Un maillage m\u00e9diocre peut cr\u00e9er des calculs instables, des gradients irr\u00e9alistes ou un co\u00fbt de calcul inutile.<\/p>\n<p>FIPY prend en charge de simples grilles cart\u00e9siennes, un espacement non uniforme, des domaines p\u00e9riodiques, des coordonn\u00e9es cylindriques et sph\u00e9riques, des structures triangulaires et des mailles cr\u00e9\u00e9es avec GMSH. La compr\u00e9hension de ces options aide les utilisateurs \u00e0 s\u00e9lectionner la grille la plus simple qui repr\u00e9sente toujours correctement le probl\u00e8me physique.<\/p>\n<h2>Qu'est-ce qu'un maillage dans Fipy&nbsp;?<\/h2>\n<p>Un maillage est une repr\u00e9sentation discr\u00e8te d'une r\u00e9gion physique continue. Au lieu de r\u00e9soudre une \u00e9quation diff\u00e9rentielle \u00e0 chaque point possible, FIPY divise le domaine en un nombre fini de cellules et calcule en leur sein des valeurs approximatives.<\/p>\n<p>Chaque cellule agit comme un volume de contr\u00f4le. Les quantit\u00e9s physiques telles que la temp\u00e9rature, la concentration, la pression ou la fraction de phase sont g\u00e9n\u00e9ralement associ\u00e9es aux centres cellulaires. Le transport entre les cellules voisines est calcul\u00e9 sur les faces qui les s\u00e9parent.<\/p>\n<p>Le maillage fournit \u00e0 la fois la g\u00e9om\u00e9trie et la topologie. La g\u00e9om\u00e9trie d\u00e9crit les tailles, les coordonn\u00e9es, les zones et les volumes. La topologie d\u00e9crit les cellules qui partagent des visages et comment les \u00e9l\u00e9ments sont connect\u00e9s.<\/p>\n<p>Cette information permet \u00e0 FIPY de transformer une \u00e9quation diff\u00e9rentielle en un syst\u00e8me d'\u00e9quations alg\u00e9briques qu'un solveur num\u00e9rique peut traiter.<\/p>\n<h2>Cellules, visages et sommets<\/h2>\n<p>Les maillages Fipy sont construits autour de trois principaux composants structuraux : cellules, faces et sommets.<\/p>\n<p>Les cellules sont les volumes de contr\u00f4le utilis\u00e9s par la m\u00e9thode du volume fini. Une cellule unidimensionnelle est un segment de ligne. Une cellule bidimensionnelle peut \u00eatre un rectangle ou un triangle. Une cellule tridimensionnelle peut \u00eatre une bo\u00eete ou un autre volume poly\u00e9drique.<\/p>\n<p>Les visages forment les limites des cellules. Une face int\u00e9rieure s\u00e9pare deux cellules voisines. Une face ext\u00e9rieure se trouve sur la limite ext\u00e9rieure du domaine complet.<\/p>\n<p>Les sommets d\u00e9finissent les points g\u00e9om\u00e9triques \u00e0 partir desquels les faces et les cellules sont construites. La plupart des utilisateurs ne manipulent pas les sommets directement lorsqu'ils travaillent avec des grilles r\u00e9guli\u00e8res, mais ils deviennent importants lors de l'importation ou de la cr\u00e9ation de g\u00e9om\u00e9trie irr\u00e9guli\u00e8re.<\/p>\n<p>Les relations entre ces composants d\u00e9terminent la fa\u00e7on dont les valeurs et les flux se d\u00e9placent dans la simulation.<\/p>\n<h2>Pourquoi la structure de maillage est importante dans la m\u00e9thode du volume fini<\/h2>\n<p>La m\u00e9thode du volume fini int\u00e8gre une \u00e9quation gouvernante sur chaque cellule. Il calcule ensuite la quantit\u00e9 d'une quantit\u00e9 physique qui p\u00e9n\u00e8tre ou sort \u00e0 travers les faces environnantes.<\/p>\n<p>Pour un probl\u00e8me de diffusion, FIPY estime les gradients entre les valeurs de cellules voisines et calcule le flux diffusif sur chaque face. Pour un probl\u00e8me de convection, la direction et l'ampleur du transport d\u00e9pendent des vitesses centr\u00e9es sur le visage et des vecteurs normaux.<\/p>\n<p>La taille des cellules influence la r\u00e9solution. La zone du visage influence la quantit\u00e9 de flux. Le volume cellulaire affecte l'accumulation et les termes sources. La distance entre les centres cellulaires voisins affecte les approximations de gradient.<\/p>\n<p>Par cons\u00e9quent, le maillage n'est pas seulement un conteneur visuel. Sa g\u00e9om\u00e9trie entre directement dans les \u00e9quations num\u00e9riques.<\/p>\n<h2>Maillages structur\u00e9s et non structur\u00e9s<\/h2>\n<p>Un maillage structur\u00e9 organise les cellules dans un mod\u00e8le pr\u00e9visible. Les grilles rectangulaires sont l'exemple le plus courant. Les cellules forment des lignes, des colonnes et des couches, et leurs voisins peuvent \u00eatre identifi\u00e9s syst\u00e9matiquement.<\/p>\n<p>Les grilles structur\u00e9es sont faciles \u00e0 cr\u00e9er et g\u00e9n\u00e9ralement efficaces \u00e0 traiter. Ils conviennent aux domaines rectangulaires, aux syst\u00e8mes en couches, aux canaux et aux probl\u00e8mes avec des limites simples.<\/p>\n<p>Un maillage non structur\u00e9 ne suit pas une disposition r\u00e9guli\u00e8re de rang\u00e9es et de colonnes. Il peut contenir des triangles, des t\u00e9tra\u00e8dres ou des polygones irr\u00e9guliers. Les mailles non structur\u00e9es peuvent s'adapter aux limites courbes, aux trous, aux caract\u00e9ristiques \u00e9troites et \u00e0 la g\u00e9om\u00e9trie d'ing\u00e9nierie complexe de mani\u00e8re plus pr\u00e9cise.<\/p>\n<p>La flexibilit\u00e9 d'un maillage non structur\u00e9 s'accompagne d'un co\u00fbt suppl\u00e9mentaire. La g\u00e9n\u00e9ration de maillage, le contr\u00f4le de la qualit\u00e9, la s\u00e9lection des limites et le traitement num\u00e9rique deviennent plus compliqu\u00e9s.<\/p>\n<h2>Cr\u00e9ation d'une grille unidimensionnelle<\/h2>\n<p>Le maillage fipy le plus simple est <code>Grid1D<\/code>. Il divise une ligne en un nombre sp\u00e9cifi\u00e9 de cellules.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(nx=100, dx=0.01)<\/code><\/pre>\n<p>Le param\u00e8tre <code>nx<\/code> d\u00e9finit le nombre de cellules. Le param\u00e8tre <code>dx<\/code> d\u00e9finit la largeur de chaque cellule. Dans cet exemple, la longueur totale du domaine est une unit\u00e9.<\/p>\n<p>Les grilles unidimensionnelles sont utiles pour la diffusion en couches, le transfert de chaleur \u00e0 travers un mur, les changements de concentration le long d'un canal et les syst\u00e8mes \u00e0 forte sym\u00e9trie. Un mod\u00e8le 1D est souvent beaucoup plus rapide qu'une simulation 2D ou 3D et peut \u00eatre suffisant lorsque des variations dans d'autres directions peuvent \u00eatre ignor\u00e9es.<\/p>\n<h2>Cr\u00e9ation d'une grille bidimensionnelle<\/h2>\n<p>Un domaine rectangulaire \u00e0 deux dimensions peut \u00eatre cr\u00e9\u00e9 avec <code>Grid2D<\/code>.<\/p>\n<pre><code>from fipy import Grid2D\n\nmesh = Grid2D(\n    nx=50,\n    ny=30,\n    dx=0.02,\n    dy=0.02\n)<\/code><\/pre>\n<p>Le maillage contient 50 cellules le long de l'axe des x et 30 cellules le long de l'axe Y. Chaque cellule a une largeur de 0,02 unit\u00e9 et une hauteur de 0,02 unit\u00e9.<\/p>\n<p>Cette structure est adapt\u00e9e au transfert de chaleur planaire, aux microstructures de mat\u00e9riaux, \u00e0 la diffusion sur les surfaces, aux probl\u00e8mes \u00e9lectrostatiques et \u00e0 de nombreux exemples de champs de phase.<\/p>\n<p>Une grille rectangulaire est g\u00e9n\u00e9ralement le meilleur point de d\u00e9part lorsque le domaine physique est simple. Il est facile de visualiser, d'affiner et de tester l'ind\u00e9pendance du maillage.<\/p>\n<h2>Cr\u00e9ation d'une grille en trois dimensions<\/h2>\n<p>FIPY fournit <code>Grid3D<\/code> pour les domaines volum\u00e9triques.<\/p>\n<pre><code>from fipy import Grid3D\n\nmesh = Grid3D(\n    nx=40,\n    ny=30,\n    nz=20,\n    dx=0.01,\n    dy=0.01,\n    dz=0.01\n)<\/code><\/pre>\n<p>Les simulations tridimensionnelles peuvent repr\u00e9senter une g\u00e9om\u00e9trie spatiale compl\u00e8te, mais elles n\u00e9cessitent beaucoup plus de m\u00e9moire et de temps de traitement. Doubler le nombre de cellules dans toutes les directions peut augmenter le nombre total de cellules d'un facteur huit.<\/p>\n<p>Avant d'utiliser une grille 3D, il est utile de v\u00e9rifier si la sym\u00e9trie ou la r\u00e9duction dimensionnelle peut fournir un r\u00e9sultat ad\u00e9quat. Un mod\u00e8le radial cylindrique ou unidimensionnel peut parfois remplacer une simulation 3D beaucoup plus co\u00fbteuse.<\/p>\n<h2>Espacement uniforme et non uniforme<\/h2>\n<p>Une grille uniforme utilise des cellules de taille \u00e9gale le long d'un axe donn\u00e9. Ceci est pratique lorsque la solution change progressivement dans tout le domaine.<\/p>\n<p>Certains probl\u00e8mes contiennent des gradients nets pr\u00e8s d'une limite, d'une interface ou d'une source. L'utilisation d'une grille fine partout peut \u00eatre inutile. FIPY peut cr\u00e9er un espacement non uniforme en recevant une s\u00e9quence de largeurs de cellules.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(\n    dx=(0.01, 0.01, 0.02, 0.04, 0.08)\n)<\/code><\/pre>\n<p>Les cellules s'\u00e9largissent progressivement. Les cellules plus petites peuvent \u00eatre plac\u00e9es pr\u00e8s d'une limite importante, tandis que les cellules plus grandes couvrent les r\u00e9gions o\u00f9 la solution change lentement.<\/p>\n<p>Les grilles non uniformes r\u00e9duisent le co\u00fbt de calcul, mais des changements brutaux de taille de cellule peuvent r\u00e9duire la qualit\u00e9 num\u00e9rique. Les dimensions des cellules doivent g\u00e9n\u00e9ralement changer progressivement plut\u00f4t que de sauter entre des valeurs extr\u00eamement diff\u00e9rentes.<\/p>\n<h2>Acc\u00e9der aux centres de cellules<\/h2>\n<p>FIPY expose les coordonn\u00e9es de la cellule via <code>mesh.cellCenters<\/code>. Ces coordonn\u00e9es sont souvent utilis\u00e9es pour d\u00e9finir les conditions initiales, les sources, les coefficients spatiaux et les r\u00e9gions d'int\u00e9r\u00eat.<\/p>\n<pre><code>x, y = mesh.cellCenters<\/code><\/pre>\n<p>Un utilisateur peut cr\u00e9er une r\u00e9gion initiale circulaire en appliquant une condition logique aux coordonn\u00e9es :<\/p>\n<pre><code>initial_region = (\n    (x - 0.5) ** 2 + (y - 0.5) ** 2\n) &lt; 0.1 ** 2<\/code><\/pre>\n<p>Le masque bool\u00e9en qui en r\u00e9sulte identifie les cellules dont les centres tombent \u00e0 l'int\u00e9rieur du cercle.<\/p>\n<p>Les coordonn\u00e9es du centre de cellule sont particuli\u00e8rement utiles car la plupart des variables de solution FIPY sont stock\u00e9es sous forme d'objets <code>CellVariable<\/code>.<\/p>\n<h2>Variables de cellule et association de maillage<\/h2>\n<p>A <code>CellVariable<\/code> stocke une valeur pour chaque cellule du maillage.<\/p>\n<pre><code>from fipy import CellVariable\n\ntemperature = CellVariable(\n    name=\"temperature\",\n    mesh=mesh,\n    value=300.0\n)<\/code><\/pre>\n<p>La variable re\u00e7oit automatiquement le m\u00eame nombre de valeurs que le maillage a des cellules. Il acc\u00e8de \u00e9galement aux op\u00e9rations bas\u00e9es sur le maillage telles que les gradients, l'interpolation de la face et les contraintes.<\/p>\n<p>Les valeurs ne peuvent \u00eatre modifi\u00e9es que dans les cellules s\u00e9lectionn\u00e9es :<\/p>\n<pre><code>temperature.setValue(\n    500.0,\n    where=initial_region\n)<\/code><\/pre>\n<p>Cette relation entre les variables et les maillages permet \u00e0 Fipy de g\u00e9rer les op\u00e9rations d\u00e9pendantes de la g\u00e9om\u00e9trie sans obliger les utilisateurs \u00e0 assembler chaque matrice manuellement.<\/p>\n<h2>Centres de visage et variables de visage<\/h2>\n<p>Les visages sont importants car les flux les traversent. Leurs coordonn\u00e9es sont disponibles via <code>mesh.faceCenters<\/code>.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters<\/code><\/pre>\n<p>Les coordonn\u00e9es du visage peuvent \u00eatre utilis\u00e9es pour identifier les limites ou appliquer une condition uniquement \u00e0 une partie d'un bord.<\/p>\n<p>FIPY prend \u00e9galement en charge les objets <code>FaceVariable<\/code>. Ceux-ci sont utiles pour des quantit\u00e9s naturellement situ\u00e9es sur des faces, telles que la vitesse d'\u00e9coulement ou le flux sp\u00e9cifi\u00e9 de l'ext\u00e9rieur.<\/p>\n<p>Une variable centr\u00e9e sur les cellules peut souvent \u00eatre interpol\u00e9e sur des faces gr\u00e2ce \u00e0 des propri\u00e9t\u00e9s telles que <code>faceValue<\/code>. Son gradient au niveau des visages est accessible via <code>faceGrad<\/code>.<\/p>\n<p>Il est important de choisir l'emplacement correct pour une variable. Les temp\u00e9ratures et les concentrations sont g\u00e9n\u00e9ralement centr\u00e9es sur les cellules, tandis que les flux et les vitesses de transport sont souvent centr\u00e9s sur le visage.<\/p>\n<h2>Volumes de cellules, zones de visage et normales<\/h2>\n<p>FIPY calcule automatiquement les propri\u00e9t\u00e9s g\u00e9om\u00e9triques. Les volumes de cellules sont disponibles jusqu'\u00e0 <code>mesh.cellVolumes<\/code>. En 2D, ces valeurs repr\u00e9sentent des zones de cellules sous les hypoth\u00e8ses dimensionnelles du mod\u00e8le.<\/p>\n<p>Les zones du visage influencent la quantit\u00e9 totale de mat\u00e9riau, de chaleur ou de quantit\u00e9 de mouvement traversant une limite. Les normales du visage identifient la direction perpendiculaire \u00e0 chaque face.<\/p>\n<p>L'orientation d'une normale est importante lors du calcul des flux vers l'ext\u00e9rieur et vers l'int\u00e9rieur. Un flux positif dans une direction peut repr\u00e9senter un flux n\u00e9gatif par rapport \u00e0 une cellule voisine.<\/p>\n<p>Ces propri\u00e9t\u00e9s permettent \u00e0 FIPY d'appliquer de mani\u00e8re coh\u00e9rente les lois de conservation sur les diff\u00e9rentes formes de grille et les syst\u00e8mes de coordonn\u00e9es.<\/p>\n<h2>Visages ext\u00e9rieurs et int\u00e9rieurs<\/h2>\n<p>Fipy s\u00e9pare les visages en groupes ext\u00e9rieurs et int\u00e9rieurs. Les faces ext\u00e9rieures forment la limite ext\u00e9rieure du domaine. Les faces int\u00e9rieures relient les cellules voisines.<\/p>\n<p>Les masques correspondants sont disponibles sous la forme :<\/p>\n<pre><code>mesh.exteriorFaces\nmesh.interiorFaces<\/code><\/pre>\n<p>Les faces ext\u00e9rieures sont couramment utilis\u00e9es pour les conditions aux limites. Les faces int\u00e9rieures participent au transport ordinaire entre les cellules.<\/p>\n<p>Les grilles cart\u00e9siennes r\u00e9guli\u00e8res fournissent \u00e9galement des masques directionnels pratiques tels que <code>facesLeft<\/code>, <code>facesRight<\/code>, <code>facesTop<\/code> et <code>facesBottom<\/code>.<\/p>\n<pre><code>temperature.constrain(\n    350.0,\n    where=mesh.facesLeft\n)\n\ntemperature.constrain(\n    300.0,\n    where=mesh.facesRight\n)<\/code><\/pre>\n<p>Cela applique des valeurs fixes aux limites gauche et droite.<\/p>\n<h2>Cr\u00e9ation de masques de limite personnalis\u00e9s<\/h2>\n<p>Une condition physique ne peut s'appliquer qu'\u00e0 une partie d'une limite. Les masques personnalis\u00e9s peuvent combiner des ensembles de visages standard avec des conditions de coordonn\u00e9es.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters\n\nheated_section = (\n    mesh.facesTop\n    &amp; (x_face &gt; 0.4)\n    &amp; (x_face &lt; 0.6)\n)\n\ntemperature.constrain(\n    400.0,\n    where=heated_section\n)<\/code><\/pre>\n<p>Cet exemple ne limite que la partie centrale de la limite sup\u00e9rieure.<\/p>\n<p>Les masques personnalis\u00e9s peuvent \u00e9galement s\u00e9lectionner des limites circulaires, des interfaces, des entr\u00e9es, des points de vente ou des faces \u00e0 proximit\u00e9 d'une coordonn\u00e9e sp\u00e9cifi\u00e9e. Il est important de cr\u00e9er des masques \u00e0 partir des coordonn\u00e9es du visage lors de l'application des conditions aux limites du visage. Un masque cellulaire et un masque facial ont des longueurs et des objectifs diff\u00e9rents.<\/p>\n<h2>Structures de grille p\u00e9riodiques<\/h2>\n<p>Les mailles p\u00e9riodiques relient les c\u00f4t\u00e9s oppos\u00e9s d'un domaine. Une valeur laissant un c\u00f4t\u00e9 r\u00e9-entre efficacement par l'autre.<\/p>\n<p>FIPY fournit des classes de grille p\u00e9riodiques pour une, deux et trois dimensions. Certaines variantes s'appliquent uniquement \u00e0 la p\u00e9riodicit\u00e9 le long des axes s\u00e9lectionn\u00e9s.<\/p>\n<p>Les grilles p\u00e9riodiques sont utiles pour les microstructures r\u00e9p\u00e9t\u00e9es, les mod\u00e8les de cristal, les volumes de mat\u00e9riaux repr\u00e9sentatifs, les syst\u00e8mes en forme d'onde et les simulations de champ de phase o\u00f9 les limites externes artificielles d\u00e9formeraient la solution.<\/p>\n<p>Les utilisateurs doivent se rappeler qu'une direction p\u00e9riodique ne se comporte pas comme une limite ext\u00e9rieure ordinaire. L'application de contraintes de limites contradictoires aux faces connect\u00e9es peut produire un mod\u00e8le incorrect.<\/p>\n<h2>Grilles cylindriques et sph\u00e9riques<\/h2>\n<p>Les grilles cart\u00e9siennes ne sont pas toujours le choix le plus efficace. FIPY fournit des classes de maillage cylindriques et sph\u00e9riques pour les syst\u00e8mes \u00e0 sym\u00e9trie radiale.<\/p>\n<p>Une grille cylindrique peut repr\u00e9senter un transfert de chaleur \u00e0 travers une paroi de tuyau, une diffusion radiale ou un r\u00e9acteur axisym\u00e9trique. Les volumes de cellules et les zones de face changent avec Radius, et Fipy explique automatiquement cette g\u00e9om\u00e9trie.<\/p>\n<p>Une grille unidimensionnelle sph\u00e9rique peut mod\u00e9liser la diffusion dans une particule, un transfert de chaleur \u00e0 l'int\u00e9rieur d'une sph\u00e8re ou un transport chimique radial.<\/p>\n<p>Ces maillages sp\u00e9cifiques aux coordonn\u00e9es peuvent remplacer des calculs multidimensionnels co\u00fbteux lorsque la solution est sym\u00e9trique. Cependant, ils ne doivent pas \u00eatre utilis\u00e9s lorsque des variations angulaires importantes sont pr\u00e9sentes.<\/p>\n<h2>Maillages triangulaires et asym\u00e9triques<\/h2>\n<p>FIPY comprend des structures triangulaires telles que <code>Tri2D<\/code>. Les cellules triangulaires peuvent fournir une discr\u00e9tisation diff\u00e9rente d'une r\u00e9gion bidimensionnelle et peuvent \u00eatre utiles pour tester le comportement num\u00e9rique.<\/p>\n<p>Les grilles asym\u00e9triques s'\u00e9loignent intentionnellement des sommets d'un arrangement orthogonal. Ils peuvent d\u00e9montrer comment un solveur r\u00e9pond \u00e0 la g\u00e9om\u00e9trie non orthogonale.<\/p>\n<p>Une asym\u00e9trie forte peut r\u00e9duire la pr\u00e9cision du gradient et augmenter l'erreur num\u00e9rique. Un maillage avec de nombreuses cellules de mauvaise qualit\u00e9 peut fonctionner moins bien qu'une grille plus grossi\u00e8re mais bien form\u00e9e.<\/p>\n<p>La qualit\u00e9 du maillage doit donc \u00eatre \u00e9valu\u00e9e s\u00e9par\u00e9ment de la r\u00e9solution du maillage. L'ajout de cellules plus d\u00e9form\u00e9es n'am\u00e9liore pas n\u00e9cessairement la solution.<\/p>\n<h2>Mod\u00e9lisation de la g\u00e9om\u00e9trie complexe avec GMSH<\/h2>\n<p>Les grilles r\u00e9guli\u00e8res sont limit\u00e9es lorsque le domaine contient des courbes, des trous, des limites irr\u00e9guli\u00e8res ou des caract\u00e9ristiques tridimensionnelles d\u00e9taill\u00e9es. Fipy peut utiliser GMSH pour g\u00e9n\u00e9rer ou importer des maillages plus complexes.<\/p>\n<p>Un maillage bidimensionnel de base peut \u00eatre cr\u00e9\u00e9 \u00e0 partir des commandes GMSH :<\/p>\n<pre><code>from fipy import Gmsh2D\n\nmesh = Gmsh2D(\"\"\"\n    cellSize = 0.05;\n\n    Point(1) = {0, 0, 0, cellSize};\n    Point(2) = {1, 0, 0, cellSize};\n    Point(3) = {1, 1, 0, cellSize};\n    Point(4) = {0, 1, 0, cellSize};\n\n    Line(1) = {1, 2};\n    Line(2) = {2, 3};\n    Line(3) = {3, 4};\n    Line(4) = {4, 1};\n\n    Curve Loop(1) = {1, 2, 3, 4};\n    Plane Surface(1) = {1};\n\"\"\")<\/code><\/pre>\n<p>GMSH peut \u00e9galement charger la g\u00e9om\u00e9trie \u00e0 partir d'un fichier <code>.geo<\/code> ou importer un fichier <code>.msh<\/code> g\u00e9n\u00e9r\u00e9. Conserver une g\u00e9om\u00e9trie complexe dans un fichier s\u00e9par\u00e9 rend souvent le mod\u00e8le Python plus facile \u00e0 entretenir.<\/p>\n<h2>Raffinement local<\/h2>\n<p>Les probl\u00e8mes complexes ne n\u00e9cessitent souvent que de petites cellules dans certaines zones. Le raffinement local peut am\u00e9liorer la r\u00e9solution \u00e0 proximit\u00e9 des interfaces, des coins, des limites, des sources, des canaux \u00e9troits ou des gradients abrupts.<\/p>\n<p>GMSH fournit des contr\u00f4les flexibles pour d\u00e9finir la taille des \u00e9l\u00e9ments locaux. Une r\u00e9gion fine peut \u00eatre plac\u00e9e autour d'une caract\u00e9ristique importante tandis que le reste du domaine utilise des cellules plus grandes.<\/p>\n<p>Cette approche est g\u00e9n\u00e9ralement plus efficace que le raffinage de l'ensemble du r\u00e9seau. Cependant, les transitions entre les r\u00e9gions fines et grossi\u00e8res doivent \u00eatre progressives. Des changements de taille soudains peuvent r\u00e9duire la qualit\u00e9 num\u00e9rique ou cr\u00e9er des cellules mal form\u00e9es.<\/p>\n<h2>Test de convergence de maillage<\/h2>\n<p>Un r\u00e9sultat de simulation ne doit pas d\u00e9pendre fortement d'une taille de maillage arbitraire. Les tests de convergence de maillage v\u00e9rifient si la solution devient stable \u00e0 mesure que la grille est raffin\u00e9e.<\/p>\n<p>Un test pratique utilise au moins deux ou trois r\u00e9solutions. L'utilisateur compare une quantit\u00e9 importante, telle que la temp\u00e9rature maximale, la concentration moyenne, la position de l'interface ou le flux total.<\/p>\n<p>Si le r\u00e9sultat change consid\u00e9rablement apr\u00e8s le raffinement, le maillage d'origine \u00e9tait probablement trop grossier. Si la diff\u00e9rence devient faible, un raffinement suppl\u00e9mentaire peut ne pas justifier son co\u00fbt de calcul.<\/p>\n<p>La convergence doit \u00eatre test\u00e9e pour le r\u00e9sultat qui compte pour l'\u00e9tude. Un maillage peut pr\u00e9dire avec pr\u00e9cision une valeur moyenne tout en ne parvenant pas \u00e0 capturer un maximum local.<\/p>\n<h2>Maillages dans des simulations parall\u00e8les<\/h2>\n<p>Les simulations de grande taille FIPY peuvent r\u00e9partir un maillage sur plusieurs processus. Chaque processus fonctionne avec une partie du domaine et \u00e9change des informations avec des parties voisines.<\/p>\n<p>Les maillages parall\u00e8les peuvent contenir des cellules locales, des cellules de chevauchement et des valeurs globalement identifi\u00e9es. La taille d'un tableau NumPy local peut donc diff\u00e9rer du nombre total de cellules dans le maillage complet.<\/p>\n<p>Les utilisateurs doivent \u00eatre prudents lorsqu'ils indexent directement les tableaux ou exportent des valeurs lors de l'ex\u00e9cution parall\u00e8le. Le code qui suppose que chaque processus poss\u00e8de le maillage complet peut fonctionner en mode s\u00e9rie mais \u00e9chouer en mode parall\u00e8le.<\/p>\n<p>L'ex\u00e9cution parall\u00e8le peut r\u00e9duire le temps d'ex\u00e9cution pour de gros probl\u00e8mes, mais la surcharge de communication peut limiter les avantages pour les petits maillages.<\/p>\n<h2>Inspection et visualisation d'un maillage<\/h2>\n<p>Un maillage doit \u00eatre inspect\u00e9 avant de r\u00e9soudre une \u00e9quation complexe. Les utilisateurs peuvent v\u00e9rifier le nombre de cellules, les plages de coordonn\u00e9es, les volumes, les masques ext\u00e9rieurs et les s\u00e9lections de limites.<\/p>\n<p>Les visionneuses FIPY peuvent afficher une variable sur le maillage&nbsp;:<\/p>\n<pre><code>from fipy import Viewer\n\nviewer = Viewer(vars=temperature)\nviewer.plot()<\/code><\/pre>\n<p>La visualisation peut r\u00e9v\u00e9ler des dimensions de domaine incorrectes, un espacement cellulaire inattendu, des r\u00e9gions manquantes ou des masques de limite mal s\u00e9lectionn\u00e9s.<\/p>\n<p>Pour la g\u00e9om\u00e9trie bas\u00e9e sur GMSH, il est utile d'inspecter le maillage g\u00e9n\u00e9r\u00e9 dans un outil de visualisation d\u00e9di\u00e9 avant de commencer une longue simulation.<\/p>\n<h2>Erreurs courantes pour d\u00e9butants<\/h2>\n<p>Une erreur courante consiste \u00e0 confondre le nombre de cellules avec la taille physique. Une grille de 100 cellules n'a pas une longueur de 100 \u00e0 moins que chaque cellule ne soit d'une unit\u00e9 de largeur.<\/p>\n<p>Une autre erreur consiste \u00e0 appliquer une contrainte de limite avec un masque cellulaire au lieu d'un masque facial. Les conditions aux limites agissent g\u00e9n\u00e9ralement sur les faces ext\u00e9rieures.<\/p>\n<p>Les utilisateurs peuvent \u00e9galement choisir une grille trop grossi\u00e8re pour capturer un gradient ou inutilement bien pour un probl\u00e8me simple.<\/p>\n<p>D'autres probl\u00e8mes courants incluent des hypoth\u00e8ses de coordonn\u00e9es incorrectes, un espacement non uniforme brutal, une mauvaise qualit\u00e9 des \u00e9l\u00e9ments GMSH, des conditions p\u00e9riodiques contradictoires et des tests de convergence de saut.<\/p>\n<h2>Choisir le bon maillage Fipy<\/h2>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>Type de maillage<\/th>\n<th>Meilleure utilisation<\/th>\n<th>Principale limitation<\/th>\n<\/tr>\n<tr>\n<td><code>Grid1D<\/code><\/td>\n<td>Transport en couches et unidirectionnel<\/td>\n<td>ne peut pas repr\u00e9senter la variation lat\u00e9rale<\/td>\n<\/tr>\n<tr>\n<td><code>Grid2D<\/code><\/td>\n<td>Domaines planaires rectangulaires<\/td>\n<td>Limit\u00e9 aux limites simples<\/td>\n<\/tr>\n<tr>\n<td><code>Grid3D<\/code><\/td>\n<td>Mod\u00e8les volum\u00e9triques complets<\/td>\n<td>Co\u00fbt de calcul \u00e9lev\u00e9<\/td>\n<\/tr>\n<tr>\n<td>Grille non uniforme<\/td>\n<td>D\u00e9grad\u00e9s et interfaces localis\u00e9s<\/td>\n<td>N\u00e9cessite des transitions d'espacement prudentes<\/td>\n<\/tr>\n<tr>\n<td>Grille p\u00e9riodique<\/td>\n<td>Structures et cellules unitaires r\u00e9p\u00e9t\u00e9es<\/td>\n<td>Les fronti\u00e8res oppos\u00e9es sont li\u00e9es<\/td>\n<\/tr>\n<tr>\n<td>Grille cylindrique ou sph\u00e9rique<\/td>\n<td>Syst\u00e8mes radialement sym\u00e9triques<\/td>\n<td>Invalide lorsque la variation angulaire est importante<\/td>\n<\/tr>\n<tr>\n<td>Maille GMSH<\/td>\n<td>G\u00e9om\u00e9trie courbe et irr\u00e9guli\u00e8re<\/td>\n<td>G\u00e9n\u00e9ration et contr\u00f4le de la qualit\u00e9 plus complexes<\/td>\n<\/tr>\n<\/tbody><\/table>\n<h2>Un workflow de s\u00e9lection de maillage pratique<\/h2>\n<p>Commencez par identifier la forme physique du domaine et les dimensions dans lesquelles la solution peut varier. V\u00e9rifiez si la sym\u00e9trie peut r\u00e9duire un probl\u00e8me 3D en 2D ou 1D.<\/p>\n<p>Choisissez la classe de maillage la plus simple et la plus simple. Estimez o\u00f9 des gradients ou des interfaces forts peuvent appara\u00eetre et ajuster la taille des cellules en cons\u00e9quence.<\/p>\n<p>Inspectez les centres de cellules, les dimensions du domaine, les volumes et les masques de limite. Visualisez le maillage et appliquez une simple variable de test avant de r\u00e9soudre l'\u00e9quation compl\u00e8te.<\/p>\n<p>Ex\u00e9cutez la simulation sur plusieurs r\u00e9solutions et comparez les principaux r\u00e9sultats. D\u00e9placez-vous vers GMSH, le raffinement local ou le traitement parall\u00e8le uniquement lorsque la grille de base ne peut pas r\u00e9pondre aux exigences g\u00e9om\u00e9triques ou num\u00e9riques.<\/p>\n<h2>Conclusion<\/h2>\n<p>Les maillages FIPY d\u00e9finissent la g\u00e9om\u00e9trie, la connectivit\u00e9, les volumes de cellules, les faces et les coordonn\u00e9es utilis\u00e9es par la m\u00e9thode du volume fini. Ils fournissent la structure sur laquelle fonctionnent les variables, les \u00e9quations, les flux et les conditions aux limites.<\/p>\n<p>Les classes r\u00e9guli\u00e8res telles que <code>Grid1D<\/code>, <code>Grid2D<\/code> et <code>Grid3D<\/code> couvrent de nombreux probl\u00e8mes courants. Les maillages non uniformes, p\u00e9riodiques, cylindriques, sph\u00e9riques, triangulaires et GMSH prennent en charge des domaines plus sp\u00e9cialis\u00e9s.<\/p>\n<p>Le maillage le plus d\u00e9taill\u00e9 n'est pas automatiquement le meilleur. Un bon maillage capture le comportement physique requis tout en gardant un co\u00fbt de calcul g\u00e9rable. Des masques de limite corrects, une qualit\u00e9 cellulaire raisonnable, des syst\u00e8mes de coordonn\u00e9es appropri\u00e9s et des tests de convergence sont tous essentiels.<\/p>\n<p>En choisissant la grille la plus simple et en affinant uniquement le cas \u00e9ch\u00e9ant, les utilisateurs de FIPY peuvent cr\u00e9er des simulations plus faciles \u00e0 comprendre, plus rapides \u00e0 r\u00e9soudre et plus fiables.<\/p>\n<\/article>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 12<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>FIPY est un cadre bas\u00e9 sur Python pour r\u00e9soudre des \u00e9quations aux d\u00e9riv\u00e9es partielles avec la m\u00e9thode du volume fini. Il est couramment utilis\u00e9 pour la diffusion, le transfert de chaleur, la mod\u00e9lisation en champ de phase, l&rsquo;\u00e9lectrochimie, le transport li\u00e9 aux fluides et d&rsquo;autres probl\u00e8mes qui peuvent \u00eatre exprim\u00e9s \u00e0 travers des \u00e9quations de [&hellip;]<\/p>\n","protected":false,"raw":""},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"fr_FR","_original_post":"https:\/\/matforge.org\/?p=471","iawp_total_views":1,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1263","post","type-post","status-publish","format-standard","hentry","category-fipy-documentation-examples-development","fr-FR"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Comment Fipy g\u00e8re les maillages et les structures de grille<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez comment Fipy cr\u00e9e, g\u00e8re et affine les maillages structur\u00e9s, non uniformes, p\u00e9riodiques, cylindriques et GMSH pour la mod\u00e9lisation PDE.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment Fipy g\u00e8re les maillages et les structures de grille\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez comment Fipy cr\u00e9e, g\u00e8re et affine les maillages structur\u00e9s, non uniformes, p\u00e9riodiques, cylindriques et GMSH pour la mod\u00e9lisation PDE.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:31:38+00:00\" \/>\n<meta name=\"author\" content=\"Tomas Delgado\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tomas Delgado\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/\"},\"author\":{\"name\":\"Tomas Delgado\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"headline\":\"Comment Fipy g\u00e8re les maillages et les structures de grille\",\"datePublished\":\"2026-08-21T14:31:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/\"},\"wordCount\":3776,\"commentCount\":0,\"articleSection\":[\"FIPY : documentation, exemples &amp; D\u00e9veloppement\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/\",\"name\":\"Comment Fipy g\u00e8re les maillages et les structures de grille\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-21T14:31:38+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"description\":\"D\u00e9couvrez comment Fipy cr\u00e9e, g\u00e8re et affine les maillages structur\u00e9s, non uniformes, p\u00e9riodiques, cylindriques et GMSH pour la mod\u00e9lisation PDE.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/how-fipy-handles-meshes-and-grid-structures\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comment Fipy g\u00e8re les maillages et les structures de grille\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\",\"name\":\"Tomas Delgado\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"caption\":\"Tomas Delgado\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/tomas-delgado\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comment Fipy g\u00e8re les maillages et les structures de grille","description":"D\u00e9couvrez comment Fipy cr\u00e9e, g\u00e8re et affine les maillages structur\u00e9s, non uniformes, p\u00e9riodiques, cylindriques et GMSH pour la mod\u00e9lisation PDE.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment Fipy g\u00e8re les maillages et les structures de grille","og_description":"D\u00e9couvrez comment Fipy cr\u00e9e, g\u00e8re et affine les maillages structur\u00e9s, non uniformes, p\u00e9riodiques, cylindriques et GMSH pour la mod\u00e9lisation PDE.","og_url":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/","og_site_name":"matforge.org","article_published_time":"2026-08-21T14:31:38+00:00","author":"Tomas Delgado","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Tomas Delgado","Dur\u00e9e de lecture estim\u00e9e":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/"},"author":{"name":"Tomas Delgado","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"headline":"Comment Fipy g\u00e8re les maillages et les structures de grille","datePublished":"2026-08-21T14:31:38+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/"},"wordCount":3776,"commentCount":0,"articleSection":["FIPY : documentation, exemples &amp; D\u00e9veloppement"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/","url":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/","name":"Comment Fipy g\u00e8re les maillages et les structures de grille","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-21T14:31:38+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"description":"D\u00e9couvrez comment Fipy cr\u00e9e, g\u00e8re et affine les maillages structur\u00e9s, non uniformes, p\u00e9riodiques, cylindriques et GMSH pour la mod\u00e9lisation PDE.","breadcrumb":{"@id":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/fr\/how-fipy-handles-meshes-and-grid-structures\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/"},{"@type":"ListItem","position":2,"name":"Comment Fipy g\u00e8re les maillages et les structures de grille"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061","name":"Tomas Delgado","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","caption":"Tomas Delgado"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/tomas-delgado\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1263"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1263\/revisions"}],"predecessor-version":[{"id":1427,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1263\/revisions\/1427"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}