/*!\file: PartitionSets.cpp * \brief partition degree of freedome sets */ #include "stdio.h" #include "../../shared/shared.h" #include "../../include/include.h" void PartitionSets(Vec* ppartitionb, Vec* ppartitionc,Vec flags_a,Vec flags_b,Vec flags_c,int gsize){ int i; /*output: */ Vec partitionb=NULL; Vec partitionb_vec=NULL; double* partitionb_local=NULL; Vec partitionc=NULL; Vec partitionc_vec=NULL; double* partitionc_local=NULL; /*intermediary: */ int local_size; int* idxm=NULL; double* flags_a_local=NULL; double* flags_b_local=NULL; double* flags_c_local=NULL; int lower_row, upper_row, range; int asize, bsize, csize; int acount, bcount, ccount, dummy; /*First recover flags locally on each cpu: */ VecGetOwnershipRange(flags_a,&lower_row,&upper_row); upper_row--; range=upper_row-lower_row+1; if(range){ idxm=(int*)xmalloc(range*sizeof(int)); flags_a_local=(double*)xmalloc(range*sizeof(double)); flags_b_local=(double*)xmalloc(range*sizeof(double)); flags_c_local=(double*)xmalloc(range*sizeof(double)); } for(i=0;i