Changeset 23641
- Timestamp:
- 01/17/19 12:00:34 (6 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Node.cpp
r23640 r23641 623 623 } 624 624 /*}}}*/ 625 int Node::Pid(void){/*{{{*/ 626 return this->pid; 627 } 628 /*}}}*/ 625 629 626 630 /*Node numerics:*/ -
issm/trunk-jpl/src/c/classes/Node.h
r23640 r23641 108 108 void ShowMasterDofs(int* truerows,int setenum); 109 109 int Sid(void); 110 int Pid(void); 110 111 void UpdateCloneDofs(int* alltruerows,int setenum); 111 112 void VecMerge(Vector<IssmDouble>* ug,IssmDouble* local_uf,int* indices_uf,IssmDouble* local_ys,int* indices_ys); -
issm/trunk-jpl/src/c/classes/Nodes.cpp
r23640 r23641 360 360 } 361 361 /*}}}*/ 362 int Nodes::NumberOfNodesLocal(void){/*{{{*/ 363 364 return this->numberofmasters_local; 365 } 366 /*}}}*/ 362 367 bool Nodes::RequiresDofReindexing(void){/*{{{*/ 363 368 -
issm/trunk-jpl/src/c/classes/Nodes.h
r23640 r23641 44 44 int NumberOfDofsLocalAll(int setenum); 45 45 int NumberOfNodes(void); 46 int NumberOfNodesLocal(void); 46 47 bool RequiresDofReindexing(void); 47 48 }; -
issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp
r23612 r23641 108 108 /*Get vector size and number of nodes*/ 109 109 int numnodes = femmodel->nodes->NumberOfNodes(); 110 int localmasters = femmodel->nodes->NumberOfNodesLocal(); 110 111 int localnumnodes = femmodel->nodes->Size(); 111 112 int numberofdofspernode = femmodel->nodes->MaxNumDofs(GsetEnum); … … 171 172 bool *flags = xNew<bool>(localnumnodes); 172 173 int *flagsindices = xNew<int>(localnumnodes); 173 int *d_connectivity = xNewZeroInit<int>(numnodes); 174 int *o_connectivity = xNewZeroInit<int>(numnodes); 175 int *connectivity_clone = xNewZeroInit<int>(numnodes); 174 int *d_connectivity = xNewZeroInit<int>(localnumnodes); 175 int *o_connectivity = xNewZeroInit<int>(localnumnodes); 176 176 int *all_connectivity_clone = xNewZeroInit<int>(numnodes); 177 178 Vector<IssmDouble> *connectivity_clone= new Vector<IssmDouble>(localmasters,numnodes); 177 179 178 180 /*Resetting flags to false at eahc iteration takes a lot of time, so we keep track of the flags … … 209 211 element->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum); 210 212 if(node->IsClone()){ 211 connectivity_clone [node->Sid()]+=d_nz+o_nz;212 } 213 else{ 214 d_connectivity[node-> Sid()]+=d_nz;215 o_connectivity[node-> Sid()]+=o_nz;213 connectivity_clone->SetValue(node->Pid(),d_nz+o_nz,ADD_VAL); 214 } 215 else{ 216 d_connectivity[node->Lid()]+=d_nz; 217 o_connectivity[node->Lid()]+=o_nz; 216 218 } 217 219 } … … 221 223 load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum); 222 224 if(node->IsClone()){ 223 connectivity_clone [node->Sid()]+=d_nz+o_nz;224 } 225 else{ 226 d_connectivity[node-> Sid()]+=d_nz;227 o_connectivity[node-> Sid()]+=o_nz;225 connectivity_clone->SetValue(node->Pid(),d_nz+o_nz,ADD_VAL); 226 } 227 else{ 228 d_connectivity[node->Lid()]+=d_nz; 229 o_connectivity[node->Lid()]+=o_nz; 228 230 } 229 231 } … … 239 241 240 242 /*sum over all cpus*/ 241 ISSM_MPI_Allreduce((void*)connectivity_clone,(void*)all_connectivity_clone,numnodes,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm()); 242 xDelete<int>(connectivity_clone); 243 connectivity_clone->Assemble(); 244 IssmDouble* serial_connectivity_clone=NULL; 245 femmodel->GetLocalVectorWithClonesVertices(&serial_connectivity_clone,connectivity_clone); 246 delete connectivity_clone; 243 247 244 248 if(set1enum==FsetEnum){ … … 251 255 for(j=0;j<node->fsize;j++){ 252 256 _assert_(count<m); 253 d_nnz[count]=numberofdofspernode*(d_connectivity[node-> Sid()] + all_connectivity_clone[node->Sid()]);254 o_nnz[count]=numberofdofspernode*(o_connectivity[node-> Sid()] + all_connectivity_clone[node->Sid()]);257 d_nnz[count]=numberofdofspernode*(d_connectivity[node->Lid()] + reCast<int>(serial_connectivity_clone[node->Lid()])); 258 o_nnz[count]=numberofdofspernode*(o_connectivity[node->Lid()] + reCast<int>(serial_connectivity_clone[node->Lid()])); 255 259 if(d_nnz[count]>n) d_nnz[count]=n; 256 260 if(o_nnz[count]>N-n) o_nnz[count]=N-n; … … 266 270 xDelete<int>(d_connectivity); 267 271 xDelete<int>(o_connectivity); 268 xDelete< int>(all_connectivity_clone);272 xDelete<IssmDouble>(serial_connectivity_clone); 269 273 270 274 /*Allocate ouptput pointer*/
Note:
See TracChangeset
for help on using the changeset viewer.