Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:general:fonctions

This is an old revision of the document!




Fonction d'évolution

Des fonctions sont utiles pour décrire la manière dont varient certains paramètres. Elles interviennent par exemple dans la définition des déplacements imposés ou dans la définition d'une loi d'écrouissage.

PieceWiseLinearFunction

On définit une fonction linéaire par morceaux - PieceWiseLinearFunction - point par point de la manière suivante:

  fct = PieceWiseLinearFunction()
  fct.setData(abs1, ord1)
  fct.setData(abs2, ord2)
  ...

abs1, abs2, … liste des abscisses
ord1, ord2, … liste des ordonnées

Remarque #1: Les fonctions d'évolution sont des objets dérivant de refCounted. Une fois associée à un chargement, ou une dépendance de propriété, leur référence est incrémentée et la gestion de leur mémoire associée aux objets la référenciant. Il n'est donc PLUS nécessaire (comme auparavant) de les définir globale dans le module python.8-O

Fonction linéaire par morceaux

Remarque #2: Comme le montre le schéma ci-dessus, les segments extrêmes (premier et dernier) sont extrapolés dans le cas de l'évaluation hors du domaine de définition.

PythonOneParameterFunction

Lorsqu'une fonction est trop complexe pour être définie par une PieceWiseLinearFunction, il faut passer par une définition analytique de la fonction. C'est possible grâce à python et les PythonOneParameterFunction.

Le but est de pouvoir faire passer une fonction python (ou tout objet appelable) comme OneParameterFunction.

Ceci permet de, par exemple, de:

Exemple: la fonction “rampe”:

  fct1 = PieceWiseLinearFunction()
  fct1.setdata(0,0)
  fct1.setdata(1,1)

devient, en version interprétée python:

  def f(a):
      return a
  fct1 = PythonOneParameterFunction(f)

ou, en utilisant les fonctions lambda de python:

  f = lambda x: x
  fct1 = PythonOneParameterFunction(f)

On peut aussi afficher une valeur à chaque évaluation ou modifier créer une fonction spéciale (en utilisant tout l'arsenal de python). Par exemple, on démarre une fonction de mise en charge avec une parabole et on la termine avec une droite - le changement de formule se fait par un if python.

  def f(a):
      val=0
      if(a‹0.5):
           val=a*a
      else:
           x=0.5*0.5;
           val=x+(a-0.5)/(1-0.5)*(1-x)
      print 'value=', val
      return val	
  fct1 = PythonOneParameterFunction(f)
doc/user/general/fonctions.1373648173.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki