コード例 #1
0
ファイル: primaryfield.C プロジェクト: MartinFagerstrom/oofem
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;
}
コード例 #2
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;
    }
}