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:44

Nouvelle discussion | Répondre
Cassiopee Forum :: Discussions, suggestions, bug report :: Generator :: utilisation de collarMesh  ::
Xavier Garnaud
Newbie
Image


Messages: 5
utilisation de collarMesh (mardi, 2 décembre 2014, 14:48) citation  
Bonjour,

Je cherche à utiliser collarMesh pour générer un maillage raffiné au pied d'une aube. La topologie est proche de celle qu'on peut obtenir avec un cube et un cylindre comme cela:

import os

import Converter.PyTree as C
import Geom.PyTree as D
import Transform.PyTree as T
import Generator.PyTree as G
import Converter.Internal as I
import Connector.PyTree as X

tree = C.newPyTree(['a',2,'b',2,'collar',3]);

a = G.cylinder((0,0,-1), 0.,.5,360,0,1., (30,20,30))
a = C.addBC2Zone(a,'wall','BCWall','jmax')
a = C.addBC2Zone(a,'wall','BCWall','kmax')
a = C.addBC2Zone(a,'wall','BCWall','kmin')

a = C.extractBCOfType(a,'BCWall')
tree[2][1][2]+=a

eps = 1.0
Nx,Ny,Nz = 10,10,10
hx,hy,hz = 2*eps/(Nx-1),2*eps/(Ny-1),2*eps/(Nz-1)

b = G.cart((-1,-1,-1), (hx,hy,hz), (Nx,Ny,Nz))
b = C.fillEmptyBCWith(b,'ext','BCWall')
b = C.extractBCOfType(b,'BCWall')

tree[2][2][2]+=b


dhj = G.cart((0.,0.,0.),(1.e-2,1,1),(21,1,1))
dhk = G.cart((0.,0.,0.),(1.e-2,1,1),(11,1,1))

print 'collar mesh',
c = G.collarMesh(b,a, dhj,dhk,niterj=100,niterk=100,type='difference',ext=1)
print ', done'

print 'overlap etc.',
c = X.applyBCOverlaps(c, depth=2)
c = X.cellN2OversetHoles(c)

c = X.optimizeOverlap(c)
c = X.maximizeBlankedCells(c,depth=2)

c = X.setInterpolations(c,loc='cell')
print ', done'

tree[2][3][2]+=c

C.convertPyTree2File(tree,"out.cgns")

J'ai essayé les différentes options de collarMesh, mais j'ai toujours quelques problèmes:
- les cellules crées le long du cylindre sont non orthogonales à la paroi car le cylindre ne dépasse pas du cube (et il me semble que ext doit être >= 1) (ce qui est le cas dans mon 'vrai' maillage),
- le calcul des celln ne donne pas le résultat auquel je m'attendrais

Sauriez vous comment procéder?
Merci d'avance,

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 collarMesh (mardi, 2 décembre 2014, 15:50) citation  
Bonjour,
Plusieurs points :
- Il faut des surfaces s'intersectant franchement. Si ce n'est pas le cas sur le maillage de peau, cela nécessite certes de travailler un peu sur les surfaces d'entrée.

- les surfaces d'entrée de collarMesh doivent être définie par une seule zone (et non une liste de zones)

- les normales à ces surfaces doivent être orientées vers l'extérieur (du solide vers le fluide ici)

a = C.convertArray2Tetra(a)
a = T.join(a)
a = T.reorder(a,(-1,))
b = C.convertArray2Tetra(b)
b = T.join(b)
b = T.reorder(b,(-1,))

Et le champ cellN m'a l'air OK du coup (sauf si je me trompe...)
Stéphanie


Ip enregistré Statut: déconnecté Profil | Site Web 
Nouvelle discussion | Répondre

Software PBLang 4.65 © 2002-2003 by Martin Senftleben
Image