set domain
| 217 | |
| 218 | //set domain |
| 219 | void ShellMITC4Thermal::setDomain( Domain *theDomain ) |
| 220 | { |
| 221 | int i, j ; |
| 222 | static Vector eig(3) ; |
| 223 | static Matrix ddMembrane(3,3) ; |
| 224 | |
| 225 | //node pointers |
| 226 | for ( i = 0; i < 4; i++ ) { |
| 227 | nodePointers[i] = theDomain->getNode( connectedExternalNodes(i) ) ; |
| 228 | if (nodePointers[i] == 0) { |
| 229 | opserr << "ShellMITC4Thermal::setDomain - no node " << connectedExternalNodes(i); |
| 230 | opserr << " exists in the model\n"; |
| 231 | } |
| 232 | const Vector &nodeDisp=nodePointers[i]->getTrialDisp(); |
| 233 | if (nodeDisp.Size() != 6) { |
| 234 | opserr << "ShellMITC4Thermal::setDomain - node " << connectedExternalNodes(i); |
| 235 | opserr << " NEEDS 6 dof - GARBAGE RESULTS or SEGMENTATION FAULT WILL FOLLOW\n"; |
| 236 | } |
| 237 | } |
| 238 | |
| 239 | //compute drilling stiffness penalty parameter |
| 240 | const Matrix &dd = materialPointers[0]->getInitialTangent( ) ; |
| 241 | |
| 242 | //assemble ddMembrane ; |
| 243 | for ( i = 0; i < 3; i++ ) { |
| 244 | for ( j = 0; j < 3; j++ ) |
| 245 | ddMembrane(i,j) = dd(i,j) ; |
| 246 | } //end for i |
| 247 | |
| 248 | //eigenvalues of ddMembrane |
| 249 | eig = LovelyEig( ddMembrane ) ; |
| 250 | |
| 251 | //set ktt |
| 252 | //Ktt = dd(2,2) ; //shear modulus |
| 253 | Ktt = min( eig(2), min( eig(0), eig(1) ) ) ; |
| 254 | //Ktt = dd(2,2); |
| 255 | |
| 256 | //basis vectors and local coordinates |
| 257 | computeBasis( ) ; |
| 258 | |
| 259 | this->DomainComponent::setDomain(theDomain); |
| 260 | |
| 261 | } |
| 262 | |
| 263 | |
| 264 | //get the number of external nodes |
nothing calls this directly
no test coverage detected