Changeset 25384
- Timestamp:
- 08/12/20 08:52:10 (5 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r25379 r25384 3369 3369 } 3370 3370 /*}}}*/ 3371 void Element::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/3371 void Element::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/ 3372 3372 3373 3373 /*Intermediaries*/ … … 3386 3386 flags[this->nodes[i]->Lid()]=true; 3387 3387 3388 int counter=0; 3389 while(flagsindices[counter]>=0) counter++; 3390 flagsindices[counter]=this->nodes[i]->Lid(); 3388 flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid(); 3389 flagsindices_counter[0]++; 3391 3390 3392 3391 /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r25379 r25384 164 164 void ResultToMatrix(IssmDouble* values,int ncols,int output_enum); 165 165 void ResultToVector(Vector<IssmDouble>* vector,int output_enum); 166 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);166 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum); 167 167 void SetBoolInput(Inputs* inputs,int enum_in,bool value); 168 168 -
issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp
r23642 r25384 170 170 171 171 /*OK now count number of dofs and flag each nodes for each node i*/ 172 bool *flags = xNew<bool>(localnumnodes); 173 int *flagsindices = xNew<int>(localnumnodes); 174 int *d_connectivity = xNewZeroInit<int>(localnumnodes); 175 int *o_connectivity = xNewZeroInit<int>(localnumnodes); 172 bool *flags = xNew<bool>(localnumnodes); 173 int *flagsindices = xNew<int>(localnumnodes); 174 int *d_connectivity = xNewZeroInit<int>(localnumnodes); 175 int *o_connectivity = xNewZeroInit<int>(localnumnodes); 176 int flagsindices_counter; 176 177 177 178 Vector<IssmDouble> *connectivity_clone= new Vector<IssmDouble>(localmasters,numnodes); 178 179 179 /*Resetting flags to false at ea hciteration takes a lot of time, so we keep track of the flags180 /*Resetting flags to false at each iteration takes a lot of time, so we keep track of the flags 180 181 * to reset in flagsindices, initialized with -1*/ 181 182 for(i = 0;i<localnumnodes;i++) flags[i] = false; … … 198 199 } 199 200 } 200 201 //for(j=0;j<localnumnodes;j++) flags[j]=false; 202 203 /*Loop over elements that hold node number i*/ 204 //if(head_e[node->Lid()]==-1 && head_l[node->Lid()]==-1){ 205 // printf("[%i] vertex %i\n",IssmComm::GetRank(),node->Lid()+1); 206 //} 201 flagsindices_counter = 0; 202 207 203 for(j=head_e[node->Lid()];j!=-1;j=next_e[j]){ 208 204 offset=count2offset_e[j]; 209 205 element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(offset)); 210 element->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices, set1enum,set2enum);206 element->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,&flagsindices_counter,set1enum,set2enum); 211 207 if(node->IsClone()){ 212 208 connectivity_clone->SetValue(node->Pid(),d_nz+o_nz,ADD_VAL);
Note:
See TracChangeset
for help on using the changeset viewer.