| 183 | } |
| 184 | |
| 185 | int |
| 186 | DomainDecompositionAnalysis::domainChanged(void) |
| 187 | { |
| 188 | // remove existing FE_elements and DOF_Groups from the Analysis |
| 189 | theModel->clearAll(); |
| 190 | theHandler->clearAll(); |
| 191 | |
| 192 | // now we invoke handle() on the constraint handler which |
| 193 | // causes the creation of FE_Element and DOF_Group objects |
| 194 | // and their addition to the AnalysisModel. |
| 195 | |
| 196 | numExtEqn = theHandler->handle(&(theSubdomain->getExternalNodes())); |
| 197 | |
| 198 | // we now get a node to number last |
| 199 | |
| 200 | const ID &theExtNodes = theSubdomain->getExternalNodes(); |
| 201 | int idSize = theExtNodes.Size(); |
| 202 | // int theLastDOF = -1; |
| 203 | |
| 204 | ID theLastDOFs(1); |
| 205 | int cnt = 0; |
| 206 | |
| 207 | // create an ID containing the tags of the DOF_Groups that are to |
| 208 | // be numbered last |
| 209 | for (int i=0; i<idSize; i++) { |
| 210 | int nodeTag = theExtNodes(i); |
| 211 | Node *nodePtr = theSubdomain->getNode(nodeTag); |
| 212 | DOF_Group *dofGrpPtr = nodePtr->getDOF_GroupPtr(); |
| 213 | if (dofGrpPtr != 0) { |
| 214 | const ID theID = dofGrpPtr->getID(); |
| 215 | int size = theID.Size(); |
| 216 | for (int j=0; j<size; j++) |
| 217 | if (theID(j) == -3) { |
| 218 | theLastDOFs[cnt] = dofGrpPtr->getTag(); |
| 219 | cnt++; |
| 220 | j = size; |
| 221 | } |
| 222 | } |
| 223 | } |
| 224 | |
| 225 | // we now invoke number() on the numberer which causes |
| 226 | // equation numbers to be assigned to all the DOFs in the |
| 227 | // AnalysisModel. |
| 228 | |
| 229 | theNumberer->numberDOF(theLastDOFs); |
| 230 | |
| 231 | /************************* |
| 232 | for (int i=0; i<idSize; i++) { |
| 233 | int nodeTag = theExtNodes(i); |
| 234 | Node *nodePtr = theSubdomain->getNode(nodeTag); |
| 235 | DOF_Group *dofPtr = nodePtr->getDOF_GroupPtr(); |
| 236 | if (dofPtr != 0) { |
| 237 | const ID theID = dofPtr->getID(); |
| 238 | int size = theID.Size(); |
| 239 | for (int j=0; j<size; j++) |
| 240 | if (theID(j) == -3) { |
| 241 | theLastDOF = dofPtr->getTag(); |
| 242 | i = idSize; |
no test coverage detected