Changeset 16035


Ignore:
Timestamp:
08/30/13 10:31:20 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: use nodes Lid to allocate stiffness matrix (divides allocation time by 10)

Location:
issm/trunk-jpl/src/c/classes
Files:
5 edited

Legend:

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

    r15982 r16035  
    455455        /*Get vector size and number of nodes*/
    456456        int numnodes            = nodes->NumberOfNodes(configuration_type);
     457        int localnumnodes       = nodes->Size();
    457458        int numberofdofspernode = nodes->MaxNumDofs(configuration_type,GsetEnum);
    458459        int M                   = nodes->NumberOfDofs(configuration_type,set1enum);
     
    516517
    517518        /*OK now count number of dofs and flag each nodes for each node i*/
    518         bool *flags                  = xNew<bool>(numnodes);
     519        bool *flags                  = xNew<bool>(localnumnodes);
    519520        int  *d_connectivity         = xNewZeroInit<int>(numnodes);
    520521        int  *o_connectivity         = xNewZeroInit<int>(numnodes);
     
    523524
    524525        /*Create connectivity vector*/
     526        MPI_Barrier(MPI_COMM_WORLD); double start_core2=MPI_Wtime( );
    525527        for(i=0;i<nodes->Size();i++){
    526528                Node* node=dynamic_cast<Node*>(nodes->GetObjectByOffset(i));
     
    528530
    529531                        /*Reinitialize flags to 0*/
    530                         for(j=0;j<numnodes;j++) flags[j]=false;
     532                        for(j=0;j<localnumnodes;j++) flags[j]=false;
    531533
    532534                        /*Loop over elements that hold node number i*/
     
    567569        xDelete<int>(head_l);
    568570        xDelete<int>(next_l);
     571        MPI_Barrier(MPI_COMM_WORLD); double finish_core2=MPI_Wtime( );
     572        _printf0_("\nTotal ellapsed time "<<finish_core2-start_core2<<" seconds  \n");
    569573
    570574        /*sum over all cpus*/
  • issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp

    r15767 r16035  
    379379        for(int i=0;i<this->GetNumberOfNodes();i++){
    380380
    381                 if(!flags[this->nodes[i]->Sid()]){
     381                if(!flags[this->nodes[i]->Lid()]){
    382382
    383383                        /*flag current node so that no other element processes it*/
    384                         flags[this->nodes[i]->Sid()]=true;
     384                        flags[this->nodes[i]->Lid()]=true;
    385385
    386386                        /*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.cpp

    r15771 r16035  
    298298        int o_nz = 0;
    299299
    300         if(!flags[this->node->Sid()]){
     300        if(!flags[this->node->Lid()]){
    301301
    302302                /*flag current node so that no other element processes it*/
    303                 flags[this->node->Sid()]=true;
     303                flags[this->node->Lid()]=true;
    304304
    305305                /*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.cpp

    r15794 r16035  
    217217        for(int i=0;i<NUMVERTICES;i++){
    218218
    219                 if(!flags[this->nodes[i]->Sid()]){
     219                if(!flags[this->nodes[i]->Lid()]){
    220220
    221221                        /*flag current node so that no other element processes it*/
    222                         flags[this->nodes[i]->Sid()]=true;
     222                        flags[this->nodes[i]->Lid()]=true;
    223223
    224224                        /*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.cpp

    r15986 r16035  
    394394        for(int i=0;i<NUMVERTICES;i++){
    395395
    396                 if(!flags[this->nodes[i]->Sid()]){
     396                if(!flags[this->nodes[i]->Lid()]){
    397397
    398398                        /*flag current node so that no other element processes it*/
    399                         flags[this->nodes[i]->Sid()]=true;
     399                        flags[this->nodes[i]->Lid()]=true;
    400400
    401401                        /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Note: See TracChangeset for help on using the changeset viewer.