| 119 | |
| 120 | |
| 121 | int |
| 122 | TransientIntegrator::formUnbalance(void) { |
| 123 | LinearSOE *theLinSOE = this->getLinearSOE(); |
| 124 | AnalysisModel *theModel = this->getAnalysisModel(); |
| 125 | |
| 126 | if (theModel == 0 || theLinSOE == 0) { |
| 127 | opserr << "WARNING IncrementalIntegrator::formUnbalance -"; |
| 128 | opserr << " no AnalysisModel or LinearSOE has been set\n"; |
| 129 | return -1; |
| 130 | } |
| 131 | |
| 132 | theLinSOE->zeroB(); |
| 133 | |
| 134 | // do modal damping |
| 135 | const Vector *modalValues = theModel->getModalDampingFactors(); |
| 136 | if (modalValues != 0) { |
| 137 | this->addModalDampingForce(modalValues); |
| 138 | } |
| 139 | |
| 140 | if (this->formElementResidual() < 0) { |
| 141 | opserr << "WARNING IncrementalIntegrator::formUnbalance "; |
| 142 | opserr << " - this->formElementResidual failed\n"; |
| 143 | return -1; |
| 144 | } |
| 145 | |
| 146 | if (this->formNodalUnbalance() < 0) { |
| 147 | opserr << "WARNING IncrementalIntegrator::formUnbalance "; |
| 148 | opserr << " - this->formNodalUnbalance failed\n"; |
| 149 | return -2; |
| 150 | } |
| 151 | |
| 152 | return 0; |
| 153 | } |
| 154 | |
| 155 | int |
| 156 | TransientIntegrator::formEleResidual(FE_Element *theEle) |
nothing calls this directly
no test coverage detected