Changeset 16043


Ignore:
Timestamp:
08/30/13 11:53:16 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: chaining algorithm can work with lids only instead of sids

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r16042 r16043  
    444444        int     *next_l             = NULL;
    445445        int     *count2offset_l     = NULL;
    446         int     *sidlist            = NULL;
     446        int     *lidlist            = NULL;
    447447
    448448        /*output*/
     
    469469         * will loop over all the elements that are connected to the node number
    470470         * id*/
    471         head_e         = xNew<int>(numnodes); for(i=0;i<numnodes;i++) head_e[i]=-1;
     471        head_e         = xNew<int>(localnumnodes); for(i=0;i<localnumnodes;i++) head_e[i]=-1;
    472472        next_e         = xNew<int>(elements->Size()*numnodesperelement);
    473473        count2offset_e = xNew<int>(elements->Size()*numnodesperelement);
     
    476476        for(i=0;i<elements->Size();i++){
    477477                element = dynamic_cast<Element*>(elements->GetObjectByOffset(i));
    478                 sidlist = xNew<int>(element->GetNumberOfNodes());
    479                 element->GetNodesSidList(sidlist);
     478                lidlist = xNew<int>(element->GetNumberOfNodes());
     479                element->GetNodesLidList(lidlist);
    480480
    481481                for(j=0;j<element->GetNumberOfNodes();j++){
    482                         index = sidlist[j];
     482                        index = lidlist[j];
    483483                        _assert_(index>=0 && index<numnodes);
    484484
     
    489489                for(j=0;j<numnodesperelement-element->GetNumberOfNodes();j++) k++;
    490490
    491                 xDelete<int>(sidlist);
     491                xDelete<int>(lidlist);
    492492        }
    493493
    494494        /*Chain for loads*/
    495         head_l         = xNew<int>(numnodes); for(i=0;i<numnodes;i++) head_l[i]=-1;
     495        head_l         = xNew<int>(localnumnodes); for(i=0;i<localnumnodes;i++) head_l[i]=-1;
    496496        next_l         = xNew<int>(loads->Size(configuration_type)*numnodesperload);
    497497        count2offset_l = xNew<int>(loads->Size(configuration_type)*numnodesperload);
     
    500500                load = dynamic_cast<Load*>(loads->GetObjectByOffset(i));
    501501                if(!load->InAnalysis(configuration_type)) continue;
    502                 sidlist = xNew<int>(load->GetNumberOfNodes());
    503                 load->GetNodesSidList(sidlist);
     502                lidlist = xNew<int>(load->GetNumberOfNodes());
     503                load->GetNodesLidList(lidlist);
    504504
    505505                for(j=0;j<load->GetNumberOfNodes();j++){
    506                         index = sidlist[j];
     506                        index = lidlist[j];
    507507                        _assert_(index>=0 && index<numnodes);
    508508
     
    513513                for(j=0;j<numnodesperload-load->GetNumberOfNodes();j++) k++;
    514514
    515                 xDelete<int>(sidlist);
     515                xDelete<int>(lidlist);
    516516        }
    517517
     
    553553                        //      printf("[%i] vertex %i\n",IssmComm::GetRank(),node->Lid()+1);
    554554                        //}
    555                         for(j=head_e[node->Sid()];j!=-1;j=next_e[j]){
     555                        for(j=head_e[node->Lid()];j!=-1;j=next_e[j]){
    556556                                offset=count2offset_e[j];
    557557                                element=dynamic_cast<Element*>(elements->GetObjectByOffset(offset));
     
    565565                                }
    566566                        }
    567                         for(j=head_l[node->Sid()];j!=-1;j=next_l[j]){
     567                        for(j=head_l[node->Lid()];j!=-1;j=next_l[j]){
    568568                                offset=count2offset_l[j];
    569569                                load=dynamic_cast<Load*>(loads->GetObjectByOffset(offset));
Note: See TracChangeset for help on using the changeset viewer.