Bonjour,
Je m'excuse a l'avance si je ne suis pas au bon endroit.
Je suis actuellement en stage de recherche a l'universite de Strathclyde et j'ai besoin d'effectuer une simu numerique.
PB : pas de matlab a l'horizon
Ca tombe bien je veux me mettre au python depuis un moment et je n'ai pas tant de competence que ca sur matlab donc pas une grosse perte.
J'aimerais que quelqu'un puisse juste m'aiguiller sur le choix des outils et eventuellement me donner des idees sur la realisation.
Donc d'abord la presentation de mes besoins : je divise mon "projet" en 3 phases :
- Tout d'abord j'ai besoin d'une visualisation de ma simulation (juste pour verifier que tout se passe comme prevu et qu'il n'y a pas de comportement etranges)
Je voudrais une grille3D de cube qui ferait 100*100*100 (voir plus ensuite)
Ces cubes devraient etre blanc transparents par exemple (etat plein) ou Noir (etat vide) enfin bref un changement de couleur binaire. (eventuellement 3 etats)
A part ca je n'ai pas besoin de controler leur taille (i.e taille unique) et je veux qu'ils soient reparti homogenement dans une grille orthogonale.
l'idee est que ces cubes represente des pores dans un materiau, qui sont soit remplis d'eau soit vides. je veux savoir.
- Ensuite j'ai besoin de faire une petite routine qui vide les pores en fonction de certaines conditions, donc une boucle avec des if. tres simple.
Sauf que quand je dis qu'une pore dois ce vider dans cette boucle je veux que ma visu change en meme temps.
Donc ca c'est pas compliquer du tout normalement.
- Et enfin je dois construire mon reseau de pores. Vous allez me dire que j'aurai peut etre du commencer par la mais malheureusement non je ne peux pas j'ai besoin de donnees experimentales que je n'ai pas encore.
Donc en gros pour contruire mon reseau je dispose d'une distribution statistique des pores en fonctions de leur taille (que j'aurais eu experimentalement). Je dois donc recreer une reseau qui match cette distribution d'un point de vue statistique.
Donc la je ne sais pas trop comment m'y prendre encore, je vais me plonger dans Numpy mais je voudrais juste que quelqu'un me dise : oui c'est faisable et pas trop douloureux.
Comme outils j'ai decide d'opter pour une distribution python all-in-one. J'ai choisi Enthought Python distribution.
Donc je me retrouve avec Pylab et Mayavi (et IDLE)
Je suis a peu pres sur au'il est possible de faire ce que je veux avec ces outils, ma question est est-ce qu'on peut le faire efficassement et comment ?
Pour la visualisation etant un enorme noob du python j'ai fouiner quelques heures et j'ai trouvee un truc qui n'est pas optimal mais diablement simple :
Dans mayavi.mlab il y a barchart()
C'est pas fait pour a l'origine mais ca marche plus ou moins bien, a savoir que pour changer la couleur la seule facon de faire c'est de changer la valeur ce qui change egalement la hauteur de mes barres
Mais ca fait une grille 3d orthonormee et ca mets des cubes dedans tout seul.
Bon ok c'est nul, ce qui serait vraiment cool c'est de faire une vraie grille et des vrais cubes mais je n'ai pas pu trouver une fonction qui me dessine un cube.
Mon probleme c'est surtout que barchart n'aime pas ma grille de 100*100*100 et il plante/mets des plombes a me faire ca, alors que 10*10*10 il le fait en 2 secondes.
Donc voila mon principale probleme est clairement la visualisation, Mayavi m'a l'air d'etre bien trop elaborer et puissant pour la tache tres simple dont j'ai besoin, et je n'avais jamais entendu parler de VTK avant donc la question se pose est-ce bien raisonnable comme outil ?
Je vous remercie d'avance de vos conseils avisees et n'hesitez pas a me demander d'autres details.
Felix.
Partager