*/
const unsigned int artificial_subdomain_id = static_cast<subdomain_id_t>(-2);
- /**
- * The type used to denote global dof
- * indices.
- */
+
+#ifdef DEAL_II_USE_LARGE_INDEX_TYPE
+ /**
+ * The type used for global indices of
+ * degrees of freedom. While in sequential
+ * computations the 4 billion indices of
+ * 32-bit unsigned integers is plenty,
+ * parallel computations using the
+ * parallel::distributed::Triangulation
+ * class can overflow this number and we
+ * need a bigger index space.
+ *
+ * The data type always indicates an
+ * unsigned integer type.
+ */
+ typedef unsigned long long int global_dof_index;
+
+ /**
+ * An identifier that denotes the MPI type
+ * associated with types::global_dof_index.
+ */
+# define DEAL_II_DOF_INDEX_MPI_TYPE MPI_UNSIGNED_LONG_LONG
+#else
+ /**
+ * The type used for global indices of
+ * degrees of freedom. While in sequential
+ * computations the 4 billion indices of
+ * 32-bit unsigned integers is plenty,
+ * parallel computations using the
+ * parallel::distributed::Triangulation
+ * class can overflow this number and we
+ * need a bigger index space.
+ *
+ * The data type always indicates an
+ * unsigned integer type.
+ */
typedef unsigned int global_dof_index;
+ /**
+ * An identifier that denotes the MPI type
+ * associated with types::global_dof_index.
+ */
+# define DEAL_II_DOF_INDEX_MPI_TYPE MPI_UNSIGNED
+#endif
+
+ /**
+ * An invalid value for indices of degrees
+ * of freedom.
+ */
+ const global_dof_index invalid_dof_index = static_cast<global_dof_index>(-1);
+
/**
* An invalid value for indices of degrees
* of freedom.
*/
const material_id_t invalid_material_id = static_cast<material_id_t>(-1);
+
+
}