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);
      }
}
Exemple #2
0
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();
}