PlayaLoadableVector.hpp
00001
00002
00003
00004
00005 #ifndef PLAYA_LOADABLEVECTOR_HPP
00006 #define PLAYA_LOADABLEVECTOR_HPP
00007
00008 #include "PlayaDefs.hpp"
00009
00010 namespace Playa
00011 {
00036 template <class Scalar>
00037 class LoadableVector
00038 {
00039 public:
00041 virtual ~LoadableVector() {;}
00042
00044 virtual void setElement(int globalIndex, const Scalar& value) = 0 ;
00045
00048 virtual void addToElement(int globalIndex, const Scalar& value) = 0 ;
00049
00051 virtual void setElements(int numElems,
00052 const int* globalIndices,
00053 const Scalar* values) ;
00054
00056 virtual void addToElements(int numElems,
00057 const int* globalIndices,
00058 const Scalar* values);
00059
00063 virtual void finalizeAssembly() {;}
00064 };
00065
00066
00067
00068
00069 template <class Scalar>
00070 inline void LoadableVector<Scalar>::setElements(int numElems,
00071 const int* globalIndices,
00072 const Scalar* values)
00073 {
00074 for (int i=0; i<numElems; i++)
00075 {
00076 setElement(globalIndices[i], values[i]);
00077 }
00078 }
00079
00080
00081
00082
00083 template <class Scalar>
00084 inline void LoadableVector<Scalar>::addToElements(int numElems,
00085 const int* globalIndices,
00086 const Scalar* values)
00087 {
00088 for (int i=0; i<numElems; i++)
00089 {
00090 addToElement(globalIndices[i], values[i]);
00091 }
00092 }
00093
00094
00095
00096 }
00097
00098 #endif