From: Liu Kai <liukai.sea@gm...>  20100717 07:59:31

Hi, I notice the find_neighbors() method seems not to give a correct answer when a Prism18 cell is adjacent to a Hex27 cell. When I trace the problem, I find for the side composing of same nodes, the two types cell's key() method override don't compute the same key value. Hex27::key() is a reimplement overriding Hex::key() because it can use the quad center node to compute a unique key. But the Prism18::key() does not do anything special for the quad side, though they have center node as well. So they give difference key. I have tried to add a reimplement version for Prism18::key() and it seems to work well, I put it at the tail of this mail. Am I right? Any suggestion or explanation is appreciated. Kai int Prism18::key (int s) const { SEASOLVER_ASSERT (s < this>n_sides()); switch (s) { case 0: // the triangular face at z=0 { return Prism::key(0); } case 1: // the quad face at y=0 { return Elem::compute_key (this>node(15)); } case 2: // the other quad face { return Elem::compute_key (this>node(16)); } case 3: // the quad face at x=0 { return Elem::compute_key (this>node(17)); } case 4: // the triangular face at z=1 { return Prism::key(4); } } // We'll never get here. SEASOLVER_ERROR(); return 0; } 