From: hartmann Date: Mon, 9 Aug 1999 15:41:59 +0000 (+0000) Subject: get_function_values also for non-active cells X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c6e700c3ce631b471fac7257b0f75a7807fadbb1;p=dealii-svn.git get_function_values also for non-active cells git-svn-id: https://svn.dealii.org/trunk@1646 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/fe/fe_values.h b/deal.II/deal.II/include/fe/fe_values.h index 3107d8d3ea..c8c5bf6278 100644 --- a/deal.II/deal.II/include/fe/fe_values.h +++ b/deal.II/deal.II/include/fe/fe_values.h @@ -284,6 +284,10 @@ class FEValuesBase * of the derived class was called, * at the quadrature points. * + * If the present cell is not an active + * one the interpolated function values + * are returned. + * * To get values of * multi-component elements, * there is another @@ -340,6 +344,10 @@ class FEValuesBase * by #fe_function# restricted to * #cell# at the quadrature points. * + * If the present cell is not an active + * one the interpolated function values + * are returned. + * * The function assumes that the * #gradients# object already has the * right size. @@ -353,6 +361,10 @@ class FEValuesBase * by #fe_function# restricted to * #cell# at the quadrature points. * + * If the present cell is not an active + * one the interpolated function values + * are returned. + * * The function assumes that the * #gradients# object already has the * right size. diff --git a/deal.II/deal.II/source/fe/fe_values.cc b/deal.II/deal.II/source/fe/fe_values.cc index fac295d1ea..4fdfced417 100644 --- a/deal.II/deal.II/source/fe/fe_values.cc +++ b/deal.II/deal.II/source/fe/fe_values.cc @@ -76,7 +76,10 @@ void FEValuesBase::get_function_values (const Vector &fe_function, // get function values of dofs // on this cell Vector dof_values (total_dofs); - present_cell->get_dof_values (fe_function, dof_values); + if (present_cell->active()) + present_cell->get_dof_values (fe_function, dof_values); + else + present_cell->get_interpolated_dof_values(fe_function, dof_values); // initialize with zero fill_n (values.begin(), n_quadrature_points, 0); @@ -105,8 +108,11 @@ void FEValuesBase::get_function_values (const Vector &fe_functi // get function values of dofs // on this cell Vector dof_values (total_dofs); - present_cell->get_dof_values (fe_function, dof_values); - + if (present_cell->active()) + present_cell->get_dof_values (fe_function, dof_values); + else + present_cell->get_interpolated_dof_values(fe_function, dof_values); + // initialize with zero for (unsigned i=0;i::get_function_grads (const Vector &fe_function, // get function values of dofs // on this cell Vector dof_values (total_dofs); - present_cell->get_dof_values (fe_function, dof_values); + if (present_cell->active()) + present_cell->get_dof_values (fe_function, dof_values); + else + present_cell->get_interpolated_dof_values(fe_function, dof_values); // initialize with zero fill_n (gradients.begin(), n_quadrature_points, Tensor<1,dim>()); @@ -180,7 +189,10 @@ void FEValuesBase::get_function_grads (const Vector &fe_ // get function values of dofs // on this cell Vector dof_values (total_dofs); - present_cell->get_dof_values (fe_function, dof_values); + if (present_cell->active()) + present_cell->get_dof_values (fe_function, dof_values); + else + present_cell->get_interpolated_dof_values(fe_function, dof_values); // initialize with zero for (unsigned i=0;i::get_function_2nd_derivatives (const Vector &fe // get function values of dofs // on this cell Vector dof_values (total_dofs); - present_cell->get_dof_values (fe_function, dof_values); + if (present_cell->active()) + present_cell->get_dof_values (fe_function, dof_values); + else + present_cell->get_interpolated_dof_values(fe_function, dof_values); // initialize with zero fill_n (second_derivatives.begin(), n_quadrature_points, Tensor<2,dim>());