Changeset 14787
- Timestamp:
- 04/29/13 15:31:59 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/objects/Bucket.h
r14750 r14787 34 34 /*constructors, destructors: */ 35 35 Bucket(){ /*{{{*/ 36 this->Initialize(); 37 } /*}}}*/ 38 Bucket(int min,int* idxmin,int nin,int* idxnin,doubletype* valuesin,InsMode modein){ /*{{{*/ 39 40 this->Initialize(); 41 42 this->type=MATRIX_BUCKET; 43 this->m=min; 44 this->n=nin; 45 this->mode=modein; 46 if(this->m){ 47 this->idxm=xNew<int>(this->m); 48 xMemCpy(this->idxm,idxmin,this->m); 49 } 50 if(this->n){ 51 this->idxn=xNew<int>(this->n); 52 xMemCpy(this->idxn,idxnin,this->n); 53 } 54 if(this->m*this->n){ 55 this->values=xNew<doubletype>(this->n*this->m); 56 xMemCpy(this->values,valuesin,this->n*this->m); 57 } 58 } /*}}}*/ 59 Bucket(int min,int* idxmin,doubletype* valuesin,InsMode modein){ /*{{{*/ 60 this->Initialize(); 61 62 this->type=VECTOR_BUCKET; 63 this->m=min; 64 this->mode=modein; 65 if(this->m){ 66 this->idxm=xNew<int>(this->m); 67 xMemCpy(this->idxm,idxmin,this->m); 68 69 this->values=xNew<doubletype>(this->m); 70 xMemCpy(this->values,valuesin,this->m); 71 } 72 } /*}}}*/ 73 ~Bucket(){ /*{{{*/ 74 xDelete<int>(idxm); 75 xDelete<int>(idxn); 76 xDelete<doubletype>(values); 77 } /*}}}*/ 78 void Initialize(void){ /*{{{*/ 79 36 80 this->type=0; 37 81 this->m=0; … … 41 85 this->values=NULL; 42 86 mode=INS_VAL; 43 } /*}}}*/ 44 Bucket(int min,int* idxmin,int nin,int* idxnin,doubletype* valuesin,InsMode modein){ /*{{{*/ 45 this->type=MATRIX_BUCKET; 46 this->m=min; 47 this->n=nin; 48 this->mode=modein; 49 if(this->m){ 50 this->idxm=xNew<int>(this->m); 51 xMemCpy(this->idxm,idxmin,this->m); 52 } 53 if(this->n){ 54 this->idxn=xNew<int>(this->n); 55 xMemCpy(this->idxn,idxnin,this->n); 56 } 57 if(this->m*this->n){ 58 this->values=xNew<doubletype>(this->n*this->m); 59 xMemCpy(this->values,valuesin,this->n*this->m); 60 } 61 } /*}}}*/ 62 Bucket(int min,int* idxmin,doubletype* valuesin,InsMode modein){ /*{{{*/ 63 this->type=VECTOR_BUCKET; 64 this->m=min; 65 this->n=1; 66 this->mode=modein; 67 if(this->m){ 68 this->idxm=xNew<int>(this->m); 69 xMemCpy(this->idxm,idxmin,this->m); 70 } 71 if(this->m){ 72 this->values=xNew<doubletype>(this->m); 73 xMemCpy(this->values,valuesin,this->m); 74 } 75 } /*}}}*/ 76 ~Bucket(){ /*{{{*/ 77 xDelete<int>(idxm); 78 xDelete<int>(idxn); 79 xDelete<doubletype>(values); 80 } /*}}}*/ 87 88 } /*}}}*/ 89 81 90 82 91 /*object virtual functions definitions:*/ … … 162 171 }; 163 172 /*}}}*/ 173 int BucketType(void){ /*{{{*/ 174 175 return type; 176 }; 177 /*}}}*/ 164 178 #ifdef _HAVE_MPI_ 165 179 void Isend(int receiver_rank,MPI_Request* requests,int* pcount,MPI_Comm comm){ /*{{{*/ … … 172 186 /*Send all the information required: */ 173 187 MPI_Isend(&type,1,MPI_INT,receiver_rank,2,comm,requests+count); count++; 174 MPI_Isend(&m,1,MPI_INT,receiver_rank, 2,comm,requests+count); count++;175 if(m){ MPI_Isend(idxm,m,MPI_INT,receiver_rank, 3,comm,requests+count); count++; }188 MPI_Isend(&m,1,MPI_INT,receiver_rank,3,comm,requests+count); count++; 189 if(m){ MPI_Isend(idxm,m,MPI_INT,receiver_rank,4,comm,requests+count); count++; } 176 190 if(type==MATRIX_BUCKET){ 177 MPI_Isend(&n,1,MPI_INT,receiver_rank, 4,comm,requests+count); count++;178 if(n){ MPI_Isend(idxn,n,MPI_INT,receiver_rank, 5,comm,requests+count); count++; }179 if(m*n){ MPI_Isend(values,m*n,MPI_DOUBLE,receiver_rank, 6,comm,requests+count); count++; }191 MPI_Isend(&n,1,MPI_INT,receiver_rank,5,comm,requests+count); count++; 192 if(n){ MPI_Isend(idxn,n,MPI_INT,receiver_rank,6,comm,requests+count); count++; } 193 if(m*n){ MPI_Isend(values,m*n,MPI_DOUBLE,receiver_rank,7,comm,requests+count); count++; } 180 194 } 181 195 else{ 182 if(m){ MPI_Isend(values,m,MPI_DOUBLE,receiver_rank, 6,comm,requests+count); count++; }196 if(m){ MPI_Isend(values,m,MPI_DOUBLE,receiver_rank,7,comm,requests+count); count++; } 183 197 } 184 198 int_mode=(int)mode; 185 MPI_Isend(&int_mode,1,MPI_INT,receiver_rank, 7,comm,requests+count); count++;199 MPI_Isend(&int_mode,1,MPI_INT,receiver_rank,8,comm,requests+count); count++; 186 200 187 201 /*Allocate pointers: */ … … 195 209 196 210 MPI_Recv(&type,1, MPI_INT,sender_rank,2, comm, &status); 197 MPI_Recv(&m,1, MPI_INT,sender_rank, 2, comm, &status);211 MPI_Recv(&m,1, MPI_INT,sender_rank,3, comm, &status); 198 212 if(m){ 199 213 idxm=new int[m]; 200 MPI_Recv(idxm,m, MPI_INT,sender_rank, 3, comm, &status);201 } 202 if(type= MATRIX_BUCKET){203 MPI_Recv(&n,1, MPI_INT,sender_rank, 4, comm, &status);214 MPI_Recv(idxm,m, MPI_INT,sender_rank,4, comm, &status); 215 } 216 if(type==MATRIX_BUCKET){ 217 MPI_Recv(&n,1, MPI_INT,sender_rank,5, comm, &status); 204 218 if(n){ 205 219 idxn=new int[n]; 206 MPI_Recv(idxn,n, MPI_INT,sender_rank, 5, comm, &status);220 MPI_Recv(idxn,n, MPI_INT,sender_rank,6, comm, &status); 207 221 } 208 222 if(m*n){ 209 223 values=new doubletype[m*n]; 210 MPI_Recv(values,m*n, MPI_DOUBLE,sender_rank, 6, comm, &status);224 MPI_Recv(values,m*n, MPI_DOUBLE,sender_rank,7, comm, &status); 211 225 } 212 226 } … … 214 228 if(m){ 215 229 values=new doubletype[m]; 216 MPI_Recv(values,m, MPI_DOUBLE,sender_rank, 6, comm, &status);230 MPI_Recv(values,m, MPI_DOUBLE,sender_rank,7, comm, &status); 217 231 } 218 232 } 219 MPI_Recv(&int_mode,1, MPI_INT,sender_rank, 7, comm, &status);233 MPI_Recv(&int_mode,1, MPI_INT,sender_rank,8, comm, &status); 220 234 mode=(InsMode)int_mode; 221 235
Note:
See TracChangeset
for help on using the changeset viewer.