include/deal.II/fe/mapping_q1_eulerian.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: mapping_q1_eulerian.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 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__mapping_q1_eulerian_h
00013 #define __deal2__mapping_q1_eulerian_h
00014 
00015 #include <deal.II/base/config.h>
00016 #include <deal.II/base/smartpointer.h>
00017 #include <deal.II/fe/mapping_q1.h>
00018 
00019 DEAL_II_NAMESPACE_OPEN
00020 
00023 
00086 template <int dim, class VECTOR = Vector<double>, int spacedim=dim >
00087 class MappingQ1Eulerian : public MappingQ1<dim,spacedim>
00088 {
00089   public:
00090 
00112     MappingQ1Eulerian (const VECTOR  &euler_transform_vectors,
00113                        const DoFHandler<dim,spacedim> &shiftmap_dof_handler);
00114 
00120     virtual
00121     Mapping<dim,spacedim> * clone () const;
00122 
00131     bool preserves_vertex_locations () const;
00132 
00136     DeclException0 (ExcInactiveCell);
00137 
00138 
00139 
00140   protected:
00147     virtual void
00148     fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00149                     const Quadrature<dim>                                     &quadrature,
00150                     typename Mapping<dim,spacedim>::InternalDataBase          &mapping_data,
00151                     typename std::vector<Point<spacedim> >                    &quadrature_points,
00152                     std::vector<double>                                       &JxW_values,
00153                     std::vector<DerivativeForm<1,dim,spacedim> >       &jacobians,
00154                     std::vector<DerivativeForm<2,dim,spacedim>  >       &jacobian_grads,
00155                     std::vector<DerivativeForm<1,spacedim,dim>  >       &inverse_jacobians,
00156                     std::vector<Point<spacedim> >                             &cell_normal_vectors,
00157                     CellSimilarity::Similarity                           &cell_similarity) const;
00158 
00163     SmartPointer<const VECTOR, MappingQ1Eulerian<dim,VECTOR,spacedim> > euler_transform_vectors;
00164 
00170     SmartPointer<const DoFHandler<dim,spacedim>,MappingQ1Eulerian<dim,VECTOR,spacedim> > shiftmap_dof_handler;
00171 
00172 
00173   private:
00180     virtual void compute_mapping_support_points(
00181         const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00182       std::vector<Point<spacedim> > &a) const;
00183 
00184 };
00185 
00188 /*----------------------------------------------------------------------*/
00189 
00190 #ifndef DOXYGEN
00191 
00192 template <int dim, class VECTOR, int spacedim>
00193 inline
00194 bool
00195 MappingQ1Eulerian<dim,VECTOR,spacedim>::preserves_vertex_locations () const
00196 {
00197   return false;
00198 }
00199 
00200 #endif // DOXYGEN
00201 
00202 DEAL_II_NAMESPACE_CLOSE
00203 
00204 #endif
00205 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

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