Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:12_18

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$ :
$\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 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 :

Luc Papeleux 2015/12/17

commit/2015/12_18.txt · Last modified: 2016/03/30 15:23 (external edit)