void ConstantEdgeLoad :: computeValueAt(FloatArray &answer, TimeStep *stepN, FloatArray &coords, ValueModeType mode) { // we overload general implementation on the boundary load level due // to implementation efficiency double factor; if ( ( mode != VM_Total ) && ( mode != VM_Incremental ) ) { _error("computeValueAt: mode not supported"); } // ask time distribution /* * factor = this -> giveLoadTimeFunction() -> at(stepN->giveTime()) ; * if ((mode==VM_Incremental) && (!stepN->isTheFirstStep())) * //factor -= this->giveLoadTimeFunction()->at(stepN->givePreviousStep()->giveTime()) ; * factor -= this->giveLoadTimeFunction()->at(stepN->giveTime()-stepN->giveTimeIncrement()) ; */ factor = this->giveLoadTimeFunction()->evaluate(stepN, mode); answer = componentArray; answer.times(factor); if ( !isImposed(stepN) ){ answer.zero(); } }
void ConstantEdgeLoad :: computeValueAt(FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode) { if ( ( mode != VM_Total ) && ( mode != VM_Incremental ) ) { OOFEM_ERROR("mode not supported"); } if ( !isImposed(tStep) ) { answer.zero(); } else { double factor = this->giveTimeFunction()->evaluate(tStep, mode); answer.beScaled(factor, componentArray); } }