1 // ============================================================================= 2 // PROJECT CHRONO - http://projectchrono.org 3 // 4 // Copyright (c) 2016 projectchrono.org 5 // All right reserved. 6 // 7 // Use of this source code is governed by a BSD-style license that can be found 8 // in the LICENSE file at the top level of the distribution and at 9 // http://projectchrono.org/license-chrono.txt. 10 // 11 // ============================================================================= 12 // Authors: Nic Olsen 13 // ============================================================================= 14 15 #pragma once 16 17 namespace chrono { 18 namespace distributed { 19 20 /// @addtogroup distributed_module 21 /// @{ 22 23 /// Location and status of a given body with respect to this rank 24 typedef enum COMM_STATUS { 25 EMPTY = 0, /// None, empty, disabled 26 OWNED = 1, /// exclusive to this rank 27 GHOST_UP = 2, /// a proxy for a body on high neighbor rank 28 GHOST_DOWN = 3, /// a proxy for a body on low neighbor rank 29 SHARED_UP = 4, /// has a proxy body on high neighbor rank 30 SHARED_DOWN = 5, /// has a proxy body on low neighbor rank 31 UNOWNED_UP = 6, /// unrelated to this rank 32 UNOWNED_DOWN = 7, /// unrelated to this rank 33 GLOBAL = 8, /// Present on all ranks 34 UNDEFINED = 9 35 } COMM_STATUS; 36 /// @} distributed_module 37 38 /// @addtogroup distributed_module 39 /// @{ 40 41 /// Types of internal message that can be sent 42 typedef enum MESSAGE_TYPE { 43 EXCHANGE, /// Introduction of new body to a rank 44 UPDATE, /// Update for an existing body on a rank from the owning rank 45 FINAL_UPDATE_GIVE, /// Update which ends in the other rank taking exclusive ownership 46 FINAL_UPDATE_TAKE, /// Update which ends in this rank taking exclusive ownership 47 UPDATE_TRANSFER_SHARE /// Update which updates the primary rank for the body 48 } MESSAGE_TYPE; 49 /// @} distributed_module 50 51 } // End namespace distributed 52 } // End namespace chrono 53