Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:integration:general:time_step

This is an old revision of the document!


Gestion des archivages et du pas de temps

Gestion des archivages

Généralités

La gestion des archivages se fait grâce à la fonction metafor.getTimeStepManager(). On impose un temps initial par la fonction setInitialTime(), et puis une succession de pas de temps ultérieurs par la fonction setNextTime() :

  tsm = metafor.getTimeStepManager()
  tsm.setInitialTime(t0, muli)
  tsm.setNextTime(t1, npas, mulm)
  ...

t0 temps initial
t1 temps suivant
muli pas de temps initial
mulm pas de temps maximum entre t0 et t1
npas nombre d'archivages entre t0 et t1

Utilisation du Metafac

Introduction

Cette section décrit comment s'en sortir avec l'output de Metafor, c'est-à-dire les fichiers Fac créés par l'objet Metafac (.bfac, .tfac).

Nous avons choisi de sauver chaque pas de temps dans un fichier séparé. Cela permet de supprimer facilement un ou des pas de temps inutiles. C'est aussi utile pour faire un restart.

Par défaut, l'archivage se fait toujours en binaire (.bfac - en opposition à .tfac, version texte ou ASCII). Si la zlib est disponible, les fichiers sont comprimés à la volée (.bfac.gz).

Pour rappel, un fichier binaire n'est généralement pas portable entre différentes plateformes.

Les fichiers d'archivage sont envoyés par défaut dans un répertoire workspace/nom_du_test/ et se nomment step_*.bfac.gz.

Scripts utiles

Pour pouvoir rapidement voir le résultat d'un calcul ou faire une conversion automatique d'un format à l'autre, quelques scripts ont été définis dans oo_meta/toolbox/utilities.py. L'utilisateur peut éventuellement les modifier pour les customiser.

Voir un pas de temps donné avec VizWin

Pour charger le pas de temps 10:

  loadFac('rep1.rep2.mytest', 10)

(en supposant que le fichier mytest.py soit dans /rep1/rep2/). Si on ne spécifie pas le numéro du pas, Metafor charge le pas de plus grand numéro présent.

Pour l'afficher rapidos :

  vizu('rep1.rep2.mytest')

Faire une anim

Conversion automatique des fichiers bfac/tfac en fichiers bmp:

  • Lancer makeAnimation('rep1.rep2.mytest')
  • Une fenêtre VizWin s'ouvre avec le 1er pas de temps et l'interpréteur est mis en pause.
  • Activer les options (valeurs de l'échelle, etc)
  • Vérifier que la fenêtre VizWin n'est pas cachée par un objet sur l'écran (sinon, il risque d'apparaitre dans les captures).
  • Taper ENTER pour sortir de la pause.

Création de automatique de l'anim:

  • Lancer un programme de création d'anim pour créer l'anim à partir des fichiers créés (par exemple AVImaker).

Gestion du pas de temps

La gestion de la taille du pas de temps se fait à travers les commandes suivantes:

  tsm = metafor.getTimeStepManager()
  tsm.setTimeStepComputationMethod(meth)
  tsm.setIntegrationErrorTolerance(prec)
  tsm.setExplicitTimeStepSecurity(secu)
  tsm.setNbOfStepsForCriticalTimeStepUpdate(nrit)
  tsm.setMaxNbOfItInAdaptOfTimeStep(nbIter) (option: utilisé dans un calcul implicite ou quasi statique)
paramètre valeur par défaut description
meth = TSM_NBOFITERATIONSMETHOD : en implicite, le pas de temps dépend du nombre d'itérations du pas précédent, alors qu'en explicite, le pas de temps ne dépend que du pas de temps critique et de secu
= TSM_INTEGRATIONERRORMETHOD : le pas de temps est calculé en fonction d'une erreur d'intégration (ainsi que du pas de temps critique et de secu en explicite)
prec 1.E-4 précision sur l'erreur d'intégration
secu 2.0/3.0 paramètre de sécurité qui multiplie le pas critique en explicite
nrit 1 nombre de pas de temps entre une mise à jour du pas critique
nbIter 5 nombre d'itérations minimal dans l'algorithme de diminution du pas de temps. Si le nombre d'itérations nécessaire à la convergence est supérieur à nbIter la valeur du prochain pas de temps sera inférieure au courant. Dans le cas contraire, la valeur du prochain pas de temps sera supérieure ou égale à la valeur courante.

Schémas quasi-statiques et schémas dynamiques implicites

Il existe deux possibilités pour calculer la taille du pas de temps :

  • Une méthode basée sur le nombre d'itérations. Si le nombre d'itérations nécessaire à la convergence du pas précédent est inférieur à 3, la taille du pas de temps est augmentée. Par contre si le nombre d'itérations nécessaire à la convergence du pas précédent est supérieur à 4, la taille du pas de temps est diminuée. Cette méthode ne donne aucune garantie sur la précision obtenue.
  • Une méthode basée sur une erreur d'intégration. Cette méthode calcule une erreur d'intégration basée sur la différence de la norme des accélérations (cas dynamique) ou de la vitesse (cas quasi-statique) pour adapter la taille du pas de temps en fonction d'une précision requise.

Schémas dynamiques explicites

Ces schémas étant conditionnellement stables, la taille du pas de temps Dt est donnée par :
$ \Delta t = \gamma_s \Delta t_{crit} $

Dans cette expression, $\Delta t_{crit}$ est une expression dépendant de la fréquence propre maximale du système (donnée par la méthode dite power iteration et remise à jour régulièrement) et $\gamma_s$ est la sécurité qui peut être calculée de 2 façons :

  • La sécurité est constante. Cette méthode ne donne acune garantie sur la précision de l'intégration.
  • La sécurité dépend d'une erreur d'intégration. La sécurité est calculée en fonction d'une erreur d'intégration basée sur la différence de la norme des accélérations. La valeur maximale qu'elle peut atteindre est fixée par le paramètre utilisateur. En pratique, la sécurité ne sera inférieure à ce paramètre que pour les cas de dynamique très rapide comme le moment de l'impact.
doc/user/integration/general/time_step.1373636557.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki