| 998 | } |
| 999 | |
| 1000 | void |
| 1001 | FE_Element::addD_ForceSensitivity(int gradNumber, const Vector &vect, double fact) |
| 1002 | { |
| 1003 | if (myEle != 0) { |
| 1004 | |
| 1005 | // check for a quick return |
| 1006 | if (fact == 0.0) |
| 1007 | return; |
| 1008 | if (myEle->isSubdomain() == false) { |
| 1009 | // get the components we need out of the vector |
| 1010 | // and place in a temporary vector |
| 1011 | Vector tmp(numDOF); |
| 1012 | for (int i=0; i<numDOF; i++) { |
| 1013 | int loc = myID(i); |
| 1014 | if (loc >= 0) |
| 1015 | tmp(i) = vect(loc); |
| 1016 | else |
| 1017 | tmp(i) = 0.0; |
| 1018 | } |
| 1019 | if (theResidual->addMatrixVector(1.0, myEle->getDampSensitivity(gradNumber), tmp, fact) < 0){ |
| 1020 | opserr << "WARNING FE_Element::addD_ForceSensitivity() - "; |
| 1021 | opserr << "- addMatrixVector returned error\n"; |
| 1022 | } |
| 1023 | } |
| 1024 | else { |
| 1025 | opserr << "WARNING FE_Element::addD_ForceSensitivity() - "; |
| 1026 | opserr << "- this should not be called on a Subdomain!\n"; |
| 1027 | } |
| 1028 | } |
| 1029 | else { |
| 1030 | opserr << "WARNING FE_Element::addD_ForceSensitivity() - no Element *given "; |
| 1031 | opserr << "- subclasses must provide implementation\n"; |
| 1032 | } |
| 1033 | } |
| 1034 | |
| 1035 | void |
| 1036 | FE_Element::addLocalD_ForceSensitivity(int gradNumber, const Vector &accel, double fact) |
no test coverage detected