From: Martin Kronbichler Date: Mon, 3 Aug 2015 13:21:55 +0000 (+0200) Subject: Fix method on 64 bit indices X-Git-Tag: v8.4.0-rc2~690^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=73439697133a5266b93005c8eddd5f5088d52483;p=dealii.git Fix method on 64 bit indices --- diff --git a/source/base/index_set.cc b/source/base/index_set.cc index a43e8856a3..f654da0197 100644 --- a/source/base/index_set.cc +++ b/source/base/index_set.cc @@ -30,35 +30,56 @@ DEAL_II_NAMESPACE_OPEN #ifdef DEAL_II_WITH_TRILINOS + +// the 64-bit path uses a few different names, so put that into a separate +// implementation + +#ifdef DEAL_II_WITH_64BIT_INDICES + IndexSet::IndexSet (const Epetra_Map &map) : is_compressed (true), - index_space_size (map.NumGlobalElements()), + index_space_size (map.NumGlobalElements64()), largest_range (numbers::invalid_unsigned_int) { // For a contiguous map, we do not need to go through the whole data... if (map.LinearMap()) + add_range(size_type(map.MinMyGID64()), size_type(map.MaxMyGID64()+1)); + else { -#ifndef DEAL_II_WITH_64BIT_INDICES - add_range(size_type(map.MinMyGID()), size_type(map.MaxMyGID()+1)); -#else - add_range(size_type(map.MinMyGID64()), size_type(map.MaxMyGID64()+1)); -#endif + const size_type n_indices = map.NumMyElements(); + size_type *indices = (size_type *)map.MyGlobalElements64(); + add_indices(indices, indices+n_indices); } + compress(); +} + +#else + +// this is the standard 32-bit implementation + +IndexSet::IndexSet (const Epetra_Map &map) + : + is_compressed (true), + index_space_size (map.NumGlobalElements()), + largest_range (numbers::invalid_unsigned_int) +{ + // For a contiguous map, we do not need to go through the whole data... + if (map.LinearMap()) + add_range(size_type(map.MinMyGID()), size_type(map.MaxMyGID()+1)); else { const size_type n_indices = map.NumMyElements(); -#ifndef DEAL_II_WITH_64BIT_INDICES unsigned int *indices = (unsigned int *)map.MyGlobalElements(); -#else - size_type *indices = (size_type *)map.MyGlobalElements64(); -#endif add_indices(indices, indices+n_indices); } compress(); } + #endif +#endif // ifdef DEAL_II_WITH_TRILINOS + void