| 713 | |
| 714 | |
| 715 | int GenericClient::recvSelf(int commitTag, Channel &rChannel, |
| 716 | FEM_ObjectBroker &theBroker) |
| 717 | { |
| 718 | // delete dynamic memory |
| 719 | if (theNodes != 0) |
| 720 | delete[] theNodes; |
| 721 | if (theDOF != 0) |
| 722 | delete[] theDOF; |
| 723 | if (machineInetAddr != 0) |
| 724 | delete[] machineInetAddr; |
| 725 | |
| 726 | // receive element parameters |
| 727 | static Vector data(12); |
| 728 | rChannel.recvVector(0, commitTag, data); |
| 729 | this->setTag((int)data(0)); |
| 730 | numExternalNodes = (int)data(1); |
| 731 | port = (int)data(2); |
| 732 | machineInetAddr = new char[int(data(3) + 1)]; |
| 733 | ssl = (int)data(4); |
| 734 | udp = (int)data(5); |
| 735 | dataSize = (int)data(6); |
| 736 | addRayleigh = (int)data(7); |
| 737 | alphaM = data(8); |
| 738 | betaK = data(9); |
| 739 | betaK0 = data(10); |
| 740 | betaKc = data(11); |
| 741 | |
| 742 | // initialize nodes and receive them |
| 743 | connectedExternalNodes.resize(numExternalNodes); |
| 744 | rChannel.recvID(0, commitTag, connectedExternalNodes); |
| 745 | theNodes = new Node* [numExternalNodes]; |
| 746 | if (!theNodes) { |
| 747 | opserr << "GenericClient::recvSelf() " |
| 748 | << "- failed to create node array\n"; |
| 749 | return -1; |
| 750 | } |
| 751 | |
| 752 | // set node pointers to NULL |
| 753 | int i; |
| 754 | for (i=0; i<numExternalNodes; i++) |
| 755 | theNodes[i] = 0; |
| 756 | |
| 757 | // initialize dof |
| 758 | theDOF = new ID [numExternalNodes]; |
| 759 | if (!theDOF) { |
| 760 | opserr << "GenericClient::recvSelf() " |
| 761 | << "- failed to create dof array\n"; |
| 762 | return -2; |
| 763 | } |
| 764 | |
| 765 | // initialize number of basic dof |
| 766 | numBasicDOF = 0; |
| 767 | for (i=0; i<numExternalNodes; i++) { |
| 768 | rChannel.recvID(0, commitTag, theDOF[i]); |
| 769 | numBasicDOF += theDOF[i].Size(); |
| 770 | } |
| 771 | |
| 772 | // receive the ip-address |