Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:conditions:displacements

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:user:conditions:displacements [2013/07/12 18:58] – external edit 127.0.0.1doc:user:conditions:displacements [2015/01/08 16:18] boman
Line 1: Line 1:
-====== Déplacements imposés ======+====== Prescribed Displacements ======
  
 +===== Basic usage =====
 +{{:doc:user:ico-beginner.png?40 |Beginner}}
 +A displacement can be prescribed to a set of nodes with an evolution function and the object ''LoadingSet'':
  
 +  loadingset.define(target, field, ampl=0.0, fct=None, 
 +                    incr=INCREMENTAL_LOAD)  
  
 +  loadingset.define(target, field, ampl, fctMulti, fieldList, 
 +                    incr=INCREMENTAL_LOAD)
 +with
 +|< 100% 8em - - >|
 +|''target''          | ''GObject''  | meshed geometric entity where the displacement is prescribed |
 +|''field''           | ''Field1D''  | variable to be prescribed              |
 +|''ampl''            | ''float''    | amplitude                              |
 +|''fct''             | ''[[doc:user:general:fonctions|Function]]'' | function for time dependence |
 +|''fctMulti'' {{:doc:user:ico-advanced.png?18|Advanced}}        | ''[[doc:user:general:fonctions|Function]]'' | (spatiotemporal dependency) |
 +|''fieldList'' {{:doc:user:ico-advanced.png?18|Advanced}}                    | list of dependency fields  |
 +|''incr'' {{:doc:user:ico-advanced.png?18|Advanced}}            | ''enum''     | = ''INCREMENTAL_LOAD'' : incremental (default)\\ = ''TOTAL_LOAD'' : total (useful to apply initial displacement or for unreliable integration schemes)|
  
 +The displacement is then given by
 +  * ''INCREMENTAL_LOAD'':  ''u(t1) = u(t0) + ampl * (fct(t1)-fct(t0))''
 +  * ''TOTAL_LOAD'':        ''u(t) = ampl * fct(t)''
  
-===== Fixations définitives ===== 
  
-Pour déplacer des noeuds au cours du temps, on impose au déplacement une valeur exprimée par une fonction d'évolution temporelle grâce à l'objet ''LoadingSet'' du domaine.+__Example:__ FIXME
  
-  loadingset.define(gObject, field, ampl, fct , incr) +\\
-  loadingset.define(gObject, field, ampl, fctMultiChamps , fieldList, incr)+
  
-|''gObject'' | référence vers l'objet géométrique support des noeuds | +=====  Activation/Deactivation of boundary conditions ===== 
-|''field''   | Field : champ base de donnée décrivant la variable qui doit être fixée modifiée | +{{:doc:user:ico-advanced.png?40 |Advanced}} 
-|''ampl''   | amplitude | +Prescribed displacements can be added or removed during the computation. 
-|''fct''    | [[doc:user:general:fonctions]] (dépendance temporelle) | +
-|''fctMultiChamps ''    | [[doc:user:general:fonctions]] (dépendance spatio-temporelle) +
-|''fieldList''    | liste de champs de dépendances +
-|''incr'' (facultatif)| = ''INCREMENTAL_LOAD'' : incrémental (defaut)\\ = ''TOTAL_LOAD'' : total (util pour appliquer un déplacement initial & pour les schemas d'intégration foireux)|+
  
-On obtient donc une expression du déplacement suivant la composante  +It is useful to add some prescribed displacements for example when we want to avoid numerical vibrations or rigid body modes. Conversely, it is sometimes useful to drive a workpiece to a desired position, then to remove the prescribed displacements and let the workpiece deform freely.
-  * INCREMENTAL_LOAD:  ''u(t1) = u(t0) + ampl * (fct(t1)-fct(t0))'' +
-  * TOTAL_LOAD:        ''u(t) = ampl * fct(t)''+
  
 +For any calculation, the simulation time is automatically divided into several stages (''Stage'' objects) using the ''setNextTime()'' method of the ''[[doc:user:integration:general:time_step|TimeStepManager]]''
  
-  loadingset.define(gObjectfield, ampl, incr)+For each stageit is possible to activate (''activate()'') and deactivate (''deactivate()'') any ''Loading'' (including prescribed displacements).
  
-|''gObject'' | référence vers l'objet géométrique support des noeuds | +After the configuration of the ''[[doc:user:integration:general:time_step|TimeStepManager]]'', all the defined stages can be retrieved using:
-|''field''   | Field champ base de donnée décrivant la variable qui doit être fixée / modifiée | +
-|''ampl''   | amplitude  = 0 par défaut | +
-|''incr'' (facultatif)| = ''INCREMENTAL_LOAD'' incrémental (defaut) | +
-|           |= ''TOTAL_LOAD''total (pour imposer une valeur non nulle ou pour fixer la configuration remaillée par rapport à l'origine)|+
  
-Attention, il n'est pas permis d'avoir une amplitude !0.0 en incremental (on n'a pas trouvé de sens à cette commande). Mtf sort sur une ''FATAL_ERROR''.+  stages metafor.getStageManager()
  
-Les valeurs par défaut permettent une écriture courte d'une simple fixation : +==== Example ====
  
-  loadingset.define(gObject, field)+Definition of a prescribed displacement on ''Curve'' #4 and deactivation during stage #1 (corresponding to the second stage since numbering starts with 0):
  
- +  load1 = loadingset.define(curveset(4), Field1D(TY,RE), 1.0, fct2)
-===== Fixations dynamiques ===== +
- +
-Il est possible d'ajouter ou supprimer des fixations au cours d'un calcul. Ceci est bien pratique pour éviter des vibrations parasites en dynamique ou éviter des modes rigides. +
- +
-Le temps est découpé en phases de calcul par les commandes ''setNextTime'' (voir [[doc:user:integration:general:time_step|TimeStepManager]]). Il est alors possible d'activer (''activate'') et désactiver (''deactivate'') les chargements. +
- +
-Récupération de l'ensemble des phases de calcul (les commandes sur le [[doc:user:integration:general:time_step|TimeStepManager]] doivent avoir déjà été effectuées): +
- +
-  stages = metafor.getStageManager() +
- +
-Définition d'un chargement sur la courbe #4 et désactivation en phase #1 (la deuxième phase de calcul – les phases étant numérotées à partir de 0): +
- +
-  load1 = loadingset.define(curveset(4), Field1D(TY,RE),  1.0, fct2)+
   load1.deactivate(stages[1])   load1.deactivate(stages[1])
  
-Définition d'un chargement sur la courbe #1, activé en phase #0 et désactivé en phase #1 et suivantes:+Definition of a load on ''Curve'' #1, deactivated during stage #1 and activated for the next ones:
  
-  load2 = loadingset.define(curveset(1), Field1D(TY,RE),  -0.1, fct1)+  load2 = loadingset.define(curveset(1), Field1D(TY,RE), -0.1, fct1)
   load2.deactivate(stages[0])   load2.deactivate(stages[0])
   load2.activate(stages[1])   load2.activate(stages[1])
  
-Schématiquement, on obtient donc, si 3 phases ont été définies:+These two loads are represented schematically as:
  
 |          ^  load1  ^  load2  ^ |          ^  load1  ^  load2  ^
-phase #0 |  ACTIVE    |  INACTIVE | +stage #0 |  ACTIVE    |  INACTIVE  
-phase #1 |  INACTIVE  |  ACTIVE   +stage #1 |  INACTIVE  |  ACTIVE    
-phase #2 |  INACTIVE  |  ACTIVE   | +stage #2 |  INACTIVE  |  ACTIVE    |
- +
-:!: Règle de priorité des opérations :+
  
-      "L'ACTIVATION L'EMPORTE TOUJOURS SUR LA DESACTIVATION"+<note important>Order of operations: Activation surpasses deactivation: A node can indeed be part of two entities, one activated, one deactivated. But the operation of deactivation will be done first, then the activation, so such a node will be activated.</note>
  
-un même noeud peut faire partie de 2 entités dont l'une peut etre activée, l'autre désactivée. Les opérations se faisant toujours dans l'ordre de séquence :  
-1. désactivations - 2. activations l'activation l'emportera toujours ... 
doc/user/conditions/displacements.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki