Exemple #1
0
        typename viennagrid::result_of::coord<ElementT>::type skewness_impl(ElementT const & element, NumericLimitsT, viennagrid::triangle_tag)
        {
            typedef typename viennagrid::result_of::point<ElementT>::type  PointType;
            typedef typename viennagrid::result_of::coord<PointType>::type NumericType;

            NumericType max_angle_ = max_angle(element);
            NumericType min_angle_ = min_angle(element);
            NumericType equi_angle_ = M_PI/3;

            return std::max((max_angle_ - equi_angle_)/(2 * M_PI/3), (equi_angle_ - min_angle_)/equi_angle_);

        }
typename viennagrid::result_of::coord<typename PointAccessorT::value_type>::type metric( PointAccessorT const point_accessor, ElementT const & element, max_angle_tag)
{
    return max_angle(point_accessor, element);
}
typename viennagrid::result_of::coord<typename PointAccessorT::value_type>::type max_angle( PointAccessorT const point_accessor, ElementT const & element )
{
    return max_angle(point_accessor, element, std::numeric_limits< typename viennagrid::result_of::coord<typename PointAccessorT::value_type>::type >() );
}
typename viennagrid::result_of::coord< ElementT >::type max_angle(ElementT const & element)
{
    return max_angle( viennagrid::default_point_accessor(element), element);
}
typename viennagrid::result_of::coord< ElementT >::type metric( ElementT const & element, max_angle_tag)
{
    return max_angle(element);
}