===== Commit 2015-12-18 ===== DampedAlphaGeneralizedTimeIntegration ===== DampedAlphaGeneralizedTimeIntegration ===== * Ajout d'un schéma d'intégration dynamique implicite de la famille des Alpha Généralisés (Newmark, HHT, CH, WBZ) via l'ajout de force d'amortissement dans l'équation du schéma (équilibré en $\alpha_F$ : voir ref1) : $$(1-\alpha_M) \boldsymbol{F}^{\text{inert}}(t^{n+1}) + \alpha_M \boldsymbol{F}^{\text{inert}}(t^n) + (1-\alpha_F) \boldsymbol{F}^{\text{damp}}(t^{n+1}) + \alpha_F \boldsymbol{F}^{\text{damp}}(t^n)$$ $$+ (1-\alpha_F) \boldsymbol{F}^{\text{int}}(t^{n+1}) + \alpha_F \boldsymbol{F}^{\text{int}}(t^n) = (1-\alpha_F) \boldsymbol{F}^{\text{ext}}(t^{n+1}) + \alpha_F \boldsymbol{F}^{\text{ext}}(t^n)$$ * les forces d'amortissement sont calculées via le produit d'une matrice d'amortissement et la vitesse (au temps donné) : $$ \boldsymbol{F}^{\text{damp}} = \boldsymbol{C} * v $$ * Actuellement seuls les éléments volumiques (EAS/SRI/SRIPR/STD) et à priori leurs dérivations TM (pas testés) initialisent leur matrice d'amortissement par pondération de la matrice des masse et de raideur (voir ref2): $$\boldsymbol{C} = a_m \boldsymbol{M} + a_k \boldsymbol{K}$$ * On observe au figures ci dessous que l'amortissement en masse amorti principalement les basses fréquences, alors que l'amortissement en raideur les hautes fréquences ... Notons aussi les ordres de grandeurs très différent des paramètres $a_m$ et $a_k$ : |{{:commit:2015:chnodamp.png?200|}}|{{:commit:2015:chdamp4m.png?200|}}|{{:commit:2015:chdampm6k.png?200|}}| | $\boldsymbol{C}=0$ | $\boldsymbol{C}=1.e4\boldsymbol{M}$ | $\boldsymbol{C}=1.0e-6\boldsymbol{K}$ | * Actuellement, $\boldsymbol{C}$ est constant (tant en répartition que en amplitude), mais il serait intéressant de pouvoir faire varier l'amplitude pour amener un amortissement durant une phase de calcul uniquement (springBack) * Le calcul de $\boldsymbol{C}$ pour les éléments de masse et de ressort ne devrait pas poser problèmes * Le calcul de $\boldsymbol{C}$ pour les éléments AEJ, de coque, XFem demande de remerger ces éléments dans une structure maintenue (supprimer les copiers-coller) * Une batterie de tests a été initiée sur base d'une poutre 3D encastrée-libre (Canteliver) soumise à vibration forcée à l'extrémité encastrée : apps/dampedAlphaGenTI (actuellement test des éléments STD/EAS/SRI/SRIPR avec 5 variantes de C sur base d'un schéma de Chung et Hulbert). To be continued ... * Actuellement, le calcul des forces et raideur sont gérés comme avant (dans les éléments via des tests sur des variables (isDamping, ...) de "TimeIntegration"). Methodologie que j'aimerais remplacer par des fonctions standardisées dans les éléments appelées dans le schéma (il y a du boulot...)... * ref1 : "The analysis of the Generalized-$\alpha$ method for non linear dynamic problems" - S.Erlicher, L.Bonaventura, O.S.Bursi - Computanional Mechanics 28 (2002) 83-104 * ref2 : "Theorie des vibrations" - M.Geradin, D.Rixen - Chapitre 3 ===== divers pour ajout damping ===== * nettoyage de ''AlphaGeneralizedTimeIntegration'' (utilisation des DEFGETSETMACRO_C) et mise en cache du massStiffRatio localement * Ajout d'une "Nature" ''GF4'' (pour les forces d'amortissement) * renaming des fonctions ''fillDissipationForces'' en ''fillConsDissForces'' (fonctions spécifiques algos conservatifs) * déplacement des fonctions ''updateMassMatrix'', ''computeTherCapacityMatrix'' après le setStep de la fonction d'initialisation (afin de grouper le calcul de C qui necessite l'initialisation des GP0 pour les EAS) * suppression de 'massStiffRatio' hors de MtElementShcuts (la variable existe dans le schéma d'intégration ...) * Ajout d'un extracteur du travail des forces d'amortissement (et optimisation de TdFieldValueExtractor pour le calcul des travaux). Attention, seul l'extracteur scalair est implémenté (pas le champ de travail à tous les noeuds). Le calcul des energies (champs élémentaires) de ''TdFieldValueExtractor'' auraient aussi besoin d'une bonne optimisation... * ''PointersToSets'' : * Ajout de pointeurs ''actualDampForcesSet3'' et ''previousDampForcesSet3'' * Utilisation des ''DEFGETMACRO_C'' * suppression du fichier "PointersToSets.inl" (vide) ===== Divers ===== * Abrawal/Banc18ER : * Renaming Banc18ER => banc18ER (idem pour le niveau inférieur). * Attention, il reste des répertoires avec Majuscule en premier dans les sub/sub directories (next step) ATTENTION : IL FAUT UTILISER LA PROCEDURE [[http://binary.freeperspective.net/countzero/2009/02/23/svn-change-filename-letters-case-only/|ici]] POUR RENOMMER DES REPERTOIRES (SINON, CA FOIRE AU MOMENT DU COMMIT!!!) * Correction des \$Id\$ dans des fichiers de l'arborescence banc18ER * Metafor.h : * déplacements hors ''#ifndef SWIG'' des fonctions get de l'évolution du calcul (getCurrentStepNo, ...) * Modification de ''MechanicalVolumeIntegrationMethods::fillMechanicalAnalyticalStiffnessIg'' pour aussi assembler les termes de report de pression du SRIPR * test de conduction (monosThermomeca) : split du mono-élément en 2 pour que la simulation calcule quelque chose !!! ===== Jorissade (à defaut des grandes) ===== * Correction des tests ''apps/remeshing2/baseTests/*.py'' : tout ces tests tournaient dans ''workspace/%%__main__%%'' (étant donné que le module chargé s'appellait "%%__main__%%", ce qui induisait des crashs non prévisibles quand plusieurs tests essayaient de lire ou écrire en même temps dans le même répertoire (qui pouvait disparaitre via la commande "clean" de la batterie d'un autre test) * remplacement de load(__main__) par load(__file__) ===== Fichiers ajoutés/supprimés ===== Added : oo_meta\mtFEM\algos\DampedAlphaGeneralizedTimeIntegration.h/cpp Deleted :oo_meta\mtKernel\PointersToSets.inl ===== Tests ajoutés/supprimés ===== Added : oo_meta\apps\dampedAlphaGenTI Added : oo_meta\apps\dampedAlphaGenTI\canteliver.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2EasM0K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2EasM0Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2EasM4K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2EasM4Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2EasNoDamp.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriM0K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriM0Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriM4K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriM4Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriNoDamp.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriPrM0K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriPrM0Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriPrM4K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriPrM4Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2SriPrNoDamp.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2StdM0K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2StdM0Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2StdM4K0.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2StdM4Km6.py Added : oo_meta\apps\dampedAlphaGenTI\cantNl2StdNoDamp.py Renamed : oo_nda\abrawal\Banc18ER => oo_nda\abrawal\banc18ER Renamed : oo_nda\abrawal\Banc18ER\Battery => oo_nda\abrawal\banc18ER\battery Renamed : oo_nda\abrawal\Banc18ER\BladeCasingEngagement => oo_nda\abrawal\banc18ER\bladeCasingEngagement Renamed : oo_nda\abrawal\Banc18ER\BladeCentrifugeLoad => oo_nda\abrawal\banc18ER\bladeCentrifugeLoad Renamed : oo_nda\abrawal\Banc18ER\BladeRotAnalysis => oo_nda\abrawal\banc18ER\bladeRotAnalysis Renamed : oo_nda\abrawal\Banc18ER\CasingRotAnalysis => oo_nda\abrawal\banc18ER\casingRotAnalysis Renamed : oo_nda\abrawal\Banc18ER\ParametricAnalysis => oo_nda\abrawal\banc18ER\parametricAnalysis Renamed : oo_nda\abrawal\Banc18ER\Tools => oo_nda\abrawal\banc18ER\tools Deleted : --- //[[L.Papeleux@ulg.ac.be|Luc Papeleux]] 2015/12/17 //