retour sommaire des sujets logo ULP Examen d’informatique
Licence Génie des Systèmes Industriels - IUP2
Première session 2005

Durée : 2h. Notes de cours personnelles (manuscrites, sorties imprimante ou polys), TD et TP autorisés. Calculatrices autorisées. Autres documents (dont livres) interdits. Ce document comporte trois pages. Il est assez long, mais faisable. Il est donc déconseillé de perdre du temps à rajouter des choses que je n'ai pas demandées, comme des affichages ou des vérifications (je parle bien de celles que je n'ai pas demandées).

Remarques : En cas d’informations insuffisantes, vous pouvez faire toute supposition qui vous arrange, à condition qu’elle ne contredise ni ce que j’ai imposé dans le sujet, ni le bon sens.

Le calcul d'une pièce par éléments finis consiste à découper la pièce en petits éléments, en supposant un comportement simplifié (par exemple linéaire) pour chaque élément, permettant d'appréhender le comportement global de la pièce (contraintes internes, déformations). Comme pour l'approximation d'une courbe par des segments de droites, la taille des éléments n'a pas nécessairement à être uniforme.

Bien que cela fonctionne bien en 3D, plaçons nous uniquement dans les cas bidimensionnels (dans le plan xy). Un maillage d'une pièce est son découpage en éléments simples. Nous nous limiterons aux éléments triangles comme dessiné ci-contre. Le maillage est défini par deux groupes de données : les noeuds (numérotés ici de 1 à 9) et les élément (numérotés ici de I à VIII, en chiffres romains pour bien les différencier sur le dessin, mais dans la pratique on les numérotera normalement dans le programme, de 1 à 8). Chaque noeud est défini par ses deux coordonnées (donc des flottants) X et Y, chaque élément par les numéros (donc des entiers) des trois noeuds qui le forment. Bien qu'elle complique le travail du programmeur, cette organisation simplifie l'utilisation et permet une meilleure cohérence des données : pour déplacer le noeud 9, il suffit de changer ses coordonnées, sans rien modifier dans les éléments I, II, VII et VIII. Les numéros (de noeud et d'élément) commencent toujours par 1, et se suivent.


Nous désirons stocker un maillage sous forme d'objets. Voyez ci-après une partie des données correspondant au maillage ci-dessus :

Nous allons (vous allez, plutôt) définir ces différentes classes. Pour commencer, je vous détaille leurs attributs, nous verrons les méthodes après :

Tous ces attributs devront être privés dans leur classe respective.

Question 1 : Définissez la classe « noeud ». Elle comportera les méthodes publiques suivantes :

Vous surchargerez également l'opérateur <<.

Question 2 : Définissez la classe « tabnoeuds ». Elle comportera les méthodes publiques suivantes :

Question 3 : Déclarez la classe « element ». Contrairement aux questions précédentes, vous vous limiterez à la déclaration, c'est à dire que les attributs et entêtes des méthodes doivent être déclarés, mais la définition complète (externe) des méthodes n'a pas à être faite lors de cette épreuve. Par contre vous pourrez vous en servir dans les questions suivantes, si nécessaire. Cette classe comportera les méthodes publiques suivantes :

Vous pourrez également supposer que l'opérateur << a été surchargé.

Question 4 : La résolution d'un problème par éléments finis est simplifiée si l'on est sûr que les éléments sont définis dans le sens trigonométrique. Elle nécessite également la connaissance de la surface des éléments. Vous allez donc maintenant définir (complètement) les deux méthodes de la classe element. Dans cette question, pour simplifier, vous supposerez que les coordonnées des noeuds sont définies dans un tabnoeuds nommé N et qu'il soit accessible directement sans aucune déclaration (c'est ce qu'on appelle une variable globale, mais nous n'avons pas vu cela en cours).

Question 5 : Définissez la classe « tabelements ». Vous n'y détaillerez qu'une seule méthode publique, nommée « connexions » qui reçoive en argument entier un numéro de noeud, et retourne le nombre d'éléments qui contiennent ce noeud. Cette méthode sera très utile lorsque l'on cherchera à calculer la somme des forces appliquée à un noeud (je vous en dispense pour cette fois-ci).

Question 6 : Cette question ne nécessite que quelques phrases en français, pas de programme. Soit la déclaration :

	class maillage : public tabnoeuds, public tabelements
	{};

Ceci signifie que la classe maillage hérite de la classe tabnoeuds ET de la classe tabelements. S'il n'y a rien entre les accolades, que pensez vous que l'on puisse faire avec cette classe ? Quelle(s) modification(s) aux questions précédentes proposeriez-vous pour améliorer l'utilisation de la classe maillage ?

Remarques : Un certain nombre de problèmes géométriques se résolvent beaucoup plus simplement avec les vecteurs (vous avez le droit de créer une fonction « prod_vect ») :


pour quelques pistes de solution, cliquez ici, pour retourner au sommaire des sujets d'examen, cliquez


retour sommaire des sujetsPatrick TRAU, ULP - IPST janvier 05