MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
grad::GradientAssVec< doublereal > Class Template Reference

#include <matvecass.h>

Inheritance diagram for grad::GradientAssVec< doublereal >:
Collaboration diagram for grad::GradientAssVec< doublereal >:

Public Member Functions

 GradientAssVec (SubVectorHandler &vh, enum mode_t mode=RESET)
 
void AddItem (const integer iRow, const double dCoef)
 
template<index_type N_rows>
void AddItem (const integer iFirstRow, const Vector< doublereal, N_rows > &v)
 

Static Public Member Functions

template<typename T >
static void AssRes (T *pElem, SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, enum FunctionCall func, enum mode_t mode=RESET)
 
template<typename T >
static void InitialAssRes (T *pElem, SubVectorHandler &WorkVec, const VectorHandler &XCurr, enum FunctionCall func, enum mode_t mode=RESET)
 

Private Attributes

SubVectorHandlerWorkVec
 
integer iSubRow
 

Additional Inherited Members

- Private Types inherited from grad::GradientAssVecBase
enum  mode_t { RESET, APPEND }
 

Detailed Description

template<>
class grad::GradientAssVec< doublereal >

Definition at line 115 of file matvecass.h.

Constructor & Destructor Documentation

Definition at line 117 of file matvecass.h.

References GRADIENT_ASSERT.

118  :WorkVec(vh) {
119 
120  switch (mode) {
121  case APPEND:
123  break;
124 
125  case RESET:
126  iSubRow = 0;
128  break;
129 
130  default:
131  GRADIENT_ASSERT(0);
132  }
133  }
virtual integer iGetSize(void) const =0
#define GRADIENT_ASSERT(expr)
Definition: gradient.h:74
virtual void Resize(integer iNewSize)=0

Member Function Documentation

void grad::GradientAssVec< doublereal >::AddItem ( const integer  iRow,
const double  dCoef 
)
inline

Definition at line 164 of file matvecass.h.

References GRADIENT_ASSERT.

Referenced by testSubVecAss(), and testSubVecAssMatVec().

164  {
166 
168 #if GRADIENT_DEBUG > 0 && HAVE_FINITE == 1
169  if (!std::isfinite(dCoef)) {
170  silent_cerr("PutItem(" << iSubRow << ", " << iRow << ", " << dCoef << ")" << std::endl);
171  }
172  GRADIENT_ASSERT(std::isfinite(dCoef));
173 #endif
174  WorkVec.PutItem(iSubRow, iRow, dCoef);
175  }
virtual integer iGetSize(void) const =0
virtual void PutItem(integer iSubRow, integer iRow, const doublereal &dCoef)
Definition: submat.h:1445
#define GRADIENT_ASSERT(expr)
Definition: gradient.h:74
virtual void Resize(integer iNewSize)=0
template<index_type N_rows>
void grad::GradientAssVec< doublereal >::AddItem ( const integer  iFirstRow,
const Vector< doublereal, N_rows > &  v 
)
inline

Definition at line 178 of file matvecass.h.

References GRADIENT_ASSERT, and grad::Vector< T, N_rows >::iGetNumRows().

178  {
179  // zero based index according to VectorHandler::Put(integer iRow, const Vec3& v)
180  WorkVec.Resize(iSubRow + v.iGetNumRows());
181 
182  for (integer i = 0; i < v.iGetNumRows(); ++i) {
184 #if GRADIENT_DEBUG > 0 && HAVE_FINITE == 1
185  if (!std::isfinite(v(i + 1))) {
186  silent_cerr("PutItem(" << iSubRow + 1 << ", " << iFirstRow + i << ", " << v(i + 1) << ")" << std::endl);
187  }
188  GRADIENT_ASSERT(std::isfinite(v(i + 1)));
189 #endif
190  WorkVec.PutItem(++iSubRow, iFirstRow + i, v(i + 1));
191  }
192  }
virtual integer iGetSize(void) const =0
virtual void PutItem(integer iSubRow, integer iRow, const doublereal &dCoef)
Definition: submat.h:1445
long int integer
Definition: colamd.c:51
#define GRADIENT_ASSERT(expr)
Definition: gradient.h:74
virtual void Resize(integer iNewSize)=0

Here is the call graph for this function:

template<typename T >
static void grad::GradientAssVec< doublereal >::AssRes ( T *  pElem,
SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr,
enum FunctionCall  func,
enum mode_t  mode = RESET 
)
inlinestatic

Definition at line 137 of file matvecass.h.

143  {
144  const GradientVectorHandler<doublereal> XCurr_grad(XCurr);
145  const GradientVectorHandler<doublereal> XPrimeCurr_grad(XPrimeCurr);
146  GradientAssVec WorkVec_grad(WorkVec, mode);
147 
148  pElem->AssRes(WorkVec_grad, dCoef, XCurr_grad, XPrimeCurr_grad, func);
149  }
GradientAssVec(SubVectorHandler &vh, enum mode_t mode=RESET)
Definition: matvecass.h:117
void func(const T &u, const T &v, const T &w, doublereal e, T &f)
template<typename T >
static void grad::GradientAssVec< doublereal >::InitialAssRes ( T *  pElem,
SubVectorHandler WorkVec,
const VectorHandler XCurr,
enum FunctionCall  func,
enum mode_t  mode = RESET 
)
inlinestatic

Definition at line 153 of file matvecass.h.

157  {
158  const GradientVectorHandler<doublereal> XCurr_grad(XCurr);
159  GradientAssVec WorkVec_grad(WorkVec, mode);
160 
161  pElem->InitialAssRes(WorkVec_grad, XCurr_grad, func);
162  }
GradientAssVec(SubVectorHandler &vh, enum mode_t mode=RESET)
Definition: matvecass.h:117
void func(const T &u, const T &v, const T &w, doublereal e, T &f)

Member Data Documentation

Definition at line 196 of file matvecass.h.

Definition at line 195 of file matvecass.h.


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