[Dune] Reference tetrahedron, again
Adrian Burri
burriad at mathematik.uni-freiburg.de
Thu Jul 21 15:40:55 CEST 2005
Well, I think the point is that there is no "correct" ordering, so we're
completely free to choose it to our liking. I don't have a clue where
the numbering convention in ReferenceTopologySet comes from, but I think
it is nice for two reasons:
- I used it in my implementation and don't need to change anything if we
stick to it
- the orientation of all faces is the same (inward pointing normal)
I think it is not up to me to decide whether this is the best possible
choice, but if noone has any objections against it, I would declare it
as the Dune standard.
Cheers
Adi
P.S. An algorithmic definition of the numbering is this: Given the three
face vertices, start with the smallest available index and choose the
rest so that the orientation of all faces is the same (inward pointing,
in this case).
Sreejith Pulloor Kuttanikkad wrote:
>On Thu, Jul 21, 2005 at 02:35:29PM +0200, Adrian Burri wrote:
>
>
>>Hi,
>>
>>the Dune-homepage says nothing about the numbering of the vertices on
>>faces, but as you can see from the attached program and output, the
>>numbering in the ReferenceSimplex changed from the way it was in the
>>ReferenceTopologySet. Can we stick to the way it was in the
>>ReferenceTopologySet? (I use this numbering convention heavily in
>>ALU3dGrid and would like to leave it as is...)
>>
>>
>
>
>Infact I had no idea how the numbering of the vertices on faces done
>(basic rule on local numbering of vertices on faces) and thats why the
>mismatch. could you please explain the basic rule of the numbering
>convention you following so that i could correct them.
>
>sreejith
>
>
>
>>Ciao
>>
>>Adi
>>
>>
>
>
>
>>//- System includes
>>#include <iostream>
>>
>>//- Dune includes
>>#include <dune/grid/common/reftopology.hh>
>>#include <dune/grid/common/referenceelements.hh>
>>
>>using namespace Dune;
>>
>>int main() {
>> int n;
>> const int* faceIdx;
>>
>> const int nFacesTet = 4;
>> const int nFacesHexa = 6;
>>
>> std::cout << "Test tetrahedra:" << std::endl;
>> std::cout << "----------------" << std::endl;
>>
>> ReferenceSimplexContainer<double, 3> simplexContainer;
>> const ReferenceSimplex<double, 3>& referenceTetrahedron =
>> simplexContainer(tetrahedron);
>>
>> for (int face = 0; face < nFacesTet; ++face) {
>> ReferenceTopologySet::getSubEntities<1,3>(tetrahedron, face, faceIdx, n);
>> std::cout << "Face " << face << ":" << std::endl;
>> std::cout << "(ReferenceTopologySet) "
>> << "{ " << faceIdx[0]
>> << ", " << faceIdx[1]
>> << ", " << faceIdx[2]
>> << " }" << std::endl;
>>
>> std::cout << "(ReferenceSimplex) "
>> << "{ " << referenceTetrahedron.subentity(face, 1, 0, 3)
>> << ", " << referenceTetrahedron.subentity(face, 1, 1, 3)
>> << ", " << referenceTetrahedron.subentity(face, 1, 2, 3)
>> << " }" << std::endl;
>>
>> }
>>
>> std::cout << std::endl;
>> std::cout << "Test hexahedra:" << std::endl;
>> std::cout << "---------------" << std::endl;
>>
>> ReferenceCubeContainer<double, 3> cubeContainer;
>> const ReferenceCube<double, 3>& referenceCube =
>> cubeContainer(cube);
>>
>> for (int face = 0; face < nFacesHexa; ++face) {
>> ReferenceTopologySet::getSubEntities<1,3>(hexahedron, face, faceIdx, n);
>>
>> std::cout << "Face " << face << ":" << std::endl;
>> std::cout << "(ReferenceTopologySet) "
>> << "{ " << faceIdx[0]
>> << ", " << faceIdx[1]
>> << ", " << faceIdx[2]
>> << " }" << std::endl;
>>
>> std::cout << "(ReferenceCube) "
>> << "{ " << referenceCube.subentity(face, 1, 0, 3)
>> << ", " << referenceCube.subentity(face, 1, 1, 3)
>> << ", " << referenceCube.subentity(face, 1, 2, 3)
>> << " }" << std::endl;
>> }
>>}
>>
>>
>
>
>
>>Test tetrahedra:
>>----------------
>>Face 0:
>>(ReferenceTopologySet) { 1, 3, 2 }
>>(ReferenceSimplex) { 1, 2, 3 }
>>Face 1:
>>(ReferenceTopologySet) { 0, 2, 3 }
>>(ReferenceSimplex) { 2, 0, 3 }
>>Face 2:
>>(ReferenceTopologySet) { 0, 3, 1 }
>>(ReferenceSimplex) { 0, 1, 3 }
>>Face 3:
>>(ReferenceTopologySet) { 0, 1, 2 }
>>(ReferenceSimplex) { 0, 1, 2 }
>>Test hexahedra:
>>---------------
>>Face 0:
>>(ReferenceTopologySet) { 0, 2, 4 }
>>(ReferenceCube) { 0, 2, 4 }
>>Face 1:
>>(ReferenceTopologySet) { 1, 3, 5 }
>>(ReferenceCube) { 1, 3, 5 }
>>Face 2:
>>(ReferenceTopologySet) { 0, 1, 4 }
>>(ReferenceCube) { 0, 1, 4 }
>>Face 3:
>>(ReferenceTopologySet) { 2, 3, 6 }
>>(ReferenceCube) { 2, 3, 6 }
>>Face 4:
>>(ReferenceTopologySet) { 0, 1, 2 }
>>(ReferenceCube) { 0, 1, 2 }
>>Face 5:
>>(ReferenceTopologySet) { 4, 5, 6 }
>>(ReferenceCube) { 4, 5, 6 }
>>
>>
>
>
>
>>_______________________________________________
>>Dune mailing list
>>Dune at hal.iwr.uni-heidelberg.de
>>http://hal.iwr.uni-heidelberg.de/cgi-bin/mailman/listinfo/dune
>>
>>
>
>
>
>
More information about the Dune
mailing list