queso-0.51.1
Protected Attributes | List of all members
QUESO::PiecewiseLinear1D1DFunction Class Reference

Class for piecewise-linear one-dimensional functions. More...

#include <1D1DFunction.h>

Inheritance diagram for QUESO::PiecewiseLinear1D1DFunction:
Inheritance graph
[legend]
Collaboration diagram for QUESO::PiecewiseLinear1D1DFunction:
Collaboration graph
[legend]

Public Member Functions

Constructor/Destructor methods
 PiecewiseLinear1D1DFunction (double minDomainValue, double maxDomainValue, const std::vector< double > &referenceDomainValues, double referenceImageValue0, const std::vector< double > &rateValues)
 Default constructor. More...
 
 ~PiecewiseLinear1D1DFunction ()
 Destructor. More...
 
Mathematical methods
double value (double domainValue) const
 Returns the value of the piecewise-linear function at point domainValue. More...
 
double deriv (double domainValue) const
 Returns the value of the derivative of the piecewise-linear function at point domainValue. More...
 
- Public Member Functions inherited from QUESO::Base1D1DFunction
 Base1D1DFunction (double minDomainValue, double maxDomainValue)
 Default constructor. More...
 
virtual ~Base1D1DFunction ()
 Destructor. More...
 
double minDomainValue () const
 Returns the minimum value of the domain of the (one-dimensional) function. More...
 
double maxDomainValue () const
 Returns the maximum value of the domain of the (one-dimensional) function. More...
 
virtual double multiplyAndIntegrate (const Base1D1DFunction &func, unsigned int quadratureOrder, double *resultWithMultiplicationByTAsWell) const
 TODO: Multiplies this function with function, and integrates it numerically. See template specialization. More...
 

Protected Attributes

unsigned int m_numRefValues
 Number of points which will be evaluated. More...
 
std::vector< double > m_referenceDomainValues
 Reference values in the piecewise-linear function domain; $ x_1i $ in $ f_i(x) = y_{1i} + m_i (x - x_{1i})$, for each $ i $=1 .. m_numRefValues. More...
 
std::vector< double > m_referenceImageValues
 Reference values in the piecewise-linear function image; $ y_{1i} $ in $ f_i(x) = y_{1i} + m_i (x - x_{1i})$, for each $ i $=1 .. m_numRefValues. More...
 
std::vector< double > m_rateValues
 Rate value; $ m_i $ in $ f_i(x) = y_{1i} + m_i (x - x_{1i})$, for each $ i $=1 .. m_numRefValues. More...
 
- Protected Attributes inherited from QUESO::Base1D1DFunction
double m_minDomainValue
 
double m_maxDomainValue
 

Detailed Description

Class for piecewise-linear one-dimensional functions.

This class implements piecewise-linear one-dimensional functions.

Definition at line 237 of file 1D1DFunction.h.

Constructor & Destructor Documentation

QUESO::PiecewiseLinear1D1DFunction::PiecewiseLinear1D1DFunction ( double  minDomainValue,
double  maxDomainValue,
const std::vector< double > &  referenceDomainValues,
double  referenceImageValue0,
const std::vector< double > &  rateValues 
)

Default constructor.

Definition at line 263 of file 1D1DFunction.C.

References m_numRefValues, m_rateValues, m_referenceDomainValues, m_referenceImageValues, UQ_FATAL_TEST_MACRO, and QUESO::UQ_UNAVAILABLE_RANK.

269  :
271  m_numRefValues (referenceDomainValues.size()),
272  m_referenceDomainValues(referenceDomainValues),
273  m_rateValues (rateValues)
274 {
277  "PiecewiseLinear1D1DFunction::constructor()",
278  "num ref values = 0");
279 
280  UQ_FATAL_TEST_MACRO(m_numRefValues != rateValues.size(),
282  "PiecewiseLinear1D1DFunction::constructor()",
283  "num rate values is inconsistent");
284 
285  for (unsigned int i = 1; i < m_numRefValues; ++i) { // Yes, from '1'
288  "PiecewiseLinear1D1DFunction::constructor()",
289  "reference domain values are inconsistent");
290  }
291 
292  m_referenceImageValues.clear();
293  m_referenceImageValues.resize(m_numRefValues,0.);
294  m_referenceImageValues[0] = referenceImageValue0;
295  for (unsigned int i = 1; i < m_numRefValues; ++i) { // Yes, from '1'
297  }
298 
299  if (false) { // For debug only
300  std::cout << "In PiecewiseLinear1D1DFunction::constructor():"
301  << std::endl;
302  for (unsigned int i = 0; i < m_numRefValues; ++i) {
303  std::cout << "i = " << i
304  << ", m_referenceDomainValues[i] = " << m_referenceDomainValues[i]
305  << ", m_referenceImageValues[i] = " << m_referenceImageValues[i]
306  << ", m_rateValues[i] = " << m_rateValues[i]
307  << std::endl;
308  }
309  }
310 }
std::vector< double > m_rateValues
Rate value; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:277
Base1D1DFunction(double minDomainValue, double maxDomainValue)
Default constructor.
Definition: 1D1DFunction.C:33
double maxDomainValue() const
Returns the maximum value of the domain of the (one-dimensional) function.
Definition: 1D1DFunction.C:57
const int UQ_UNAVAILABLE_RANK
Definition: Defines.h:74
unsigned int m_numRefValues
Number of points which will be evaluated.
Definition: 1D1DFunction.h:268
#define UQ_FATAL_TEST_MACRO(test, givenRank, where, what)
Definition: Defines.h:223
std::vector< double > m_referenceDomainValues
Reference values in the piecewise-linear function domain; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:271
double minDomainValue() const
Returns the minimum value of the domain of the (one-dimensional) function.
Definition: 1D1DFunction.C:51
std::vector< double > m_referenceImageValues
Reference values in the piecewise-linear function image; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:274
QUESO::PiecewiseLinear1D1DFunction::~PiecewiseLinear1D1DFunction ( )

Destructor.

Definition at line 312 of file 1D1DFunction.C.

References m_rateValues, m_referenceDomainValues, and m_referenceImageValues.

313 {
314  m_rateValues.clear();
315  m_referenceImageValues.clear();
316  m_referenceDomainValues.clear();
317 }
std::vector< double > m_rateValues
Rate value; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:277
std::vector< double > m_referenceDomainValues
Reference values in the piecewise-linear function domain; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:271
std::vector< double > m_referenceImageValues
Reference values in the piecewise-linear function image; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:274

Member Function Documentation

double QUESO::PiecewiseLinear1D1DFunction::deriv ( double  domainValue) const
virtual

Returns the value of the derivative of the piecewise-linear function at point domainValue.

This function checks if point domainValue belongs to the domain of this function, and in affirmative case, it returns the value of the derivative at such point.

Implements QUESO::Base1D1DFunction.

Definition at line 370 of file 1D1DFunction.C.

References QUESO::Base1D1DFunction::m_maxDomainValue, QUESO::Base1D1DFunction::m_minDomainValue, m_numRefValues, m_rateValues, m_referenceDomainValues, UQ_FATAL_TEST_MACRO, and QUESO::UQ_UNAVAILABLE_RANK.

371 {
372  if ((domainValue < m_minDomainValue) || (domainValue > m_maxDomainValue)) {
373  std::cerr << "In PiecewiseLinear1D1DFunction::deriv()"
374  << ": requested x (" << domainValue
375  << ") is out of the interval (" << m_minDomainValue
376  << ", " << m_maxDomainValue
377  << ")"
378  << std::endl;
379  }
380 
381  UQ_FATAL_TEST_MACRO(((domainValue < m_minDomainValue) || (domainValue > m_maxDomainValue)),
383  "PiecewiseLinear1D1DFunction::deriv()",
384  "x out of range");
385 
386  unsigned int i = 0;
387  if (m_numRefValues == 1) {
388  // Nothing else to do
389  }
390  else {
391  bool referenceDomainValueFound = false;
392  while (referenceDomainValueFound == false) {
393  if (domainValue < m_referenceDomainValues[i+1]) {
394  referenceDomainValueFound = true;
395  }
396  else {
397  ++i;
400  "PiecewiseLinear1D1DFunction::deriv()",
401  "too big 'i'");
402  }
403  }
404  }
405 
406  return m_rateValues[i];
407 }
std::vector< double > m_rateValues
Rate value; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:277
const int UQ_UNAVAILABLE_RANK
Definition: Defines.h:74
unsigned int m_numRefValues
Number of points which will be evaluated.
Definition: 1D1DFunction.h:268
#define UQ_FATAL_TEST_MACRO(test, givenRank, where, what)
Definition: Defines.h:223
std::vector< double > m_referenceDomainValues
Reference values in the piecewise-linear function domain; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:271
double QUESO::PiecewiseLinear1D1DFunction::value ( double  domainValue) const
virtual

Returns the value of the piecewise-linear function at point domainValue.

This function checks if point domainValue belongs to the domain of this function, and in affirmative case, it evaluates the function at such point.

Implements QUESO::Base1D1DFunction.

Definition at line 320 of file 1D1DFunction.C.

References QUESO::Base1D1DFunction::m_maxDomainValue, QUESO::Base1D1DFunction::m_minDomainValue, m_numRefValues, m_rateValues, m_referenceDomainValues, m_referenceImageValues, UQ_FATAL_TEST_MACRO, and QUESO::UQ_UNAVAILABLE_RANK.

321 {
322  if ((domainValue < m_minDomainValue) || (domainValue > m_maxDomainValue)) {
323  std::cerr << "In PiecewiseLinear1D1DFunction::value()"
324  << ": requested x (" << domainValue
325  << ") is out of the interval (" << m_minDomainValue
326  << ", " << m_maxDomainValue
327  << ")"
328  << std::endl;
329  }
330 
331  UQ_FATAL_TEST_MACRO(((domainValue < m_minDomainValue) || (domainValue > m_maxDomainValue)),
333  "PiecewiseLinear1D1DFunction::value()",
334  "x out of range");
335 
336  unsigned int i = 0;
337  if (m_numRefValues == 1) {
338  // Nothing else to do
339  }
340  else {
341  bool referenceDomainValueFound = false;
342  while (referenceDomainValueFound == false) {
343  if (domainValue < m_referenceDomainValues[i+1]) {
344  referenceDomainValueFound = true;
345  }
346  else {
347  ++i;
348  if (i == (m_numRefValues-1)) {
349  referenceDomainValueFound = true;
350  }
351  }
352  }
353  }
354  double imageValue = m_referenceImageValues[i] + m_rateValues[i]*(domainValue - m_referenceDomainValues[i]);
355  if (false) { // For debug only
356  std::cout << "In PiecewiseLinear1D1DFunction::value()"
357  << ": domainValue = " << domainValue
358  << ", i = " << i
359  << ", m_referenceDomainValues[i] = " << m_referenceDomainValues[i]
360  << ", m_referenceImageValues[i] = " << m_referenceImageValues[i]
361  << ", m_rateValues[i] = " << m_rateValues[i]
362  << ", imageValue = " << imageValue
363  << std::endl;
364  }
365 
366  return imageValue;
367 }
std::vector< double > m_rateValues
Rate value; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:277
const int UQ_UNAVAILABLE_RANK
Definition: Defines.h:74
unsigned int m_numRefValues
Number of points which will be evaluated.
Definition: 1D1DFunction.h:268
#define UQ_FATAL_TEST_MACRO(test, givenRank, where, what)
Definition: Defines.h:223
std::vector< double > m_referenceDomainValues
Reference values in the piecewise-linear function domain; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:271
std::vector< double > m_referenceImageValues
Reference values in the piecewise-linear function image; in , for each =1 .. m_numRefValues.
Definition: 1D1DFunction.h:274

Member Data Documentation

unsigned int QUESO::PiecewiseLinear1D1DFunction::m_numRefValues
protected

Number of points which will be evaluated.

Definition at line 268 of file 1D1DFunction.h.

Referenced by deriv(), PiecewiseLinear1D1DFunction(), and value().

std::vector<double> QUESO::PiecewiseLinear1D1DFunction::m_rateValues
protected

Rate value; $ m_i $ in $ f_i(x) = y_{1i} + m_i (x - x_{1i})$, for each $ i $=1 .. m_numRefValues.

Definition at line 277 of file 1D1DFunction.h.

Referenced by deriv(), PiecewiseLinear1D1DFunction(), value(), and ~PiecewiseLinear1D1DFunction().

std::vector<double> QUESO::PiecewiseLinear1D1DFunction::m_referenceDomainValues
protected

Reference values in the piecewise-linear function domain; $ x_1i $ in $ f_i(x) = y_{1i} + m_i (x - x_{1i})$, for each $ i $=1 .. m_numRefValues.

Definition at line 271 of file 1D1DFunction.h.

Referenced by deriv(), PiecewiseLinear1D1DFunction(), value(), and ~PiecewiseLinear1D1DFunction().

std::vector<double> QUESO::PiecewiseLinear1D1DFunction::m_referenceImageValues
protected

Reference values in the piecewise-linear function image; $ y_{1i} $ in $ f_i(x) = y_{1i} + m_i (x - x_{1i})$, for each $ i $=1 .. m_numRefValues.

Definition at line 274 of file 1D1DFunction.h.

Referenced by PiecewiseLinear1D1DFunction(), value(), and ~PiecewiseLinear1D1DFunction().


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

Generated on Thu Apr 23 2015 19:26:17 for queso-0.51.1 by  doxygen 1.8.5