Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
fe_field_function.h
1 // ---------------------------------------------------------------------
2 // @f$Id: fe_field_function.h 31932 2013-12-08 02:15:54Z heister @f$
3 //
4 // Copyright (C) 2007 - 2013 by the deal.II authors
5 //
6 // This file is part of the deal.II library.
7 //
8 // The deal.II library is free software; you can use it, redistribute
9 // it, and/or modify it under the terms of the GNU Lesser General
10 // Public License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 // The full text of the license can be found in the file LICENSE at
13 // the top level of the deal.II distribution.
14 //
15 // ---------------------------------------------------------------------
16 
17 #ifndef __deal2__fe_function_h
18 #define __deal2__fe_function_h
19 
20 #include <deal.II/base/function.h>
21 #include <deal.II/dofs/dof_handler.h>
22 #include <deal.II/dofs/dof_accessor.h>
23 #include <deal.II/fe/mapping_q1.h>
24 #include <deal.II/base/function.h>
25 #include <deal.II/base/point.h>
26 #include <deal.II/base/tensor.h>
27 #include <deal.II/base/thread_local_storage.h>
28 
29 #include <deal.II/lac/vector.h>
30 
31 #include <boost/optional.hpp>
32 
33 
35 
36 namespace Functions
37 {
38 
170  template <int dim,
171  typename DH=DoFHandler<dim>,
172  typename VECTOR=Vector<double> >
173  class FEFieldFunction : public Function<dim>
174  {
175  public:
194  FEFieldFunction (const DH &dh,
195  const VECTOR &data_vector,
197 
206  void set_active_cell (const typename DH::active_cell_iterator &newcell);
207 
228  virtual void vector_value (const Point<dim> &p,
229  Vector<double> &values) const;
230 
258  virtual double value (const Point< dim > &p,
259  const unsigned int component = 0) const;
260 
281  virtual void value_list (const std::vector<Point< dim > > &points,
282  std::vector< double > &values,
283  const unsigned int component = 0) const;
284 
285 
305  virtual void vector_value_list (const std::vector<Point< dim > > &points,
306  std::vector< Vector<double> > &values) const;
307 
329  virtual void
330  vector_gradient (const Point< dim > &p,
331  std::vector< Tensor< 1, dim > > &gradients) const;
332 
354  virtual Tensor<1,dim> gradient(const Point< dim > &p,
355  const unsigned int component = 0)const;
356 
373  virtual void
374  vector_gradient_list (const std::vector< Point< dim > > &p,
375  std::vector<
376  std::vector< Tensor< 1, dim > > > &gradients) const;
377 
394  virtual void
395  gradient_list (const std::vector< Point< dim > > &p,
396  std::vector< Tensor< 1, dim > > &gradients,
397  const unsigned int component=0) const;
398 
399 
410  virtual double
411  laplacian (const Point<dim> &p,
412  const unsigned int component = 0) const;
413 
425  virtual void
426  vector_laplacian (const Point<dim> &p,
427  Vector<double> &values) const;
428 
439  virtual void
440  laplacian_list (const std::vector<Point<dim> > &points,
441  std::vector<double> &values,
442  const unsigned int component = 0) const;
443 
454  virtual void
455  vector_laplacian_list (const std::vector<Point<dim> > &points,
456  std::vector<Vector<double> > &values) const;
457 
483  unsigned int
484  compute_point_locations(const std::vector<Point<dim> > &points,
485  std::vector<typename DH::active_cell_iterator > &cells,
486  std::vector<std::vector<Point<dim> > > &qpoints,
487  std::vector<std::vector<unsigned int> > &maps) const;
488 
492  DeclException0 (ExcPointNotAvailableHere);
493 
494  private:
498  typedef
501 
506 
511  const VECTOR &data_vector;
512 
518 
523 
528  const unsigned int n_components;
529 
539  boost::optional<Point<dim> >
540  get_reference_coordinates (const typename DH::active_cell_iterator &cell,
541  const Point<dim> &point) const;
542  };
543 }
544 
545 DEAL_II_NAMESPACE_CLOSE
546 
547 #endif
boost::optional< Point< dim > > get_reference_coordinates(const typename DH::active_cell_iterator &cell, const Point< dim > &point) const
virtual void vector_laplacian_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
unsigned int compute_point_locations(const std::vector< Point< dim > > &points, std::vector< typename DH::active_cell_iterator > &cells, std::vector< std::vector< Point< dim > > > &qpoints, std::vector< std::vector< unsigned int > > &maps) const
FEFieldFunction(const DH &dh, const VECTOR &data_vector, const Mapping< dim > &mapping=StaticMappingQ1< dim >::mapping)
DeclException0(ExcPointNotAvailableHere)
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
Threads::ThreadLocalStorage< typename DH::active_cell_iterator > cell_hint_t
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual void vector_gradient(const Point< dim > &p, std::vector< Tensor< 1, dim > > &gradients) const
virtual void vector_value(const Point< dim > &p, Vector< double > &values) const
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
void set_active_cell(const typename DH::active_cell_iterator &newcell)
virtual void vector_gradient_list(const std::vector< Point< dim > > &p, std::vector< std::vector< Tensor< 1, dim > > > &gradients) const
SmartPointer< const DH, FEFieldFunction< dim, DH, VECTOR > > dh
virtual void vector_laplacian(const Point< dim > &p, Vector< double > &values) const
const Mapping< dim > & mapping
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
const unsigned int n_components
virtual void gradient_list(const std::vector< Point< dim > > &p, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const