| 799 | } |
| 800 | |
| 801 | void |
| 802 | FE_Element::addD_Force(const Vector &accel, double fact) |
| 803 | { |
| 804 | if (myEle != 0) { |
| 805 | |
| 806 | // check for a quick return |
| 807 | if (fact == 0.0 || !myEle->isActive()) |
| 808 | return; |
| 809 | if (myEle->isSubdomain() == false) { |
| 810 | // get the components we need out of the vector |
| 811 | // and place in a temporary vector |
| 812 | Vector tmp(numDOF); |
| 813 | for (int i=0; i<numDOF; i++) { |
| 814 | int loc = myID(i); |
| 815 | if (loc >= 0) |
| 816 | tmp(i) = accel(loc); |
| 817 | else |
| 818 | tmp(i) = 0.0; |
| 819 | } |
| 820 | |
| 821 | if (theResidual->addMatrixVector(1.0, myEle->getDamp(), tmp, fact) < 0){ |
| 822 | opserr << "WARNING FE_Element::addD_Force() - "; |
| 823 | opserr << "- addMatrixVector returned error\n"; |
| 824 | } |
| 825 | } |
| 826 | else { |
| 827 | opserr << "WARNING FE_Element::addD_Force() - "; |
| 828 | opserr << "- this should not be called on a Subdomain!\n"; |
| 829 | } |
| 830 | } |
| 831 | else { |
| 832 | opserr << "WARNING FE_Element::addD_Force() - no Element *given "; |
| 833 | opserr << "- subclasses must provide implementation\n"; |
| 834 | } |
| 835 | } |
| 836 | |
| 837 | void |
| 838 | FE_Element::addK_Force(const Vector &disp, double fact) |
no test coverage detected