Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2014:02_10

Commit 2014-02-10

Calcul des vitesses et accélérations des degrés de liberté fixés

Suppression de oo_nda/tpi

Vitesse & Accélérations DDL's Fixés

Calcul des forces centrifuges et gravité dans FInert

  • dans le cadre des aubes tournantes, cherchant à comprendre la différence de comportement vibratoire entre un modèle aube tournante et un modèle où les forces centrifuges sont ajoutées à un modèle dont l'aube est fixe, une piste était liée au schéma de Chung & Hulbert (à travers la pondération pas de temps 0 / pas de temps 1 des forces inertielles (via alpha_m) & extérieures (via alpha_f).
  • une propriété booléenne des éléments (propelem) INERTIAINFEXT a été ajoutée telle que par défaut, les forces de gravité et centrifuge soient ajoutées dans le vecteur FExt et que l'on puisse les ajouter dans FInert :
    • FGrav/FCentrifuge dans FExt (defaut): prp.put(INERTIAINFEXT,True)
    • FGrav/FCentrifuge dans Finert : prp.put(INERTIAINFEXT,False)
  • tests :
    • apps/imp/aube3dFix1 : INERTIAINFEXT = true
    • apps/imp/aube3dFix2 : INERTIAINFEXT = false
    • apps/imp/aube3dFix2Num : INERTIAINFEXT = false & matrice de raideur numérique
    • apps/imp/aube2DFix1CarterRigidArcRot: INERTIAINFEXT = true
    • apps/imp/aube2DFix2CarterRigidArcRot: INERTIAINFEXT = false

Calcul des Vitesses et accélérations des ddls fixés

  • Lors de l'implémentations de “INERTIAINFEXT ”, j'ai repéré que les vitesses et accélérations des degrés de libertés fixés sont calculés non pas en utilisant les formules du schéma (voir thèse JPP pg VIII.13 : formules VIII.3.3 VIII.3.4), mais bien par un Euler arrière (pour des raisons de stabilité dans le cadre d'un schéma de Newmark :Thèse JPP pg VIII.28 et suivantes, formules VIII.5.8)
  • Cette formulation permet d'éviter des oscillations sur des calculs fait via Newmark (cad jamais avec Metafor), mais entraîne les erreurs le bruit important à chaque division de pas de temps : ci dessous les contraintes et forces d'une “aube” en rotation avec variation (imposée/importante) du pas de temps en 0.014sec (+ variations du pas de temps lié à des accidents de convergence)
  • Calcul des Vitesses & Accelerations DDL's fixés Euler Arrière :

Contraintes Euler ArrièreForces Euler Arrière

  • Calcul des Vitesses & Accelerations DDL's fixés Consistant schéma :

Forces Schema consistantForces Schema consistant

  • Pour l'instant seul le schéma AlphaGeneralizedTimeIntegration est adapté
  • le choix entre le calcul consistant avec le schéma des vitesses et accélérations se fait via la commande
    • mim.setConstrainedDofsVAComputationMethod(VACOMPUTATION_SCHEMECONSISTANT) (default)
    • mim.setConstrainedDofsVAComputationMethod(VACOMPUTATION_LINEAR)
  • Une tentative de définir les vitesses & accélérations des ddl's fixes via la fonction d'évolution exacte (vu qu'elle est connue) a été tentée, mais n'est pas aboutie à ce jour (et pose certaines questions …)

Tests

  • apps/imp/massSpring3d2NewmarkVAConsistant : démontre le problème de conditions limites en newmark
  • apps/imp/massSpring3d2 : ancien test en Euler Arrière prend 6500 fois moins de pas de temps
  • apps/imp/aube3DRotVAConsistant : Schéma consistant
  • apps/imp/aube3DRotVALinear : Schéma Euler Arrière

Suppression de oo_nda/tpi

  • le module tpi n'étant qu'un gros copier-coller des éléments volumiques
  • l'objectif était de mettre un espace de développement à disposition de Arnaud Collet
  • vu qu'il n'a finalement pas développé sa thèse dans Metafor, le module n'a plus de raison d'être …
  • Il est donc supprimé du répository (n'oubliez pas de refaire completement votre CMake!!!)
  • suppression de tpi dans la batterie

Divers

  • KevinVoigtViscoElastHypoMaterial :
    • Correction du modèle lorsque dt = 0.0 (mise en rotation QS)
  • PythonOneParameterFunction::computeDerivation (double abs):
    • Implémentation d'une fonction générique de calcul de dérivation numérique d'une PythonOneParameterFunction (toujours lui préférer une implémentation exacte de la dérivée. L'appel à cette fonction affichera d'ailleurs un gros WARNING recurrent …)
  • stats.py :
    • Correction du serveur svn & des courbes gnuplot
  • Forces.setToZero();:
    • Alors que la fonction element::fillVector commence par redimensionner & remettre à zero les vecteurs qu'elle va remplir, toutes les fonctions fillInternalForces, fillInertialForces, fillExternalForces, fillDiagonalMass, fillDissipationForces commencaient par remettre le vecteur à zero (au cas ou le passage aurait changé les zeros en quelque chose d'autre
    • ⇒ supprimé tous les setToZero des fill…Forces
  • #include <mkl_scalapack.h> ⇒ #include <mkl_lapack.h>
    • Il restait des appels à scalapack.h (implémentation mpi de lapack qui n'existe pas nécessairement sur toutes les plateformes) alors qu'on n'utilise que la partie smp

Fichiers ajoutés/supprimés

 
A 
R oo_nda/tpi/*

Tests ajoutés/supprimés

 
A oo_meta\apps\bIe\aube2_VACONSISTANT.py  text/plain
A oo_meta\apps\imp\aube2DFix1CarterRigidArcRot.py  text/plain
A oo_meta\apps\imp\aube2DFix2CarterRigidArcRot.py  text/plain
A oo_meta\apps\imp\aube3DFix1.py  text/plain
A oo_meta\apps\imp\aube3DFix2.py  text/plain
A oo_meta\apps\imp\aube3DFix2Num.py  text/plain
A oo_meta\apps\imp\aube3DRotVAConsistant.py  text/plain
A oo_meta\apps\imp\aube3DRotVALinear.py  text/plain
A oo_meta\apps\imp\massSpring3d2NewmarkVAConsistant.py  text/plain
R  

Luc Papeleux 2014/02/10

commit/2014/02_10.txt · Last modified: 2016/03/30 15:23 (external edit)