Modifs
- Pressions:
- Suppression de PRESSION_2, PRESSION_3, etc (voir + bas)
- suppression d'un setFather en trop.

Modifs
- Nettoyage:
- Nettoyage de PieceWiseLinearFunction (merci à Antoine pour avoir trouvé le bug dans mes modifs)
Modifs
- Partie math : Création des fonctions à plusieurs paramètres :
- Création d'une classe de base à toutes les fonction (FunctionBase). De cette nouvelle classe dérive OneParameterFunction et MultiParameterFunction (nouvelle classe).
- Création d'un template SmallList<T> permettant de créer 2 petites classes utiles : Arguments (et KeyList - voir plus loin). SmallList n'est qu'un std::vector qui peut être rempli lors de la construction. Deux méthodes sont disponibles: sous python, une liste de maximum 4 pointeurs. En compilé, j'ai utilisé le système d'arguments variables (comme printf) qui permet de passer autant de paramètres qu'on veut.
- Partie physique : Modification de Properties
- Création d'une hiérarchie de classes qui gèrent un double + une fonction. J'ai appelé ces classes Property*. On a Property0P (constante), Property1P (constante*fct(x)), PropertyNP (constante*fct(x,y,z,...)).
- Properties peut gérer les fonctions multiparamètres en lui fournissant (par Properties::depend) une MultiParameterFunction et une SmallList<Key> (liste des clefs que j'ai renommé KeyList).
- Properties n'est plus un PhySet
- Interface Python
- Reste à créer des fonctions à plusieurs paramètres. Pour être général, j'ai créé une PythonMultiParameterFunction qui est très similaire à PythonOneParameterFunction. Les propriétés sont donc pilotées par python!
- Nouvel élément de traction:
- J'ai modifié l'élément de traction actuel pour qu'il fournisse à son ElementProperties les variables TX|AB, TY|AB et TZ|AB en plus du traditionnel TM. On peut donc spécifier directement dans le jeu de donnée une dépendance de la pression à la position initiale de chaque point de Gauss et du temps.
- Les propriétés PRESSION_2, PRESSION_3 et autres CISAIL_X_2, etc ont été virées. La pression est donc maintenant spécifiée à chaque point de Gauss directement (seuls PRESSION_1, CISAIL_X_1 et CISAIL_Y_1 sont utiles).
Un petit exemple
# fct python "pression"
def mfct(t,x0):
import math
fx = math.sin(2*math.pi*x0)
return (t-1)*fx
# objet inteface
pmfct = PythonMultiParameterFunction(mfct,2)
# ElementProperties
pressure=800
prp = ElementProperties(Traction2DElement)
prp.put(PRESSION_1, pressure)
prp.depend(PRESSION_1, pmfct, KeyList(Key(TM),Key(TX|AB)))
trop simple! et ça donne ça:

Fichiers ajoutés / supprimés
A mtMath/ConstantDriver.cpp
A mtMath/ConstantDriver.h
A mtMath/FunctionBase.cpp
A mtMath/FunctionBase.h
A mtMath/MultiParameterFunction.cpp
A mtMath/MultiParameterFunction.h
A mtMath/OneParamDriver.cpp
A mtMath/OneParamDriver.h
R mtLoadings/FunctLoadingDriver.cpp
R mtLoadings/FunctLoadingDriver.h
R mtLoadings/LoadingDriver.cpp
R mtLoadings/LoadingDriver.h
A mtKernel/KeyList.h
A mtKernel/Property0P.cpp
A mtKernel/Property0P.h
A mtKernel/Property1P.cpp
A mtKernel/Property1P.h
A mtKernel/PropertyNP.cpp
A mtKernel/PropertyNP.h
A mtKernel/SmallList.h
A mtKernel/SmallList.inl
A mtPython/PythonMultiParameterFunction.cpp
A mtPython/PythonMultiParameterFunction.h