1#include <cuda_runtime.h> 
   10    template <
typename VarType>
 
   14        my_transposedA.clear();
 
   19    template <
typename VarType>
 
   22        my_A.assign(s_matrix);
 
   23        my_transposedA.assign(s_matrix_transposed);
 
   26        my_x.resize(s_b.size());
 
   30    template <
typename VarType>
 
   33        int system_size = my_b.size();
 
   39        SparseV x_0(system_size);
 
   44        VarType delta_0 = 10, delta_new = 10, delta_old = 10;
 
   45        SparseV b_new, temp1, temp2, my_r, my_d, my_q;
 
   46        b_new.resize(system_size); temp1.resize(system_size); temp2.resize(system_size); my_r.resize(system_size); my_d.resize(system_size); my_q.resize(system_size); 
 
   47        b_new.reset(); temp1.reset(); temp2.reset(); my_r.reset(); my_d.reset(); my_q.reset();
 
   60        delta_new = m_arithmetic->Dot(my_r, my_r);
 
   62        while ((itor < i_max) && (delta_new > (threshold*threshold*delta_0)))
 
   66            VarType alpha = delta_new / m_arithmetic->Dot(my_q, my_q);
 
   72                temp1.reset(); temp2.reset();
 
   84            delta_old = delta_new;
 
   85            delta_new = m_arithmetic->Dot(my_r, my_r);
 
   86            VarType beta = delta_new / delta_old;
 
   94        x_0.clear();b_new.clear();temp1.clear();temp2.clear();my_r.clear();my_d.clear();my_q.clear();
 
static Arithmetic * Create(int n)
 
void assign_cgls(CArray< VarType > &s_b, std::vector< std::map< int, VarType > > &s_matrix, std::vector< std::map< int, VarType > > &s_matrix_transposed)
 
void clear()
Free allocated memory. Should be called before the object is deleted.
 
void CGLS(int i_max, VarType threshold)
 
void saxpy(DArray< T > &zArr, DArray< T > &xArr, DArray< T > &yArr, T alpha)
 
void subtract(DArray< T > &zArr, DArray< T > &xArr, DArray< T > &yArr)
 
This is an implementation of AdditiveCCD based on peridyno.
 
Array< T, DeviceType::CPU > CArray
 
void multiply_SM_by_vector(DArrayMap< VarType > &matrix_a, DArray< VarType > &a, DArray< VarType > &Aa)