| 829 | } |
| 830 | |
| 831 | int |
| 832 | Node::incrTrialDisp(const Vector &incrDispl) |
| 833 | { |
| 834 | // check vector arg is of correct size |
| 835 | if (incrDispl.Size() != numberDOF) { |
| 836 | opserr << "WARNING Node::incrTrialDisp() - incompatible sizes\n"; |
| 837 | return -2; |
| 838 | } |
| 839 | |
| 840 | if (rotation != nullptr && this->getNumberDOF() >= 6) |
| 841 | rotation[1] = rotation[1]*Versor::from_vector(&disp[3*numberDOF+3]); |
| 842 | |
| 843 | |
| 844 | // create a copy if no trial exists and add committed |
| 845 | if (trialDisp == 0) { |
| 846 | if (this->createDisp() < 0) { |
| 847 | opserr << "FATAL Node::incrTrialDisp() - ran out of memory\n"; |
| 848 | exit(-1); |
| 849 | } |
| 850 | for (int i = 0; i<numberDOF; i++) { |
| 851 | double incrDispI = incrDispl(i); |
| 852 | disp[i] = incrDispI; |
| 853 | disp[i+2*numberDOF] = incrDispI; |
| 854 | disp[i+3*numberDOF] = incrDispI; |
| 855 | } |
| 856 | return 0; |
| 857 | } |
| 858 | |
| 859 | // otherwise set trial = incr + trial |
| 860 | for (int i = 0; i<numberDOF; i++) { |
| 861 | double incrDispI = incrDispl(i); |
| 862 | disp[i] += incrDispI; |
| 863 | disp[i+2*numberDOF] += incrDispI; |
| 864 | disp[i+3*numberDOF] = incrDispI; |
| 865 | } |
| 866 | |
| 867 | return 0; |
| 868 | } |
| 869 | |
| 870 | |
| 871 | int |
no test coverage detected