From: Wolfgang Bangerth Date: Fri, 24 Apr 1998 14:54:21 +0000 (+0000) Subject: First step for restrictions of finite elements to faces. X-Git-Tag: v8.0.0~23061 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be285fe1e21200d2c26ff8a1cb41833e510720ac;p=dealii.git First step for restrictions of finite elements to faces. git-svn-id: https://svn.dealii.org/trunk@193 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 ef030e3b61..caa8d89214 100644 --- a/deal.II/deal.II/include/fe/fe_values.h +++ b/deal.II/deal.II/include/fe/fe_values.h @@ -653,12 +653,6 @@ class FEFaceValues { */ vector jacobi_matrices; - /** - * Store a pointer to the object describing - * the boundary of the domain. - */ - const Boundary &boundary; - /** * Store which fields are to be updated by * the reinit function. @@ -670,7 +664,7 @@ class FEFaceValues { -/*------------------------ Inline functions -----------------------------------*/ +/*------------------------ Inline functions: FEValues ----------------------------*/ @@ -725,6 +719,59 @@ FEValues::get_JxW_values () const { +/*------------------------ Inline functions: FEFaceValues ------------------------*/ + + +template +inline +const dFMatrix & FEFaceValues::get_shape_values () const { + return shape_values; +}; + + + + +template +inline +const vector > > & +FEFaceValues::get_shape_grads () const { + Assert (update_flags | update_gradients, ExcAccessToUninitializedField()); + return shape_gradients; +}; + + + +template +inline +const vector > & +FEFaceValues::get_quadrature_points () const { + Assert (update_flags | update_q_points, ExcAccessToUninitializedField()); + return quadrature_points; +}; + + + +template +inline +const vector > & +FEFaceValues::get_ansatz_points () const { + Assert (update_flags | update_ansatz_points, ExcAccessToUninitializedField()); + return ansatz_points; +}; + + + +template +inline +const vector & +FEFaceValues::get_JxW_values () const { + Assert (update_flags | update_JxW_values, ExcAccessToUninitializedField()); + return JxW_values; +}; + + + + /*---------------------------- fe_values.h ---------------------------*/ /* end of #ifndef __fe_values_H */ #endif diff --git a/deal.II/deal.II/include/numerics/assembler.h b/deal.II/deal.II/include/numerics/assembler.h index fa1ad5121f..6ca23f3edd 100644 --- a/deal.II/deal.II/include/numerics/assembler.h +++ b/deal.II/deal.II/include/numerics/assembler.h @@ -4,14 +4,17 @@ #define __problem_assembler_H /*---------------------------- problem_assembler.h ---------------------------*/ +#include #include #include -#include -#include +#include #include // forward declarations +template class FiniteElement; +template class Quadrature; + class dFMatrix; class dVector; diff --git a/deal.II/deal.II/source/fe/fe_values.cc b/deal.II/deal.II/source/fe/fe_values.cc index 9f127da495..dae361ba7a 100644 --- a/deal.II/deal.II/source/fe/fe_values.cc +++ b/deal.II/deal.II/source/fe/fe_values.cc @@ -161,8 +161,164 @@ void FEValues::reinit (const typename Triangulation::cell_iterator &ce +/*------------------------------- FEFaceValues -------------------------------*/ + + +template +FEFaceValues::FEFaceValues (const FiniteElement &fe, + const Quadrature &quadrature, + const UpdateFields update_flags) : + n_quadrature_points(quadrature.n_quadrature_points), + total_dofs(fe.total_dofs), + shape_values(fe.total_dofs, quadrature.n_quadrature_points), + shape_gradients(fe.total_dofs, + vector >(quadrature.n_quadrature_points)), + unit_shape_gradients(fe.total_dofs, + vector >(quadrature.n_quadrature_points)), + weights(quadrature.n_quadrature_points, 0), + JxW_values(quadrature.n_quadrature_points, 0), + quadrature_points(quadrature.n_quadrature_points, Point()), + unit_quadrature_points(quadrature.n_quadrature_points, Point()), + ansatz_points (fe.total_dofs, Point()), + jacobi_matrices (quadrature.n_quadrature_points, + dFMatrix(dim,dim)), + update_flags (update_flags) +{ + for (unsigned int i=0; i +double FEFaceValues::shape_value (const unsigned int i, + const unsigned int j) const { + Assert (i +const Point & +FEFaceValues::shape_grad (const unsigned int i, + const unsigned int j) const { + Assert (i +const Point & FEFaceValues::quadrature_point (const unsigned int i) const { + Assert (i +const Point & FEFaceValues::ansatz_point (const unsigned int i) const { + Assert (i +double FEFaceValues::JxW (const unsigned int i) const { + Assert (i +void FEFaceValues::reinit (const typename Triangulation::face_iterator &face, + const FiniteElement &fe, + const Boundary &boundary) { + // fill jacobi matrices and real + // quadrature points + if ((update_flags | update_jacobians) || + (update_flags | update_q_points)) +//** fe.fill_fe_values (face, +//** unit_quadrature_points, +//** jacobi_matrices, +//** update_flags | update_jacobians, +//** ansatz_points, +//** update_flags | update_ansatz_points, +//** quadrature_points, +//** update_flags | update_q_points, +//** boundary) + ; + + // compute gradients on real element if + // requested + if (update_flags | update_gradients) + { + Assert (update_flags | update_jacobians, ExcCannotInitializeField()); + + for (unsigned int i=0; i; template class FEValues<2>; +template class FEFaceValues<2>; + +