From 0619939632a121510f8a0a85f92c94c8847151f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <klinkjak@fjfi.cvut.cz> Date: Fri, 21 Oct 2016 14:06:52 +0200 Subject: [PATCH] Fixing mesh tests --- src/UnitTests/Meshes/MeshTest.h | 128 +++++++++++++++++--------------- 1 file changed, 70 insertions(+), 58 deletions(-) diff --git a/src/UnitTests/Meshes/MeshTest.h b/src/UnitTests/Meshes/MeshTest.h index ce762e4d5c..002bb3b73c 100644 --- a/src/UnitTests/Meshes/MeshTest.h +++ b/src/UnitTests/Meshes/MeshTest.h @@ -178,10 +178,14 @@ TEST( MeshTest, TwoTrianglesTest ) TEST( MeshTest, TetrahedronsTest ) { - typedef MeshEntity< TestTetrahedronMeshConfig, MeshTriangleTopology > TriangleMeshEntityType; - typedef MeshEntity< TestTetrahedronMeshConfig, MeshEdgeTopology > EdgeMeshEntityType; - typedef MeshEntity< TestTetrahedronMeshConfig, MeshVertexTopology > VertexMeshEntityType; - typedef typename VertexMeshEntityType::PointType PointType; + using TetrahedronMeshEntityType = MeshEntity< TestTetrahedronMeshConfig, MeshTetrahedronTopology >; + using TriangleMeshEntityType = typename TetrahedronMeshEntityType::SubentityTraits< 2 >::SubentityType; + using EdgeMeshEntityType = typename TetrahedronMeshEntityType::SubentityTraits< 1 >::SubentityType; + using VertexMeshEntityType = typename TetrahedronMeshEntityType::SubentityTraits< 0 >::SubentityType; + + using PointType = typename VertexMeshEntityType::PointType; + ASSERT_TRUE( PointType::getType() == ( Containers::StaticVector< 3, RealType >::getType() ) ); + typedef Mesh< TestTetrahedronMeshConfig > TestTetrahedronMesh; TestTetrahedronMesh mesh; MeshBuilder< TestTetrahedronMesh > meshBuilder; @@ -343,16 +347,18 @@ TEST( MeshTest, TetrahedronsTest ) TEST( MeshTest, RegularMeshOfTrianglesTest ) { - typedef MeshEntity< TestTriangleMeshConfig, MeshTriangleTopology > TriangleMeshEntityType; - typedef MeshEntity< TestTriangleMeshConfig, MeshEdgeTopology > EdgeMeshEntityType; - typedef MeshEntity< TestTriangleMeshConfig, MeshVertexTopology > VertexMeshEntityType; - typedef typename VertexMeshEntityType::PointType PointType; + using TriangleMeshEntityType = MeshEntity< TestTriangleMeshConfig, MeshTriangleTopology >; + using EdgeMeshEntityType = typename TriangleMeshEntityType::SubentityTraits< 1 >::SubentityType; + using VertexMeshEntityType = typename TriangleMeshEntityType::SubentityTraits< 0 >::SubentityType; + + using PointType = typename VertexMeshEntityType::PointType; + ASSERT_TRUE( PointType::getType() == ( Containers::StaticVector< 2, RealType >::getType() ) ); const IndexType xSize( 5 ), ySize( 5 ); const RealType width( 1.0 ), height( 1.0 ); const RealType hx( width / ( RealType ) xSize ), hy( height / ( RealType ) ySize ); - const IndexType numberOfCells = 2*xSize * ySize; + const IndexType numberOfCells = 2 * xSize * ySize; const IndexType numberOfVertices = ( xSize + 1 ) * ( ySize + 1 ); typedef Mesh< TestTriangleMeshConfig > TestTriangleMesh; @@ -366,7 +372,7 @@ TEST( MeshTest, RegularMeshOfTrianglesTest ) */ for( IndexType j = 0; j <= ySize; j++ ) for( IndexType i = 0; i <= xSize; i++ ) - meshBuilder.setPoint( j * ( xSize + 1 ) + i, PointType( i * hx, j * hy ) ); + meshBuilder.setPoint( j * ( xSize + 1 ) + i, PointType( i * hx, j * hy ) ); /**** * Setup cells @@ -396,11 +402,12 @@ TEST( MeshTest, RegularMeshOfTrianglesTest ) TEST( MeshTest, RegularMeshOfQuadrilateralsTest ) { -#ifdef UNDEF - typedef MeshEntity< TestQuadrilateralMeshConfig, MeshQuadrilateralTopology > QuadrilateralMeshEntityType; - typedef MeshEntity< TestQuadrilateralMeshConfig, MeshEdgeTopology > EdgeMeshEntityType; - typedef MeshEntity< TestQuadrilateralMeshConfig, MeshVertexTopology > VertexMeshEntityType; - typedef typename VertexMeshEntityType::PointType PointType; + using QuadrilateralMeshEntityType = MeshEntity< TestQuadrilateralMeshConfig, MeshQuadrilateralTopology >; + using EdgeMeshEntityType = typename QuadrilateralMeshEntityType::SubentityTraits< 1 >::SubentityType; + using VertexMeshEntityType = typename QuadrilateralMeshEntityType::SubentityTraits< 0 >::SubentityType; + + using PointType = typename VertexMeshEntityType::PointType; + ASSERT_TRUE( PointType::getType() == ( Containers::StaticVector< 2, RealType >::getType() ) ); const IndexType xSize( 5 ), ySize( 5 ); const RealType width( 1.0 ), height( 1.0 ); @@ -409,50 +416,53 @@ TEST( MeshTest, RegularMeshOfQuadrilateralsTest ) const IndexType numberOfCells = xSize * ySize; const IndexType numberOfVertices = ( xSize + 1 ) * ( ySize + 1 ); - Mesh< TestQuadrilateralMeshConfig > mesh, mesh2; - mesh.setNumberOfCells( numberOfCells ); - mesh.setNumberOfVertices( numberOfVertices ); + typedef Mesh< TestQuadrilateralMeshConfig > TestQuadrilateralMesh; + TestQuadrilateralMesh mesh, mesh2; + MeshBuilder< TestQuadrilateralMesh > meshBuilder; + meshBuilder.setPointsCount( numberOfVertices ); + meshBuilder.setCellsCount( numberOfCells ); /**** * Setup vertices */ - for( IndexType i = 0; i <= xSize; i++ ) - for( IndexType j = 0; j <= ySize; j++ ) - mesh.setVertex( j*xSize + i, PointType( i * hx, j * hy ) ); + for( IndexType j = 0; j <= ySize; j++ ) + for( IndexType i = 0; i <= xSize; i++ ) + meshBuilder.setPoint( j * ( xSize + 1 ) + i, PointType( i * hx, j * hy ) ); /**** * Setup cells */ IndexType cellIdx( 0 ); - for( IndexType i = 0; i < xSize; i++ ) - for( IndexType j = 0; j < ySize; j++ ) + for( IndexType j = 0; j < ySize; j++ ) + for( IndexType i = 0; i < xSize; i++ ) { IndexType vertex0 = j * xSize + i; IndexType vertex1 = j * xSize + i + 1; IndexType vertex2 = ( j + 1 ) * xSize + i; IndexType vertex3 = ( j + 1 ) * xSize + i + 1; - mesh.getEntities< 2 >()[ cellIdx ].getVerticesIndices()[ 0 ] = vertex0; - mesh.getEntities< 2 >()[ cellIdx ].getVerticesIndices()[ 1 ] = vertex1; - mesh.getEntities< 2 >()[ cellIdx ].getVerticesIndices()[ 2 ] = vertex2; - mesh.getEntities< 2 >()[ cellIdx++ ].getVerticesIndices()[ 3 ] = vertex3; + meshBuilder.getCellSeed( cellIdx ).setCornerId( 0, vertex0 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 1, vertex1 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 2, vertex2 ); + meshBuilder.getCellSeed( cellIdx++ ).setCornerId( 3, vertex3 ); } - MeshInitializer< TestQuadrilateralMeshConfig > meshInitializer; - //meshInitializer.initMesh( mesh ); - ASSERT_TRUE( mesh.save( "mesh-test.tnl" ) ); - ASSERT_TRUE( mesh2.load( "mesh-test.tnl" ) ); - ASSERT_TRUE( mesh == mesh2 ); + ASSERT_TRUE( meshBuilder.build( mesh ) ); + + //ASSERT_TRUE( mesh.save( "mesh-test.tnl" ) ); + //ASSERT_TRUE( mesh2.load( "mesh-test.tnl" ) ); + //ASSERT_TRUE( mesh == mesh2 ); //mesh.print(std::cout ); -#endif } TEST( MeshTest, RegularMeshOfHexahedronsTest ) { -#ifdef UNDEF - typedef MeshEntity< TestHexahedronMeshConfig, MeshHexahedronTopology > HexahedronMeshEntityType; - typedef MeshEntity< TestHexahedronMeshConfig, MeshEdgeTopology > EdgeMeshEntityType; - typedef MeshEntity< TestHexahedronMeshConfig, MeshVertexTopology > VertexMeshEntityType; - typedef typename VertexMeshEntityType::PointType PointType; + using HexahedronMeshEntityType = MeshEntity< TestHexahedronMeshConfig, MeshHexahedronTopology >; + using TriangleMeshEntityType = typename HexahedronMeshEntityType::SubentityTraits< 2 >::SubentityType; + using EdgeMeshEntityType = typename HexahedronMeshEntityType::SubentityTraits< 1 >::SubentityType; + using VertexMeshEntityType = typename HexahedronMeshEntityType::SubentityTraits< 0 >::SubentityType; + + using PointType = typename VertexMeshEntityType::PointType; + ASSERT_TRUE( PointType::getType() == ( Containers::StaticVector< 3, RealType >::getType() ) ); const IndexType xSize( 5 ), ySize( 5 ), zSize( 5 ); const RealType width( 1.0 ), height( 1.0 ), depth( 1.0 ); @@ -462,25 +472,27 @@ TEST( MeshTest, RegularMeshOfHexahedronsTest ) const IndexType numberOfCells = xSize * ySize * zSize; const IndexType numberOfVertices = ( xSize + 1 ) * ( ySize + 1 ) * ( zSize + 1 ); - Mesh< TestHexahedronMeshConfig > mesh, mesh2; - mesh.setNumberOfCells( numberOfCells ); - mesh.setNumberOfVertices( numberOfVertices ); + typedef Mesh< TestHexahedronMeshConfig > TestHexahedronMesh; + TestHexahedronMesh mesh, mesh2; + MeshBuilder< TestHexahedronMesh > meshBuilder; + meshBuilder.setPointsCount( numberOfVertices ); + meshBuilder.setCellsCount( numberOfCells ); /**** * Setup vertices */ - for( IndexType i = 0; i <= xSize; i++ ) + for( IndexType k = 0; k <= zSize; k++ ) for( IndexType j = 0; j <= ySize; j++ ) - for( IndexType k = 0; k <= zSize; k++ ) - mesh.setVertex( k * xSize * ySize + j * xSize + i, PointType( i * hx, j * hy, k * hz ) ); + for( IndexType i = 0; i <= xSize; i++ ) + meshBuilder.setPoint( k * ( xSize + 1 ) * ( ySize + 1 ) + j * ( xSize + 1 ) + i, PointType( i * hx, j * hy, k * hz ) ); /**** * Setup cells */ IndexType cellIdx( 0 ); - for( IndexType i = 0; i < xSize; i++ ) + for( IndexType k = 0; k < zSize; k++ ) for( IndexType j = 0; j < ySize; j++ ) - for( IndexType k = 0; k < zSize; k++ ) + for( IndexType i = 0; i < xSize; i++ ) { IndexType vertex0 = k * xSize * ySize + j * xSize + i; IndexType vertex1 = k * xSize * ySize + j * xSize + i + 1; @@ -489,25 +501,25 @@ TEST( MeshTest, RegularMeshOfHexahedronsTest ) IndexType vertex4 = ( k + 1 ) * xSize * ySize + j * xSize + i; IndexType vertex5 = ( k + 1 ) * xSize * ySize + j * xSize + i + 1; IndexType vertex6 = ( k + 1 ) * xSize * ySize + ( j + 1 ) * xSize + i; - IndexType vertex7 = ( k + 1 )* xSize * ySize + ( j + 1 ) * xSize + i + 1; - - mesh.getEntities< 3 >()[ cellIdx ].getVerticesIndices()[ 0 ] = vertex0; - mesh.getEntities< 3 >()[ cellIdx ].getVerticesIndices()[ 1 ] = vertex1; - mesh.getEntities< 3 >()[ cellIdx ].getVerticesIndices()[ 2 ] = vertex2; - mesh.getEntities< 3 >()[ cellIdx ].getVerticesIndices()[ 3 ] = vertex3; - mesh.getEntities< 3 >()[ cellIdx ].getVerticesIndices()[ 4 ] = vertex4; - mesh.getEntities< 3 >()[ cellIdx ].getVerticesIndices()[ 5 ] = vertex5; - mesh.getEntities< 3 >()[ cellIdx ].getVerticesIndices()[ 6 ] = vertex6; - mesh.getEntities< 3 >()[ cellIdx++ ].getVerticesIndices()[ 7 ] = vertex7; + IndexType vertex7 = ( k + 1 ) * xSize * ySize + ( j + 1 ) * xSize + i + 1; + + meshBuilder.getCellSeed( cellIdx ).setCornerId( 0, vertex0 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 1, vertex1 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 2, vertex2 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 3, vertex3 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 4, vertex4 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 5, vertex5 ); + meshBuilder.getCellSeed( cellIdx ).setCornerId( 6, vertex6 ); + meshBuilder.getCellSeed( cellIdx++ ).setCornerId( 7, vertex7 ); } - MeshInitializer< TestHexahedronMeshConfig > meshInitializer; + ASSERT_TRUE( meshBuilder.build( mesh ) ); + //meshInitializer.initMesh( mesh ); /*ASSERT_TRUE( mesh.save( "mesh-test.tnl" ) ); ASSERT_TRUE( mesh2.load( "mesh-test.tnl" ) ); ASSERT_TRUE( mesh == mesh2 );*/ //mesh.print(std::cout ); -#endif } #endif -- GitLab