La méthode ``findCommonTuples()`` retourne ainsi 2 paramètres: un tableau contenant la liste des tuples communs
et un tableau d'index qui permet de naviguer dans le premier tableau.
Il s'agit d'une forme de retour très classique dans MEDCoupling, appelée *indirect indexing*. Cela apparaît souvent dans la manipulation des
-maillages non structurés. Cette représentation est rappelée sur l'image ci-dessous, où le premier tableau et en haut,
+maillages non structurés. Cette représentation est rappelée sur l'image ci-dessous, où le premier tableau est en haut,
et le deuxième tableau permettant de la parcourir en bas:
.. image:: images/IndirectIndex.jpg
d3 += [3.3,4.4]
-Constuire un maillage non strucuturé
+Constuire un maillage non structuré
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On chercher maintenant à créer le maillage final montré dans la figure. Nous avons déjà construit le tableau
critères géométriques.
Il s'agit d'abord de calculer les barycentres des cellules 3D de ``mesh3D`` (méthode
``MEDCouplingUMesh.computeCellCenterOfMass()``).
- (*Note*: le nom -- un peu trop long -- de cette méthode hérite du passé. Le "AndOwner" indique le fait qu'en C++
- l'appelant est responsable de la désallocation de l'objet retourné : il prend l'*ownership* du résultat).
Ensuite sélectionner la composante #2 des barycentres des cellules et mettre le résultat dans ``baryZ``.
Ensuite il suffit de selectionner dans ``baryZ`` les tuples qui sont dans l'intervalle ``[zLev[1], zLev[2]]``.
L'idée est d'interpoler ``m`` avec ``m2Part``.
On récupèrera ensuite la matrice sparse ``myMat`` issue de ``m`` avec ``m2Part``.
-Ensuite l'idée et de générer une matrice sparse ``mat2`` à partir de ``myMat`` avec les ids globaux de ``m2``. ::
+Ensuite l'idée est de générer une matrice sparse ``mat2`` à partir de ``myMat`` avec les ids globaux de ``m2``. ::
def work(inp):
m2Part,partToGlob=inp
myRemap=mr.MEDCouplingRemapper()
assert(myRemap.prepare(m,m2Part,"P0P0")==1)
myMat=myRemap.getCrudeCSRMatrix()
- a=mc.DataArrayInt.Range(s.start,s.stop,s.step)
indptrnew=mc.DataArrayInt(m2.getNumberOfCells())
indptrnew.fillWithZero()
d=mc.DataArrayInt(myMat.indptr).deltaShiftIndex()