Changeset 25386


Ignore:
Timestamp:
08/12/20 11:10:05 (5 years ago)
Author:
Mathieu Morlighem
Message:

CHG: speed up code

Location:
issm/trunk-jpl/src/c
Files:
16 edited

Legend:

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

    r25379 r25386  
    296296}
    297297/*}}}*/
    298 void  Channel::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
     298void  Channel::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
    299299
    300300        /*Output */
     
    310310                        flags[this->nodes[i]->Lid()]=true;
    311311
    312                         int counter=0;
    313                         while(flagsindices[counter]>=0) counter++;
    314                         flagsindices[counter]=this->nodes[i]->Lid();
     312                        flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
     313         flagsindices_counter[0]++;
    315314
    316315                        /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
  • issm/trunk-jpl/src/c/classes/Loads/Channel.h

    r24132 r25386  
    7575                void ResetHooks();
    7676                void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
    77                 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     77                void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
    7878                /*}}}*/
    7979                /*Channel management:{{{*/
  • issm/trunk-jpl/src/c/classes/Loads/Load.h

    r23588 r25386  
    3737                virtual void  ResetHooks()=0;
    3838                virtual void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
    39                 virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum)=0;
     39                virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum)=0;
    4040};
    4141#endif
  • issm/trunk-jpl/src/c/classes/Loads/Moulin.cpp

    r24089 r25386  
    273273}
    274274/*}}}*/
    275 void  Moulin::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
     275void  Moulin::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
    276276
    277277        /*Output */
     
    284284                flags[this->node->Lid()]=true;
    285285
    286                 int counter=0;
    287                 while(flagsindices[counter]>=0) counter++;
    288                 flagsindices[counter]=this->node->Lid();
     286                flagsindices[flagsindices_counter[0]]=this->node->Lid();
     287                flagsindices_counter[0]++;
    289288
    290289                /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
  • issm/trunk-jpl/src/c/classes/Loads/Moulin.h

    r24089 r25386  
    7474                void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
    7575                void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
    76                 void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     76                void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
    7777                void  ResetHooks();
    7878                /*}}}*/
  • issm/trunk-jpl/src/c/classes/Loads/Neumannflux.cpp

    r25379 r25386  
    285285}
    286286/*}}}*/
    287 void  Neumannflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
     287void  Neumannflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
    288288
    289289        /*Output */
     
    299299                        flags[this->nodes[i]->Lid()]=true;
    300300
    301                         int counter=0;
    302                         while(flagsindices[counter]>=0) counter++;
    303                         flagsindices[counter]=this->nodes[i]->Lid();
     301                        flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
     302         flagsindices_counter[0]++;
    304303
    305304                        /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
  • issm/trunk-jpl/src/c/classes/Loads/Neumannflux.h

    r23970 r25386  
    6868                void ResetHooks();
    6969                void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
    70                 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     70                void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
    7171                /*}}}*/
    7272                /*Neumannflux management:{{{*/
  • issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp

    r25379 r25386  
    409409}
    410410/*}}}*/
    411 void  Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
     411void  Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
    412412
    413413        /*Output */
     
    423423                        flags[this->nodes[i]->Lid()]=true;
    424424
    425                         int counter=0;
    426                         while(flagsindices[counter]>=0) counter++;
    427                         flagsindices[counter]=this->nodes[i]->Lid();
     425                        flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
     426         flagsindices_counter[0]++;
    428427
    429428                        /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
  • issm/trunk-jpl/src/c/classes/Loads/Numericalflux.h

    r24130 r25386  
    7171                void ResetHooks();
    7272                void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
    73                 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     73                void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
    7474                /*}}}*/
    7575                /*Numericalflux management:{{{*/
  • issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp

    r24240 r25386  
    278278}
    279279/*}}}*/
    280 void  Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
     280void  Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
    281281
    282282        /*Output */
     
    289289                flags[this->node->Lid()]=true;
    290290
    291                 int counter=0;
    292                 while(flagsindices[counter]>=0) counter++;
    293                 flagsindices[counter]=this->node->Lid();
     291                flagsindices[flagsindices_counter[0]]=this->node->Lid();
     292                flagsindices_counter[0]++;
    294293
    295294                /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
  • issm/trunk-jpl/src/c/classes/Loads/Pengrid.h

    r23959 r25386  
    6868                void  ResetHooks();
    6969                void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
    70                 void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     70                void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
    7171                /*}}}*/
    7272                /*Pengrid management {{{*/
  • issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp

    r24933 r25386  
    214214}
    215215/*}}}*/
    216 void  Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
     216void  Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
    217217
    218218        /*Output */
     
    228228                        flags[this->nodes[i]->Lid()]=true;
    229229
     230                        flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
     231         flagsindices_counter[0]++;
    230232                        int counter=0;
    231                         while(flagsindices[counter]>=0) counter++;
    232                         flagsindices[counter]=this->nodes[i]->Lid();
    233233
    234234                        /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
  • issm/trunk-jpl/src/c/classes/Loads/Penpair.h

    r23959 r25386  
    6060                void  ResetHooks();
    6161                void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
    62                 void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     62                void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
    6363                /*}}}*/
    6464                        /*Penpair management: {{{*/
  • issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp

    r24933 r25386  
    373373}
    374374/*}}}*/
    375 void  Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
     375void  Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
    376376
    377377        /*Output */
     
    387387                        flags[this->nodes[i]->Lid()]=true;
    388388
    389                         int counter=0;
    390                         while(flagsindices[counter]>=0) counter++;
    391                         flagsindices[counter]=this->nodes[i]->Lid();
     389                        flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
     390                        flagsindices_counter[0]++;
    392391
    393392                        /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
  • issm/trunk-jpl/src/c/classes/Loads/Riftfront.h

    r24089 r25386  
    8686                void  ResetHooks();
    8787                void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
    88                 void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     88                void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
    8989                /*}}}*/
    9090                /*Riftfront specific routines: {{{*/
  • issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp

    r25384 r25386  
    216216                        offset=count2offset_l[j];
    217217                        load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(offset));
    218                         load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum);
     218                        load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,&flagsindices_counter,set1enum,set2enum);
    219219                        if(node->IsClone()){
    220220                                connectivity_clone->SetValue(node->Pid(),d_nz+o_nz,ADD_VAL);
Note: See TracChangeset for help on using the changeset viewer.