Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2009:05_20

Commit 2009-05-20

Modifs

Exec Matlab

Pour Newac, on a besoin de calculer des fréquences propres d'une aube en rotation qui frotte sur un carter. Or, qui dit fréquence propre, dit fft. Comme Matlab fait très bien les fft, je me suis dit avec Romain et Luc que ce serait mieux que ce soit lui (Matlab) et pas moi qui le fasse. J'ai donc, à partir d'un truc de Romain pour ses cas-tests Arcelouille, écrit une petite procédure Python qui appelle Matlab et qui exécute un script Matlab. Dans mon cas, ledit script calcule les fréquences propres.

J'ai fait de la sortie Matlab une fonction objectif, comme ça, on a un extracteur qui vérifie qui l'exécution de Matlab s'est bien déroulée. Petit inconvénient, ça ne marche pas sous les stations vu que Matlab n'est pas installé dessus. Apparemment, ça ne pose pas de problème au niveau de la batterie.

Classes python de création de géométrie

Le problème était le suivant: quand on appelait la fonction createCube ou createRectangle, on avait droit à une volée d'arguments (17!) dont on n'avait en général pas grand chose à faire. De plus, quand on voulait ajouter un paramètre, on devait éventuellement modifier tous les cas-tests qui utilisent createCube pour ajouter ledit paramètre après tous les autres. Bref, c'était fastidieux! Sans compter toutes les fonctions annexes du style createRectangleSameId, createRectangleAtO ou encore createRectangleSameIdAtO qui avaient été écrites justement pour éviter de devoir passer 300 arguments à la fonction.

Tout ça pour essayer d'en venir au fait que Romain a commencé à réécrire createCube sous forme de classe (GenCube) pour que ce soit beaucoup plus lisible. J'ai fait de même pour createRectangle (GenSquare).

Avant, on écrivait:

  from toolbox.meshedGeometry3D import createCube
  createCube(domain, p['nx'], p['ny'], p['nz'], p['Lx'], p['Ly'], p['Lz'], 
             0, 0, 0, 0, 0, 0, 0, 0, 0, op)

Bonjour la lisibilité! Si on veut ajouter l'option de mailler en tétra ou au second degré, on doit ajouter encore deux paramètres à la fin de la fonction! Ca devient complètement illisible!

Maintenant, on écrit:

  from toolbox.genCube import CubeGenerator
  cube = CubeGenerator(geometry)
  cube.setNbElms(p['nx'], p['ny'], p['nz'])
  cube.setLength(p['Lx'], p['Ly'], p['Lz'])
  cube.setOperatorList(op)
  cube.execute()

C'est beaucoup plus clair et plus lisible. Si on veut mettre des tétras, on écrit maintenant simplement:

  cube.setTetra(True)

Facile sans tout polluer! Et si on veut ajouter une nouvelle fonctionnalité, il n'y a qu'à écrire une nouvelle fonction dans la classe avec une valeur par défaut et on ne doit pas modifier tous les cas-tests et le code python reste très lisible.

J'ai refait quelques cas-tests selon ce nouveau modèle pour encourager les gens à écrirre leur futurs cas-tests de la même façon bien propre.

Cas-tests

  • Comme j'en avais plein le dos de devoir corriger mes cas-tests de thèse (flambement d'aube) avec la nouvelle syntaxe à chaque fois que notre chef bien aimé me demandait de relancer un calcul, j'ai remis les différents maillages dans la batterie de tests. Il ne sont pas lancés, mais juste exécutés. Comme ça, ils évolueront avec Metafor. Et même notre chef bien aimé pourra les lancer ;-).
  • Je suis aussi retombé par hasard sur un jeu de données de la thèse de Laurent Adam (le célèbre elbowGeo) avec la géométrie qu'il a vraiment utilisée dans sa thèse. Je l'ai converti et je l'ai ajouté dans la batterie. A noter que le calcul s'arrête après 2600s, alors que Laurent le faisait aller jusque 3500s. Si ça amuse quelqu'un de déboguer le super plastic forming, libre à lui. Moi, je l'ai de toute façon bridé à 200s.

Fichiers ajoutés/retirés

A toolbox/genSquare.py
A toolbox/genCube.py
A sonaca/tools
A techspace/tests/impameta
A techspace/tests/impametaMesh
A techspace/tests/impameta/bucklingBlade.dat
A techspace/tests/impameta/bucklingBladeFriction.dat
A techspace/tests/impametaMesh/mesh1EasFix1.dat
A techspace/tests/impametaMesh/mesh1EasFix2.dat
A techspace/tests/impametaMesh/mesh1SriFix2.dat
A techspace/tests/impametaMesh/mesh2EasFix1.dat
A techspace/tests/impametaMesh/mesh2EasFix2.dat
A techspace/tests/impametaMesh/mesh2SriFix2.dat
A techspace/tests/impametaMesh/mesh3EasFix1.dat
A techspace/tests/impametaMesh/mesh3EasFix2.dat
A techspace/tests/impametaMesh/mesh3SriFix2.dat
A techspace/tests/impametaMesh/mesh4EasFix1.dat
A techspace/tests/impametaMesh/mesh4EasFix2.dat
A techspace/tests/impametaMesh/mesh4SriFix2.dat
A techspace/tests/impametaMesh/mesh5EasFix1.dat
A techspace/tests/impametaMesh/mesh5EasFix2.dat
A techspace/tests/impametaMesh/mesh5SriFix2.dat
A techspace/tests/impametaMesh/mesh6EasFix2.dat
A techspace/tests/impametaMesh/mesh6SriFix2.dat
A newac/tools/eigenFrequenciesComputation.m
A newac/tools/getDiscretizedValues.m
A newac/tools/getEigenValues.m
A newac/tools/postMatlabSulzer.py
A sonaca/tests/spf/elbowModif12.py
A sonaca/tools/__init__.py
A sonaca/tools/elbowGeo.py
A techspace/tests/impameta/__init__.py
A techspace/tests/impameta/bucklingBlade.py
A techspace/tests/impameta/bucklingBladeFriction.py
A techspace/tests/impametaMesh/__init__.py
A techspace/tests/impametaMesh/mesh1EasFix1.py
A techspace/tests/impametaMesh/mesh1EasFix2.py
A techspace/tests/impametaMesh/mesh1SriFix2.py
A techspace/tests/impametaMesh/mesh2EasFix1.py
A techspace/tests/impametaMesh/mesh2EasFix2.py
A techspace/tests/impametaMesh/mesh2SriFix2.py
A techspace/tests/impametaMesh/mesh3EasFix1.py
A techspace/tests/impametaMesh/mesh3EasFix2.py
A techspace/tests/impametaMesh/mesh3SriFix2.py
A techspace/tests/impametaMesh/mesh4EasFix1.py
A techspace/tests/impametaMesh/mesh4EasFix2.py
A techspace/tests/impametaMesh/mesh4SriFix2.py
A techspace/tests/impametaMesh/mesh5EasFix1.py
A techspace/tests/impametaMesh/mesh5EasFix2.py
A techspace/tests/impametaMesh/mesh5SriFix2.py
A techspace/tests/impametaMesh/mesh6EasFix2.py
A techspace/tests/impametaMesh/mesh6SriFix2.py
A techspace/tools/impametaBladeTools.py
R techspace/tests/aubeImpameta.dat
R techspace/tests/aubeImpametaFrot.dat
R techspace/tests/aubeImpameta.py
R techspace/tests/aubeImpametaFrot.py
R techspace/tools/aubeImpametaTools.py

Pierre-Paul Jeunechamps 2009/05/19 22:19

commit/2009/05_20.txt · Last modified: 2016/03/30 15:23 (external edit)