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
doc:user:conditions:displacements [2013/07/12 18:58] – external edit 127.0.0.1doc:user:conditions:displacements [2016/03/30 15:23] (current) – external edit 127.0.0.1
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.1373648333.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki