Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:10_02

Commit 2015-10-02

Modifications

IeTimeIntegration - Nettoyage de crasse

En analysant la procédure d'initialisation des schémas d'intégration, j'ai réussi à me débarrasser de cette crasse :

    // -- ajout RoBo [A revoir]
    // initialisation "propre des CI": difficile a faire ici où la structure est "un peu"
    // confuse. Pour m'en sortir, j'applique les CI avant d'appeler l'initialisation des 2
    // schémas (qui ont besoin de la matrice des masses qui ne peut etre initialisée sans CI).
    // Au final, les CI seront reappliquées par "DynamicTimeIntegration::initialise(true);"
    if(!metafor.isARestart())
    {
        // applique les CLs
        metafor.getInitialConditionSet().update(metafor.getCurrentTime());
        // allouer la méthode de contact en fonction du schéma d'intégration
        setContactMethod();
        //pour les contacts precontraints: avoir l'origine du frottement        
        elementsInitialisation();
    }
    // -- fin ajout RoBo [A revoir]

Pour se faire, il suffisait de surcharger la fonction buildStrVector() et la fonction strVectorInitialisation() pour chaque schéma d'intégration dynamique dès que nécessaire.

Maintenant, la crasse proprement dit est localisée dans buildStrVector() de IeTimeIntegration() :

    if(updateRoot) DynamicTimeIntegration::buildStrVector(updateRoot);
    //debut crasse 
    //Cette etape est indispensable. Elle fait en sorte que les connexions de chaque schéma d'intégration
    //implicite et explicite (ainsi que les vecteurs structuraux commum dynamiques) soient les mêmes.
    static_cast<DynamicTimeIntegration &>(getImplicitTimeIntegration()) = (*this);
    static_cast<DynamicTimeIntegration &>(getExplicitTimeIntegration()) = (*this);
    //fin crasse
    getExplicitTimeIntegration().buildStrVector();
    getImplicitTimeIntegration().buildStrVector();

Il est à noter que les connexions des schémas explicites et implicites ajoutées dans le ConnexionSet ne sont plus synchronisés suite à cette modification.

De la même manière, j'ai inséré une fonction initialiseTimeStep() pour le timeStepManager, pour initialiser le pas de temps correctement de le cas du schéma explicite (estimation du pas de temps critique).

Consistent Algorithm Functions

Les paramètres insérées par l'utilisateur sont immédiatement vérifiés. Dès lors, l’objet se trouve dans un état cohérent avant la phase initialise invoquée par le schéma d'intégration.

Fichiers/Dossiers ajoutés/supprimés

[r]:
[a]:

Tests ajoutés/supprimés

[r]:
[a]: 

Gaëtan WAUTELET 2015/10/02

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