Ignore:
Timestamp:
05/21/10 10:32:40 (15 years ago)
Author:
Mathieu Morlighem
Message:

fix parallelization of Pengrid's hook to element

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp

    r3812 r3872  
    1919        int i,j;
    2020        int vertexid;
     21        int elementswidth;
    2122
    2223        /*output*/
     
    2627        ISSMASSERT(iomodel->numberofvertices);
    2728        ISSMASSERT(iomodel->numberofelements);
     29        ISSMASSERT(iomodel->my_elements);
    2830        ISSMASSERT(iomodel->elements);
    2931
     
    3133        connectivity=(int*)xcalloc(iomodel->numberofvertices,sizeof(int));
    3234
     35        /*Get element width (3 or 6)*/
    3336        if (strcmp(iomodel->meshtype,"2d")==0){
    34                 for (i=0;i<iomodel->numberofelements;i++){
    35                         for (j=0;j<3;j++){
    36                                 vertexid=(int)iomodel->elements[3*i+j];
    37                                 ISSMASSERT(vertexid-1<iomodel->numberofvertices);
    38                                 connectivity[vertexid-1]=i;
    39                         }
    40                 }
     37                elementswidth=3;
    4138        }
    4239        else{
    43                 for (i=0;i<iomodel->numberofelements;i++){
    44                         for (j=0;j<6;j++){
    45                                 vertexid=(int)iomodel->elements[6*i+j];
    46                                 ISSMASSERT(vertexid-1<iomodel->numberofvertices);
    47                                 connectivity[vertexid-1]=i;
     40                elementswidth=6;
     41        }
     42
     43        /*Create connectivity table*/
     44        for (i=0;i<iomodel->numberofelements;i++){
     45                /*!! in parallel we do not want the vertex to be connected to an element that is not in its partition!!*/
     46                if(iomodel->my_elements[i]){
     47                        for (j=0;j<elementswidth;j++){
     48                                vertexid=(int)iomodel->elements[elementswidth*i+j];
     49                                ISSMASSERT(vertexid>0 && vertexid-1<iomodel->numberofvertices);
     50                                connectivity[vertexid-1]=i+1;
    4851                        }
    4952                }
    5053        }
    5154
     55        /*Assign to iomodel*/
    5256        iomodel->singlenodetoelementconnectivity=connectivity;
    5357
Note: See TracChangeset for help on using the changeset viewer.