Rien - il n'est donc toujours pas possible
de définir un cas-test ALE via Bacon ou Z-Mesh.
Matr2 : Le solveur de Matr2 lance une exception si le
déterminant est nul (utile pour gérer les déterminants
nuls correctement).
Affichage Physet (Physet::print): j'avais laissé
un bug lors du nettoyage de VirtualSet.
Look Oofelie : j'ai nettoyé les crasses qui s'affichent lors
du lancement d'oofelie - maintenant c'est propre.
Création d'un Timer : la nouvelle classe Timer
(oo_meta/oo_kernel) peut servir de chronomètre. C'est une
adaptaion de ma routine provenant de Metafor. Elle se distingue de Chrono
par le fait qu'elle est indépendante du système (pas de ifdef/endif)
et ne s'occuppe pas du temps résidant (qui est inutile dans la plupart
des cas). Je l'ai utilisé pour optimiser la topologie.
ALE 3D : l'ALE 3D est presque ré-écrit complètement
dans Oofelie. Un test de convection à été ajouté
(qs_e.d/ale_con02.e) . Il reste à faire le remaillage des surfaces
courbes et la détection automatique des noeuds provenant de Bacon.
Il restera alors à faire quelques cas-tests et ajouter divers algorithmes
tels que la correction de la défo plastique (qui à tendance
à devenir négative) et le repositionnement des noeuds en contact.
Je dois aussi remettre la convection TVD (2nd ordre).
Surroundedness Test : tout ceci est expliqué en détails
dans le document surroundedness test.
En quelques mots, c'est un test qui répond à la question : "un
point sur la surface d'une face est-il à l'intérieur du contour
définissant la face (le contour étant quelconque et pouvant
posséder des trous). J'ai ajouté mes fichiers "*.e"
pour tester l'algorithme dans meta_apps.d/misc.d/surround.d.
Topologie : création de la Topologie comme indiqué
dans le document Topology. Optimisation
de celle-ci (voir graphe). Et utilisation
pour l'ALE 2D et 3D (l'ALE n'utilise plus du tout ni les Edges,
ni les Facets). Je vous encourage à utiliser la Topologie.
Ca a été un fameux boulot pour convertir tout ça en restant
général et performant.
Utilisation des "assert" : la macro "assert"
est bien pratique pour debugger (je vous conseille de l'utiliser pour des
tests qui ne doivent pas être effectués dans la version Release).
Posez-moi des questions si vous ne comprenez pas comment ça marche.
Par exemple, cela permet de faire des tests du genre "assert(positset);"
après avoir fait un get_properties. Les assert
sont actives uniquement en mode debug. Elles sont désactivées
lorsque la variable NDEBUG est définie (j'ai dû donc
ajouter cette macro pour cxx). Au niveau des fichiers d'en-tête, c'est
normalement "#include<cassert>" qu'il faut faire
d'après ce brave Stroustrup mais malheureusement
, seul le Visual connaît cassert ; on est donc réduit
à utiliser assert.h pour être compatible UNIX.