예제 #1
0
    typename viennagrid::result_of::coord< MeshSegmentHandleType >::type
    volume_mesh(MeshSegmentHandleType const & mesh_obj)
    {
      typedef typename viennagrid::result_of::const_element_range<MeshSegmentHandleType, ElementTOrTag>::type  CellContainer;
      typedef typename viennagrid::result_of::iterator<CellContainer>::type                                       CellIterator;

      typename viennagrid::result_of::coord< MeshSegmentHandleType >::type new_volume = 0;
      CellContainer new_cells = viennagrid::elements<ElementTOrTag>(mesh_obj);
      for (CellIterator new_cit = new_cells.begin();
                        new_cit != new_cells.end();
                      ++new_cit)
      {
        new_volume += volume( default_point_accessor(mesh_obj), *new_cit);
      }
      return new_volume;
    }
예제 #2
0
 typename viennagrid::result_of::coord< viennagrid::element<ElementTag, WrappedConfigT> >::type
 volume(viennagrid::element<ElementTag, WrappedConfigT> const & cell)
 {
   return volume( default_point_accessor(cell), cell );
 }
예제 #3
0
 typename viennagrid::result_of::coord< viennagrid::element<ElementTag, WrappedConfigT> >::type
 surface( viennagrid::element<ElementTag, WrappedConfigT> const & element)
 {
   return surface( default_point_accessor(element), element );
 }