From: Sebastian Pauletti Date: Fri, 9 Mar 2012 18:34:59 +0000 (+0000) Subject: Merge branch_codim_two back into trunk X-Git-Tag: v8.0.0~2805 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=382f952baacc7a26dd3d2e1fd655205d16c2d1c0;p=dealii.git Merge branch_codim_two back into trunk git-svn-id: https://svn.dealii.org/trunk@25229 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/common/template-arguments.in b/deal.II/common/template-arguments.in index 2e10b8c7be..09d4d3354d 100644 --- a/deal.II/common/template-arguments.in +++ b/deal.II/common/template-arguments.in @@ -44,10 +44,16 @@ DOFHANDLER_TEMPLATES := { DoFHandler; hp::DoFHandler; MGDoFHandler } -TRIANGULATION_AND_DOFHANDLERS := { Triangulation; - DoFHandler; - hp::DoFHandler; - MGDoFHandler } +TRIANGULATION_AND_DOFHANDLER_TEMPLATES := { Triangulation; + DoFHandler; + hp::DoFHandler; + MGDoFHandler} + +TRIANGULATION_AND_DOFHANDLERS := { Triangulation; + DoFHandler; + hp::DoFHandler; + MGDoFHandler } + FEVALUES_BASES := { FEValuesBase; FEFaceValuesBase } @@ -65,3 +71,5 @@ SPARSITY_PATTERNS := { SparsityPattern; @DEAL_II_EXPAND_TRILINOS_BLOCK_SPARSITY_PATTERN@; } DIMENSIONS := { 1; 2; 3 } + +SPACE_DIMENSIONS := { 1; 2; 3 } diff --git a/deal.II/doc/news/changes.h b/deal.II/doc/news/changes.h index dca8d9240f..03e8d52645 100644 --- a/deal.II/doc/news/changes.h +++ b/deal.II/doc/news/changes.h @@ -45,7 +45,14 @@ used for boundary indicators.

General

+
    +
  1. +New: Added support for codimension 2, i.e. for dim-dimensional objects +embedded into spacedim=dim+2 dimensional space. +
    +(Sebastian Pauletti, 2012/03/02) +
  2. Changed: Material and Boundary indicators have been both of the type unsigned char. Throughout the library, we changed their datatype to types::material_id_t @@ -59,7 +66,7 @@ static_cast(-1)). With this change, it is now much easier to extend the range of boundary or material ids, if needed.
    -(Wolfgang Bangerth, Christian Goll 2012/02/27) +(Christian Goll 2012/02/27)
  3. New: Functions like FEValues::get_function_values have long been able to extract values from pretty much any vector kind given to it (e.g. @@ -145,6 +152,28 @@ enabled due to a missing include file in file

    Specific improvements

      +
    1. Changed: +A new method to determine an initial guess for the Newton method was coded +in MappingQ::transform_real_to_unit_cell. +The code in transform_real_to_unit_cell was cleaned a little bit and a new code +for the @<2,3@> case was added. +
      +(Sebastian Pauletti, 2012/03/02) + +
    2. Changed: +In the context of codim@>0, Mapping::transform would require different inputs +depending on the mapping type. +For mapping_covariant, mapping_contravariant the input is DerivativeForm<1, dim, spacedim> +but for mapping_covariant_gradient, mapping_contravariant_gradient the input is Tensor<2,dim>. +
      +(Sebastian Pauletti, 2012/03/02) + +
    3. New: +A new class DerivativeForm was added. +This class is supposed to represent the derivatives of a mapping. +
      +(Sebastian Pauletti, 2012/03/02) +
    4. Fixed: TrilinosWrappers::Vector::all_zero() in parallel.
      (Timo Heister, Jörg Frohne, 2012/03/06) diff --git a/deal.II/include/deal.II/base/derivative_form.h b/deal.II/include/deal.II/base/derivative_form.h new file mode 100644 index 0000000000..6646475209 --- /dev/null +++ b/deal.II/include/deal.II/base/derivative_form.h @@ -0,0 +1,465 @@ +#ifndef __deal2__derivative_form_h +#define __deal2__derivative_form_h + +#include + +DEAL_II_NAMESPACE_OPEN + +/** + This class represents the (tangential) derivatives of a function + \f f: ${\mathbb R}^{\text{dim}} \rightarrow {\mathbb R}^{\text{spacedim}}\f$. + Such functions are always used to map the reference dim-dimensional + cell into spacedim-dimensional space. + For such objects, the first derivative of the function is a linear map from + \f${\mathbb R}^{\text{dim}}\f$ to \f${\mathbb R}^{\text{spacedim}}\f$, + the second derivative a bilinear map + from \f${\mathbb R}^{\text{dim}} \times {\mathbb R}^{\text{dim}}\f$ + to \f${\mathbb R}^{\text{spacedim}}\f$ and so on. + + In deal.II we represent these derivaties using objects of + type DerivativeForm<1,dim,spacedim>, DerivativeForm<2,dim,spacedim> and so on. + + + @author Sebastian Pauletti, 2011 + +*/ + +template +class DerivativeForm +{ + public: + /** + * Constructor. Initialize all entries + * to zero. + */ + DerivativeForm (); + + /** + Constructor from a second order tensor. + */ + DerivativeForm (const Tensor<2,dim> &); + + /** + * Read-Write access operator. + */ + Tensor &operator [] (const unsigned int i); + + /** + * Read-only access operator. + */ + const Tensor &operator [] (const unsigned int i) const; + + /** + * Assignment operator. + */ + DerivativeForm & operator = (const DerivativeForm &); + + + /** + * Assignment operator. + */ + DerivativeForm & operator = (const Tensor<2,dim> &); + + /** + * Assignment operator. + */ + DerivativeForm & operator = (const Tensor<1,dim> &); + + /** + Converts a DerivativeForm <1,dim, dim> + to Tensor<2,dim>. + If the derivative is the Jacobian of F, + then Tensor[i] = grad(F^i). + */ + operator Tensor<2,dim>() const; + + /** + Converts a DerivativeForm <1, dim, 1> + to Tensor<1,dim>. + */ + operator Tensor<1,dim>() const; + + /** + Return the transpose of a rectangular DerivativeForm, + that is to say viewed as a two dimensional matrix. + */ + DerivativeForm<1, spacedim, dim> transpose () const; + + + /** + Computes the volume element associated with the + jacobian of the tranformation F. + That is to say if \f$DF\f$ is square, it computes + \f$\det(DF)\f$, in case DF is not square returns + \f$\sqrt(\det(DF^{t} * DF))\f$. + */ + double determinant () const; + + + /** + Assuming (*this) stores the jacobian of + the mapping F, it computes its covariant + matrix, namely \f$DF*G^{-1}\f$, where + \f$G = DF^{t}*DF\f$. + If $DF$ is square, covariant from + gives \f$DF^{-t}\f$. + */ + DerivativeForm<1, dim, spacedim> covariant_form() const; + + + + + /** + * Determine an estimate for the + * memory consumption (in bytes) + * of this object. + */ + static std::size_t memory_consumption (); + + /** + * Exception. + */ + DeclException1 (ExcInvalidTensorIndex, + int, + << "Invalid DerivativeForm index " << arg1); + + + private: + /** Auxiliary function that computes + (*this) * T^{t} */ + DerivativeForm<1, dim, spacedim> times_T_t (Tensor<2,dim> T) const; + + + private: + /** + * Array of tensors holding the + * subelements. + */ + Tensor tensor[spacedim]; + + +}; + + +/*--------------------------- Inline functions -----------------------------*/ + +#ifndef DOXYGEN + + + + +template +inline +DerivativeForm::DerivativeForm () +{ +// default constructor. not specifying an initializer list calls +// the default constructor of the subobjects, which initialize them +// selves. therefore, the tensor array is set to zero this way +} + + + +template +inline +DerivativeForm::DerivativeForm(const Tensor<2,dim> &T) +{ + Assert( (dim == spacedim) && (order==1), + ExcMessage("Only allowed for square tensors.")); + + for (unsigned int j=0; j +inline +DerivativeForm & +DerivativeForm:: +operator = (const DerivativeForm &ta) +{ + for (unsigned int j=0; j +inline +DerivativeForm & DerivativeForm:: +operator = (const Tensor<2,dim> &ta) +{ + Assert( (dim == spacedim) && (order==1), + ExcMessage("Only allowed for square tensors.")); + + for (unsigned int j=0; j +inline +DerivativeForm & DerivativeForm:: +operator = (const Tensor<1,dim> &T) +{ + Assert( (1 == spacedim) && (order==1), + ExcMessage("Only allowed for spacedim==1 and order==1.")); + + (*this)[0] = T; + + return *this; + +} + + + +template +inline +Tensor & DerivativeForm:: +operator[] (const unsigned int i) +{ + Assert (i +inline +const Tensor &DerivativeForm:: +operator[] (const unsigned int i) const +{ + Assert (i +inline +DerivativeForm::operator Tensor<1,dim>() const +{ + Assert( (1 == spacedim) && (order==1), + ExcMessage("Only allowed for spacedim==1.")); + + return (*this)[0]; + +} + + + +template +inline +DerivativeForm::operator Tensor<2,dim>() const +{ + Assert( (dim == spacedim) && (order==1), + ExcMessage("Only allowed for square tensors.")); + + Tensor<2,dim> t; + + for (unsigned int j=0; j +inline +DerivativeForm<1,spacedim,dim> +DerivativeForm:: +transpose () const + { + Assert(order==1, ExcMessage("Only for rectangular DerivativeForm.")); + DerivativeForm<1,spacedim,dim> tt; + + for (unsigned int i=0; i +inline +DerivativeForm<1, dim, spacedim> +DerivativeForm::times_T_t (Tensor<2,dim> T) const +{ + Assert( order==1, ExcMessage("Only for order == 1.")); + DerivativeForm<1,dim, spacedim> dest; + for (unsigned int i=0; i +inline +double +DerivativeForm::determinant () const +{ + Assert( order==1, ExcMessage("Only for order == 1.")); + if (dim == spacedim) + { + Tensor<2,dim> T = (Tensor<2,dim>)( (*this) ); + return dealii::determinant(T); + } + else + { + Assert( spacedim>dim, ExcMessage("Only for spacedim>dim.")); + DerivativeForm<1,spacedim,dim> DF_t = this->transpose(); + Tensor<2, dim> G; //First fundamental form + for (unsigned int i=0; i +inline +DerivativeForm<1,dim,spacedim> +DerivativeForm::covariant_form() const +{ + + if (dim == spacedim) + { + + Tensor<2,dim> DF_t (dealii::transpose(invert( (Tensor<2,dim>)(*this) ))); + DerivativeForm<1,dim, spacedim> result = DF_t; + return(result); + } + else + { + + DerivativeForm<1,spacedim,dim> DF_t = this->transpose(); + Tensor<2, dim> G; //First fundamental form + for (unsigned int i=0; itimes_T_t(invert(G))); + + } + +} + + +template +inline +std::size_t +DerivativeForm::memory_consumption () +{ + return sizeof(DerivativeForm); +} + +#endif // DOXYGEN + + + + + +/** + One of the uses of DerivativeForm is to apply it as a transformation. + This is what this function does. + + If @pT is DerivativeForm<1,dim,1> it computes $DF * T$, + if @pT is DerivativeForm<1,dim,rank> it computes $T*DF^{t}$. + + @relates DerivativeForm + @author Sebastian Pauletti, 2011 +*/ +//rank=1 +template +inline +Tensor<1, spacedim> +apply_transformation (const DerivativeForm<1,dim,spacedim> &DF, + const Tensor<1,dim> &T) +{ + Tensor<1, spacedim> dest; + for (unsigned int i=0; i +inline +DerivativeForm<1, spacedim, dim> +apply_transformation (const DerivativeForm<1,dim,spacedim> &DF, + const Tensor<2,dim> &T) +{ + + DerivativeForm<1, spacedim, dim> dest; + for (unsigned int i=0; i +inline +Tensor<2, spacedim> +apply_transformation (const DerivativeForm<1,dim,spacedim> &DF1, + const DerivativeForm<1,dim,spacedim> &DF2) +{ + Tensor<2, spacedim> dest; + + for (unsigned int i=0; i +inline +DerivativeForm<1,spacedim,dim> +transpose (const DerivativeForm<1,dim,spacedim> &DF) + { + DerivativeForm<1,spacedim,dim> tt; + tt = DF.transpose(); + return tt; + } + + +DEAL_II_NAMESPACE_CLOSE + +#endif diff --git a/deal.II/include/deal.II/base/types.h b/deal.II/include/deal.II/base/types.h index 02331fb60d..8836a78ff4 100644 --- a/deal.II/include/deal.II/base/types.h +++ b/deal.II/include/deal.II/base/types.h @@ -24,6 +24,16 @@ DEAL_II_NAMESPACE_OPEN namespace types { + /** + Type for boundary indicators. + */ + typedef unsigned char boundary_indicator_t; + + /** + Type for material ids. + */ + typedef unsigned int material_indicator_t; + /** * The type used to denote * subdomain_ids of cells. diff --git a/deal.II/include/deal.II/fe/fe_poly.templates.h b/deal.II/include/deal.II/fe/fe_poly.templates.h index 2628881502..0b163e7710 100644 --- a/deal.II/include/deal.II/fe/fe_poly.templates.h +++ b/deal.II/include/deal.II/fe/fe_poly.templates.h @@ -1,7 +1,7 @@ //--------------------------------------------------------------------------- // $Id$ // -// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -237,156 +237,6 @@ FE_Poly::get_data (const UpdateFlags update_flags, //--------------------------------------------------------------------------- -template <> -inline -void -FE_Poly,1,2>::fill_fe_values - (const Mapping<1,2> &mapping, - const Triangulation<1,2>::cell_iterator &cell, - const Quadrature<1> &quadrature, - Mapping<1,2>::InternalDataBase &mapping_data, - Mapping<1,2>::InternalDataBase &fedata, - FEValuesData<1,2> &data, - CellSimilarity::Similarity &cell_similarity) const -{ - // convert data object to internal - // data for this class. fails with - // an exception if that is not - // possible - Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); - InternalData &fe_data = static_cast (fedata); - - const UpdateFlags flags(fe_data.current_update_flags()); - - for (unsigned int k=0; kdofs_per_cell; ++k) - { - if (flags & update_values) - for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<1>::DataSetDescriptor::cell(), - mapping_data, fe_data, data); -} - - - -template <> -inline -void -FE_Poly,2,3>::fill_fe_values - (const Mapping<2,3> &mapping, - const Triangulation<2,3>::cell_iterator &cell, - const Quadrature<2> &quadrature, - Mapping<2,3>::InternalDataBase &mapping_data, - Mapping<2,3>::InternalDataBase &fedata, - FEValuesData<2,3> &data, - CellSimilarity::Similarity &cell_similarity) const -{ - - // assert that the following dynamics - // cast is really well-defined. - Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); - InternalData &fe_data = static_cast (fedata); - - const UpdateFlags flags(fe_data.current_update_flags()); - - for (unsigned int k=0; kdofs_per_cell; ++k) - { - if (flags & update_values) - for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<2>::DataSetDescriptor::cell(), - mapping_data, fe_data, data); -} - - -template <> -inline -void -FE_Poly,1,2>::fill_fe_values ( - const Mapping<1,2> &mapping, - const Triangulation<1,2>::cell_iterator &cell, - const Quadrature<1> &quadrature, - Mapping<1,2>::InternalDataBase &mapping_data, - Mapping<1,2>::InternalDataBase &fedata, - FEValuesData<1,2> &data, - CellSimilarity::Similarity &cell_similarity) const -{ - // convert data object to internal - // data for this class. fails with - // an exception if that is not - // possible - - Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); - InternalData &fe_data = static_cast (fedata); - - const UpdateFlags flags(fe_data.current_update_flags()); - - for (unsigned int k=0; kdofs_per_cell; ++k) - { - if (flags & update_values) - for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<1>::DataSetDescriptor::cell(), - mapping_data, fe_data, data); -} - - -template <> -inline -void -FE_Poly,2,3>::fill_fe_values - (const Mapping<2,3> &mapping, - const Triangulation<2,3>::cell_iterator &cell, - const Quadrature<2> &quadrature, - Mapping<2,3>::InternalDataBase &mapping_data, - Mapping<2,3>::InternalDataBase &fedata, - FEValuesData<2,3> &data, - CellSimilarity::Similarity &cell_similarity) const -{ - Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); - InternalData &fe_data = static_cast (fedata); - - const UpdateFlags flags(fe_data.current_update_flags()); - - for (unsigned int k=0; kdofs_per_cell; ++k) - { - if (flags & update_values) - for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<2>::DataSetDescriptor::cell(), - mapping_data, fe_data, data); -} - - template void FE_Poly::fill_fe_values @@ -425,24 +275,6 @@ FE_Poly::fill_fe_values -template <> -inline -void -FE_Poly,1,2>::fill_fe_face_values - (const Mapping<1,2> &, - const Triangulation<1,2>::cell_iterator &, - const unsigned int, - const Quadrature<0> &, - Mapping<1,2>::InternalDataBase &, - Mapping<1,2>::InternalDataBase &, - FEValuesData<1,2> &) const -{ - AssertThrow(false, ExcNotImplemented()); -} - - - - template void FE_Poly:: diff --git a/deal.II/include/deal.II/fe/fe_poly_tensor.h b/deal.II/include/deal.II/fe/fe_poly_tensor.h index e4cb56b408..02e92ce9dd 100644 --- a/deal.II/include/deal.II/fe/fe_poly_tensor.h +++ b/deal.II/include/deal.II/fe/fe_poly_tensor.h @@ -15,6 +15,7 @@ #include #include +#include DEAL_II_NAMESPACE_OPEN @@ -267,7 +268,7 @@ class FE_PolyTensor : public FiniteElement * values for each quadrature * point. */ - std::vector > > shape_grads; + std::vector< std::vector< DerivativeForm<1, dim, spacedim> > > shape_grads; }; /** diff --git a/deal.II/include/deal.II/fe/fe_q.h b/deal.II/include/deal.II/fe/fe_q.h index 581e861c58..6d2921f1f4 100644 --- a/deal.II/include/deal.II/fe/fe_q.h +++ b/deal.II/include/deal.II/fe/fe_q.h @@ -606,7 +606,12 @@ template <> std::vector FE_Q<1,2>::face_lexicographic_to_hierarchic_numbering (const unsigned int); +template <> +void FE_Q<1,3>::initialize_unit_face_support_points (); +template <> +std::vector +FE_Q<1,3>::face_lexicographic_to_hierarchic_numbering (const unsigned int); DEAL_II_NAMESPACE_CLOSE diff --git a/deal.II/include/deal.II/fe/fe_values.h b/deal.II/include/deal.II/fe/fe_values.h index cdb1f571c0..276d76e346 100644 --- a/deal.II/include/deal.II/fe/fe_values.h +++ b/deal.II/include/deal.II/fe/fe_values.h @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include @@ -1469,19 +1469,19 @@ class FEValuesData * Array of the Jacobian matrices at the * quadrature points. */ - std::vector > jacobians; + std::vector< DerivativeForm<1,dim,spacedim> > jacobians; /** * Array of the derivatives of the Jacobian * matrices at the quadrature points. */ - std::vector > jacobian_grads; + std::vector > jacobian_grads; /** * Array of the inverse Jacobian matrices * at the quadrature points. */ - std::vector > inverse_jacobians; + std::vector > inverse_jacobians; /** * Array of quadrature points. This array @@ -2720,13 +2720,13 @@ class FEValuesBase : protected FEValuesData, * quadrature point, i.e. * $J_{ij}=dx_i/d\hat x_j$ */ - const Tensor<2,spacedim> & jacobian (const unsigned int quadrature_point) const; + const DerivativeForm<1,dim,spacedim> & jacobian (const unsigned int quadrature_point) const; /** * Pointer to the array holding * the values returned by jacobian(). */ - const std::vector > & get_jacobians () const; + const std::vector > & get_jacobians () const; /** * Return the second derivative of the @@ -2735,14 +2735,14 @@ class FEValuesBase : protected FEValuesData, * Jacobian, at the specified quadrature * point, i.e. $G_{ijk}=dJ_{jk}/d\hat x_i$. */ - const Tensor<3,spacedim> & jacobian_grad (const unsigned int quadrature_point) const; + const DerivativeForm<2,dim,spacedim> & jacobian_grad (const unsigned int quadrature_point) const; /** * Pointer to the array holding * the values returned by * jacobian_grads(). */ - const std::vector > & get_jacobian_grads () const; + const std::vector > & get_jacobian_grads () const; /** * Return the inverse Jacobian of the @@ -2750,14 +2750,14 @@ class FEValuesBase : protected FEValuesData, * quadrature point, i.e. * $J_{ij}=d\hat x_i/dx_j$ */ - const Tensor<2,spacedim> & inverse_jacobian (const unsigned int quadrature_point) const; + const DerivativeForm<1,spacedim,dim> & inverse_jacobian (const unsigned int quadrature_point) const; /** * Pointer to the array holding * the values returned by * inverse_jacobian(). */ - const std::vector > & get_inverse_jacobians () const; + const std::vector > & get_inverse_jacobians () const; /** * For a face, return the outward * normal vector to the cell at @@ -4894,7 +4894,7 @@ FEValuesBase::get_JxW_values () const template inline -const std::vector >& +const std::vector > & FEValuesBase::get_jacobians () const { Assert (this->update_flags & update_jacobians, ExcAccessToUninitializedField()); @@ -4905,7 +4905,7 @@ FEValuesBase::get_jacobians () const template inline -const std::vector >& +const std::vector > & FEValuesBase::get_jacobian_grads () const { Assert (this->update_flags & update_jacobian_grads, ExcAccessToUninitializedField()); @@ -4916,7 +4916,7 @@ FEValuesBase::get_jacobian_grads () const template inline -const std::vector >& +const std::vector > & FEValuesBase::get_inverse_jacobians () const { Assert (this->update_flags & update_inverse_jacobians, ExcAccessToUninitializedField()); @@ -4954,7 +4954,7 @@ FEValuesBase::JxW (const unsigned int i) const template inline -const Tensor<2,spacedim> & +const DerivativeForm<1,dim,spacedim> & FEValuesBase::jacobian (const unsigned int i) const { Assert (this->update_flags & update_jacobians, ExcAccessToUninitializedField()); @@ -4967,7 +4967,7 @@ FEValuesBase::jacobian (const unsigned int i) const template inline -const Tensor<3,spacedim> & +const DerivativeForm<2,dim,spacedim> & FEValuesBase::jacobian_grad (const unsigned int i) const { Assert (this->update_flags & update_jacobian_grads, ExcAccessToUninitializedField()); @@ -4980,7 +4980,7 @@ FEValuesBase::jacobian_grad (const unsigned int i) const template inline -const Tensor<2,spacedim> & +const DerivativeForm<1,spacedim,dim> & FEValuesBase::inverse_jacobian (const unsigned int i) const { Assert (this->update_flags & update_inverse_jacobians, ExcAccessToUninitializedField()); diff --git a/deal.II/include/deal.II/fe/mapping.h b/deal.II/include/deal.II/fe/mapping.h index d445dc3b8d..c86d290216 100644 --- a/deal.II/include/deal.II/fe/mapping.h +++ b/deal.II/include/deal.II/fe/mapping.h @@ -1,7 +1,7 @@ //--------------------------------------------------------------------------- // $Id$ // -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -14,7 +14,7 @@ #include -#include +#include #include #include #include @@ -47,28 +47,21 @@ template class FESubfaceValues; * the transform() functions of * inheriting classes in order to * work. - * - * Mappings are usually defined - * for vectors. If such a - * MappingType is applied to a - * rank 2 tensor, it is implied - * that the mapping is applied to - * each column. - */ + */ enum MappingType { /// No mapping mapping_none = 0x0000, -/// Covariant mapping +/// Covariant mapping (see Mapping::transform() for details) mapping_covariant = 0x0001, -/// Contravariant mapping +/// Contravariant mapping (see Mapping::transform() for details) mapping_contravariant = 0x0002, -/// Mapping of the gradient of a covariant vector field +/// Mapping of the gradient of a covariant vector field (see Mapping::transform() for details) mapping_covariant_gradient = 0x0003, -/// Mapping of the gradient of a contravariant vector field +/// Mapping of the gradient of a contravariant vector field (see Mapping::transform() for details) mapping_contravariant_gradient = 0x0004, -/// The Piola transform usually used for Hdiv elements /** + * The Piola transform usually used for Hdiv elements. * Piola transform is the * standard transformation of * vector valued elements in @@ -77,15 +70,16 @@ enum MappingType * transformation scaled by the * inverse of the volume * element. - * - * If applied to a rank 2 - * tensor, the mapping class - * will apply the correct - * transformation for the - * gradient of such a vector - * field. */ mapping_piola = 0x0100, + /** + transformation for the gradient of + for a vector field + correspoing to a mapping_piola + transformation (see Mapping::transform() for details). + */ + + mapping_piola_gradient = 0x0101, /// The mapping used for Nedelec elements /** * curl-conforming elements are @@ -94,16 +88,13 @@ enum MappingType * introduce a separate mapping * type, such that we can use * the same flag for the vector - * and its gradient (the - * transformation of the - * gradient differs from the - * one used by #mapping_covariant). + * and its gradient (see Mapping::transform() for details). */ mapping_nedelec = 0x0200, /// The mapping used for Raviart-Thomas elements - mapping_raviart_thomas = mapping_piola, + mapping_raviart_thomas = 0x0300, /// The mapping used for BDM elements - mapping_bdm = mapping_piola + mapping_bdm = mapping_raviart_thomas }; @@ -128,10 +119,11 @@ enum MappingType * * The mapping is a transformation $\mathbf x = \Phi(\mathbf{\hat x})$ * which maps the reference cell [0,1]dim to the actual - * grid cell. In order to describe the application of the mapping to + * grid cell in Rspacedim. + * In order to describe the application of the mapping to * different objects, we introduce the notation for the Jacobian * $J(\mathbf{\hat x}) = \nabla\Phi(\mathbf{\hat x})$. For instance, - * in two dimensions, we have + * if dim=spacedim=2, we have * @f[ * J(\mathbf{\hat x}) = \begin{matrix} * \frac{\partial x}{\partial \hat x} & \frac{\partial x}{\partial \hat y} @@ -175,9 +167,10 @@ enum MappingType * * @todo Add documentation on the codimension-one case * - *

      Mapping of vector fields and tensor fields

      + *

      Mapping of vector fields, differential forms and gradients of vector fields

      * - * Mappings of a vector field v and a tensor field T + * The tranfomation of vector fields, differential forms (gradients/jacobians) and + * gradients of vector fields between the reference cell and the actual grid cell * follows the general form * * @f[ @@ -187,9 +180,12 @@ enum MappingType * \mathbf T(\mathbf x) = \mathbf A(\mathbf{\hat x}) * \mathbf{\hat T}(\mathbf{\hat x}) \mathbf B(\mathbf{\hat x}), * @f] - * respectively, where the tensors A and B are + * + * where v is a vector field or a differential form and + * and T a tensor field of gradients. + * The differential forms A and B are * determined by the MappingType enumerator. - * These transformations are performed through the two functions + * These transformations are performed through the functions * transform(). See the documentation there for possible * choices. * @@ -429,7 +425,7 @@ class Mapping : public Subscriptor }; /** - * Transform a field of vectors or forms according to the selected + * Transform a field of vectors or 1-differential forms according to the selected * MappingType. * * @note Normally, this function is called by a finite element, @@ -439,101 +435,148 @@ class Mapping : public Subscriptor * * The mapping types currently implemented by derived classes are: *
        - *
      • - * A vector field on the reference cell is mapped to the physical cell - * by the Jacobian: + *
      • #mapping_contravariant: maps a vector field on the reference cell + * is to the physical cell through the Jacobian: * @f[ - * \mathbf u(\mathbf x) = J(\mathbf{\hat x})\mathbf{\hat - * u}(\mathbf{\hat x}). + * \mathbf u(\mathbf x) = J(\mathbf{\hat x})\mathbf{\hat u}(\mathbf{\hat x}). * @f] * In physics, this is usually refered to as the contravariant - * transformation, and here it is triggered by the MappingType - * #mapping_contravariant. Mathematically, it is the push forward of a + * transformation. Mathematically, it is the push forward of a * vector field. * - *
      • A field of one-forms on the reference cell is usually - * represented as a vector field as well, but is transformed by the - * pull back, which is selected by #mapping_covariant: + *
      • #mapping_covariant: maps a field of one-forms on the reference cell + * to a field of one-forms on the physical cell. + * (theoretically this would refer to a DerivativeForm<1, dim, 1> but it + * canonically identified with a Tensor<1,dim>). + * Mathematically, it is the pull back of the differential form + * @f[ + * \mathbf u(\mathbf x) = J*(J^{T} J)^{-1}(\mathbf{\hat x})\mathbf{\hat + * u}(\mathbf{\hat x}). + * @f] + In the case when dim=spacedim the previous formula reduces to * @f[ * \mathbf u(\mathbf x) = J^{-T}(\mathbf{\hat x})\mathbf{\hat * u}(\mathbf{\hat x}). * @f] - * Gradients of differentiable functions are transformed this way. + * Gradients of scalar differentiable functions are transformed this way. * - *
      • A field of n-1-forms on the reference cell is also + *
      • #mapping_piola: A field of n-1-forms on the reference cell is also * represented by a vector field, but again transforms differently, - * namely by the Piola transform (#mapping_piola) + * namely by the Piola transform * @f[ * \mathbf u(\mathbf x) = \frac{1}{\text{det}J(\mathbf x)} * J(\mathbf x) \mathbf{\hat u}(\mathbf x). * @f] - * + * @todo What is n in mapping_piola description? *
      * */ virtual void transform (const VectorSlice > > input, - VectorSlice > > output, + VectorSlice > > output, const InternalDataBase &internal, const MappingType type) const = 0; + /** - * Transform a field of rank two tensors according to the selected - * MappingType. - * - * @note Normally, this function is called by a finite element, - * filling FEValues objects. For this finite element, there should be - * an alias MappingType like #mapping_bdm, #mapping_nedelec, etc. This - * alias should be preferred to using the types below. - * - * This function is most of the time applied to gradients of a - * Tensor<1,dim> object, thus in the formulas below, it is useful to - * think of $\mathbf{T} = \nabla \mathbf u$ and $\mathbf{\hat T} = - * \hat\nabla \mathbf{\hat u}$. - * - * @todo The formulas for #mapping_covariant_gradient and - * #mapping_contravariant_gradient have been reverse engineered from - * MappingQ1. They should be verified for consistency with - * mathematics. The description of the Piola transform is from Hoppe's - * lecture notes and the implementation should be verified. - * - * The mapping types currently implemented by derived classes are: - *
        - *
      • #mapping_contravariant_gradient, which is the consistent gradient - * for a vector field mapped with #mapping_contravariant, namely - * @f[ - * \mathbf T(\mathbf x) = - * J(\mathbf{\hat x}) \mathbf{\hat T}(\mathbf{\hat x}) - * J^{-T}(\mathbf{\hat x}). - * @f] - * - *
      • Correspondingly, #mapping_covariant_gradient is the consistent - * gradient of a one-form, namely, - * @f[ - * \mathbf T(\mathbf x) = - * J^{-T}(\mathbf{\hat x}) \mathbf{\hat T}(\mathbf{\hat x}) - * J^{-T}(\mathbf{\hat x}). - * @f] - * - *
      • The gradients of n-1-forms mapped by the Piola - * transform are mapped by #mapping_piola, and the formul is - * @f[ - * \mathbf T(\mathbf x) = - * \frac{1}{\text{det}J(\mathbf x)} - * J(\mathbf{\hat x}) \mathbf{\hat T}(\mathbf{\hat x}) - * J^{-1}(\mathbf{\hat x}). - * @f] - *
      - */ + Transform a field of differential forms from the reference cell to the physical cell. + + It is useful to think of $\mathbf{T} = D \mathbf u$ and + $\mathbf{\hat T} = \hat D \mathbf{\hat u}$, with $\mathbf u$ a vector field. + + The mapping types currently implemented by derived classes are: +
        +
      • #mapping_covariant: maps a field of forms on the reference cell + to a field of forms on the physical cell. + Mathematically, it is the pull back of the differential form + @f[ + \mathbf T(\mathbf x) = \mathbf{\hat T}(\mathbf{\hat x}) + J*(J^{T} J)^{-1}(\mathbf{\hat x}). + @f] + n the case when dim=spacedim the previous formula reduces to + @f[ + \mathbf T(\mathbf x) = \mathbf{\hat u}(\mathbf{\hat x}) + J^{-1}(\mathbf{\hat x}). + @f] + Jacobians of spacedim-vector valued differentiable functions are transformed this way. +
      + + @note It would have been more reasonable to make this transform a template function + with the rank in DerivativeForm<1, dim, rank>. Unfortunately C++ does not + allow templatized virtual functions. This is why we identified + DerivativeForm<1, dim, 1> with a Tensor<1,dim> when using mapping_covariant + in the function transform above this one. +*/ + virtual void - transform (const VectorSlice > > input, + transform (const VectorSlice > > input, VectorSlice > > output, 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 jacobians 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: +
        + +
      • #mapping_contravariant_gradient, it + assumes $\mathbf u(\mathbf x) = J \mathbf{\hat u}$ so that + @f[ + \mathbf T(\mathbf x) = + J(\mathbf{\hat x}) \mathbf{\hat T}(\mathbf{\hat x}) + J^{-1}(\mathbf{\hat x}). + @f] + +
      • #mapping_covariant_gradient, it + assumes $\mathbf u(\mathbf x) = J^{-T} \mathbf{\hat u}$ so that + @f[ + \mathbf T(\mathbf x) = + J^{-T}(\mathbf{\hat x}) \mathbf{\hat T}(\mathbf{\hat x}) + J^{-1}(\mathbf{\hat x}). + @f] + +
      • #mapping_piola_gradient, it + assumes $\mathbf u(\mathbf x) = \frac{1}{\text{det}J(\mathbf x)} + J(\mathbf x) \mathbf{\hat u}(\mathbf x)$ + so that + @f[ + \mathbf T(\mathbf x) = + \frac{1}{\text{det}J(\mathbf x)} + J(\mathbf{\hat x}) \mathbf{\hat T}(\mathbf{\hat x}) + J^{-1}(\mathbf{\hat x}). + @f] +
      + + @todo The formulas for #mapping_covariant_gradient, + #mapping_contravariant_gradient and #mapping_piola_gradient + are only true as stated for linear mappings, + if the mapping is bilinear for example then there is a missing + term associated with the derivative of of J. + +*/ + virtual + void + transform (const VectorSlice > > input, + VectorSlice > > output, + const InternalDataBase &internal, + const MappingType type) const = 0; + + + + + + + + + /** * @deprecated Use transform() instead. */ @@ -547,7 +590,7 @@ class Mapping : public Subscriptor * @deprecated Use transform() instead. */ void - transform_covariant (const VectorSlice > > input, + transform_covariant (const VectorSlice > > input, const unsigned int offset, VectorSlice > > output, const InternalDataBase &internal) const; @@ -566,7 +609,7 @@ class Mapping : public Subscriptor */ void - transform_contravariant (const VectorSlice > > intput, + transform_contravariant (const VectorSlice > > input, const unsigned int offset, const VectorSlice > > output, const typename Mapping::InternalDataBase &internal) const; @@ -739,9 +782,9 @@ class Mapping : public Subscriptor InternalDataBase &internal, std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &cell_normal_vectors, CellSimilarity::Similarity &cell_similarity ) const=0; diff --git a/deal.II/include/deal.II/fe/mapping_cartesian.h b/deal.II/include/deal.II/fe/mapping_cartesian.h index cecc88ee0c..4d50afa323 100644 --- a/deal.II/include/deal.II/fe/mapping_cartesian.h +++ b/deal.II/include/deal.II/fe/mapping_cartesian.h @@ -63,10 +63,10 @@ class MappingCartesian : public Mapping typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, - std::vector > &, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, + std::vector > &, CellSimilarity::Similarity &cell_similarity) const ; @@ -92,16 +92,24 @@ class MappingCartesian : public Mapping virtual void transform (const VectorSlice > > input, - VectorSlice > > output, + VectorSlice > > output, const typename Mapping::InternalDataBase &internal, const MappingType type) const; virtual void - transform (const VectorSlice > > input, - VectorSlice > > output, + transform (const VectorSlice > > input, + VectorSlice > > output, const typename Mapping::InternalDataBase &internal, const MappingType type) const; + + virtual + void + transform (const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &internal, + const MappingType type) const; + virtual Point transform_unit_to_real_cell ( const typename Triangulation::cell_iterator &cell, diff --git a/deal.II/include/deal.II/fe/mapping_q.h b/deal.II/include/deal.II/fe/mapping_q.h index 50ffaf7eed..b6898c65db 100644 --- a/deal.II/include/deal.II/fe/mapping_q.h +++ b/deal.II/include/deal.II/fe/mapping_q.h @@ -129,8 +129,8 @@ class MappingQ : public MappingQ1 const MappingType type) const; virtual void - transform (const VectorSlice > > input, - VectorSlice > > output, + transform (const VectorSlice > > input, + VectorSlice > > output, const typename Mapping::InternalDataBase &internal, const MappingType type) const; @@ -214,10 +214,10 @@ class MappingQ : public MappingQ1 typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, + std::vector > &cell_normal_vectors, CellSimilarity::Similarity &cell_similarity) const ; /** diff --git a/deal.II/include/deal.II/fe/mapping_q1.h b/deal.II/include/deal.II/fe/mapping_q1.h index 065f24849c..e01054d786 100644 --- a/deal.II/include/deal.II/fe/mapping_q1.h +++ b/deal.II/include/deal.II/fe/mapping_q1.h @@ -1,7 +1,7 @@ //--------------------------------------------------------------------------- // $Id$ // -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -13,6 +13,7 @@ #define __deal2__mapping_q1_h +#include #include #include #include @@ -90,11 +91,56 @@ class MappingQ1 : public Mapping const MappingType type) const; virtual void - transform (const VectorSlice > > input, + transform (const VectorSlice > > input, VectorSlice > > output, const typename Mapping::InternalDataBase &internal, const MappingType type) const; + virtual + void + transform (const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &internal, + const MappingType type) const; + + + protected: +/** + This function and the next allow to generate the transform require by + the virtual transform() in mapping, but unfortunately in C++ one cannot + declare a virtual template function. +*/ + template < int rank > + void + transform_fields(const VectorSlice > > input, + VectorSlice< std::vector > > output, + const typename Mapping::InternalDataBase &internal, + const MappingType type) const; +/** + see doc in transform_fields +*/ + template < int rank > + void + transform_gradients(const VectorSlice > > input, + VectorSlice< std::vector > > output, + const typename Mapping::InternalDataBase &internal, + const MappingType type) const; +/** + see doc in transform_fields +*/ + template < int rank > + void + transform_differential_forms( + const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &internal, + const MappingType type) const; + + public: + + + + /** * Return a pointer to a copy of the * present object. The caller of this @@ -206,6 +252,12 @@ class MappingQ1 : public Mapping * transformation at each of * the quadrature points. The * matrix stored is the + * Jacobian * G^{-1}, + * where G = Jacobian^{t} * Jacobian, + * is the first fundamental + * form of the map; + * if dim=spacedim then + * it reduces to the transpose of the * inverse of the Jacobian * matrix, which itself is * stored in the @@ -214,7 +266,7 @@ class MappingQ1 : public Mapping * * Computed on each cell. */ - std::vector > covariant; + std::vector > covariant; /** * Tensors of contravariant @@ -226,23 +278,8 @@ class MappingQ1 : public Mapping * i.e. $J_{ij}=dx_i/d\hat x_j$. * * Computed on each cell. - * - * @note If dim > contravariant; + std::vector< DerivativeForm<1,dim,spacedim> > contravariant; /** * Unit tangential vectors. Used @@ -333,9 +370,9 @@ class MappingQ1 : public Mapping typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &cell_normal_vectors, CellSimilarity::Similarity &cell_similarity) const; @@ -514,10 +551,17 @@ class MappingQ1 : public Mapping InternalData &mdata, Point &p_unit) const; - /** - * Always returns @p true because - * MappingQ1 preserves vertex locations. - */ + + + + + + + + /** + * Always returns @p true because + * MappingQ1 preserves vertex locations. + */ virtual bool preserves_vertex_locations () const; @@ -532,6 +576,60 @@ class MappingQ1 : public Mapping * @ingroup Exceptions */ DeclException0(ExcTransformationFailed); + + + protected: + /* Trick to templatize transform_real_to_unit_cell */ + template + void transform_real_to_unit_cell_internal_codim1 + (const typename Triangulation::cell_iterator &cell, + const Point &p, + InternalData &mdata, + Point &p_unit) const; + +/** + Compute an initial guess to pass to the Newton method in + transform_real_to_unit_cell. + + For the initial guess we proceed in the following way: +
        +
      • find the least square dim-dimensional plane + approximating the cell vertices, i.e. we find and affine + map A x_hat + b from the reference cell to the real space. +
      • Solve the equation A x_hat + b = p for x_hat +
      • This x_hat is the initial solution used for the Newton Method. +
      + + @note if dim + transform_real_to_unit_cell_initial_guess (const std::vector > &vertex, + const Point &p) const; + private: /** @@ -654,6 +752,34 @@ class MappingQ1 : public Mapping }; +template<> +void +MappingQ1<2,3>:: +transform_real_to_unit_cell_internal +(const Triangulation<2,3>::cell_iterator &cell, + const Point<3> &p, + InternalData &mdata, + Point<2> &p_unit) const; + +/* Only used in mapping Q if degree > 1 */ +template<> +void +MappingQ1<1,2>:: +transform_real_to_unit_cell_internal (const Triangulation<1,2>::cell_iterator &cell, + const Point<2> &p, + InternalData &mdata, + Point<1> &p_unit) const; + +/* Only used in mapping Q if degree > 1 */ +template<> +void +MappingQ1<1,3>:: +transform_real_to_unit_cell_internal (const Triangulation<1,3>::cell_iterator &cell, + const Point<3> &p, + InternalData &mdata, + Point<1> &p_unit) const; + + /** * In order to avoid creation of static MappingQ1 objects at several * places in the library (in particular in backward compatibility diff --git a/deal.II/include/deal.II/fe/mapping_q1_eulerian.h b/deal.II/include/deal.II/fe/mapping_q1_eulerian.h index ecfc039a04..20c89ff7d1 100644 --- a/deal.II/include/deal.II/fe/mapping_q1_eulerian.h +++ b/deal.II/include/deal.II/fe/mapping_q1_eulerian.h @@ -150,9 +150,9 @@ class MappingQ1Eulerian : public MappingQ1 typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &cell_normal_vectors, CellSimilarity::Similarity &cell_similarity) const; diff --git a/deal.II/include/deal.II/fe/mapping_q_eulerian.h b/deal.II/include/deal.II/fe/mapping_q_eulerian.h index 0ce6c967e7..0147effa4f 100644 --- a/deal.II/include/deal.II/fe/mapping_q_eulerian.h +++ b/deal.II/include/deal.II/fe/mapping_q_eulerian.h @@ -152,9 +152,9 @@ class MappingQEulerian : public MappingQ typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &cell_normal_vectors, CellSimilarity::Similarity &cell_similarity) const; diff --git a/deal.II/include/deal.II/grid/grid_out.h b/deal.II/include/deal.II/grid/grid_out.h index 9863ae3894..a3cdb4d61d 100644 --- a/deal.II/include/deal.II/grid/grid_out.h +++ b/deal.II/include/deal.II/grid/grid_out.h @@ -1338,7 +1338,12 @@ class GridOut void write_msh_faces (const Triangulation<1,2> &tria, const unsigned int starting_index, std::ostream &out) const; + void write_msh_faces (const Triangulation<1,3> &tria, + const unsigned int starting_index, + std::ostream &out) const; + + /** * Write the grid information about * lines to @p out. Only those lines @@ -1390,6 +1395,9 @@ class GridOut void write_msh_lines (const Triangulation<1,2> &tria, const unsigned int starting_index, std::ostream &out) const; + void write_msh_lines (const Triangulation<1,3> &tria, + const unsigned int starting_index, + std::ostream &out) const; /** * Declaration of the specialization * of above function for 2d. Does @@ -1455,6 +1463,9 @@ class GridOut void write_ucd_faces (const Triangulation<1,2> &tria, const unsigned int starting_index, std::ostream &out) const; + void write_ucd_faces (const Triangulation<1,3> &tria, + const unsigned int starting_index, + std::ostream &out) const; /** @@ -1505,6 +1516,9 @@ class GridOut void write_ucd_lines (const Triangulation<1,2> &tria, const unsigned int starting_index, std::ostream &out) const; + void write_ucd_lines (const Triangulation<1,3> &tria, + const unsigned int starting_index, + std::ostream &out) const; /** @@ -1558,7 +1572,7 @@ class GridOut * 1d, 2sd. Simply returns zero. */ unsigned int n_boundary_faces (const Triangulation<1,2> &tria) const; - + unsigned int n_boundary_faces (const Triangulation<1,3> &tria) const; /** * Return the number of lines in the * triangulation which have a boundary @@ -1594,6 +1608,7 @@ class GridOut * 1d, 2sd. Simply returns zero. */ unsigned int n_boundary_lines (const Triangulation<1,2> &tria) const; + unsigned int n_boundary_lines (const Triangulation<1,3> &tria) const; /** * Declaration of the specialization diff --git a/deal.II/include/deal.II/grid/grid_tools.h b/deal.II/include/deal.II/grid/grid_tools.h index 2bcbfe3e85..e41ae8650e 100644 --- a/deal.II/include/deal.II/grid/grid_tools.h +++ b/deal.II/include/deal.II/grid/grid_tools.h @@ -377,7 +377,7 @@ namespace GridTools * by the algorithm. */ template class Container, int spacedim> - std::pair::active_cell_iterator, Point > + std::pair::active_cell_iterator, Point > find_active_cell_around_point (const Mapping &mapping, const Container &container, const Point &p); @@ -393,7 +393,7 @@ namespace GridTools * handlers is always zero. */ template - std::pair::active_cell_iterator, Point > + std::pair::active_cell_iterator, Point > find_active_cell_around_point (const hp::MappingCollection &mapping, const hp::DoFHandler &container, const Point &p); diff --git a/deal.II/include/deal.II/grid/tria_accessor.h b/deal.II/include/deal.II/grid/tria_accessor.h index 0c9afcfa53..2c2fe9d482 100644 --- a/deal.II/include/deal.II/grid/tria_accessor.h +++ b/deal.II/include/deal.II/grid/tria_accessor.h @@ -2831,10 +2831,14 @@ class CellAccessor : public TriaAccessor * may be different as to whether * a point is in- or outside the * cell in real space. + + In case of codim>0, the point is first projected + to the manifold where the cell is embedded and + then check if this projection is inside the cell. + */ bool point_inside (const Point &p) const; - /** * Set the neighbor @p i of * this cell to the cell pointed @@ -2905,6 +2909,17 @@ class CellAccessor : public TriaAccessor */ unsigned int neighbor_of_neighbor_internal (const unsigned int neighbor) const; + /** + As for any codim>0 we can use a similar code + and c++ does not allow partial templates. + we use this auxiliary function that is then + called from point_inside. + */ + template + bool point_inside_codim(const Point &p) const; + + + private: /** * Set the orientation of this @@ -3023,11 +3038,12 @@ CellAccessor (const TriaAccessor &) #ifndef DOXYGEN -template <> bool CellAccessor<1,1>::point_inside (const Point<1> &p) const; -template <> bool CellAccessor<2,2>::point_inside (const Point<2> &p) const; +template <> bool CellAccessor<1,1>::point_inside (const Point<1> &) const; +template <> bool CellAccessor<2,2>::point_inside (const Point<2> &) const; template <> bool CellAccessor<3,3>::point_inside (const Point<3> &) const; -template <> bool CellAccessor<1,2>::point_inside (const Point<2> &p) const; -template <> bool CellAccessor<2,3>::point_inside (const Point<3> &p) const; +template <> bool CellAccessor<1,2>::point_inside (const Point<2> &) const; +template <> bool CellAccessor<1,3>::point_inside (const Point<3> &) const; +template <> bool CellAccessor<2,3>::point_inside (const Point<3> &) const; // ------------------------------------------------------------------- #endif // DOXYGEN diff --git a/deal.II/include/deal.II/grid/tria_accessor.templates.h b/deal.II/include/deal.II/grid/tria_accessor.templates.h index dcbc34982d..4ad67ab7e8 100644 --- a/deal.II/include/deal.II/grid/tria_accessor.templates.h +++ b/deal.II/include/deal.II/grid/tria_accessor.templates.h @@ -2643,6 +2643,15 @@ CellAccessor<1,2>::subface_case(const unsigned int) const } +template <> +inline +internal::SubfaceCase<1> +CellAccessor<1,3>::subface_case(const unsigned int) const +{ + return internal::SubfaceCase<1>::case_none; +} + + template <> inline internal::SubfaceCase<2> diff --git a/deal.II/include/deal.II/grid/tria_boundary.h b/deal.II/include/deal.II/grid/tria_boundary.h index 1b2871ca11..adfda9b004 100644 --- a/deal.II/include/deal.II/grid/tria_boundary.h +++ b/deal.II/include/deal.II/grid/tria_boundary.h @@ -1,7 +1,7 @@ //--------------------------------------------------------------------------- // $Id$ // -// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -643,6 +643,17 @@ get_intermediate_points_on_face (const Triangulation<1,2>::face_iterator &, std::vector > &) const; + +template <> +Point<3> +Boundary<1,3>:: +get_new_point_on_face (const Triangulation<1,3>::face_iterator &) const; + +template <> +void +Boundary<1,3>:: +get_intermediate_points_on_face (const Triangulation<1,3>::face_iterator &, + std::vector > &) const; template <> void StraightBoundary<1,1>:: @@ -676,6 +687,13 @@ StraightBoundary<3,3>:: get_intermediate_points_on_quad (const Triangulation<3,3>::quad_iterator &quad, std::vector > &points) const; +template <> +Point<3> +StraightBoundary<1,3>:: +project_to_surface (const Triangulation<1, 3>::quad_iterator &quad, + const Point<3> &y) const; + + #endif // DOXYGEN DEAL_II_NAMESPACE_CLOSE diff --git a/deal.II/include/deal.II/grid/tria_boundary_lib.h b/deal.II/include/deal.II/grid/tria_boundary_lib.h index dacaa2b41d..d34fd58fcd 100644 --- a/deal.II/include/deal.II/grid/tria_boundary_lib.h +++ b/deal.II/include/deal.II/grid/tria_boundary_lib.h @@ -41,8 +41,8 @@ DEAL_II_NAMESPACE_OPEN * * @author Guido Kanschat, 2001, Wolfgang Bangerth, 2007 */ -template -class CylinderBoundary : public StraightBoundary +template +class CylinderBoundary : public StraightBoundary { public: /** @@ -70,24 +70,24 @@ class CylinderBoundary : public StraightBoundary * point on the axis. */ CylinderBoundary (const double radius, - const Point direction, - const Point point_on_axis); + const Point direction, + const Point point_on_axis); /** * Refer to the general documentation of * this class and the documentation of the * base class. */ - virtual Point - get_new_point_on_line (const typename Triangulation::line_iterator &line) const; + virtual Point + get_new_point_on_line (const typename Triangulation::line_iterator &line) const; /** * Refer to the general documentation of * this class and the documentation of the * base class. */ - virtual Point - get_new_point_on_quad (const typename Triangulation::quad_iterator &quad) const; + virtual Point + get_new_point_on_quad (const typename Triangulation::quad_iterator &quad) const; /** * Refer to the general @@ -99,8 +99,8 @@ class CylinderBoundary : public StraightBoundary * @p get_intermediate_points_between_points. */ virtual void - get_intermediate_points_on_line (const typename Triangulation::line_iterator &line, - std::vector > &points) const; + get_intermediate_points_on_line (const typename Triangulation::line_iterator &line, + std::vector > &points) const; /** * Refer to the general @@ -112,8 +112,8 @@ class CylinderBoundary : public StraightBoundary * and for points.size()==1. */ virtual void - get_intermediate_points_on_quad (const typename Triangulation::quad_iterator &quad, - std::vector > &points) const; + get_intermediate_points_on_quad (const typename Triangulation::quad_iterator &quad, + std::vector > &points) const; /** * Compute the normals to the @@ -126,8 +126,8 @@ class CylinderBoundary : public StraightBoundary * base class. */ virtual void - get_normals_at_vertices (const typename Triangulation::face_iterator &face, - typename Boundary::FaceVertexNormals &face_vertex_normals) const; + get_normals_at_vertices (const typename Triangulation::face_iterator &face, + typename Boundary::FaceVertexNormals &face_vertex_normals) const; /** * Return the radius of the cylinder. @@ -152,12 +152,12 @@ class CylinderBoundary : public StraightBoundary /** * The direction vector of the axis. */ - const Point direction; + const Point direction; /** * An arbitrary point on the axis. */ - const Point point_on_axis; + const Point point_on_axis; private: @@ -173,15 +173,15 @@ class CylinderBoundary : public StraightBoundary * in the documentation of the * base class. */ - void get_intermediate_points_between_points (const Point &p0, const Point &p1, - std::vector > &points) const; + void get_intermediate_points_between_points (const Point &p0, const Point &p1, + std::vector > &points) const; /** * Given a number for the axis, * return a vector that denotes * this direction. */ - static Point get_axis_vector (const unsigned int axis); + static Point get_axis_vector (const unsigned int axis); }; diff --git a/deal.II/include/deal.II/numerics/vectors.templates.h b/deal.II/include/deal.II/numerics/vectors.templates.h index cebeaefb47..df2bfefa4f 100644 --- a/deal.II/include/deal.II/numerics/vectors.templates.h +++ b/deal.II/include/deal.II/numerics/vectors.templates.h @@ -13,6 +13,7 @@ #ifndef _deal2__vectors_templates_h #define _deal2__vectors_templates_h +#include #include #include #include @@ -2602,7 +2603,8 @@ namespace VectorTools { const double tol = 0.5 * cell->get_fe ().degree * 1e-13 / cell->face (face)->line (line)->diameter (); const unsigned int dim = 3; - + const unsigned int spacedim = 3; + hp_fe_values.reinit (cell, (cell->active_fe_index () * GeometryInfo::faces_per_cell + face) @@ -2612,7 +2614,7 @@ namespace VectorTools // objects. const FEValues& fe_values = hp_fe_values.get_present_fe_values (); - const std::vector >& + const std::vector< DerivativeForm<1,dim,spacedim> > & jacobians = fe_values.get_jacobians (); const std::vector >& quadrature_points = fe_values.get_quadrature_points (); @@ -2814,13 +2816,14 @@ namespace VectorTools const unsigned int first_vector_component, std::vector& dof_values) { + const unsigned int spacedim = dim; hp_fe_values.reinit (cell, cell->active_fe_index () * GeometryInfo::faces_per_cell + face); // Initialize the required // objects. const FEValues& fe_values = hp_fe_values.get_present_fe_values (); - const std::vector >& + const std::vector< DerivativeForm<1,dim,spacedim> > & jacobians = fe_values.get_jacobians (); std::vector > @@ -3782,7 +3785,7 @@ namespace VectorTools const FEFaceValues<2>& fe_values, const unsigned int first_vector_component, const Function<2>& boundary_function, - const std::vector >& jacobians, + const std::vector > & jacobians, ConstraintMatrix& constraints) { // Compute the intergral over @@ -3857,7 +3860,7 @@ namespace VectorTools const FEFaceValues&, const unsigned int, const Function&, - const std::vector >&, + const std::vector >&, ConstraintMatrix&) { Assert (false, ExcNotImplemented ()); @@ -3874,7 +3877,7 @@ namespace VectorTools const FEFaceValues<3>& fe_values, const unsigned int first_vector_component, const Function<3>& boundary_function, - const std::vector >& jacobians, + const std::vector >& jacobians, std::vector& dof_values, std::vector& projected_dofs) { @@ -3954,7 +3957,7 @@ namespace VectorTools const FEFaceValues&, const unsigned int, const Function&, - const std::vector >&, + const std::vector > &, std::vector&, std::vector&) { @@ -3972,6 +3975,7 @@ namespace VectorTools ConstraintMatrix& constraints, const Mapping& mapping) { + const unsigned int spacedim = dim; // Interpolate the normal components // of the boundary functions. Since // the Raviart-Thomas elements are @@ -4034,7 +4038,7 @@ namespace VectorTools fe_values.reinit (cell, face + cell->active_fe_index () * GeometryInfo::faces_per_cell); - const std::vector >& + const std::vector > & jacobians = fe_values.get_present_fe_values ().get_jacobians (); fe_face_values.reinit (cell, face); @@ -4098,7 +4102,7 @@ namespace VectorTools fe_values.reinit (cell, face + cell->active_fe_index () * GeometryInfo::faces_per_cell); - const std::vector >& + const std::vector >& jacobians = fe_values.get_present_fe_values ().get_jacobians (); fe_face_values.reinit (cell, face); @@ -4137,6 +4141,7 @@ namespace VectorTools ConstraintMatrix& constraints, const hp::MappingCollection& mapping_collection) { + const unsigned int spacedim = dim; const hp::FECollection& fe_collection = dof_handler.get_fe (); hp::QCollection face_quadrature_collection; hp::QCollection quadrature_collection; @@ -4187,7 +4192,7 @@ namespace VectorTools fe_values.reinit (cell, face + cell->active_fe_index () * GeometryInfo::faces_per_cell); - const std::vector >& + const std::vector > & jacobians = fe_values.get_present_fe_values ().get_jacobians (); fe_face_values.reinit (cell, face); @@ -4234,7 +4239,7 @@ namespace VectorTools fe_values.reinit (cell, face + cell->active_fe_index () * GeometryInfo::faces_per_cell); - const std::vector >& + const std::vector > & jacobians = fe_values.get_present_fe_values ().get_jacobians (); fe_face_values.reinit (cell, face); diff --git a/deal.II/source/base/data_out_base.cc b/deal.II/source/base/data_out_base.cc index 52fc8725fe..0484766525 100644 --- a/deal.II/source/base/data_out_base.cc +++ b/deal.II/source/base/data_out_base.cc @@ -6133,6 +6133,7 @@ INSTANTIATE(2,2); INSTANTIATE(3,3); INSTANTIATE(4,4); INSTANTIATE(1,2); +INSTANTIATE(1,3); INSTANTIATE(2,3); INSTANTIATE(3,4); diff --git a/deal.II/source/distributed/tria.cc b/deal.II/source/distributed/tria.cc index fcf56b7d5b..6afba8dc1e 100644 --- a/deal.II/source/distributed/tria.cc +++ b/deal.II/source/distributed/tria.cc @@ -3154,6 +3154,47 @@ namespace parallel { return MPI_COMM_WORLD; } + + + template <> + Triangulation<1,3>::Triangulation (MPI_Comm) + { + Assert (false, ExcNotImplemented()); + } + + + template <> + Triangulation<1,3>::~Triangulation () + { + Assert (false, ExcNotImplemented()); + } + + + + template <> + types::subdomain_id_t + Triangulation<1,3>::locally_owned_subdomain () const + { + Assert (false, ExcNotImplemented()); + return 0; + } + + + template <> + unsigned int + Triangulation<1,3>::n_global_active_cells () const + { + Assert (false, ExcNotImplemented()); + return 0; + } + + + template <> + MPI_Comm + Triangulation<1,3>::get_communicator () const + { + return MPI_COMM_WORLD; + } } } diff --git a/deal.II/source/dofs/block_info.inst.in b/deal.II/source/dofs/block_info.inst.in index 2657e3425d..c3ad113ba7 100644 --- a/deal.II/source/dofs/block_info.inst.in +++ b/deal.II/source/dofs/block_info.inst.in @@ -22,5 +22,11 @@ for (deal_II_dimension : DIMENSIONS) template void BlockInfo::initialize(const MGDoFHandler&, bool); template void BlockInfo::initialize_local(const DoFHandler&); #endif + +#if deal_II_dimension == 3 + template void BlockInfo::initialize(const DoFHandler<1,3>&); + template void BlockInfo::initialize(const MGDoFHandler<1,3>&, bool); + template void BlockInfo::initialize_local(const DoFHandler<1,3>&); +#endif } diff --git a/deal.II/source/dofs/dof_accessor.inst.in b/deal.II/source/dofs/dof_accessor.inst.in index 5392e65cc1..bff7474f46 100644 --- a/deal.II/source/dofs/dof_accessor.inst.in +++ b/deal.II/source/dofs/dof_accessor.inst.in @@ -118,11 +118,25 @@ for (deal_II_dimension : DIMENSIONS) TriaActiveIterator > >; #endif + +#if deal_II_dimension == 3 + template class DoFCellAccessor >; + + template class + TriaRawIterator > >; + template class + TriaIterator > >; + template class + TriaActiveIterator > >; +#endif + + // -------------------------------------------------------------------------- // explicit instantiations (for hp::DoFHandler) #if deal_II_dimension == 1 template class DoFAccessor<1, hp::DoFHandler<1,2> >; + template class DoFAccessor<1, hp::DoFHandler<1,3> >; #endif #if deal_II_dimension == 2 @@ -144,6 +158,18 @@ for (deal_II_dimension : DIMENSIONS) template class TriaActiveIterator > >; #endif + + +#if deal_II_dimension == 3 + template class DoFCellAccessor >; + + template class + TriaRawIterator > >; + template class + TriaIterator > >; + template class + TriaActiveIterator > >; +#endif } @@ -169,6 +195,19 @@ for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS DoFCellAccessor >::set_dof_values_by_interpolation (const Vector&, VEC&) const; +#endif + +#if deal_II_dimension == 3 + + template + void + DoFCellAccessor >::get_interpolated_dof_values + (const VEC&, Vector&) const; + template + void + DoFCellAccessor >::set_dof_values_by_interpolation + (const Vector&, VEC&) const; + #endif } @@ -196,6 +235,19 @@ for (VEC : SERIAL_VECTORS; SCALAR : REAL_SCALARS; deal_II_dimension : DIMENSIONS DoFCellAccessor >::set_dof_values_by_interpolation (const Vector&, VEC&) const; +#endif + +#if deal_II_dimension == 3 + + template + void + DoFCellAccessor >::get_interpolated_dof_values + (const VEC&, Vector&) const; + template + void + DoFCellAccessor >::set_dof_values_by_interpolation + (const Vector&, VEC&) const; + #endif } diff --git a/deal.II/source/dofs/dof_handler.inst.in b/deal.II/source/dofs/dof_handler.inst.in index 4553a733d4..68d86b9423 100644 --- a/deal.II/source/dofs/dof_handler.inst.in +++ b/deal.II/source/dofs/dof_handler.inst.in @@ -28,5 +28,10 @@ for (deal_II_dimension : DIMENSIONS) #if deal_II_dimension < 3 template class DoFHandler; #endif + +#if deal_II_dimension == 3 + template class DoFHandler<1,deal_II_dimension>; +#endif + } diff --git a/deal.II/source/dofs/dof_handler_policy.inst.in b/deal.II/source/dofs/dof_handler_policy.inst.in index 0daab4203e..dbe008f664 100644 --- a/deal.II/source/dofs/dof_handler_policy.inst.in +++ b/deal.II/source/dofs/dof_handler_policy.inst.in @@ -28,6 +28,12 @@ namespace internal template class Sequential; template class ParallelDistributed; #endif + +#if deal_II_dimension==3 + template class PolicyBase<1,3>; + template class Sequential<1,3>; + template class ParallelDistributed<1,3>; +#endif \} \} \} diff --git a/deal.II/source/dofs/dof_objects.inst.in b/deal.II/source/dofs/dof_objects.inst.in index e3fcb7f220..b2563c8dbe 100644 --- a/deal.II/source/dofs/dof_objects.inst.in +++ b/deal.II/source/dofs/dof_objects.inst.in @@ -56,5 +56,26 @@ for (deal_II_dimension, structdim : DIMENSIONS) const unsigned int local_index, const unsigned int global_index); #endif + + +#if (deal_II_dimension == 3) && (structdim < 3) + + template + unsigned int + DoFObjects:: + get_dof_index (const dealii::DoFHandler<1,3> &dof_handler, + const unsigned int obj_index, + const unsigned int fe_index, + const unsigned int local_index) const; + + template + void + DoFObjects:: + set_dof_index (const dealii::DoFHandler<1,3> &dof_handler, + const unsigned int obj_index, + const unsigned int fe_index, + const unsigned int local_index, + const unsigned int global_index); +#endif } diff --git a/deal.II/source/dofs/dof_renumbering.inst.in b/deal.II/source/dofs/dof_renumbering.inst.in index 1db0cd32fe..dd5c1facbe 100644 --- a/deal.II/source/dofs/dof_renumbering.inst.in +++ b/deal.II/source/dofs/dof_renumbering.inst.in @@ -11,13 +11,56 @@ // //--------------------------------------------------------------------------- +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + namespace DoFRenumbering + \{ + namespace boost + \{ +//TODO[WB]: also implement the following boost for hp DoFHandlers etc. + \} + -for (deal_II_dimension : DIMENSIONS) +// non-boost functions: + template + void Cuthill_McKee > + (DoFHandler&, + const bool, + const bool, + const std::vector&); + + template + void + compute_Cuthill_McKee > + (std::vector&, + const DoFHandler&, + const bool, + const bool, + const std::vector&); + + template + void component_wise + (DoFHandler&, + const std::vector&); + + template + void subdomain_wise > + (DoFHandler &); + + \} // namespace DoFRenumbering +#endif + } + +//TODO[SP]: replace by +// where applicable and move to codimension cases above also when applicable +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - namespace DoFRenumbering +#if deal_II_dimension == deal_II_space_dimension +namespace DoFRenumbering \{ namespace boost - \{ + \{ //TODO[WB]: also implement the following boost for hp DoFHandlers etc. template void @@ -73,346 +116,296 @@ for (deal_II_dimension : DIMENSIONS) void compute_minimum_degree (std::vector &, const hp::DoFHandler &, bool, bool); - \} + \} + + +// non-boost functions: + + template + void Cuthill_McKee > + (hp::DoFHandler&, + const bool, + const bool, + const std::vector&); + template + void + compute_Cuthill_McKee > + (std::vector&, + const hp::DoFHandler&, + const bool, + const bool, + const std::vector&); -// non-boost functions: + template + void Cuthill_McKee > + (MGDoFHandler&, + const bool, + const bool, + const std::vector&); - template - void Cuthill_McKee > - (DoFHandler&, - const bool, - const bool, - const std::vector&); - - template - void - compute_Cuthill_McKee > - (std::vector&, - const DoFHandler&, - const bool, - const bool, - const std::vector&); - - - template - void Cuthill_McKee > - (hp::DoFHandler&, - const bool, - const bool, - const std::vector&); - - template - void - compute_Cuthill_McKee > - (std::vector&, - const hp::DoFHandler&, - const bool, - const bool, - const std::vector&); - - template - void Cuthill_McKee > - (MGDoFHandler&, - const bool, - const bool, - const std::vector&); - - template - void - compute_Cuthill_McKee > - (std::vector&, - const MGDoFHandler&, - const bool, - const bool, - const std::vector&); - - template - void component_wise - (DoFHandler&, - const std::vector&); - -#if deal_II_dimension < 3 - template - void Cuthill_McKee > - (DoFHandler&, - const bool, - const bool, - const std::vector&); - - template - void - compute_Cuthill_McKee > - (std::vector&, - const DoFHandler&, - const bool, - const bool, - const std::vector&); - - template - void component_wise - (DoFHandler&, - const std::vector&); -#endif + template + void + compute_Cuthill_McKee > + (std::vector&, + const MGDoFHandler&, + const bool, + const bool, + const std::vector&); - template - void component_wise - (hp::DoFHandler&, - const std::vector&); + template + void component_wise + (hp::DoFHandler&, + const std::vector&); - template - void component_wise - (MGDoFHandler&, - unsigned int, - const std::vector&); + template + void component_wise + (MGDoFHandler&, + unsigned int, + const std::vector&); - template - void component_wise - (MGDoFHandler&, - const std::vector&); + template + void component_wise + (MGDoFHandler&, + const std::vector&); - template - void hierarchical - (DoFHandler&); + template + void hierarchical + (DoFHandler&); // DG renumbering for DoFHandler - template - void - cell_wise_dg > - (DoFHandler&, - const std::vector::cell_iterator>&); - - template - void - compute_cell_wise_dg > - (std::vector&, std::vector&, - const DoFHandler&, - const std::vector::cell_iterator>&); - - template - void - downstream_dg > - (DoFHandler&, - const Point&); - - template - void - compute_downstream_dg > - (std::vector&,std::vector&, - const DoFHandler&, - const Point&); - template - void - compute_downstream_dg > - (std::vector&, - const DoFHandler&, - const Point&); - - template void - cell_wise > - (DoFHandler&, - const std::vector::cell_iterator>&); - - template void - compute_cell_wise > - (std::vector&, std::vector&, - const DoFHandler&, - const std::vector::cell_iterator>&); - - template void - downstream > - (DoFHandler&, const Point&, - const bool); - - template void - compute_downstream > - (std::vector&,std::vector&, - const DoFHandler&, const Point&, - const bool); - - template - void - clockwise_dg > - (DoFHandler&, const Point&, bool); - - template - void - compute_clockwise_dg > - (std::vector&, const DoFHandler&, - const Point&, const bool); + template + void + cell_wise_dg > + (DoFHandler&, + const std::vector::cell_iterator>&); + + template + void + compute_cell_wise_dg > + (std::vector&, std::vector&, + const DoFHandler&, + const std::vector::cell_iterator>&); + + template + void + downstream_dg > + (DoFHandler&, + const Point&); + + template + void + compute_downstream_dg > + (std::vector&,std::vector&, + const DoFHandler&, + const Point&); + template + void + compute_downstream_dg > + (std::vector&, + const DoFHandler&, + const Point&); + + template void + cell_wise > + (DoFHandler&, + const std::vector::cell_iterator>&); + + template void + compute_cell_wise > + (std::vector&, std::vector&, + const DoFHandler&, + const std::vector::cell_iterator>&); + + template void + downstream > + (DoFHandler&, const Point&, + const bool); + + template void + compute_downstream > + (std::vector&,std::vector&, + const DoFHandler&, const Point&, + const bool); + + template + void + clockwise_dg > + (DoFHandler&, const Point&, bool); + + template + void + compute_clockwise_dg > + (std::vector&, const DoFHandler&, + const Point&, const bool); // Renumbering for hp::DoFHandler - template void - cell_wise_dg > - (hp::DoFHandler&, - const std::vector::cell_iterator>&); - - template void - compute_cell_wise_dg > - (std::vector&, std::vector&, - const hp::DoFHandler&, - const std::vector::cell_iterator>&); - - template void - cell_wise > - (hp::DoFHandler&, - const std::vector::cell_iterator>&); - - template void - compute_cell_wise > - (std::vector&, std::vector&, - const hp::DoFHandler&, - const std::vector::cell_iterator>&); - - template void - downstream_dg > - (hp::DoFHandler&, - const Point&); - - template void - compute_downstream_dg > - (std::vector&,std::vector&, - const hp::DoFHandler&, - const Point&); - template - void - compute_downstream_dg > - (std::vector&, - const hp::DoFHandler&, - const Point&); - - template void - downstream > - (hp::DoFHandler&, - const Point&, - const bool); - - template void - compute_downstream > - (std::vector&,std::vector&, - const hp::DoFHandler&, - const Point&, - const bool); - - template - void - clockwise_dg > - (hp::DoFHandler&, - const Point&, bool); - - template - void - compute_clockwise_dg > - (std::vector&, - const hp::DoFHandler&, - const Point&, - const bool); + template void + cell_wise_dg > + (hp::DoFHandler&, + const std::vector::cell_iterator>&); + + template void + compute_cell_wise_dg > + (std::vector&, std::vector&, + const hp::DoFHandler&, + const std::vector::cell_iterator>&); + + template void + cell_wise > + (hp::DoFHandler&, + const std::vector::cell_iterator>&); + + template void + compute_cell_wise > + (std::vector&, std::vector&, + const hp::DoFHandler&, + const std::vector::cell_iterator>&); + + template void + downstream_dg > + (hp::DoFHandler&, + const Point&); + + template void + compute_downstream_dg > + (std::vector&,std::vector&, + const hp::DoFHandler&, + const Point&); + template + void + compute_downstream_dg > + (std::vector&, + const hp::DoFHandler&, + const Point&); + + template void + downstream > + (hp::DoFHandler&, + const Point&, + const bool); + + template void + compute_downstream > + (std::vector&,std::vector&, + const hp::DoFHandler&, + const Point&, + const bool); + + template + void + clockwise_dg > + (hp::DoFHandler&, + const Point&, bool); + + template + void + compute_clockwise_dg > + (std::vector&, + const hp::DoFHandler&, + const Point&, + const bool); // MG - template - void downstream_dg - (MGDoFHandler&, const unsigned int, - const Point&); + template + void downstream_dg + (MGDoFHandler&, const unsigned int, + const Point&); - template - void downstream - (MGDoFHandler&, const unsigned int, - const Point&, - const bool); + template + void downstream + (MGDoFHandler&, const unsigned int, + const Point&, + const bool); - template - void clockwise_dg - (MGDoFHandler&, - const unsigned int, - const Point&, bool); + template + void clockwise_dg + (MGDoFHandler&, + const unsigned int, + const Point&, bool); // Generic numbering schemes - template - void random > - (DoFHandler &); - - template - void - compute_random > - (std::vector&, - const DoFHandler &); - - template - void sort_selected_dofs_back > - (DoFHandler &, - const std::vector &); - - template - void - compute_sort_selected_dofs_back > - (std::vector&, - const DoFHandler &, - const std::vector &); - - template - void random > - (hp::DoFHandler &); - - template - void - compute_random > - (std::vector&, - const hp::DoFHandler &); - - template - void sort_selected_dofs_back > - (hp::DoFHandler &, - const std::vector &); - - template - void - compute_sort_selected_dofs_back > - (std::vector&, - const hp::DoFHandler &, - const std::vector &); - - template - void subdomain_wise > - (DoFHandler &); - -#if deal_II_dimension < 3 - template - void subdomain_wise > - (DoFHandler &); -#endif + template + void random > + (DoFHandler &); - template - void subdomain_wise > - (hp::DoFHandler &); - - template - void Cuthill_McKee - (MGDoFHandler&, - const unsigned int, - const bool, - const std::vector&); - - template - void cell_wise_dg - (MGDoFHandler&, - const unsigned int, - const std::vector::cell_iterator>&); - template - void compute_cell_wise_dg - (std::vector&, std::vector&, - const MGDoFHandler&, const unsigned int, - const std::vector::cell_iterator>&); - template - void compute_downstream_dg - (std::vector&, std::vector&, - const MGDoFHandler&, const unsigned int, - const Point&); - - \} // namespace DoFRenumbering + template + void + compute_random > + (std::vector&, + const DoFHandler &); + + template + void sort_selected_dofs_back > + (DoFHandler &, + const std::vector &); + + template + void + compute_sort_selected_dofs_back > + (std::vector&, + const DoFHandler &, + const std::vector &); + + template + void random > + (hp::DoFHandler &); + + template + void + compute_random > + (std::vector&, + const hp::DoFHandler &); + + template + void sort_selected_dofs_back > + (hp::DoFHandler &, + const std::vector &); + + template + void + compute_sort_selected_dofs_back > + (std::vector&, + const hp::DoFHandler &, + const std::vector &); + + + template + void subdomain_wise > + (hp::DoFHandler &); + + template + void Cuthill_McKee + (MGDoFHandler&, + const unsigned int, + const bool, + const std::vector&); + + template + void cell_wise_dg + (MGDoFHandler&, + const unsigned int, + const std::vector::cell_iterator>&); + template + void compute_cell_wise_dg + (std::vector&, std::vector&, + const MGDoFHandler&, const unsigned int, + const std::vector::cell_iterator>&); + template + void compute_downstream_dg + (std::vector&, std::vector&, + const MGDoFHandler&, const unsigned int, + const Point&); + + \} // namespace DoFRenumbering +#endif } + + + diff --git a/deal.II/source/dofs/dof_tools.cc b/deal.II/source/dofs/dof_tools.cc index 9afc362c00..7760cff991 100644 --- a/deal.II/source/dofs/dof_tools.cc +++ b/deal.II/source/dofs/dof_tools.cc @@ -2000,6 +2000,24 @@ namespace DoFTools } + void + make_hp_hanging_node_constraints (const dealii::DoFHandler<1,3> &, + ConstraintMatrix &) + { + // nothing to do for regular + // dof handlers in 1d + } + + void + make_oldstyle_hanging_node_constraints (const dealii::DoFHandler<1,3> &, + ConstraintMatrix &, + dealii::internal::int2type<1>) + { + // nothing to do for regular + // dof handlers in 1d + } + + // currently not used but may be in the future: // void diff --git a/deal.II/source/dofs/dof_tools.inst.in b/deal.II/source/dofs/dof_tools.inst.in index cc83666673..fe1259fe03 100644 --- a/deal.II/source/dofs/dof_tools.inst.in +++ b/deal.II/source/dofs/dof_tools.inst.in @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -224,6 +224,84 @@ for (SP : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS) // SP &sparsity); #endif + + +#if deal_II_dimension == 3 + + template void + DoFTools::make_sparsity_pattern, SP> + (const DoFHandler<1,3> &dof, + SP &sparsity, + const ConstraintMatrix &, + const bool, + const unsigned int); + + template void + DoFTools::make_sparsity_pattern, SP> + (const hp::DoFHandler<1,3> &dof, + SP &sparsity, + const ConstraintMatrix &, + const bool, + const unsigned int); + + template void + DoFTools::make_sparsity_pattern, SP> + (const DoFHandler<1,3>&, + const Table<2,Coupling>&, + SP &, + const ConstraintMatrix &, + const bool, + const unsigned int); + + template void + DoFTools::make_sparsity_pattern, SP> + (const hp::DoFHandler<1,3>&, + const Table<2,Coupling>&, + SP &, + const ConstraintMatrix &, + const bool, + const unsigned int); + + template void + DoFTools::make_sparsity_pattern, SP> + (const DoFHandler<1,3> &dof_row, + const DoFHandler<1,3> &dof_col, + SP &sparsity); + + template void + DoFTools::make_sparsity_pattern, SP> + (const hp::DoFHandler<1,3> &dof_row, + const hp::DoFHandler<1,3> &dof_col, + SP &sparsity); + + template void + DoFTools::make_boundary_sparsity_pattern,SP> + (const DoFHandler<1,3>& dof, + const std::vector &, + SP &); + + //template void + //DoFTools::make_boundary_sparsity_pattern,SP> + //(const hp::DoFHandler<1,3>& dof, + // const std::vector &, + // SP &); + + template void + DoFTools::make_boundary_sparsity_pattern,SP> + (const DoFHandler<1,3>& dof, + const FunctionMap<3>::type &boundary_indicators, + const std::vector &dof_to_boundary_mapping, + SP &sparsity); + + //template void + //DoFTools::make_boundary_sparsity_pattern,SP> + //(const hp::DoFHandler<1,3>& dof, + // const FunctionMap<3>::type &boundary_indicators, + // const std::vector &dof_to_boundary_mapping, + // SP &sparsity); + +#endif + } @@ -240,6 +318,12 @@ for (DH : DOFHANDLERS; deal_II_dimension : DIMENSIONS) for (deal_II_dimension : DIMENSIONS) { + template + Table<2,DoFTools::Coupling> + DoFTools::dof_couplings_from_component_couplings + (const FiniteElement &fe, + const Table<2,DoFTools::Coupling> &component_couplings); + template void DoFTools::make_vertex_patches (SparsityPattern&, const MGDoFHandler&, unsigned int, bool, bool, bool, bool); @@ -247,7 +331,7 @@ for (deal_II_dimension : DIMENSIONS) template void DoFTools::make_single_patch (SparsityPattern&, const MGDoFHandler&, unsigned int, bool); - + template void DoFTools::make_child_patches(SparsityPattern&, const MGDoFHandler&, unsigned int, bool, bool); @@ -260,6 +344,14 @@ make_hanging_node_constraints (const DoFHandler &dof_handler, + ConstraintMatrix &constraints); +#endif + // TODO: can cleanup a bit more to fit into the scheme used above @@ -476,11 +568,24 @@ unsigned int DoFTools::count_dofs_with_subdomain_association > (const hp::DoFHandler &, const types::subdomain_id_t); + template IndexSet DoFTools::dof_indices_with_subdomain_association > (const hp::DoFHandler &, const types::subdomain_id_t); + +template +void +DoFTools::get_subdomain_association > +(const DoFHandler &dof_handler, + std::vector &subdomain_association); +template +void +DoFTools::get_subdomain_association > +(const hp::DoFHandler &dof_handler, + std::vector &subdomain_association); + template void DoFTools::count_dofs_with_subdomain_association > @@ -489,6 +594,63 @@ DoFTools::count_dofs_with_subdomain_association &); #endif +#if deal_II_dimension == 3 +template +void +DoFTools::extract_boundary_dofs > + (const DoFHandler<1,3> &, + const std::vector &, + std::vector &, + const std::set &); + +template +void +DoFTools::get_subdomain_association > +(const DoFHandler<1,3> &dof_handler, + std::vector &subdomain_association); +template +void +DoFTools::get_subdomain_association > +(const hp::DoFHandler<1,3> &dof_handler, + std::vector &subdomain_association); + +template +unsigned int +DoFTools::count_dofs_with_subdomain_association > +(const DoFHandler<1,3> &, + const types::subdomain_id_t); +template +IndexSet +DoFTools::dof_indices_with_subdomain_association > +(const DoFHandler<1,3> &, + const types::subdomain_id_t); +template +void +DoFTools::count_dofs_with_subdomain_association > +(const DoFHandler<1,3> &, + const types::subdomain_id_t, + std::vector &); + +template +unsigned int +DoFTools::count_dofs_with_subdomain_association > +(const hp::DoFHandler<1,3> &, + const types::subdomain_id_t); +template +IndexSet +DoFTools::dof_indices_with_subdomain_association > +(const hp::DoFHandler<1,3> &, + const types::subdomain_id_t); +template +void +DoFTools::count_dofs_with_subdomain_association > +(const hp::DoFHandler<1,3> &, + const types::subdomain_id_t, + std::vector &); +#endif + + + template unsigned int DoFTools::count_dofs_with_subdomain_association > @@ -541,6 +703,29 @@ DoFTools::extract_level_dofs #endif + +#if deal_II_dimension == 3 +template +void +DoFTools::count_dofs_per_component > ( + const DoFHandler<1,3>&, + std::vector&, bool, std::vector); + +template +void +DoFTools::count_dofs_per_component > ( + const hp::DoFHandler<1,3>&, + std::vector&, bool, std::vector); + +template +void +DoFTools::extract_level_dofs<1,3> +(const unsigned int level, const MGDoFHandler<1,3>&, + const std::vector&, std::vector&, bool); + +#endif + + template void DoFTools::count_dofs_per_block > ( @@ -618,8 +803,8 @@ DoFTools::map_dofs_to_support_points (const Mapping&, const DoFHandler&, std::vector >&); - - + + template void DoFTools::map_dofs_to_support_points @@ -635,7 +820,7 @@ DoFTools::map_dofs_to_support_points (const Mapping&, const DoFHandler&, std::vector >&); - + template void DoFTools::map_dofs_to_support_points @@ -663,6 +848,36 @@ DoFTools::count_dofs_per_block +(const Mapping<1,3>&, + const DoFHandler<1,3>&, + std::vector >&); + +template +void +DoFTools::count_dofs_per_block > ( + const DoFHandler<1,3>&, + std::vector&, std::vector); + +template +void +DoFTools::count_dofs_per_block > ( + const hp::DoFHandler<1,3>&, + std::vector&, std::vector); + +template +void +DoFTools::count_dofs_per_block > ( + const MGDoFHandler<1,3>&, + std::vector&, std::vector); + +#endif + template void DoFTools::convert_couplings_to_blocks ( @@ -726,4 +941,42 @@ DoFTools::extract_hanging_node_dofs #endif +#if deal_II_dimension == 3 + +template +void +DoFTools::map_dof_to_boundary_indices > +(const DoFHandler<1,3> &, + const std::set &, + std::vector &); + +template +void +DoFTools::map_dof_to_boundary_indices > +(const DoFHandler<1,3> &, + std::vector &); + + +template +void +DoFTools::extract_hanging_node_dofs +(const DoFHandler<1,3> &dof_handler, + std::vector &selected_dofs); + +// template +// void +// DoFTools::map_dof_to_boundary_indices > +// (const hp::DoFHandler<1,3> &, +// const std::set &, +// std::vector &); + +// template +// void +// DoFTools::map_dof_to_boundary_indices > +// (const hp::DoFHandler<1,3> &, +// std::vector &); + +#endif + + } diff --git a/deal.II/source/fe/fe.cc b/deal.II/source/fe/fe.cc index 1f6340aa4b..070ed5af11 100644 --- a/deal.II/source/fe/fe.cc +++ b/deal.II/source/fe/fe.cc @@ -927,6 +927,54 @@ FiniteElement::memory_consumption () const } + +template<> +void +FiniteElement<1,2>::compute_2nd ( + const Mapping<1,2> &, + const Triangulation<1,2>::cell_iterator &, + const unsigned int, + Mapping<1,2>::InternalDataBase &, + InternalDataBase &, + FEValuesData<1,2> &) const +{ + + Assert(false, ExcNotImplemented()); +} + + +template<> +void +FiniteElement<1,3>::compute_2nd ( + const Mapping<1,3> &, + const Triangulation<1,3>::cell_iterator &, + const unsigned int, + Mapping<1,3>::InternalDataBase &, + InternalDataBase &, + FEValuesData<1,3> &) const +{ + + Assert(false, ExcNotImplemented()); +} + + + +template<> +void +FiniteElement<2,3>::compute_2nd ( + const Mapping<2,3> &, + const Triangulation<2,3>::cell_iterator &, + const unsigned int, + Mapping<2,3>::InternalDataBase &, + InternalDataBase &, + FEValuesData<2,3> &) const +{ + + Assert(false, ExcNotImplemented()); +} + + + template void FiniteElement::compute_2nd ( diff --git a/deal.II/source/fe/fe.inst.in b/deal.II/source/fe/fe.inst.in index 656bd44e58..f9ff03fcfd 100644 --- a/deal.II/source/fe/fe.inst.in +++ b/deal.II/source/fe/fe.inst.in @@ -12,12 +12,10 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class FiniteElement; - -#if deal_II_dimension != 3 - template class FiniteElement; +#if deal_II_dimension <= deal_II_space_dimension + template class FiniteElement; #endif } diff --git a/deal.II/source/fe/fe_abf.cc b/deal.II/source/fe/fe_abf.cc index 9b9a7a29c8..4550c56d40 100644 --- a/deal.II/source/fe/fe_abf.cc +++ b/deal.II/source/fe/fe_abf.cc @@ -56,7 +56,7 @@ FE_ABF::FE_ABF (const unsigned int deg) Assert (dim >= 2, ExcImpossibleInDim(dim)); const unsigned int n_dofs = this->dofs_per_cell; - this->mapping_type = mapping_piola; + this->mapping_type = mapping_raviart_thomas; // First, initialize the // generalized support points and // quadrature weights, since they diff --git a/deal.II/source/fe/fe_dgp.inst.in b/deal.II/source/fe/fe_dgp.inst.in index 053e3a3ca1..e28b03e1b8 100644 --- a/deal.II/source/fe/fe_dgp.inst.in +++ b/deal.II/source/fe/fe_dgp.inst.in @@ -12,12 +12,11 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class FE_DGP; - -#if deal_II_dimension != 3 - template class FE_DGP; +#if deal_II_dimension <= deal_II_space_dimension + template class FE_DGP; #endif } + diff --git a/deal.II/source/fe/fe_dgq.inst.in b/deal.II/source/fe/fe_dgq.inst.in index 00c3243fae..65b35cc07c 100644 --- a/deal.II/source/fe/fe_dgq.inst.in +++ b/deal.II/source/fe/fe_dgq.inst.in @@ -12,14 +12,16 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class FE_DGQ; - -#if deal_II_dimension != 3 - template class FE_DGQ; +#if deal_II_dimension <= deal_II_space_dimension + template class FE_DGQ; #endif + } + +for (deal_II_dimension : DIMENSIONS) + { template class FE_DGQArbitraryNodes; } diff --git a/deal.II/source/fe/fe_poly.cc b/deal.II/source/fe/fe_poly.cc index 00ab805cb0..d1e3cbae0d 100644 --- a/deal.II/source/fe/fe_poly.cc +++ b/deal.II/source/fe/fe_poly.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2004, 2005, 2006 by the deal.II authors +// Copyright (C) 2004, 2005, 2006, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -21,6 +21,153 @@ DEAL_II_NAMESPACE_OPEN + +template <> +void +FE_Poly,1,2>::fill_fe_values +(const Mapping<1,2> &mapping, + const Triangulation<1,2>::cell_iterator &cell, + const Quadrature<1> &quadrature, + Mapping<1,2>::InternalDataBase &mapping_data, + Mapping<1,2>::InternalDataBase &fedata, + FEValuesData<1,2> &data, + CellSimilarity::Similarity &cell_similarity) const +{ + // convert data object to internal + // data for this class. fails with + // an exception if that is not + // possible + Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); + InternalData &fe_data = static_cast (fedata); + + const UpdateFlags flags(fe_data.current_update_flags()); + + for (unsigned int k=0; kdofs_per_cell; ++k) + { + if (flags & update_values) + for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<1>::DataSetDescriptor::cell(), + mapping_data, fe_data, data); +} + + + +template <> +void +FE_Poly,2,3>::fill_fe_values +(const Mapping<2,3> &mapping, + const Triangulation<2,3>::cell_iterator &cell, + const Quadrature<2> &quadrature, + Mapping<2,3>::InternalDataBase &mapping_data, + Mapping<2,3>::InternalDataBase &fedata, + FEValuesData<2,3> &data, + CellSimilarity::Similarity &cell_similarity) const +{ + + // assert that the following dynamics + // cast is really well-defined. + Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); + InternalData &fe_data = static_cast (fedata); + + const UpdateFlags flags(fe_data.current_update_flags()); + + for (unsigned int k=0; kdofs_per_cell; ++k) + { + if (flags & update_values) + for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<2>::DataSetDescriptor::cell(), + mapping_data, fe_data, data); +} + + +template <> +void +FE_Poly,1,2>::fill_fe_values ( + const Mapping<1,2> &mapping, + const Triangulation<1,2>::cell_iterator &cell, + const Quadrature<1> &quadrature, + Mapping<1,2>::InternalDataBase &mapping_data, + Mapping<1,2>::InternalDataBase &fedata, + FEValuesData<1,2> &data, + CellSimilarity::Similarity &cell_similarity) const +{ + // convert data object to internal + // data for this class. fails with + // an exception if that is not + // possible + + Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); + InternalData &fe_data = static_cast (fedata); + + const UpdateFlags flags(fe_data.current_update_flags()); + + for (unsigned int k=0; kdofs_per_cell; ++k) + { + if (flags & update_values) + for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<1>::DataSetDescriptor::cell(), + mapping_data, fe_data, data); +} + + +template <> +void +FE_Poly,2,3>::fill_fe_values +(const Mapping<2,3> &mapping, + const Triangulation<2,3>::cell_iterator &cell, + const Quadrature<2> &quadrature, + Mapping<2,3>::InternalDataBase &mapping_data, + Mapping<2,3>::InternalDataBase &fedata, + FEValuesData<2,3> &data, + CellSimilarity::Similarity &cell_similarity) const +{ + Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); + InternalData &fe_data = static_cast (fedata); + + const UpdateFlags flags(fe_data.current_update_flags()); + + for (unsigned int k=0; kdofs_per_cell; ++k) + { + if (flags & update_values) + for (unsigned int i=0; icompute_2nd (mapping, cell, QProjector<2>::DataSetDescriptor::cell(), + mapping_data, fe_data, data); +} + + #include "fe_poly.inst" DEAL_II_NAMESPACE_CLOSE diff --git a/deal.II/source/fe/fe_poly.inst.in b/deal.II/source/fe/fe_poly.inst.in index 2a384acfa0..605b020ae4 100644 --- a/deal.II/source/fe/fe_poly.inst.in +++ b/deal.II/source/fe/fe_poly.inst.in @@ -12,18 +12,12 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class FE_Poly, deal_II_dimension>; - template class FE_Poly, deal_II_dimension>; - template class FE_Poly, deal_II_dimension>; - -#if deal_II_dimension != 3 - - template class FE_Poly, deal_II_dimension, deal_II_dimension+1>; - template class FE_Poly, deal_II_dimension, deal_II_dimension+1>; - //template class FE_Poly, deal_II_dimension, deal_II_dimension+1>; - +#if deal_II_dimension <= deal_II_space_dimension + template class FE_Poly, deal_II_dimension, deal_II_space_dimension>; + template class FE_Poly, deal_II_dimension, deal_II_space_dimension>; + template class FE_Poly, deal_II_dimension, deal_II_space_dimension>; #endif } diff --git a/deal.II/source/fe/fe_poly_tensor.cc b/deal.II/source/fe/fe_poly_tensor.cc index f3de047eb8..9157a7be46 100644 --- a/deal.II/source/fe/fe_poly_tensor.cc +++ b/deal.II/source/fe/fe_poly_tensor.cc @@ -11,6 +11,7 @@ // //--------------------------------------------------------------------------- +#include #include #include #include @@ -388,7 +389,7 @@ FE_PolyTensor::fill_fe_values ( // concept cannot be used because of // possible sign changes from one cell to // the next. - if (mapping_type == mapping_piola) + if ( (mapping_type == mapping_piola) || (mapping_type == mapping_raviart_thomas) ) if (cell_similarity == CellSimilarity::translation) cell_similarity = CellSimilarity::none; @@ -420,6 +421,8 @@ FE_PolyTensor::fill_fe_values ( break; } + + case mapping_raviart_thomas: case mapping_piola: { std::vector > shape_values (n_q_points); @@ -451,8 +454,8 @@ FE_PolyTensor::fill_fe_values ( if (flags & update_gradients && cell_similarity != CellSimilarity::translation) { - std::vector > shape_grads1 (n_q_points); - std::vector > shape_grads2 (n_q_points); + std::vector > shape_grads1 (n_q_points); + //std::vector > shape_grads2 (n_q_points); switch (mapping_type) { @@ -483,14 +486,21 @@ FE_PolyTensor::fill_fe_values ( for (unsigned int k=0; k > input(fe_data.shape_grads[i].size()); + for (unsigned int k=0; k::fill_fe_values ( // cell, then // (J^-T)Dv(J^-1) is the // value we want to have on - // the real cell. so, we - // will have to apply a - // covariant transformation - // to Dv twice. since the - // interface only allows - // multiplication with - // (J^-1) from the right, - // we have to trick a - // little in between - - // do first transformation - mapping.transform (fe_data.shape_grads[i], shape_grads1, - mapping_data, mapping_covariant); - // transpose matrix - for (unsigned int k = 0; k < n_q_points; ++k) - shape_grads2[k] = transpose (shape_grads1[k]); - // do second transformation - mapping.transform (shape_grads2, shape_grads1, - mapping_data, mapping_covariant); - // transpose back - for (unsigned int k = 0; k < n_q_points; ++k) - shape_grads2[k] = transpose (shape_grads1[k]); - - for (unsigned int k = 0; k < n_q_points; ++k) - for (unsigned int d = 0; d < dim; ++d) - data.shape_gradients[first + d][k] = shape_grads2[k][d]; - // then copy over to target: - break; + // the real cell. + std::vector > input(fe_data.shape_grads[i].size()); + for (unsigned int k=0; k::fill_fe_face_values ( break; } + case mapping_raviart_thomas: case mapping_piola: { std::vector > shape_values (n_q_points); @@ -659,7 +655,8 @@ FE_PolyTensor::fill_fe_face_values ( if (flags & update_gradients) { std::vector > shape_grads1 (n_q_points); - std::vector > shape_grads2 (n_q_points); + // std::vector > shape_grads2 (n_q_points); + switch (mapping_type) { @@ -694,11 +691,16 @@ FE_PolyTensor::fill_fe_face_values ( break; } - case mapping_piola: + case mapping_raviart_thomas: + case mapping_piola_gradient: { - mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points), - shape_grads1, mapping_data, mapping_piola); - + std::vector > input(fe_data.shape_grads[i].size()); + for (unsigned int k=0; k::fill_fe_face_values ( break; } - case mapping_nedelec: { - // treat the gradients of - // this particular shape - // function at all - // q-points. if Dv is the - // gradient of the shape - // function on the unit - // cell, then - // (J^-T)Dv(J^-1) is the - // value we want to have on - // the real cell. so, we - // will have to apply a - // covariant transformation - // to Dv twice. since the - // interface only allows - // multiplication with - // (J^-1) from the right, - // we have to trick a - // little in between - - // do first transformation - mapping.transform (make_slice (fe_data.shape_grads[i], offset, n_q_points), - shape_grads1, mapping_data, mapping_covariant); - // transpose matrix - for (unsigned int k = 0; k < n_q_points; ++k) - shape_grads2[k] = transpose (shape_grads1[k]); - // do second transformation - mapping.transform (shape_grads2, shape_grads1, - mapping_data, mapping_covariant); - // transpose back - for (unsigned int k = 0; k < n_q_points; ++k) - shape_grads2[k] = transpose (shape_grads1[k]); - - for (unsigned int k = 0; k < n_q_points; ++k) + case mapping_nedelec: + { + // treat the gradients of + // this particular shape + // function at all + // q-points. if Dv is the + // gradient of the shape + // function on the unit + // cell, then + // (J^-T)Dv(J^-1) is the + // value we want to have on + // the real cell. + std::vector > input(fe_data.shape_grads[i].size()); + for (unsigned int k=0; k::fill_fe_subface_values ( break; } + case mapping_raviart_thomas: case mapping_piola: { std::vector > shape_values (n_q_points); @@ -904,12 +892,17 @@ FE_PolyTensor::fill_fe_subface_values ( break; } - case mapping_piola: + case mapping_raviart_thomas: + case mapping_piola_gradient: { - mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points), - shape_grads1, - mapping_data, mapping_piola); + std::vector > input(fe_data.shape_grads[i].size()); + for (unsigned int k=0; k::fill_fe_subface_values ( break; } - case mapping_nedelec: { - // treat the gradients of - // this particular shape - // function at all - // q-points. if Dv is the - // gradient of the shape - // function on the unit - // cell, then - // (J^-T)Dv(J^-1) is the - // value we want to have on - // the real cell. so, we - // will have to apply a - // covariant transformation - // to Dv twice. since the - // interface only allows - // multiplication with - // (J^-1) from the right, - // we have to trick a - // little in between - - // do first transformation - mapping.transform (make_slice (fe_data.shape_grads[i], offset, n_q_points), - shape_grads1, mapping_data, mapping_covariant); - // transpose matrix - for (unsigned int k = 0; k < n_q_points; ++k) - shape_grads2[k] = transpose (shape_grads1[k]); - // do second transformation - mapping.transform (shape_grads2, shape_grads1, - mapping_data, mapping_covariant); - // transpose back - for (unsigned int k = 0; k < n_q_points; ++k) - shape_grads2[k] = transpose (shape_grads1[k]); + case mapping_nedelec: + { + // this particular shape + // function at all + // q-points. if Dv is the + // gradient of the shape + // function on the unit + // cell, then + // (J^-T)Dv(J^-1) is the + // value we want to have on + // the real cell. + std::vector > input(fe_data.shape_grads[i].size()); + for (unsigned int k=0; k::update_each (const UpdateFlags flags) const switch (mapping_type) { + case mapping_raviart_thomas: case mapping_piola: { if (flags & update_values) @@ -1006,6 +986,21 @@ FE_PolyTensor::update_each (const UpdateFlags flags) const break; } + + case mapping_piola_gradient: + { + if (flags & update_values) + out |= update_values | update_piola; + + if (flags & update_gradients) + out |= update_gradients | update_piola | update_covariant_transformation; + + if (flags & update_hessians) + out |= update_hessians | update_piola | update_covariant_transformation; + + break; + } + case mapping_nedelec: { if (flags & update_values) out |= update_values | update_covariant_transformation; diff --git a/deal.II/source/fe/fe_q.cc b/deal.II/source/fe/fe_q.cc index ca205683ca..c5d2c77b8d 100644 --- a/deal.II/source/fe/fe_q.cc +++ b/deal.II/source/fe/fe_q.cc @@ -824,6 +824,33 @@ get_subface_interpolation_matrix (const FiniteElement<1,2> &/*x_source_fe*/, } +template <> +void +FE_Q<1,3>:: +get_face_interpolation_matrix (const FiniteElement<1,3> &/*x_source_fe*/, + FullMatrix &/*interpolation_matrix*/) const +{ + typedef FiniteElement<1,3> FEL; + Assert (false, + FEL:: + ExcInterpolationNotImplemented ()); +} + + +template <> +void +FE_Q<1,3>:: +get_subface_interpolation_matrix (const FiniteElement<1,3> &/*x_source_fe*/, + const unsigned int /*subface*/, + FullMatrix &/*interpolation_matrix*/) const +{ + typedef FiniteElement<1,3> FEL; + Assert (false, + FEL:: + ExcInterpolationNotImplemented ()); +} + + template void @@ -1336,7 +1363,17 @@ void FE_Q<1,2>::initialize_unit_face_support_points (const Quadrature<1> &/*poin // no faces in 1d, so nothing to do } +template <> +void FE_Q<1,3>::initialize_unit_face_support_points () +{ + // no faces in 1d, so nothing to do +} +template <> +void FE_Q<1,3>::initialize_unit_face_support_points (const Quadrature<1> &/*points*/) +{ + // no faces in 1d, so nothing to do +} template void FE_Q::initialize_unit_face_support_points () @@ -1525,6 +1562,13 @@ FE_Q<1,2>::face_lexicographic_to_hierarchic_numbering (const unsigned int) } +template <> +std::vector +FE_Q<1,3>::face_lexicographic_to_hierarchic_numbering (const unsigned int) +{ + return std::vector(); +} + template void @@ -1888,6 +1932,26 @@ FE_Q<1,2>::has_support_on_face (const unsigned int shape_index, ((shape_index == 1) && (face_index == 1))); } +template <> +bool +FE_Q<1,3>::has_support_on_face (const unsigned int shape_index, + const unsigned int face_index) const +{ + Assert (shape_index < this->dofs_per_cell, + ExcIndexRange (shape_index, 0, this->dofs_per_cell)); + Assert (face_index < GeometryInfo<1>::faces_per_cell, + ExcIndexRange (face_index, 0, GeometryInfo<1>::faces_per_cell)); + + + // in 1d, things are simple. since + // there is only one degree of + // freedom per vertex in this + // class, the first is on vertex 0 + // (==face 0 in some sense), the + // second on face 1: + return (((shape_index == 0) && (face_index == 0)) || + ((shape_index == 1) && (face_index == 1))); +} template diff --git a/deal.II/source/fe/fe_q.inst.in b/deal.II/source/fe/fe_q.inst.in index d72cebf3a4..3f1dc35893 100644 --- a/deal.II/source/fe/fe_q.inst.in +++ b/deal.II/source/fe/fe_q.inst.in @@ -12,12 +12,11 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class FE_Q; - -#if deal_II_dimension !=3 - template class FE_Q; +#if deal_II_dimension <= deal_II_space_dimension + template class FE_Q; #endif } + diff --git a/deal.II/source/fe/fe_system.inst.in b/deal.II/source/fe/fe_system.inst.in index 97153d8622..5e28b445d8 100644 --- a/deal.II/source/fe/fe_system.inst.in +++ b/deal.II/source/fe/fe_system.inst.in @@ -11,12 +11,11 @@ // //--------------------------------------------------------------------------- - -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class FESystem; -#if deal_II_dimension != 3 - template class FESystem; +#if deal_II_dimension <= deal_II_space_dimension + template class FESystem; #endif } + diff --git a/deal.II/source/fe/fe_tools.cc b/deal.II/source/fe/fe_tools.cc index efd9422845..503d739466 100644 --- a/deal.II/source/fe/fe_tools.cc +++ b/deal.II/source/fe/fe_tools.cc @@ -659,8 +659,18 @@ namespace FETools Assert(false, ExcNotImplemented()); } + + template<> + void + compute_embedding_matrices(const FiniteElement<1,3> &, + std::vector > > &, + const bool) + { + Assert(false, ExcNotImplemented()); + } + template<> void compute_embedding_matrices(const FiniteElement<2,3>&, @@ -1071,7 +1081,14 @@ namespace FETools Assert(false, ExcNotImplemented()); } - + + template <> + void + compute_projection_matrices(const FiniteElement<1,3>&, + std::vector > >&, bool) + { + Assert(false, ExcNotImplemented()); + } template <> void diff --git a/deal.II/source/fe/fe_tools.inst.in b/deal.II/source/fe/fe_tools.inst.in index 0790b2422d..f54ca54f59 100644 --- a/deal.II/source/fe/fe_tools.inst.in +++ b/deal.II/source/fe/fe_tools.inst.in @@ -12,540 +12,519 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - - namespace FETools - \{ - template class FEFactoryBase; - - template - void compute_node_matrix( - FullMatrix&, - const FiniteElement&); - - template - void compute_component_wise( - const FiniteElement& , - std::vector&, std::vector >&); - template - void compute_block_renumbering ( - const FiniteElement& , - std::vector&, std::vector&, bool); - template - void get_interpolation_matrix - (const FiniteElement &, - const FiniteElement &, - FullMatrix &); - template - void get_back_interpolation_matrix - (const FiniteElement &, - const FiniteElement &, - FullMatrix &); - template - void get_interpolation_difference_matrix - (const FiniteElement &, - const FiniteElement &, - FullMatrix &); - template - void get_interpolation_matrix - (const FiniteElement &, - const FiniteElement &, - FullMatrix &); - template - void get_back_interpolation_matrix - (const FiniteElement &, - const FiniteElement &, - FullMatrix &); - template - void get_interpolation_difference_matrix - (const FiniteElement &, - const FiniteElement &, - FullMatrix &); - - template - void get_projection_matrix - (const FiniteElement &, - const FiniteElement &, - FullMatrix &); - - template - void compute_embedding_matrices - (const FiniteElement &, std::vector > >&,bool); - - template - void compute_face_embedding_matrices - (const FiniteElement &, FullMatrix (&)[GeometryInfo::max_children_per_face], - unsigned int, unsigned int); - - template - void compute_projection_matrices - (const FiniteElement &, std::vector > >&, bool); - - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - -#if deal_II_dimension != 3 - template - void compute_block_renumbering ( - const FiniteElement& , - std::vector&, std::vector&, bool); - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); + namespace FETools + \{ +#if deal_II_dimension <= deal_II_space_dimension + template + void compute_block_renumbering ( + const FiniteElement& , + std::vector&, std::vector&, bool); + + template + void compute_projection_matrices + (const FiniteElement &, + std::vector > >&, bool); + + template + void compute_embedding_matrices + (const FiniteElement &, + std::vector > >&,bool); + + template + void interpolate + (const DoFHandler &, const Vector &, + const DoFHandler &, Vector &); + + template + void interpolate + (const DoFHandler &, const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + + template + void interpolate + (const DoFHandler &, const Vector &, + const DoFHandler &, Vector &); + template + + void interpolate + (const DoFHandler &, const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + + + template + void interpolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, BlockVector &); + + template + void interpolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); + + template + void interpolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, BlockVector &); + + template + void interpolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); #endif + \} + } - template - void back_interpolate - (const DoFHandler &, const Vector &, - const FiniteElement &, Vector &); - template - void back_interpolate - (const DoFHandler &, const ConstraintMatrix &, - const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - template - void interpolation_difference - (const DoFHandler &, const Vector &, - const FiniteElement &, Vector &); - template - void interpolation_difference - (const DoFHandler &, const ConstraintMatrix &, - const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - template - void project_dg - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void extrapolate - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void extrapolate - (const DoFHandler &, const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - - - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - -#if deal_II_dimension != 3 - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void interpolate - (const DoFHandler &, const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); -#endif - template - void back_interpolate - (const DoFHandler &, const Vector &, - const FiniteElement &, Vector &); - template - void back_interpolate - (const DoFHandler &, const ConstraintMatrix &, - const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - template - void interpolation_difference - (const DoFHandler &, const Vector &, - const FiniteElement &, Vector &); - template - void interpolation_difference - (const DoFHandler &, const ConstraintMatrix &, - const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - template - void project_dg - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void extrapolate - (const DoFHandler &, const Vector &, - const DoFHandler &, Vector &); - template - void extrapolate - (const DoFHandler &, const Vector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); + +//TODO[SP]: replace by +// where applicable and move to codimension cases above also when applicable + +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { + namespace FETools + \{ +#if deal_II_dimension == deal_II_space_dimension + + template class FEFactoryBase; + + template + void compute_node_matrix( + FullMatrix&, + const FiniteElement&); + + template + void compute_component_wise( + const FiniteElement& , + std::vector&, std::vector >&); + template + + void get_interpolation_matrix + (const FiniteElement &, + const FiniteElement &, + FullMatrix &); + template + void get_back_interpolation_matrix + (const FiniteElement &, + const FiniteElement &, + FullMatrix &); + template + void get_interpolation_difference_matrix + (const FiniteElement &, + const FiniteElement &, + FullMatrix &); + template + void get_interpolation_matrix + (const FiniteElement &, + const FiniteElement &, + FullMatrix &); + template + void get_back_interpolation_matrix + (const FiniteElement &, + const FiniteElement &, + FullMatrix &); + template + void get_interpolation_difference_matrix + (const FiniteElement &, + const FiniteElement &, + FullMatrix &); + + template + void get_projection_matrix + (const FiniteElement &, + const FiniteElement &, + FullMatrix &); + + + + template + void compute_face_embedding_matrices + (const FiniteElement &, FullMatrix (&)[GeometryInfo::max_children_per_face], + unsigned int, unsigned int); + + template + void back_interpolate + (const DoFHandler &, const Vector &, + const FiniteElement &, Vector &); + template + void back_interpolate + (const DoFHandler &, const ConstraintMatrix &, + const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + template + void interpolation_difference + (const DoFHandler &, const Vector &, + const FiniteElement &, Vector &); + template + void interpolation_difference + (const DoFHandler &, const ConstraintMatrix &, + const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + template + void project_dg + (const DoFHandler &, const Vector &, + const DoFHandler &, Vector &); + template + void extrapolate + (const DoFHandler &, const Vector &, + const DoFHandler &, Vector &); + template + void extrapolate + (const DoFHandler &, const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + + + template + void back_interpolate + (const DoFHandler &, const Vector &, + const FiniteElement &, Vector &); + template + void back_interpolate + (const DoFHandler &, const ConstraintMatrix &, + const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + template + void interpolation_difference + (const DoFHandler &, const Vector &, + const FiniteElement &, Vector &); + template + void interpolation_difference + (const DoFHandler &, const ConstraintMatrix &, + const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + template + void project_dg + (const DoFHandler &, const Vector &, + const DoFHandler &, Vector &); + template + void extrapolate + (const DoFHandler &, const Vector &, + const DoFHandler &, Vector &); + template + void extrapolate + (const DoFHandler &, const Vector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); #ifdef DEAL_II_USE_PETSC - template - void interpolate - (const DoFHandler &, const PETScWrappers::MPI::Vector &, - const DoFHandler &, PETScWrappers::MPI::Vector &); - template - void interpolate - (const DoFHandler &, const PETScWrappers::MPI::Vector &, - const DoFHandler &, const ConstraintMatrix &, - PETScWrappers::MPI::Vector &); - template - void back_interpolate - (const DoFHandler &, const PETScWrappers::MPI::Vector &, - const FiniteElement &, PETScWrappers::MPI::Vector &); - template - void back_interpolate - (const DoFHandler &, const ConstraintMatrix &, - const PETScWrappers::MPI::Vector &, - const DoFHandler &, const ConstraintMatrix &, - PETScWrappers::MPI::Vector &); - template - void interpolation_difference - (const DoFHandler &, const PETScWrappers::MPI::Vector &, - const FiniteElement &, PETScWrappers::MPI::Vector &); - template - void interpolation_difference - (const DoFHandler &, const ConstraintMatrix &, - const PETScWrappers::MPI::Vector &, - const DoFHandler &, const ConstraintMatrix &, - PETScWrappers::MPI::Vector &); + template + void interpolate + (const DoFHandler &, const PETScWrappers::MPI::Vector &, + const DoFHandler &, PETScWrappers::MPI::Vector &); + template + void interpolate + (const DoFHandler &, const PETScWrappers::MPI::Vector &, + const DoFHandler &, const ConstraintMatrix &, + PETScWrappers::MPI::Vector &); + template + void back_interpolate + (const DoFHandler &, const PETScWrappers::MPI::Vector &, + const FiniteElement &, PETScWrappers::MPI::Vector &); + template + void back_interpolate + (const DoFHandler &, const ConstraintMatrix &, + const PETScWrappers::MPI::Vector &, + const DoFHandler &, const ConstraintMatrix &, + PETScWrappers::MPI::Vector &); + template + void interpolation_difference + (const DoFHandler &, const PETScWrappers::MPI::Vector &, + const FiniteElement &, PETScWrappers::MPI::Vector &); + template + void interpolation_difference + (const DoFHandler &, const ConstraintMatrix &, + const PETScWrappers::MPI::Vector &, + const DoFHandler &, const ConstraintMatrix &, + PETScWrappers::MPI::Vector &); #endif #ifdef DEAL_II_USE_TRILINOS - template - void interpolate - (const DoFHandler &, const TrilinosWrappers::Vector &, - const DoFHandler &, TrilinosWrappers::Vector &); - template - void interpolate - (const DoFHandler &, const TrilinosWrappers::Vector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::Vector &); - template - void back_interpolate - (const DoFHandler &, const TrilinosWrappers::Vector &, - const FiniteElement &, TrilinosWrappers::Vector &); - template - void back_interpolate - (const DoFHandler &, const ConstraintMatrix &, - const TrilinosWrappers::Vector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::Vector &); - template - void interpolation_difference - (const DoFHandler &, const TrilinosWrappers::Vector &, - const FiniteElement &, TrilinosWrappers::Vector &); - template - void interpolation_difference - (const DoFHandler &, const ConstraintMatrix &, - const TrilinosWrappers::Vector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::Vector &); - template - void project_dg - (const DoFHandler &, const TrilinosWrappers::Vector &, - const DoFHandler &, TrilinosWrappers::Vector &); - template - void extrapolate - (const DoFHandler &, const TrilinosWrappers::Vector &, - const DoFHandler &, TrilinosWrappers::Vector &); - template - void extrapolate - (const DoFHandler &, const TrilinosWrappers::Vector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::Vector &); + template + void interpolate + (const DoFHandler &, const TrilinosWrappers::Vector &, + const DoFHandler &, TrilinosWrappers::Vector &); + template + void interpolate + (const DoFHandler &, const TrilinosWrappers::Vector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::Vector &); + template + void back_interpolate + (const DoFHandler &, const TrilinosWrappers::Vector &, + const FiniteElement &, TrilinosWrappers::Vector &); + template + void back_interpolate + (const DoFHandler &, const ConstraintMatrix &, + const TrilinosWrappers::Vector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::Vector &); + template + void interpolation_difference + (const DoFHandler &, const TrilinosWrappers::Vector &, + const FiniteElement &, TrilinosWrappers::Vector &); + template + void interpolation_difference + (const DoFHandler &, const ConstraintMatrix &, + const TrilinosWrappers::Vector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::Vector &); + template + void project_dg + (const DoFHandler &, const TrilinosWrappers::Vector &, + const DoFHandler &, TrilinosWrappers::Vector &); + template + void extrapolate + (const DoFHandler &, const TrilinosWrappers::Vector &, + const DoFHandler &, TrilinosWrappers::Vector &); + template + void extrapolate + (const DoFHandler &, const TrilinosWrappers::Vector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::Vector &); #endif - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - -#if deal_II_dimension != 3 - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); -#endif - - template - void back_interpolate - (const DoFHandler &, const BlockVector &, - const FiniteElement &, BlockVector &); - template - void back_interpolate - (const DoFHandler &, const ConstraintMatrix &, - const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - template - void interpolation_difference - (const DoFHandler &, const BlockVector &, - const FiniteElement &, BlockVector &); - template - void interpolation_difference - (const DoFHandler &, const ConstraintMatrix &, - const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - template - void project_dg - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, Vector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); - - - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - -#if deal_II_dimension != 3 - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void interpolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); -#endif - - template - void back_interpolate - (const DoFHandler &, const BlockVector &, - const FiniteElement &, BlockVector &); - template - void back_interpolate - (const DoFHandler &, const ConstraintMatrix &, - const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - template - void interpolation_difference - (const DoFHandler &, const BlockVector &, - const FiniteElement &, BlockVector &); - template - void interpolation_difference - (const DoFHandler &, const ConstraintMatrix &, - const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - template - void project_dg - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, BlockVector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - BlockVector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, Vector &); - template - void extrapolate - (const DoFHandler &, const BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - Vector &); + + + template + void back_interpolate + (const DoFHandler &, const BlockVector &, + const FiniteElement &, BlockVector &); + template + void back_interpolate + (const DoFHandler &, const ConstraintMatrix &, + const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); + template + void interpolation_difference + (const DoFHandler &, const BlockVector &, + const FiniteElement &, BlockVector &); + template + void interpolation_difference + (const DoFHandler &, const ConstraintMatrix &, + const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); + template + void project_dg + (const DoFHandler &, const BlockVector &, + const DoFHandler &, BlockVector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, BlockVector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, Vector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); + + + template + void back_interpolate + (const DoFHandler &, const BlockVector &, + const FiniteElement &, BlockVector &); + template + void back_interpolate + (const DoFHandler &, const ConstraintMatrix &, + const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); + template + void interpolation_difference + (const DoFHandler &, const BlockVector &, + const FiniteElement &, BlockVector &); + template + void interpolation_difference + (const DoFHandler &, const ConstraintMatrix &, + const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); + template + void project_dg + (const DoFHandler &, const BlockVector &, + const DoFHandler &, BlockVector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, BlockVector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + BlockVector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, Vector &); + template + void extrapolate + (const DoFHandler &, const BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + Vector &); #ifdef DEAL_II_USE_TRILINOS - template - void interpolate - (const DoFHandler &, const TrilinosWrappers::BlockVector &, - const DoFHandler &, TrilinosWrappers::BlockVector &); - template - void interpolate - (const DoFHandler &, const TrilinosWrappers::BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::BlockVector &); - template - void back_interpolate - (const DoFHandler &, const TrilinosWrappers::BlockVector &, - const FiniteElement &, TrilinosWrappers::BlockVector &); - template - void back_interpolate - (const DoFHandler &, const ConstraintMatrix &, - const TrilinosWrappers::BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::BlockVector &); - template - void interpolation_difference - (const DoFHandler &, const TrilinosWrappers::BlockVector &, - const FiniteElement &, TrilinosWrappers::BlockVector &); - template - void interpolation_difference - (const DoFHandler &, const ConstraintMatrix &, - const TrilinosWrappers::BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::BlockVector &); - template - void project_dg - (const DoFHandler &, const TrilinosWrappers::BlockVector &, - const DoFHandler &, TrilinosWrappers::BlockVector &); - template - void extrapolate - (const DoFHandler &, const TrilinosWrappers::BlockVector &, - const DoFHandler &, TrilinosWrappers::BlockVector &); - template - void extrapolate - (const DoFHandler &, const TrilinosWrappers::BlockVector &, - const DoFHandler &, const ConstraintMatrix &, - TrilinosWrappers::BlockVector &); + template + void interpolate + (const DoFHandler &, const TrilinosWrappers::BlockVector &, + const DoFHandler &, TrilinosWrappers::BlockVector &); + template + void interpolate + (const DoFHandler &, const TrilinosWrappers::BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::BlockVector &); + template + void back_interpolate + (const DoFHandler &, const TrilinosWrappers::BlockVector &, + const FiniteElement &, TrilinosWrappers::BlockVector &); + template + void back_interpolate + (const DoFHandler &, const ConstraintMatrix &, + const TrilinosWrappers::BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::BlockVector &); + template + void interpolation_difference + (const DoFHandler &, const TrilinosWrappers::BlockVector &, + const FiniteElement &, TrilinosWrappers::BlockVector &); + template + void interpolation_difference + (const DoFHandler &, const ConstraintMatrix &, + const TrilinosWrappers::BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::BlockVector &); + template + void project_dg + (const DoFHandler &, const TrilinosWrappers::BlockVector &, + const DoFHandler &, TrilinosWrappers::BlockVector &); + template + void extrapolate + (const DoFHandler &, const TrilinosWrappers::BlockVector &, + const DoFHandler &, TrilinosWrappers::BlockVector &); + template + void extrapolate + (const DoFHandler &, const TrilinosWrappers::BlockVector &, + const DoFHandler &, const ConstraintMatrix &, + TrilinosWrappers::BlockVector &); #endif - template - void interpolate - (const hp::DoFHandler &, const Vector &, - const hp::DoFHandler &, Vector &); - template - void interpolate - (const hp::DoFHandler &, const Vector &, - const hp::DoFHandler &, const ConstraintMatrix &, - Vector &); - template - void interpolate - (const hp::DoFHandler &, const Vector &, - const hp::DoFHandler &, Vector &); - template - void interpolate - (const hp::DoFHandler &, const Vector &, - const hp::DoFHandler &, const ConstraintMatrix &, - Vector &); - - - template FiniteElement * - get_fe_from_name (const std::string &); - - - template - void - compute_projection_from_quadrature_points_matrix (const FiniteElement &, - const Quadrature &, - const Quadrature &, - FullMatrix &); - - template - void - compute_projection_from_quadrature_points( - const FullMatrix &, - const std::vector< Tensor<1, deal_II_dimension > > &, - std::vector< Tensor<1, deal_II_dimension > > &); - - template - void - compute_projection_from_quadrature_points( - const FullMatrix &, - const std::vector > &, - std::vector > &); - - - template - void - compute_interpolation_to_quadrature_points_matrix (const FiniteElement &, - const Quadrature &, - FullMatrix &); + template + void interpolate + (const hp::DoFHandler &, const Vector &, + const hp::DoFHandler &, Vector &); + template + void interpolate + (const hp::DoFHandler &, const Vector &, + const hp::DoFHandler &, const ConstraintMatrix &, + Vector &); + template + void interpolate + (const hp::DoFHandler &, const Vector &, + const hp::DoFHandler &, Vector &); + template + void interpolate + (const hp::DoFHandler &, const Vector &, + const hp::DoFHandler &, const ConstraintMatrix &, + Vector &); + + + template FiniteElement * + get_fe_from_name (const std::string &); + + + template + void + compute_projection_from_quadrature_points_matrix (const FiniteElement &, + const Quadrature &, + const Quadrature &, + FullMatrix &); + + template + void + compute_projection_from_quadrature_points( + const FullMatrix &, + const std::vector< Tensor<1, deal_II_dimension > > &, + std::vector< Tensor<1, deal_II_dimension > > &); + + template + void + compute_projection_from_quadrature_points( + const FullMatrix &, + const std::vector > &, + std::vector > &); + + + template + void + compute_interpolation_to_quadrature_points_matrix (const FiniteElement &, + const Quadrature &, + FullMatrix &); #if deal_II_dimension != 1 - template - void - compute_projection_from_face_quadrature_points_matrix (const FiniteElement &, - const Quadrature &, - const Quadrature &, - const DoFHandler::active_cell_iterator & , - unsigned int, - FullMatrix &); + template + void + compute_projection_from_face_quadrature_points_matrix (const FiniteElement &, + const Quadrature &, + const Quadrature &, + const DoFHandler::active_cell_iterator & , + unsigned int, + FullMatrix &); #endif - template - void - hierarchic_to_lexicographic_numbering - (const FiniteElementData &, - std::vector &); - - template - void - lexicographic_to_hierarchic_numbering - (const FiniteElementData &, - std::vector &); - - template - std::vector - hierarchic_to_lexicographic_numbering - (const FiniteElementData &); - - template - std::vector - lexicographic_to_hierarchic_numbering - (const FiniteElementData &); - \} + template + void + hierarchic_to_lexicographic_numbering + (const FiniteElementData &, + std::vector &); + + template + void + lexicographic_to_hierarchic_numbering + (const FiniteElementData &, + std::vector &); + + template + std::vector + hierarchic_to_lexicographic_numbering + (const FiniteElementData &); + + template + std::vector + lexicographic_to_hierarchic_numbering + (const FiniteElementData &); + +#endif + \} } + + diff --git a/deal.II/source/fe/fe_values.inst.in b/deal.II/source/fe/fe_values.inst.in index 56603423f4..21c5a8a61c 100644 --- a/deal.II/source/fe/fe_values.inst.in +++ b/deal.II/source/fe/fe_values.inst.in @@ -14,378 +14,207 @@ // Instantiations of functions in FEValuesViews (explicitly write // dealii:: namespace in order to not confuse the compiler with // FEValuesViews::Vector). -for (deal_II_dimension : DIMENSIONS) + +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class FEValuesData; - template class FEValuesBase; - template class FEValues; - template class FEValuesBase:: - CellIterator::cell_iterator>; - template class FEValuesBase:: - CellIterator::cell_iterator>; - - template class FEFaceValuesBase; - template class FEFaceValues; - template class FESubfaceValues; +#if deal_II_dimension <= deal_II_space_dimension -#if deal_II_dimension != 3 - template class FEValuesData; - template class FEValuesBase; - template class FEValues; - template class FEValuesBase:: - CellIterator::cell_iterator>; - template class FEValuesBase:: - CellIterator::cell_iterator>; - - template class FEFaceValuesBase; - template class FEFaceValues; - template class FESubfaceValues; -#endif + template class FEValuesData; + template class FEValuesBase; + template class FEValues; + template class FEValuesBase:: + CellIterator::cell_iterator>; + template class FEValuesBase:: + CellIterator::cell_iterator>; + + template class FEFaceValuesBase; + template class FEFaceValues; + template class FESubfaceValues; namespace FEValuesViews \{ - template class Scalar; - template class Vector; - template class SymmetricTensor<2, deal_II_dimension, deal_II_dimension>; - -#if deal_II_dimension != 3 - template class Scalar; - template class Vector; - template class SymmetricTensor<2, deal_II_dimension, deal_II_dimension+1>; -#endif + template class Scalar; + template class Vector; + template class SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>; \} +#endif } -for (VEC : SERIAL_VECTORS; deal_II_dimension : DIMENSIONS) - { - template - void FEValuesViews::Scalar::get_function_values - (const dealii::VEC&, std::vector&) const; - template - void FEValuesViews::Scalar::get_function_gradients - (const dealii::VEC&, std::vector >&) const; - template - void FEValuesViews::Scalar::get_function_hessians - (const dealii::VEC&, std::vector >&) const; - template - void FEValuesViews::Scalar::get_function_laplacians - (const dealii::VEC&, std::vector&) const; - - template - void FEValuesViews::Vector::get_function_values - (const dealii::VEC&, std::vector >&) const; - template - void FEValuesViews::Vector::get_function_gradients - (const dealii::VEC&, std::vector >&) const; - template - void FEValuesViews::Vector::get_function_symmetric_gradients - (const dealii::VEC&, std::vector >&) const; - template - void FEValuesViews::Vector::get_function_curls - (const dealii::VEC&, std::vector&) const; - template - void FEValuesViews::Vector::get_function_divergences - (const dealii::VEC&, std::vector&) const; - template - void FEValuesViews::Vector::get_function_hessians - (const dealii::VEC&, std::vector >&) const; - template - void FEValuesViews::Vector::get_function_laplacians - (const dealii::VEC&, std::vector >&) const; - - template - void FEValuesViews::SymmetricTensor<2,deal_II_dimension>::get_function_values - (const dealii::VEC&, std::vector >&) const; - template - void FEValuesViews::SymmetricTensor<2,deal_II_dimension>::get_function_divergences - (const dealii::VEC&, std::vector >&) const; -#if deal_II_dimension != 3 +for (VEC : SERIAL_VECTORS; deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension template - void FEValuesViews::Scalar - ::get_function_values - (const dealii::VEC&, std::vector&) const; + void FEValuesViews::Scalar + ::get_function_values + (const dealii::VEC&, std::vector&) const; template - void FEValuesViews::Scalar - ::get_function_gradients - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::Scalar + ::get_function_gradients + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::Scalar - ::get_function_hessians - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::Scalar + ::get_function_hessians + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::Scalar - ::get_function_laplacians - (const dealii::VEC&, std::vector&) const; + void FEValuesViews::Scalar + ::get_function_laplacians + (const dealii::VEC&, std::vector&) const; template - void FEValuesViews::Vector - ::get_function_values - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::Vector + ::get_function_values + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::Vector - ::get_function_gradients - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::Vector + ::get_function_gradients + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::Vector - ::get_function_symmetric_gradients - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::Vector + ::get_function_symmetric_gradients + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::Vector - ::get_function_divergences - (const dealii::VEC&, std::vector&) const; + void FEValuesViews::Vector + ::get_function_divergences + (const dealii::VEC&, std::vector&) const; template - void FEValuesViews::Vector - ::get_function_hessians - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::Vector + ::get_function_hessians + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::Vector - ::get_function_laplacians - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::Vector + ::get_function_laplacians + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_dimension+1> - ::get_function_values - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension> + ::get_function_values + (const dealii::VEC&, std::vector >&) const; template - void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_dimension+1> - ::get_function_divergences - (const dealii::VEC&, std::vector >&) const; + void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension> + ::get_function_divergences + (const dealii::VEC&, std::vector >&) const; #endif - } -// Instantiations of functions in FEValuesBase - -for (VEC : SERIAL_VECTORS; deal_II_dimension : DIMENSIONS) +for (VEC : SERIAL_VECTORS; deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template - void FEValuesBase::get_function_values - (const VEC&, std::vector&) const; - template - void FEValuesBase::get_function_values - (const VEC&, std::vector&) const; - template - void FEValuesBase::get_function_values - (const VEC&, const VectorSlice >&, std::vector&) const; - template - void FEValuesBase::get_function_values - (const VEC&, const VectorSlice >&, std::vector&) const; - - template - void FEValuesBase::get_function_values - (const VEC&, std::vector > &) const; - template - void FEValuesBase::get_function_values - (const VEC&, std::vector > &) const; +#if deal_II_dimension <= deal_II_space_dimension template - void FEValuesBase::get_function_values - (const VEC&, const VectorSlice >&, - std::vector > &) const; - template - void FEValuesBase::get_function_values - (const VEC&, const VectorSlice >&, - std::vector > &) const; - - template - void FEValuesBase::get_function_values - (const VEC&, const VectorSlice >&, - VectorSlice > >, bool) const; -// template -// void FEValuesBase::get_function_values -// (const VEC&, const VectorSlice >&, -// VectorSlice > >, bool) const; - - template - void FEValuesBase::get_function_gradients - (const VEC&, std::vector > &) const; - template - void FEValuesBase::get_function_gradients - (const VEC&, const VectorSlice >&, - std::vector > &) const; - - template - void FEValuesBase::get_function_gradients - (const VEC&, std::vector > > &) const; - template - void FEValuesBase::get_function_gradients - (const VEC&, const VectorSlice >&, - VectorSlice > > >, bool) const; - - template - void FEValuesBase::get_function_hessians - (const VEC&, std::vector > &) const; - template - void FEValuesBase::get_function_hessians - (const VEC&, const VectorSlice >&, - std::vector > &) const; - - template - void FEValuesBase::get_function_hessians - (const VEC&, std::vector > > &, bool) const; - template - void FEValuesBase::get_function_hessians - (const VEC&, const VectorSlice >&, - VectorSlice > > >, bool) const; - - template - void FEValuesBase::get_function_laplacians - (const VEC&, std::vector&) const; - template - void FEValuesBase::get_function_laplacians - (const VEC&, std::vector&) const; - template - void FEValuesBase::get_function_laplacians - (const VEC&, const VectorSlice >&, std::vector&) const; - template - void FEValuesBase::get_function_laplacians - (const VEC&, const VectorSlice >&, std::vector&) const; - - template - void FEValuesBase::get_function_laplacians - (const VEC&, std::vector > &) const; - template - void FEValuesBase::get_function_laplacians - (const VEC&, std::vector > &) const; - - template - void FEValuesBase::get_function_laplacians - (const VEC&, const VectorSlice >&, - std::vector > &) const; - template - void FEValuesBase::get_function_laplacians - (const VEC&, const VectorSlice >&, - std::vector > &) const; - - template - void FEValuesBase::get_function_laplacians - (const VEC&, const VectorSlice >&, - std::vector > &, bool) const; - template - void FEValuesBase::get_function_laplacians - (const VEC&, const VectorSlice >&, - std::vector > &, bool) const; - - -#if deal_II_dimension != 3 - - template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, std::vector&) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, std::vector&) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, const VectorSlice >&, std::vector&) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, const VectorSlice >&, std::vector&) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, std::vector > &) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, std::vector > &) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, const VectorSlice >&, std::vector > &) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, const VectorSlice >&, std::vector > &) const; template - void FEValuesBase::get_function_values + void FEValuesBase::get_function_values (const VEC&, const VectorSlice >&, VectorSlice > >, bool) const; // template -// void FEValuesBase::get_function_values +// void FEValuesBase::get_function_values // (const VEC&, const VectorSlice >&, // VectorSlice > >, bool) const; template - void FEValuesBase::get_function_gradients - (const VEC&, std::vector > &) const; + void FEValuesBase::get_function_gradients + (const VEC&, std::vector > &) const; template - void FEValuesBase::get_function_gradients + void FEValuesBase::get_function_gradients (const VEC&, const VectorSlice >&, - std::vector > &) const; + std::vector > &) const; template - void FEValuesBase::get_function_gradients - (const VEC&, std::vector > > &) const; + void FEValuesBase::get_function_gradients + (const VEC&, std::vector > > &) const; template - void FEValuesBase::get_function_gradients + void FEValuesBase::get_function_gradients (const VEC&, const VectorSlice >&, - VectorSlice > > >, bool) const; + VectorSlice > > >, bool) const; template - void FEValuesBase::get_function_hessians - (const VEC&, std::vector > &) const; + void FEValuesBase::get_function_hessians + (const VEC&, std::vector > &) const; template - void FEValuesBase::get_function_hessians + void FEValuesBase::get_function_hessians (const VEC&, const VectorSlice >&, - std::vector > &) const; + std::vector > &) const; template - void FEValuesBase::get_function_hessians - (const VEC&, std::vector > > &, bool) const; + void FEValuesBase::get_function_hessians + (const VEC&, std::vector > > &, bool) const; template - void FEValuesBase::get_function_hessians + void FEValuesBase::get_function_hessians (const VEC&, const VectorSlice >&, - VectorSlice > > >, bool) const; + VectorSlice > > >, bool) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, std::vector&) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, std::vector&) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, const VectorSlice >&, std::vector&) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, const VectorSlice >&, std::vector&) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, std::vector > &) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, std::vector > &) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, const VectorSlice >&, std::vector > &) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, const VectorSlice >&, std::vector > &) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, const VectorSlice >&, std::vector > &, bool) const; template - void FEValuesBase::get_function_laplacians + void FEValuesBase::get_function_laplacians (const VEC&, const VectorSlice >&, std::vector > &, bool) const; - #endif - } diff --git a/deal.II/source/fe/mapping.cc b/deal.II/source/fe/mapping.cc index 76025f710a..090e885a5d 100644 --- a/deal.II/source/fe/mapping.cc +++ b/deal.II/source/fe/mapping.cc @@ -42,7 +42,7 @@ Mapping::transform_covariant ( template void Mapping::transform_covariant ( - const VectorSlice > > input, + const VectorSlice > > input, const unsigned int offset, VectorSlice > > output, const typename Mapping::InternalDataBase &mapping_data) const @@ -74,7 +74,7 @@ Mapping::transform_contravariant ( template void Mapping::transform_contravariant ( - const VectorSlice > > input, + const VectorSlice > > input, const unsigned int offset, VectorSlice > > output, const typename Mapping::InternalDataBase &mapping_data) const diff --git a/deal.II/source/fe/mapping.inst.in b/deal.II/source/fe/mapping.inst.in index 4417789b3f..df9073dc3b 100644 --- a/deal.II/source/fe/mapping.inst.in +++ b/deal.II/source/fe/mapping.inst.in @@ -12,12 +12,11 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) - { - template class Mapping; -#if deal_II_dimension != 3 - template class Mapping; +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + template class Mapping; #endif } diff --git a/deal.II/source/fe/mapping_cartesian.cc b/deal.II/source/fe/mapping_cartesian.cc index 2e5d400b9e..62e5be0e6e 100644 --- a/deal.II/source/fe/mapping_cartesian.cc +++ b/deal.II/source/fe/mapping_cartesian.cc @@ -316,10 +316,10 @@ fill_fe_values (const typename Triangulation::cell_iterator& cell, typename Mapping::InternalDataBase& mapping_data, std::vector >& quadrature_points, std::vector& JxW_values, - std::vector >& jacobians, - std::vector >& jacobian_grads, - std::vector >& inverse_jacobians, - std::vector > &, + std::vector< DerivativeForm<1,dim,spacedim> > & jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, + std::vector > &, CellSimilarity::Similarity& cell_similarity) const { // convert data object to internal @@ -358,7 +358,7 @@ fill_fe_values (const typename Triangulation::cell_iterator& cell, if (cell_similarity != CellSimilarity::translation) for (unsigned int i=0; i(); + jacobians[i] = DerivativeForm<1,dim,spacedim>(); for (unsigned int j=0; j::cell_iterator& cell, if (data.current_update_flags() & update_jacobian_grads) if (cell_similarity != CellSimilarity::translation) for (unsigned int i=0; i(); + jacobian_grads[i]=DerivativeForm<2,dim,spacedim>(); // "compute" inverse Jacobian at the // quadrature points, which are all // the same @@ -578,6 +578,7 @@ MappingCartesian::fill_fe_subface_values ( + template void MappingCartesian::transform ( @@ -636,7 +637,7 @@ MappingCartesian::transform ( template void MappingCartesian::transform ( - const VectorSlice > > input, + const VectorSlice > > input, VectorSlice > > output, const typename Mapping::InternalDataBase &mapping_data, const MappingType mapping_type) const @@ -718,6 +719,45 @@ MappingCartesian::transform ( + +template +void +MappingCartesian::transform ( + const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &mapping_data, + const MappingType mapping_type) const +{ + + AssertDimension (input.size(), output.size()); + Assert (dynamic_cast(&mapping_data) != 0, + ExcInternalError()); + const InternalData &data = static_cast(mapping_data); + + switch (mapping_type) + { + case mapping_piola_gradient: + { + Assert (data.update_flags & update_contravariant_transformation, + typename FEValuesBase::ExcAccessToUninitializedField()); + Assert (data.update_flags & update_volume_elements, + typename FEValuesBase::ExcAccessToUninitializedField()); + + for (unsigned int i=0; i Point MappingCartesian::transform_unit_to_real_cell ( diff --git a/deal.II/source/fe/mapping_q.cc b/deal.II/source/fe/mapping_q.cc index 4ab65f68ae..8336a05e3d 100644 --- a/deal.II/source/fe/mapping_q.cc +++ b/deal.II/source/fe/mapping_q.cc @@ -304,9 +304,9 @@ MappingQ::fill_fe_values ( typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &normal_vectors, CellSimilarity::Similarity &cell_similarity) const { @@ -353,6 +353,7 @@ MappingQ::fill_fe_values ( quadrature_points, JxW_values, jacobians, jacobian_grads, inverse_jacobians, normal_vectors, cell_similarity); + } @@ -1295,7 +1296,7 @@ MappingQ::transform ( template void MappingQ::transform ( - const VectorSlice > > input, + const VectorSlice > > input, VectorSlice > > output, const typename Mapping::InternalDataBase &mapping_data, const MappingType mapping_type) const @@ -1388,12 +1389,15 @@ transform_real_to_unit_cell (const typename Triangulation::cell_it use_mapping_q_on_all_cells || (dim!=spacedim) ) { + const Quadrature point_quadrature(p_unit); + + UpdateFlags update_flags = update_transformation_values|update_transformation_gradients; + if (spacedim>dim) + update_flags |= update_jacobian_grads; std::auto_ptr mdata (dynamic_cast ( - get_data(update_transformation_values | - update_transformation_gradients, - point_quadrature))); + get_data(update_flags,point_quadrature))); mdata->use_mapping_q1_on_current_cell = false; @@ -1432,6 +1436,7 @@ MappingQ::clone () const + // explicit instantiations #include "mapping_q.inst" diff --git a/deal.II/source/fe/mapping_q.inst.in b/deal.II/source/fe/mapping_q.inst.in index d21499b464..c705674d50 100644 --- a/deal.II/source/fe/mapping_q.inst.in +++ b/deal.II/source/fe/mapping_q.inst.in @@ -12,12 +12,11 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) - { - template class MappingQ; -#if deal_II_dimension < 3 - template class MappingQ; +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + template class MappingQ; #endif } diff --git a/deal.II/source/fe/mapping_q1.cc b/deal.II/source/fe/mapping_q1.cc index d726a890c8..3d323eac58 100644 --- a/deal.II/source/fe/mapping_q1.cc +++ b/deal.II/source/fe/mapping_q1.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -11,7 +11,7 @@ // //--------------------------------------------------------------------------- -#include +#include #include #include #include @@ -32,6 +32,8 @@ DEAL_II_NAMESPACE_OPEN + + template const unsigned int MappingQ1::n_shape_functions; @@ -166,10 +168,6 @@ namespace internal } if (data.shape_second_derivatives.size()!=0) { - // the following may or may not - // work if dim != spacedim - Assert (spacedim == 2, ExcNotImplemented()); - Assert(data.shape_second_derivatives.size()==n_shape_functions*n_points, ExcInternalError()); data.second_derivative(k,0)[0][0] = 0; @@ -659,9 +657,13 @@ MappingQ1::compute_fill (const typename Triangulation()); + Assert (data.n_shape_functions > 0, ExcInternalError()); const Tensor<1,spacedim> *supp_pts = &data.mapping_support_points[0]; + for (unsigned int point=0; point * data_derv = @@ -695,45 +697,23 @@ MappingQ1::compute_fill (const typename Triangulation contravariant_matrix(spacedim,dim); - FullMatrix covariant_matrix(dim,spacedim); - - for (unsigned int point=0; point void MappingQ1::compute_mapping_support_points( @@ -756,11 +736,11 @@ MappingQ1::fill_fe_values ( typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &normal_vectors, - CellSimilarity::Similarity &cell_similarity) const + CellSimilarity::Similarity &cell_similarity) const { // ensure that the following cast // is really correct: @@ -778,11 +758,10 @@ MappingQ1::fill_fe_values ( const std::vector &weights=q.get_weights(); // Multiply quadrature weights by - // Jacobian determinants or by norm - // of the cross product of the - // columns of the Jacobian and - // store the cell normal vectors in - // the case <2,3> + // Jacobian determinants or the area + // element g=sqrt(DX^t DX) in case of + // codim > 0 + if (update_flags & (update_normal_vectors | update_JxW_values)) { @@ -792,87 +771,74 @@ MappingQ1::fill_fe_values ( (normal_vectors.size() == n_q_points), ExcDimensionMismatch(normal_vectors.size(), n_q_points)); + if (cell_similarity != CellSimilarity::translation) for (unsigned int point=0; point0 case { + Tensor<1, spacedim> DX_t [dim]; + for (unsigned int i=0; i G; //First fundamental form + for (unsigned int i=0; idirection_flag() == false) normal_vectors[point] *= -1.; } - // un-transpose - // the matrix - // again - data.contravariant[point] = transpose(data.contravariant[point]); } - } + } //codim>0 case + } } + + + // copy values from InternalData to // vector given by reference if (update_flags & update_jacobians) @@ -882,6 +848,7 @@ MappingQ1::fill_fe_values ( for (unsigned int point=0; point::fill_fe_values ( if (cell_similarity != CellSimilarity::translation) { + + std::fill(jacobian_grads.begin(), + jacobian_grads.end(), + DerivativeForm<2,dim,spacedim>()); + + const unsigned int data_set = DataSetDescriptor::cell(); + for (unsigned int point=0; point * second = @@ -929,8 +903,9 @@ MappingQ1::fill_fe_values ( AssertDimension (inverse_jacobians.size(), n_q_points); if (cell_similarity != CellSimilarity::translation) for (unsigned int point=0; point cell_normal; - - // temporarily - // transpose the - // matrix so that - // we can refer - // to its columns - // using a single - // index - data.contravariant[point] = transpose(data.contravariant[point]); - - // compute the normal - // vector to this cell - // and put it into the - // last row of - // data.contravariant - if ( (dim==1) && (spacedim==2) ) - cross_product(cell_normal, - -data.contravariant[point][0]); - else if ( (dim==2) && (spacedim==3) ) - cross_product(cell_normal, - data.contravariant[point][0], - data.contravariant[point][1]); - else - Assert (false, ExcNotImplemented()); - - // then compute the face - // normal from the face - // tangent and the cell - // normal: - if ( (dim==1) && (spacedim==2) ) + { + if (dim==1) + { + // J is a tangent vector + boundary_forms[point] = data.contravariant[point].transpose()[0]; + boundary_forms[point] /= + (face_no == 0 ? -1. : +1.) * boundary_forms[point].norm(); + + } + + if (dim==2) { - // need to think how to - // do this. the code - // should be something - // like the below, but - // I can't test it - // right now since we - // can't use - // FEFaceValues in 1d - Assert (false, ExcNotImplemented()); + Tensor<1,spacedim> cell_normal; + const DerivativeForm<1,spacedim,dim> DX_t = + data.contravariant[point].transpose(); + cross_product(cell_normal,DX_t[0],DX_t[1]); + cell_normal /= cell_normal.norm(); + + // then compute the face + // normal from the face + // tangent and the cell + // normal: cross_product (boundary_forms[point], - (face_no == 0 ? 1. : -1.) * cell_normal); + data.aux[0][point], cell_normal); + } - else if ( (dim==2) && (spacedim==3) ) - cross_product (boundary_forms[point], - data.aux[0][point], cell_normal); - else - Assert (false, ExcNotImplemented()); - - // un-transpose - // the matrix - // again - data.contravariant[point] = transpose(data.contravariant[point]); + } } - if (update_flags & (update_normal_vectors - | update_JxW_values)) - for (unsigned int i=0;i::subface_ratio( - cell->subface_case(face_no), subface_no); - JxW_values[i] *= area_ratio; - } - } - - if (update_flags & update_normal_vectors) - normal_vectors[i] = boundary_forms[i] / boundary_forms[i].norm(); - } + if (subface_no!=deal_II_numbers::invalid_unsigned_int) + { + const double area_ratio=GeometryInfo::subface_ratio( + cell->subface_case(face_no), subface_no); + JxW_values[i] *= area_ratio; + } + } + + if (update_flags & update_normal_vectors) + normal_vectors[i] = boundary_forms[i] / boundary_forms[i].norm(); + } } } } } + + template void MappingQ1::compute_fill_face ( @@ -1223,8 +1174,67 @@ fill_fe_subface_values (const typename Triangulation::cell_iterato template void MappingQ1::transform ( - const VectorSlice > > input, - VectorSlice > > output, + const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &mapping_data, + const MappingType mapping_type) const +{ + transform_fields(input, output, mapping_data, mapping_type); +} + + + +template +void +MappingQ1::transform ( + const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &mapping_data, + const MappingType mapping_type) const +{ + + std::vector > aux_output1(output.size()); + VectorSlice< std::vector > > aux_output( aux_output1); + + transform_differential_forms(input, aux_output, mapping_data, mapping_type); + + for (unsigned int i=0; i +void +MappingQ1::transform ( + const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &mapping_data, + const MappingType mapping_type) const +{ + switch (mapping_type) + { + case mapping_contravariant: + transform_fields(input, output, mapping_data, mapping_type); + return; + + case mapping_piola_gradient: + case mapping_contravariant_gradient: + case mapping_covariant_gradient: + transform_gradients(input, output, mapping_data, mapping_type); + return; + default: + Assert(false, ExcNotImplemented()); + } +} + + + +template +template < int rank > +void MappingQ1::transform_fields( + const VectorSlice > > input, + VectorSlice > > output, const typename Mapping::InternalDataBase &mapping_data, const MappingType mapping_type) const { @@ -1233,51 +1243,46 @@ MappingQ1::transform ( ExcInternalError()); const InternalData &data = static_cast(mapping_data); - Tensor<1, spacedim> auxiliary; - switch (mapping_type) { - case mapping_covariant: + case mapping_contravariant: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_flags & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField()); for (unsigned int i=0; i::ExcAccessToUninitializedField()); - + Assert (data.update_flags & update_volume_elements, + typename FEValuesBase::ExcAccessToUninitializedField()); + Assert (rank==1, ExcMessage("Only for rank 1")); for (unsigned int i=0; i::ExcAccessToUninitializedField()); - Assert (data.update_flags & update_volume_elements, - typename FEValuesBase::ExcAccessToUninitializedField()); for (unsigned int i=0; i::transform ( template -void -MappingQ1::transform ( - const VectorSlice > > input, - VectorSlice > > output, +template < int rank > +void MappingQ1::transform_gradients( + const VectorSlice > > input, + VectorSlice > > output, const typename Mapping::InternalDataBase &mapping_data, const MappingType mapping_type) const { @@ -1300,106 +1305,117 @@ MappingQ1::transform ( ExcInternalError()); const InternalData &data = static_cast(mapping_data); - Tensor<2, spacedim> aux1; - Tensor<2, spacedim> aux2; - switch (mapping_type) { - case mapping_covariant: + case mapping_contravariant_gradient: { Assert (data.update_flags & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField()); - - for (unsigned int i=0; i::ExcAccessToUninitializedField()); + Assert (rank==2, ExcMessage("Only for rank 2")); for (unsigned int i=0; i A = + apply_transformation(data.contravariant[i], transpose(input[i]) ); + output[i] = apply_transformation(data.covariant[i], A.transpose() ); } + return; } case mapping_covariant_gradient: { + Assert (data.update_flags & update_covariant_transformation, + typename FEValuesBase::ExcAccessToUninitializedField()); Assert (data.update_flags & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField()); + Assert (rank==2, ExcMessage("Only for rank 2")); for (unsigned int i=0; i A = + apply_transformation(data.covariant[i], transpose(input[i]) ); + output[i] = apply_transformation(data.covariant[i], A.transpose() ); - contract(aux2, aux1, data.covariant[i]); - contract(output[i], data.covariant[i], aux2); } return; } - case mapping_contravariant_gradient: + + + + case mapping_piola_gradient: { Assert (data.update_flags & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField()); Assert (data.update_flags & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField()); + Assert (data.update_flags & update_volume_elements, + typename FEValuesBase::ExcAccessToUninitializedField()); + Assert (rank==2, ExcMessage("Only for rank 2")); for (unsigned int i=0; i A = + apply_transformation(data.covariant[i], input[i] ); + Tensor<2,spacedim> T = + apply_transformation(data.contravariant[i], A.transpose() ); - contract(aux2, aux1, data.covariant[i]); - contract(output[i], data.contravariant[i], aux2); + output[i] = transpose(T); + output[i] /= data.volume_elements[i]; } return; } - case mapping_piola: + default: + Assert(false, ExcNotImplemented()); + } +} + + + + +template +template < int rank > +void MappingQ1::transform_differential_forms( + const VectorSlice > > input, + VectorSlice > > output, + const typename Mapping::InternalDataBase &mapping_data, + const MappingType mapping_type) const +{ + + AssertDimension (input.size(), output.size()); + Assert (dynamic_cast(&mapping_data) != 0, + ExcInternalError()); + const InternalData &data = static_cast(mapping_data); + + switch (mapping_type) + { + case mapping_covariant: { - Assert (data.update_flags & update_covariant_transformation, - typename FEValuesBase::ExcAccessToUninitializedField()); Assert (data.update_flags & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField()); - Assert (data.update_flags & update_volume_elements, - typename FEValuesBase::ExcAccessToUninitializedField()); for (unsigned int i=0; i Point MappingQ1::transform_unit_to_real_cell ( @@ -1454,18 +1470,166 @@ transform_unit_to_real_cell_internal (const InternalData &data) const + /* For an explanation of the KA and Kb + arrays see the comments in the declaration of + transform_real_to_unit_cell_initial_guess */ +namespace +{ + template + struct TransformR2UInitialGuess + { + static const double KA[GeometryInfo::vertices_per_cell][dim]; + static const double Kb[GeometryInfo::vertices_per_cell]; + }; + + + /* + Octave code: + M=[0 1; 1 1]; + K1 = transpose(M) * inverse (M*transpose(M)); + printf ("{%f, %f},\n", K1' ); + */ + template <> + const double + TransformR2UInitialGuess<1>:: + KA[GeometryInfo<1>::vertices_per_cell][1] = + { + {-1.000000}, + {1.000000} + }; + + template <> + const double + TransformR2UInitialGuess<1>:: + Kb[GeometryInfo<1>::vertices_per_cell] = {1.000000, 0.000000}; + + +/* + Octave code: + M=[0 1 0 1;0 0 1 1;1 1 1 1]; + K2 = transpose(M) * inverse (M*transpose(M)); + printf ("{%f, %f, %f},\n", K2' ); +*/ + template <> + const double + TransformR2UInitialGuess<2>:: + KA[GeometryInfo<2>::vertices_per_cell][2] = + { + {-0.500000, -0.500000}, + { 0.500000, -0.500000}, + {-0.500000, 0.500000}, + { 0.500000, 0.500000} + }; + +/* + Octave code: + M=[0 1 0 1 0 1 0 1;0 0 1 1 0 0 1 1; 0 0 0 0 1 1 1 1; 1 1 1 1 1 1 1 1]; + K3 = transpose(M) * inverse (M*transpose(M)) + printf ("{%f, %f, %f, %f},\n", K3' ); +*/ + template <> + const double + TransformR2UInitialGuess<2>:: + Kb[GeometryInfo<2>::vertices_per_cell] = + {0.750000,0.250000,0.250000,-0.250000 }; + + + template <> + const double + TransformR2UInitialGuess<3>:: + KA[GeometryInfo<3>::vertices_per_cell][3] = + { + {-0.250000, -0.250000, -0.250000}, + { 0.250000, -0.250000, -0.250000}, + {-0.250000, 0.250000, -0.250000}, + { 0.250000, 0.250000, -0.250000}, + {-0.250000, -0.250000, 0.250000}, + { 0.250000, -0.250000, 0.250000}, + {-0.250000, 0.250000, 0.250000}, + { 0.250000, 0.250000, 0.250000} + + }; + + + template <> + const double + TransformR2UInitialGuess<3>:: + Kb[GeometryInfo<3>::vertices_per_cell] = + {0.500000,0.250000,0.250000,0.000000,0.250000,0.000000,0.000000,-0.250000}; + +} + + +template +Point +MappingQ1:: +transform_real_to_unit_cell_initial_guess (const std::vector > &vertex, + const Point &p) const +{ + + Point p_unit; + + FullMatrix KA(GeometryInfo::vertices_per_cell, dim); + Vector Kb(GeometryInfo::vertices_per_cell); + + KA.fill( (double*)(TransformR2UInitialGuess::KA) ); + for (unsigned int i=0;i::vertices_per_cell;++i) + Kb(i)=(TransformR2UInitialGuess::Kb)[i]; + + FullMatrix Y(spacedim, GeometryInfo::vertices_per_cell); + for (unsigned int v=0;v::vertices_per_cell;v++) + for (unsigned int i=0;i A(spacedim,dim); + Y.mmult(A,KA); // A = Y*KA + Vector< double > b(spacedim); + Y.vmult(b,Kb); // b = Y*Kb + + for (unsigned int i=0;i dest(dim); + + FullMatrix A_1(dim,spacedim); + if (dim Point MappingQ1:: transform_real_to_unit_cell (const typename Triangulation::cell_iterator &cell, const Point &p) const { - // Let the start value of the - // newton iteration be the center - // of the unit cell - Point p_unit; - for (unsigned int i=0; i > a; + compute_mapping_support_points (cell,a); + Point p_unit = + transform_real_to_unit_cell_initial_guess(a,p); + + // if dim==1 there is nothing + // else to do the initial value is the answer. + if (dim>1) + { // Use the get_data function to // create an InternalData with data @@ -1473,30 +1637,35 @@ transform_real_to_unit_cell (const typename Triangulation::cell_it // transformation shape values and // derivatives already computed at // point p_unit. - const Quadrature point_quadrature(p_unit); - std::auto_ptr - mdata(dynamic_cast ( - MappingQ1::get_data(update_transformation_values - | update_transformation_gradients, - point_quadrature))); - - compute_mapping_support_points (cell, mdata->mapping_support_points); - // The support points have to be at - // least as many as there are - // vertices. - Assert(mdata->mapping_support_points.size() >= - GeometryInfo::vertices_per_cell, - ExcInternalError()); - // Ignore non vertex support points. - mdata->mapping_support_points.resize(GeometryInfo::vertices_per_cell); - - // perform the newton iteration. - transform_real_to_unit_cell_internal(cell, p, *mdata, p_unit); + const Quadrature point_quadrature(p_unit); + + UpdateFlags update_flags = update_transformation_values| update_transformation_gradients; + if (spacedim>dim) + update_flags |= update_jacobian_grads; + + std::auto_ptr + mdata(dynamic_cast ( + MappingQ1::get_data(update_flags, point_quadrature))); + + compute_mapping_support_points (cell, mdata->mapping_support_points); + // The support points have to be at + // least as many as there are + // vertices. + Assert(mdata->mapping_support_points.size() >= + GeometryInfo::vertices_per_cell, + ExcInternalError()); + // Ignore non vertex support points. + mdata->mapping_support_points.resize(GeometryInfo::vertices_per_cell); + + // perform the newton iteration. + transform_real_to_unit_cell_internal(cell, p, *mdata, p_unit); + } return p_unit; } + template void MappingQ1:: @@ -1518,29 +1687,25 @@ transform_real_to_unit_cell_internal // f(x)=p(x)-p=0 // x_{n+1}=x_n-[f'(x)]^{-1}f(x) - // The start value is set to be the - // center of the unit cell. + // The start value was set to be the + // linear approximation to the cell // The shape values and derivatives // of the mapping at this point are // previously computed. - // In the codimension one case, the - // f' is rectangular, and it is - // augmented with the normal to the - // cell. The tranformation from - // real to unit is intented as a - // projection to the surface (or - // curve) generated by the given - // cell. + // For the <2,3> case there is a + // template specialization. // f(x) + + compute_shapes(std::vector > (1, p_unit), mdata); Point p_real(transform_unit_to_real_cell_internal(mdata)); Point f = p_real-p; const double eps = 1.e-12*cell->diameter(); const unsigned int loop_limit = 50; - + unsigned int loop=0; while (f.square()>eps*eps && loop++ d; Tensor<2,spacedim> df_1; @@ -1601,14 +1747,9 @@ transform_real_to_unit_cell_internal // f(x) p_real = transform_unit_to_real_cell_internal(mdata); f = p_real-p; - // In the codimension one case, - // we only project on the - // surface, i.e., we remove the - // normal component of the - // difference. - if(dim. + There is a surface embbeded in R^3 and we pass a point p in R^3, that + is most likely not lying on the surface. + We then ask, + what point in R^2 (hopefully in the unit cell) satisfies that + map(x) = p. + + An appropriate modification of this question is: + Find x in R^2 and alpha in R such that + + map(x) + alpha * normal(x) = p + + + */ + +template<> +void MappingQ1<2,3>:: +transform_real_to_unit_cell_internal (const Triangulation<2,3>::cell_iterator &cell, + const Point<3> &p, + InternalData &mdata, + Point<2> &p_unit) const +{ + transform_real_to_unit_cell_internal_codim1(cell,p, mdata, p_unit); +} + + + + +template<> +void MappingQ1<1,2>:: +transform_real_to_unit_cell_internal (const Triangulation<1,2>::cell_iterator &cell, + const Point<2> &p, + InternalData &mdata, + Point<1> &p_unit) const +{ + transform_real_to_unit_cell_internal_codim1(cell,p, mdata, p_unit); +} + +template<> +void MappingQ1<1,3>:: +transform_real_to_unit_cell_internal (const Triangulation<1,3>::cell_iterator &/*cell*/, + const Point<3> &/*p*/, + InternalData &/*mdata*/, + Point<1> &/*p_unit*/) const +{ + Assert(false, ExcNotImplemented()); +} + + + + +template +template +void MappingQ1:: +transform_real_to_unit_cell_internal_codim1 +(const typename Triangulation::cell_iterator &cell, + const Point &p, + MappingQ1::InternalData &mdata, + Point &p_unit) const +{ + + const unsigned int spacedim1 = dim_+1; + const unsigned int dim1 = dim_; + + + const unsigned int n_shapes=mdata.shape_values.size(); + Assert(n_shapes!=0, ExcInternalError()); + Assert(mdata.shape_derivatives.size()==n_shapes, ExcInternalError()); + Assert(mdata.shape_second_derivatives.size()==n_shapes, ExcInternalError()); + + std::vector > &points=mdata.mapping_support_points; + Assert(points.size()==n_shapes, ExcInternalError()); + + Point p_minus_F; + + Point DF[dim1]; + Point D2F[dim1][dim1]; + + Point f; + Tensor<2,dim1> df; + + //Evaluate first and second derivatives + compute_shapes(std::vector > (1, p_unit), mdata); + for (unsigned int k=0; k &grad_phi_k = mdata.derivative(0,k); + const Tensor<2,dim1> &hessian_k = mdata.second_derivative(0,k); + const Point &point_k = points[k]; + + for (unsigned int j=0; jdiameter(); + const unsigned int loop_limit = 10; + + unsigned int loop=0; + + while (f.norm()>eps && loop++ d; + Tensor<2,dim1> df_1; + + df_1 = invert(df); + contract (d, df_1, static_cast&>(f)); + p_unit -= d; + + for (unsigned int j=0; j > (1, p_unit), mdata); + for (unsigned int k=0; k &grad_phi_k = mdata.derivative(0,k); + const Tensor<2,dim1> &hessian_k = mdata.second_derivative(0,k); + const Point &point_k = points[k]; + + for (unsigned int j=0; j Mapping * MappingQ1::clone () const diff --git a/deal.II/source/fe/mapping_q1.inst.in b/deal.II/source/fe/mapping_q1.inst.in index 04e52551ae..677eb678e7 100644 --- a/deal.II/source/fe/mapping_q1.inst.in +++ b/deal.II/source/fe/mapping_q1.inst.in @@ -11,15 +11,11 @@ // //--------------------------------------------------------------------------- - -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class MappingQ1; - template struct StaticMappingQ1; - -#if deal_II_dimension != 3 - template class MappingQ1; - template struct StaticMappingQ1; +#if deal_II_dimension <= deal_II_space_dimension + template class MappingQ1; + template class StaticMappingQ1; #endif } diff --git a/deal.II/source/fe/mapping_q1_eulerian.cc b/deal.II/source/fe/mapping_q1_eulerian.cc index f1d14904ca..ee20611d97 100644 --- a/deal.II/source/fe/mapping_q1_eulerian.cc +++ b/deal.II/source/fe/mapping_q1_eulerian.cc @@ -121,9 +121,9 @@ MappingQ1Eulerian::fill_fe_values ( typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector< DerivativeForm<1,dim,spacedim> > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &normal_vectors, CellSimilarity::Similarity &cell_similarity) const { diff --git a/deal.II/source/fe/mapping_q1_eulerian.inst.in b/deal.II/source/fe/mapping_q1_eulerian.inst.in index 3c822d119b..cef3b9ec3d 100644 --- a/deal.II/source/fe/mapping_q1_eulerian.inst.in +++ b/deal.II/source/fe/mapping_q1_eulerian.inst.in @@ -12,19 +12,13 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class MappingQ1Eulerian >; - template class MappingQ1Eulerian >; +#if deal_II_dimension <= deal_II_space_dimension + template class MappingQ1Eulerian, deal_II_space_dimension>; + template class MappingQ1Eulerian, deal_II_space_dimension>; #ifdef DEAL_II_USE_PETSC - template class MappingQ1Eulerian; + template class MappingQ1Eulerian; #endif - -#if deal_II_dimension != 3 - template class MappingQ1Eulerian, deal_II_dimension+1 >; -# ifdef DEAL_II_USE_PETSC - template class MappingQ1Eulerian; -# endif #endif } - diff --git a/deal.II/source/fe/mapping_q_eulerian.cc b/deal.II/source/fe/mapping_q_eulerian.cc index 16231d00d7..ed5625b50f 100644 --- a/deal.II/source/fe/mapping_q_eulerian.cc +++ b/deal.II/source/fe/mapping_q_eulerian.cc @@ -190,9 +190,9 @@ MappingQEulerian::fill_fe_values ( typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, - std::vector > &jacobians, - std::vector > &jacobian_grads, - std::vector > &inverse_jacobians, + std::vector > &jacobians, + std::vector > &jacobian_grads, + std::vector > &inverse_jacobians, std::vector > &normal_vectors, CellSimilarity::Similarity &cell_similarity) const { diff --git a/deal.II/source/fe/mapping_q_eulerian.inst.in b/deal.II/source/fe/mapping_q_eulerian.inst.in index 8d6318728c..1bfedd75b3 100644 --- a/deal.II/source/fe/mapping_q_eulerian.inst.in +++ b/deal.II/source/fe/mapping_q_eulerian.inst.in @@ -11,26 +11,17 @@ // //--------------------------------------------------------------------------- - -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { - template class MappingQEulerian >; -#ifdef DEAL_II_USE_PETSC - template class MappingQEulerian; - template class MappingQEulerian; -#endif - -#if deal_II_dimension != 3 - template class MappingQEulerian, - deal_II_dimension+1>; - +#if deal_II_dimension <= deal_II_space_dimension + template class MappingQEulerian, deal_II_space_dimension>; # ifdef DEAL_II_USE_PETSC template class MappingQEulerian; + PETScWrappers::Vector, deal_II_space_dimension>; template class MappingQEulerian; -# endif - + PETScWrappers::MPI::Vector, deal_II_space_dimension>; +# endif #endif } + diff --git a/deal.II/source/grid/grid_generator.inst.in b/deal.II/source/grid/grid_generator.inst.in index 0ec9986daf..f16f7005fd 100644 --- a/deal.II/source/grid/grid_generator.inst.in +++ b/deal.II/source/grid/grid_generator.inst.in @@ -11,28 +11,42 @@ // //--------------------------------------------------------------------------- +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + template void + GridGenerator::hyper_rectangle ( + Triangulation &, + const Point&, const Point&, + const bool); + + template void + GridGenerator::colorize_hyper_rectangle ( + Triangulation &); + + template void + GridGenerator::hyper_cube ( + Triangulation &, const double, const double); + + template + void + GridGenerator::merge_triangulations + (const Triangulation &triangulation_1, + const Triangulation &triangulation_2, + Triangulation &result); + +#endif + } + for (deal_II_dimension : DIMENSIONS) { - template void - GridGenerator::hyper_rectangle ( - Triangulation &, - const Point&, const Point&, - const bool); - - template void - GridGenerator::colorize_hyper_rectangle ( - Triangulation &); - - template void - GridGenerator::hyper_cube ( - Triangulation &, const double, const double); - + template void GridGenerator::subdivided_hyper_cube ( Triangulation &, const unsigned int, const double, const double); - + template void GridGenerator::subdivided_hyper_rectangle (Triangulation &, @@ -40,7 +54,7 @@ for (deal_II_dimension : DIMENSIONS) const Point&, const Point&, bool); - + template void GridGenerator::subdivided_hyper_rectangle( @@ -49,39 +63,17 @@ for (deal_II_dimension : DIMENSIONS) const Point &, const Point &, const bool ); - - - template - void - GridGenerator::merge_triangulations (const Triangulation &triangulation_1, - const Triangulation &triangulation_2, - Triangulation &result); - -#if deal_II_dimension < 3 - template - void - GridGenerator::merge_triangulations (const Triangulation &triangulation_1, - const Triangulation &triangulation_2, - Triangulation &result); -#endif - + + + + #if deal_II_dimension > 1 template void GridGenerator:: laplace_transformation (Triangulation &, const std::map > &); #endif - -#if deal_II_dimension != 3 - template void - GridGenerator::hyper_cube ( - Triangulation &, const double, const double); - template void - GridGenerator::hyper_rectangle ( - Triangulation &, - const Point&, const Point&, - const bool); - -#endif + + } diff --git a/deal.II/source/grid/grid_out.cc b/deal.II/source/grid/grid_out.cc index 215a5e4ad6..d1c0ce6f80 100644 --- a/deal.II/source/grid/grid_out.cc +++ b/deal.II/source/grid/grid_out.cc @@ -1236,6 +1236,16 @@ unsigned int GridOut::n_boundary_lines (const Triangulation<1,2> &) const return 0; } +unsigned int GridOut::n_boundary_faces (const Triangulation<1,3> &) const +{ + return 0; +} + +unsigned int GridOut::n_boundary_lines (const Triangulation<1,3> &) const +{ + return 0; +} + unsigned int GridOut::n_boundary_lines (const Triangulation<2> &) const { return 0; @@ -1298,6 +1308,13 @@ void GridOut::write_msh_faces (const Triangulation<1,2> &, return; } +void GridOut::write_msh_faces (const Triangulation<1,3> &, + const unsigned int, + std::ostream &) const +{ + return; +} + void GridOut::write_msh_lines (const Triangulation<1> &, const unsigned int, @@ -1314,6 +1331,14 @@ void GridOut::write_msh_lines (const Triangulation<1,2> &, } +void GridOut::write_msh_lines (const Triangulation<1,3> &, + const unsigned int, + std::ostream &) const +{ + return; +} + + void GridOut::write_msh_lines (const Triangulation<2> &, const unsigned int, std::ostream &) const @@ -1412,6 +1437,13 @@ void GridOut::write_ucd_faces (const Triangulation<1,2> &, return; } +void GridOut::write_ucd_faces (const Triangulation<1,3> &, + const unsigned int, + std::ostream &) const +{ + return; +} + void GridOut::write_ucd_lines (const Triangulation<1> &, const unsigned int, std::ostream &) const @@ -1427,6 +1459,14 @@ void GridOut::write_ucd_lines (const Triangulation<1,2> &, } +void GridOut::write_ucd_lines (const Triangulation<1,3> &, + const unsigned int, + std::ostream &) const +{ + return; +} + + void GridOut::write_ucd_lines (const Triangulation<2> &, const unsigned int, std::ostream &) const diff --git a/deal.II/source/grid/grid_out.inst.in b/deal.II/source/grid/grid_out.inst.in index 250bf54245..b716edc980 100644 --- a/deal.II/source/grid/grid_out.inst.in +++ b/deal.II/source/grid/grid_out.inst.in @@ -58,10 +58,15 @@ for (deal_II_dimension : DIMENSIONS) template void GridOut::write_ucd (const Triangulation &, std::ostream &) const; - template void GridOut::write_gnuplot + template void GridOut::write_gnuplot (const Triangulation&, std::ostream&, const Mapping*) const; +#endif +#if deal_II_dimension == 3 + template void GridOut::write_ucd + (const Triangulation<1, 3> &, + std::ostream &) const; #endif } diff --git a/deal.II/source/grid/grid_tools.cc b/deal.II/source/grid/grid_tools.cc index c0046989cc..7dad144693 100644 --- a/deal.II/source/grid/grid_tools.cc +++ b/deal.II/source/grid/grid_tools.cc @@ -779,7 +779,7 @@ namespace GridTools template class Container, int spacedim> - std::pair::active_cell_iterator, Point > + std::pair::active_cell_iterator, Point > find_active_cell_around_point (const Mapping &mapping, const Container &container, const Point &p) @@ -792,7 +792,7 @@ namespace GridTools // max. deviation of 1e-10 double best_distance = 1e-10; int best_level = -1; - std::pair > best_cell; + std::pair > best_cell; // Find closest vertex and determine // all adjacent cells @@ -807,27 +807,35 @@ namespace GridTools for(; cell != endc; ++cell) { - const Point p_cell = mapping.transform_real_to_unit_cell(*cell, p); - - // calculate the infinity norm of - // the distance vector to the unit cell. - const double dist = GeometryInfo::distance_to_unit_cell(p_cell); - - // We compare if the point is inside the - // unit cell (or at least not too far - // outside). If it is, it is also checked - // that the cell has a more refined state - if (dist < best_distance || - (dist == best_distance && (*cell)->level() > best_level)) + try { - best_distance = dist; - best_level = (*cell)->level(); - best_cell = std::make_pair(*cell, p_cell); + const Point p_cell = mapping.transform_real_to_unit_cell(*cell, p); + + // calculate the infinity norm of + // the distance vector to the unit cell. + const double dist = GeometryInfo::distance_to_unit_cell(p_cell); + + // We compare if the point is inside the + // unit cell (or at least not too far + // outside). If it is, it is also checked + // that the cell has a more refined state + if (dist < best_distance || + (dist == best_distance && (*cell)->level() > best_level)) + { + best_distance = dist; + best_level = (*cell)->level(); + best_cell = std::make_pair(*cell, p_cell); + } } + catch (typename MappingQ1::ExcTransformationFailed &) + { +//TODO: Maybe say something + } + } Assert (best_cell.first.state() == IteratorState::valid, - ExcPointNotFound(p)); + ExcPointNotFound(p)); return best_cell; } @@ -835,7 +843,7 @@ namespace GridTools template - std::pair::active_cell_iterator, Point > + std::pair::active_cell_iterator, Point > find_active_cell_around_point (const hp::MappingCollection &mapping, const hp::DoFHandler &container, const Point &p) @@ -848,7 +856,7 @@ namespace GridTools typedef typename hp::DoFHandler::active_cell_iterator cell_iterator; - std::pair > best_cell; + std::pair > best_cell; //If we have only one element in the MappingCollection, //we use find_active_cell_around_point using only one //mapping. @@ -879,7 +887,7 @@ namespace GridTools for(; cell != endc; ++cell) { - const Point p_cell + const Point p_cell = mapping[(*cell)->active_fe_index()].transform_real_to_unit_cell(*cell, p); // calculate the infinity norm of @@ -900,7 +908,7 @@ namespace GridTools } Assert (best_cell.first.state() == IteratorState::valid, - ExcPointNotFound(p)); + ExcPointNotFound(p)); } return best_cell; } @@ -1771,6 +1779,17 @@ namespace GridTools } + + void fix_up_faces (const dealii::Triangulation<1,1>::cell_iterator &, + dealii::internal::int2type<1>, + dealii::internal::int2type<1>) + { + // nothing to do for the faces of + // cells in 1d + } + + + // possibly fix up the faces of // a cell by moving around its // mid-points @@ -1830,28 +1849,14 @@ namespace GridTools } - template - void fix_up_faces (const typename dealii::Triangulation<1,spacedim>::cell_iterator &, - dealii::internal::int2type<1>, - dealii::internal::int2type) - { - // nothing to do for the faces of - // cells in 1d - } - - - void fix_up_faces (const dealii::Triangulation<1,1>::cell_iterator &, - dealii::internal::int2type<1>, - dealii::internal::int2type<1>) - { - // nothing to do for the faces of - // cells in 1d - } + + } } + template typename Triangulation::DistortedCellList diff --git a/deal.II/source/grid/grid_tools.inst.in b/deal.II/source/grid/grid_tools.inst.in index 7f7e2b67df..e9da14bd40 100644 --- a/deal.II/source/grid/grid_tools.inst.in +++ b/deal.II/source/grid/grid_tools.inst.in @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011 by the deal.II authors +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -13,253 +13,166 @@ -for (X : TRIANGULATION_AND_DOFHANDLERS; deal_II_dimension : DIMENSIONS) +for (X : TRIANGULATION_AND_DOFHANDLERS; deal_II_dimension : DIMENSIONS ; deal_II_space_dimension : SPACE_DIMENSIONS) { + +#if deal_II_dimension <= deal_II_space_dimension namespace GridTools \{ template unsigned int find_closest_vertex (const X &, - const Point &); + const Point &); template std::vector find_cells_adjacent_to_vertex(const X &, - const unsigned int); - + const unsigned int); template X::active_cell_iterator find_active_cell_around_point (const X &, - const Point &p); + const Point &p); template std::pair > - find_active_cell_around_point (const Mapping &, - const X &, - const Point &); + find_active_cell_around_point (const Mapping &, + const X &, + const Point &); template std::list > - get_finest_common_cells (const X &mesh_1, - const X &mesh_2); + const X &mesh_2); template bool have_same_coarse_mesh (const X &mesh_1, - const X &mesh_2); + const X &mesh_2); \} + + #endif } -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) { +#if deal_II_dimension <= deal_II_space_dimension namespace GridTools \{ template double - diameter (const Triangulation &); - -#if deal_II_dimension < 3 - template - double - diameter (const Triangulation &); -#endif + diameter + (const Triangulation &); template double - volume (const Triangulation &, - const Mapping &); - -#if deal_II_dimension < 3 + volume + (const Triangulation &, + const Mapping &); + template - double - volume (const Triangulation &, - const Mapping &); -#endif + void delete_unused_vertices (std::vector > &, + std::vector > &, + SubCellData &); template - void delete_unused_vertices (std::vector > &, - std::vector > &, - SubCellData &); + void delete_duplicated_vertices (std::vector > &, + std::vector > &, + SubCellData &, + std::vector &, + double); template - void delete_duplicated_vertices (std::vector > &, - std::vector > &, - SubCellData &, - std::vector &, - double); - - template - void shift (const Point &, - Triangulation &); + void shift (const Point &, + Triangulation &); template void scale (const double, - Triangulation &); + Triangulation &); template - std::pair::active_cell_iterator, Point > - find_active_cell_around_point (const hp::MappingCollection &, - const hp::DoFHandler &, - const Point &); - - template - void - - get_face_connectivity_of_cells (const Triangulation &triangulation, - SparsityPattern &cell_connectivity); - -#if deal_II_dimension < 3 - template - void + void get_face_connectivity_of_cells + (const Triangulation &triangulation, + SparsityPattern &cell_connectivity); - get_face_connectivity_of_cells (const Triangulation &triangulation, - SparsityPattern &cell_connectivity); -#endif template - void - partition_triangulation (const unsigned int, - Triangulation &); - - template - void - partition_triangulation (const unsigned int, - const SparsityPattern &, - Triangulation &); -#if deal_II_dimension < 3 + void partition_triangulation (const unsigned int, + Triangulation &); + template - void - partition_triangulation (const unsigned int, - Triangulation &); + void partition_triangulation (const unsigned int, + const SparsityPattern &, + Triangulation &); template - void - partition_triangulation (const unsigned int, - const SparsityPattern &, - Triangulation &); -#endif + std::pair::active_cell_iterator, + Point > + find_active_cell_around_point + (const hp::MappingCollection &, + const hp::DoFHandler &, + const Point &); + + template - void - - get_subdomain_association (const Triangulation &, - std::vector &); + void get_subdomain_association (const Triangulation &, + std::vector &); template - unsigned int - - count_cells_with_subdomain_association (const Triangulation &, - const types::subdomain_id_t); - - + unsigned int count_cells_with_subdomain_association( + const Triangulation &, + const types::subdomain_id_t); + template double - minimal_cell_diameter (const Triangulation &triangulation); - + minimal_cell_diameter (const Triangulation &triangulation); + template double - maximal_cell_diameter (const Triangulation &triangulation); + maximal_cell_diameter (const Triangulation &triangulation); template void - create_union_triangulation (const Triangulation &triangulation_1, - const Triangulation &triangulation_2, - Triangulation &result); - + create_union_triangulation ( + const Triangulation &triangulation_1, + const Triangulation &triangulation_2, + Triangulation &result); +#if deal_II_dimension == deal_II_space_dimension template - Triangulation::DistortedCellList - - fix_up_distorted_child_cells (const Triangulation::DistortedCellList &distorted_cells, - Triangulation &triangulation); - - - -#if deal_II_dimension != 3 - - template - void delete_unused_vertices (std::vector > &, - std::vector > &, - SubCellData &); - - template - void delete_duplicated_vertices (std::vector > &, - std::vector > &, - SubCellData &, - std::vector &, - double); - - template - void shift (const Point &, - Triangulation &); - - template - void scale (const double, - Triangulation &); - + Triangulation::DistortedCellList + fix_up_distorted_child_cells + (const Triangulation::DistortedCellList &distorted_cells, + Triangulation &triangulation); #endif + + \} +#endif + + } -#if deal_II_dimension < 3 - - template - std::list::cell_iterator, Triangulation::cell_iterator> > - - get_finest_common_cells (const Triangulation &mesh_1, - const Triangulation &mesh_2); - - template - std::list::cell_iterator, DoFHandler::cell_iterator> > - - get_finest_common_cells (const DoFHandler &mesh_1, - const DoFHandler &mesh_2); - - template - std::list::cell_iterator, hp::DoFHandler::cell_iterator> > - - get_finest_common_cells (const hp::DoFHandler &mesh_1, - const hp::DoFHandler &mesh_2); - template - std::list::cell_iterator, MGDoFHandler::cell_iterator> > - get_finest_common_cells (const MGDoFHandler &mesh_1, - const MGDoFHandler &mesh_2); -#endif - \} - } -// TODO: Merge this and the next block by introducing a TRIA_AND_DOFHANDLER_TEMPLATES list. -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS; Container : TRIANGULATION_AND_DOFHANDLER_TEMPLATES) { - namespace GridTools \{ +#if deal_II_dimension <= deal_II_space_dimension #if deal_II_dimension != 1 - template - std::map< Triangulation::cell_iterator, - Triangulation::face_iterator> - extract_boundary_mesh (const Triangulation &volume_mesh, - Triangulation &surface_mesh, - const std::set &boundary_ids); -#endif - \} - } - -for (deal_II_dimension : DIMENSIONS; Container : DOFHANDLER_TEMPLATES) - { namespace GridTools \{ -#if deal_II_dimension != 1 - template - std::map< Container::cell_iterator, - Container::face_iterator> - extract_boundary_mesh (const Container &volume_mesh, - Container &surface_mesh, - const std::set &boundary_ids); + template + std::map< Container::cell_iterator, + Container::face_iterator> + extract_boundary_mesh (const Container &mesh, + Container &boundary_mesh, + const std::set &boundary_ids); + \} #endif - \} +#endif + } diff --git a/deal.II/source/grid/intergrid_map.cc b/deal.II/source/grid/intergrid_map.cc index 77974e7cc1..75ae2750a0 100644 --- a/deal.II/source/grid/intergrid_map.cc +++ b/deal.II/source/grid/intergrid_map.cc @@ -47,9 +47,9 @@ namespace // specialization for grid==tria - template + template unsigned int - get_n_levels (const Triangulation &grid) + get_n_levels (const Triangulation &grid) { // if GridClass==Triangulation, then // we can ask directly. diff --git a/deal.II/source/grid/intergrid_map.inst.in b/deal.II/source/grid/intergrid_map.inst.in index fec730fd1d..cd766fd4f4 100644 --- a/deal.II/source/grid/intergrid_map.inst.in +++ b/deal.II/source/grid/intergrid_map.inst.in @@ -12,8 +12,9 @@ //--------------------------------------------------------------------------- - -for (X : TRIANGULATION_AND_DOFHANDLERS; deal_II_dimension : DIMENSIONS) -{ - template class InterGridMap; -} +for (X : TRIANGULATION_AND_DOFHANDLERS; deal_II_dimension : DIMENSIONS ; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + template class InterGridMap; +#endif + } diff --git a/deal.II/source/grid/tria.cc b/deal.II/source/grid/tria.cc index f7d2484ba0..30573328a8 100644 --- a/deal.II/source/grid/tria.cc +++ b/deal.II/source/grid/tria.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -9402,12 +9402,6 @@ Triangulation (const MeshSmoothing smooth_grid, check_for_distorted_cells(check_for_distorted_cells), vertex_to_boundary_id_map_1d (0) { - //Set default value at types::internal_face_boundary_id. - //Because this value is reserved for inner faces, we - //will never set this one to anything else. - //TODO This line vanishes, if we resolve the TODO in the get_boundary function - boundary[types::internal_face_boundary_id] = &straight_boundary; - if (dim == 1) vertex_to_boundary_id_map_1d = new std::map(); @@ -9517,14 +9511,8 @@ Triangulation::get_boundary (const types::boundary_id_t number) c { //if we have not found an entry //connected with number, we return - //straight_boundary, stored at types::internal_face_boundary_id - it = boundary.find(types::internal_face_boundary_id); - - return *(it->second); - // TODO: This should get returned, atm there are some errors - // connected to Boundary<1,3>. If this issue is resolved, the TODOs in - // the constructor and clear_despite_subscriptions can also get resolved. - //return straight_boundary; + //straight_boundary + return straight_boundary; } } @@ -12105,7 +12093,7 @@ unsigned int Triangulation::n_lines () const } - +//TODO: Merge the following 6 functions somehow template <> unsigned int Triangulation<1,1>::n_raw_lines (const unsigned int level) const { @@ -12139,6 +12127,21 @@ unsigned int Triangulation<1,2>::n_raw_lines () const } +template <> +unsigned int Triangulation<1,3>::n_raw_lines (const unsigned int level) const +{ + Assert(level < n_levels(), ExcIndexRange(level,0,n_levels())); + return levels[level]->cells.cells.size(); +} + +template <> +unsigned int Triangulation<1,3>::n_raw_lines () const +{ + Assert(false, ExcNotImplemented()); + return 0; +} + + template unsigned int Triangulation::n_raw_lines (const unsigned int) const @@ -12225,6 +12228,8 @@ unsigned int Triangulation<1,1>::n_active_quads () const } + + template <> unsigned int Triangulation<1,2>::n_quads () const { @@ -12267,6 +12272,49 @@ unsigned int Triangulation<1,2>::n_active_quads () const } +template <> +unsigned int Triangulation<1,3>::n_quads () const +{ + return 0; +} + + +template <> +unsigned int Triangulation<1,3>::n_quads (const unsigned int) const +{ + return 0; +} + + +template <> +unsigned int Triangulation<1,3>::n_raw_quads (const unsigned int) const +{ + return 0; +} + + +template <> +unsigned int Triangulation<1,3>::n_raw_hexs (const unsigned int) const +{ + return 0; +} + + +template <> +unsigned int Triangulation<1,3>::n_active_quads (const unsigned int) const +{ + return 0; +} + + +template <> +unsigned int Triangulation<1,3>::n_active_quads () const +{ + return 0; +} + + + template unsigned int Triangulation::n_quads () const { @@ -12467,6 +12515,12 @@ unsigned int Triangulation<1,2>::max_adjacent_cells () const } +template <> +unsigned int Triangulation<1,3>::max_adjacent_cells () const +{ + return 2; +} + template unsigned int Triangulation::max_adjacent_cells () const @@ -12569,9 +12623,6 @@ Triangulation::clear_despite_subscriptions() vertices_used.clear (); boundary.clear(); - //TODO: This is connected with the TODO in get_boundary and vanishes, if - //this TODO has been dealt with. - boundary[types::internal_face_boundary_id] = &straight_boundary; number_cache = internal::Triangulation::NumberCache(); } @@ -12963,7 +13014,7 @@ void Triangulation::fix_coarsen_flags () } - +//TODO: merge the following 3 functions since they are the same template <> bool Triangulation<1,1>::prepare_coarsening_and_refinement () { @@ -13004,6 +13055,27 @@ bool Triangulation<1,2>::prepare_coarsening_and_refinement () } +template <> +bool Triangulation<1,3>::prepare_coarsening_and_refinement () +{ + // save the flags to determine + // whether something was changed in + // the course of this function + std::vector flags_before; + save_coarsen_flags (flags_before); + + // do nothing in 1d, except setting + // the coarsening flags correctly + fix_coarsen_flags (); + + std::vector flags_after; + save_coarsen_flags (flags_after); + + return (flags_before != flags_after); +} + + + namespace { @@ -14657,9 +14729,9 @@ Triangulation::remove_refinement_listener (RefinementListener &li // TriaAccessor<1,1,3> uses it. We could instead instantiate // Triangulation<1,3>, but that requires a lot more specializations of // functions that currently only exist for <1,1> and <1,2> -template -const Boundary<1,3> & -Triangulation<1,3>::get_boundary (const types::boundary_id_t number) const; +// template +// const Boundary<1,3> & +// Triangulation<1,3>::get_boundary (const types::boundary_id_t number) const; DEAL_II_NAMESPACE_CLOSE diff --git a/deal.II/source/grid/tria.inst.in b/deal.II/source/grid/tria.inst.in index 6d33e35439..16a72fdfbe 100644 --- a/deal.II/source/grid/tria.inst.in +++ b/deal.II/source/grid/tria.inst.in @@ -12,12 +12,9 @@ //--------------------------------------------------------------------------- - -for (deal_II_dimension : DIMENSIONS) -{ - template class Triangulation; - -#if deal_II_dimension < 3 - template class Triangulation; +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + template class Triangulation; #endif -} + } diff --git a/deal.II/source/grid/tria_accessor.cc b/deal.II/source/grid/tria_accessor.cc index 49bc93cc0e..a55a8dd7de 100644 --- a/deal.II/source/grid/tria_accessor.cc +++ b/deal.II/source/grid/tria_accessor.cc @@ -1084,13 +1084,6 @@ bool CellAccessor<1>::point_inside (const Point<1> &p) const -template <> -bool CellAccessor<1,2>::point_inside (const Point<2> &) const -{ - Assert (false, ExcNotImplemented()); - return 0; -} - @@ -1153,12 +1146,7 @@ bool CellAccessor<2>::point_inside (const Point<2> &p) const } -template <> -bool CellAccessor<2,3>::point_inside (const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return 0; -} + @@ -1208,8 +1196,48 @@ bool CellAccessor<3>::point_inside (const Point<3> &p) const + /*------------------------ Functions: CellAccessor -----------------------*/ + // For codim>0 we proceed as follows: + // 1) project point onto manifold and + // 2) transform to the unit cell with a Q1 mapping + // 3) then check if inside unit cell +template +template +bool CellAccessor:: +point_inside_codim(const Point &p) const +{ + const TriaRawIterator< CellAccessor > cell_iterator (*this); + const Point< dim_ > p_unit = + StaticMappingQ1::mapping.transform_real_to_unit_cell(cell_iterator, p); + + return GeometryInfo< dim_ >::is_inside_unit_cell(p_unit); + +} + + + +template <> +bool CellAccessor<1,2>::point_inside (const Point<2> &p) const +{ + return point_inside_codim<1,2>(p); +} + + +template <> +bool CellAccessor<1,3>::point_inside (const Point<3> &p) const +{ + return point_inside_codim<1,3>(p); +} + + +template <> +bool CellAccessor<2,3>::point_inside (const Point<3> &p) const +{ + return point_inside_codim<2,3>(p); +} + template diff --git a/deal.II/source/grid/tria_accessor.inst.in b/deal.II/source/grid/tria_accessor.inst.in index 7c4aba537f..1aed96c4f7 100644 --- a/deal.II/source/grid/tria_accessor.inst.in +++ b/deal.II/source/grid/tria_accessor.inst.in @@ -54,6 +54,7 @@ for (deal_II_dimension : DIMENSIONS) template class TriaRawIterator >; template class TriaIterator >; template class TriaActiveIterator >; + template class CellAccessor<1, 3>; #endif #if deal_II_dimension == 1 @@ -62,6 +63,8 @@ for (deal_II_dimension : DIMENSIONS) template class TriaAccessor<1,deal_II_dimension,2>; template class TriaAccessor<1,deal_II_dimension,3>; + + #endif #if deal_II_dimension == 2 template class TriaAccessorBase<1,deal_II_dimension,3>; @@ -90,4 +93,4 @@ for (deal_II_dimension : DIMENSIONS) #endif } - + diff --git a/deal.II/source/grid/tria_boundary.cc b/deal.II/source/grid/tria_boundary.cc index 02617daa4e..a76f67f6c1 100644 --- a/deal.II/source/grid/tria_boundary.cc +++ b/deal.II/source/grid/tria_boundary.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -150,6 +150,27 @@ get_intermediate_points_on_face (const Triangulation<1,2>::face_iterator &, +template <> +Point<3> +Boundary<1,3>:: +get_new_point_on_face (const Triangulation<1,3>::face_iterator &) const +{ + Assert (false, ExcImpossibleInDim(1)); + return Point<3>(); +} + + +template <> +void +Boundary<1,3>:: +get_intermediate_points_on_face (const Triangulation<1,3>::face_iterator &, + std::vector > &) const +{ + Assert (false, ExcImpossibleInDim(1)); +} + + + template Tensor<1,spacedim> @@ -507,6 +528,16 @@ normal_vector (const Triangulation<1,2>::face_iterator &, } +template <> +Tensor<1,3> +StraightBoundary<1,3>:: +normal_vector (const Triangulation<1,3>::face_iterator &, + const Point<3> &) const +{ + Assert (false, ExcNotImplemented()); + return Tensor<1,3>(); +} + namespace internal { @@ -655,6 +686,16 @@ get_normals_at_vertices (const Triangulation<1,2>::face_iterator &, } +template <> +void +StraightBoundary<1,3>:: +get_normals_at_vertices (const Triangulation<1,3>::face_iterator &, + Boundary<1,3>::FaceVertexNormals &) const +{ + Assert (false, ExcNotImplemented()); +} + + template <> void @@ -868,6 +909,18 @@ namespace internal + + +template <> +Point<3> +StraightBoundary<1,3>:: +project_to_surface (const Triangulation<1, 3>::quad_iterator &, + const Point<3> &y) const +{ + return y; +} + +//TODO[SP]: This is just a horrible way out to make it compile in codim 2. template Point StraightBoundary:: diff --git a/deal.II/source/grid/tria_boundary.inst.in b/deal.II/source/grid/tria_boundary.inst.in index d404a8514d..7d3392dd1d 100644 --- a/deal.II/source/grid/tria_boundary.inst.in +++ b/deal.II/source/grid/tria_boundary.inst.in @@ -11,15 +11,14 @@ // //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) - { - template class Boundary; - template class StraightBoundary; -#if deal_II_dimension == 1 || deal_II_dimension == 2 - template class Boundary; - template class StraightBoundary; +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + template class Boundary; + template class StraightBoundary; #endif } + diff --git a/deal.II/source/grid/tria_boundary_lib.cc b/deal.II/source/grid/tria_boundary_lib.cc index 35cff4ab4d..887a0ab14f 100644 --- a/deal.II/source/grid/tria_boundary_lib.cc +++ b/deal.II/source/grid/tria_boundary_lib.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 by the deal.II authors +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -25,20 +25,20 @@ DEAL_II_NAMESPACE_OPEN -template -CylinderBoundary::CylinderBoundary (const double radius, +template +CylinderBoundary::CylinderBoundary (const double radius, const unsigned int axis) : radius(radius), direction (get_axis_vector (axis)), - point_on_axis (Point()) + point_on_axis (Point()) {} -template -CylinderBoundary::CylinderBoundary (const double radius, - const Point direction, - const Point point_on_axis) +template +CylinderBoundary::CylinderBoundary (const double radius, + const Point direction, + const Point point_on_axis) : radius(radius), direction (direction / direction.norm()), @@ -46,26 +46,26 @@ CylinderBoundary::CylinderBoundary (const double radius, {} -template -Point -CylinderBoundary::get_axis_vector (const unsigned int axis) +template +Point +CylinderBoundary::get_axis_vector (const unsigned int axis) { Assert (axis < dim, ExcIndexRange (axis, 0, dim)); - Point axis_vector; + Point axis_vector; axis_vector[axis] = 1; return axis_vector; } -template -Point -CylinderBoundary:: -get_new_point_on_line (const typename Triangulation::line_iterator &line) const +template +Point +CylinderBoundary:: +get_new_point_on_line (const typename Triangulation::line_iterator &line) const { // compute a proposed new point - const Point middle = StraightBoundary::get_new_point_on_line (line); + const Point middle = StraightBoundary::get_new_point_on_line (line); // we then have to project this // point out to the given radius @@ -73,7 +73,7 @@ get_new_point_on_line (const typename Triangulation::line_iterator &line) c // have to take into account the // offset point_on_axis and the // direction of the axis - const Point vector_from_axis = (middle-point_on_axis) - + const Point vector_from_axis = (middle-point_on_axis) - ((middle-point_on_axis) * direction) * direction; // scale it to the desired length // and put everything back @@ -97,8 +97,9 @@ get_new_point_on_quad (const Triangulation<3>::quad_iterator &quad) const const Point<3> middle = StraightBoundary<3>::get_new_point_on_quad (quad); // same algorithm as above - const unsigned int dim = 3; - const Point vector_from_axis = (middle-point_on_axis) - + const unsigned int spacedim = 3; + + const Point vector_from_axis = (middle-point_on_axis) - ((middle-point_on_axis) * direction) * direction; if (vector_from_axis.norm() <= 1e-10 * middle.norm()) return middle; @@ -108,24 +109,42 @@ get_new_point_on_quad (const Triangulation<3>::quad_iterator &quad) const point_on_axis); } +template<> +Point<3> +CylinderBoundary<2,3>:: +get_new_point_on_quad (const Triangulation<2,3>::quad_iterator &quad) const +{ + const Point<3> middle = StraightBoundary<2,3>::get_new_point_on_quad (quad); + + // same algorithm as above + const unsigned int spacedim = 3; + const Point vector_from_axis = (middle-point_on_axis) - + ((middle-point_on_axis) * direction) * direction; + if (vector_from_axis.norm() <= 1e-10 * middle.norm()) + return middle; + else + return (vector_from_axis / vector_from_axis.norm() * radius + + ((middle-point_on_axis) * direction) * direction + + point_on_axis); +} -template -Point -CylinderBoundary:: -get_new_point_on_quad (const typename Triangulation::quad_iterator &) const +template +Point +CylinderBoundary:: +get_new_point_on_quad (const typename Triangulation::quad_iterator &) const { Assert (false, ExcImpossibleInDim(dim)); - return Point(); + return Point(); } -template +template void -CylinderBoundary::get_intermediate_points_on_line ( - const typename Triangulation::line_iterator &line, - std::vector > &points) const +CylinderBoundary::get_intermediate_points_on_line ( + const typename Triangulation::line_iterator &line, + std::vector > &points) const { if (points.size()==1) points[0]=get_new_point_on_line(line); @@ -134,12 +153,12 @@ CylinderBoundary::get_intermediate_points_on_line ( } -template +template void -CylinderBoundary::get_intermediate_points_between_points ( - const Point &v0, - const Point &v1, - std::vector > &points) const +CylinderBoundary::get_intermediate_points_between_points ( + const Point &v0, + const Point &v1, + std::vector > &points) const { const unsigned int n=points.size(); Assert(n>0, ExcInternalError()); @@ -147,13 +166,13 @@ CylinderBoundary::get_intermediate_points_between_points ( // Do a simple linear interpolation // followed by projection, using // the same algorithm as above - const Point ds = (v1-v0) / (n+1); + const Point ds = (v1-v0) / (n+1); for (unsigned int i=0; i middle = v0 + (i+1)*ds; + const Point middle = v0 + (i+1)*ds; - const Point vector_from_axis = (middle-point_on_axis) - + const Point vector_from_axis = (middle-point_on_axis) - ((middle-point_on_axis) * direction) * direction; if (vector_from_axis.norm() <= 1e-10 * middle.norm()) points[i] = middle; @@ -198,11 +217,11 @@ CylinderBoundary<3>::get_intermediate_points_on_quad ( -template +template void -CylinderBoundary::get_intermediate_points_on_quad ( - const typename Triangulation::quad_iterator &, - std::vector > &) const +CylinderBoundary::get_intermediate_points_on_quad ( + const typename Triangulation::quad_iterator &, + std::vector > &) const { Assert (false, ExcImpossibleInDim(dim)); } @@ -221,17 +240,18 @@ get_normals_at_vertices (const Triangulation<1>::face_iterator &, -template + +template void -CylinderBoundary:: -get_normals_at_vertices (const typename Triangulation::face_iterator &face, - typename Boundary::FaceVertexNormals &face_vertex_normals) const +CylinderBoundary:: +get_normals_at_vertices (const typename Triangulation::face_iterator &face, + typename Boundary::FaceVertexNormals &face_vertex_normals) const { for (unsigned int v=0; v::vertices_per_face; ++v) { - const Point vertex = face->vertex(v); + const Point vertex = face->vertex(v); - const Point vector_from_axis = (vertex-point_on_axis) - + const Point vector_from_axis = (vertex-point_on_axis) - ((vertex-point_on_axis) * direction) * direction; face_vertex_normals[v] = (vector_from_axis / vector_from_axis.norm()); @@ -240,9 +260,9 @@ get_normals_at_vertices (const typename Triangulation::face_iterator &face, -template +template double -CylinderBoundary::get_radius () const +CylinderBoundary::get_radius () const { return radius; } diff --git a/deal.II/source/grid/tria_boundary_lib.inst.in b/deal.II/source/grid/tria_boundary_lib.inst.in index 79b58d4f2f..e175f58d33 100644 --- a/deal.II/source/grid/tria_boundary_lib.inst.in +++ b/deal.II/source/grid/tria_boundary_lib.inst.in @@ -22,6 +22,9 @@ for (deal_II_dimension : DIMENSIONS) #if deal_II_dimension != 3 template class HyperBallBoundary; +#endif +#if deal_II_dimension == 3 + template class CylinderBoundary; #endif } diff --git a/deal.II/source/hp/dof_handler.cc b/deal.II/source/hp/dof_handler.cc index f1c819d171..e3ba39d828 100644 --- a/deal.II/source/hp/dof_handler.cc +++ b/deal.II/source/hp/dof_handler.cc @@ -2804,6 +2804,27 @@ namespace hp } +template <> + unsigned int DoFHandler<1,3>::n_boundary_dofs () const + { + Assert(false,ExcNotImplemented()); + return 0; + } + + template <> + unsigned int DoFHandler<1,3>::n_boundary_dofs (const FunctionMap &) const + { + Assert(false,ExcNotImplemented()); + return 0; + } + + template <> + unsigned int DoFHandler<1,3>::n_boundary_dofs (const std::set &) const + { + Assert(false,ExcNotImplemented()); + return 0; + } + template unsigned int DoFHandler::n_boundary_dofs () const @@ -3091,6 +3112,11 @@ namespace hp compute_line_dof_identities (std::vector &) const {} + template <> + void + DoFHandler<1,3>:: + compute_line_dof_identities (std::vector &) const + {} template @@ -3320,7 +3346,11 @@ namespace hp compute_quad_dof_identities (std::vector &) const {} - + template <> + void + DoFHandler<1,3>:: + compute_quad_dof_identities (std::vector &) const + {} template <> void @@ -3996,7 +4026,34 @@ namespace hp } +template <> + void DoFHandler<1,3>::pre_refinement_action () + { + create_active_fe_table (); + + // Remember if the cells have already + // children. That will make the transfer + // of the active_fe_index to the finer + // levels easier. + Assert (has_children.size () == 0, ExcInternalError ()); + for (unsigned int i=0; in_raw_lines(i); + std::vector *has_children_level = + new std::vector (lines_on_level); + + // Check for each cell, if it has children. + std::transform (tria->levels[i]->cells.children.begin (), + tria->levels[i]->cells.children.end (), + has_children_level->begin (), + std::bind2nd (std::not_equal_to(), -1)); + + has_children.push_back (has_children_level); + } + } + + template void DoFHandler::post_refinement_action () diff --git a/deal.II/source/hp/dof_handler.inst.in b/deal.II/source/hp/dof_handler.inst.in index 3443bdff2c..7759611be3 100644 --- a/deal.II/source/hp/dof_handler.inst.in +++ b/deal.II/source/hp/dof_handler.inst.in @@ -20,5 +20,9 @@ for (deal_II_dimension : DIMENSIONS) #if deal_II_dimension != 3 template class DoFHandler; #endif + +#if deal_II_dimension == 3 + template class DoFHandler<1, 3>; +#endif \} } diff --git a/deal.II/source/hp/fe_collection.inst.in b/deal.II/source/hp/fe_collection.inst.in index 43909314e9..d8dabcc8bd 100644 --- a/deal.II/source/hp/fe_collection.inst.in +++ b/deal.II/source/hp/fe_collection.inst.in @@ -19,6 +19,9 @@ for (deal_II_dimension : DIMENSIONS) #if deal_II_dimension != 3 template class FECollection; +#endif +#if deal_II_dimension == 3 + template class FECollection<1,3>; #endif \} } diff --git a/deal.II/source/hp/fe_values.inst.in b/deal.II/source/hp/fe_values.inst.in index 4ebc684035..224b43ca48 100644 --- a/deal.II/source/hp/fe_values.inst.in +++ b/deal.II/source/hp/fe_values.inst.in @@ -57,4 +57,27 @@ namespace hp template class FESubfaceValues; \} #endif + +#if deal_II_dimension == 3 + +namespace internal +\{ + namespace hp + \{ + template class FEValuesBase<1,1, + dealii::FEValues<1,3> >; + template class FEValuesBase<1,1-1, + dealii::FEFaceValues<1,3> >; + template class FEValuesBase<1,1-1, + dealii::FESubfaceValues<1,3> >; + \} +\} + +namespace hp +\{ + template class FEValues<1, 3>; + template class FEFaceValues<1, 3>; + template class FESubfaceValues<1, 3>; +\} +#endif } diff --git a/deal.II/source/hp/mapping_collection.inst.in b/deal.II/source/hp/mapping_collection.inst.in index 6b76bab2d7..43d2362466 100644 --- a/deal.II/source/hp/mapping_collection.inst.in +++ b/deal.II/source/hp/mapping_collection.inst.in @@ -22,5 +22,10 @@ for (deal_II_dimension : DIMENSIONS) template class MappingCollection; template struct StaticMappingQ1; #endif + +#if deal_II_dimension == 3 + template class MappingCollection<1,3>; + template struct StaticMappingQ1<1,3>; +#endif \} } diff --git a/deal.II/source/multigrid/mg_dof_accessor.inst.in b/deal.II/source/multigrid/mg_dof_accessor.inst.in index c218e046b9..8b8e1004ad 100644 --- a/deal.II/source/multigrid/mg_dof_accessor.inst.in +++ b/deal.II/source/multigrid/mg_dof_accessor.inst.in @@ -84,17 +84,22 @@ for (deal_II_dimension : DIMENSIONS) #if deal_II_dimension == 1 template class MGDoFAccessor<0, 1, 1>; template class MGDoFAccessor<0, 1, 2>; - + template class MGDoFAccessor<0, 1, 3>; + template class MGDoFAccessor<1, 1, 1>; template class MGDoFAccessor<1, 1, 2>; + template class MGDoFAccessor<1, 1, 3>; template class MGDoFCellAccessor<1>; template class MGDoFCellAccessor<1,2>; + template class MGDoFCellAccessor<1,3>; template MGDoFAccessor<0, 1, 1>::MGDoFAccessor (const MGDoFCellAccessor<1, 1> &); template MGDoFAccessor<0, 1, 1>::MGDoFAccessor (const InvalidAccessor<2, 1, 1> &); template MGDoFAccessor<0, 1, 2>::MGDoFAccessor (const MGDoFCellAccessor<1, 2> &); template MGDoFAccessor<0, 1, 2>::MGDoFAccessor (const InvalidAccessor<2, 1, 2> &); + template MGDoFAccessor<0, 1, 3>::MGDoFAccessor (const MGDoFCellAccessor<1, 3> &); + template MGDoFAccessor<0, 1, 3>::MGDoFAccessor (const InvalidAccessor<2, 1, 3> &); template class TriaRawIterator >; template class TriaIterator >; diff --git a/deal.II/source/multigrid/mg_dof_handler.inst.in b/deal.II/source/multigrid/mg_dof_handler.inst.in index f6aad8cb83..1a3b374b43 100644 --- a/deal.II/source/multigrid/mg_dof_handler.inst.in +++ b/deal.II/source/multigrid/mg_dof_handler.inst.in @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -20,6 +20,9 @@ template class MGDoFHandler; template class MGDoFHandler; #endif +#if deal_II_dimension==3 +template class MGDoFHandler<1,3>; +#endif template unsigned int @@ -39,6 +42,18 @@ get_dof_index<1> (const unsigned int obj_level, const unsigned int local_index) const; #endif +#if deal_II_dimension == 3 +template +unsigned int +MGDoFHandler<1,3>:: +get_dof_index<1> (const unsigned int obj_level, + const unsigned int obj_index, + const unsigned int fe_index, + const unsigned int local_index) const; +#endif + + + #if deal_II_dimension >= 2 template unsigned int @@ -58,6 +73,8 @@ get_dof_index<2> (const unsigned int obj_level, const unsigned int local_index) const; #endif + + #if deal_II_dimension >= 3 template unsigned int @@ -89,6 +106,17 @@ set_dof_index<1> (const unsigned int obj_level, const unsigned int global_index) const; #endif +#if deal_II_dimension == 3 +template +void +MGDoFHandler<1,3>:: +set_dof_index<1> (const unsigned int obj_level, + const unsigned int obj_index, + const unsigned int fe_index, + const unsigned int local_index, + const unsigned int global_index) const; +#endif + #if deal_II_dimension >= 2 template void @@ -110,6 +138,7 @@ set_dof_index<2> (const unsigned int obj_level, const unsigned int global_index) const; #endif + #if deal_II_dimension >= 3 template void diff --git a/deal.II/source/multigrid/mg_tools.inst.in b/deal.II/source/multigrid/mg_tools.inst.in index 18b01e5958..b4d74691ff 100644 --- a/deal.II/source/multigrid/mg_tools.inst.in +++ b/deal.II/source/multigrid/mg_tools.inst.in @@ -12,17 +12,20 @@ //--------------------------------------------------------------------------- -for (PATTERN : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS) -{ - namespace MGTools +for (PATTERN : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS; + deal_II_space_dimension: SPACE_DIMENSIONS) + { + namespace MGTools \{ - template void - make_sparsity_pattern ( - const MGDoFHandler &, - PATTERN &, - const unsigned int); - +#if deal_II_dimension <= deal_II_space_dimension + template void + make_sparsity_pattern ( + const MGDoFHandler &, + PATTERN &, + const unsigned int); +#endif +#if deal_II_dimension == deal_II_space_dimension template void make_flux_sparsity_pattern ( const MGDoFHandler &, @@ -51,6 +54,7 @@ for (PATTERN : SPARSITY_PATTERNS; deal_II_dimension : DIMENSIONS) PATTERN &, const unsigned int, const Table<2,DoFTools::Coupling>&); +#endif #endif \} } @@ -116,6 +120,12 @@ for (deal_II_dimension : DIMENSIONS) const MGDoFHandler&, std::vector >&, std::vector); #endif + +#if deal_II_dimension == 3 + template void count_dofs_per_block<1,3> ( + const MGDoFHandler<1,3>&, + std::vector >&, std::vector); +#endif \} } diff --git a/deal.II/source/numerics/data_out.inst.in b/deal.II/source/numerics/data_out.inst.in index 4121cc7704..5daa01355f 100644 --- a/deal.II/source/numerics/data_out.inst.in +++ b/deal.II/source/numerics/data_out.inst.in @@ -99,6 +99,31 @@ for (VEC : SERIAL_VECTORS; DH : DOFHANDLER_TEMPLATES; deal_II_dimension : DIMENS const DataPostprocessor::space_dimension> &); #endif + + +// codim 2 + + #if deal_II_dimension == 3 + template void + DataOut_DoFData,1,3>:: + add_data_vector (const VEC &, + const std::string &, + const DataVectorType, + const std::vector &); + + template void + DataOut_DoFData,1,3>:: + add_data_vector (const VEC &, + const std::vector &, + const DataVectorType, + const std::vector &); + + template void + DataOut_DoFData,1,3>:: + add_data_vector (const VEC &, + const DataPostprocessor::space_dimension> &); + #endif + } @@ -213,4 +238,11 @@ for (DH : DOFHANDLER_TEMPLATES; deal_II_dimension : DIMENSIONS) #if deal_II_dimension < 3 template class DataOut >; #endif + + #if deal_II_dimension == 3 + template class DataOut_DoFData,1,3>; + template class DataOut_DoFData,1,3>; + template class DataOut<1, DH<1,3> >; + #endif + } diff --git a/deal.II/source/numerics/matrices.cc b/deal.II/source/numerics/matrices.cc index 1177ef58a8..8e799a6547 100644 --- a/deal.II/source/numerics/matrices.cc +++ b/deal.II/source/numerics/matrices.cc @@ -1101,7 +1101,27 @@ namespace MatrixCreator { Assert(false,ExcNotImplemented()); } + + + + template <> + void + create_boundary_mass_matrix_1<1,3> (std_cxx1x::tuple &, + const DoFHandler<1,3> &, + const Quadrature<0> & > , + SparseMatrix &, + const FunctionMap<3>::type &, + Vector &, + std::vector &, + const Function<3> * const , + const std::vector &, + const MatrixCreator::internal::IteratorRange > , + Threads::ThreadMutex &) + { + Assert(false,ExcNotImplemented()); + } } + diff --git a/deal.II/source/numerics/matrices.inst.in b/deal.II/source/numerics/matrices.inst.in index c6f007188b..7ce29a90dc 100644 --- a/deal.II/source/numerics/matrices.inst.in +++ b/deal.II/source/numerics/matrices.inst.in @@ -10,441 +10,272 @@ // further information on this license. // //--------------------------------------------------------------------------- +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension -for (deal_II_dimension : DIMENSIONS) -{ // non-hp version of create_mass_matrix -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const Mapping &mapping, + const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const Mapping &mapping, + const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + + + template + void MatrixCreator::create_mass_matrix + (const Mapping &mapping, + const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const Mapping &mapping, + const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + + template + void MatrixCreator::create_boundary_mass_matrix + (const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const FunctionMap::type &rhs, + Vector &rhs_vector, + std::vector &dof_to_boundary_mapping, + const Function * const a, + std::vector); + + template + void MatrixCreator::create_boundary_mass_matrix + (const Mapping &, + const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const FunctionMap::type &rhs, + Vector &rhs_vector, + std::vector &dof_to_boundary_mapping, + const Function * const a, + std::vector); -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); - -// hp versions of functions -template -void MatrixCreator::create_mass_matrix -(const hp::MappingCollection &mapping, - const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const hp::MappingCollection &mapping, - const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const hp::MappingCollection &mapping, - const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const hp::MappingCollection &mapping, - const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); +#endif + } -#if deal_II_dimension != 1 +//TODO[SP]: replace by +// where applicable and move to codimension cases above also when applicable +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension == deal_II_space_dimension -template -void MatrixCreator::create_boundary_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const FunctionMap::type &rhs, - Vector &rhs_vector, - std::vector &dof_to_boundary_mapping, - const Function * const a, - std::vector); +// hp versions of functions + template + void MatrixCreator::create_mass_matrix + (const hp::MappingCollection &mapping, + const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const hp::MappingCollection &mapping, + const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + + + template + void MatrixCreator::create_mass_matrix + (const hp::MappingCollection &mapping, + const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const hp::MappingCollection &mapping, + const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + template + void MatrixCreator::create_mass_matrix + (const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); -template -void MatrixCreator::create_boundary_mass_matrix -(const Mapping &, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const FunctionMap::type &rhs, - Vector &rhs_vector, - std::vector &dof_to_boundary_mapping, - const Function * const a, - std::vector); -template -void -MatrixCreator::create_boundary_mass_matrix -(const hp::MappingCollection&, - const hp::DoFHandler&, - const hp::QCollection&, - SparseMatrix&, - const FunctionMap::type&, - Vector&, - std::vector&, - const Function * const, - std::vector); +#if deal_II_dimension != 1 -template -void MatrixCreator::create_boundary_mass_matrix -(const hp::DoFHandler&, - const hp::QCollection&, - SparseMatrix&, - const FunctionMap::type&, - Vector&, - std::vector&, - const Function * const, - std::vector); + + + template + void + MatrixCreator::create_boundary_mass_matrix + (const hp::MappingCollection&, + const hp::DoFHandler&, + const hp::QCollection&, + SparseMatrix&, + const FunctionMap::type&, + Vector&, + std::vector&, + const Function * const, + std::vector); + + template + void MatrixCreator::create_boundary_mass_matrix + (const hp::DoFHandler&, + const hp::QCollection&, + SparseMatrix&, + const FunctionMap::type&, + Vector&, + std::vector&, + const Function * const, + std::vector); #endif - + // non-hp versions of create_laplace_matrix -template -void MatrixCreator::create_laplace_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_laplace_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_laplace_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_laplace_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); + template + void MatrixCreator::create_laplace_matrix + (const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_laplace_matrix + (const Mapping &mapping, + const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_laplace_matrix + (const Mapping &mapping, + const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + template + void MatrixCreator::create_laplace_matrix + (const DoFHandler &dof, + const Quadrature &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); // hp versions of create_laplace_matrix -template -void MatrixCreator::create_laplace_matrix -(const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_laplace_matrix -(const hp::MappingCollection &mapping, - const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_laplace_matrix -(const hp::MappingCollection &mapping, - const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_laplace_matrix -(const hp::DoFHandler &dof, - const hp::QCollection &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); - - - -#if deal_II_dimension != 3 - -// non-hp version of create_mass_matrix -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); - - -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const Mapping &mapping, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); -template -void MatrixCreator::create_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const Function &rhs, - Vector &rhs_vector, - const Function * const coefficient); - -#if deal_II_dimension == 2 - -template -void MatrixCreator::create_boundary_mass_matrix -(const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const FunctionMap::type &rhs, - Vector &rhs_vector, - std::vector &dof_to_boundary_mapping, - const Function * const a, - std::vector); - -template -void MatrixCreator::create_boundary_mass_matrix -(const Mapping &, - const DoFHandler &dof, - const Quadrature &q, - SparseMatrix &matrix, - const FunctionMap::type &rhs, - Vector &rhs_vector, - std::vector &dof_to_boundary_mapping, - const Function * const a, - std::vector); - -#endif - -// #if deal_II_dimension != 1 -// template -// void -// MatrixCreator::create_boundary_mass_matrix -// (const Mapping &mapping, -// const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const FunctionMap::type &boundary_functions, -// Vector &rhs_vector, -// std::vector &dof_to_boundary_mapping, -// const Function * const a, -// std::vector &component_mapping); -// #endif - -// template -// void MatrixCreator::create_boundary_mass_matrix -// (const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const FunctionMap::type &rhs, -// Vector &rhs_vector, -// std::vector &dof_to_boundary_mapping, -// const Function * const a, -// std::vector &component_mapping); - - -// // non-hp version of create_mass_matrix -// template -// void MatrixCreator::create_mass_matrix -// (const Mapping &mapping, -// const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function * const coefficient); -// template -// void MatrixCreator::create_mass_matrix -// (const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function * const coefficient); -// template -// void MatrixCreator::create_mass_matrix -// (const Mapping &mapping, -// const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function &rhs, -// Vector &rhs_vector, -// const Function * const coefficient); -// template -// void MatrixCreator::create_mass_matrix -// (const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function &rhs, -// Vector &rhs_vector, -// const Function * const coefficient); - - -// template -// void MatrixCreator::create_mass_matrix -// (const Mapping &mapping, -// const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function * const coefficient); -// template -// void MatrixCreator::create_mass_matrix -// (const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function * const coefficient); -// template -// void MatrixCreator::create_mass_matrix -// (const Mapping &mapping, -// const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function &rhs, -// Vector &rhs_vector, -// const Function * const coefficient); -// template -// void MatrixCreator::create_mass_matrix -// (const DoFHandler &dof, -// const Quadrature &q, -// SparseMatrix &matrix, -// const Function &rhs, -// Vector &rhs_vector, -// const Function * const coefficient); - - + template + void MatrixCreator::create_laplace_matrix + (const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_laplace_matrix + (const hp::MappingCollection &mapping, + const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function * const coefficient); + template + void MatrixCreator::create_laplace_matrix + (const hp::MappingCollection &mapping, + const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + template + void MatrixCreator::create_laplace_matrix + (const hp::DoFHandler &dof, + const hp::QCollection &q, + SparseMatrix &matrix, + const Function &rhs, + Vector &rhs_vector, + const Function * const coefficient); + + + #endif -} + } diff --git a/deal.II/source/numerics/vectors.inst.in b/deal.II/source/numerics/vectors.inst.in index 23479924be..e6b6df4cb0 100644 --- a/deal.II/source/numerics/vectors.inst.in +++ b/deal.II/source/numerics/vectors.inst.in @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011 by the deal.II authors +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -11,215 +11,124 @@ // //--------------------------------------------------------------------------- - -for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS) -{ - namespace VectorTools \{ - - template - void interpolate - (const Mapping&, - const DoFHandler&, - const Function&, - VEC&); - template - void interpolate - (const DoFHandler&, - const Function&, - VEC&); - - template - void interpolate - (const Mapping&, - const hp::DoFHandler&, - const Function&, - VEC&); - template - void interpolate - (const hp::DoFHandler&, - const Function&, - VEC&); - - template - void interpolate - (const Mapping&, - const MGDoFHandler&, - const Function&, - VEC&); - template - void interpolate - (const MGDoFHandler&, - const Function&, - VEC&); - - template - void interpolate - (const DoFHandler&, - const DoFHandler&, - const FullMatrix&, - const VEC&, - VEC&); - - template - void integrate_difference - (const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); - -#if deal_II_dimension != 3 - template - void integrate_difference, deal_II_dimension+1> - (const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); - - template - void integrate_difference, deal_II_dimension+1 > - (const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); - - template - void integrate_difference, deal_II_dimension+1> - (const Mapping&, - const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); - - template - void integrate_difference, deal_II_dimension+1 > - (const Mapping&, - const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); +for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + namespace VectorTools \{ + + + template + void integrate_difference, deal_II_space_dimension> + (const DoFHandler&, + const VEC&, + const Function&, + Vector&, + const Quadrature&, + const NormType&, + const Function*, + const double); + + template + void integrate_difference, deal_II_space_dimension > + (const DoFHandler&, + const VEC&, + const Function&, + Vector&, + const Quadrature&, + const NormType&, + const Function*, + const double); + + template + void integrate_difference, deal_II_space_dimension> + (const Mapping&, + const DoFHandler&, + const VEC&, + const Function&, + Vector&, + const Quadrature&, + const NormType&, + const Function*, + const double); + + template + void integrate_difference, deal_II_space_dimension > + (const Mapping&, + const DoFHandler&, + const VEC&, + const Function&, + Vector&, + const Quadrature&, + const NormType&, + const Function*, + const double); + + + + template + double compute_mean_value + (const Mapping&, + const DoFHandler&, + const Quadrature&, + const VEC&, + const unsigned int); + + template + double compute_mean_value + (const DoFHandler&, + const Quadrature&, + const VEC&, + const unsigned int); + + template + void interpolate + (const Mapping&, + const DoFHandler&, + const Function&, + VEC&); + + template + void interpolate + (const DoFHandler&, + const Function&, + VEC&); + + template + void project + (const Mapping &, + const DoFHandler &, + const ConstraintMatrix &, + const Quadrature &, + const Function &, + VEC &, + const bool, + const Quadrature &, + const bool); + + template + void project + (const DoFHandler &, + const ConstraintMatrix &, + const Quadrature &, + const Function &, + VEC &, + const bool, + const Quadrature &, + const bool); + \} #endif + } - template - void integrate_difference - (const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); - template - void integrate_difference - (const Mapping&, - const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); - template - void integrate_difference - (const Mapping&, - const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Quadrature&, - const NormType&, - const Function*, - const double); - - template - void integrate_difference - (const hp::DoFHandler&, - const VEC&, - const Function&, - Vector&, - const hp::QCollection&, - const NormType&, - const Function*, - const double); - template - void integrate_difference - (const hp::DoFHandler&, - const VEC&, - const Function&, - Vector&, - const hp::QCollection&, - const NormType&, - const Function*, - const double); - template - void integrate_difference - (const hp::MappingCollection&, - const hp::DoFHandler&, - const VEC&, - const Function&, - Vector&, - const hp::QCollection&, - const NormType&, - const Function*, - const double); - template - void integrate_difference - (const hp::MappingCollection&, - const hp::DoFHandler&, - const VEC&, - const Function&, - Vector&, - const hp::QCollection&, - const NormType&, - const Function*, - const double); - template - void point_difference ( - const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Point&); +//TODO[SP]: replace by +// where applicable and move to codimension cases above also when applicable +for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension == deal_II_space_dimension - template - void point_difference ( - const Mapping&, - const DoFHandler&, - const VEC&, - const Function&, - Vector&, - const Point&); + namespace VectorTools \{ - template - void point_value ( - const DoFHandler&, - const VEC&, - const Point&, - Vector&); - template void point_value ( const hp::DoFHandler&, @@ -227,26 +136,36 @@ for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS) const Point&, Vector&); - template - double point_value ( - const DoFHandler&, - const VEC&, - const Point&); - + template + void interpolate + (const Mapping&, + const hp::DoFHandler&, + const Function&, + VEC&); + template + void interpolate + (const hp::DoFHandler&, + const Function&, + VEC&); + template double point_value ( const hp::DoFHandler&, const VEC&, const Point&); - template - void point_value ( - const Mapping&, - const DoFHandler&, - const VEC&, - const Point&, - Vector&); - + template + void interpolate + (const Mapping&, + const MGDoFHandler&, + const Function&, + VEC&); + template + void interpolate + (const MGDoFHandler&, + const Function&, + VEC&); + template void point_value ( const hp::MappingCollection&, @@ -255,13 +174,14 @@ for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS) const Point&, Vector&); - template - double point_value ( - const Mapping&, - const DoFHandler&, - const VEC&, - const Point&); - + template + void interpolate + (const DoFHandler&, + const DoFHandler&, + const FullMatrix&, + const VEC&, + VEC&); + template double point_value ( const hp::MappingCollection&, @@ -269,575 +189,412 @@ for (VEC : SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS) const VEC&, const Point&); - template - double compute_mean_value - (const Mapping&, - const DoFHandler&, - const Quadrature&, - const VEC&, - const unsigned int); - template - double compute_mean_value - (const DoFHandler&, - const Quadrature&, - const VEC&, - const unsigned int); - -#if deal_II_dimension < 3 - template - double compute_mean_value - (const Mapping&, - const DoFHandler&, - const Quadrature&, - const VEC&, - const unsigned int); - template - double compute_mean_value - (const DoFHandler&, - const Quadrature&, - const VEC&, - const unsigned int); + template + void integrate_difference + (const hp::DoFHandler&, + const VEC&, + const Function&, + Vector&, + const hp::QCollection&, + const NormType&, + const Function*, + const double); + template + void integrate_difference + (const hp::DoFHandler&, + const VEC&, + const Function&, + Vector&, + const hp::QCollection&, + const NormType&, + const Function*, + const double); + template + void integrate_difference + (const hp::MappingCollection&, + const hp::DoFHandler&, + const VEC&, + const Function&, + Vector&, + const hp::QCollection&, + const NormType&, + const Function*, + const double); + template + void integrate_difference + (const hp::MappingCollection&, + const hp::DoFHandler&, + const VEC&, + const Function&, + Vector&, + const hp::QCollection&, + const NormType&, + const Function*, + const double); + + template + void point_difference ( + const DoFHandler&, + const VEC&, + const Function&, + Vector&, + const Point&); + + template + void point_difference ( + const Mapping&, + const DoFHandler&, + const VEC&, + const Function&, + Vector&, + const Point&); + + template + void point_value ( + const DoFHandler&, + const VEC&, + const Point&, + Vector&); + + template + double point_value ( + const DoFHandler&, + const VEC&, + const Point&); + + template + void point_value ( + const Mapping&, + const DoFHandler&, + const VEC&, + const Point&, + Vector&); + + template + double point_value ( + const Mapping&, + const DoFHandler&, + const VEC&, + const Point&); + + \} #endif - - - template - void project - (const Mapping &, - const DoFHandler &, - const ConstraintMatrix &, - const Quadrature &, - const Function &, - VEC &, - const bool, - const Quadrature &, - const bool); - - template - void project - (const DoFHandler &, - const ConstraintMatrix &, - const Quadrature &, - const Function &, - VEC &, - const bool, - const Quadrature &, - const bool); - - -#if deal_II_dimension != 3 - template - void interpolate - (const Mapping&, - const DoFHandler&, - const Function&, - VEC&); - template - void interpolate - (const DoFHandler&, - const Function&, - VEC&); - - template - void project - (const Mapping &, - const DoFHandler &, - const ConstraintMatrix &, - const Quadrature &, - const Function &, - VEC &, - const bool, - const Quadrature &, - const bool); - - template - void project - (const DoFHandler &, - const ConstraintMatrix &, - const Quadrature &, - const Function &, - VEC &, - const bool, - const Quadrature &, - const bool); -#endif - \} -} - - -for ( deal_II_dimension : DIMENSIONS ) -{ -namespace VectorTools \{ -template -void create_right_hand_side -(const Mapping &, - const DoFHandler &, - const Quadrature &, - const Function &, - Vector &); -template -void create_right_hand_side -(const DoFHandler &, - const Quadrature &, - const Function &, - Vector &); - -template -void create_right_hand_side -(const hp::MappingCollection &, - const hp::DoFHandler &, - const hp::QCollection &, - const Function &, - Vector &); -template -void create_right_hand_side -(const hp::DoFHandler &, - const hp::QCollection &, - const Function &, - Vector &); - -template -void create_point_source_vector -(const Mapping &, - const DoFHandler &, - const Point &, - Vector &); -template -void create_point_source_vector -(const DoFHandler &, - const Point &, - Vector &); - -template -void create_point_source_vector -(const hp::MappingCollection &, - const hp::DoFHandler &, - const Point &, - Vector &); -template -void create_point_source_vector -(const hp::DoFHandler &, - const Point &, - Vector &); - -#if deal_II_dimension > 1 -template -void -create_boundary_right_hand_side -(const Mapping &, - const DoFHandler &, - const Quadrature &, - const Function &, - Vector &, - const std::set &); + } + + + + +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension <= deal_II_space_dimension + namespace VectorTools \{ + template + void interpolate_boundary_values ( + const DoFHandler &, + const types::boundary_id_t, + const Function &, + std::map &, + const std::vector &); + + template + void interpolate_boundary_values ( + const hp::DoFHandler &, + const types::boundary_id_t, + const Function &, + std::map &, + const std::vector &); + + template + void interpolate_boundary_values ( + const MGDoFHandler &, + const types::boundary_id_t, + const Function &, + std::map &, + const std::vector &); + + template + void interpolate_boundary_values ( + const DoFHandler &, + const types::boundary_id_t, + const Function &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const hp::DoFHandler &, + const types::boundary_id_t, + const Function &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const MGDoFHandler &, + const types::boundary_id_t, + const Function &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const Mapping &, + const DoFHandler &, + const FunctionMap::type &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const Mapping &, + const hp::DoFHandler &, + const FunctionMap::type &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const Mapping &, + const MGDoFHandler &, + const FunctionMap::type &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const DoFHandler &, + const FunctionMap::type &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const hp::DoFHandler &, + const FunctionMap::type &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values ( + const MGDoFHandler &, + const FunctionMap::type &, + ConstraintMatrix &, + const std::vector &); + + template + void interpolate_boundary_values + (const Mapping &, + const DoFHandler &, + const FunctionMap::type &, + std::map &, + const std::vector &); + + template + void interpolate_boundary_values + (const Mapping &, + const DoFHandler &, + const types::boundary_id_t, + const Function &, + std::map &, + const std::vector &); + + + template + void create_right_hand_side + (const Mapping &, + const DoFHandler &, + const Quadrature &, + const Function &, + Vector &); + + template + void create_right_hand_side + (const DoFHandler &, + const Quadrature &, + const Function &, + Vector &); + + \} #endif - -template -void -create_boundary_right_hand_side -(const DoFHandler &, - const Quadrature &, - const Function &, - Vector &, - const std::set &); + } + +//TODO[SP]: replace by +// where applicable and move to codimension cases above also when applicable +for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) + { +#if deal_II_dimension == deal_II_space_dimension + namespace VectorTools \{ + template + void create_right_hand_side + (const hp::MappingCollection &, + const hp::DoFHandler &, + const hp::QCollection &, + const Function &, + Vector &); + + template + void create_right_hand_side + (const hp::DoFHandler &, + const hp::QCollection &, + const Function &, + Vector &); + + template + void create_point_source_vector + (const Mapping &, + const DoFHandler &, + const Point &, + Vector &); + template + void create_point_source_vector + (const DoFHandler &, + const Point &, + Vector &); + + template + void create_point_source_vector + (const hp::MappingCollection &, + const hp::DoFHandler &, + const Point &, + Vector &); + template + void create_point_source_vector + (const hp::DoFHandler &, + const Point &, + Vector &); #if deal_II_dimension > 1 -template -void -create_boundary_right_hand_side -(const hp::MappingCollection &, - const hp::DoFHandler &, - const hp::QCollection &, - const Function &, - Vector &, - const std::set &); + template + void + create_boundary_right_hand_side + (const Mapping &, + const DoFHandler &, + const Quadrature &, + const Function &, + Vector &, + const std::set &); #endif -template -void -create_boundary_right_hand_side -(const hp::DoFHandler &, - const hp::QCollection &, - const Function &, - Vector &, - const std::set &); - -template -void interpolate_boundary_values ( - const DoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values ( - const hp::DoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values ( - const MGDoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values ( - const DoFHandler &, - const types::boundary_id_t, - const Function &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const hp::DoFHandler &, - const types::boundary_id_t, - const Function &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const MGDoFHandler &, - const types::boundary_id_t, - const Function &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const Mapping &, - const DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const Mapping &, - const hp::DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const Mapping &, - const MGDoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const hp::DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const MGDoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -#if deal_II_dimension < 3 -template -void interpolate_boundary_values ( - const DoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values ( - const hp::DoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values ( - const MGDoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values ( - const DoFHandler &, - const types::boundary_id_t, - const Function &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const hp::DoFHandler &, - const types::boundary_id_t, - const Function &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const MGDoFHandler &, - const types::boundary_id_t, - const Function &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const Mapping &, - const DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const Mapping &, - const hp::DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const Mapping &, - const MGDoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const hp::DoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); - -template -void interpolate_boundary_values ( - const MGDoFHandler &, - const FunctionMap::type &, - ConstraintMatrix &, - const std::vector &); -#endif + template + void + create_boundary_right_hand_side + (const DoFHandler &, + const Quadrature &, + const Function &, + Vector &, + const std::set &); #if deal_II_dimension > 1 -template -void project_boundary_values -(const Mapping &, - const DoFHandler &, - const FunctionMap::type &, - const Quadrature&, - std::map&, std::vector); + template + void + create_boundary_right_hand_side + (const hp::MappingCollection &, + const hp::DoFHandler &, + const hp::QCollection &, + const Function &, + Vector &, + const std::set &); #endif -template -void project_boundary_values -(const DoFHandler &, - const FunctionMap::type &, - const Quadrature&, - std::map&, std::vector); + template + void + create_boundary_right_hand_side + (const hp::DoFHandler &, + const hp::QCollection &, + const Function &, + Vector &, + const std::set &); -template -void project_boundary_values -(const Mapping &, - const DoFHandler &, - const FunctionMap::type &, - const Quadrature&, - ConstraintMatrix&, std::vector); -template -void project_boundary_values -(const DoFHandler &, - const FunctionMap::type &, - const Quadrature&, - ConstraintMatrix&, std::vector); -#if deal_II_dimension != 1 -template -void project_boundary_values_curl_conforming -(const DoFHandler&, - const unsigned int, - const Function&, - const types::boundary_id_t, - ConstraintMatrix&, - const Mapping&); -template -void project_boundary_values_curl_conforming -(const hp::DoFHandler&, - const unsigned int, - const Function&, - const types::boundary_id_t, - ConstraintMatrix&, - const hp::MappingCollection&); -template -void project_boundary_values_div_conforming -(const DoFHandler&, - const unsigned int, - const Function&, - const types::boundary_id_t, - ConstraintMatrix&, - const Mapping&); -template -void project_boundary_values_div_conforming -(const hp::DoFHandler&, - const unsigned int, - const Function&, - const types::boundary_id_t, - ConstraintMatrix&, - const hp::MappingCollection&); -template -void -compute_no_normal_flux_constraints (const DoFHandler &dof_handler, - const unsigned int first_vector_component, - const std::set &boundary_ids, - ConstraintMatrix &constraints, - const Mapping &mapping); -template -void -compute_no_normal_flux_constraints (const hp::DoFHandler &dof_handler, - const unsigned int first_vector_component, - const std::set &boundary_ids, - ConstraintMatrix &constraints, - const Mapping &mapping); +#if deal_II_dimension > 1 + template + void project_boundary_values + (const Mapping &, + const DoFHandler &, + const FunctionMap::type &, + const Quadrature&, + std::map&, std::vector); #endif + template + void project_boundary_values + (const DoFHandler &, + const FunctionMap::type &, + const Quadrature&, + std::map&, std::vector); -template -void interpolate_boundary_values -(const Mapping &, - const DoFHandler &, - const FunctionMap::type &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values -(const Mapping &, - const hp::DoFHandler &, - const FunctionMap::type &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values -(const Mapping &, - const MGDoFHandler &, - const FunctionMap::type &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values -(const Mapping &, - const DoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values -(const Mapping &, - const hp::DoFHandler &, - const types::boundary_id_t, - const Function &, - ConstraintMatrix &, - const std::vector &); - -#if deal_II_dimension < 3 -template -void interpolate_boundary_values -(const Mapping &, - const DoFHandler &, - const FunctionMap::type &, - std::map &, - const std::vector &); - -template -void interpolate_boundary_values -(const Mapping &, - const DoFHandler &, - const types::boundary_id_t, - const Function &, - std::map &, - const std::vector &); -#endif + template + void project_boundary_values + (const Mapping &, + const DoFHandler &, + const FunctionMap::type &, + const Quadrature&, + ConstraintMatrix&, std::vector); + template + void project_boundary_values + (const DoFHandler &, + const FunctionMap::type &, + const Quadrature&, + ConstraintMatrix&, std::vector); -template -void -interpolate_boundary_values -(const DoFHandler &, - const FunctionMap::type &, - std::map &, - const std::vector &); - - -#if deal_II_dimension != 3 - -template -void create_right_hand_side -(const Mapping &, - const DoFHandler &, - const Quadrature &, - const Function &, - Vector &); -template -void create_right_hand_side -(const DoFHandler &, - const Quadrature &, - const Function &, - Vector &); - -// template -// void create_right_hand_side -// (const hp::MappingCollection &, -// const hp::DoFHandler &, -// const hp::QCollection &, -// const Function &, -// Vector &); -// template -// void create_right_hand_side -// (const hp::DoFHandler &, -// const hp::QCollection &, -// const Function &, -// Vector &); +#if deal_II_dimension != 1 + template + void project_boundary_values_curl_conforming + (const DoFHandler&, + const unsigned int, + const Function&, + const types::boundary_id_t, + ConstraintMatrix&, + const Mapping&); + template + void project_boundary_values_curl_conforming + (const hp::DoFHandler&, + const unsigned int, + const Function&, + const types::boundary_id_t, + ConstraintMatrix&, + const hp::MappingCollection&); + template + void project_boundary_values_div_conforming + (const DoFHandler&, + const unsigned int, + const Function&, + const types::boundary_id_t, + ConstraintMatrix&, + const Mapping&); + template + void project_boundary_values_div_conforming + (const hp::DoFHandler&, + const unsigned int, + const Function&, + const types::boundary_id_t, + ConstraintMatrix&, + const hp::MappingCollection&); + template + void + compute_no_normal_flux_constraints (const DoFHandler &dof_handler, + const unsigned int first_vector_component, + const std::set &boundary_ids, + ConstraintMatrix &constraints, + const Mapping &mapping); + template + void + compute_no_normal_flux_constraints (const hp::DoFHandler &dof_handler, + const unsigned int first_vector_component, + const std::set &boundary_ids, + ConstraintMatrix &constraints, + const Mapping &mapping); #endif - \} -} + \} +#endif + } + for (deal_II_dimension : DIMENSIONS) diff --git a/tests/Makefile.paths.in b/tests/Makefile.paths.in index 281d0a08e1..cc9c95f70b 100644 --- a/tests/Makefile.paths.in +++ b/tests/Makefile.paths.in @@ -4,4 +4,17 @@ D = @DEAL2_DIR@ TEST_MINUS_L = @TEST_MINUS_L@ -ULIMIT = @ULIMIT@ \ No newline at end of file +ULIMIT = @ULIMIT@ + +# however, also define a variable that identifies the current directory, +# including if necessary a description of the branch we are on. we put +# this into Makefile.paths because not all */Makefile files include +# Makefile.rules (e.g. not the ones in all-headers or mesh-conversion) +# but they do generally include the current file +# +# so get the path of the current directory so we can prefix every test +# in the report with it. for a branch, prefix everything +# with x-branch-name/ so that tests run from the branch will show up +# in different folders on the webpage. +WORKDIR = x-branch_codim_two/$(notdir $(shell pwd)) + diff --git a/tests/Makefile.rules b/tests/Makefile.rules index e03d9fdc26..dfa47ce41d 100644 --- a/tests/Makefile.rules +++ b/tests/Makefile.rules @@ -1,7 +1,7 @@ ###################################################################### # Makefile.rules,v 1.11 2001/04/24 13:18:09 wolf Exp # -# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, the deal.II authors +# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, the deal.II authors # # Common make rules for test files. To be included by the Makefiles # in the subdirectories. @@ -10,12 +10,6 @@ normalize = $D/common/scripts/normalize.pl -# get the path of the current directory so we can prefix every test -# in the report with it. for a branch, prefix everything -# with x-branch-name/ so that tests run from the branch will show up -# in different folders on the webpage. -WORKDIR = $(notdir $(shell pwd)) - verbose = off # The mail program. Override this by something like diff --git a/tests/all-headers/Makefile b/tests/all-headers/Makefile index 44f5e5198f..82487180cf 100644 --- a/tests/all-headers/Makefile +++ b/tests/all-headers/Makefile @@ -72,11 +72,11 @@ report: @echo 'Date: ' `date -u +"%Y %j %F %U-%w"` @echo 'Id: ' $(ID) @for test in $(TESTS) ; do \ - testname=all-headers/`echo $$test | perl -pi -e 's/.*include.//g; s/\//-/g;'` ; \ + testname=`echo $$test | perl -pi -e 's/.*include.//g; s/\//-/g;'` ; \ if test -f $$test ; then \ - echo "`date -u +"%Y-%m-%d %H:%M"` + $$testname" ; \ + echo "`date -u +"%Y-%m-%d %H:%M"` + $(WORKDIR)/$$testname" ; \ else \ - echo "`date -u +"%Y-%m-%d %H:%M"` 0 $$testname" ; \ + echo "`date -u +"%Y-%m-%d %H:%M"` 0 $(WORKDIR)/$$testname" ; \ fi ; \ done diff --git a/tests/bits/find_cell_5.cc b/tests/bits/find_cell_5.cc index 0d9bdee0a7..e402344901 100644 --- a/tests/bits/find_cell_5.cc +++ b/tests/bits/find_cell_5.cc @@ -40,7 +40,7 @@ void check (Triangulation<3> &tria) = GridTools::find_active_cell_around_point (tria, p); deallog << cell << std::endl; - for (unsigned int v=0; v::vertices_per_cell; ++v) + for (unsigned int v=0; v::vertices_per_cell; ++v) deallog << "<" << cell->vertex(v) << "> "; deallog << std::endl; diff --git a/tests/bits/find_cell_5/cmp/generic b/tests/bits/find_cell_5/cmp/generic index 13b00480e4..838c265721 100644 --- a/tests/bits/find_cell_5/cmp/generic +++ b/tests/bits/find_cell_5/cmp/generic @@ -1,3 +1,3 @@ -DEAL::3.455 -DEAL::<0.625000 0.625000 0.625000> <0.750000 0.625000 0.625000> <0.625000 0.750000 0.625000> <0.750000 0.750000 0.625000> +DEAL::3.462 +DEAL::<0.750000 0.625000 0.625000> <0.875000 0.625000 0.625000> <0.750000 0.750000 0.625000> <0.875000 0.750000 0.625000> <0.750000 0.625000 0.750000> <0.875000 0.625000 0.750000> <0.750000 0.750000 0.750000> <0.875000 0.750000 0.750000> diff --git a/tests/bits/find_cell_alt_2.cc b/tests/bits/find_cell_alt_2.cc index 8393f351a7..67d32f65c1 100644 --- a/tests/bits/find_cell_alt_2.cc +++ b/tests/bits/find_cell_alt_2.cc @@ -41,10 +41,10 @@ void check (Triangulation<3> &tria) deallog << cell.first << std::endl; for (unsigned int v=0; v::vertices_per_cell; ++v) - deallog << "<" << cell.first->vertex(v) << "> "; + deallog << "<" << cell.first->vertex(v) << "> "<< std::endl; deallog << "[ " << cell.second << "] "; - deallog << std::endl; + deallog << std::endl << std::endl; Assert (p.distance (cell.first->center()) < cell.first->diameter()/2, ExcInternalError()); diff --git a/tests/bits/find_cell_alt_2/cmp/generic b/tests/bits/find_cell_alt_2/cmp/generic index 3d10eeeb70..e5e204bb78 100644 --- a/tests/bits/find_cell_alt_2/cmp/generic +++ b/tests/bits/find_cell_alt_2/cmp/generic @@ -1,5 +1,23 @@ -DEAL::2.17 -DEAL::<0.250000 0.500000 0.00000> <0.500000 0.500000 0.00000> <0.250000 0.750000 0.00000> <0.500000 0.750000 0.00000> <0.250000 0.500000 0.250000> <0.500000 0.500000 0.250000> <0.250000 0.750000 0.250000> <0.500000 0.750000 0.250000> [ 0.333333 -3.54987e-30 0.800000] +DEAL::2.3 +DEAL::<0.250000 0.250000 0.00000> +DEAL::<0.500000 0.250000 0.00000> +DEAL::<0.250000 0.500000 0.00000> +DEAL::<0.500000 0.500000 0.00000> +DEAL::<0.250000 0.250000 0.250000> +DEAL::<0.500000 0.250000 0.250000> +DEAL::<0.250000 0.500000 0.250000> +DEAL::<0.500000 0.500000 0.250000> +DEAL::[ 0.333333 1.00000 0.800000] +DEAL:: DEAL::2.435 -DEAL::<0.286905 0.658777 4.33681e-19> <0.209333 0.437629 8.67362e-19> <0.562887 0.562887 8.67362e-19> <0.418667 0.418667 1.73472e-18> <0.269808 0.604598 0.269808> <0.203251 0.422066 0.203251> <0.530301 0.530301 0.245590> <0.406502 0.406502 0.197169> [ 0.494208 0.406025 0.866848] +DEAL::<0.286905 0.658777 4.33681e-19> +DEAL::<0.209333 0.437629 8.67362e-19> +DEAL::<0.562887 0.562887 8.67362e-19> +DEAL::<0.418667 0.418667 1.73472e-18> +DEAL::<0.269808 0.604598 0.269808> +DEAL::<0.203251 0.422066 0.203251> +DEAL::<0.530301 0.530301 0.245590> +DEAL::<0.406502 0.406502 0.197169> +DEAL::[ 0.494208 0.406025 0.866848] +DEAL:: diff --git a/tests/bits/find_cell_alt_4/cmp/generic b/tests/bits/find_cell_alt_4/cmp/generic index fb1b0c57a8..26c15bddb9 100644 --- a/tests/bits/find_cell_alt_4/cmp/generic +++ b/tests/bits/find_cell_alt_4/cmp/generic @@ -1,4 +1,4 @@ DEAL::3.72 -DEAL::<0.750000 0.00000 0.00000> <0.875000 0.00000 0.00000> <0.750000 0.125000 0.00000> <0.875000 0.125000 0.00000> <0.750000 0.00000 0.125000> <0.875000 0.00000 0.125000> <0.750000 0.125000 0.125000> <0.875000 0.125000 0.125000> [ -3.33067e-16 1.11022e-16 5.55112e-17] +DEAL::<0.750000 0.00000 0.00000> <0.875000 0.00000 0.00000> <0.750000 0.125000 0.00000> <0.875000 0.125000 0.00000> <0.750000 0.00000 0.125000> <0.875000 0.00000 0.125000> <0.750000 0.125000 0.125000> <0.875000 0.125000 0.125000> [ 2.46519e-32 5.55112e-17 5.55112e-17] DEAL::0 diff --git a/tests/bits/find_cell_alt_5.cc b/tests/bits/find_cell_alt_5.cc index 0e11f87778..234a4d476d 100644 --- a/tests/bits/find_cell_alt_5.cc +++ b/tests/bits/find_cell_alt_5.cc @@ -38,7 +38,7 @@ void check (Triangulation<3> &tria) = GridTools::find_active_cell_around_point (map, tria, p); deallog << cell.first << std::endl; - for (unsigned int v=0; v::vertices_per_cell; ++v) + for (unsigned int v=0; v::vertices_per_cell; ++v) deallog << "<" << cell.first->vertex(v) << "> "; deallog << "[ " << cell.second << "] "; deallog << std::endl; diff --git a/tests/bits/find_cell_alt_5/cmp/generic b/tests/bits/find_cell_alt_5/cmp/generic index 0076cf5fad..6c76478868 100644 --- a/tests/bits/find_cell_alt_5/cmp/generic +++ b/tests/bits/find_cell_alt_5/cmp/generic @@ -1,3 +1,3 @@ -DEAL::3.455 -DEAL::<0.625000 0.625000 0.625000> <0.750000 0.625000 0.625000> <0.625000 0.750000 0.625000> <0.750000 0.750000 0.625000> [ 1.00000 1.00000 1.00000] +DEAL::3.462 +DEAL::<0.750000 0.625000 0.625000> <0.875000 0.625000 0.625000> <0.750000 0.750000 0.625000> <0.875000 0.750000 0.625000> <0.750000 0.625000 0.750000> <0.875000 0.625000 0.750000> <0.750000 0.750000 0.750000> <0.875000 0.750000 0.750000> [ 0.00000 1.00000 1.00000] diff --git a/tests/bits/find_cell_alt_7.cc b/tests/bits/find_cell_alt_7.cc index 5b56d4157c..449ff7de25 100644 --- a/tests/bits/find_cell_alt_7.cc +++ b/tests/bits/find_cell_alt_7.cc @@ -50,7 +50,7 @@ void check (Triangulation<2> &tria) // Now transform back and check distance Point<2> pp = map.transform_unit_to_real_cell(cell.first, GeometryInfo<2>::project_to_unit_cell(cell.second)); deallog << pp.distance(p) << std::endl; - Assert (pp.distance(p) < 1e-13, + Assert (pp.distance(p) < 1.e-12, ExcInternalError()); } diff --git a/tests/bits/find_cell_alt_7/cmp/generic b/tests/bits/find_cell_alt_7/cmp/generic index e5921bb95f..46a025e24d 100644 --- a/tests/bits/find_cell_alt_7/cmp/generic +++ b/tests/bits/find_cell_alt_7/cmp/generic @@ -4,7 +4,7 @@ DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823 DEAL::2.72 DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 2.34859e-08 0.0800000] 0 DEAL::2.72 -DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 3.81726e-08 0.160000] 0 +DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 3.81724e-08 0.160000] 0 DEAL::2.72 DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 5.00262e-08 0.240000] 0 DEAL::2.72 @@ -20,7 +20,7 @@ DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.74855 DEAL::2.72 DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 5.01490e-08 0.720000] 0 DEAL::2.72 -DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 4.42923e-08 0.800000] 0 +DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 4.42919e-08 0.800000] 0 DEAL::2.72 DEAL::<0.00000 1.00000> <0.00000 0.823223> <0.382683 0.923880> <0.316342 0.748551> [ 2.83602e-08 0.880000] 0 DEAL::2.72 @@ -30,7 +30,7 @@ DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.60 DEAL::2.74 DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 2.88843e-08 0.120000] 0 DEAL::2.74 -DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 4.56048e-08 0.200000] 0 +DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 4.56040e-08 0.200000] 0 DEAL::2.74 DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 5.21899e-08 0.280000] 0 DEAL::2.74 @@ -46,7 +46,7 @@ DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.60 DEAL::2.74 DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 5.59720e-08 0.760000] 0 DEAL::2.74 -DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 4.34624e-08 0.840000] 0 +DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 4.34612e-08 0.840000] 0 DEAL::2.74 DEAL::<0.382683 0.923880> <0.316342 0.748551> <0.707107 0.707107> <0.603553 0.603553> [ 2.73698e-08 0.920000] 0 DEAL::2.53 @@ -54,7 +54,7 @@ DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.60 DEAL::2.53 DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.920000 2.73698e-08] 0 DEAL::2.53 -DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.840000 4.34624e-08] 0 +DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.840000 4.34612e-08] 0 DEAL::2.53 DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.760000 5.59720e-08] 0 DEAL::2.53 @@ -70,7 +70,7 @@ DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.60 DEAL::2.53 DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.280000 5.21899e-08] 0 DEAL::2.53 -DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.200000 4.56048e-08] 0 +DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.200000 4.56040e-08] 0 DEAL::2.53 DEAL::<0.923880 0.382683> <0.707107 0.707107> <0.748551 0.316342> <0.603553 0.603553> [ 0.120000 2.88843e-08] 0 DEAL::2.53 @@ -80,7 +80,7 @@ DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.31634 DEAL::2.52 DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.880000 2.83602e-08] 0 DEAL::2.52 -DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.800000 4.42923e-08] 0 +DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.800000 4.42919e-08] 0 DEAL::2.52 DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.720000 5.01490e-08] 0 DEAL::2.52 @@ -96,15 +96,15 @@ DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.31634 DEAL::2.52 DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.240000 5.00262e-08] 0 DEAL::2.52 -DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.160000 3.81726e-08] 0 +DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.160000 3.81724e-08] 0 DEAL::2.52 DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 0.0800000 2.34859e-08] 0 DEAL::2.52 -DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 1.55927e-16 5.65685e-08] 0 +DEAL::<1.00000 0.00000> <0.923880 0.382683> <0.823223 0.00000> <0.748551 0.316342> [ 1.60121e-16 5.65685e-08] 0 DEAL::2.49 DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.920000 2.34859e-08] 0 DEAL::2.49 -DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.840000 3.81726e-08] 0 +DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.840000 3.81724e-08] 0 DEAL::2.49 DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.760000 5.00262e-08] 0 DEAL::2.49 @@ -120,7 +120,7 @@ DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00 DEAL::2.49 DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.280000 5.01490e-08] 0 DEAL::2.49 -DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.200000 4.42923e-08] 0 +DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.200000 4.42919e-08] 0 DEAL::2.49 DEAL::<0.923880 -0.382683> <1.00000 0.00000> <0.748551 -0.316342> <0.823223 0.00000> [ 0.120000 2.83602e-08] 0 DEAL::2.49 @@ -130,7 +130,7 @@ DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 - DEAL::2.48 DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.880000 2.88843e-08] 0 DEAL::2.48 -DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.800000 4.56048e-08] 0 +DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.800000 4.56040e-08] 0 DEAL::2.48 DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.720000 5.21899e-08] 0 DEAL::2.48 @@ -146,7 +146,7 @@ DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 - DEAL::2.48 DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.240000 5.59720e-08] 0 DEAL::2.48 -DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.160000 4.34624e-08] 0 +DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.160000 4.34612e-08] 0 DEAL::2.48 DEAL::<0.707107 -0.707107> <0.923880 -0.382683> <0.603553 -0.603553> <0.748551 -0.316342> [ 0.0800000 2.73698e-08] 0 DEAL::2.5 @@ -154,7 +154,7 @@ DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 - DEAL::2.5 DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.920000 2.73698e-08] 0 DEAL::2.5 -DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.840000 4.34624e-08] 0 +DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.840000 4.34612e-08] 0 DEAL::2.5 DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.760000 5.59720e-08] 0 DEAL::2.5 @@ -170,7 +170,7 @@ DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 - DEAL::2.5 DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.280000 5.21899e-08] 0 DEAL::2.5 -DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.200000 4.56048e-08] 0 +DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.200000 4.56040e-08] 0 DEAL::2.5 DEAL::<0.382683 -0.923880> <0.707107 -0.707107> <0.316342 -0.748551> <0.603553 -0.603553> [ 0.120000 2.88843e-08] 0 DEAL::2.5 @@ -180,7 +180,7 @@ DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.7 DEAL::2.4 DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.880000 2.83602e-08] 0 DEAL::2.4 -DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.800000 4.42923e-08] 0 +DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.800000 4.42919e-08] 0 DEAL::2.4 DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.720000 5.01490e-08] 0 DEAL::2.4 @@ -196,7 +196,7 @@ DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.7 DEAL::2.4 DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.240000 5.00262e-08] 0 DEAL::2.4 -DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.160000 3.81726e-08] 0 +DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.160000 3.81724e-08] 0 DEAL::2.4 DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.748551> [ 0.0800000 2.34859e-08] 0 DEAL::2.4 @@ -204,7 +204,7 @@ DEAL::<0.00000 -1.00000> <0.382683 -0.923880> <0.00000 -0.823223> <0.316342 -0.7 DEAL::2.1 DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.920000 2.34859e-08] 0 DEAL::2.1 -DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.840000 3.81726e-08] 0 +DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.840000 3.81724e-08] 0 DEAL::2.1 DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.760000 5.00262e-08] 0 DEAL::2.1 @@ -220,17 +220,17 @@ DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0 DEAL::2.1 DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.280000 5.01490e-08] 0 DEAL::2.1 -DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.200000 4.42923e-08] 0 +DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.200000 4.42919e-08] 0 DEAL::2.1 DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.120000 2.83602e-08] 0 DEAL::2.1 DEAL::<-0.382683 -0.923880> <0.00000 -1.00000> <-0.316342 -0.748551> <0.00000 -0.823223> [ 0.0400000 2.65247e-08] 0 DEAL::2.0 -DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.960000 2.66998e-08] 0 +DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.960000 2.66999e-08] 0 DEAL::2.0 DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.880000 2.88843e-08] 0 DEAL::2.0 -DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.800000 4.56048e-08] 0 +DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.800000 4.56040e-08] 0 DEAL::2.0 DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.720000 5.21899e-08] 0 DEAL::2.0 @@ -246,15 +246,15 @@ DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.3163 DEAL::2.0 DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.240000 5.59720e-08] 0 DEAL::2.0 -DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.160000 4.34624e-08] 0 +DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.160000 4.34612e-08] 0 DEAL::2.0 DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 0.0800000 2.73698e-08] 0 DEAL::2.0 -DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 2.92731e-16 6.82843e-08] 0 +DEAL::<-0.707107 -0.707107> <-0.382683 -0.923880> <-0.603553 -0.603553> <-0.316342 -0.748551> [ 4.13471e-15 6.82843e-08] 0 DEAL::2.16 DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 2.73698e-08 0.0800000] 0 DEAL::2.16 -DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 4.34624e-08 0.160000] 0 +DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 4.34612e-08 0.160000] 0 DEAL::2.16 DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 5.59720e-08 0.240000] 0 DEAL::2.16 @@ -270,17 +270,17 @@ DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.7485 DEAL::2.16 DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 5.21899e-08 0.720000] 0 DEAL::2.16 -DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 4.56048e-08 0.800000] 0 +DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 4.56040e-08 0.800000] 0 DEAL::2.16 DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 2.88843e-08 0.880000] 0 DEAL::2.16 -DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 2.66999e-08 0.960000] 0 +DEAL::<-0.707107 -0.707107> <-0.603553 -0.603553> <-0.923880 -0.382683> <-0.748551 -0.316342> [ 2.66998e-08 0.960000] 0 DEAL::2.18 DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 2.65247e-08 0.0400000] 0 DEAL::2.18 DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 2.83602e-08 0.120000] 0 DEAL::2.18 -DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 4.42923e-08 0.200000] 0 +DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 4.42919e-08 0.200000] 0 DEAL::2.18 DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 5.01490e-08 0.280000] 0 DEAL::2.18 @@ -296,7 +296,7 @@ DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 DEAL::2.18 DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 5.00262e-08 0.760000] 0 DEAL::2.18 -DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 3.81726e-08 0.840000] 0 +DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 3.81724e-08 0.840000] 0 DEAL::2.18 DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 0.00000> [ 2.34859e-08 0.920000] 0 DEAL::2.18 @@ -304,7 +304,7 @@ DEAL::<-0.923880 -0.382683> <-0.748551 -0.316342> <-1.00000 0.00000> <-0.823223 DEAL::2.24 DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 2.34859e-08 0.0800000] 0 DEAL::2.24 -DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 3.81726e-08 0.160000] 0 +DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 3.81724e-08 0.160000] 0 DEAL::2.24 DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 5.00262e-08 0.240000] 0 DEAL::2.24 @@ -320,7 +320,7 @@ DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.3 DEAL::2.24 DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 5.01490e-08 0.720000] 0 DEAL::2.24 -DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 4.42923e-08 0.800000] 0 +DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 4.42919e-08 0.800000] 0 DEAL::2.24 DEAL::<-1.00000 0.00000> <-0.823223 0.00000> <-0.923880 0.382683> <-0.748551 0.316342> [ 2.83602e-08 0.880000] 0 DEAL::2.24 @@ -330,7 +330,7 @@ DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 DEAL::2.26 DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 2.88843e-08 0.120000] 0 DEAL::2.26 -DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 4.56048e-08 0.200000] 0 +DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 4.56040e-08 0.200000] 0 DEAL::2.26 DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 5.21899e-08 0.280000] 0 DEAL::2.26 @@ -346,7 +346,7 @@ DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 DEAL::2.26 DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 5.59720e-08 0.760000] 0 DEAL::2.26 -DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 4.34624e-08 0.840000] 0 +DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 4.34612e-08 0.840000] 0 DEAL::2.26 DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 0.603553> [ 2.73698e-08 0.920000] 0 DEAL::2.26 @@ -354,7 +354,7 @@ DEAL::<-0.923880 0.382683> <-0.748551 0.316342> <-0.707107 0.707107> <-0.603553 DEAL::2.64 DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 2.73698e-08 0.0800000] 0 DEAL::2.64 -DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 4.34624e-08 0.160000] 0 +DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 4.34612e-08 0.160000] 0 DEAL::2.64 DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 5.59720e-08 0.240000] 0 DEAL::2.64 @@ -370,17 +370,17 @@ DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 DEAL::2.64 DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 5.21899e-08 0.720000] 0 DEAL::2.64 -DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 4.56048e-08 0.800000] 0 +DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 4.56040e-08 0.800000] 0 DEAL::2.64 DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 2.88843e-08 0.880000] 0 DEAL::2.64 -DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 2.66998e-08 0.960000] 0 +DEAL::<-0.707107 0.707107> <-0.603553 0.603553> <-0.382683 0.923880> <-0.316342 0.748551> [ 2.66999e-08 0.960000] 0 DEAL::2.66 DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 2.65247e-08 0.0400000] 0 DEAL::2.66 DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 2.83602e-08 0.120000] 0 DEAL::2.66 -DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 4.42923e-08 0.200000] 0 +DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 4.42919e-08 0.200000] 0 DEAL::2.66 DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 5.01490e-08 0.280000] 0 DEAL::2.66 @@ -396,6 +396,6 @@ DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823 DEAL::2.66 DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 5.00262e-08 0.760000] 0 DEAL::2.66 -DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 3.81726e-08 0.840000] 0 +DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 3.81724e-08 0.840000] 0 DEAL::2.66 DEAL::<-0.382683 0.923880> <-0.316342 0.748551> <0.00000 1.00000> <0.00000 0.823223> [ 2.34859e-08 0.920000] 0 diff --git a/tests/bits/point_difference_01/cmp/generic b/tests/bits/point_difference_01/cmp/generic index de571c26aa..a1f67718b2 100644 --- a/tests/bits/point_difference_01/cmp/generic +++ b/tests/bits/point_difference_01/cmp/generic @@ -27,14 +27,14 @@ DEAL:2d::-0.7500 DEAL:2d::OK DEAL:3d::0.000 DEAL:3d::-1.000 -DEAL:3d::-2.220e-16 +DEAL:3d::0.000 DEAL:3d::-1.750 -DEAL:3d::-2.220e-16 +DEAL:3d::2.220e-16 DEAL:3d::-1.333 DEAL:3d::0.000 DEAL:3d::-1.000 -DEAL:3d::2.220e-16 +DEAL:3d::1.110e-16 DEAL:3d::-0.3536 -DEAL:3d::2.220e-16 +DEAL:3d::4.441e-16 DEAL:3d::-0.6495 DEAL:3d::OK diff --git a/tests/bits/point_difference_02/cmp/generic b/tests/bits/point_difference_02/cmp/generic index de571c26aa..a1f67718b2 100644 --- a/tests/bits/point_difference_02/cmp/generic +++ b/tests/bits/point_difference_02/cmp/generic @@ -27,14 +27,14 @@ DEAL:2d::-0.7500 DEAL:2d::OK DEAL:3d::0.000 DEAL:3d::-1.000 -DEAL:3d::-2.220e-16 +DEAL:3d::0.000 DEAL:3d::-1.750 -DEAL:3d::-2.220e-16 +DEAL:3d::2.220e-16 DEAL:3d::-1.333 DEAL:3d::0.000 DEAL:3d::-1.000 -DEAL:3d::2.220e-16 +DEAL:3d::1.110e-16 DEAL:3d::-0.3536 -DEAL:3d::2.220e-16 +DEAL:3d::4.441e-16 DEAL:3d::-0.6495 DEAL:3d::OK diff --git a/tests/codim_one/bem_integration.cc b/tests/codim_one/bem_integration.cc index c9708b7979..3c30e4e0bc 100644 --- a/tests/codim_one/bem_integration.cc +++ b/tests/codim_one/bem_integration.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2005 by the deal.II authors +// Copyright (C) 2005, 2012 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -97,7 +97,8 @@ LaplaceKernelIntegration<2>::LaplaceKernelIntegration() static Quadrature<2> quadrature(qps, ws); fe_values = new FEValues<2,3>(fe,quadrature, update_values | - update_jacobians ); + update_jacobians | + update_normal_vectors); } template @@ -117,19 +118,22 @@ LaplaceKernelIntegration<2>::compute_SD_integral_on_cell(vector &dst, Assert(dst.size() == 2, ExcDimensionMismatch(dst.size(), 2)); fe_values->reinit(cell); - vector > jacobians = fe_values->get_jacobians(); + vector > jacobians = fe_values->get_jacobians(); + vector > normals = fe_values->get_normal_vectors(); + Point<3> r,a1,a2,n,r_c,n_c; r_c = point-cell->center(); - n_c = jacobians[4][2]; + n_c = normals[4]; + double rn_c = r_c*n_c; vector i_S(4); vector i_D(4); for (unsigned int q_point=0; q_point < 4; ++q_point) { r = point-cell->vertex(q_point); - a1 = jacobians[q_point][0]; - a2 = jacobians[q_point][1]; - n = jacobians[q_point][2]; + a1 = transpose(jacobians[q_point])[0]; + a2 = transpose(jacobians[q_point])[1]; + n = normals[q_point]; i_S[q_point]=term_S(r,a1,a2,n,rn_c); i_D[q_point]=term_D(r,a1,a2); } diff --git a/tests/codim_one/error_estimator_01/cmp/generic b/tests/codim_one/error_estimator_01/cmp/generic index 58c7714bb8..5753f101d0 100644 --- a/tests/codim_one/error_estimator_01/cmp/generic +++ b/tests/codim_one/error_estimator_01/cmp/generic @@ -326,116 +326,116 @@ DEAL:1d::62 0.00 DEAL:1d::63 0.00 DEAL:1d::OK DEAL:2d::Estimated error indicators: -DEAL:2d::28892.79 -DEAL:2d::28892.79 -DEAL:2d::28.96 -DEAL:2d::81.16 -DEAL:2d::95.16 -DEAL:2d::81.55 -DEAL:2d::42751.58 -DEAL:2d::50297.00 -DEAL:2d::55.64 -DEAL:2d::50297.00 -DEAL:2d::42751.58 -DEAL:2d::62.36 -DEAL:2d::42.12 -DEAL:2d::42751.58 -DEAL:2d::40.51 -DEAL:2d::50297.00 -DEAL:2d::50297.00 -DEAL:2d::62.36 -DEAL:2d::50.43 -DEAL:2d::49.34 -DEAL:2d::50297.00 -DEAL:2d::42.12 -DEAL:2d::42751.58 -DEAL:2d::31.06 -DEAL:2d::50296.99 -DEAL:2d::42751.58 -DEAL:2d::34.50 -DEAL:2d::28892.79 -DEAL:2d::16291.30 -DEAL:2d::42751.58 -DEAL:2d::53.15 -DEAL:2d::50297.00 -DEAL:2d::62.36 -DEAL:2d::71.02 -DEAL:2d::91.23 -DEAL:2d::91.23 -DEAL:2d::107.05 -DEAL:2d::28892.79 -DEAL:2d::16291.30 -DEAL:2d::28.96 -DEAL:2d::28892.79 -DEAL:2d::91.23 -DEAL:2d::107.05 -DEAL:2d::77.76 -DEAL:2d::79.17 -DEAL:2d::28892.78 -DEAL:2d::36.32 -DEAL:2d::16291.30 -DEAL:2d::28892.79 -DEAL:2d::53.15 -DEAL:2d::54.31 -DEAL:2d::42751.58 -DEAL:2d::50296.99 -DEAL:2d::7.64 -DEAL:2d::4.24 -DEAL:2d::7.30 -DEAL:2d::2.45 -DEAL:2d::4.66 -DEAL:2d::4.66 -DEAL:2d::5.60 -DEAL:2d::2059.95 -DEAL:2d::3803.08 -DEAL:2d::3803.08 -DEAL:2d::1.71 -DEAL:2d::7.92 -DEAL:2d::5.24 -DEAL:2d::8.24 -DEAL:2d::5.45 -DEAL:2d::8.24 -DEAL:2d::5.45 -DEAL:2d::7.80 -DEAL:2d::5.24 -DEAL:2d::10.74 -DEAL:2d::7.80 -DEAL:2d::6.65 -DEAL:2d::2.66 -DEAL:2d::3.00 -DEAL:2d::4.28 -DEAL:2d::6.01 -DEAL:2d::7.67 -DEAL:2d::3.48 -DEAL:2d::3.00 -DEAL:2d::5.27 -DEAL:2d::4.28 -DEAL:2d::11362.63 -DEAL:2d::4.32 -DEAL:2d::9965.63 -DEAL:2d::3.51 -DEAL:2d::5.46 -DEAL:2d::4.84 -DEAL:2d::4.51 -DEAL:2d::4.06 -DEAL:2d::3.24 -DEAL:2d::2.06 -DEAL:2d::8189.22 -DEAL:2d::6104.74 -DEAL:2d::0.31 -DEAL:2d::0.28 -DEAL:2d::0.28 -DEAL:2d::0.25 +DEAL:2d::27634.60 +DEAL:2d::27634.60 +DEAL:2d::29.16 +DEAL:2d::80.55 +DEAL:2d::94.47 +DEAL:2d::85.83 +DEAL:2d::40889.89 +DEAL:2d::48106.73 +DEAL:2d::55.17 +DEAL:2d::48106.73 +DEAL:2d::40889.89 +DEAL:2d::59.65 +DEAL:2d::42.47 +DEAL:2d::40889.89 +DEAL:2d::44.31 +DEAL:2d::48106.73 +DEAL:2d::48106.73 +DEAL:2d::59.65 +DEAL:2d::49.53 +DEAL:2d::49.78 +DEAL:2d::48106.73 +DEAL:2d::42.47 +DEAL:2d::40889.89 +DEAL:2d::35.10 +DEAL:2d::48106.72 +DEAL:2d::40889.89 +DEAL:2d::33.86 +DEAL:2d::27634.60 +DEAL:2d::15581.87 +DEAL:2d::40889.89 +DEAL:2d::50.83 +DEAL:2d::48106.73 +DEAL:2d::59.65 +DEAL:2d::70.20 +DEAL:2d::87.26 +DEAL:2d::87.26 +DEAL:2d::102.39 +DEAL:2d::27634.60 +DEAL:2d::15581.87 +DEAL:2d::29.16 +DEAL:2d::27634.60 +DEAL:2d::87.26 +DEAL:2d::102.39 +DEAL:2d::74.37 +DEAL:2d::78.86 +DEAL:2d::27634.60 +DEAL:2d::34.73 +DEAL:2d::15581.87 +DEAL:2d::27634.60 +DEAL:2d::50.83 +DEAL:2d::54.04 +DEAL:2d::40889.89 +DEAL:2d::48106.72 +DEAL:2d::14.62 +DEAL:2d::8.11 +DEAL:2d::13.97 +DEAL:2d::4.68 +DEAL:2d::9.00 +DEAL:2d::9.00 +DEAL:2d::10.71 +DEAL:2d::3940.49 +DEAL:2d::7274.93 +DEAL:2d::7274.93 +DEAL:2d::3.28 +DEAL:2d::15.15 +DEAL:2d::10.03 +DEAL:2d::15.76 +DEAL:2d::10.43 +DEAL:2d::15.76 +DEAL:2d::10.43 +DEAL:2d::14.98 +DEAL:2d::10.03 +DEAL:2d::20.55 +DEAL:2d::14.98 +DEAL:2d::12.71 +DEAL:2d::5.08 +DEAL:2d::5.74 +DEAL:2d::8.19 +DEAL:2d::11.49 +DEAL:2d::14.67 +DEAL:2d::6.67 +DEAL:2d::5.74 +DEAL:2d::10.07 +DEAL:2d::8.19 +DEAL:2d::21735.64 +DEAL:2d::8.26 +DEAL:2d::19063.32 +DEAL:2d::6.72 +DEAL:2d::10.45 +DEAL:2d::9.25 +DEAL:2d::8.62 +DEAL:2d::7.76 +DEAL:2d::6.20 +DEAL:2d::3.93 +DEAL:2d::15665.22 +DEAL:2d::11677.80 +DEAL:2d::1.20 +DEAL:2d::1.08 +DEAL:2d::1.08 +DEAL:2d::0.96 DEAL:2d::Subdomain id=0 -DEAL:2d::0 28892.79 -DEAL:2d::1 28892.79 -DEAL:2d::2 28.96 +DEAL:2d::0 27634.60 +DEAL:2d::1 27634.60 +DEAL:2d::2 29.16 DEAL:2d::3 0.00 DEAL:2d::4 0.00 DEAL:2d::5 0.00 -DEAL:2d::6 42751.58 -DEAL:2d::7 50297.00 -DEAL:2d::8 55.64 +DEAL:2d::6 40889.89 +DEAL:2d::7 48106.73 +DEAL:2d::8 55.17 DEAL:2d::9 0.00 DEAL:2d::10 0.00 DEAL:2d::11 0.00 @@ -456,14 +456,14 @@ DEAL:2d::25 0.00 DEAL:2d::26 0.00 DEAL:2d::27 0.00 DEAL:2d::28 0.00 -DEAL:2d::29 42751.58 -DEAL:2d::30 53.15 -DEAL:2d::31 50297.00 -DEAL:2d::32 62.36 -DEAL:2d::33 71.02 -DEAL:2d::34 91.23 -DEAL:2d::35 91.23 -DEAL:2d::36 107.05 +DEAL:2d::29 40889.89 +DEAL:2d::30 50.83 +DEAL:2d::31 48106.73 +DEAL:2d::32 59.65 +DEAL:2d::33 70.20 +DEAL:2d::34 87.26 +DEAL:2d::35 87.26 +DEAL:2d::36 102.39 DEAL:2d::37 0.00 DEAL:2d::38 0.00 DEAL:2d::39 0.00 @@ -487,10 +487,10 @@ DEAL:2d::56 0.00 DEAL:2d::57 0.00 DEAL:2d::58 0.00 DEAL:2d::59 0.00 -DEAL:2d::60 2059.95 -DEAL:2d::61 3803.08 -DEAL:2d::62 3803.08 -DEAL:2d::63 1.71 +DEAL:2d::60 3940.49 +DEAL:2d::61 7274.93 +DEAL:2d::62 7274.93 +DEAL:2d::63 3.28 DEAL:2d::64 0.00 DEAL:2d::65 0.00 DEAL:2d::66 0.00 @@ -503,10 +503,10 @@ DEAL:2d::72 0.00 DEAL:2d::73 0.00 DEAL:2d::74 0.00 DEAL:2d::75 0.00 -DEAL:2d::76 3.00 -DEAL:2d::77 4.28 -DEAL:2d::78 6.01 -DEAL:2d::79 7.67 +DEAL:2d::76 5.74 +DEAL:2d::77 8.19 +DEAL:2d::78 11.49 +DEAL:2d::79 14.67 DEAL:2d::80 0.00 DEAL:2d::81 0.00 DEAL:2d::82 0.00 @@ -531,19 +531,19 @@ DEAL:2d::Subdomain id=1 DEAL:2d::0 0.00 DEAL:2d::1 0.00 DEAL:2d::2 0.00 -DEAL:2d::3 81.16 -DEAL:2d::4 95.16 +DEAL:2d::3 80.55 +DEAL:2d::4 94.47 DEAL:2d::5 0.00 DEAL:2d::6 0.00 DEAL:2d::7 0.00 DEAL:2d::8 0.00 -DEAL:2d::9 50297.00 -DEAL:2d::10 42751.58 -DEAL:2d::11 62.36 -DEAL:2d::12 42.12 -DEAL:2d::13 42751.58 -DEAL:2d::14 40.51 -DEAL:2d::15 50297.00 +DEAL:2d::9 48106.73 +DEAL:2d::10 40889.89 +DEAL:2d::11 59.65 +DEAL:2d::12 42.47 +DEAL:2d::13 40889.89 +DEAL:2d::14 44.31 +DEAL:2d::15 48106.73 DEAL:2d::16 0.00 DEAL:2d::17 0.00 DEAL:2d::18 0.00 @@ -565,10 +565,10 @@ DEAL:2d::33 0.00 DEAL:2d::34 0.00 DEAL:2d::35 0.00 DEAL:2d::36 0.00 -DEAL:2d::37 28892.79 -DEAL:2d::38 16291.30 -DEAL:2d::39 28.96 -DEAL:2d::40 28892.79 +DEAL:2d::37 27634.60 +DEAL:2d::38 15581.87 +DEAL:2d::39 29.16 +DEAL:2d::40 27634.60 DEAL:2d::41 0.00 DEAL:2d::42 0.00 DEAL:2d::43 0.00 @@ -581,10 +581,10 @@ DEAL:2d::49 0.00 DEAL:2d::50 0.00 DEAL:2d::51 0.00 DEAL:2d::52 0.00 -DEAL:2d::53 7.64 -DEAL:2d::54 4.24 -DEAL:2d::55 7.30 -DEAL:2d::56 2.45 +DEAL:2d::53 14.62 +DEAL:2d::54 8.11 +DEAL:2d::55 13.97 +DEAL:2d::56 4.68 DEAL:2d::57 0.00 DEAL:2d::58 0.00 DEAL:2d::59 0.00 @@ -592,10 +592,10 @@ DEAL:2d::60 0.00 DEAL:2d::61 0.00 DEAL:2d::62 0.00 DEAL:2d::63 0.00 -DEAL:2d::64 7.92 -DEAL:2d::65 5.24 -DEAL:2d::66 8.24 -DEAL:2d::67 5.45 +DEAL:2d::64 15.15 +DEAL:2d::65 10.03 +DEAL:2d::66 15.76 +DEAL:2d::67 10.43 DEAL:2d::68 0.00 DEAL:2d::69 0.00 DEAL:2d::70 0.00 @@ -608,10 +608,10 @@ DEAL:2d::76 0.00 DEAL:2d::77 0.00 DEAL:2d::78 0.00 DEAL:2d::79 0.00 -DEAL:2d::80 3.48 -DEAL:2d::81 3.00 -DEAL:2d::82 5.27 -DEAL:2d::83 4.28 +DEAL:2d::80 6.67 +DEAL:2d::81 5.74 +DEAL:2d::82 10.07 +DEAL:2d::83 8.19 DEAL:2d::84 0.00 DEAL:2d::85 0.00 DEAL:2d::86 0.00 @@ -645,9 +645,9 @@ DEAL:2d::12 0.00 DEAL:2d::13 0.00 DEAL:2d::14 0.00 DEAL:2d::15 0.00 -DEAL:2d::16 50297.00 -DEAL:2d::17 62.36 -DEAL:2d::18 50.43 +DEAL:2d::16 48106.73 +DEAL:2d::17 59.65 +DEAL:2d::18 49.53 DEAL:2d::19 0.00 DEAL:2d::20 0.00 DEAL:2d::21 0.00 @@ -670,18 +670,18 @@ DEAL:2d::37 0.00 DEAL:2d::38 0.00 DEAL:2d::39 0.00 DEAL:2d::40 0.00 -DEAL:2d::41 91.23 -DEAL:2d::42 107.05 -DEAL:2d::43 77.76 -DEAL:2d::44 79.17 -DEAL:2d::45 28892.78 -DEAL:2d::46 36.32 -DEAL:2d::47 16291.30 -DEAL:2d::48 28892.79 -DEAL:2d::49 53.15 -DEAL:2d::50 54.31 -DEAL:2d::51 42751.58 -DEAL:2d::52 50296.99 +DEAL:2d::41 87.26 +DEAL:2d::42 102.39 +DEAL:2d::43 74.37 +DEAL:2d::44 78.86 +DEAL:2d::45 27634.60 +DEAL:2d::46 34.73 +DEAL:2d::47 15581.87 +DEAL:2d::48 27634.60 +DEAL:2d::49 50.83 +DEAL:2d::50 54.04 +DEAL:2d::51 40889.89 +DEAL:2d::52 48106.72 DEAL:2d::53 0.00 DEAL:2d::54 0.00 DEAL:2d::55 0.00 @@ -713,10 +713,10 @@ DEAL:2d::80 0.00 DEAL:2d::81 0.00 DEAL:2d::82 0.00 DEAL:2d::83 0.00 -DEAL:2d::84 11362.63 -DEAL:2d::85 4.32 -DEAL:2d::86 9965.63 -DEAL:2d::87 3.51 +DEAL:2d::84 21735.64 +DEAL:2d::85 8.26 +DEAL:2d::86 19063.32 +DEAL:2d::87 6.72 DEAL:2d::88 0.00 DEAL:2d::89 0.00 DEAL:2d::90 0.00 @@ -735,7 +735,7 @@ DEAL:2d::1 0.00 DEAL:2d::2 0.00 DEAL:2d::3 0.00 DEAL:2d::4 0.00 -DEAL:2d::5 81.55 +DEAL:2d::5 85.83 DEAL:2d::6 0.00 DEAL:2d::7 0.00 DEAL:2d::8 0.00 @@ -749,16 +749,16 @@ DEAL:2d::15 0.00 DEAL:2d::16 0.00 DEAL:2d::17 0.00 DEAL:2d::18 0.00 -DEAL:2d::19 49.34 -DEAL:2d::20 50297.00 -DEAL:2d::21 42.12 -DEAL:2d::22 42751.58 -DEAL:2d::23 31.06 -DEAL:2d::24 50296.99 -DEAL:2d::25 42751.58 -DEAL:2d::26 34.50 -DEAL:2d::27 28892.79 -DEAL:2d::28 16291.30 +DEAL:2d::19 49.78 +DEAL:2d::20 48106.73 +DEAL:2d::21 42.47 +DEAL:2d::22 40889.89 +DEAL:2d::23 35.10 +DEAL:2d::24 48106.72 +DEAL:2d::25 40889.89 +DEAL:2d::26 33.86 +DEAL:2d::27 27634.60 +DEAL:2d::28 15581.87 DEAL:2d::29 0.00 DEAL:2d::30 0.00 DEAL:2d::31 0.00 @@ -787,9 +787,9 @@ DEAL:2d::53 0.00 DEAL:2d::54 0.00 DEAL:2d::55 0.00 DEAL:2d::56 0.00 -DEAL:2d::57 4.66 -DEAL:2d::58 4.66 -DEAL:2d::59 5.60 +DEAL:2d::57 9.00 +DEAL:2d::58 9.00 +DEAL:2d::59 10.71 DEAL:2d::60 0.00 DEAL:2d::61 0.00 DEAL:2d::62 0.00 @@ -798,14 +798,14 @@ DEAL:2d::64 0.00 DEAL:2d::65 0.00 DEAL:2d::66 0.00 DEAL:2d::67 0.00 -DEAL:2d::68 8.24 -DEAL:2d::69 5.45 -DEAL:2d::70 7.80 -DEAL:2d::71 5.24 -DEAL:2d::72 10.74 -DEAL:2d::73 7.80 -DEAL:2d::74 6.65 -DEAL:2d::75 2.66 +DEAL:2d::68 15.76 +DEAL:2d::69 10.43 +DEAL:2d::70 14.98 +DEAL:2d::71 10.03 +DEAL:2d::72 20.55 +DEAL:2d::73 14.98 +DEAL:2d::74 12.71 +DEAL:2d::75 5.08 DEAL:2d::76 0.00 DEAL:2d::77 0.00 DEAL:2d::78 0.00 @@ -818,18 +818,18 @@ DEAL:2d::84 0.00 DEAL:2d::85 0.00 DEAL:2d::86 0.00 DEAL:2d::87 0.00 -DEAL:2d::88 5.46 -DEAL:2d::89 4.84 -DEAL:2d::90 4.51 -DEAL:2d::91 4.06 -DEAL:2d::92 3.24 -DEAL:2d::93 2.06 -DEAL:2d::94 8189.22 -DEAL:2d::95 6104.74 -DEAL:2d::96 0.31 -DEAL:2d::97 0.28 -DEAL:2d::98 0.28 -DEAL:2d::99 0.25 +DEAL:2d::88 10.45 +DEAL:2d::89 9.25 +DEAL:2d::90 8.62 +DEAL:2d::91 7.76 +DEAL:2d::92 6.20 +DEAL:2d::93 3.93 +DEAL:2d::94 15665.22 +DEAL:2d::95 11677.80 +DEAL:2d::96 1.20 +DEAL:2d::97 1.08 +DEAL:2d::98 1.08 +DEAL:2d::99 0.96 DEAL:2d::Subdomain id=4 DEAL:2d::0 0.00 DEAL:2d::1 0.00 diff --git a/tests/deal.II/error_estimator_01/cmp/generic b/tests/deal.II/error_estimator_01/cmp/generic index 8b13789179..7f98e92a1c 100644 --- a/tests/deal.II/error_estimator_01/cmp/generic +++ b/tests/deal.II/error_estimator_01/cmp/generic @@ -1 +1,17 @@ +DEAL:2d_2::Estimated error: +DEAL:2d_2::38.98 +DEAL:2d_2::38.98 +DEAL:2d_2::39.00 +DEAL:2d_2::11.51 +DEAL:2d_2::17.27 +DEAL:2d_2::17.27 +DEAL:2d_2::0.80 +DEAL:2d_3::Estimated error: +DEAL:2d_3::38.98 +DEAL:2d_3::38.98 +DEAL:2d_3::39.00 +DEAL:2d_3::11.51 +DEAL:2d_3::17.27 +DEAL:2d_3::17.27 +DEAL:2d_3::0.80 diff --git a/tests/deal.II/fe_values_view_09/cmp/generic b/tests/deal.II/fe_values_view_09/cmp/generic index a27ac4fed7..f2292383ea 100644 --- a/tests/deal.II/fe_values_view_09/cmp/generic +++ b/tests/deal.II/fe_values_view_09/cmp/generic @@ -45,9 +45,9 @@ DEAL::184. 4.79e+03 -138. DEAL::4.80e+03 4.57e+03 4.71e+03 DEAL::-4.38e+03 4.79e+03 4.92e+03 DEAL::component=2 -DEAL::-275. -1.35e-12 -138. +DEAL::-275. -8.99e-13 -138. DEAL::-275. -459. 4.80e+03 -DEAL::-275. 2.77e-12 -138. +DEAL::-275. 9.52e-13 -138. DEAL::-275. 459. 5.02e+03 DEAL::4.67e+03 -91.8 -138. DEAL::4.67e+03 3.52e+03 4.80e+03 diff --git a/tests/deal.II/fe_values_view_10/cmp/generic b/tests/deal.II/fe_values_view_10/cmp/generic index 6164c9440b..ce7f7211b8 100644 --- a/tests/deal.II/fe_values_view_10/cmp/generic +++ b/tests/deal.II/fe_values_view_10/cmp/generic @@ -11,10 +11,10 @@ DEAL::-50.8 -779. -889. -641. DEAL::-1.43e+03 2.86e+03 2.65e+03 -2.63e+03 DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03 DEAL::component=2 -DEAL::3.32e-09 278. 209. -236. -DEAL::-4.12e-09 278. 209. -247. -DEAL::-4.38e-10 374. 46.3 -122. -DEAL::0.00 374. 46.3 -1.16e+03 +DEAL::3.99e-09 278. 209. -236. +DEAL::-6.72e-10 278. 209. -247. +DEAL::-1.25e-08 374. 46.3 -122. +DEAL::8.76e-10 374. 46.3 -1.16e+03 DEAL::component=3 DEAL::0.00 0.00 2.69e-10 9.43 DEAL::0.00 0.00 8.06e-10 9.43 @@ -36,56 +36,56 @@ DEAL::0.00 5.09e-10 -2.13e-10 -3.94e-10 1.08e-09 -3.94e-10 -1.63e-09 9.52e-10 -1 DEAL::-5.42e-10 4.92e-11 5.42e-10 1.97e-10 -8.21e-10 -3.94e-10 -2.36e-09 -7.88e-10 -5.18e-26 DEAL::0.00 4.92e-11 4.93e-11 -3.94e-10 0.00 -1.38e-09 -7.88e-10 -7.88e-10 0.00 DEAL::component=1 -DEAL::1.68e-06 -1.50e+03 -752. -1.50e+03 -1.01e-07 1.99e+04 -752. 1.99e+04 4.88e-07 -DEAL::3.02e-07 1.50e+03 752. 1.50e+03 8.51e-08 2.07e+04 752. 2.07e+04 4.58e-07 -DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 1.38e-07 1.99e+04 2.12e+04 1.99e+04 3.80e-06 -DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 1.56e-07 2.07e+04 -1.94e+04 2.07e+04 -4.37e-07 -DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -2.08e-08 1.99e+04 -752. 1.99e+04 -2.58e-08 -DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 1.09e-06 2.07e+04 752. 2.07e+04 3.03e-13 -DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -9.04e-07 1.99e+04 2.12e+04 1.99e+04 -8.68e-07 -DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 6.72e-08 2.07e+04 -1.94e+04 2.07e+04 -8.99e-07 +DEAL::4.13e-07 -1.50e+03 -752. -1.50e+03 -5.02e-08 1.99e+04 -752. 1.99e+04 -9.53e-07 +DEAL::-1.68e-07 1.50e+03 752. 1.50e+03 1.82e-07 2.07e+04 752. 2.07e+04 -3.99e-07 +DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 8.52e-07 1.99e+04 2.12e+04 1.99e+04 3.27e-06 +DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 9.12e-07 2.07e+04 -1.94e+04 2.07e+04 -8.34e-07 +DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 2.73e-07 1.99e+04 -752. 1.99e+04 5.33e-07 +DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 9.89e-07 2.07e+04 752. 2.07e+04 3.03e-13 +DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -9.17e-07 1.99e+04 2.12e+04 1.99e+04 -4.73e-07 +DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 -3.36e-08 2.07e+04 -1.94e+04 2.07e+04 -3.80e-07 DEAL::component=2 -DEAL::-2.48e-08 -1.88e+03 2.02e+04 -1.88e+03 3.25e-07 -376. 2.02e+04 -376. -6.30e-08 -DEAL::-3.77e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.51e-06 -DEAL::-3.62e-07 1.88e+03 2.11e+04 1.88e+03 1.43e-06 376. 2.11e+04 376. 7.73e-07 -DEAL::3.78e-07 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -1.37e-06 -DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 4.62e-07 +DEAL::-6.06e-08 -1.88e+03 2.02e+04 -1.88e+03 1.25e-07 -376. 2.02e+04 -376. 5.04e-07 +DEAL::-5.05e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.26e-06 +DEAL::9.23e-08 1.88e+03 2.11e+04 1.88e+03 -7.91e-07 376. 2.11e+04 376. -1.34e-07 +DEAL::-8.41e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -5.34e-07 +DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -4.41e-07 DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13 -DEAL::-1.92e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -2.52e-08 +DEAL::-1.98e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. 4.20e-08 DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00 DEAL::component=3 -DEAL::-2.82e-07 2.06e+04 -1.50e+03 2.06e+04 -9.88e-08 -752. -1.50e+03 -752. 7.71e-07 -DEAL::2.10e-07 2.06e+04 -1.50e+03 2.06e+04 2.58e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 -DEAL::2.61e-06 2.06e+04 9.89e+03 2.06e+04 -2.63e-07 -752. 9.89e+03 -752. 1.50e+03 -DEAL::-2.14e-07 2.06e+04 9.89e+03 2.06e+04 -3.18e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 -DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -5.30e-07 752. 1.50e+03 752. 2.16e-06 +DEAL::-2.60e-08 2.06e+04 -1.50e+03 2.06e+04 -4.31e-07 -752. -1.50e+03 -752. 4.48e-07 +DEAL::5.46e-08 2.06e+04 -1.50e+03 2.06e+04 1.78e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 +DEAL::3.66e-06 2.06e+04 9.89e+03 2.06e+04 -3.93e-07 -752. 9.89e+03 -752. 1.50e+03 +DEAL::-8.57e-07 2.06e+04 9.89e+03 2.06e+04 -2.68e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 +DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -4.94e-07 752. 1.50e+03 752. 1.88e-06 DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 2.25e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 -DEAL::-1.07e-06 2.15e+04 -8.16e+03 2.15e+04 -4.54e-07 752. -8.16e+03 752. 1.50e+03 -DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.64e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 +DEAL::-1.25e-06 2.15e+04 -8.16e+03 2.15e+04 -1.00e-06 752. -8.16e+03 752. 1.50e+03 +DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.47e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 DEAL::component=4 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 -1.58e-09 0.00 9.46e-09 3.88e-26 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 6.04e-09 -3.15e-09 1.26e-08 1.68e-08 -DEAL::0.00 0.00 0.00 5.25e-09 -2.89e-09 2.10e-09 5.25e-09 -2.13e-08 1.58e-08 -DEAL::0.00 0.00 0.00 0.00 -2.89e-09 0.00 0.00 -1.16e-08 -5.25e-09 -DEAL::0.00 0.00 0.00 -2.89e-09 1.31e-09 -1.58e-09 -4.20e-09 4.20e-09 -9.86e-32 -DEAL::0.00 0.00 0.00 0.00 2.63e-09 -2.63e-10 -4.20e-09 1.26e-08 1.38e-25 -DEAL::0.00 0.00 0.00 -3.41e-09 -1.31e-09 4.20e-09 -2.36e-09 1.08e-08 5.25e-09 -DEAL::0.00 0.00 0.00 0.00 0.00 -1.58e-09 0.00 -1.05e-09 0.00 +DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26 +DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08 +DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08 +DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09 +DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26 +DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31 +DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09 +DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00 DEAL::component=5 -DEAL::1.30e-09 2.63e-09 2.20e-09 -1.20e-09 -8.44e-26 -7.61e-10 1.03e-08 3.53e-25 4.35e-10 -DEAL::-2.63e-10 2.63e-09 6.41e-09 0.00 0.00 6.52e-10 -3.94e-09 2.36e-09 1.58e-08 -DEAL::4.98e-09 -3.94e-09 5.88e-09 -1.20e-09 -1.14e-25 -7.61e-10 1.93e-08 -1.05e-08 1.72e-08 -DEAL::0.00 -3.94e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09 -DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 1.24e-26 -8.70e-10 -1.81e-10 -3.68e-09 -5.69e-09 -DEAL::0.00 1.58e-09 2.63e-10 0.00 0.00 0.00 5.78e-09 4.47e-09 1.68e-25 -DEAL::-1.10e-09 -1.31e-09 1.20e-09 1.74e-09 -1.42e-25 -8.70e-10 -7.06e-10 -8.93e-09 -4.35e-10 -DEAL::0.00 0.00 -1.31e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09 +DEAL::2.35e-09 1.58e-09 2.20e-09 -1.20e-09 4.32e-26 -7.61e-10 1.14e-08 4.33e-25 4.35e-10 +DEAL::-1.31e-09 1.58e-09 6.15e-09 0.00 0.00 6.52e-10 -2.89e-09 0.00 1.58e-08 +DEAL::4.98e-09 -2.89e-09 6.14e-09 -1.20e-09 -7.35e-26 -7.61e-10 1.82e-08 -1.05e-08 2.14e-08 +DEAL::0.00 -2.89e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09 +DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 9.45e-26 -8.70e-10 -1.81e-10 -6.81e-26 -5.69e-09 +DEAL::0.00 2.63e-09 -2.63e-10 0.00 0.00 0.00 2.36e-09 5.25e-09 1.25e-25 +DEAL::-4.52e-11 -1.31e-09 9.42e-10 1.74e-09 6.17e-26 -8.70e-10 -1.76e-09 -1.26e-08 -4.35e-10 +DEAL::0.00 0.00 -1.58e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09 DEAL::component=6 -DEAL::-1.63e-10 2.68e-09 2.13e-26 1.00e-08 -1.63e-10 3.56e-26 -7.07e-10 -4.89e-10 1.10e-25 -DEAL::-4.35e-10 2.84e-09 5.25e-09 -2.84e-09 -2.17e-10 7.88e-09 -3.70e-09 2.17e-10 6.38e-25 -DEAL::1.10e-09 -3.17e-09 3.94e-09 7.57e-09 -3.17e-09 1.58e-08 -2.17e-10 -5.98e-09 6.15e-25 -DEAL::0.00 -2.63e-09 -1.31e-09 -5.25e-10 -2.63e-09 -2.63e-09 0.00 0.00 0.00 -DEAL::-1.63e-10 1.11e-09 1.13e-27 -4.71e-10 -1.63e-10 -2.63e-09 -7.07e-10 -4.89e-10 -4.91e-27 -DEAL::-4.35e-10 1.27e-09 1.00e-26 -7.43e-10 2.41e-09 3.47e-26 -3.70e-09 2.17e-10 -5.71e-26 -DEAL::-2.84e-09 -5.44e-10 1.31e-09 2.32e-09 -3.17e-09 -5.25e-09 -2.17e-10 -5.98e-09 -1.40e-25 -DEAL::0.00 0.00 0.00 -5.25e-10 0.00 -2.63e-09 0.00 0.00 0.00 +DEAL::-1.63e-10 2.42e-09 2.38e-26 4.78e-09 -1.63e-10 1.76e-26 -7.07e-10 -4.89e-10 3.15e-26 +DEAL::-4.35e-10 2.58e-09 4.20e-09 -3.37e-09 -2.17e-10 7.88e-09 -3.70e-09 2.17e-10 6.90e-25 +DEAL::1.10e-09 -3.43e-09 3.94e-09 8.10e-09 -3.17e-09 8.41e-09 -2.17e-10 -5.98e-09 6.64e-25 +DEAL::0.00 -2.89e-09 -1.31e-09 -5.25e-10 -2.63e-09 -2.63e-09 0.00 0.00 0.00 +DEAL::-1.63e-10 1.11e-09 -2.51e-27 -4.71e-10 -1.63e-10 -2.63e-09 -7.07e-10 -4.89e-10 -5.96e-26 +DEAL::-4.35e-10 1.27e-09 1.00e-26 -7.43e-10 3.08e-10 -1.08e-26 -3.70e-09 2.17e-10 -5.71e-26 +DEAL::-1.79e-09 -8.06e-10 1.31e-09 -2.41e-09 -3.17e-09 -7.87e-26 -2.17e-10 -5.98e-09 5.87e-26 +DEAL::0.00 -2.63e-10 0.00 -5.25e-10 0.00 -2.63e-09 0.00 0.00 0.00 diff --git a/tests/deal.II/fe_values_view_10_single_01/cmp/generic b/tests/deal.II/fe_values_view_10_single_01/cmp/generic index 26d0e7841a..332092d383 100644 --- a/tests/deal.II/fe_values_view_10_single_01/cmp/generic +++ b/tests/deal.II/fe_values_view_10_single_01/cmp/generic @@ -6,35 +6,35 @@ DEAL::-22.7 -530. -617. -425. DEAL::-949. 1.90e+03 1.76e+03 -1.73e+03 DEAL::-949. -1.73e+03 -1.39e+03 -877. DEAL::component=1 -DEAL::1.97e-09 188. 147. -148. -DEAL::-2.42e-09 188. 147. -204. -DEAL::-2.92e-10 174. -23.5 33.7 -DEAL::0.00 174. -23.5 -967. +DEAL::2.33e-09 188. 147. -148. +DEAL::-3.58e-10 188. 147. -204. +DEAL::-7.59e-09 174. -23.5 33.7 +DEAL::5.84e-10 174. -23.5 -967. DEAL::FE=FE_RaviartThomas<3>(1) DEAL::component=0 -DEAL::1.05e-06 -1.50e+03 -752. -1.50e+03 -1.01e-07 1.24e+04 -752. 1.24e+04 2.78e-07 -DEAL::4.29e-07 1.50e+03 752. 1.50e+03 1.38e-08 1.32e+04 752. 1.32e+04 2.06e-07 -DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 9.59e-08 1.24e+04 2.12e+04 1.24e+04 2.37e-06 -DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 1.13e-07 1.32e+04 -1.94e+04 1.32e+04 -2.69e-07 -DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -2.08e-08 1.24e+04 -752. 1.24e+04 1.62e-08 -DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 6.40e-07 1.32e+04 752. 1.32e+04 1.80e-13 -DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -5.68e-07 1.24e+04 2.12e+04 1.24e+04 -5.32e-07 -DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 2.52e-08 1.32e+04 -1.94e+04 1.32e+04 -5.63e-07 +DEAL::4.13e-07 -1.50e+03 -752. -1.50e+03 -5.02e-08 1.24e+04 -752. 1.24e+04 -5.75e-07 +DEAL::2.52e-07 1.50e+03 752. 1.50e+03 6.84e-08 1.32e+04 752. 1.32e+04 -3.15e-07 +DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 5.58e-07 1.24e+04 2.12e+04 1.24e+04 2.05e-06 +DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 5.76e-07 1.32e+04 -1.94e+04 1.32e+04 -5.40e-07 +DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 1.89e-07 1.24e+04 -752. 1.24e+04 3.23e-07 +DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 6.23e-07 1.32e+04 752. 1.32e+04 1.80e-13 +DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -5.39e-07 1.24e+04 2.12e+04 1.24e+04 -2.63e-07 +DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 8.41e-09 1.32e+04 -1.94e+04 1.32e+04 -2.54e-07 DEAL::component=1 -DEAL::-6.69e-08 -1.88e+03 1.27e+04 -1.88e+03 4.09e-07 -376. 1.27e+04 -376. -2.10e-08 -DEAL::-2.50e-07 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 2.17e-06 -DEAL::-2.23e-07 1.88e+03 1.36e+04 1.88e+03 8.38e-07 376. 1.36e+04 376. 4.79e-07 -DEAL::2.52e-07 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 -8.66e-07 -DEAL::-8.02e-09 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. 2.94e-07 +DEAL::-6.06e-08 -1.88e+03 1.27e+04 -1.88e+03 2.93e-07 -376. 1.27e+04 -376. 2.94e-07 +DEAL::-2.95e-07 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 2.08e-06 +DEAL::2.11e-08 1.88e+03 1.36e+04 1.88e+03 -3.29e-07 376. 1.36e+04 376. -9.25e-08 +DEAL::0.00 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 -3.24e-07 +DEAL::-8.02e-09 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. -2.73e-07 DEAL::-2.14e-08 1.48e+04 1.27e+04 1.48e+04 -2.71e+04 1.63e+04 1.27e+04 1.63e+04 4.27e-13 -DEAL::-1.23e-06 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. -2.52e-08 +DEAL::-1.26e-06 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. 2.05e-13 DEAL::0.00 -1.30e+04 1.36e+04 -1.30e+04 -2.71e+04 -1.46e+04 1.36e+04 -1.46e+04 0.00 DEAL::component=2 -DEAL::-1.98e-07 1.31e+04 -1.50e+03 1.31e+04 -9.88e-08 -752. -1.50e+03 -752. 6.45e-07 -DEAL::1.26e-07 1.31e+04 -1.50e+03 1.31e+04 1.61e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 -DEAL::1.60e-06 1.31e+04 9.89e+03 1.31e+04 -1.37e-07 -752. 9.89e+03 -752. 1.50e+03 -DEAL::-1.30e-07 1.31e+04 9.89e+03 1.31e+04 -1.96e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 -DEAL::-1.10e-07 1.40e+04 1.50e+03 1.40e+04 -3.61e-07 752. 1.50e+03 752. 1.37e-06 -DEAL::0.00 1.40e+04 1.50e+03 1.40e+04 1.46e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 -DEAL::-7.07e-07 1.40e+04 -8.16e+03 1.40e+04 -2.86e-07 752. -8.16e+03 752. 1.50e+03 -DEAL::0.00 1.40e+04 -8.16e+03 1.40e+04 2.37e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 +DEAL::-6.80e-08 1.31e+04 -1.50e+03 1.31e+04 -3.05e-07 -752. -1.50e+03 -752. 4.90e-07 +DEAL::5.46e-08 1.31e+04 -1.50e+03 1.31e+04 1.11e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 +DEAL::2.24e-06 1.31e+04 9.89e+03 1.31e+04 -2.25e-07 -752. 9.89e+03 -752. 1.50e+03 +DEAL::-5.21e-07 1.31e+04 9.89e+03 1.31e+04 -1.67e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 +DEAL::-1.10e-07 1.40e+04 1.50e+03 1.40e+04 -3.26e-07 752. 1.50e+03 752. 1.29e-06 +DEAL::0.00 1.40e+04 1.50e+03 1.40e+04 1.45e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 +DEAL::-7.99e-07 1.40e+04 -8.16e+03 1.40e+04 -6.22e-07 752. -8.16e+03 752. 1.50e+03 +DEAL::0.00 1.40e+04 -8.16e+03 1.40e+04 2.21e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 diff --git a/tests/deal.II/fe_values_view_10_single_03/cmp/generic b/tests/deal.II/fe_values_view_10_single_03/cmp/generic index eef21cbf99..427b559a04 100644 --- a/tests/deal.II/fe_values_view_10_single_03/cmp/generic +++ b/tests/deal.II/fe_values_view_10_single_03/cmp/generic @@ -6,35 +6,35 @@ DEAL::-22.7 -530. -617. -425. DEAL::-949. 1.90e+03 1.76e+03 -1.73e+03 DEAL::-949. -1.73e+03 -1.39e+03 -877. DEAL::component=1 -DEAL::1.97e-09 188. 147. -148. -DEAL::-2.42e-09 188. 147. -204. -DEAL::-2.92e-10 174. -23.5 33.7 -DEAL::0.00 174. -23.5 -967. +DEAL::2.33e-09 188. 147. -148. +DEAL::-3.58e-10 188. 147. -204. +DEAL::-7.59e-09 174. -23.5 33.7 +DEAL::5.84e-10 174. -23.5 -967. DEAL::FE=FESystem<3>[FE_RaviartThomas<3>(1)] DEAL::component=0 -DEAL::1.05e-06 -1.50e+03 -752. -1.50e+03 -1.01e-07 1.24e+04 -752. 1.24e+04 2.78e-07 -DEAL::4.29e-07 1.50e+03 752. 1.50e+03 1.38e-08 1.32e+04 752. 1.32e+04 2.06e-07 -DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 9.59e-08 1.24e+04 2.12e+04 1.24e+04 2.37e-06 -DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 1.13e-07 1.32e+04 -1.94e+04 1.32e+04 -2.69e-07 -DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -2.08e-08 1.24e+04 -752. 1.24e+04 1.62e-08 -DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 6.40e-07 1.32e+04 752. 1.32e+04 1.80e-13 -DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -5.68e-07 1.24e+04 2.12e+04 1.24e+04 -5.32e-07 -DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 2.52e-08 1.32e+04 -1.94e+04 1.32e+04 -5.63e-07 +DEAL::4.13e-07 -1.50e+03 -752. -1.50e+03 -5.02e-08 1.24e+04 -752. 1.24e+04 -5.75e-07 +DEAL::2.52e-07 1.50e+03 752. 1.50e+03 6.84e-08 1.32e+04 752. 1.32e+04 -3.15e-07 +DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 5.58e-07 1.24e+04 2.12e+04 1.24e+04 2.05e-06 +DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 5.76e-07 1.32e+04 -1.94e+04 1.32e+04 -5.40e-07 +DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 1.89e-07 1.24e+04 -752. 1.24e+04 3.23e-07 +DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 6.23e-07 1.32e+04 752. 1.32e+04 1.80e-13 +DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -5.39e-07 1.24e+04 2.12e+04 1.24e+04 -2.63e-07 +DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 8.41e-09 1.32e+04 -1.94e+04 1.32e+04 -2.54e-07 DEAL::component=1 -DEAL::-6.69e-08 -1.88e+03 1.27e+04 -1.88e+03 4.09e-07 -376. 1.27e+04 -376. -2.10e-08 -DEAL::-2.50e-07 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 2.17e-06 -DEAL::-2.23e-07 1.88e+03 1.36e+04 1.88e+03 8.38e-07 376. 1.36e+04 376. 4.79e-07 -DEAL::2.52e-07 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 -8.66e-07 -DEAL::-8.02e-09 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. 2.94e-07 +DEAL::-6.06e-08 -1.88e+03 1.27e+04 -1.88e+03 2.93e-07 -376. 1.27e+04 -376. 2.94e-07 +DEAL::-2.95e-07 -1.88e+03 1.27e+04 -1.88e+03 3.76e+03 1.63e+04 1.27e+04 1.63e+04 2.08e-06 +DEAL::2.11e-08 1.88e+03 1.36e+04 1.88e+03 -3.29e-07 376. 1.36e+04 376. -9.25e-08 +DEAL::0.00 1.88e+03 1.36e+04 1.88e+03 3.76e+03 -1.46e+04 1.36e+04 -1.46e+04 -3.24e-07 +DEAL::-8.02e-09 1.48e+04 1.27e+04 1.48e+04 752. -376. 1.27e+04 -376. -2.73e-07 DEAL::-2.14e-08 1.48e+04 1.27e+04 1.48e+04 -2.71e+04 1.63e+04 1.27e+04 1.63e+04 4.27e-13 -DEAL::-1.23e-06 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. -2.52e-08 +DEAL::-1.26e-06 -1.30e+04 1.36e+04 -1.30e+04 752. 376. 1.36e+04 376. 2.05e-13 DEAL::0.00 -1.30e+04 1.36e+04 -1.30e+04 -2.71e+04 -1.46e+04 1.36e+04 -1.46e+04 0.00 DEAL::component=2 -DEAL::-1.98e-07 1.31e+04 -1.50e+03 1.31e+04 -9.88e-08 -752. -1.50e+03 -752. 6.45e-07 -DEAL::1.26e-07 1.31e+04 -1.50e+03 1.31e+04 1.61e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 -DEAL::1.60e-06 1.31e+04 9.89e+03 1.31e+04 -1.37e-07 -752. 9.89e+03 -752. 1.50e+03 -DEAL::-1.30e-07 1.31e+04 9.89e+03 1.31e+04 -1.96e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 -DEAL::-1.10e-07 1.40e+04 1.50e+03 1.40e+04 -3.61e-07 752. 1.50e+03 752. 1.37e-06 -DEAL::0.00 1.40e+04 1.50e+03 1.40e+04 1.46e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 -DEAL::-7.07e-07 1.40e+04 -8.16e+03 1.40e+04 -2.86e-07 752. -8.16e+03 752. 1.50e+03 -DEAL::0.00 1.40e+04 -8.16e+03 1.40e+04 2.37e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 +DEAL::-6.80e-08 1.31e+04 -1.50e+03 1.31e+04 -3.05e-07 -752. -1.50e+03 -752. 4.90e-07 +DEAL::5.46e-08 1.31e+04 -1.50e+03 1.31e+04 1.11e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 +DEAL::2.24e-06 1.31e+04 9.89e+03 1.31e+04 -2.25e-07 -752. 9.89e+03 -752. 1.50e+03 +DEAL::-5.21e-07 1.31e+04 9.89e+03 1.31e+04 -1.67e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 +DEAL::-1.10e-07 1.40e+04 1.50e+03 1.40e+04 -3.26e-07 752. 1.50e+03 752. 1.29e-06 +DEAL::0.00 1.40e+04 1.50e+03 1.40e+04 1.45e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 +DEAL::-7.99e-07 1.40e+04 -8.16e+03 1.40e+04 -6.22e-07 752. -8.16e+03 752. 1.50e+03 +DEAL::0.00 1.40e+04 -8.16e+03 1.40e+04 2.21e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 diff --git a/tests/deal.II/fe_values_view_15/cmp/generic b/tests/deal.II/fe_values_view_15/cmp/generic index f7d62a8702..dbf3621bf0 100644 --- a/tests/deal.II/fe_values_view_15/cmp/generic +++ b/tests/deal.II/fe_values_view_15/cmp/generic @@ -40,13 +40,13 @@ DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(0)] DEAL::component=0 DEAL::2.37 4.73 9.46 DEAL::-5.39e-12 -275. -138. -DEAL::-275. -1.35e-12 -138. +DEAL::-275. -8.99e-13 -138. DEAL::2.37 4.73 9.46 DEAL::5.50e-12 -275. -138. DEAL::-275. -459. 4.80e+03 DEAL::2.37 4.73 9.46 DEAL::-367. -275. 4.71e+03 -DEAL::-275. 2.77e-12 -138. +DEAL::-275. 9.52e-13 -138. DEAL::2.37 4.73 9.46 DEAL::367. -275. 4.92e+03 DEAL::-275. 459. 5.02e+03 @@ -64,13 +64,13 @@ DEAL::-4.38e+03 4.79e+03 4.92e+03 DEAL::4.88e+03 -3.09e+03 5.02e+03 DEAL::component=1 DEAL::-5.39e-12 -275. -138. -DEAL::-275. -1.35e-12 -138. +DEAL::-275. -8.99e-13 -138. DEAL::-275. -138. -1.82e-12 DEAL::5.50e-12 -275. -138. DEAL::-275. -459. 4.80e+03 DEAL::-275. 4.90e+03 -367. DEAL::-367. -275. 4.71e+03 -DEAL::-275. 2.77e-12 -138. +DEAL::-275. 9.52e-13 -138. DEAL::4.76e+03 -138. -184. DEAL::367. -275. 4.92e+03 DEAL::-275. 459. 5.02e+03 @@ -88,13 +88,13 @@ DEAL::-4.38e+03 4.79e+03 4.92e+03 DEAL::4.88e+03 -3.09e+03 5.02e+03 DEAL::4.97e+03 5.11e+03 -1.81e+03 DEAL::component=2 -DEAL::-275. -1.35e-12 -138. +DEAL::-275. -8.99e-13 -138. DEAL::-275. -138. -1.82e-12 DEAL::0.00 5.60 22.4 DEAL::-275. -459. 4.80e+03 DEAL::-275. 4.90e+03 -367. DEAL::0.00 5.60 22.4 -DEAL::-275. 2.77e-12 -138. +DEAL::-275. 9.52e-13 -138. DEAL::4.76e+03 -138. -184. DEAL::0.00 5.60 22.4 DEAL::-275. 459. 5.02e+03 diff --git a/tests/deal.II/fe_values_view_16/cmp/generic b/tests/deal.II/fe_values_view_16/cmp/generic index e31d8cc541..869e6e5165 100644 --- a/tests/deal.II/fe_values_view_16/cmp/generic +++ b/tests/deal.II/fe_values_view_16/cmp/generic @@ -11,21 +11,21 @@ DEAL::0.00 3.45 3.45 3.99 DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03 DEAL::component=1 DEAL::-50.8 877. 848. -953. -DEAL::3.32e-09 278. 209. -236. +DEAL::3.99e-09 278. 209. -236. DEAL::-50.8 -779. -889. -641. -DEAL::-4.12e-09 278. 209. -247. +DEAL::-6.72e-10 278. 209. -247. DEAL::-1.43e+03 2.86e+03 2.65e+03 -2.63e+03 -DEAL::-4.38e-10 374. 46.3 -122. +DEAL::-1.25e-08 374. 46.3 -122. DEAL::-1.43e+03 -2.60e+03 -2.12e+03 -1.44e+03 -DEAL::0.00 374. 46.3 -1.16e+03 +DEAL::8.76e-10 374. 46.3 -1.16e+03 DEAL::component=2 -DEAL::3.32e-09 278. 209. -236. +DEAL::3.99e-09 278. 209. -236. DEAL::0.00 0.00 2.69e-10 9.43 -DEAL::-4.12e-09 278. 209. -247. +DEAL::-6.72e-10 278. 209. -247. DEAL::0.00 0.00 8.06e-10 9.43 -DEAL::-4.38e-10 374. 46.3 -122. +DEAL::-1.25e-08 374. 46.3 -122. DEAL::0.00 0.00 -8.76e-10 25.0 -DEAL::0.00 374. 46.3 -1.16e+03 +DEAL::8.76e-10 374. 46.3 -1.16e+03 DEAL::0.00 0.00 8.76e-10 25.0 DEAL::component=3 DEAL::0.00 0.00 2.69e-10 9.43 @@ -39,126 +39,126 @@ DEAL::8.76e-10 25.0 50.0 57.8 DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_RaviartThomas<3>(1)-FE_Nedelec<3>(0)] DEAL::component=0 DEAL::0.00 9.85e-10 5.09e-10 1.54e-09 2.44e-26 5.91e-10 3.28e-10 4.60e-10 -2.17e-09 -DEAL::1.68e-06 -1.50e+03 -752. -1.50e+03 -1.01e-07 1.99e+04 -752. 1.99e+04 4.88e-07 -DEAL::-2.48e-08 -1.88e+03 2.02e+04 -1.88e+03 3.25e-07 -376. 2.02e+04 -376. -6.30e-08 +DEAL::4.13e-07 -1.50e+03 -752. -1.50e+03 -5.02e-08 1.99e+04 -752. 1.99e+04 -9.53e-07 +DEAL::-6.06e-08 -1.88e+03 2.02e+04 -1.88e+03 1.25e-07 -376. 2.02e+04 -376. 5.04e-07 DEAL::0.00 9.85e-10 1.74e-09 -1.38e-09 0.00 2.53e-09 -1.30e-09 5.58e-10 1.64e-09 -DEAL::3.02e-07 1.50e+03 752. 1.50e+03 8.51e-08 2.07e+04 752. 2.07e+04 4.58e-07 -DEAL::-3.77e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.51e-06 +DEAL::-1.68e-07 1.50e+03 752. 1.50e+03 1.82e-07 2.07e+04 752. 2.07e+04 -3.99e-07 +DEAL::-5.05e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.26e-06 DEAL::4.27e-10 -1.18e-09 1.26e-09 2.89e-09 -8.21e-10 2.89e-09 -8.54e-10 -7.88e-10 1.64e-09 -DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 1.38e-07 1.99e+04 2.12e+04 1.99e+04 3.80e-06 -DEAL::-3.62e-07 1.88e+03 2.11e+04 1.88e+03 1.43e-06 376. 2.11e+04 376. 7.73e-07 +DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 8.52e-07 1.99e+04 2.12e+04 1.99e+04 3.27e-06 +DEAL::9.23e-08 1.88e+03 2.11e+04 1.88e+03 -7.91e-07 376. 2.11e+04 376. -1.34e-07 DEAL::0.00 -1.18e-09 -2.30e-10 -3.94e-10 -8.21e-10 -4.60e-10 -7.88e-10 -7.88e-10 -2.17e-09 -DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 1.56e-07 2.07e+04 -1.94e+04 2.07e+04 -4.37e-07 -DEAL::3.78e-07 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -1.37e-06 +DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 9.12e-07 2.07e+04 -1.94e+04 2.07e+04 -8.34e-07 +DEAL::-8.41e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -5.34e-07 DEAL::0.00 5.09e-10 -1.97e-10 1.97e-10 -1.94e-26 -1.38e-09 3.28e-10 4.60e-10 3.23e-27 -DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -2.08e-08 1.99e+04 -752. 1.99e+04 -2.58e-08 -DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 4.62e-07 +DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 2.73e-07 1.99e+04 -752. 1.99e+04 5.33e-07 +DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -4.41e-07 DEAL::0.00 5.09e-10 -2.13e-10 -3.94e-10 1.08e-09 -3.94e-10 -1.63e-09 9.52e-10 -1.11e-26 -DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 1.09e-06 2.07e+04 752. 2.07e+04 3.03e-13 +DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 9.89e-07 2.07e+04 752. 2.07e+04 3.03e-13 DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13 DEAL::-5.42e-10 4.92e-11 5.42e-10 1.97e-10 -8.21e-10 -3.94e-10 -2.36e-09 -7.88e-10 -5.18e-26 -DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -9.04e-07 1.99e+04 2.12e+04 1.99e+04 -8.68e-07 -DEAL::-1.92e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -2.52e-08 +DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -9.17e-07 1.99e+04 2.12e+04 1.99e+04 -4.73e-07 +DEAL::-1.98e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. 4.20e-08 DEAL::0.00 4.92e-11 4.93e-11 -3.94e-10 0.00 -1.38e-09 -7.88e-10 -7.88e-10 0.00 -DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 6.72e-08 2.07e+04 -1.94e+04 2.07e+04 -8.99e-07 +DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 -3.36e-08 2.07e+04 -1.94e+04 2.07e+04 -3.80e-07 DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00 DEAL::component=1 -DEAL::1.68e-06 -1.50e+03 -752. -1.50e+03 -1.01e-07 1.99e+04 -752. 1.99e+04 4.88e-07 -DEAL::-2.48e-08 -1.88e+03 2.02e+04 -1.88e+03 3.25e-07 -376. 2.02e+04 -376. -6.30e-08 -DEAL::-2.82e-07 2.06e+04 -1.50e+03 2.06e+04 -9.88e-08 -752. -1.50e+03 -752. 7.71e-07 -DEAL::3.02e-07 1.50e+03 752. 1.50e+03 8.51e-08 2.07e+04 752. 2.07e+04 4.58e-07 -DEAL::-3.77e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.51e-06 -DEAL::2.10e-07 2.06e+04 -1.50e+03 2.06e+04 2.58e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 -DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 1.38e-07 1.99e+04 2.12e+04 1.99e+04 3.80e-06 -DEAL::-3.62e-07 1.88e+03 2.11e+04 1.88e+03 1.43e-06 376. 2.11e+04 376. 7.73e-07 -DEAL::2.61e-06 2.06e+04 9.89e+03 2.06e+04 -2.63e-07 -752. 9.89e+03 -752. 1.50e+03 -DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 1.56e-07 2.07e+04 -1.94e+04 2.07e+04 -4.37e-07 -DEAL::3.78e-07 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -1.37e-06 -DEAL::-2.14e-07 2.06e+04 9.89e+03 2.06e+04 -3.18e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 -DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 -2.08e-08 1.99e+04 -752. 1.99e+04 -2.58e-08 -DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 4.62e-07 -DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -5.30e-07 752. 1.50e+03 752. 2.16e-06 -DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 1.09e-06 2.07e+04 752. 2.07e+04 3.03e-13 +DEAL::4.13e-07 -1.50e+03 -752. -1.50e+03 -5.02e-08 1.99e+04 -752. 1.99e+04 -9.53e-07 +DEAL::-6.06e-08 -1.88e+03 2.02e+04 -1.88e+03 1.25e-07 -376. 2.02e+04 -376. 5.04e-07 +DEAL::-2.60e-08 2.06e+04 -1.50e+03 2.06e+04 -4.31e-07 -752. -1.50e+03 -752. 4.48e-07 +DEAL::-1.68e-07 1.50e+03 752. 1.50e+03 1.82e-07 2.07e+04 752. 2.07e+04 -3.99e-07 +DEAL::-5.05e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.26e-06 +DEAL::5.46e-08 2.06e+04 -1.50e+03 2.06e+04 1.78e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 +DEAL::3.01e+03 -1.50e+03 2.12e+04 -1.50e+03 8.52e-07 1.99e+04 2.12e+04 1.99e+04 3.27e-06 +DEAL::9.23e-08 1.88e+03 2.11e+04 1.88e+03 -7.91e-07 376. 2.11e+04 376. -1.34e-07 +DEAL::3.66e-06 2.06e+04 9.89e+03 2.06e+04 -3.93e-07 -752. 9.89e+03 -752. 1.50e+03 +DEAL::3.01e+03 1.50e+03 -1.94e+04 1.50e+03 9.12e-07 2.07e+04 -1.94e+04 2.07e+04 -8.34e-07 +DEAL::-8.41e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -5.34e-07 +DEAL::-8.57e-07 2.06e+04 9.89e+03 2.06e+04 -2.68e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 +DEAL::1.50e+03 2.04e+04 -752. 2.04e+04 2.73e-07 1.99e+04 -752. 1.99e+04 5.33e-07 +DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -4.41e-07 +DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -4.94e-07 752. 1.50e+03 752. 1.88e-06 +DEAL::1.50e+03 -1.87e+04 752. -1.87e+04 9.89e-07 2.07e+04 752. 2.07e+04 3.03e-13 DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13 DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 2.25e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 -DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -9.04e-07 1.99e+04 2.12e+04 1.99e+04 -8.68e-07 -DEAL::-1.92e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -2.52e-08 -DEAL::-1.07e-06 2.15e+04 -8.16e+03 2.15e+04 -4.54e-07 752. -8.16e+03 752. 1.50e+03 -DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 6.72e-08 2.07e+04 -1.94e+04 2.07e+04 -8.99e-07 +DEAL::-3.76e+04 2.04e+04 2.12e+04 2.04e+04 -9.17e-07 1.99e+04 2.12e+04 1.99e+04 -4.73e-07 +DEAL::-1.98e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. 4.20e-08 +DEAL::-1.25e-06 2.15e+04 -8.16e+03 2.15e+04 -1.00e-06 752. -8.16e+03 752. 1.50e+03 +DEAL::-3.76e+04 -1.87e+04 -1.94e+04 -1.87e+04 -3.36e-08 2.07e+04 -1.94e+04 2.07e+04 -3.80e-07 DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00 -DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.64e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 +DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.47e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 DEAL::component=2 -DEAL::-2.48e-08 -1.88e+03 2.02e+04 -1.88e+03 3.25e-07 -376. 2.02e+04 -376. -6.30e-08 -DEAL::-2.82e-07 2.06e+04 -1.50e+03 2.06e+04 -9.88e-08 -752. -1.50e+03 -752. 7.71e-07 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 -1.58e-09 0.00 9.46e-09 3.88e-26 -DEAL::-3.77e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.51e-06 -DEAL::2.10e-07 2.06e+04 -1.50e+03 2.06e+04 2.58e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 6.04e-09 -3.15e-09 1.26e-08 1.68e-08 -DEAL::-3.62e-07 1.88e+03 2.11e+04 1.88e+03 1.43e-06 376. 2.11e+04 376. 7.73e-07 -DEAL::2.61e-06 2.06e+04 9.89e+03 2.06e+04 -2.63e-07 -752. 9.89e+03 -752. 1.50e+03 -DEAL::0.00 0.00 0.00 5.25e-09 -2.89e-09 2.10e-09 5.25e-09 -2.13e-08 1.58e-08 -DEAL::3.78e-07 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -1.37e-06 -DEAL::-2.14e-07 2.06e+04 9.89e+03 2.06e+04 -3.18e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 -DEAL::0.00 0.00 0.00 0.00 -2.89e-09 0.00 0.00 -1.16e-08 -5.25e-09 -DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. 4.62e-07 -DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -5.30e-07 752. 1.50e+03 752. 2.16e-06 -DEAL::0.00 0.00 0.00 -2.89e-09 1.31e-09 -1.58e-09 -4.20e-09 4.20e-09 -9.86e-32 +DEAL::-6.06e-08 -1.88e+03 2.02e+04 -1.88e+03 1.25e-07 -376. 2.02e+04 -376. 5.04e-07 +DEAL::-2.60e-08 2.06e+04 -1.50e+03 2.06e+04 -4.31e-07 -752. -1.50e+03 -752. 4.48e-07 +DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26 +DEAL::-5.05e-07 -1.88e+03 2.02e+04 -1.88e+03 3.76e+03 1.63e+04 2.02e+04 1.63e+04 3.26e-06 +DEAL::5.46e-08 2.06e+04 -1.50e+03 2.06e+04 1.78e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 +DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08 +DEAL::9.23e-08 1.88e+03 2.11e+04 1.88e+03 -7.91e-07 376. 2.11e+04 376. -1.34e-07 +DEAL::3.66e-06 2.06e+04 9.89e+03 2.06e+04 -3.93e-07 -752. 9.89e+03 -752. 1.50e+03 +DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08 +DEAL::-8.41e-08 1.88e+03 2.11e+04 1.88e+03 3.76e+03 -1.46e+04 2.11e+04 -1.46e+04 -5.34e-07 +DEAL::-8.57e-07 2.06e+04 9.89e+03 2.06e+04 -2.68e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 +DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09 +DEAL::-8.02e-09 1.48e+04 2.02e+04 1.48e+04 752. -376. 2.02e+04 -376. -4.41e-07 +DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -4.94e-07 752. 1.50e+03 752. 1.88e-06 +DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26 DEAL::-2.14e-08 1.48e+04 2.02e+04 1.48e+04 -2.71e+04 1.63e+04 2.02e+04 1.63e+04 5.50e-13 DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 2.25e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 -DEAL::0.00 0.00 0.00 0.00 2.63e-09 -2.63e-10 -4.20e-09 1.26e-08 1.38e-25 -DEAL::-1.92e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. -2.52e-08 -DEAL::-1.07e-06 2.15e+04 -8.16e+03 2.15e+04 -4.54e-07 752. -8.16e+03 752. 1.50e+03 -DEAL::0.00 0.00 0.00 -3.41e-09 -1.31e-09 4.20e-09 -2.36e-09 1.08e-08 5.25e-09 +DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31 +DEAL::-1.98e-06 -1.30e+04 2.11e+04 -1.30e+04 752. 376. 2.11e+04 376. 4.20e-08 +DEAL::-1.25e-06 2.15e+04 -8.16e+03 2.15e+04 -1.00e-06 752. -8.16e+03 752. 1.50e+03 +DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09 DEAL::0.00 -1.30e+04 2.11e+04 -1.30e+04 -2.71e+04 -1.46e+04 2.11e+04 -1.46e+04 0.00 -DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.64e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 -DEAL::0.00 0.00 0.00 0.00 0.00 -1.58e-09 0.00 -1.05e-09 0.00 +DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.47e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 +DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00 DEAL::component=3 -DEAL::-2.82e-07 2.06e+04 -1.50e+03 2.06e+04 -9.88e-08 -752. -1.50e+03 -752. 7.71e-07 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 -1.58e-09 0.00 9.46e-09 3.88e-26 -DEAL::1.30e-09 2.63e-09 2.20e-09 -1.20e-09 -8.44e-26 -7.61e-10 1.03e-08 3.53e-25 4.35e-10 -DEAL::2.10e-07 2.06e+04 -1.50e+03 2.06e+04 2.58e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 6.04e-09 -3.15e-09 1.26e-08 1.68e-08 -DEAL::-2.63e-10 2.63e-09 6.41e-09 0.00 0.00 6.52e-10 -3.94e-09 2.36e-09 1.58e-08 -DEAL::2.61e-06 2.06e+04 9.89e+03 2.06e+04 -2.63e-07 -752. 9.89e+03 -752. 1.50e+03 -DEAL::0.00 0.00 0.00 5.25e-09 -2.89e-09 2.10e-09 5.25e-09 -2.13e-08 1.58e-08 -DEAL::4.98e-09 -3.94e-09 5.88e-09 -1.20e-09 -1.14e-25 -7.61e-10 1.93e-08 -1.05e-08 1.72e-08 -DEAL::-2.14e-07 2.06e+04 9.89e+03 2.06e+04 -3.18e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 -DEAL::0.00 0.00 0.00 0.00 -2.89e-09 0.00 0.00 -1.16e-08 -5.25e-09 -DEAL::0.00 -3.94e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09 -DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -5.30e-07 752. 1.50e+03 752. 2.16e-06 -DEAL::0.00 0.00 0.00 -2.89e-09 1.31e-09 -1.58e-09 -4.20e-09 4.20e-09 -9.86e-32 -DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 1.24e-26 -8.70e-10 -1.81e-10 -3.68e-09 -5.69e-09 +DEAL::-2.60e-08 2.06e+04 -1.50e+03 2.06e+04 -4.31e-07 -752. -1.50e+03 -752. 4.48e-07 +DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26 +DEAL::2.35e-09 1.58e-09 2.20e-09 -1.20e-09 4.32e-26 -7.61e-10 1.14e-08 4.33e-25 4.35e-10 +DEAL::5.46e-08 2.06e+04 -1.50e+03 2.06e+04 1.78e-06 1.06e+04 -1.50e+03 1.06e+04 3.01e+03 +DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08 +DEAL::-1.31e-09 1.58e-09 6.15e-09 0.00 0.00 6.52e-10 -2.89e-09 0.00 1.58e-08 +DEAL::3.66e-06 2.06e+04 9.89e+03 2.06e+04 -3.93e-07 -752. 9.89e+03 -752. 1.50e+03 +DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08 +DEAL::4.98e-09 -2.89e-09 6.14e-09 -1.20e-09 -7.35e-26 -7.61e-10 1.82e-08 -1.05e-08 2.14e-08 +DEAL::-8.57e-07 2.06e+04 9.89e+03 2.06e+04 -2.68e-06 1.06e+04 9.89e+03 1.06e+04 -1.65e+04 +DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09 +DEAL::0.00 -2.89e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09 +DEAL::-1.81e-07 2.15e+04 1.50e+03 2.15e+04 -4.94e-07 752. 1.50e+03 752. 1.88e-06 +DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26 +DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 9.45e-26 -8.70e-10 -1.81e-10 -6.81e-26 -5.69e-09 DEAL::0.00 2.15e+04 1.50e+03 2.15e+04 2.25e-06 -8.91e+03 1.50e+03 -8.91e+03 3.01e+03 -DEAL::0.00 0.00 0.00 0.00 2.63e-09 -2.63e-10 -4.20e-09 1.26e-08 1.38e-25 -DEAL::0.00 1.58e-09 2.63e-10 0.00 0.00 0.00 5.78e-09 4.47e-09 1.68e-25 -DEAL::-1.07e-06 2.15e+04 -8.16e+03 2.15e+04 -4.54e-07 752. -8.16e+03 752. 1.50e+03 -DEAL::0.00 0.00 0.00 -3.41e-09 -1.31e-09 4.20e-09 -2.36e-09 1.08e-08 5.25e-09 -DEAL::-1.10e-09 -1.31e-09 1.20e-09 1.74e-09 -1.42e-25 -8.70e-10 -7.06e-10 -8.93e-09 -4.35e-10 -DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.64e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 -DEAL::0.00 0.00 0.00 0.00 0.00 -1.58e-09 0.00 -1.05e-09 0.00 -DEAL::0.00 0.00 -1.31e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09 +DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31 +DEAL::0.00 2.63e-09 -2.63e-10 0.00 0.00 0.00 2.36e-09 5.25e-09 1.25e-25 +DEAL::-1.25e-06 2.15e+04 -8.16e+03 2.15e+04 -1.00e-06 752. -8.16e+03 752. 1.50e+03 +DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09 +DEAL::-4.52e-11 -1.31e-09 9.42e-10 1.74e-09 6.17e-26 -8.70e-10 -1.76e-09 -1.26e-08 -4.35e-10 +DEAL::0.00 2.15e+04 -8.16e+03 2.15e+04 3.47e-07 -8.91e+03 -8.16e+03 -8.91e+03 -1.65e+04 +DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00 +DEAL::0.00 0.00 -1.58e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09 DEAL::component=4 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 -1.58e-09 0.00 9.46e-09 3.88e-26 -DEAL::1.30e-09 2.63e-09 2.20e-09 -1.20e-09 -8.44e-26 -7.61e-10 1.03e-08 3.53e-25 4.35e-10 -DEAL::-1.63e-10 2.68e-09 2.13e-26 1.00e-08 -1.63e-10 3.56e-26 -7.07e-10 -4.89e-10 1.10e-25 -DEAL::0.00 0.00 0.00 -1.31e-09 1.58e-09 6.04e-09 -3.15e-09 1.26e-08 1.68e-08 -DEAL::-2.63e-10 2.63e-09 6.41e-09 0.00 0.00 6.52e-10 -3.94e-09 2.36e-09 1.58e-08 -DEAL::-4.35e-10 2.84e-09 5.25e-09 -2.84e-09 -2.17e-10 7.88e-09 -3.70e-09 2.17e-10 6.38e-25 -DEAL::0.00 0.00 0.00 5.25e-09 -2.89e-09 2.10e-09 5.25e-09 -2.13e-08 1.58e-08 -DEAL::4.98e-09 -3.94e-09 5.88e-09 -1.20e-09 -1.14e-25 -7.61e-10 1.93e-08 -1.05e-08 1.72e-08 -DEAL::1.10e-09 -3.17e-09 3.94e-09 7.57e-09 -3.17e-09 1.58e-08 -2.17e-10 -5.98e-09 6.15e-25 -DEAL::0.00 0.00 0.00 0.00 -2.89e-09 0.00 0.00 -1.16e-08 -5.25e-09 -DEAL::0.00 -3.94e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09 -DEAL::0.00 -2.63e-09 -1.31e-09 -5.25e-10 -2.63e-09 -2.63e-09 0.00 0.00 0.00 -DEAL::0.00 0.00 0.00 -2.89e-09 1.31e-09 -1.58e-09 -4.20e-09 4.20e-09 -9.86e-32 -DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 1.24e-26 -8.70e-10 -1.81e-10 -3.68e-09 -5.69e-09 -DEAL::-1.63e-10 1.11e-09 1.13e-27 -4.71e-10 -1.63e-10 -2.63e-09 -7.07e-10 -4.89e-10 -4.91e-27 -DEAL::0.00 0.00 0.00 0.00 2.63e-09 -2.63e-10 -4.20e-09 1.26e-08 1.38e-25 -DEAL::0.00 1.58e-09 2.63e-10 0.00 0.00 0.00 5.78e-09 4.47e-09 1.68e-25 -DEAL::-4.35e-10 1.27e-09 1.00e-26 -7.43e-10 2.41e-09 3.47e-26 -3.70e-09 2.17e-10 -5.71e-26 -DEAL::0.00 0.00 0.00 -3.41e-09 -1.31e-09 4.20e-09 -2.36e-09 1.08e-08 5.25e-09 -DEAL::-1.10e-09 -1.31e-09 1.20e-09 1.74e-09 -1.42e-25 -8.70e-10 -7.06e-10 -8.93e-09 -4.35e-10 -DEAL::-2.84e-09 -5.44e-10 1.31e-09 2.32e-09 -3.17e-09 -5.25e-09 -2.17e-10 -5.98e-09 -1.40e-25 -DEAL::0.00 0.00 0.00 0.00 0.00 -1.58e-09 0.00 -1.05e-09 0.00 -DEAL::0.00 0.00 -1.31e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09 -DEAL::0.00 0.00 0.00 -5.25e-10 0.00 -2.63e-09 0.00 0.00 0.00 +DEAL::0.00 0.00 0.00 1.58e-09 2.63e-09 2.36e-09 0.00 1.05e-08 4.31e-26 +DEAL::2.35e-09 1.58e-09 2.20e-09 -1.20e-09 4.32e-26 -7.61e-10 1.14e-08 4.33e-25 4.35e-10 +DEAL::-1.63e-10 2.42e-09 2.38e-26 4.78e-09 -1.63e-10 1.76e-26 -7.07e-10 -4.89e-10 3.15e-26 +DEAL::0.00 0.00 0.00 -2.63e-10 2.63e-09 6.30e-09 -6.30e-09 1.37e-08 2.10e-08 +DEAL::-1.31e-09 1.58e-09 6.15e-09 0.00 0.00 6.52e-10 -2.89e-09 0.00 1.58e-08 +DEAL::-4.35e-10 2.58e-09 4.20e-09 -3.37e-09 -2.17e-10 7.88e-09 -3.70e-09 2.17e-10 6.90e-25 +DEAL::0.00 0.00 0.00 5.25e-09 -3.94e-09 6.04e-09 8.14e-09 -7.62e-09 1.58e-08 +DEAL::4.98e-09 -2.89e-09 6.14e-09 -1.20e-09 -7.35e-26 -7.61e-10 1.82e-08 -1.05e-08 2.14e-08 +DEAL::1.10e-09 -3.43e-09 3.94e-09 8.10e-09 -3.17e-09 8.41e-09 -2.17e-10 -5.98e-09 6.64e-25 +DEAL::0.00 0.00 0.00 0.00 -3.94e-09 0.00 0.00 -1.05e-08 -5.25e-09 +DEAL::0.00 -2.89e-09 1.09e-10 0.00 0.00 6.52e-10 -1.05e-09 -5.25e-09 -5.25e-09 +DEAL::0.00 -2.89e-09 -1.31e-09 -5.25e-10 -2.63e-09 -2.63e-09 0.00 0.00 0.00 +DEAL::0.00 0.00 0.00 0.00 1.31e-09 -1.58e-09 0.00 4.20e-09 1.73e-26 +DEAL::2.17e-10 1.31e-09 -1.68e-09 1.74e-09 9.45e-26 -8.70e-10 -1.81e-10 -6.81e-26 -5.69e-09 +DEAL::-1.63e-10 1.11e-09 -2.51e-27 -4.71e-10 -1.63e-10 -2.63e-09 -7.07e-10 -4.89e-10 -5.96e-26 +DEAL::0.00 0.00 0.00 0.00 1.58e-09 2.63e-10 -8.41e-09 8.41e-09 -3.94e-31 +DEAL::0.00 2.63e-09 -2.63e-10 0.00 0.00 0.00 2.36e-09 5.25e-09 1.25e-25 +DEAL::-4.35e-10 1.27e-09 1.00e-26 -7.43e-10 3.08e-10 -1.08e-26 -3.70e-09 2.17e-10 -5.71e-26 +DEAL::0.00 0.00 0.00 -1.31e-09 -1.31e-09 1.31e-09 -6.57e-09 3.94e-09 5.25e-09 +DEAL::-4.52e-11 -1.31e-09 9.42e-10 1.74e-09 6.17e-26 -8.70e-10 -1.76e-09 -1.26e-08 -4.35e-10 +DEAL::-1.79e-09 -8.06e-10 1.31e-09 -2.41e-09 -3.17e-09 -7.87e-26 -2.17e-10 -5.98e-09 5.87e-26 +DEAL::0.00 0.00 0.00 0.00 0.00 -1.31e-09 0.00 0.00 0.00 +DEAL::0.00 0.00 -1.58e-09 0.00 0.00 0.00 -1.05e-09 0.00 -5.25e-09 +DEAL::0.00 -2.63e-10 0.00 -5.25e-10 0.00 -2.63e-09 0.00 0.00 0.00 diff --git a/tests/deal.II/fe_values_view_18/cmp/generic b/tests/deal.II/fe_values_view_18/cmp/generic index 173f3ec587..674f93234e 100644 --- a/tests/deal.II/fe_values_view_18/cmp/generic +++ b/tests/deal.II/fe_values_view_18/cmp/generic @@ -31,9 +31,9 @@ DEAL::2.37 94.1 2.34e+03 94.1 4.79e+03 1.69e+03 2.34e+03 1.69e+03 4.80e+03 DEAL::2.37 2.40e+03 2.44e+03 2.40e+03 4.57e+03 2.40e+03 2.44e+03 2.40e+03 -138. DEAL::2.37 -2.19e+03 2.44e+03 -2.19e+03 4.79e+03 916. 2.44e+03 916. 5.02e+03 DEAL::component=1 -DEAL::-5.39e-12 -275. -206. -275. -1.35e-12 -138. -206. -138. -1.82e-12 +DEAL::-5.39e-12 -275. -206. -275. -8.99e-13 -138. -206. -138. -1.82e-12 DEAL::5.50e-12 -275. -206. -275. -459. 4.85e+03 -206. 4.85e+03 -367. -DEAL::-367. -275. 4.73e+03 -275. 2.77e-12 -138. 4.73e+03 -138. -184. +DEAL::-367. -275. 4.73e+03 -275. 9.52e-13 -138. 4.73e+03 -138. -184. DEAL::367. -275. 4.84e+03 -275. 459. 4.96e+03 4.84e+03 4.96e+03 2.23e+03 DEAL::-184. 4.62e+03 -206. 4.62e+03 -91.8 -138. -206. -138. 1.82e-12 DEAL::184. 4.73e+03 -206. 4.73e+03 3.52e+03 4.96e+03 -206. 4.96e+03 367. diff --git a/tests/fe/abf_01/cmp/generic b/tests/fe/abf_01/cmp/generic index e4af0b4189..03c4a69ee8 100644 --- a/tests/fe/abf_01/cmp/generic +++ b/tests/fe/abf_01/cmp/generic @@ -19,7 +19,7 @@ DEAL::Dofs total 15 DEAL:cg::Starting value 2.82 DEAL:cg::Convergence step 17 value 0 DEAL::L2-Err=0, Hdiv-Err=0 --1.000e-01 5.000e-01 1.000e+00 4.000e-01 6.092e-15 3.528e-15 6.000e-01 5.000e-01 5.000e-01 1.496e-15 8.072e-16 1.000e+00 5.000e-01 4.878e-15 2.879e-15 +-1.000e-01 5.000e-01 1.000e+00 4.000e-01 6.849e-15 5.643e-15 6.000e-01 5.000e-01 5.000e-01 -1.007e-15 -2.071e-15 1.000e+00 5.000e-01 1.979e-15 3.430e-15 # This file was generated by the deal.II library. diff --git a/tests/fe/abf_projection_01/cmp/generic b/tests/fe/abf_projection_01/cmp/generic index 3175085cb3..5b66d40eb3 100644 --- a/tests/fe/abf_projection_01/cmp/generic +++ b/tests/fe/abf_projection_01/cmp/generic @@ -4,7 +4,7 @@ DEAL::Dofs total 6 DEAL::MM created DEAL::RHS created DEAL:cg::Starting value 1.99 -DEAL:cg::Convergence step 7 value 0 +DEAL:cg::Convergence step 9 value 0 # This file was generated by the deal.II library. diff --git a/tests/fe/mapping_real_to_unit.cc b/tests/fe/mapping_real_to_unit.cc new file mode 100644 index 0000000000..9d664c7f33 --- /dev/null +++ b/tests/fe/mapping_real_to_unit.cc @@ -0,0 +1,106 @@ + +#include "../tests.h" + +#include +#include +#include +#include + + +template +void test_real_to_unit_cell() +{ + + Triangulation triangulation; + GridGenerator::hyper_cube (triangulation); + + + const unsigned int n_points = 5; + + + std::vector< Point > unit_points(Utilities::fixed_power(n_points)); + + + switch (dim) + { + + case 1: + for (unsigned int x=0; x map; + + + typename Triangulation::active_cell_iterator cell = triangulation.begin_active(); + + //Move a vertex a little bit + const unsigned int n_dx = 5; + const double dx = 0.4/n_dx; + Point direction; + for (unsigned int j=0; jvertex(0) = double(j)*direction; + deallog << "Vertex displacement: " << j*dx << std::endl << std::endl; + for (unsigned int i=0; i(n_points);++i) + { + + Point p = map.transform_unit_to_real_cell(cell,unit_points[i]); + Point p_unit = map.transform_real_to_unit_cell(cell,p); + // deallog << "Orig :" << unit_points[i] << std::endl; + // deallog << "p :" << p << std::endl; + // deallog << "p_unit :" << p_unit << std::endl; + deallog << "Distance: " << unit_points[i].distance(p_unit) << std::endl << std::endl; + } + deallog << std::endl << std::endl; + } +} + + +int +main() +{ + std::ofstream logfile ("mapping_real_to_unit/output"); + deallog.attach(logfile); + deallog.depth_console(0); + deallog.threshold_double(1.e-10); + + + test_real_to_unit_cell<1,1>(); + test_real_to_unit_cell<2,2>(); + test_real_to_unit_cell<3,3>(); + + test_real_to_unit_cell<1,2>(); + // test_real_to_unit_cell<1,3>(); + test_real_to_unit_cell<2,3>(); + + return 0; +} + + + diff --git a/tests/fe/mapping_real_to_unit/cmp/generic b/tests/fe/mapping_real_to_unit/cmp/generic new file mode 100644 index 0000000000..361f825eba --- /dev/null +++ b/tests/fe/mapping_real_to_unit/cmp/generic @@ -0,0 +1,1951 @@ + +DEAL::Vertex displacement: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.0800000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.160000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.240000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.320000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.0800000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.160000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.240000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.320000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.0800000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.160000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.240000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.320000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.0800000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.160000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.240000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.320000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.0800000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.160000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.240000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: +DEAL::Vertex displacement: 0.320000 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL::Distance: 0 +DEAL:: +DEAL:: +DEAL:: diff --git a/tests/mesh_converter/Makefile b/tests/mesh_converter/Makefile index de5089beef..c935ea7267 100644 --- a/tests/mesh_converter/Makefile +++ b/tests/mesh_converter/Makefile @@ -71,11 +71,11 @@ report: @echo 'Date: ' `date -u +"%Y %j %F %U-%w"` @echo 'Id: ' $(ID) @for test in $(TESTS) ; do \ - testname=mesh-converter/`echo $$test | perl -pi -e 's/.*include.//g; s/\//-/g;'` ; \ + testname=`echo $$test | perl -pi -e 's/.*include.//g; s/\//-/g;'` ; \ if test -f $$test ; then \ - echo "`date -u +"%Y-%m-%d %H:%M"` + $$testname" ; \ + echo "`date -u +"%Y-%m-%d %H:%M"` + $(WORKDIR)/$$testname" ; \ else \ - echo "`date -u +"%Y-%m-%d %H:%M"` 0 $$testname" ; \ + echo "`date -u +"%Y-%m-%d %H:%M"` 0 $(WORKDIR)/$$testname" ; \ fi ; \ done