Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2019:07_05

This is an old revision of the document!


Commit 2019-07-05

Ce commit est pour pouvoir utiliser la méthode du Lagrangien Augmenté directement dans la phase de l'initial balancing (mise en rotation quasi-statique),ce qui n'était pas possible jusqu'à présent.

Augmented Lagrangian Method

L'objet Augmented Lagrangian Method interagit avec le schéma d'intégration DynamicTimeIntegration pour la phase d'initial balancing via la fonction “forcesComputationInitialBalancing()”, tout simplement.

Initial Balancing - Major Refactoring

Dans l'objet DynamicTimeIntegration, il y a une phase de calcul dite “initial balancing” pour la mise en rotation quasi-statique initiale des structures. Cette partie du code était assez nébuleuse et donc quasi peu changée au cours des différentes versions du code source. Il a fallu malheureusement mettre à plat tout ça et comprendre ce que l'on faisait exactement dans toutes ces lignes de code. En regardant les similitudes du code avec la fonction integrate() de l'objet QuasiStaticTimeIntegration, je suis parvenu à un refactoring de la fonctionnalité.

Notamment, le fait d'avoir nettoyé et clarifié les étapes de calcul (en comparant avec l'objet QuasiStaticTimeIntegration), j'ai pu mettre en évidence un bug dans le cas où on combine l'initial balancing et une méthode de newton modifiée. Pour illustrer mes propos voici les étapes de calcul dans la nouvelle version du code source et l'ancienne version du code source pour le cas-test

Par la même occasion, j'ai éliminé les multiples appels inutiles à des fonctions du style beginStep(), etc… pour simplifier la structure du code, rassemblé différentes fonctions dans une nouvelle fonction et ajouter des commentaires pour expliquer les différentes phases du calcul.

Au niveau de la visualisation, il est désormais possible d'interagir les différentes phases de l'initial balancing via le widget “TimeIntegrationInteractor”.

Finalement, j'ai ajouté la mise à jour des chargements nodaux imposés via un LoadingSet, des positions des outils en force driven, des degrés de liberté liés via la fonctionnalité EqualityDofConstraint dans la phase d'initial balancing.

Structural Line Search - Refactoring

Le line search était implémenté dans TimeIntegration ⇒ iterationResolution() et aussi dans DynamicTimeIntegration ⇒ initialBalancing(), ce qui rend difficile la maintenance. J'ai déplacé l'entièreté des lignes de code dans IterationManager dans la fonction “void execute(TimeIntegration &ti, bool &rester, bool &forcesAreComputed, Field const *dofType);”. L'algorithme du Line Search interagit avec le schéma d'intégration via les fonctions “computeForcesLineSearch()” et “updateDofsLineSearch()”. Normalement, rien n'a changé au niveau du fonctionnement de l'algorithme.

Fichiers ajoutés/supprimés

[a]:
[r]:

Cas tests ajoutés/supprimés

[a]:
[r]:

gaëtan 2019/07/05 22:30

commit/2019/07_05.1562343674.txt.gz · Last modified: 2019/07/05 18:21 by wautelet

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki