30template <
int dim,
int spacedim>
44 const unsigned int dim = 1;
57 const unsigned int dim = 2;
58 const std::array<double, 2> interior_gl_points{
64 for (
unsigned int line_no = 0; line_no < GeometryInfo<dim>::lines_per_cell;
69 if (line->at_boundary())
102 line->vertex(1) - line->vertex(0);
103 const double h =
std::sqrt(coordinate_vector * coordinate_vector);
105 coordinate_axis /= h;
108 std::atan2(coordinate_axis[1], coordinate_axis[0]);
109 const double c = -((face_vertex_normals[0][1] *
std::sin(alpha) +
110 face_vertex_normals[0][0] *
std::cos(alpha)) /
111 (face_vertex_normals[0][1] *
std::cos(alpha) -
112 face_vertex_normals[0][0] *
std::sin(alpha)));
113 const double b = ((face_vertex_normals[1][1] *
std::sin(alpha) +
114 face_vertex_normals[1][0] *
std::cos(alpha)) /
115 (face_vertex_normals[1][1] *
std::cos(alpha) -
116 face_vertex_normals[1][0] *
std::sin(alpha))) -
119 const double t1 = interior_gl_points[0];
120 const double t2 = interior_gl_points[1];
121 const double s_t1 = (((-b - c) * t1 + b) * t1 + c) * t1;
122 const double s_t2 = (((-b - c) * t2 + b) * t2 + c) * t2;
130 for (
const auto &new_unit_point : new_unit_points)
133 std::sin(alpha) * new_unit_point[1],
134 std::sin(alpha) * new_unit_point[0] +
135 std::cos(alpha) * new_unit_point[1]);
137 real_point += line->vertex(0);
138 a.push_back(real_point);
147 a.push_back((1.0 - interior_gl_points[0]) * line->vertex(0) +
148 (interior_gl_points[0] * line->vertex(1)));
149 a.push_back((1.0 - interior_gl_points[1]) * line->vertex(0) +
150 (interior_gl_points[1] * line->vertex(1)));
157template <
int dim,
int spacedim>
173 const unsigned int dim = 1;
185 const unsigned int dim = 2;
192template <
int dim,
int spacedim>
203template <
int dim,
int spacedim>
204std::unique_ptr<Mapping<dim, spacedim>>
207 return std::make_unique<MappingC1<dim, spacedim>>();
213#include "mapping_c1.inst"
virtual void get_normals_at_vertices(const typename Triangulation< dim, spacedim >::face_iterator &face, FaceVertexNormals &face_vertex_normals) const
std::array< Tensor< 1, spacedim >, GeometryInfo< dim >::vertices_per_face > FaceVertexNormals
virtual void add_line_support_points(const typename Triangulation< dim >::cell_iterator &cell, std::vector< Point< dim > > &a) const override
virtual std::unique_ptr< Mapping< dim, spacedim > > clone() const override
virtual void add_quad_support_points(const typename Triangulation< dim >::cell_iterator &cell, std::vector< Point< dim > > &a) const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
static ::ExceptionBase & ExcImpossibleInDim(int arg1)
typename IteratorSelector::line_iterator line_iterator
const Manifold< dim, spacedim > & get_manifold(const types::manifold_id number) const
::VectorizedArray< Number, width > cos(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > sin(const ::VectorizedArray< Number, width > &)
::VectorizedArray< Number, width > sqrt(const ::VectorizedArray< Number, width > &)