La nouvelle répartition des DDLs évoquée dans mon précédent commit (Commit 2015-08-28) n'a finalement pas lieu d'être.
La théorie dit bien que :
fillMass() afin de pouvoir récupérer la matrice de masse du super-élément lorsqu'on fait une analyse fréquentielle d'une structure modélisée avec un super-élément.fillCorrectedImplicitDynamicTangentMatrix() implémentée dans la classe SuperElement.
MRR de la matrice de masse réduite. Original : MRR = mRR + Psi^T . mCC . Psi + 2 * mRC . Psi
Correction : MRR = mRR + Psi^T . mCC . Psi + (mRC . Psi)^T + mRC . Psi
MRR | MRN
M = ------------- est la matrice de masse du système réduit (super-élément),
MNR | MNN
mRR | mRC
m = ------------- est la matrice de masse du système non réduit (modèle fin),
mCR | mCC
R = DDL Retenu, C = DDL Condensé, N = DDLs Mode propre à interfaces fixes,
Psi est la matrice des modes statiques de liaison.
MRR mentionnée ci-dessus, a également été corrigée.extract() qui impactait fortement les résultats obtenus en un noeud condensé.Original : locel[j+nbContraintModes] Correction : locel[j+nbContraintModes+1]
freeConstrainedMass n'est pas symétrique ⇒ correction freeConstrainedMass = new StrMatrixBase(false, …) dans la fonction fillFreeConstrainedMatrices().generateEigenResFiles() dans la classe FrequencyAnalysisMethod :mtFrequencyAnalysis.tests.matlab.matlabPostPro (cf. fichier matlabEigenvalues.txt).StrVector sont créés à la volée (i.e., sans clé VariantID, comme par exemple RE) et la fonction StrVectorBase::write() est utilisée. De cette manière, la valeur du déplacement TX, TY, ou TZ est associée à un n° de noeud de la DB, ce qui est utile pour faire des comparaisons.matlabComputeEigenValues(), matlabComputeAllEigenValues() du module mtFrequencyAnalysis.tests.matlab.matlabPostPro ainsi que dans les fonctions Matlab EigenValues() et AllEigenValues(). C'est utile, en particulier, lorsqu'on fait l'analyse fréquentielle du super-élément puisque, dans ce cas, 4 fichiers sont générés :LanczosFrequencyAnalysisMethod) sont maintenant normalisés par rapport à la masse : ||x|| = (xtMx)½. Notons que cette métrique était déjà utilisée dans la méthode de la puissance (cf. PowerIterationsFrequencyAnalysisMethod).MNN = matrice identité de taille N, etKNN = diag(ω1², …, ωN²).(K - μ M) x = (ω²-μ) M x, où μ est un scalaire, au lieu du système initial K x = ω² M x. Ce nouveau système est quant à lui inversible, pour un choix judicieux de la valeur μ. Selon Géradin, μ doit être négatif lorsqu'on est en présence de modes rigides.beam3DFreeSri.py du module mtFrequencyAnalysis (maillage EF fin classique). Ce cas-test consiste en l'analyse fréquentielle d'une poutre 3D Libre/Libre par la méthode de Lanczos. Les résultats obtenus pour chaque valeur de µ testée correspondent aux 10 plus petites fréquences propres du système, et sont comparés à celles calculées avec Matlab. Cette étude a montré que :µ = -1e6.SkyLineMatrix, l'espace mémoire réservé aux éléments diagonaux est alloué 2 fois, dans situ et dans sitl).
mtFrequencyAnalysis :generateEigenResFiles() dans le cas-test de base beam3DFreeSri.pybeam3DFreeSriShift.py, beam3DFreeSriDssShift.py, beam3DFreeEasShift.py, et beam3DFreeEasDssShift.py.mtSuperElement :Beam2DFreqAnalysis.py et Beam3DFreqAnalysis.py → Analyse fréquentielle d'une poutre Encastrée/Libre modélisée avec un super-élément de Craig-Bampton.Beam2DFreqAnalysisFree.py et Beam3DFreqAnalysisFree.py → Analyse fréquentielle d'une poutre Libre/Libre modélisée avec un super-élément de Craig-Bampton.Beam2DTri.py et Beam3DTetra.py → Calcul des vibrations libres d'une poutre Encastrée/Libre modélisée avec un super-élément de Craig-Bampton construit à partir d'un modèle EF fins triangulaire (ou tétrahédrique) et non quadrangulaire (ou hexahédrique) comme les autres cas-tests.toolbox :tetra dans la fonction createCube() de meshedGeometry3D.py qui vaut 0 par défaut et qui permet la construction d'un cube maillée avec des tétrahèdres s'il vaut 1.Modified : oo_meta\mtFrequencyAnalysis\src\FrequencyAnalysisMethod.h Modified : oo_meta\mtFrequencyAnalysis\src\FrequencyAnalysisMethod.cpp Modified : oo_meta\mtFrequencyAnalysis\src\LanczosFrequencyAnalysisMethod.cpp Modified : oo_meta\mtFrequencyAnalysis\src\MechanicalMatrices.h Modified : oo_meta\mtFrequencyAnalysis\src\MechanicalMatrices.cpp Modified : oo_meta\mtSuperElement\src\SuperElement.h Modified : oo_meta\mtSuperElement\src\SuperElement.cpp Modified : oo_meta\mtSuperElement\src\CraigBamptonSuperElement.cpp Modified : oo_meta\mtSuperElement\src\CraigBamptonSuperElementValueExtractor.cpp Modified : oo_meta\mtSuperElement\src\GuyanSuperElement.cpp Modified : oo_meta\toolbox\meshedGeometry3D.py Modified : oo_meta\mtMath\CSRMatrix.cpp
Added: oo_meta\mtSuperElement\tests\Beam2DFreqAnalysis.py Added: oo_meta\mtSuperElement\tests\Beam2DFreqAnalysisFree.py Added: oo_meta\mtSuperElement\tests\Beam3DFreqAnalysis.py Added: oo_meta\mtSuperElement\tests\Beam3DFreqAnalysisFree.py Added: oo_meta\mtSuperElement\tests\Beam2DTri.py Added: oo_meta\mtSuperElement\tests\Beam3DTetra.py
— Claire Hennuyer 2015/10/08