本文整理汇总了C++中TimeStep::giveTimeIncrement方法的典型用法代码示例。如果您正苦于以下问题:C++ TimeStep::giveTimeIncrement方法的具体用法?C++ TimeStep::giveTimeIncrement怎么用?C++ TimeStep::giveTimeIncrement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TimeStep
的用法示例。
在下文中一共展示了TimeStep::giveTimeIncrement方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: requiresNewLhsAt
int TimeIntegrationScheme :: requiresNewLhsAt (TimeStep* stepN)
// Returns True if the time increment deltaT of stepN differs from that
// of the previous step, else returns False. This is the default imple-
// mentation of the method.
{
TimeStep* pastStep ;
int n,answer ;
n = stepN->giveNumber() ;
if (n <= 1)
answer = TRUE ;
else {
pastStep = new TimeStep(n-1,this) ;
answer = (pastStep->giveTimeIncrement() != stepN->giveTimeIncrement());
delete pastStep ;}
return answer ;
}
示例2: assembleAlgorithmicPartOfRhs
void
NLTransientTransportProblem :: assembleAlgorithmicPartOfRhs(FloatArray &answer,
const UnknownNumberingScheme &ns, TimeStep *tStep)
{
//
// Computes right hand side on all nodes
//
double t = tStep->giveTargetTime();
IntArray loc;
FloatMatrix charMtrxCond, charMtrxCap;
FloatArray r, drdt, contrib, help;
Element *element;
TimeStep *previousStep = this->givePreviousStep(); //r_t
TimeStep *currentStep = this->giveCurrentStep(); //r_{t+\Delta t}. Note that *tStep is a Tau step between r_t and r_{t+\Delta t}
Domain *domain = this->giveDomain(1);
int nelem = domain->giveNumberOfElements();
for ( int i = 1; i <= nelem; i++ ) {
element = domain->giveElement(i);
// skip remote elements (these are used as mirrors of remote elements on other domains
// when nonlocal constitutive models are used. They introduction is necessary to
// allow local averaging on domains without fine grain communication between domains).
if ( element->giveParallelMode() == Element_remote ) {
continue;
}
if ( !element->isActivated(tStep) ) {
continue;
}
element->giveLocationArray(loc, ns);
element->giveCharacteristicMatrix(charMtrxCond, TangentStiffnessMatrix, tStep);
element->giveCharacteristicMatrix(charMtrxCap, CapacityMatrix, tStep);
/*
* element -> computeVectorOf (VM_Total, tStep, r);
* element -> computeVectorOf (VM_Velocity, tStep, drdt);
*/
if ( ( t >= previousStep->giveTargetTime() ) && ( t <= currentStep->giveTargetTime() ) ) {
FloatArray rp, rc;
element->computeVectorOf(VM_Total, currentStep, rc);
element->computeVectorOf(VM_Total, previousStep, rp);
//approximate derivative with a difference
drdt.beDifferenceOf(rc, rp);
drdt.times( 1. / currentStep->giveTimeIncrement() );
//approximate current solution from linear interpolation
rp.times(1 - alpha);
rc.times(alpha);
r = rc;
r.add(rp);
} else {
OOFEM_ERROR("unsupported time value");
}
if ( lumpedCapacityStab ) {
int size = charMtrxCap.giveNumberOfRows();
double s;
for ( int j = 1; j <= size; j++ ) {
s = 0.0;
for ( int k = 1; k <= size; k++ ) {
s += charMtrxCap.at(j, k);
charMtrxCap.at(j, k) = 0.0;
}
charMtrxCap.at(j, j) = s;
}
}
help.beProductOf(charMtrxCap, drdt);
contrib.beProductOf(charMtrxCond, r);
contrib.add(help);
contrib.negated();
answer.assemble(contrib, loc);
}
}