diff --git a/src/TNL/Containers/StaticVector.h b/src/TNL/Containers/StaticVector.h index ca410edfefaf94e4d74b3c84b91b72fad0c4d07d..9d5fa6471dbf26d6c95dd9c34ec86dd02df3641b 100644 --- a/src/TNL/Containers/StaticVector.h +++ b/src/TNL/Containers/StaticVector.h @@ -57,7 +57,11 @@ class StaticVector : public StaticArray< Size, Real > //! Multiplication with number __cuda_callable__ StaticVector& operator *= ( const Real& c ); - + + //! Division by number + __cuda_callable__ + StaticVector& operator /= ( const Real& c ); + //! Addition operator __cuda_callable__ StaticVector operator + ( const StaticVector& u ) const; @@ -155,6 +159,10 @@ class StaticVector< 1, Real > : public StaticArray< 1, Real > //! Multiplication with number __cuda_callable__ StaticVector& operator *= ( const Real& c ); + + //! Division by number + __cuda_callable__ + StaticVector& operator /= ( const Real& c ); //! Addition operator __cuda_callable__ @@ -257,6 +265,10 @@ class StaticVector< 2, Real > : public StaticArray< 2, Real > __cuda_callable__ StaticVector& operator *= ( const Real& c ); + //! Division by number + __cuda_callable__ + StaticVector& operator /= ( const Real& c ); + //! Adding operator __cuda_callable__ StaticVector operator + ( const StaticVector& u ) const; @@ -357,6 +369,11 @@ class StaticVector< 3, Real > : public StaticArray< 3, Real > //! Multiplication with number __cuda_callable__ StaticVector& operator *= ( const Real& c ); + + //! Division by number + __cuda_callable__ + StaticVector& operator /= ( const Real& c ); + //! Addition operator __cuda_callable__ diff --git a/src/TNL/Containers/StaticVector1D_impl.h b/src/TNL/Containers/StaticVector1D_impl.h index 3127a621910111ff1490ccdc94675c8e737d7fc8..f009b52afe4f7d630ad11c6324e5b5fe291dd71c 100644 --- a/src/TNL/Containers/StaticVector1D_impl.h +++ b/src/TNL/Containers/StaticVector1D_impl.h @@ -86,6 +86,14 @@ StaticVector< 1, Real >& StaticVector< 1, Real >::operator *= ( const Real& c ) return *this; } +template< typename Real > +__cuda_callable__ +StaticVector< 1, Real >& StaticVector< 1, Real >::operator /= ( const Real& c ) +{ + this->data[ 0 ] /= c; + return *this; +} + template< typename Real > __cuda_callable__ StaticVector< 1, Real > StaticVector< 1, Real >::operator + ( const StaticVector& u ) const diff --git a/src/TNL/Containers/StaticVector2D_impl.h b/src/TNL/Containers/StaticVector2D_impl.h index d66979bf7a3be3bed89929b3d84cdf5da61199d4..fdcc28aa51efcf1e3bf1da787d0957bf64a39db1 100644 --- a/src/TNL/Containers/StaticVector2D_impl.h +++ b/src/TNL/Containers/StaticVector2D_impl.h @@ -97,6 +97,16 @@ StaticVector< 2, Real >& StaticVector< 2, Real >::operator *= ( const Real& c ) return *this; } +template< typename Real > +__cuda_callable__ +StaticVector< 2, Real >& StaticVector< 2, Real >::operator /= ( const Real& c ) +{ + const RealType d = 1.0 /c; + this->data[ 0 ] *= d; + this->data[ 1 ] *= d; + return *this; +} + template< typename Real > __cuda_callable__ StaticVector< 2, Real > StaticVector< 2, Real >::operator + ( const StaticVector& u ) const diff --git a/src/TNL/Containers/StaticVector3D_impl.h b/src/TNL/Containers/StaticVector3D_impl.h index d01e82077afd4feba62657d769803a68e1fe8fa1..655ed87365b1b53cd45d4c33805108ccc155cba5 100644 --- a/src/TNL/Containers/StaticVector3D_impl.h +++ b/src/TNL/Containers/StaticVector3D_impl.h @@ -101,6 +101,17 @@ StaticVector< 3, Real >& StaticVector< 3, Real >::operator *= ( const Real& c ) return *this; } +template< typename Real > +__cuda_callable__ +StaticVector< 3, Real >& StaticVector< 3, Real >::operator /= ( const Real& c ) +{ + const RealType d = 1.0 / c; + this->data[ 0 ] *= d; + this->data[ 1 ] *= d; + this->data[ 2 ] *= d; + return *this; +} + template< typename Real > __cuda_callable__ StaticVector< 3, Real > StaticVector< 3, Real >::operator + ( const StaticVector& u ) const diff --git a/src/TNL/Containers/StaticVector_impl.h b/src/TNL/Containers/StaticVector_impl.h index 45e680a098f36aeeed127295f210dcad5d629d28..5f28e277af22fb6bdd6beab0a58d8a158359c38c 100644 --- a/src/TNL/Containers/StaticVector_impl.h +++ b/src/TNL/Containers/StaticVector_impl.h @@ -91,6 +91,16 @@ StaticVector< Size, Real >& StaticVector< Size, Real >::operator *= ( const Real return *this; } +template< int Size, typename Real > +__cuda_callable__ +StaticVector< Size, Real >& StaticVector< Size, Real >::operator /= ( const Real& c ) +{ + const RealType d = 1.0 / c; + for( int i = 0; i < Size; i++ ) + this->data[ i ] *= d; + return *this; +} + template< int Size, typename Real > __cuda_callable__ StaticVector< Size, Real > StaticVector< Size, Real >::operator + ( const StaticVector& u ) const