Table of Contents

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

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