| 977 | |
| 978 | |
| 979 | double |
| 980 | DOF_Group::getDampingBetaFactor(int mode, double ratio, double wn) |
| 981 | { |
| 982 | // to return 2.0 * ratio * wn * phi(mode)' * M * v |
| 983 | double beta = 0; |
| 984 | const Matrix & mass = myNode->getMass(); |
| 985 | const Matrix & eigenVectors = myNode->getEigenvectors(); |
| 986 | const Vector & vel = myNode->getTrialVel(); |
| 987 | int numDOF = eigenVectors.noRows(); |
| 988 | int numMode = eigenVectors.noCols(); |
| 989 | Vector Mv = mass * vel; |
| 990 | if (mode < numMode) { |
| 991 | for (int i = 0; i < numDOF; i++) |
| 992 | beta += 2.0 * ratio * wn * eigenVectors(i, mode) * Mv(i); |
| 993 | } |
| 994 | return beta; |
| 995 | } |
| 996 | |
| 997 | const Vector & |
| 998 | DOF_Group::getDampingBetaForce(int mode, double beta) |