4. Modélisation B#
Glossaire: dans Salomé on désigne par:
vertex les points utiles à la construction de la géométrie;
edge les lignes (droites);
arc les arcs de cercles;
wire les lignes composées de edge et arc;
face les surfaces délimitées par un wire;
shell un ensemble de face destiné à être maillé ou délimitant un volume;
compound un ensemble d’entités géométriques.
Les tuyaux droits et le coude sont modélisés par des éléments massifs isoparamétriques quadratiques.
La tuyauterie présente un plan de symétrie \(Z=0\) . Mais contrairement, au cas statique, on n’en profitera pas. On verra en effet, que les modes peuvent sortir du plan de symétrie. On maillera donc tout le volume.
Conditions aux limites et chargement: voir le chapitre 1.3.
4.1. Géométrie :#
Lancer le module Geometry de la plate-forme Salome-Meca.
Deux procédés pour créer la géométrie (recommander le deuxème):
Extrusion d’une surface de base selon un chemin:
Création des cercles intérieurs et extérieurs de la base sur le plan OXZ (Menu New Entity → Basic → Circle), puis la surface délimitée par les deux cercles (Menu New Entity → Build→ Face).
Création du chemin filaire: les points \(A\) , \(C\) , \(D\) , \(B\) , \(O\) , puis les deux droites \(\mathit{AC}\) et \(\mathit{DB}\) , et l’arc de cercle \(\mathit{CD}\) (Menu New Entity → Basic → Point / Line / Arc), puis le chemin entirer (Menu New Entity → Build → Wire).
Cette surface est ensuite extrudée par le menuNew Entity → Generation → Extrusion Along Path.
Utilisation d’objets volumiques de base:
Construire un tuyau droit d’axe \(Z\) , à l’aide de deux cylindres élémentaires de hauteur \(3\) et de rayons \(0.2\) et \(0.18\) (Menu New Entity → Primitives → Cylinder), et d’une opération booléenne (Menu Operations → Boolean → Cut). Renommer l’objet créé en \(\mathit{TUY}1\) .
Appliquer une rotation à \(\mathit{TUY}1\) autour de \(X\) pour qu’il soit d’axe \(Y\) (Menu Operations → Transformation → Rotation): Angle = -90° et désactiver Create a copy.
Sélectionner la face supérieure en créant un groupe: Menu New Entity → Group → Create Group. Cette face permet de générer le coude par le menu New Entity → Generation → Revolution (Angle = -90°). Il faut pour cela créer l’axe de révolution (un vecteur de direction \(Z\) passant par le point O \((\mathrm{0.6,}\mathrm{3.0,}0.0)\) ): création des points \((\mathrm{0.6,}\mathrm{3.0,}0.0)\) et \((\mathrm{0.6,}\mathrm{3.0,}1.0)\) et puis création du vecteur (Menu New Entity → Basic → Vector).
Puis créer de la même façon le second tuyau droit \(\mathit{TUY}2\) : sélectionner la face supérieure de la coude en créant un groupe, et générer le tuyau droit par le menu New Entity → Generation → Extrusion suivant \(X\) .
Enfin assembler les 3 parties de la tuyauterie à l’aide dela partition (Menu Operations → Partition) .
Préparation de la géométrie pour un maillage en hexaèdres :
Pour un maillage en hexaèdres, il faut utiliser l’algorithme «Hexahedron(i,j,k)» ou bien utiliser l’option «Automatic Hexahedralization».
Le tuyau est destiné à être maillé avec des hexaèdres, c’est à dire de façon réglée (le nombre d’éléments est identique sur deux côté opposés). Avant de procéder au maillage, il est nécessaire de vérifier que la géométrie est topologiquement équivalente à un hexaèdre (6 faces). Pour cela, il faut utiliser le menu Inspection → Check Compound of Blocks.
Selon le mode de construction (le 1er procédé), il peut être nécessaire de réaliser une partition par des plans des sections entrée et sortie de coude afin d’obtenir une géométrie topologiquement équivalente à un hexaèdre (6 faces).
Pour la géométrie générée suite au premier procédé, il faut créer plusieurs plans pour partitionner la tuyauterie: un plan Y=3, un plan X=0.6(Menu New Entity →Basic →Plane: point + Vector doncC + AC /D + BD), et une surface courbé à partir du chemin ACDB créé(Wire_1): menu New Entity → Generation →Extrusion suivant l’axe Z, puis Operations / Transformation / Translationpour que la surface courbée coupe entièrement la tuyauterie.
Si on veut faire un maillage avec des tétraèdres, cette condition n’est pas nécessaire. En revanche, si on veut mailler en hexaèdre, c’est indispensable pour les algorithmes des mailleurs.
Création des groupes :
On créera ensuite les groupes de faces où on désire mettre des conditions limites: Base (surface en bas pour encastrer), Efond (bout du tuyau pour appliquer la force dynamique): Menu New Entity → Group → Create Group.
On créera aussi le groupe de bord avec une arête de l’épaisseur (\(\mathit{d1}\) ) et un autre groupe de bord avec une arête de circonférence (\(\mathit{L1}\) )pour permettre un raffinement différent sur ces bords.
Pour le post-traitement il est pratique de créer un groupe sur un point où l’on puisse suivre les évolutions. On créera donc le groupe point \(B\) situé sur la section Efond, en bas, sur la surface interne du tuyau.
4.2. Maillage#
Lancer le module Mesh de la plate-forme Salome-Meca.
Le maillage est défini par le menu Mesh → Create Mesh. Sélectionner la géométrie à mailler, puis l’algorithme et l’hypothèse de discrétisation par dimension:
3D Hexahedron(i,j,k).
2D Quadrangle: Mapping.
1D Wire Discretisation avec l’hypothèse basique Number of Segment (15 segments par edge.
Puis calculer le maillage(Menu Mesh → Compute).
Pour permettre un raffinement différent selon les edges, on créera des sous-maillages par le menu Mesh → Create Sub-mesh:
Un sub-mesh définissant le nombre de segments dans l’épaisseur \(d1\) . Par exemple, l’hypothèse basique Number of Segments avec 2 segments sur \(d1\) et l’hypothèse supplémentaire «Propagation of 1D hypothese on Opposite Edges».
Un sub-mesh définissant le nombre de segmentssur la circonférence \(L1\) . Par exemple, 20 segmentssur \(L1\) etl’hypothèse supplémentaire«Propagation of 1D hypothese on Opposite Edges».
Puis calculer le maillage(Menu Mesh → Compute).
Créer les groupes demailles correspondants aux groupe géométriques(Menu Mesh→Create Groups from Geometry).
Exporter lemaillage au format MED.
Pour obtenir une meilleure précision, on va faire passer le maillage de linéaire à quadratique, grâce à l’outil «Modification -> Convert to/from quadratic». Les plus curieux peuvent comparer les différences de résultats entre les deux types d’éléments.
Remarques :
Avec une autre finesse de maillage, il est possible d’obtenir des résultats sensiblement différents. En particulier, pour obtenir une solution correcte, il est souhaitable d’utiliser des éléments quadratiques.
4.3. Création et lancement du cas de calcul#
Les principales étapes du calcul avec AsterStudy seront:
Préparation des données et analyse modale:
Lire le maillage par LIRE_MAILLAGE
Affecter le type d’éléments et la modélisation par AFFE_MODELE
Définir et affecter le matériau par DEFI_MATERIAU et AFFE_MATERIAU
Définir les conditions aux limites par AFFE_CHAR_MECA: option DDL_IMPO pour encastrer base.
Assembler les matrices de masse et de rigidité du système par ASSEMBLAGE:
ASSEMBLAGE(MODELE=… ,
CHAM_MATER= … ,
CHARGE=… ,
# Numérotation des inconnues d’un système
# d’équations linéaires
NUME_DDL=CO(” … “),
MATR_ASSE=(_F(MATRICE=CO(” … “),
OPTION=”RIGI_MECA”,),
_F(MATRICE=CO(” … “),
OPTION=”MASS_MECA”,),),);
Calculer les 10 premiers modes propres par CALC_MODES
CALC_MODES(MATR_RIGI= … ,
MATR_MASS= … ,
OPTION=”PLUS_PETITE”,
CALC_FREQ=_F(NMAX_FREQ= 10 ,),)
Extraire et visualiser les modes propres par IMPR_RESU.
On lancera ensuite le calcul dans le module AsterStudy. On recommande de visualiser les animations dans l’onglet Results d’Asterstudy.
On pourra également visualiser les modes dans Paravis en les «déformant»:
Cliquer droite le fichier des résultats dans l’onglet Case View → Data Files, et cliquer Open In Paravis pour charger les résultats en choisissant le format mode au lieu de time, puis cliquer Apply pour valider
Appliquer le filtre dans Filters → Mechanics → Normal modes animation (real), et valider
Afficher la fenêtre Animation view (menu View → Windows → Animation View), et ajouter une animation pour le filtre ci-dessus par cliquer + à côté de Normalmodesanimationreal
Choisir le mode à visualiser (Mode Array Selection) dans la fenêtre Properties à gauche et valider, puis cliquer le bouton Play (►) pour visualiser le mouvement de mode
Analyse transitoire
Pour l’analyse transitoire à partir des modes propres calculés, on partira le «wizard» ci-dessous. On y ajoutera les commandes nécessaires à la suite de l’analyse.
Continuer le calcul dans un nouveau stage par la commande POURSUITE
Définition de la discrétisation temporelleà l’aide de comande DEFI_LIST_REEL: de 0s à 2.0s avec un pas de temps de 0.0001s.
Construction de la force ponctuelle
Définition de la charge unitaire (valeur à 1) «force sur la section \(B\) » (AFFE_CHAR_MECA / FORCE_FACE).
Calcul des vecteurs forces élémentaires (CALC_VECT_ELEM / OPTION=’CHAR_MECA’).
Assemblage du vecteur force (ASSE_VECTEUR).
Définition de la fonction évoluée avec le temps par FORMULE : VALE pour l’expression \(\mathit{FY}(t)=10000000.\sin(2\pi \mathit{Freq1}.t)\) dirigée selon l’axe \(Y\) et appliquée sur la section \(B\) , où \(\mathit{Freq}1=20\mathit{Hz}\) . Il faut d’abord déclarer les variables utilisées dans la formule.
Évoluer la fonction par CALC_FONC_INTERP suivant la liste des instants définie. Avec PROL_GAUCHE/DROITE = CONSTANT pour définir la courbe hors le cadre de la liste des instants.
Transitoire sur base modale
Projection du problème assemblé sur la base des modes propres
PROJ_BASE(BASE= … ,
MATR_ASSE_GENE= (
# Pour la matrice de masse
_F( MATR_ASSE = … ),
# Pour la matrice de rigidité
_F( MATR_ASSE = … ),
# Pour la force dynamique
VECT_ASSE_GENE= _F( TYPE_VECT = ‘FORC’,
VECT_ASSE = … ), )).
Calcul transitoire par recombinaison modale (DYNA_VIBRA)
DYNA_VIBRA(TYPE_CALCUL=’TRAN’,
BASE_CALCUL=’GENE’,
SCHEMA_TEMPS= _F(SCHEMA = “DIFF_CENTRE”),
AMOR_MODAL = … ,
MATR_MASS = … ,
MATR_RIGI = … ,
EXCIT = … ,
INCREMENT = …,
… ).
Récupération des déplacements en \(Y\) au point \(B\) (RECU_FONCTION): RESU_GENE, GROUPE_NO, NOM_CHAM=DEPL, NOM_CMP=DY.
Impression de ces fonctions au format XMGRACE (IMPR_FONCTION): FORMAT, UNITE, COURBE, etc.
Visualiser les champs de déplacement:
Commande REST_GENE_PHYS: parce que le type des résultats générés (base physique) directement par DYNA_VIBRA ne peut pas imprimer au format MEDpar IMPR_RESU, il faut restituer dans la base physique des résultats en coordonnées généralisées en donnant LIST_INST, NOM_CHAM, RESU_GENE. Attention: les pas de temps nombreux conduit le fichier MED très lourd, et on recommande de redéfinir une liste des instants, par exemple avec un pas de temps 0.01s.
Commande IMPR_RESU: imprimer au format MED
4.4. Post-traitement des résultats#
On peut visualiser directement la courbe des déplacements DY au point \(B\) en fonctiondu temps après IMPR_FONCTION au format XMGRACE.
Importer les résultats transitoires dans l’onglet Results, et vérifier le déplacements DY sur un point à l’extrémité du tuyau (voir le chapitre 2.2.2).