From b338c50c9123affc8f570cab1eaeecc26c48e71e Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Thu, 7 Apr 2016 15:37:43 -0500 Subject: [PATCH] Use a fixed size data structure for MappingManifold::InternalData::unit_tangentials. --- include/deal.II/fe/mapping_manifold.h | 4 ++-- source/fe/mapping_manifold.cc | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/deal.II/fe/mapping_manifold.h b/include/deal.II/fe/mapping_manifold.h index c9446c1ea7..5454dba092 100644 --- a/include/deal.II/fe/mapping_manifold.h +++ b/include/deal.II/fe/mapping_manifold.h @@ -269,7 +269,7 @@ public: * Unit tangential vectors. Used for the computation of boundary forms and * normal vectors. * - * This vector has (dim-1)GeometryInfo::faces_per_cell entries. The first + * This array has (dim-1)*GeometryInfo::faces_per_cell entries. The first * GeometryInfo::faces_per_cell contain the vectors in the first * tangential direction for each face; the second set of * GeometryInfo::faces_per_cell entries contain the vectors in the second @@ -278,7 +278,7 @@ public: * * Filled once. */ - std::vector > > unit_tangentials; + std_cxx11::array >, GeometryInfo::faces_per_cell *(dim-1)> unit_tangentials; /** * Tensors of covariant transformation at each of the quadrature points. diff --git a/source/fe/mapping_manifold.cc b/source/fe/mapping_manifold.cc index fa516e13d9..2a0fc4f0a4 100644 --- a/source/fe/mapping_manifold.cc +++ b/source/fe/mapping_manifold.cc @@ -1,6 +1,6 @@ // --------------------------------------------------------------------- // -// Copyright (C) 2000 - 2015 by the deal.II authors +// Copyright (C) 2016 by the deal.II authors // // This file is part of the deal.II library. // @@ -114,11 +114,9 @@ initialize_face (const UpdateFlags update_flags, { aux.resize (dim-1, std::vector > (n_original_q_points)); - // Compute tangentials to the - // unit cell. - const unsigned int nfaces = GeometryInfo::faces_per_cell; - unit_tangentials.resize (nfaces*(dim-1), - std::vector > (n_original_q_points)); + // Compute tangentials to the unit cell. + for (unsigned int i=0; i::faces_per_cell; ++i) { Tensor<1,dim> tang; tang[1-i/2]=tangential_orientation[i]; std::fill (unit_tangentials[i].begin(), - unit_tangentials[i].end(), tang); + unit_tangentials[i].end(), + tang); } break; } case 3: { - for (unsigned int i=0; i::faces_per_cell; ++i) { Tensor<1,dim> tang1, tang2; @@ -160,8 +159,9 @@ initialize_face (const UpdateFlags update_flags, // points on this face std::fill (unit_tangentials[i].begin(), unit_tangentials[i].end(), tang1); - std::fill (unit_tangentials[nfaces+i].begin(), - unit_tangentials[nfaces+i].end(), tang2); + std::fill (unit_tangentials[GeometryInfo::faces_per_cell+i].begin(), + unit_tangentials[GeometryInfo::faces_per_cell+i].end(), + tang2); } break; } -- 2.39.5