From e78adaa20c8b7dc447b32c7addc38c44ebab0c11 Mon Sep 17 00:00:00 2001 From: Maien Hamed Date: Thu, 13 Aug 2015 12:02:29 +0200 Subject: [PATCH] Adding transform of Tensor<3> and DerivativeForm<2> to mapping classes --- include/deal.II/fe/mapping.h | 92 ++++++++++- include/deal.II/fe/mapping_cartesian.h | 15 +- include/deal.II/fe/mapping_fe_field.h | 16 +- include/deal.II/fe/mapping_q1.h | 23 ++- source/fe/fe_poly_tensor.cc | 4 +- source/fe/mapping_cartesian.cc | 123 ++++++++++++++ source/fe/mapping_fe_field.cc | 73 ++++++++- source/fe/mapping_q1.cc | 212 ++++++++++++++++++++++--- 8 files changed, 526 insertions(+), 32 deletions(-) diff --git a/include/deal.II/fe/mapping.h b/include/deal.II/fe/mapping.h index 1778ed3022..e4e00988ca 100644 --- a/include/deal.II/fe/mapping.h +++ b/include/deal.II/fe/mapping.h @@ -106,7 +106,27 @@ enum MappingType /** * The mapping used for BDM elements. */ - mapping_bdm = mapping_raviart_thomas + mapping_bdm = mapping_raviart_thomas, + + /** + * The mappings for 2-forms and third order tensors. + * + * These are mappings typpically applied to hessians transformed to the + * reference cell. + * + * Mapping of the hessian of a covariant vector field (see Mapping::transform() for details). + */ + mapping_covariant_hessian, + + /** + * Mapping of the hessian of a contravariant vector field (see Mapping::transform() for details). + */ + mapping_contravariant_hessian, + + /** + * Mapping of the hessian of a piola vector field (see Mapping::transform() for details). + */ + mapping_piola_hessian }; @@ -859,6 +879,76 @@ public: const InternalDataBase &internal, const MappingType type) const = 0; + /** + * Transform a tensor field from the reference cell to the physical cell. + * This tensors are most of times the hessians in the reference cell of + * vector fields that have been pulled back from the physical cell. + * + * The mapping types currently implemented by derived classes are: + *