MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr > Class Template Reference

#include <matvec.h>

Collaboration diagram for grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >:

Public Types

typedef CrossTraits
< VectorLhsExpr, VectorRhsExpr >
::ExprMult 
ExprMult
 
typedef CrossTraits
< VectorLhsExpr, VectorRhsExpr >
::ScalarType 
ScalarType
 
typedef CrossTraits
< VectorLhsExpr, VectorRhsExpr >
::ExpressionType 
ExpressionType
 

Public Member Functions

 VectorCrossExpr (const VectorLhsExpr &u, const VectorRhsExpr &v)
 
ExpressionType operator() (index_type i) const
 
index_type iGetNumRows () const
 
template<typename ScalarType2 >
bool bHaveReferenceTo (const ScalarType2 *pFirst, const ScalarType2 *pLast) const
 

Static Public Attributes

static const bool bAlias = VectorLhsExpr::bAlias || VectorRhsExpr::bAlias
 
static const index_type iNumRows = 3
 

Private Types

typedef IndexCheck< iNumRows-VectorLhsExpr::iNumRows >
::CheckType 
check_VectorLhsExpr
 
typedef IndexCheck< iNumRows-VectorRhsExpr::iNumRows >
::CheckType 
check_VectorRhsExpr
 

Private Attributes

const VectorLhsExpr oU
 
const VectorRhsExpr oV
 

Detailed Description

template<typename VectorLhsExpr, typename VectorRhsExpr>
class grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >

Definition at line 3199 of file matvec.h.

Member Typedef Documentation

template<typename VectorLhsExpr , typename VectorRhsExpr >
typedef IndexCheck<iNumRows - VectorLhsExpr::iNumRows>::CheckType grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::check_VectorLhsExpr
private

Definition at line 3242 of file matvec.h.

template<typename VectorLhsExpr , typename VectorRhsExpr >
typedef IndexCheck<iNumRows - VectorRhsExpr::iNumRows>::CheckType grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::check_VectorRhsExpr
private

Definition at line 3243 of file matvec.h.

template<typename VectorLhsExpr , typename VectorRhsExpr >
typedef CrossTraits<VectorLhsExpr, VectorRhsExpr>::ExpressionType grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::ExpressionType

Definition at line 3205 of file matvec.h.

template<typename VectorLhsExpr , typename VectorRhsExpr >
typedef CrossTraits<VectorLhsExpr, VectorRhsExpr>::ExprMult grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::ExprMult

Definition at line 3203 of file matvec.h.

template<typename VectorLhsExpr , typename VectorRhsExpr >
typedef CrossTraits<VectorLhsExpr, VectorRhsExpr>::ScalarType grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::ScalarType

Definition at line 3204 of file matvec.h.

Constructor & Destructor Documentation

template<typename VectorLhsExpr , typename VectorRhsExpr >
grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::VectorCrossExpr ( const VectorLhsExpr &  u,
const VectorRhsExpr &  v 
)
inline

Definition at line 3207 of file matvec.h.

References grad::Vector< T, N_rows >::iNumRows, and MATVEC_ASSERT.

3208  :oU(u), oV(v) {
3209 
3210  MATVEC_ASSERT(iNumRows == oU.iGetNumRows());
3211  MATVEC_ASSERT(iNumRows == oV.iGetNumRows());
3212  }
#define MATVEC_ASSERT(expr)
Definition: matvec.h:64
static const index_type iNumRows
Definition: matvec.h:3202
const VectorRhsExpr oV
Definition: matvec.h:3240
const VectorLhsExpr oU
Definition: matvec.h:3239

Member Function Documentation

template<typename VectorLhsExpr , typename VectorRhsExpr >
template<typename ScalarType2 >
bool grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::bHaveReferenceTo ( const ScalarType2 *  pFirst,
const ScalarType2 *  pLast 
) const
inline

Definition at line 3234 of file matvec.h.

3234  {
3235  return oU.bHaveReferenceTo(pFirst, pLast) || oV.bHaveReferenceTo(pFirst, pLast);
3236  }
const VectorRhsExpr oV
Definition: matvec.h:3240
const VectorLhsExpr oU
Definition: matvec.h:3239
template<typename VectorLhsExpr , typename VectorRhsExpr >
index_type grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::iGetNumRows ( void  ) const
inline

Definition at line 3229 of file matvec.h.

References grad::Vector< T, N_rows >::iNumRows.

3229  {
3230  return iNumRows;
3231  }
static const index_type iNumRows
Definition: matvec.h:3202
template<typename VectorLhsExpr , typename VectorRhsExpr >
ExpressionType grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::operator() ( index_type  i) const
inline

Definition at line 3214 of file matvec.h.

References grad::Vector< T, N_rows >::iNumRows, and MATVEC_ASSERT.

3214  {
3215  --i;
3216  MATVEC_ASSERT(i >= 0);
3217  MATVEC_ASSERT(i < iNumRows);
3218 
3219  static const index_type x = 1, y = 2, z = 3;
3220  static const index_type e1[3] = {y, z, x},
3221  e2[3] = {z, x, y},
3222  e3[3] = {z, x, y},
3223  e4[3] = {y, z, x};
3224 
3225  return ExpressionType(ExprMult(oU(e1[i]), oV(e2[i])),
3226  ExprMult(oU(e3[i]), oV(e4[i])));
3227  }
#define MATVEC_ASSERT(expr)
Definition: matvec.h:64
integer index_type
Definition: gradient.h:104
static const index_type iNumRows
Definition: matvec.h:3202
CrossTraits< VectorLhsExpr, VectorRhsExpr >::ExprMult ExprMult
Definition: matvec.h:3203
const VectorRhsExpr oV
Definition: matvec.h:3240
CrossTraits< VectorLhsExpr, VectorRhsExpr >::ExpressionType ExpressionType
Definition: matvec.h:3205
const VectorLhsExpr oU
Definition: matvec.h:3239

Member Data Documentation

template<typename VectorLhsExpr , typename VectorRhsExpr >
const bool grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::bAlias = VectorLhsExpr::bAlias || VectorRhsExpr::bAlias
static

Definition at line 3201 of file matvec.h.

template<typename VectorLhsExpr , typename VectorRhsExpr >
const index_type grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::iNumRows = 3
static

Definition at line 3202 of file matvec.h.

template<typename VectorLhsExpr , typename VectorRhsExpr >
const VectorLhsExpr grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::oU
private

Definition at line 3239 of file matvec.h.

template<typename VectorLhsExpr , typename VectorRhsExpr >
const VectorRhsExpr grad::VectorCrossExpr< VectorLhsExpr, VectorRhsExpr >::oV
private

Definition at line 3240 of file matvec.h.


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