FEValuesBase< dim, spacedim >::CellIteratorBase Class Reference

List of all members.

Public Member Functions

virtual ~CellIteratorBase ()
virtual operator const typename Triangulation< dim, spacedim >::cell_iterator () const =0
virtual unsigned int n_dofs_for_dof_handler () const =0
virtual void get_interpolated_dof_values (const Vector< double > &in, Vector< double > &out) const =0
virtual void get_interpolated_dof_values (const Vector< float > &in, Vector< float > &out) const =0
virtual void get_interpolated_dof_values (const Vector< long double > &in, Vector< long double > &out) const =0
virtual void get_interpolated_dof_values (const BlockVector< double > &in, Vector< double > &out) const =0
virtual void get_interpolated_dof_values (const BlockVector< float > &in, Vector< float > &out) const =0
virtual void get_interpolated_dof_values (const BlockVector< long double > &in, Vector< long double > &out) const =0
virtual void get_interpolated_dof_values (const PETScWrappers::Vector &in, Vector< PetscScalar > &out) const =0
virtual void get_interpolated_dof_values (const PETScWrappers::BlockVector &in, Vector< PetscScalar > &out) const =0
virtual void get_interpolated_dof_values (const TrilinosWrappers::Vector &in, Vector< TrilinosScalar > &out) const =0
virtual void get_interpolated_dof_values (const TrilinosWrappers::BlockVector &in, Vector< TrilinosScalar > &out) const =0
virtual void get_interpolated_dof_values (const TrilinosWrappers::MPI::Vector &in, Vector< TrilinosScalar > &out) const =0
virtual void get_interpolated_dof_values (const TrilinosWrappers::MPI::BlockVector &in, Vector< TrilinosScalar > &out) const =0


Detailed Description

template<int dim, int spacedim>
class FEValuesBase< dim, spacedim >::CellIteratorBase

Objects of the FEValues class need to store a pointer (i.e. an iterator) to the present cell in order to be able to extract the values of the degrees of freedom on this cell in the get_function_values() and assorted functions. On the other hand, this class should also work for different iterators, as long as they have the same interface to extract the DoF values (i.e., for example, they need to have a get_interpolated_dof_values function).

This calls for a common base class of iterator classes, and making the functions we need here virtual. On the other hand, this is the only place in the library where we need this, and introducing a base class of iterators and making a function virtual penalizes all users of the iterators, which are basically intended as very fast accessor functions. So we do not want to do this. Rather, what we do here is making the functions we need virtual only for use with this class. The idea is the following: have a common base class which declares some pure virtual functions, and for each possible iterator type, we have a derived class which stores the iterator to the cell and implements these functions. Since the iterator classes have the same interface, we can make the derived classes a template, templatized on the iterator type.

This way, the use of virtual functions is restricted to only this class, and other users of iterators do not have to bear the negative effects.

Author:
Wolfgang Bangerth, 2003

Constructor & Destructor Documentation

template<int dim, int spacedim>
virtual FEValuesBase< dim, spacedim >::CellIteratorBase::~CellIteratorBase (  )  [virtual]

Destructor. Made virtual since we store only pointers to the base class.


Member Function Documentation

template<int dim, int spacedim>
virtual FEValuesBase< dim, spacedim >::CellIteratorBase::operator const typename Triangulation< dim, spacedim >::cell_iterator (  )  const [pure virtual]

Conversion operator to an iterator for triangulations. This conversion is implicit for the original iterators, since they are derived classes. However, since here we have kind of a parallel class hierarchy, we have to have a conversion operator.

template<int dim, int spacedim>
virtual unsigned int FEValuesBase< dim, spacedim >::CellIteratorBase::n_dofs_for_dof_handler (  )  const [pure virtual]

Return the number of degrees of freedom the DoF handler object has to which the iterator belongs to.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const Vector< double > &  in,
Vector< double > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const Vector< float > &  in,
Vector< float > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const Vector< long double > &  in,
Vector< long double > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const BlockVector< double > &  in,
Vector< double > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const BlockVector< float > &  in,
Vector< float > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const BlockVector< long double > &  in,
Vector< long double > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const PETScWrappers::Vector in,
Vector< PetscScalar > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const PETScWrappers::BlockVector in,
Vector< PetscScalar > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const TrilinosWrappers::Vector in,
Vector< TrilinosScalar > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const TrilinosWrappers::BlockVector in,
Vector< TrilinosScalar > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const TrilinosWrappers::MPI::Vector in,
Vector< TrilinosScalar > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.

template<int dim, int spacedim>
virtual void FEValuesBase< dim, spacedim >::CellIteratorBase::get_interpolated_dof_values ( const TrilinosWrappers::MPI::BlockVector in,
Vector< TrilinosScalar > &  out 
) const [pure virtual]

Call get_interpolated_dof_values of the iterator with the given arguments.


The documentation for this class was generated from the following file:

deal.II documentation generated on Sat Aug 15 16:51:56 2009 by doxygen 1.5.9