int PrimaryField :: resolveIndx(TimeStep *atTime, int shift) { int stepNo = atTime->giveNumber(); int relPos = actualStepNumber - stepNo - shift; if ( ( relPos >= 0 ) && ( relPos <= nHistVectors ) ) { return ( actualStepIndx + relPos ) % ( nHistVectors + 1 ) + 1; } else { _error3("resolveIndx: History not available for relative step no. %d to step no. %d", shift, stepNo); } return 0; }
void SlaveDof :: initialize(int cntOfMstrDfMngr, const IntArray &masterNodes, const IntArray *mstrDofID, const FloatArray &mstrContribution) { int id; bool idSame = false; if ( mstrDofID == NULL ) { idSame = true; } else if ( mstrDofID->giveSize() < cntOfMstrDfMngr ) { _error3("initialize: mstrDofID.giveSize %d != cntOfMstrDfMngr %d", mstrDofID->giveSize(), cntOfMstrDfMngr); } if ( mstrContribution.giveSize() < cntOfMstrDfMngr ) { _error3("initialize: mstrContribution.giveSize %d != cntOfMstrDfMngr %d", mstrContribution.giveSize(), cntOfMstrDfMngr); } countOfMasterDofs = cntOfMstrDfMngr; masterContribution = mstrContribution; masterDofMans.resize(countOfMasterDofs); dofIDs.resize(countOfMasterDofs); for (int i = 1; i <= countOfMasterDofs; i++ ) { if ( idSame ) { id = this->dofID; } else { id = mstrDofID->at(i); } masterDofMans.at(i) = masterNodes.at(i); dofIDs.at(i) = id; } }