| | |
| | | end=(thID+1)*partition_size; |
| | | } |
| | | ts_double rnvec[3]; |
| | | ts_uint i,j; //b; |
| | | ts_uint i,j,b; |
| | | ts_vertex *vtx; |
| | | //ts_bool retval; |
| | | // ts_fprintf(stdout,"Thread thID=%d report for duty. My vtxes are in range from %d to %d.\n",thID,thID*partition_size, end-1); |
| | | for(i=thID*partition_size;i<end;i++){ |
| | | rnvec[0]=drand48(); |
| | |
| | | pthread_mutex_lock(&vesicle->mutex->vtx_untaint); |
| | | vertex_untaint(vesicle->vlist->vtx[i],1); |
| | | pthread_mutex_unlock(&vesicle->mutex->vtx_untaint); |
| | | // ts_fprintf(stdout, "Vertex %d should be untainted, level=%d.\n", i, vesicle->vlist->vtx[i]->locked); |
| | | } |
| | | |
| | | // ts_int cnt=0; |
| | | /* |
| | | for(i=0;i<vesicle->vlist->n;i++){ |
| | | |
| | | for(i=0;i<(ts_uint)((ts_double)(vesicle->vlist->n)/(ts_double)vesicle->threads);i++){ |
| | | b=rand() % vesicle->blist->n; |
| | | //find a bond and return a pointer to a bond... |
| | | //call single_bondflip_timestep... |
| | | retval=single_bondflip_timestep(vesicle,vesicle->blist->bond[b],rnvec); |
| | | vtx=vesicle->blist->bond[b]->vtx1; |
| | | |
| | | /**** THREAD IS POTENTIALLY LOCKED ******/ |
| | | pthread_mutex_lock(&vesicle->mutex->vtx_taint); |
| | | while(vertex_tainted(vtx,2,1)){ |
| | | ts_fprintf(stdout, "BF:: thID=%d Vertex %d is tainted. Amount=%d. BU(H)TELJ!\n neigh. vtxs: ",thID, i, *(vesicle->vlist->vtx[i]->locked)); |
| | | for(j=0; j<vesicle->vlist->vtx[i]->neigh_no; j++){ |
| | | ts_fprintf(stdout, "%d(a=%d) ", vesicle->vlist->vtx[i]->neigh[j]->idx, *(vesicle->vlist->vtx[i]->neigh[j]->locked)); |
| | | } |
| | | ts_fprintf(stdout, ".\n"); |
| | | } |
| | | |
| | | pthread_mutex_lock(&vesicle->mutex->vtx_untaint); |
| | | vertex_taint(vtx,2); |
| | | pthread_mutex_unlock(&vesicle->mutex->vtx_untaint); |
| | | |
| | | pthread_mutex_unlock(&vesicle->mutex->vtx_taint); |
| | | /**** THREAD IS RELEASING MUTEX RESOURCES ******/ |
| | | |
| | | //retval= |
| | | single_bondflip_timestep(vesicle,vesicle->blist->bond[b],rnvec); |
| | | |
| | | pthread_mutex_lock(&vesicle->mutex->vtx_untaint); |
| | | vertex_untaint(vtx,2); |
| | | pthread_mutex_unlock(&vesicle->mutex->vtx_untaint); |
| | | |
| | | |
| | | // if(retval==TS_SUCCESS) cnt++; |
| | | } |
| | | // printf("Bondflip success rate in one sweep: %d/%d=%e\n", cnt,vesicle->blist->n,(double)cnt/(double)vesicle->blist->n); |
| | | */ |
| | | |
| | | /* if(retval); |
| | | return TS_SUCCESS; |
| | | */ |