MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
FFDConvergenceCheck Class Reference
Inheritance diagram for FFDConvergenceCheck:
Collaboration diagram for FFDConvergenceCheck:

Public Member Functions

 FFDConvergenceCheck (int n, double t, double r)
 
 ~FFDConvergenceCheck (void)
 
bool Check (const std::vector< double > &measures)
 
- Public Member Functions inherited from ConvergenceCheck
 ConvergenceCheck (int n, double t)
 
virtual ~ConvergenceCheck (void)
 

Private Attributes

double rho
 
std::vector< double > prevMeasures
 
std::vector< double > prevDiff
 
std::vector< double > diff
 

Additional Inherited Members

- Protected Attributes inherited from ConvergenceCheck
double tol
 

Detailed Description

Definition at line 368 of file trim.cc.

Constructor & Destructor Documentation

FFDConvergenceCheck::FFDConvergenceCheck ( int  n,
double  t,
double  r 
)

Definition at line 382 of file trim.cc.

383 : ConvergenceCheck(n, t),
384 rho(r),
385 prevMeasures(n, 0.),
386 prevDiff(n, 0.),
387 diff(n, 0.)
388 {
389  return;
390 }
std::vector< double > prevDiff
Definition: trim.cc:372
std::vector< double > prevMeasures
Definition: trim.cc:371
ConvergenceCheck(int n, double t)
Definition: trim.cc:362
std::vector< double > diff
Definition: trim.cc:373
FFDConvergenceCheck::~FFDConvergenceCheck ( void  )
inline

Definition at line 377 of file trim.cc.

377 {};

Member Function Documentation

bool FFDConvergenceCheck::Check ( const std::vector< double > &  measures)
virtual

Implements ConvergenceCheck.

Definition at line 393 of file trim.cc.

References diff, prevDiff, prevMeasures, rho, grad::sqrt(), and ConvergenceCheck::tol.

394 {
395  double d = 0.;
396 
397  for (unsigned i = 0; i < measures.size(); i++) {
398  /*
399  diff = rho * (measures - prevMeasures) + (1 - rho) * prevDiff
400  */
401  diff[i] = (1 - rho)*prevDiff[i];
402  prevDiff[i] = measures[i] - prevMeasures[i];
403  diff[i] += rho*prevDiff[i];
404  prevMeasures[i] = measures[i];
405 
406  d += diff[i]*diff[i];
407  }
408 
409  if (std::sqrt(d) < tol) {
410  return true;
411  }
412 
413  return false;
414 }
std::vector< double > prevDiff
Definition: trim.cc:372
double tol
Definition: trim.cc:359
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Definition: gradient.h:2974
std::vector< double > prevMeasures
Definition: trim.cc:371
std::vector< double > diff
Definition: trim.cc:373

Here is the call graph for this function:

Member Data Documentation

std::vector<double> FFDConvergenceCheck::diff
private

Definition at line 373 of file trim.cc.

Referenced by Check().

std::vector<double> FFDConvergenceCheck::prevDiff
private

Definition at line 372 of file trim.cc.

Referenced by Check().

std::vector<double> FFDConvergenceCheck::prevMeasures
private

Definition at line 371 of file trim.cc.

Referenced by Check().

double FFDConvergenceCheck::rho
private

Definition at line 370 of file trim.cc.

Referenced by Check().


The documentation for this class was generated from the following file: