From 13f63b7803ed0275443ea74a7a99dda0480b0230 Mon Sep 17 00:00:00 2001 From: Guido Kanschat Date: Fri, 11 May 2001 15:10:57 +0000 Subject: [PATCH] bug in normal vectors fixed git-svn-id: https://svn.dealii.org/trunk@4592 0785d39b-7218-0410-832d-ea1e28bc413d --- .../deal.II/source/fe/mapping_cartesian.cc | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/deal.II/deal.II/source/fe/mapping_cartesian.cc b/deal.II/deal.II/source/fe/mapping_cartesian.cc index 83d30b5abc..79509f6cfc 100644 --- a/deal.II/deal.II/source/fe/mapping_cartesian.cc +++ b/deal.II/deal.II/source/fe/mapping_cartesian.cc @@ -63,11 +63,17 @@ MappingCartesian::update_each (const UpdateFlags in) const template typename Mapping::InternalDataBase * -MappingCartesian::get_data (const UpdateFlags flags, +MappingCartesian::get_data (const UpdateFlags update_flags, const Quadrature &q) const { - Assert (flags & update_normal_vectors == 0, ExcNotImplemented()); + // Assert (flags & update_normal_vectors == 0, ExcNotImplemented()); + InternalData* data = new InternalData (q); + + data->update_once = update_once(update_flags); + data->update_each = update_each(update_flags); + data->update_flags = data->update_once | data->update_each; + return data; } @@ -75,11 +81,16 @@ MappingCartesian::get_data (const UpdateFlags flags, template typename Mapping::InternalDataBase * -MappingCartesian::get_face_data (const UpdateFlags, +MappingCartesian::get_face_data (const UpdateFlags update_flags, const Quadrature& quadrature) const { QProjector q (quadrature, false); InternalData* data = new InternalData (q); + + data->update_once = update_once(update_flags); + data->update_each = update_each(update_flags); + data->update_flags = data->update_once | data->update_each; + return data; } @@ -87,11 +98,16 @@ MappingCartesian::get_face_data (const UpdateFlags, template typename Mapping::InternalDataBase * -MappingCartesian::get_subface_data (const UpdateFlags, +MappingCartesian::get_subface_data (const UpdateFlags update_flags, const Quadrature &quadrature) const { QProjector q (quadrature, true); InternalData* data = new InternalData (q); + + data->update_once = update_once(update_flags); + data->update_each = update_each(update_flags); + data->update_flags = data->update_once | data->update_each; + return data; } @@ -107,7 +123,6 @@ MappingCartesian::compute_fill (const typename DoFHandler::cell_iterat std::vector > &quadrature_points, std::vector > &normal_vectors) const { -//TODO:[GK] does it make sense to query the update flags in data if we did not set any in the get_*_data functions? UpdateFlags update_flags(data.current_update_flags()); const unsigned int npts = quadrature_points.size (); @@ -210,7 +225,7 @@ MappingCartesian::compute_fill (const typename DoFHandler::cell_iterat n (1) = 1.; break; case 203: - n (0) = 1.; + n (0) = -1.; break; // 3D case 300: -- 2.39.5