−Table of Contents
Commit 2016-06-23
- Prise en compte de la non-symétrie de la matrice de rigidité du modèle FEM dans la construction des matrices réduites des super-éléments de Guyan et de Craig-Bampton.
- Petites modifications dans la création des fichiers de sauvegarde des super-éléments
Correction des matrices réduites : prise en compte de la non-symétrie du système
Dans Metafor, la matrice de rigidité du système n'est pas symétrique par défaut. En effet, certains termes ajoutés à la matrice la rendent non-symétrique, comme par exemple si on utilise des d'éléments EAS, lors d'un contact, lorsque les forces de Coriolis sont prises en compte, etc.
Etant donné que la théorie sur les super-éléments suppose toujours que la matrice de rigidité du système que l'on veut condenser est symétrique, certaines simplifications sont faites.
Méthodes de réduction de modèles : rappels théoriques
Le système d'équations associé au modèle EF que l'on souhaite condenser est le suivant : M¨U+KU=F
Afin de construire un modèle réduit, l'ensemble des DDLs du modèle FEM sont décomposés en des DDLs Retenus et des DDLs Condensés. Le système d'équation précédent s'écrit donc : (MRRMRCMCRMCC)(¨UR¨UC)+(KRRKRCKCRKCC)(URUC)=(FR0C)
Un changement de base est ensuite réalisé afin de réduire la taille du système initial. Deux méthodes de réduction de modèle peuvent être formulées en fonction du changement de base effectué : la méthode de Guyan et celle de Craig-Bampton.
Méthode de Guyan
La formule du changement de base dans le cas de la méthode de Guyan est la suivante : U=(URUC)=(IΨ)UR=α UR avec Ψ=−K−1CC KCR, la matrice dont chaque colonne correspond à un mode statique de liaison.
En introduisant ce changement de base dans le système original, on obtient le système réduit de Guyan : ˜M¨UR+˜KUR=FR avec : ˜M=αt M α=MRR+Ψt MCR+MRC Ψ+Ψt MCC Ψ ˜K=αt K α=KRR+KRC Ψ
Méthode de Craig-Bampton
La formule de changement de base dans le cas de la méthode de Craig-Bampton est la suivante : U=(URUC)=(I0ΨΦ)(QRQN)=α Q avec Ψ la matrice des modes statiques de liaison définie plus haut, et Φ la matrice dont chaque colonne correspond à un mode propre à interfaces fixes.
En introduisant ce changement de base dans le système original, on obtient le système réduit de Craig-Bampton : ˜M¨Q+˜KQ=˜F avec : ˜M=αt M α=(˜MRR˜MRN˜MNR˜MNN) avec {˜MRR=MRR+Ψt MCR+MRC Ψ+Ψt MCC Ψ˜MRN=˜MtNR=MRC Φ+Ψt MCC Φ˜MNN=Φt MCC Φ
˜K=αt K α=(˜KRR˜KRN0˜KNN) avec {˜KRR=KRR+KRC Ψ˜KRN=KRC Φ+Ψt KCC Φ→Terme non nul !!˜KNN=Φt KCC Φ
Corrections apportées dans mtSuperElement
MechanicalMatrices.h/.cpp
- Définition des blocs matrices utiles uniquement (certaines étaient définies et pas utilisées, et la matrice KRC dont on a besoin n'était pas définie) :
- Seul le bloc NL/NL est utilisé lors d'une analyse fréquentielle classique ;
- Seuls les blocs BL/BL, BL/BF, BF/BL, BF/BF sont utilisés pour la construction d'un super-élément.
- Réécriture du destructeur de la classe en conséquence
- Suppression de certaines fonctions inutiles, comme par exemple
updateBelongingFreeBelongingFreeTangStiffMatrix()
.
- Suppression de fonctions telles que
fillConstrainedConstrainedMatrices()
ougetConstrainedConstrainedMassMatrix()
, par exemple, qui ne sont appelées que lors de la création d'un super-élément et qui sont donc directement remplacées par les fonctions spécifiques correspondantesfillBelongingConstrainedBelongingConstrainedMatrices()
etgetBelongingConstrainedBelongingConstrainedMassMatrix()
.
GuyanSuperElement.cpp
- Modification des noms de fonctions suite aux modifications faites dans
MechanicalMatrices
.
- Ajout du calcul des blocs MRC et KRC via la fonction
fillBelongingConstrainedBelongingFreeMatrices()
.
- Modification du calcul du vecteur
kRCPsiI
:kRCPsiI = kRC*(*psiI)
au lieu dekRCPsiI = kCR.computeTransposeProduct(*psiI)
qui supposait quekRC = kCR^t
, i.e. quek
était symétrique.
CraigBamptonSuperElement.cpp
- Modification des noms de fonctions suite aux modifications faites dans
MechanicalMatrices
.
- Ajout du calcul des blocs MRC et KRC via la fonction
fillBelongingConstrainedBelongingFreeMatrices()
.
- Modification du calcul du vecteur
kRCPsiI
:kRCPsiI = kRC*(*psiI)
au lieu dekRCPsiI = kCR.computeTransposeProduct(*psiI)
qui supposait quekRC = kCR^t
, i.e. quek
était symétrique.
- Ajout du calcul du bloc ˜KRN dans la fonction
execute()
, via le calcul du vecteurkRCPhiI
notamment.
- Modification de la fonction
structToElem()
qui remplit la variablesuperElemStiffMatrix
suite à l'ajout du bloc ˜KRN.
Fichiers de sauvegarde des super-éléments
- Modification de la fonction python
createPyFileForSuperElemUse
dans les fichiers suivants :
\oo_meta\mtSuperElement\tests\tools\utilities.py \oo_nda\abrawal\banc18ER\tools\utilities.py
L'index est maintenant défini comme un argument dans le constructeur de la classe SuperElementBaconImporter
, ce qui est moins dangereux. Par conséquent, le constructeur a été modifié et la fonction setIndex()
a été supprimmée.
- Modification de l'écriture des fichiers de sauvegarde concernant le type de super-élément 2D ou 3D. Le type étant connu au moment où on crée le fichier de sauvegarde, la fonction
saveRetainedNodes()
du fichierSuperElement.cpp
a été modifiée.
- Par conséquent, modification des cas-tests de
mtSuperElement
.
Fichiers pour cas-tests renommés/supprimés
Renamed: mtSuperElement\tests\tools\Beam.py -> beamBuilder.py Renamed: mtSuperElement\tests\tools\toolsVE.py -> valueExtractors.py Deleted: mtSuperElement\tests\tools\superElement.py Deleted: mtSuperElement\tests\tools\superElementNew.py Deleted: abrawal\banc18ER\tools\superElements18ER.py
Nouveaux cas-tests
Des nouveaux cas-tests suivront…
— Claire Hennuyer 2016/06/23