BASKER_FINLINE void Basker<Int, Entry,Exe_Space>::csymamd_order ( BASKER_MATRIX &M, INT_1DARRAY p, INT_1DARRAY cmember ) { amd_flag = BASKER_TRUE; //Debug, #ifdef BASKER_DEBUG_ORDER_AMD printf("cmember: \n"); for(Int i = 0; i < M.ncol; ++i) { printf("(%d, %d), ", i, cmember(i)); } printf("\n"); #endif //If doing iluk, we will not want this. //See amd blk notes if(Options.incomplete == BASKER_TRUE) { for(Int i = 0; i < M.ncol; i++) { p(i) = i; } //printf("Short csym \n"); return; } INT_1DARRAY temp_p; BASKER_ASSERT(M.ncol > 0, "AMD perm not long enough"); MALLOC_INT_1DARRAY(temp_p, M.ncol+1); init_value(temp_p, M.ncol+1, (Int) 0); my_amesos_csymamd(M.ncol, &(M.col_ptr(0)), &(M.row_idx(0)), &(temp_p(0)), &(cmember(0))); for(Int i = 0; i < M.ncol; ++i) { p(temp_p(i)) = i; } }//end csymamd()
BASKER_FINLINE void Basker<Int, Entry,Exe_Space>::csymamd_order ( BASKER_MATRIX &M, INT_1DARRAY p, INT_1DARRAY cmember ) { amd_flag = BASKER_TRUE; //Debug, #ifdef BASKER_DEBUG_ORDER_AMD printf("cmember: \n"); for(Int i = 0; i < M.ncol; ++i) { printf("(%d, %d), ", i, cmember(i)); } printf("\n"); #endif INT_1DARRAY temp_p; BASKER_ASSERT(M.ncol > 0, "AMD perm not long enough"); MALLOC_INT_1DARRAY(temp_p, M.ncol+1); init_value(temp_p, M.ncol+1, (Int) 0); my_amesos_csymamd(M.ncol, &(M.col_ptr(0)), &(M.row_idx(0)), &(temp_p(0)), &(cmember(0))); for(Int i = 0; i < M.ncol; ++i) { p(temp_p(i)) = i; } }//end csymamd()
bool XFEMGeometricCut3D::intersectWithEdge(const Point & p1, const Point & p2, Point & pint) { bool has_intersection = false; double plane_point[3] = {_center(0), _center(1), _center(2)}; double plane_normal[3] = {_normal(0), _normal(1), _normal(2)}; double edge_point1[3] = {p1(0), p1(1), p1(2)}; double edge_point2[3] = {p2(0), p2(1), p2(2)}; double cut_point[3] = {0.0,0.0,0.0}; if (Xfem::plane_normal_line_exp_int_3d(plane_point, plane_normal, edge_point1, edge_point2, cut_point) == 1) { Point temp_p(cut_point[0], cut_point[1], cut_point[2]); if ( isInsideCutPlane(temp_p) && isInsideEdge(p1, p2, temp_p) ) { pint = temp_p; has_intersection = true; } } return has_intersection; }
void FuseProb::readProbTime(vector<Mat> P, vector<Mat> T) { cout<<"Size of P is "<<P.size()<<endl; cout<<"rows and cols are "<<P[0].rows<<" "<<P[0].cols<<endl; for(int id=0; id<orient; id++) { cout<<"At id"<<id<<endl; Mat temp_p(m_rows, m_cols, CV_64F); Mat temp_t(m_rows, m_cols, CV_64F); for(int i=0; i<m_rows; i++) for(int j=0; j<m_cols; j++) { // cout<<"At i="<<i<<" j="<<j<<endl; temp_p.at<double>(i, j) = P[id].at<double>(i, j); temp_t.at<double>(i, j) = T[id].at<double>(i, j); } Prob.push_back(temp_p); Time.push_back(temp_t); } }
BASKER_INLINE int Basker<Int, Entry, Exe_Space>::permute_col ( BASKER_MATRIX &M, INT_1DARRAY col ) { if((M.ncol == 0)||(M.nnz == 0)) return 0; Int n = M.ncol; Int nnz = M.nnz; //printf("Using n: %d nnz: %d \n", n, nnz); INT_1DARRAY temp_p; MALLOC_INT_1DARRAY(temp_p, n+1); init_value(temp_p, n+1, (Int)0); INT_1DARRAY temp_i; MALLOC_INT_1DARRAY(temp_i, nnz); init_value(temp_i, nnz, (Int)0); ENTRY_1DARRAY temp_v; MALLOC_ENTRY_1DARRAY(temp_v, nnz); init_value(temp_v, nnz, (Entry)0.0); //printf("done with init \n"); //Determine column ptr of output matrix for(Int j = 0; j < n; j++) { Int i = col (j); temp_p (i+1) = M.col_ptr (j+1) - M.col_ptr (j); } //Get ptrs from lengths temp_p (0) = 0; for(Int j = 0; j < n; j++) { temp_p (j+1) = temp_p (j+1) + temp_p (j); } //copy idxs for(Int ii = 0; ii < n; ii++) { Int ko = temp_p (col (ii) ); for(Int k = M.col_ptr (ii); k < M.col_ptr (ii+1); k++) { temp_i (ko) = M.row_idx (k); temp_v (ko) = M.val (k); ko++; } } //copy back int A for(Int ii=0; ii < n+1; ii++) { M.col_ptr (ii) = temp_p (ii); } for(Int ii=0; ii < nnz; ii++) { M.row_idx (ii) = temp_i (ii); M.val (ii) = temp_v (ii); } FREE_INT_1DARRAY(temp_p); FREE_INT_1DARRAY(temp_i); FREE_ENTRY_1DARRAY(temp_v); return 0; }//end permute_col(int)