| 3015 | |
| 3016 | |
| 3017 | int |
| 3018 | Domain::recvSelf(int cTag, Channel &theChannel, FEM_ObjectBroker &theBroker) |
| 3019 | { |
| 3020 | // set the commitTag in the domain to cTag & update the getTag if needed |
| 3021 | commitTag = cTag; |
| 3022 | this->hasDomainChanged(); |
| 3023 | |
| 3024 | // first we get the data about the state of the domain for this commitTag |
| 3025 | ID domainData(15); |
| 3026 | if (theChannel.recvID(theDbTag, commitTag, domainData) < 0) { |
| 3027 | opserr << "Domain::recv - channel failed to recv the initial ID\n"; |
| 3028 | return -1; |
| 3029 | } |
| 3030 | |
| 3031 | // recv the time information |
| 3032 | Vector domainTime(1); |
| 3033 | if (theChannel.recvVector(theDbTag, commitTag, domainTime) < 0) { |
| 3034 | opserr << "Domain::send - channel failed to recv thetime Vector\n"; |
| 3035 | return -1; |
| 3036 | } |
| 3037 | |
| 3038 | currentTime = domainTime(0); |
| 3039 | committedTime = currentTime; |
| 3040 | |
| 3041 | // |
| 3042 | // now if the currentGeoTag does not agree with whats in the domain |
| 3043 | // we must wipe everything in the domain and recreate the domain based on the info from the channel |
| 3044 | // |
| 3045 | |
| 3046 | /* |
| 3047 | if (theChannel.isDatastore() == 1) { |
| 3048 | static ID theLastSendTag(1); |
| 3049 | if (theChannel.recvID(0,0,theLastSendTag) == 0) |
| 3050 | lastGeoSendTag = theLastSendTag(0); |
| 3051 | } |
| 3052 | */ |
| 3053 | |
| 3054 | if (currentGeoTag == 0 || lastChannel != theChannel.getTag() || domainData(0) != currentGeoTag) { |
| 3055 | |
| 3056 | lastChannel = theChannel.getTag(); |
| 3057 | |
| 3058 | // set the currrentGeoTag |
| 3059 | int geoTag = domainData(0); |
| 3060 | |
| 3061 | int i, loc; |
| 3062 | int numEle, numNod, numSPs, numPCs, numMPs, numLPs; |
| 3063 | |
| 3064 | // if receiving set lastGeoSendTag to be equal to currentGeoTag |
| 3065 | // at time all the data was sent if not we must clear out the objects and rebuild |
| 3066 | lastGeoSendTag = domainData(0); |
| 3067 | |
| 3068 | // clear out the all the components in the current domain |
| 3069 | this->clearAll(); |
| 3070 | |
| 3071 | currentTime = domainTime(0); |
| 3072 | committedTime = currentTime; |
| 3073 | |
| 3074 | // |
nothing calls this directly
no test coverage detected