MAPDL signifie "mechanical Ansys parametric design language". C'est le langage de programmation utilisé par les logiciels de calcul par éléments finis d'Ansys.
Domaine d'étude.
Il existe deux interfaces Ansys : l'interface Classics et l'interface Workbench. Utiliser l'interface Classics implique de bien connaître le MAPDL ; or, l'objectif de ce chapitre est de donner quelques notions de MAPDL et quelques exemples pour lesquels le recours à la programmation est indispensable.
De fait, nous considérerons que l'utilisateur utilise Workbench.
Utiliser du MAPDL dans Workbench Simulation.
Les commandes s'insèrent dans une analyse. Dans l'arborescence, il faut donc avoir créé une analyse (étape qui suit le maillage).
On sélectionne l'analyse dans l'arborescence et l'on clique avec le bouton secondaire de la souris « bouton droit » ; dans le menu contextuel qui apparaît, on choisit l'option Insertion > Commandes. On peut aussi utiliser le bouton Insérer des commandes de la barre d'outils contextuelle.
On a ainsi accès à une fenêtre d'éditeur de texte permettant d'entrer les commandes.
Syntaxe générale.
La syntaxe générale d'une commande est :
commande, param1, param2, …
où codice_1 est le "i"-ème paramètre de la commande.
Les commentaires sont introduits par un point d'exclamation codice_2
Le langage MAPDL n'est pas sensible à la casse (minuscules/capitales).
On peut omettre les dernières lettres d'une commande à condition que cela n'induise pas d'ambiguïté.
Processeurs.
Un processeur est un programme chargé de traiter les données. Plusieurs processeurs sont utilisés lors d'une étude :
Par exemple, pour un problème de mécanique, le solveur calcule les déplacements aux nœuds, et le postprocesseur calcule les déformations et contraintes.
Cette notion de processeur est importante : certaines commandes ne s'exécutent que dans un processeur donné. Pour entrer dans un processeur, on utilise une commande commençant par une barre de fraction :
Structure des données.
Le modèle de calcul est formé d'une ou plusieurs pièces "(parts)", une pièce étant faite d'un ou plusieurs corps "(bodies)". Un corps est découpé en éléments finis, un élément fini comporte plusieurs nœuds, un nœud étant généralement commun à plusieurs éléments.
Un nœud est désigné par un numéro de référence "(node number)". Il est défini par ses coordonnées dans un repère.
Un repère est désigné par un numéro. Il existe cinq repères de base :
Les repères portant les numéros 11 et supérieurs sont des repères définis par l'utilisateur.
Par exemple, pour créer le nœud n° aux coordonnées (0, 0, ) du repère cartésien général (numéro de référence 0) :
CSYS, 0 ! le repère 0 devient le repère actif
N, 10150, 0, 0, 5000 ! création du nœud
Concernant les coordonnées, Ansys ne travaille pas avec des unités particulières, c'est à l'utilisateur de s'assurer de leur cohérence. On peut omettre le numéro de référence du nœud, auquel cas Ansys utilise le premier numéro libre (numéro de nœud maximum + 1), par exemple
N, , 0, 0, 5000 
Un élément fini est désigné par un numéro de référence. Il est défini par
Types d'éléments.
Le type d'élément regroupe des éléments finis ayant les mêmes propriétés d'un point de vue du calcul. Concernant les types créés automatiquement, il s'agit d'éléments faisant partie d'un même corps.
Un type est désigné par un numéro de référence. Il est défini par
La catégorie d'élément désigne la forme de l'élément, le nombre de nœuds et les degrés de liberté, ainsi que les constantes réelles. Chaque nom se compose d'un préfixe, indiquant la nature de l'élément, et d'un numéro. Les préfixes utilisés en mécanique sont :
Chaque numéro est unique ; par exemple, il existe un codice_14, mais aucun codice_15 ni codice_16. Ainsi, on peut abréger le nom par le numéro, par exemple écrire simplement codice_17.
Nous donnons ci-après quelques exemples.
La catégorie d'élément codice_18 est particulière : ce sont des éléments géométriques n'ayant aucune propriété physique (pas de masse volumique, pas de coefficient d'élasticité, pas de conductivité thermique, …). Ils servent à faire un maillage, et peuvent ensuite être convertis en autres types d'élément. Ainsi, un même maillage peut servir pour un calcul mécanique ou pour un calcul thermique.
Avec les éléments codice_18, l'option codice_20 détermine la forme de l'élément :
Pour problèmes plans.
On peut définir des éléments « dégénérés » en fusionnant des sommets (plusieurs nœud de l'élément ont le même numéro de nœuds), par exemple des éléments triangulaires codice_39 (il est déconseillé d'avoir un élément triangulaire linéaire).
Pour problèmes dans l'espace.
On peut définir des éléments « dégénérés » en fusionnant des sommets, par exemple :
Exemple de création d'un élément.
On veut modéliser une élingue en acier (matériau que nous supposons avoir le numéro 5) de section (dans le jeu de constantes réelles de n°173) entre les nœuds n° et . On crée pour cela un élément de type n°250, de catégorie codice_55. Cela se fait dans le préprocesseur.
/PREP7
ET, 250, LINK10 ! crée le type d'élément 250 de catégorie LINK10
KEYOPT, 250, 3, 0 ! keyopt(3) = 0 : traction seulement
R, 173, 679, 0 ! jeu de constantes réelles n° 173 = (679, 0)
! pour link10 : (aire, déformation init)
TYPE, 250 ! le type d'elt actif est le n°250
REAL, 173 ! le jeu de constantes réelles actif est le n°173
MAT, 5 ! le matériau actif est le n°5
E, 4513, 10150 ! crée l'élément
/SOLU
Matériaux.
Un matériau est désigné par son numéro de référence. Il est défini par ses propriétés physique : typiquement module de Young codice_96, masse volumique codice_97, module de Poisson codice_98 "(Poisson's ratio)", module de cisaillement codice_99. On peut définir des matériaux orthotropes ou anisotropes, des comportements non linéaires, des propriétés diverses (coefficients de dilatation, de conductivité thermique, de frottement, …).
Par exemple, pour créer le matériau n°5 et définir que c'est un acier au carbone (ferritique), on utilise la commande codice_100 dans le préprocesseur :
/PREP7
MP, EX, 5, 2.1e5 ! module de Young
MP, PRXY, 5, 0.3 ! module de Poisson
MP, GXY, 5, 8.08e4 ! module de cisaillement
MP, DENS, 5, 7.8e-6 ! masse volumique
/SOLU
Les valeurs sont des « scalaires purs », c'est à l'utilisateur de s'assurer de leur cohérence ; ici, nous avons supposé des forces en N et des longueurs en mm, donc des modules élastiques en MPa et une masse volumique en kg/mm3.
Obtenir des numéros de référence.
Chaque entité (nœud, élément, type d'élément, matériau, jeu de constantes réelles, …) est désigné par un numéro de référence. Il est donc utile de récupérer des numéros de référence et de les mettre dans des variables, afin de pouvoir automatiser certaines tâches. Cela se fait avec la commande codice_101. La syntaxe générale est :
où :
Le code suivant récupère les numéros d'entités les plus élevés utilisés par le modèle :
On peut ainsi reprendre l'exemple précédent, et créer des entité en étant sûr de ne pas « écraser » des entités existantes :
! Récupération des num max
! assignation des numéros
etnum = NumETMax + 1
maternum = NumMATMax + 1 ! matnum est un paramètre possible de *get
rcnum = NumRCMax + 1
nodenum = NumNODEMax + 1
! Création du nœud
CSYS, 0 ! le repère 0 devient le repère actif
N, nodenum, 0, 0, 5000 
! Création du matériau
MAT, maternum ! le matériau actif est le n°maternum
MP, EX, , 2.1e5 ! module de Young
MP, PRXY, , 0.3 ! module de Poisson
MP, GXY, , 8.08e4 ! module de cisaillement
MP, DENS, , 7.8e-6 ! masse volumique
! Création du type d'élément
ET, etnum, LINK10 ! crée le type d'élément etnum de catégorie LINK10
KEYOPT, etnum, 3, 0 ! keyopt(3) = 0 : traction seulement
R, rcnum, 679, 0 ! jeu de constantes réelles n° rcnum = (679, 0)
! pour link10 : (aire, déformation init)
TYPE, etnum ! le type d'elt actif est le n°etnum
REAL, rcnum ! le jeu de constantes réelles actif est le n°rcnum
E, 4513, nodenum ! crée l'élément
Préfixes.
Certaines commandes on des effets similaires mais s'appliquent à des types d'entité donné : nœuds, éléments. Le nom des commandes est alors identique excepté le préfixe :
Sélectionner des entités.
certaines commandes ne s'applique qu'à certaines entités : certains nœuds, certaines, mailles par exemple. Les commandes de sélection permettent de sélectionner les entités sur lesquelles on va travailler.
Les commandes de sélection sont de la forme codice_122, le préfixe indique le type d'entité.
Le premier paramètre est un paramètre « booléen » :
Par exemple :
Mentionnons également codice_152 : sélectionne les nœuds de la sélection courante (par exemple les nœuds de la sélection d'éléments).
Par exemple, on a créé des masses ponctuelles (catégorie codice_41) et on veut récupérer le numéro du nœud de la masse située vers l'abscisse "x" = 500 et l'ordonnée "y" = 300 :
ESEL, , ENAME, , MASS21 ! Sélectionne les éléments de catégorie MASS21
! (masses ponctuelles)
NSLE ! Sélectionne les nœuds de ces masses
NSEL, R, LOC, X, 499, 501 ! Sélectionne le nœud pour 499 <= x <= 501
NSEL, R, LOC, Y, 299, 301 ! Sélectionne le nœud pour 299 <= y <= 301
ALLSEL, ALL ! resélectionne tout
On peut par exemple utiliser ce numéro dans le code servant à modéliser l'élingue :
E, NumModeMass, nodenum ! crée l'élément
Afficher des entités.
La commande codice_154 affiche les éléments sélectionnés (voir ci-dessus). La commande codice_155 affiche les nœuds sélectionnés.
Conditions aux limites.
La commande codice_156 permet d'appliquer un champ d'accélération angulaire par rapport au repère global.
UIDL.
Le système Ansys possède un langage permettant de créer des interfaces graphiques (GUI : "graphic user interface") : l'UIDL "(user interface design language)". Ceci dépasse le cadre du présent ouvrage, mais on pourra se reporter à une ressource dédiée, comme par exemple la page "ANSYS and UIDL customization" d'Ansys.