include/deal.II/numerics/fe_field_function.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: fe_field_function.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 2007, 2009, 2012 by the deal.II authors
00005 //
00006 //    This file is subject to QPL and may not be  distributed
00007 //    without copyright and license information. Please refer
00008 //    to the file deal.II/doc/license.html for the  text  and
00009 //    further information on this license.
00010 //
00011 //---------------------------------------------------------------------------
00012 #ifndef __deal2__fe_function_h
00013 #define __deal2__fe_function_h
00014 
00015 #include <deal.II/base/function.h>
00016 #include <deal.II/dofs/dof_handler.h>
00017 #include <deal.II/dofs/dof_accessor.h>
00018 #include <deal.II/fe/mapping_q1.h>
00019 #include <deal.II/base/function.h>
00020 #include <deal.II/base/point.h>
00021 #include <deal.II/base/tensor.h>
00022 #include <deal.II/base/thread_local_storage.h>
00023 
00024 #include <deal.II/lac/vector.h>
00025 
00026 DEAL_II_NAMESPACE_OPEN
00027 
00028 namespace Functions
00029 {
00030 
00120   template <int dim,
00121             typename DH=DoFHandler<dim>,
00122             typename VECTOR=Vector<double> >
00123   class FEFieldFunction :  public Function<dim>
00124   {
00125     public:
00144       FEFieldFunction (const DH           &dh,
00145                        const VECTOR       &data_vector,
00146                        const Mapping<dim> &mapping = StaticMappingQ1<dim>::mapping);
00147 
00156       void set_active_cell(typename DH::active_cell_iterator &newcell);
00157 
00172       virtual void vector_value (const Point<dim> &p,
00173                                  Vector<double>   &values) const;
00174 
00196       virtual double value (const Point< dim > &    p,
00197                             const unsigned int  component = 0)    const;
00198 
00213       virtual void value_list (const std::vector<Point< dim > > &    points,
00214                                std::vector< double > &values,
00215                                const unsigned int  component = 0)    const;
00216 
00217 
00231       virtual void vector_value_list (const std::vector<Point< dim > > &    points,
00232                                       std::vector< Vector<double> > &values) const;
00233 
00249       virtual void
00250       vector_gradient (const Point< dim > &p,
00251                        std::vector< Tensor< 1, dim > > &gradients) const;
00252 
00268       virtual Tensor<1,dim> gradient(const Point< dim > &p,
00269                                      const unsigned int component = 0)const;
00270 
00281       virtual void
00282       vector_gradient_list (const std::vector< Point< dim > > &p,
00283                             std::vector<
00284                             std::vector< Tensor< 1, dim > > > &gradients) const;
00285 
00296       virtual void
00297       gradient_list (const std::vector< Point< dim > > &p,
00298                      std::vector< Tensor< 1, dim > > &gradients,
00299                      const unsigned int component=0) const;
00300 
00301 
00306       virtual double
00307       laplacian (const Point<dim>   &p,
00308           const unsigned int  component = 0) const;
00309 
00315       virtual void
00316       vector_laplacian (const Point<dim>   &p,
00317           Vector<double>     &values) const;
00318 
00323       virtual void
00324       laplacian_list (const std::vector<Point<dim> > &points,
00325           std::vector<double>            &values,
00326           const unsigned int              component = 0) const;
00327 
00332       virtual void
00333       vector_laplacian_list (const std::vector<Point<dim> > &points,
00334           std::vector<Vector<double> >   &values) const;
00335 
00361       unsigned int
00362       compute_point_locations(const std::vector<Point<dim> > &points,
00363                               std::vector<typename DH::active_cell_iterator > &cells,
00364                               std::vector<std::vector<Point<dim> > > &qpoints,
00365                               std::vector<std::vector<unsigned int> > &maps) const;
00366 
00367     private:
00371       typedef Threads::ThreadLocalStorage <
00372         typename DH::active_cell_iterator > cell_hint_t;
00373 
00377       SmartPointer<const DH,FEFieldFunction<dim, DH, VECTOR> > dh;
00378 
00383       const VECTOR & data_vector;
00384 
00389       const Mapping<dim> & mapping;
00390 
00394       mutable cell_hint_t cell_hint;
00395 
00400       const unsigned int n_components;
00401   };
00402 }
00403 
00404 DEAL_II_NAMESPACE_CLOSE
00405 
00406 #endif
00407 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Tue May 22 2012 12:06:18 by doxygen 1.7.3