Cassiopee Forum
CFD python modules
S'il vous plaît connectez vous ou Enregistrement'.
Date et heure en ce moment : mardi, 12 décembre 2017, 07:45

Cassiopee Forum :: Discussions, suggestions, bug report :: Connector :: [RESOLU] Utilisation de blankCells()  ::
JefLeroy
Newbie
Image


Messages: 1
[RESOLU] Utilisation de blankCells() (jeudi, 17 mars 2011, 15:36)  
Bonjour,

Je cherche à masquer un morceau de maillage avec un corps ayant la forme d'une boite parallélépipédique. Pour cela je génère une zone avec Generator.PyTree.cart, j'en extraie la frontière extérieure, je la convertie en triangle et je cherche à utiliser ce "body1" comme masque. Voir ci-dessous le code.
La fonction blankCells() lève alors une erreur, comme si quelque part dans le pyTree constituant mon "body1" il y avait un noeud qui ne soit pas noeud CGNS (node[3] est inconnu). Pourtant, l'affichage de cette zone ne révèle aucune anomalie.
D'autre part, dans l'exemple de la doc Cassiopée, l'argument bodies est un peu bizarre : [[],[surf]]. A quoi sert cette liste vide ? Et pourquoi fournir surf comme une liste à un élément ?
J'utilise Cassiopee 1.7 sur stelvio.

[quote]
body1 = Generator.PyTree.cart((8000.,0.,-350.),(12000.,280.,700.), (2,2,2))
body1 = Post.PyTree.exteriorFaces(body1)
body1 = Converter.PyTree.convertArray2Tetra(body1)
BM = numpy.array([[1],[0]])
bodies = [body1]
t = Connector.PyTree.applyBCOverlaps(t)
t = Connector.PyTree.blankCells(t, bodies, BM, blankingType='cell_intersect', depth=2, XRaydim1=5000, XRaydim2=5000, delta=0., dim=3)

Traceback (most recent call last):
File "PrepareBlancking_UCAV_Dard.py", line 91, in <module>
t = Connector.PyTree.blankCells(t, bodies, BM, blankingType='cell_intersect', depth=2, XRaydim1=5000, XRaydim2=5000, delta=0., dim=3)
File "/tmp_user/stelvio/peron/Cassiopee1.7/Dist/bin/stv_r8/lib/python2.5/site-packages/Connector/PyTree.py", line 328, in blankCells
c = C.getFields(C.__GridCoordinates__, z)[0]
File "/tmp_user/stelvio/peron/Cassiopee1.7/Dist/bin/stv_r8/lib/python2.5/site-packages/Converter/PyTree.py", line 323, in getFields
nodes = Internal.getNodesFromType(t, 'Zone_t')
File "/tmp_user/stelvio/peron/Cassiopee1.7/Dist/bin/stv_r8/lib/python2.5/site-packages/Converter/Internal.py", line 50, in getNodesFromType
else: getNodesFromType__(node, ntype, result)
File "/tmp_user/stelvio/peron/Cassiopee1.7/Dist/bin/stv_r8/lib/python2.5/site-packages/Converter/Internal.py", line 55, in getNodesFromType__
for c in node[2]: getNodesFromType__(c, ntype, result)
File "/tmp_user/stelvio/peron/Cassiopee1.7/Dist/bin/stv_r8/lib/python2.5/site-packages/Converter/Internal.py", line 54, in getNodesFromType__
if (node[3] == ntype): result.append(node)
IndexError: string index out of range
[/quote]

Ip enregistré Statut: déconnecté Profil | Site Web 
Ordre des réponses: Première réponse en dernier :: Première réponse en premier
StephaniePeron
Full Member
Image


Messages: 159
RE: Utilisation de blankCells() (vendredi, 25 février 2011, 16:46)  
Il y a un bug dans convertArray2Tetra, avec des connectivités exotiques... Je recompile.

La doc dont tu parles est celle de la 1.6, non ? Pour la version courante (site interne), il n'y a plus de liste vide. En fait, avant, il fallait autant de bases que de corps... Depuis la 1.7 , tu peux avoir un arbre avec n bases que tu masques avec un seul corps :

[quote]
BM = numpy.array([[1]])
bodies = [body1]
t = X.blankCells(t, bodies, BM, blankingType='cell_intersect', depth=2, XRaydim1=5000, XRaydim2=5000, delta=1.e-10, dim=3)
[/quote]

surf est une liste effectivement ici avec une seule zone, mais ta surface peut être constituée de plusieurs zones (les parois d'un fuselage par exemple)
a+

Ip enregistré Statut: déconnecté Profil | Site Web 
CarolineLienard
Newbie
Image


Messages: 8
RE: Utilisation de blankCells() (jeudi, 3 mars 2011, 13:34)  
Bonjour,

J'essaye d'utiliser la fonction BlankCells de la version 1.6. J'ai une matrice de masquage carrée, autant de bases que de corps (avec une liste vide) et j'obtiens tout de même l'erreur suivante :

[quote]
Traceback (most recent call last):
File "CreateBackground_CGNS.py", line 248, in <module>
A = X.blankCells(A,bod,B,depth=2,blankingType='cell_intersect',delta=5.e-03,XRaydim1=4000,XRaydim2=4000)
File "/tmp_user/stelvio/peron/Cassiopee1.6/Dist/bin/stv_r8/lib/python2.5/site-packages/Connector/PyTree.py", line 293, in blankCells
c = C.getFields(C.__GridCoordinates__, z)[0]
IndexError: list index out of range
[/quote]

Du coup, par rapport au message précédent, je ne comprend pas bien à quoi cela est dû...

Merci.

Ip enregistré Statut: déconnecté Profil | Site Web 
CarolineLienard
Newbie
Image


Messages: 8
RE: Utilisation de blankCells() (jeudi, 3 mars 2011, 15:36)  
Et avec la version 1.7, j'ai le même message d'erreur que dans le premier message ci-dessus. Pourtant je n'utilise pas de convertArray2Tetra.

Ip enregistré Statut: déconnecté Profil | Site Web 
StephaniePeron
Full Member
Image


Messages: 159
RE: Utilisation de blankCells() (jeudi, 3 mars 2011, 17:50)  
Il y avait 3 pb dans ton script :

1 - bodyblocsfente est chez toi un arbre, or il faut que ce soit une liste de zone.
2- il faut enlever les blocs surfaciques qui définissent la paroi du fuselage dans ton bodyblocfente, il me semble, non ? Ce que tu souhaites représenter comme corps est la fente uniquement.
3- bodyblocsfente doit etre une surface (plusieurs zones structurées surfaciques ou TRI ou QUAD). En prenant les blocs volumiques, il faut faire un coup de T.join pour les fusionner avant de faire P.exteriorFaces.
Maintenant ça tourne et le masquage est correct.
a+

Ip enregistré Statut: déconnecté Profil | Site Web 
Nouvelle discussion - Discussion barrée, pas de réponse possible

Software PBLang 4.65 © 2002-2003 by Martin Senftleben
Image