//--------------------------------------------------------- void CFlow_RecursiveUp::Get_Flow(int x, int y) { int i, ix, iy, j; double jFlow; if( !is_Locked(x,y) ) { Lock_Set(x,y); Init_Cell(x,y); for(i=0, j=4; i<8; i++, j=(j+1)%8) { ix = Get_xTo(i,x); iy = Get_yTo(i,y); if( is_InGrid(ix,iy) ) { jFlow = Flow[iy][ix][j]; if( jFlow > 0 ) { Get_Flow(ix,iy); Add_Fraction(ix,iy,j,jFlow); } } } } }
//--------------------------------------------------------- bool CFlow_Parallel::Calculate(void) { for(int y=0; y<Get_NY() && Set_Progress(y); y+=m_Step) { #pragma omp parallel for for(int x=0; x<Get_NX(); x+=m_Step) { Init_Cell(x, y); } } return( Set_Flow() ); }
//--------------------------------------------------------- bool CFlow_Parallel::Calculate(int x, int y) { Init_Cell(x, y); return( Set_Flow() ); }