Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:integration:general:time_step

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
doc:user:integration:general:time_step [2013/07/12 15:42] – external edit 127.0.0.1doc:user:integration:general:time_step [2020/12/28 10:55] (current) – [Use of Metafac] tanaka
Line 1: Line 1:
-====== Gestion des archivages et du pas de temps ====== +====== Managing Time Steps ====== 
-===== Gestion des archivages ===== +===== Archiving manager ===== 
-==== Généralités ==== +==== General Points ==== 
-La gestion des [[doc:user:general:glossaire#Fac|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()'' :+[[doc:user:general:glossaire#Fac|Archiving]] is done with ''metafor.getTimeStepManager()''An initial time and time step is set using ''setInitialTime()'', then a series of subsequent steps are set using ''setNextTime()''. Then number of archives between two time steps is given as argument to ''setNextTime()''.
  
     tsm = metafor.getTimeStepManager()     tsm = metafor.getTimeStepManager()
Line 9: Line 9:
     ...     ...
  
-+where
  
-| ''t0''temps initial|  +| ''t0'' | initial time|  
-| ''t1''temps suivant|  +| ''t1''next time|  
-| ''muli''pas de temps initial|  +| ''muli'' | initial time step|  
-| ''mulm''pas de temps maximum entre ''t0'' et ''t1''|  +| ''mulm''maximal time step between ''t0'' and ''t1''|  
-| ''npas''nombre d'archivages entre ''t0'' et ''t1''+| ''npas''number of archives between ''t0'' and ''t1''
  
-==== Utilisation du Metafac ====+==== Use of Metafac ====
  
 === Introduction === === Introduction ===
  
-Cette section décrit comment s'en sortir avec l'output de ''Metafor''c'est-à-dire les fichiers [[doc:user:general:glossaire#Fac]] créés par l'objet ''Metafac'' (''.bfac'', ''.tfac'').+This section describes how to deal with Metafor outputwhich are called [[doc:user:general:glossaire#Fac]] files, and created by the object called ''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''.+Each time step is saved in a different fileThis way, useless steps can be easily deleted, and a ''restart'' can be done
  
-Par défautl'archivage se fait toujours en binaire (''.bfac''en opposition à ''.tfac'', version texte ou ASCII). Si la [[http://www.zlib.net/|zlib]] est disponibleles fichiers sont comprimés à la volée (''.bfac.gz'').+By defaultarchiving is done in binary (''.bfac''in opposition to ''.tfac'', text version or ASCII). If  [[http://www.zlib.net/|zlib]] is availablefiles are compressed immediately (into ''.bfac.gz'').
  
-Pour rappel, un fichier binaire n'est généralement pas portable entre différentes plateformes.+Note that a binary file is usually not portable between various OS.
  
-Les fichiers d'archivage sont envoyés par défaut dans un répertoire ''workspace/nom_du_test/'' et se nomment ''step_*.bfac.gz''+By default, archiving files are sent to a folder called ''workspace/test_name/'' and are called ''step_*.bfac.gz''
  
-=== Scripts utiles ===+=== Useful scripts===
  
 +Some scripts, found in ''oo_meta/toolbox/utilities.py'', were written to easily see the result of a simulation, to convert into a different format, ... These files can be modified by the user to suit a particular application.
  
-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.+=== View a given step with VizWin ===
  
-=== Voir un pas de temps donné avec VizWin === +To load the 10th time step, 
- +
- +
-Pour charger le pas de temps 10: +
  
     loadFac('rep1.rep2.mytest', 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.+(assuming that the file ''mytest.py'' is located in ''/rep1/rep2/''). If no time step is specified, Metafor loads the one having the highest number.
  
-Pour l'afficher rapidos +To view it 
  
     vizu('rep1.rep2.mytest')     vizu('rep1.rep2.mytest')
  
-=== Faire une anim ===+=== Movie ===
  
  
-__Conversion automatique des fichiers bfac/tfac en fichiers bmp:__+__Automatic conversion from bfac/tfac to bmp:__
  
-    * Lancer ''makeAnimation('rep1.rep2.mytest')'' +    * Type ''makeAnimation('rep1.rep2.mytest')'' 
-    * Une fenêtre ''VizWin'' s'ouvre avec le 1er pas de temps et l'interpréteur est mis en pause+    * ''VizWin'' window is opened with the first time step and the user is put on hold
-    * Activer les options (valeurs de l'échelle, etc) +    * Activate options (scales, 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). +    * Check that the ''VizWin'' window is not hidden by an object on the screen (otherwise it might appear in the screenshots). 
-    * Taper ENTER pour sortir de la pause.+    * Type ENTER once ready
  
-__Création de automatique de l'anim:__+__Automatic creation of the movie:__
  
-    * Lancer un programme de création d'anim pour créer l'anim à partir des fichiers créés (par exemple [[http://www.helesic.cz/en/avimaker.php|AVImaker]]).+    * Run a program to create movies from the files (for example [[http://www.helesic.cz/en/avimaker.php|AVImaker]]).
  
  
  
 +===== Time step manager =====
  
- +The time step is monitored using the commands:
-===== Gestion du pas de temps ===== +
- +
-La gestion de la taille du pas de temps se fait à travers les commandes suivantes:+
  
     tsm = metafor.getTimeStepManager()     tsm = metafor.getTimeStepManager()
     tsm.setTimeStepComputationMethod(meth)     tsm.setTimeStepComputationMethod(meth)
 +    tsm.setTolOnFac(tolOnFac)
     tsm.setIntegrationErrorTolerance(prec)     tsm.setIntegrationErrorTolerance(prec)
     tsm.setExplicitTimeStepSecurity(secu)     tsm.setExplicitTimeStepSecurity(secu)
     tsm.setNbOfStepsForCriticalTimeStepUpdate(nrit)     tsm.setNbOfStepsForCriticalTimeStepUpdate(nrit)
-    tsm.setMaxNbOfItInAdaptOfTimeStep(nbIter) (option: utilisé dans un calcul implicite ou quasi statique)+    tsm.setMaxNbOfItInAdaptOfTimeStep(nbIter) (option: used in implicit or quasi-static) 
 +    tsm.setMinimumTimeStep(minTimeStep) 
 +     
 +^ Parameter ^ Default value ^ Description ^ 
 +| ''meth'' |   | = ''TSM_NBOFITERATIONSMETHOD'' : in implicit, the current time step depends on the number of iterations in the previous time step, when in explicit it only depends on the critical one and the parameter ''secu''
 +|      |= ''TSM_INTEGRATIONERRORMETHOD'' : the current time step is computed based on an integration error (and based on the critical one and the parameter ''secu'' in explicit) | 
 +| ''prec'' |  1.E-4  |accuracy on the integration error | 
 +| ''secu'' |  2.0/3.0  | safety coefficient which multiplies the critical time step in explicit | 
 +| ''nrit'' |  1  | number of time steps before updating the critical time step | 
 +| ''nbIter'' |  5  | Minimal number of iterations in the algorithm in charge of reducing the time step. If the required number is greater than ''nbIter'', the subsequent time step will be lower than the current one. Otherwise, it will be equal or greater. | 
 +| ''minTimeStep'' |  1.0E-10  | minimum time step below which metafor stops running. | 
 +| ''tolOnFac'' | 0.1 | tolerance on time step for the discrete times corresponding to archiving (FAC). | 
 +==== Quasi-static and dynamic implicit schemes =====
  
-^ paramètre ^ valeur par défaut ^ description ^ +Two possibilities are used to compute the time step
-| ''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''+  * A method based on the number of iterations before convergenceIf lower than 3, the time step is increased. If greater than 4, it is decreasedThis method does not provide any guaranty on accuracy.  
-|      |= ''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) | +  * A method based on an integration errorIt computes an integration error based on the difference of the norm of the acceleration (dynamic case) or speed (quasi-static case) to adjust the time stepdepending on the accuracy required.
-| ''prec'' 1.E- |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 tempsSi 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 contrairela 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 : +==== Dynamic explicit schemes =====
-  * 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.+
  
 +Since these schemes are conditionally stable, the time step $\Delta t$ is given by :\\
 +$ \Delta t = \gamma_s \Delta t_{crit} $
  
-==== Schémas dynamiques explicites =====+Where $\Delta t_{crit}$ depends on the maximal eigenfrequency of the system (obtained using the method called "power iteration", and updated regularly) and $\gamma_s$, a safety coefficient which can be computed two ways: 
 +  * Constant safety, coefficient, no guaranty on the accuracy. 
 +  * Safety coefficient based on an integration error. It computes an integration error based on the difference of the norm of the acceleration. A maximal value is set by the user. Practically, the safety coefficient will only be lower than this user parameter for highly dynamic situations, such as impact.
  
-Ces schémas étant conditionnellement stables, la taille du pas de temps Dt est donnée par :\\ +==== New Interface For Time Step Computation Method ==== 
-$ \Delta t = \gamma_s \Delta t_{crit} $+ 
 +<note important> 
 +The commands from the new interface are discussed in the following page 
 +Cf. [[commit:2015:11_18]]  
 +</note>
  
-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.txt · Last modified: 2020/12/28 10:55 by tanaka

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki