From 681dac18aeb911441bcb5fbd42f057d02e8a71cc Mon Sep 17 00:00:00 2001 From: wolf Date: Thu, 30 Oct 2003 16:30:48 +0000 Subject: [PATCH] Throw an exception in 3d if degree>3 since then the mapping is not implemented. Previously, we would allow the creation of such an object, but that didn't make much sense since the object couldn't be used. git-svn-id: https://svn.dealii.org/trunk@8176 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/source/fe/mapping_q.cc | 48 ++++++++++++++++++-------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/deal.II/deal.II/source/fe/mapping_q.cc b/deal.II/deal.II/source/fe/mapping_q.cc index 848af86bd5..39b945af77 100644 --- a/deal.II/deal.II/source/fe/mapping_q.cc +++ b/deal.II/deal.II/source/fe/mapping_q.cc @@ -475,15 +475,33 @@ MappingQ::set_laplace_on_quad_vector(Table<2,double> &loqvs) const // not precomputed, then do so now if (dim==2) compute_laplace_vector(loqvs); - - // for dim==3 don't throw an - // ExcNotImplemented here to - // allow the creating of that - // MappingQ<3> object. But an - // ExcLaplaceVectorNotSet - // assertion is thrown when the - // apply_laplace_vector - // function is called. + else + // computing the Laplace + // vector for faces is not + // supported in 3d at + // present. presumably, doing + // so would not be so hard: + // we would only have to call + // the function in 2d, + // i.e. the quad values in 3d + // are equal to the cell + // values in 2d. however, + // that would require us to + // link in the 2d library, + // which is kind of awkward + // (note that + // compute_laplace_vector + // really makes use of a lot + // of 2d stuff, such as + // FEValues etc). an + // alternative would be to + // precompute the values of + // this array for a couple of + // higher mapping orders, pin + // down their values and + // insert them into the array + // above. + Assert (false, ExcNotImplemented()); } // the sum of weights of the points @@ -592,9 +610,9 @@ MappingQ::compute_laplace_vector(Table<2,double> &lvs) const for (unsigned int point=0; point::compute_laplace_vector(Table<2,double> &lvs) const for (unsigned int point=0; point S_1(n_inner); S_1.invert(S); -- 2.39.5