Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:07_29

Commit 2015-07-29

Rééquilibrage dynamique avec transfert des forces résiduelles

Avec le schéma d'intégration de Chung Hulbert, l'équation d'équilibre fait intervenir les forces au pas de temps courant mais aussi au pas de temps précédent (appelées forces résiduelles). Lors du transfert de données, ces forces résiduelles étaient perdues ce qui induisait une erreur parfois conséquente dans le rééquilibrage.

A présent, ces forces peuvent également être transférées, à condition de les enregistrer dans la DB. Afin de ne pas réduire les performances globales, ces forces ne seront calculées et enregistrées en DB qu'à la fin de l'intégration, et à condition d'avoir indiqué dans le cas test l'option :

metafor.setDynamicRemeshing(True)

Dans ce cas où ces forces sont calculées et transférées, le rééquilibrage a pour objectif de vérifier l'équation d'équilibre

$$(1-\alpha_M) \boldsymbol{F}^{\text{inert}}(t^{n+1}) + (1-\alpha_F) \boldsymbol{F}^{\text{int}}(t^{n+1}) + \boldsymbol{F}^{\text{res}}(t^n) = (1-\alpha_F) \boldsymbol{F}^{\text{ext}}(t^{n+1})$$

Si cette équation n'est pas vérifiée directement, on procède par étapes en appliquant une portion du déséquilibre des forces en tant que forces externes :

$$\boldsymbol{F}^{\text{ext}}(t^{n+1}) = (1-\beta)\boldsymbol{F}^{\text{ext}}(t^{n+1}) + \beta \boldsymbol{F}^{\text{int}}(t^{n+1}) + \beta \frac{1-\alpha_M}{1-\alpha_F}\boldsymbol{F}^{\text{inert}}(t^{n+1}) + \frac{\beta}{1-\alpha_F}\boldsymbol{F}^{\text{res}}(t^n)$$

et on itère jusqu'à ce que l'équation d'équilibre soit vérifiée pour $\beta = 0$

Différents cas-tests ont été ajoutés pour vérifier cette procédure, notamment dans le cas où le maillage est simplement copié.

Automatisation de la procédure de remaillage

Une tentative d'automatisation est introduite dans ce commit. Différentes fonctions ont été définies dans toolbox.remeshingUtilities pour que l'appel à une seule fonction permette de remailler, transférer les données, rééquilibrer, et rende un objet metafor prêt à reprendre la simulation. Cette procédure a été développée quand j'attendais l'accès aux batteries, sa robustesse n'a donc pas été testée et elle risque donc d'être modifiée. Sa description fera l'objet d'un commit ultérieur.

Correction d'un bug dans le calcul de l'aire de contact

En AIC_ONCEPERSTEP, l'aire de contact est calculée au début de chaque pas de temps. Son calcul est censé être réalisé sur base des valeurs de déplacements qui se trouvent dans le GP1. Cependant, le calcul était réalisé juste après avoir switché les GP0 et GP1, donc le calcul se réalisait sur base du GP0. En temps normal, cela induit juste une petite erreur, cependant lors d'un restart le GP0 n'a pas été initialisé, donc l'aire de contact était entachée d'une sérieuse erreur. Ceci est une des raisons pour laquelle le redémarrage patinait autant après remaillage.

Descriptions des cas-tests

Les cas tests contenant les mots “NullRemesh” sont là pour tester remaillage et rééquilibrage dans le cas où le maillage est simplement copié d'un metafor à l'autre. Cela permet de vérifier que le rééquilibrage se fait de façon (presque) immédiate, étant donné que la situation remaillée est la même que la situation de départ.

La série “forgeQS” vérifie cela pour le schéma quasi-statique, la série “forgeDyn” pour la dynamique lente, et la série “beamBendingDyn” pour la dynamique plus rapide.

Fichiers ajoutés/supprimés

A : 
R : 

Tests ajoutés/supprimés

A : apps.remeshing2.beamBendingNullRemeshDyn_1.py
A : apps.remeshing2.beamBendingNullRemeshDyn_2.py
A : apps.remeshing2.beamBendingNullRemeshDyn_3.py
A : apps.remeshing2.beamBendingNullRemeshDyn_4.py
A : apps.remeshing2.forgeNullRemeshDyn_1.py
A : apps.remeshing2.forgeNullRemeshDyn_2.py
A : apps.remeshing2.forgeNullRemeshDyn_3.py
A : apps.remeshing2.forgeNullRemeshDyn_4.py
A : apps.remeshing2.forgeNullRemeshQS_1.py
A : apps.remeshing2.forgeNullRemeshQS_2.py
A : apps.remeshing2.forgeNullRemeshQS_3.py
A : apps.remeshing2.forgeNullRemeshQS_4.py
A : apps.remeshing2.forgeRemeshDyn.py
R : 

Pierre Joris 2015/03/13

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