From fccf03b217923133058e752ceb0348f161d78385 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@dune-project.org> Date: Wed, 4 May 2005 12:48:12 +0000 Subject: [PATCH] AmiraMesh writer can be switched over to use IndexSets now. Plus one bugfix [[Imported from SVN: r2007]] --- io/file/amiramesh/amirameshwriter.cc | 36 +++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/io/file/amiramesh/amirameshwriter.cc b/io/file/amiramesh/amirameshwriter.cc index d63d2c4cf..98b9d7741 100644 --- a/io/file/amiramesh/amirameshwriter.cc +++ b/io/file/amiramesh/amirameshwriter.cc @@ -58,7 +58,11 @@ void Dune::AmiraMeshWriter<GridType>::writeGrid(const GridType& grid, for (; vertex!=endvertex; ++vertex) { +#ifndef UGGRID_WITH_INDEX_SETS int index = vertex->index(); +#else + int index = grid.levelIndexSet().index(*vertex); +#endif const FieldVector<double, 3>& coords = vertex->geometry()[0]; ((float*)geo_node_data->dataPtr())[3*index+0] = coords[0]; @@ -90,8 +94,11 @@ void Dune::AmiraMeshWriter<GridType>::writeGrid(const GridType& grid, for (i=0; eIt!=eEndIt; ++eIt, i++) { for (int j=0; j<4; j++) +#ifndef UGGRID_WITH_INDEX_SETS dPtr[i*4+j] = eIt->template subIndex<3>(j)+1; - +#else + dPtr[i*4+j] = grid.levelIndexSet().template subIndex<3>(*eIt,j)+1; +#endif } } else { @@ -103,15 +110,22 @@ void Dune::AmiraMeshWriter<GridType>::writeGrid(const GridType& grid, const int hexaReordering[8] = {0, 1, 3, 2, 4, 5, 7, 6}; for (int j=0; j<8; j++) +#ifndef UGGRID_WITH_INDEX_SETS dPtr[8*i + j] = eIt->template subIndex<3>(hexaReordering[j])+1; - +#else + dPtr[8*i + j] = grid.levelIndexSet().template subIndex<3>(*eIt, hexaReordering[j])+1; +#endif break; } case prism : { const int prismReordering[8] = {0, 1, 1, 2, 3, 4, 4, 5}; for (int j=0; j<8; j++) +#ifndef UGGRID_WITH_INDEX_SETS dPtr[8*i + j] = eIt->template subIndex<3>(prismReordering[j])+1; +#else + dPtr[8*i + j] = grid.levelIndexSet().template subIndex<3>(*eIt, prismReordering[j])+1; +#endif break; } @@ -119,7 +133,11 @@ void Dune::AmiraMeshWriter<GridType>::writeGrid(const GridType& grid, case pyramid : { const int pyramidReordering[8] = {0, 1, 2, 3, 4, 4, 4, 4}; for (int j=0; j<8; j++) +#ifndef UGGRID_WITH_INDEX_SETS dPtr[8*i + j] = eIt->template subIndex<3>(pyramidReordering[j])+1; +#else + dPtr[8*i + j] = grid.levelIndexSet().template subIndex<3>(*eIt, pyramidReordering[j])+1; +#endif break; } @@ -128,7 +146,11 @@ void Dune::AmiraMeshWriter<GridType>::writeGrid(const GridType& grid, const int tetraReordering[8] = {0, 1, 2, 2, 3, 3, 3, 3}; for (int j=0; j<8; j++) +#ifndef UGGRID_WITH_INDEX_SETS dPtr[8*i + j] = eIt->template subIndex<3>(tetraReordering[j])+1; +#else + dPtr[8*i + j] = grid.levelIndexSet().template subIndex<3>(*eIt, tetraReordering[j])+1; +#endif break; } @@ -219,7 +241,11 @@ void Dune::AmiraMeshWriter<GridType>::writeGrid(const GridType& grid, for (; vertex!=endvertex; ++vertex) { +#ifndef UGGRID_WITH_INDEX_SETS int index = vertex->index(); +#else + int index = grid.levelIndexSet().index(*vertex); +#endif const FieldVector<double, DIM>& coords = vertex->geometry()[0]; ((float*)geo_node_data->dataPtr())[2*index+0] = coords[0]; @@ -252,7 +278,11 @@ void Dune::AmiraMeshWriter<GridType>::writeGrid(const GridType& grid, default : for (int j=0; j<element2->geometry().corners(); j++) +#ifndef UGGRID_WITH_INDEX_SETS dPtr[i*maxVerticesPerElement+j] = element2->template subIndex<DIM>(j)+1; +#else + dPtr[i*maxVerticesPerElement+j] = grid.levelIndexSet().template subIndex<DIM>(*element2, j)+1; +#endif // If the element has less than 8 vertices use the last value // to fill up the remaining slots @@ -379,7 +409,7 @@ void Dune::AmiraMeshWriter<GridType>::writeBlockVector(const GridType& grid, AmiraMesh::Field* nodeField; - if (containsOnlyTetrahedra) { + if (containsOnlyTetrahedra || GridType::dimension==2) { nodeField = new AmiraMesh::Field("sol", ncomp, McPrimType::mc_double, AmiraMesh::t_linear, nodeData); } else { -- GitLab