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

Nouvelle discussion | Répondre
Cassiopee Forum :: Discussions, suggestions, bug report :: Post :: Récupérer IJK d'un point à partir de x,y,z ?  ::
Fabien Gand
Newbie
Image


Messages: 15
Récupérer IJK d'un point à partir de x,y,z ? (vendredi, 25 mars 2011, 12:01) citation  
Bonjour,

Existe-t-il une fonction qui permet de récupérer le noeud de maillage (en coordonnées IJK) le plus proche d'une position (x,y,z) ?

Un peu comme extractPoint, sauf qu'au lieu de récupérer une solution interpolée en x,y,z , on aurait le noeud de maillage le plus proche...

Merci de votre aide

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: Récupérer IJK d'un point à partir de x,y,z ? (vendredi, 25 mars 2011, 14:12) citation  
Bonjour,

Non, on n'a pas une fonction qui fait ça, mais on note...
En attendant, un exemple pour le faire toi-même... mais ça peut être long sur un gros cas :

import Converter as C
import Generator as G
a = G.cart((0.,0.,0.),(1,1,1),(11,11,1))
x0 = 1.01; y0 = 2.; z0 = 0.
isav = -1; jsav = -1
eps = 1.e-6
a = C.initVars(a,'dx',1.e5); dx = a[1][3,:]
a = C.initVars(a,'dy',1.e5); dy = a[1][4,:]
a = C.initVars(a,'dz',1.e5); dz = a[1][5,:]

xt0 = [x0]*(a[2]*a[3]); dx = abs(a[1][0,:]-xt0[:])
yt0 = [y0]*(a[2]*a[3]); dy = abs(a[1][1,:]-yt0[:])
zt0 = [z0]*(a[2]*a[3]); dz = abs(a[1][2,:]-zt0[:])
a[1][3,:] = dx; a[1][4,:] = dy; a[1][5,:] = dz;
epsx = C.getMinValue(a,'dx')
epsy = C.getMinValue(a,'dy')
epsz = C.getMinValue(a,'dz')
for i in xrange(a[2]):
for j in xrange(a[3]):
ind = i + j*a[2]
if ( abs(dx[ind])<= epsx and abs(dy[ind]) <= epsy and abs(dz[ind]) <= epsz ):
isav = i; jsav = j
print isav, jsav


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

Software PBLang 4.65 © 2002-2003 by Martin Senftleben
Image