/usr/include/deal.II/fe/mapping_c1.h is in libdeal.ii-dev 6.3.1-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | //---------------------------------------------------------------------------
// $Id: mapping_c1.h 17866 2008-12-05 22:27:44Z bangerth $
// Version: $Name$
//
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 by the deal.II authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
// to the file deal.II/doc/license.html for the text and
// further information on this license.
//
//---------------------------------------------------------------------------
#ifndef __deal2__mapping_c1_h
#define __deal2__mapping_c1_h
#include <base/config.h>
#include <fe/mapping_q.h>
DEAL_II_NAMESPACE_OPEN
/*!@addtogroup mapping */
/*@{*/
/**
* Mapping class that uses C1 (continuously differentiable) cubic
* mappings of the boundary. This class is built atop of
* MappingQ by simply determining the interpolation points for a
* cubic mapping of the boundary differently: MappingQ chooses
* them such that they interpolate the boundary, while this class
* chooses them such that the discretized boundary is globally
* continuously differentiable.
*
* To use this class, make sure that the
* Boundary::@p get_normals_at_vertices function is implemented
* for the users boundary object.
*
* For more information about the <tt>spacedim</tt> template parameter
* check the documentation of FiniteElement or the one of
* Triangulation.
*
* @author Wolfgang Bangerth, 2001
*/
template<int dim, int spacedim=dim>
class MappingC1 : public MappingQ<dim,spacedim>
{
public:
/**
* Constructor. Pass the fixed
* degree @p 3 down to the base
* class, as a cubic mapping
* suffices to generate a
* continuous mapping of the
* boundary.
*/
MappingC1 ();
/**
* Return a pointer to a copy of the
* present object. The caller of this
* copy then assumes ownership of it.
*/
virtual
Mapping<dim,spacedim> * clone () const;
protected:
/**
* For <tt>dim=2,3</tt>. Append the
* support points of all shape
* functions located on bounding
* lines to the vector
* @p a. Points located on the
* line but on vertices are not
* included.
*
* Needed by the
* <tt>compute_support_points_simple(laplace)</tt>
* functions. For <tt>dim=1</tt> this
* function is empty.
*
* This function chooses the
* respective points not such
* that they are interpolating
* the boundary (as does the base
* class), but rather such that
* the resulting cubic mapping is
* a continuous one.
*/
virtual void
add_line_support_points (const typename Triangulation<dim>::cell_iterator &cell,
std::vector<Point<dim> > &a) const;
/**
* For <tt>dim=3</tt>. Append the
* support points of all shape
* functions located on bounding
* faces (quads in 3d) to the
* vector @p a. Points located
* on the line but on vertices
* are not included.
*
* Needed by the
* @p compute_support_points_laplace
* function. For <tt>dim=1</tt> and 2
* this function is empty.
*
* This function chooses the
* respective points not such
* that they are interpolating
* the boundary (as does the base
* class), but rather such that
* the resulting cubic mapping is
* a continuous one.
*/
virtual void
add_quad_support_points(const typename Triangulation<dim>::cell_iterator &cell,
std::vector<Point<dim> > &a) const;
};
/*@}*/
/* -------------- declaration of explicit specializations ------------- */
#ifndef DOXYGEN
template <> void MappingC1<1>::add_line_support_points (
const Triangulation<1>::cell_iterator &,
std::vector<Point<1> > &) const;
template <> void MappingC1<2>::add_line_support_points (
const Triangulation<2>::cell_iterator &cell,
std::vector<Point<2> > &a) const;
template <> void MappingC1<1>::add_quad_support_points (
const Triangulation<1>::cell_iterator &,
std::vector<Point<1> > &) const;
template <> void MappingC1<2>::add_quad_support_points (
const Triangulation<2>::cell_iterator &,
std::vector<Point<2> > &) const;
#endif // DOXYGEN
DEAL_II_NAMESPACE_CLOSE
#endif
|