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; }
typename viennagrid::result_of::coord< viennagrid::element<ElementTag, WrappedConfigT> >::type volume(viennagrid::element<ElementTag, WrappedConfigT> const & cell) { return volume( default_point_accessor(cell), cell ); }
typename viennagrid::result_of::coord< viennagrid::element<ElementTag, WrappedConfigT> >::type surface( viennagrid::element<ElementTag, WrappedConfigT> const & element) { return surface( default_point_accessor(element), element ); }