NimbleSM
NimbleSM is a solid mechanics simulation code for dynamic systems
Loading...
Searching...
No Matches
nimble::details::AXPYResult< N > Struct Template Reference

#include <nimble_view.h>

Public Member Functions

 AXPYResult (const nimble::Viewify< N > A, double alpha)
 
void assignTo (double destCoef, double rhsCoef, nimble::Viewify< N > &dest) const
 Compute "dest = (destCoef) * dest + rhsCoef * alpha_ * A_".
 

Public Attributes

const nimble::Viewify< N > A_
 
double alpha_
 

Constructor & Destructor Documentation

◆ AXPYResult()

template<std::size_t N>
nimble::details::AXPYResult< N >::AXPYResult ( const nimble::Viewify< N > A,
double alpha )
inline
164: A_(A), alpha_(alpha) {}
Definition nimble_view.h:163
double alpha_
Definition nimble_view.h:178
const nimble::Viewify< N > A_
Definition nimble_view.h:177

Member Function Documentation

◆ assignTo()

template<std::size_t N>
void nimble::details::AXPYResult< N >::assignTo ( double destCoef,
double rhsCoef,
nimble::Viewify< N > & dest ) const

Compute "dest = (destCoef) * dest + rhsCoef * alpha_ * A_".

Parameters
[in]destCoefScalar
[in]rhsCoefScalar
[out]destViewify "vector" storing the result
Note
The routine does not check whether A_ and dest have the same length and the same stride.
184{
185 const double prod = alpha_ * rhsCoef;
186
187 auto len = dest.size();
188 auto stride = dest.stride();
189 const long isize = len[0] * stride[0];
190
191 double* data = dest.data();
192 double* rhs_data = A_.data();
193
194 if (destCoef == 1.0) {
195 for (long ii = 0; ii < isize; ++ii) data[ii] += prod * rhs_data[ii];
196 } else if (destCoef == 0.0) {
197 for (long ii = 0; ii < isize; ++ii) data[ii] = prod * rhs_data[ii];
198 } else {
199 for (long ii = 0; ii < isize; ++ii) data[ii] = destCoef * data[ii] + prod * rhs_data[ii];
200 }
201}

Member Data Documentation

◆ A_

template<std::size_t N>
const nimble::Viewify<N> nimble::details::AXPYResult< N >::A_

◆ alpha_

template<std::size_t N>
double nimble::details::AXPYResult< N >::alpha_

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