void supports_broadcast ( int myid, int nspt, int dim ) { int mix[nspt]; int fail,i,j; double point[dim]; if(myid == 0) { fail = celcon_type_of_mixture(&nspt,mix); if(v>0) printf("The number of occurrences of supports is: "); if(v>0) Print_Integer_Array(nspt,mix); } MPI_Bcast(mix,nspt,MPI_INT,0,MPI_COMM_WORLD); if(myid != 0) fail = celcon_set_type_of_mixture(nspt,mix); if(myid == 0) { fail = celcon_length_of_supports(&nspt,mix); /* get #different supports and #points of each support. */ if(v>0) printf("The number of points in root supports is: "); if(v>0) Print_Integer_Array(nspt,mix); } MPI_Bcast(mix,nspt,MPI_INT,0,MPI_COMM_WORLD); for(i=0;i<nspt;i++) for(j=0;j<mix[i];j++) { if(myid==0) fail = celcon_get_lifted_point(dim,i+1,j+1,point); MPI_Bcast(point,dim,MPI_DOUBLE,0,MPI_COMM_WORLD); if(myid!=0) fail = celcon_append_lifted_point(dim,i+1,point); } }
void read_and_construct ( void ) { int r,*mix,i,fail,rr,n; double *c; printf("\nGive the number of different supports : "); scanf("%d",&r); mix = (int*)calloc(r,sizeof(int)); for(i=0; i<r; i++) { printf(" how many times does support %d occur ? ", i+1); scanf("%d",&mix[i]); } fail = celcon_set_type_of_mixture(r,mix); fail = show_mixture(r,&rr); printf("\nGive the dimension of the lifted points : "); scanf("%d",&n); fail = read_supports(r,n); fail = write_lifted_supports(n); fail = read_mixed_cell(r,n); fail = celcon_write_mixed_cell_configuration(); }