Partie 1: Editer et réparer des maillages surfaciques dans COMSOL Multiphysics®

27 mai 2026

Dans certains cas de figure, modifier des maillages importés peut être utile, par exemple lorsque vous devez déplacer ou mettre en rotation le maillage, lorsqu’il contient des trous ou des intersections avec lui-même, ou encore lorsque vous voulez l’intersecter avec un plan. Dans cet article de blog, je vais montrer les fonctionnalités disponibles dans le logiciel COMSOL Multiphysics® permettant d’éditer et de réparer les maillages surfaciques. Je présenterai diverses opérations et méthodes de travail pour gérer les maillages importés, et renverrai vers des tutoriels disponibles et d’autres ressources pertinentes pour en savoir plus. Cet article est le premier d’une série de deux; le second article décrit la procédure pour combiner un maillage STL importé avec un assemblage CAO importé.

Sommaire

  1. Formats pour l’import de maillages surfaciques
  2. Réparer et éditer des maillages surfaciques importés
  3. Démonstration avec un maillage de crâne:
    1. Déplacer et faire pivoter des maillages importés
    2. Réparer des trous et pallier des problèmes d’éléments intersectés
    3. Réaliser une coupe du maillage
    4. Retirer des éléments de maillage
    5. Remailler des faces pour contrôler la taille des éléments
    6. Fusionner des maillages, unir des maillages et créer des domaines de calcul
    7. Joindre des domaines et créer des sélections
  4. Conclusion

Formats pour l’import de maillages surfaciques

Les maillages surfaciques 3D sur lesquels je vais me concentrer dans cet article de blog proviennent souvent de techniques d’imagerie 3D. Dans une application médicale par exemple, un maillage surfacique 3D peut être utilisé pour décrire la géométrie d’un organe interne, voire même du corps entier. Des formats standard de fichiers tels que STL, 3MF et PLY sont pris en charge pour l’import dans COMSOL Multiphysics®. Le format STL est certainement le plus largement reconnu étant donné qu’il est également utilisé pour l’impression 3D, je l’utiliserai donc dans cet article. Notez cependant que les méthodes d’édition de maillage que je vais présenter dans cet article fonctionnent quel que soit le fichier de maillage importé dans une séquence de Géométrie basée sur le maillage, du moment qu’il est enregistré sous un format pris en charge.

Les fichiers STL ne contiennent aucune information concernant les frontières ou les domaines. Ceux-ci devront donc être créés soit durant l’import, ce qui est fait automatiquement, soit manuellement une fois le maillage importé. Les frontières sont toujours créées au cours de l’import. Cependant, pour ce qui est des domaines — c’est à dire les régions volumiques auxquelles vous pouvez assigner des matériaux et que vous pouvez remplir avec un maillage volumique — ils ne peuvent pas être créés durant l’import si le maillage importé contient des éléments qui s’intersectent du fait de zones se chevauchant (dont vous allez voir un exemple rapidement). La plupart des interfaces physiques du logiciel requièrent des domaines, il est donc important de les créer. Pour les maillages contenant des zones se chevauchant, vous devez d’abord résoudre les intersections afin que des arêtes séparent chacune d’entre elles. Ensuite, vous pourrez créer les domaines. Mailler volumiquement les domaines peut se faire une fois que le maillage de la zone de calcul est généré, ce que je montrerai dans la Partie 2 de cette série.

Note: Pour des designs créés dans des logiciels de CAO, il est recommandé de les exporter dans l’un des formats importables avec le module CAD Import.

Réparer et éditer des maillages surfaciques importés

Outre les défis soulevés par l’utilisation du format STL, une problématique qui se présente généralement lors de l’import d’un maillage surfacique concerne la qualité du maillage triangulaire, souvent trop faible pour être directement utilisée dans une simulation par éléments finis. Du point de vue de la simulation, le maillage est de faible qualité s’il contient:

  • des trous ou des frontières avec des auto-intersections qui empêchent la création de domaines,
  • de fines pointes ou d’autres irrégularités de forme non désirées,
  • des triangles présentant des angles très aigus ou très obtus,
  • des triangles dont les tailles varient fortement.

COMSOL Multiphysics® prend en charge un éventail d’opérations pour faire face à ces défis, et pour réaliser d’autres opérations d’édition du maillage. Vous pouvez utiliser ces capacités pour:

  • déplacer, mettre à l’échelle, faire pivoter le maillage importé,
  • modifier la tolérance de réparation lors de l’import,
  • remplir de petits ou gros trous dans le maillage,
  • retirer certains éléments du maillage, les remplacer avec de nouveaux maillages de surface,
  • combiner et fusionner des maillages,
  • combiner des maillages importés avec des CAO paramétrées (ou une géométrie dessinée dans COMSOL Multiphysics®) pour lancer des analyses paramétriques,
  • intersecter plusieurs maillages importés entre eux ou à l’aide d’un plan,
  • remailler les surfaces pour contrôler la taille des éléments et leur forme,
  • utiliser une représentation courbe de la surface de frontières non planes.

Quatre images de maillage: une d'un crâne humain entier, et trois de la mâchoire et de deux molaires seulement. Modification du maillage surfacique d’un crâne.

Dans cet article de blog, je vais m’appuyer sur le maillage d’un crâne humain pour montrer les différentes méthodes de travail liées à plusieurs de ces actions.

Démonstration avec un maillage de crâne

Le maillage utilisé pour les démonstrations qui suivent provient du site web du NIH. (Réf. 1) Ici, j’ai importé le maillage dans une séquence de Géométrie basée sur le maillage, une séquence qui définit le modèle géométrique avec les domaines et frontières nécessaires pour implémenter et résoudre n’importe quelle physique. Une alternative consiste à réaliser l’import, la réparation et l’édition dans la séquence d’une Pièce de maillage, comme cela est illustré dans la Partie 2 de cette série d’articles de blogs et dans la STL Import Tutorial Series. Transférer certaines parties du travail vers une ou plusieurs pièces de maillage est une bonne chose pour s’organiser mais aussi pour réutiliser le même maillage dans plusieurs séquences ou pour utiliser les pièces de maillage comme géométrie de construction (également illustré dans la Partie 2).

Pour cet exemple d’application, je vais avoir besoin de faire pivoter et de déplacer le maillage pour le mettre en position, de retirer certains éléments qui ne sont pas nécessaires, et de vérifier les intersections entre les maillages de l’os et des dents. J’aborderai également d’autres opérations et procédés qui pourront être utiles dans d’autres cas. Pour améliorer la visualisation, les surfaces du maillage sont colorées comme dans l’image ci-dessus, sauf mention contraire. Dans le modèle exemple qui peut être téléchargé à la fin de cet article, les frontières restent grises jusqu’à ce que les sélections colorées soient créées à la fin.

Déplacer et faire pivoter des maillages importés

Beaucoup de techniques d’imagerie 3D sont acquises sur des corps d’humains en position allongée. Il peut donc être nécessaire de faire pivoter le maillage importé, pour, par exemple, remettre un modèle de corps en position verticale. Le déplacement et la rotation d’un maillage importé se font en ajoutant un ou plusieurs attributs Transformation au noeud Importer. La rotation autour de plusieurs axes nécessite d’utiliser plusieurs attributs Transformation.

Pour cet exemple, j’ai mis en place une rotation en alignant tout d’abord l’axe z à l’axe spécifié par le réglage Type d’axe; ensuite, le maillage a été tourné de 83 degrés autour de l’axe x, et j’ai ajouté un déplacement pour positionner le maillage à l’origine du repère.

L’orientation du maillage dans le fichier (à gauche). En réglant le Type d’axe sur l’axe x, le maillage est mis en rotation pour aligner l’axe z avec l’axe x (au centre). Enfin, la rotation d’un angle de 83 degrés autour de l’axe x est appliquée (à droite).

Notez qu’il est recommandé d’ajouter les éventuels attributs Transformation avant de réaliser toute autre réparation ou édition, étant donné que réimporter le maillage avec de nouveaux réglages de Transformation résultera en une perte des sélections d’entrée dans les fonctionnalités figurant dans la suite de la séquence.

Réparer des trous et pallier des problèmes d’éléments intersectés

Au cours de l’import ou durant la construction d’autres opérations, des noeuds Information peuvent apparaître pour notifier la présence de trous dans le maillage et vous fournir une sélection d’arêtes sur lesquelles vous pouvez zoomer.

Pour réparer des trous considérés comme petits par rapport à la taille globale du maillage (généralement la taille d’un ou de quelques éléments de maillage), il suffit le plus souvent d’augmenter la Tolérance de réparation de l’import, étant donné que celle-ci peut faire disparaître des éléments ou créer un défaut d’alignement des coordonnées des points. Pour des trous plus gros, vous pouvez tester la fonctionnalité Remplir les trous. Si cela remplit l’ensemble des trous et que les surfaces forment une zone étanche, l’opération Remplir les trous créera également les domaines au sein des régions.

Pour des problèmes d’éléments intersectés, comme ci-dessous à droite, isolez la zone problématique, supprimez les éléments, puis remplissez le trou. Pour plus de détails à propos de cette procédure, référez-vous à la section Retirer des éléments de maillage de cet article de blog.

Le maillage de crâne auquel nous nous intéressons ne nécessite aucune réparation de ce type, mais la STL Import Tutorial Series propose plusieurs exemples de petits trous et d’éléments intersectés, comme on peut le voir sur les images suivantes. Téléchargez les fichiers du modèle pour apprendre comment les traiter.

Un trou ayant une aire nulle (c’est à dire une fente) est entouré d’arêtes mises en évidence en bleu (à gauche). Un trou dans le maillage lié à un décalage dans les coordonnées des points (au centre). Des éléments en intersection dans un maillage importé (à droite).

Réaliser une coupe du maillage

Qu’en est-il si vous souhaitez utiliser une partie seulement du maillage importé pour réaliser la simulation? Par exemple, avec le maillage de crâne, mon objectif était de créer un modèle d’implant dentaire, je n’avais donc pas besoin du maillage du crâne complet. En considérant que certaines parties du maillage ne sont pas nécessaires pour la simulation, vous pouvez retirer les zones du maillage qui ne vous intéressent pas. Le maillage de crâne a été importé avec plusieurs maillages de surface, ce qui a permis d’extraire les surfaces de la mâchoire et des dents en utilisant une opération Supprimer les entités, visible dans l’image suivante.

Le maillage de surface d'un modèle de crâne est montré en bleu, avec le maillage de surface de la partie droite de la mâchoire supérieure et deux dents montrées en jaune pâle. J’ai utilisé une opération Supprimer les entités pour supprimer les parties du maillage qui ne m’intéressaient pas; j’ai conservé uniquement la mâchoire supérieure et deux dents (mises en évidence en jaune pâle).

J’ai ensuite utilisé l’opération Intersection avec un plan pour découper l’os de la mâchoire supérieure en morceaux plus petits et pour retirer les parties qui ne sont pas nécessaires pour la simulation. Vous pouvez spécifier des plans en utilisant des plans de coordonnées, des points, des coordonnées, le vecteur normal et plus encore. Une fois que le plan a été spécifié, un ou plusieurs plans parallèles peuvent être ajoutés, comme vous pouvez le voir dans les images ci-dessous. L’opération Intersection avec un plan est utilisée pour créer des sélections de ce qui est au-dessus ou en dessous du plan. Vous pouvez utiliser ces sélections pour sélectionner facilement ce qui doit être supprimé.

Dans le sens horaire à partir de l’image en haut à gauche: j’ai utilisé plusieurs opérations Intersection avec un plan pour découper la mâchoire supérieure en plusieurs parties, en supprimant ce qui était situé au-dessus et/ou en dessous des plans au fur et à mesure.

Retirer des éléments de maillage

Pour le maillage du crâne, je voulais créer des domaines à l’intérieur de l’os et des dents de façon à leur affecter des matériaux lorsque j’ajouterai des interfaces physiques au modèle, et pour ce faire je devais résoudre l’intersection entre les surfaces de l’os et des dents, avec une opération d’Union. Comme vous pouvez le voir sur l’image suivante, l’intersection entre les surfaces est assez complexe, avec de petits chevauchements et écarts entre les maillages. Je devais aussi résoudre l’intersection pour retirer les empreintes des dents manquantes car je voulais simuler le fait que l’implant dentaire (à ajouter au maillage dans la Partie 2) soit totalement cicatrisé dans l’os. Il est plus facile d’unir des maillages pour lesquels l’intersection est assez proche de 90 degrés comparé à des intersection avec de petits angles, comme c’était le cas pour le maillage de crâne. Par conséquent, j’ai retiré une bonne portion de la surface de l’os et je l’ai remplacée avec une nouvelle surface maillée plus plane.

Vue intérieure du maillage d'une mâchoire humaine et de deux molaires, montrant les éléments de la mâchoire en jaune pâle et les éléments des dents en blanc. Utilisation d’un Plan de clipping pour voir à l’intérieur du maillage. La surface de l’os (jaune pâle) contient des renfoncements qui intersectent les dents (en blanc) et le futur implant dentaire.

Le processus de travail permettant de retirer des éléments consiste généralement à isoler une irrégularité, la supprimer, créer une nouvelle surface et la joindre à une frontière adjacente. Certains maillages STL contiennent de nombreuses zones problématiques; isoler la surface peut alors être fait automatiquement en utilisant l’add-in Partition de maillage par boule, disponible via l’onglet Développeur dans le logiciel. Les opérations de partition peuvent rapidement partitionner un maillage mais elles sont restreintes à des formes spécifiques ou à des expressions logiques par leur réglages respectifs. D’un autre côté, l’opération Créer les arêtes est plus flexible, étant donné que vous sélectionnez chaque arête de maillage manuellement. Pour des raisons pratiques, l’opération Créer les arêtes est généralement utilisée uniquement lorsque l’on isole un faible nombre d’éléments de maillage.

Je vais montrer ici un procédé qui utilise les deux types d’opérations et qui démarre par le chargement de l’add-in Partition de maillage par boule. Pour charger cet add-in dans un modèle, cliquez sur le bouton Bibliothèques d’add-ins dans l’onglet Développeur. Dans la liste des add-ins, cochez la case de l’add-in Partition de maillage par boule, et cliquez sur Terminé. Ensuite, cliquez sur le bouton Add-ins de l’onglet Développeur et sélectionnez Partition de maillage par boule.

Une fois que l’add-in est chargé dans le modèle, faites un clic avec la molette de la souris pour positionner le centre de rotation, qui définira le centre de la boule. Cliquez sur le bouton Créer dans la fenêtre de Réglages de l’add-in pour ajouter une opération Partition par balle à la séquence avec le centre et le rayon renseignés par l’add-in. Les réglages peuvent être modifiés si nécessaire. Dans l’exemple, j’ai opté pour une partition de la plus grande frontière de l’os (colorée en bleu dans l’image à gauche ci-dessous), étant donné que c’était la seule frontière à contenir des éléments que je voulais remplacer. Pour d’autres exemples d’utilisation de cet add-in, vous pouvez consulter le tutoriel Spray Particle Deposition in Human Airways.

Vue de dessous du maillage avec les dents cachées pour plus de visibilité. Dans la fenêtre Graphique, un clic sur la molette de la souris permet de régler le centre de la boule. Le rayon de la boule (rose pâle) est défini automatiquement par l’add-in. Les dents sont cachées pour plus de visibilité (à gauche). Maillage résultant de l’opération Partition par balle qui a été ajoutée à la séquence pour isoler la zone fermée par la sphère (à droite).

Pour le reste des renfoncements, j’ai utilisé l’opération Créer les arêtes, étant donné que la paroi osseuse autour des renfoncements centraux était plutôt mince et que cliquer sur les arêtes manuellement donne plus de contrôle sur les éléments à isoler. Avec l’opération Créer les arêtes, vous cliquez sur les arêtes du maillage dans la fenêtre Graphique pour créer les arêtes géométriques qui vont isoler une surface. Ces arêtes sont sélectionnées pour être jointes aux arêtes créées par l’add-in (les arêtes noires plus épaisses dans l’image suivante, à gauche). L’utilisation de l’opération Créer les arêtes est également montrée dans la STL Import Tutorial Series.

Cliquer sur les arêtes du maillage (mises en évidence en bleu) dans la fenêtre Graphique pour former les arêtes délimitant la surface contenant le reste des renfoncements (à gauche). Vue de côté du maillage à l’aide d’un Plan de clipping: les surfaces mises en évidence (en bleu) sont sélectionnées pour être supprimées et remplacées (à droite).

Une fois que les renfoncements ont été isolés, j’ai supprimé les surfaces et créé de nouvelles surfaces maillées avec l’opération Créer les faces, comme montré dans les images suivantes. La surface générée est une surface minimale, ce qui signifie qu’elle tente d’être la plus plane possible avec un maillage grossier. Si le trou avait été petit par rapport à la boîte englobante du maillage, j’aurais pu à la place utiliser l’opération Remplir les trous.

Les arêtes mises en évidence (en bleu) sont utilisées comme entrée pour l’opération Créer les faces (à gauche). En gris, la nouvelle frontière maillée (à droite).

Enfin, j’ai utilisé l’opération Joindre les entités pour joindre les frontières plus grandes de l’os avec la frontière nouvellement créée.

Remailler des faces pour contrôler la taille des éléments

Pour aider l’opération Union à résoudre les intersections entre les maillages des dents et de l’os, l’idéal est d’avoir des éléments de maillage de taille homogène, ainsi que des éléments de bonne qualité sur les surfaces d’intersection. L’opération Remailler les faces peut être utilisée pour atteindre ces objectifs. Pour avoir plus de contrôle sur les paramétrages de taille d’éléments, on peut modifier la taille des éléments dans le sous-noeud Taille. Pour obtenir une taille similaire sur l’ensemble des surfaces, quelle que soit la courbure et pour n’importe quelle région mince, on peut régler la Taille d’élément minimale et la Taille d’élément maximale à des valeurs proches, voire égales. Notez que le maillage généré en utilisant l’opération Remailler les faces est là uniquement pour aider l’opération Union et pour obtenir une représentation plus lisse des surfaces. L’opération Remailler les faces accomplit cela en positionnant de nouveaux noeuds sur une représentation courbe de la surface issue du maillage linéaire. Le maillage de calcul est généré plus tard dans une séquence de Maillage.

Une vue rapprochée de dessous du maillage d'une mâchoire supérieure humaine en jaune pâle et deux molaires en blanc. Remailler la dent et la surface de jonction de l’os les prépare pour l’opération d’Union.

Les opérations Remailler les faces et Remailler les arêtes peuvent également être utilisées pour contrôler la forme des surfaces et des arêtes. Pour voir un exemple dans lequel l’opération Remailler les faces est utilisée, vous pouvez consulter l’article de blog Generating a Simulation Mesh of a Femur From 3D Data.

Fusionner des maillages, unir des maillages et créer des domaines de calcul

Pour revenir à l’exemple de l’implant dentaire, j’ai utilisé l’opération Union pour résoudre l’intersection entre les maillages superposés des dents et de l’os. L’opération Union résout l’intersection des arêtes, partitionne les faces et divise les éléments de maillage lorsque c’est nécessaire, comme vous pouvez le voir dans l’image suivante, à droite.

Si l’opération Union signale des problèmes liés à des éléments qui s’intersectent, à la conservation des domaines ou à des problèmes similaires, on peut tester une autre taille d’éléments de maillage dans l’opération Remailler les faces, essayer de réduire la tolérance Absolue de réparation de l’opération Union, et/ou basculer sur l’option Linéaire dans le réglage du Placement des sommets du maillage. Lorsque l’option de placement des sommets du maillage est réglée sur Courbe (comme montré dans l’image ci-dessous, au centre), de nouveaux points de maillage sont placés sur une représentation courbe du maillage de surface qui est issu du maillage linéaire. L’option Linéaire simplifie le problème, avec l’inconvénient d’avoir plus d’arêtes angulaires d’intersection.

Pour l’exemple, j’ai utilisé l’option de placement des sommets du maillage Linéaire pour l’opération Union, ce qui a créé des arêtes définissant les intersections au niveau desquelles le maillage doit se conformer (image à droite).

Le maillage avant la réalisation d’une opération d’Union: les triangles de la dent intersectent les triangles de l’os (à gauche). Lorsque le placement des sommets du maillage utilise l’option Courbe, l’arête d’intersection est plus lisse (au centre). Lorsque le placement des sommets du maillage utilise l’option Linéaire — celle pour laquelle j’ai opté dans l’exemple — l’arête d’intersection est plus angulaire (à droite).

Jusqu’ici, les domaines n’ont pas été créés au sein du maillage à cause des éléments en intersection entre les dents et l’os. Maintenant que les intersections du maillage ont été résolues, j’ai utilisé l’opération Créer les domaines pour créer les domaines de calcul au sein des régions fermées. Pour obtenir un visuel des domaines, vous pouvez cliquer n’importe où sur le maillage dans la fenêtre Graphique, sélectionner Clipping puis Plan de clipping. Ensuite, dans la barre d’outils Graphiques, cliquez sur Clipping actif et sélectionnez Afficher les sections .

Une autre façon de vérifier si les domaines ont été créés consiste à vérifier si la Liste de sélections renvoie des domaines. Après que l’opération Créer les domaines a été réalisée, la fenêtre Graphique devrait montrer les surfaces issues des sections des domaines (suivant l’image à droite), la Liste de sélections devrait être reseignée au niveau des domaines, et la section Information des réglages de l’opération Créer les domaines doit indiquer le nombre de domaines créés ainsi que le nombre total de domaines.

Avant de réaliser l’opération Créer les domaines, il n’y a aucun domaine dans le maillage — uniquement les frontières, arêtes et points (à gauche). Une fois l’opération Créer les domaines réalisée, les domaines sont visualisés avec les faces de section dans le Plan de clipping si l’option Afficher les sections a été activée (à droite).

Les maillages importés avec plusieurs noeuds Import sont traités comme le seraient plusieurs objets dans la séquence de Géométrie lorsque la méthode Constituer un assemblage est utilisée. Pour connecter les frontières en contact dans ce type de maillage, il est recommandé d’utiliser l’opération Fusionner les entités. Cette opération peut également être utilisée pour combler les espaces dans un maillage, comme cela est montré dans l’exemple suivant, tiré de la STL Import Tutorial Series. Téléchargez les fichiers du modèle pour en savoir plus.

Fusion de deux surfaces (en jaune) pour sceller un espacement entre une vertèbre et un disque (à gauche). Le maillage résultant, après que l’espace a été rempli (à droite).

Joindre des domaines et créer des sélections

Comme prévu, les domaines des dents dans l’exemple de maillage ont été partitionnés avec la surface de l’os (voir l’image suivante, à gauche). J’aurais pu conserver la partition de domaine telle quelle, mais j’ai préféré utiliser l’opération Joindre les entités pour joindre les domaines des dents en deux domaines (voir l’image suivante, à droite). Après cela, j’ai pu définir des sélections de domaines et de frontières à utiliser lors de la mise en place des matériaux et des physiques. Pour cet exemple, j’ai créé des sélections de domaines pour faciliter l’affectation des propriétés des matériaux.

Jonction des domaines des dents (à gauche). Maintenant que des couleurs ont été affectées aux domaines, la section montre également ces couleurs (à droite).

Une géométrie basée sur le maillage d'un morceau de mâchoire humaine (en jaune clair) et de deux dents (en gris). La géométrie basée sur le maillage finale.

Cette géométrie basée sur le maillage peut très bien être utilisée pour la simulation à cette étape; la seule chose dont on a besoin est de reconstruire le maillage de calcul dans le noeud Maillage 1.

Conclusion

COMSOL Multiphysics® propose de nombreuses fonctionnalités pour réparer et éditer des maillages importés. Dans cet article de blog, j’ai montré comment faire pivoter un maillage importé, retirer des éléments, fusionner des entités, unir des maillages, et créer des domaines de calcul. Si vous ne l’avez pas déjà fait, regardez le fichier du modèle de l’exemple montré dans cet article de blog. Notez que toutes les modifications faites pour ce maillage ne sont pas forcément nécessaires pour d’autres maillages. L’ordre dans lequel vous ajoutez les opérations peut également être différent, en fonction du maillage traité. J’ai préparé ce maillage pour, ensuite, ajouter un implant dentaire là où la dent est manquante. L’idée est de générer un maillage de calcul qui pourra être utilisé pour une simulation mécanique. La combinaison du maillage préparé dans cet article de blog avec la géométrie d’une CAO importée est un sujet traité dans la Partie 2 de cette série.

Pour aller plus loin

Si vous souhaitez en savoir plus sur l’utilisation de maillages importés, nous vous invitons à parcourir les ressources suivantes:

Référence

  1. kbrowne, “Skull and Eyes – Visible Human Male. Version 1.03,” NIH 3D, 12, Apr. 2026; https://3d.nih.gov/entries/3DPX-020591.

Commentaires (0)

Laisser un commentaire
Connexion | Inscription
Chargement ...
VISITEZ LE BLOG COMSOL