#include <base/subscriptor.h>
#include <lac/fullmatrix.h>
#include <grid/dof.h>
-#include <grid/tria_boundary.h>
#include <base/point.h>
#include <grid/tria.h>
#include <fe/fe_update_flags.h>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
-class FEValuesBase {
+class FEValuesBase
+{
public:
/**
const unsigned int n_transform_functions,
const unsigned int n_values_array,
const UpdateFlags update_flags,
- const FiniteElement<dim> &fe,
- const Boundary<dim> &boundary);
+ const FiniteElement<dim> &fe);
/**
* Store the finite element for later use.
*/
const SmartPointer<const FiniteElement<dim> > fe;
-
- /**
- * Store the boundary for later use.
- */
- const SmartPointer<const Boundary<dim> > boundary;
};
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
-class FEValues : public FEValuesBase<dim> {
+class FEValues
+ :
+ public FEValuesBase<dim>
+{
public:
* need to be initialized using the
* #reinit# function.
*
+ * UPDATE!
+ *
* This function needs a boundary object
* passed, since this class needs to know
* how to handle faces which are located
*/
FEValues (const FiniteElement<dim> &fe,
const Quadrature<dim> &quadrature,
- const UpdateFlags update_flags,
- const Boundary<dim> &boundary);
+ const UpdateFlags update_flags);
/**
* Reinitialize the gradients, Jacobi
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
-class FEFaceValuesBase : public FEValuesBase<dim> {
+class FEFaceValuesBase
+ :
+ public FEValuesBase<dim>
+{
public:
/**
* Constructor. Call the constructor of
const unsigned int n_transform_functions,
const unsigned int n_faces_or_subfaces,
const UpdateFlags update_flags,
- const FiniteElement<dim> &fe,
- const Boundary<dim> &boundary);
+ const FiniteElement<dim> &fe);
/**
* Return the outward normal vector to
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
-class FEFaceValues : public FEFaceValuesBase<dim> {
+class FEFaceValues
+ :
+ public FEFaceValuesBase<dim>
+{
public:
/**
* Constructor. Fill all arrays with the
* need to be initialized using the
* #reinit# function.
*
+ * UPDATE!
+ *
* This function needs a boundary object
* passed, since this class needs to know
* how to handle faces which are located
*/
FEFaceValues (const FiniteElement<dim> &,
const Quadrature<dim-1> &,
- const UpdateFlags,
- const Boundary<dim> &);
+ const UpdateFlags);
/**
* Reinitialize the gradients, Jacobi
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
-class FESubfaceValues : public FEFaceValuesBase<dim> {
+class FESubfaceValues
+ :
+ public FEFaceValuesBase<dim>
+{
public:
/**
* Constructor. Fill all arrays with the
*/
FESubfaceValues (const FiniteElement<dim> &fe,
const Quadrature<dim-1> &face_quadrature,
- const UpdateFlags update_flags,
- const Boundary<dim> &boundary);
+ const UpdateFlags update_flags);
/**
* Reinitialize the gradients, Jacobi
const unsigned int total_dofs = selected_fe->total_dofs;
vector<int> dofs_on_this_cell(total_dofs);
- cell_iterator cell = begin_active(level),
+ cell_iterator cell = begin(level),
endc = end(level);
for (; cell!=endc; ++cell)
{
const unsigned int n_transform_functions,
const unsigned int n_values_arrays,
const UpdateFlags update_flags,
- const FiniteElement<dim> &fe,
- const Boundary<dim> &boundary) :
+ const FiniteElement<dim> &fe)
+ :
n_quadrature_points (n_q_points),
total_dofs (total_dofs),
n_transform_functions (n_transform_functions),
n_quadrature_points)),
selected_dataset (0),
update_flags (update_flags),
- fe(&fe),
- boundary(&boundary)
+ fe(&fe)
{};
template <int dim>
FEValues<dim>::FEValues (const FiniteElement<dim> &fe,
const Quadrature<dim> &quadrature,
- const UpdateFlags update_flags,
- const Boundary<dim> &boundary) :
+ const UpdateFlags update_flags)
+ :
FEValuesBase<dim> (quadrature.n_quadrature_points,
fe.total_dofs,
fe.total_dofs,
fe.n_transform_functions,
1,
update_flags,
- fe,
- boundary),
+ fe),
unit_shape_gradients(fe.total_dofs,
vector<Tensor<1,dim> >(quadrature.n_quadrature_points)),
unit_shape_2nd_derivatives(fe.total_dofs,
const unsigned int n_transform_functions,
const unsigned int n_faces_or_subfaces,
const UpdateFlags update_flags,
- const FiniteElement<dim> &fe,
- const Boundary<dim> &boundary) :
+ const FiniteElement<dim> &fe)
+ :
FEValuesBase<dim> (n_q_points,
n_support_points,
total_dofs,
n_transform_functions,
n_faces_or_subfaces,
update_flags,
- fe,
- boundary),
+ fe),
unit_shape_gradients (n_faces_or_subfaces,
vector<vector<Tensor<1,dim> > >(total_dofs,
vector<Tensor<1,dim> >(n_q_points))),
template <int dim>
FEFaceValues<dim>::FEFaceValues (const FiniteElement<dim> &fe,
const Quadrature<dim-1> &quadrature,
- const UpdateFlags update_flags,
- const Boundary<dim> &boundary) :
+ const UpdateFlags update_flags)
+ :
FEFaceValuesBase<dim> (quadrature.n_quadrature_points,
fe.dofs_per_face,
fe.total_dofs,
fe.n_transform_functions,
GeometryInfo<dim>::faces_per_cell,
update_flags,
- fe,
- boundary)
+ fe)
{
unit_face_quadrature_points = quadrature.get_quad_points();
weights = quadrature.get_weights ();
template <int dim>
FESubfaceValues<dim>::FESubfaceValues (const FiniteElement<dim> &fe,
const Quadrature<dim-1> &quadrature,
- const UpdateFlags update_flags,
- const Boundary<dim> &boundary) :
+ const UpdateFlags update_flags)
+ :
FEFaceValuesBase<dim> (quadrature.n_quadrature_points,
0,
fe.total_dofs,
fe.n_transform_functions,
GeometryInfo<dim>::faces_per_cell * GeometryInfo<dim>::subfaces_per_face,
update_flags,
- fe,
- boundary)
+ fe)
{
Assert ((update_flags & update_support_points) == false,
ExcInvalidUpdateFlag());
template <int dim>
void FESubfaceValues<dim>::reinit (const typename DoFHandler<dim>::cell_iterator &cell,
const unsigned int face_no,
- const unsigned int subface_no) {
+ const unsigned int subface_no)
+{
Assert (cell->face(face_no)->at_boundary() == false,
ExcReinitCalledWithBoundaryFace());
const unsigned int total_dofs = selected_fe->total_dofs;
vector<int> dofs_on_this_cell(total_dofs);
- cell_iterator cell = begin_active(level),
+ cell_iterator cell = begin(level),
endc = end(level);
for (; cell!=endc; ++cell)
{
rhs_vector(local_data->rhs_vector),
fe_values (dof_handler->get_fe(),
local_data->quadrature,
- local_data->update_flags,
- tria->get_boundary())
+ local_data->update_flags)
{
Assert (!assemble_matrix || (matrix.m() == dof_handler->n_dofs()),
ExcInvalidData());
QIteratedTrapez<dim> points(accuracy);
- FEValues<dim> fe(dofs->get_fe(), points, UpdateFlags(update_q_points),
- dofs->get_tria().get_boundary());
+ FEValues<dim> fe(dofs->get_fe(), points, UpdateFlags(update_q_points));
vector< vector <Vector<double> > >
values (dof_data.size(),
vector< Vector<double> >(points.n_quadrature_points,
((!neumann_bc.empty() ||
(coefficient != 0)) ?
update_q_points : 0) |
- update_normal_vectors),
- dof.get_tria().get_boundary());
- FEFaceValues<dim> fe_face_values_neighbor (dof.get_fe(), quadrature, update_gradients,
- dof.get_tria().get_boundary());
- FESubfaceValues<dim> fe_subface_values (dof.get_fe(), quadrature, update_gradients,
- dof.get_tria().get_boundary());
+ update_normal_vectors));
+ FEFaceValues<dim> fe_face_values_neighbor (dof.get_fe(), quadrature, update_gradients);
+ FESubfaceValues<dim> fe_subface_values (dof.get_fe(), quadrature, update_gradients);
// loop over all cells
const active_cell_iterator endc = dof.end();
UpdateFlags update_flags = UpdateFlags (update_JxW_values | update_q_points);
- FEFaceValues<dim> fe_values (fe, q, update_flags, dof.get_tria().get_boundary());
+ FEFaceValues<dim> fe_values (fe, q, update_flags);
DoFHandler<dim>::active_cell_iterator cell = dof.begin_active (),
endc = dof.end ();
update_JxW_values);
if ((norm==H1_seminorm) || (norm==H1_norm))
update_flags = UpdateFlags (update_flags | update_gradients);
- FEValues<dim> fe_values(fe, q, update_flags, dof.get_tria().get_boundary());
+ FEValues<dim> fe_values(fe, q, update_flags);
// loop over all cells
DoFHandler<dim>::active_cell_iterator cell = dof.begin_active(),
update_JxW_values);
if ((norm==H1_seminorm) || (norm==H1_norm))
update_flags = UpdateFlags (update_flags | update_gradients);
- FEValues<dim> fe_values(fe, q, update_flags, dof.get_tria().get_boundary());
+ FEValues<dim> fe_values(fe, q, update_flags);
// loop over all cells
DoFHandler<dim>::active_cell_iterator cell = dof.begin_active(),