Changeset 23995


Ignore:
Timestamp:
06/06/19 18:00:09 (6 years ago)
Author:
Mathieu Morlighem
Message:

CHG: speed up:

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp

    r23992 r23995  
    2121        Vector<IssmDouble>* vec_connected_to_land=new Vector<IssmDouble>(nbv_local,nbv_global);
    2222
     23        /*Prepare element flag to speed up process*/
     24        bool* element_flag = xNewZeroInit<bool>(femmodel->elements->Size());
     25
    2326        /*Fill vector with 1 where it is grounded*/
    2427        IssmDouble eflags[MAXVERTICES];
     
    2831                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
    2932
    30                 if(element->IsIceInElement()){
     33                if(!element->IsIceInElement()){
     34                        /*Nothing to do, just flag element to speed up the computation*/
     35                        element_flag[i] = true;
     36                }
     37                else{
    3138                        if(element->IsGrounded()){
    3239                                int  numvertices = element->GetNumberOfVertices();
     
    3845        }
    3946        vec_connected_to_land->Assemble();
    40 
    41         /*Prepare element flag to speed up process*/
    42         bool* element_flag = xNewZeroInit<bool>(femmodel->elements->Size());
    4347
    4448        bool keepsyncing = true;
     
    6064                                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
    6165
    62                                 if(element->IsIceInElement() || element_flag[i]){
     66                                if(!element_flag[i]){
    6367                                        int numvertices = element->GetNumberOfVertices();
    6468                                        element->GetVerticesLidList(&lidlist[0]);
     
    8892                ISSM_MPI_Reduce(&iter,&iter_max,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
    8993                if(iter_max==2){
    90                         xDelete<bool>(element_flag);
    9194                        keepsyncing = false;
    9295                }
     
    103106                                        }
    104107                        }
    105                         xDelete<bool>(element_flag);
    106108                        vec_connected_to_land->Assemble();
    107109                }
    108110        }
    109111
     112        /*Cleanup*/
     113        xDelete<bool>(element_flag);
    110114        delete vec_connected_to_land;
    111115
Note: See TracChangeset for help on using the changeset viewer.