Ignore:
Timestamp:
07/25/13 19:36:45 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added marker to edges for P2xP1

File:
1 edited

Legend:

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

    r15621 r15630  
    1919        int  i,j,v1,v2,v3;
    2020        int  maxnbe,nbe,elementnbe,elementnbv;
    21         int *elementedges = NULL;
     21        int *elementedges         = NULL;
     22        int *elementedges_markers = NULL;
    2223
    2324        /*Mesh dependent variables*/
     
    2526                elementnbv = 3;
    2627                elementnbe = 3;
    27                 elementedges=xNew<int>(elementnbe*2);
    28                 elementedges[2*0+0] = 1; elementedges[2*0+1] = 2;
    29                 elementedges[2*1+0] = 2; elementedges[2*1+1] = 0;
    30                 elementedges[2*2+0] = 0; elementedges[2*2+1] = 1;
     28                elementedges         = xNew<int>(elementnbe*2);
     29                elementedges_markers = xNew<int>(elementnbe);
     30                elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1;
     31                elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = 1;
     32                elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1;
    3133        }
    3234        else if(iomodel->dim==3){
    3335                elementnbv = 6;
    3436                elementnbe = 9;
    35                 elementedges=xNew<int>(elementnbe*2);
    36                 elementedges[2*0+0] = 0; elementedges[2*0+1] = 3;
    37                 elementedges[2*1+0] = 1; elementedges[2*1+1] = 4;
    38                 elementedges[2*2+0] = 2; elementedges[2*2+1] = 5;
    39                 elementedges[2*3+0] = 1; elementedges[2*3+1] = 2;
    40                 elementedges[2*4+0] = 2; elementedges[2*4+1] = 0;
    41                 elementedges[2*5+0] = 0; elementedges[2*5+1] = 1;
    42                 elementedges[2*6+0] = 4; elementedges[2*6+1] = 5;
    43                 elementedges[2*7+0] = 5; elementedges[2*7+1] = 3;
    44                 elementedges[2*8+0] = 3; elementedges[2*8+1] = 4;
     37                elementedges         = xNew<int>(elementnbe*2);
     38                elementedges_markers = xNew<int>(elementnbe);
     39                elementedges[2*0+0] = 0; elementedges[2*0+1] = 3; elementedges_markers[0] = 2;
     40                elementedges[2*1+0] = 1; elementedges[2*1+1] = 4; elementedges_markers[1] = 2;
     41                elementedges[2*2+0] = 2; elementedges[2*2+1] = 5; elementedges_markers[2] = 2;
     42                elementedges[2*3+0] = 1; elementedges[2*3+1] = 2; elementedges_markers[3] = 1;
     43                elementedges[2*4+0] = 2; elementedges[2*4+1] = 0; elementedges_markers[4] = 1;
     44                elementedges[2*5+0] = 0; elementedges[2*5+1] = 1; elementedges_markers[5] = 1;
     45                elementedges[2*6+0] = 4; elementedges[2*6+1] = 5; elementedges_markers[6] = 3;
     46                elementedges[2*7+0] = 5; elementedges[2*7+1] = 3; elementedges_markers[7] = 3;
     47                elementedges[2*8+0] = 3; elementedges[2*8+1] = 4; elementedges_markers[8] = 3;
    4548        }
    4649        else{
     
    5255
    5356        /*Initialize intermediaries*/
    54         int *edgestemp                 = xNew<int>(maxnbe*2);                             /*format: [vertex1 vertex2]       */
     57        int *edgestemp                 = xNew<int>(maxnbe*3);                             /*format: [vertex1 vertex2 marker]       */
    5558        int *element_edge_connectivity = xNew<int>(iomodel->numberofelements*elementnbe); /*format: [edge1 edge2 ... edgen] */
    5659
     
    8083                        /*Go through all processed edges connected to v1 and check whether we have seen this edge yet*/
    8184                        for(int e=head_minv[v1]; e!=-1; e=next_edge[e]){
    82                                 if(edgestemp[e*2+1]==v2+1){
     85                                if(edgestemp[e*3+1]==v2+1){
    8386                                        exist = true;
    8487                                        element_edge_connectivity[i*elementnbe+j]=e;
     
    9295
    9396                                /*Update edges*/
    94                                 edgestemp[nbe*2+0] = v1+1;
    95                                 edgestemp[nbe*2+1] = v2+1;
     97                                edgestemp[nbe*3+0] = v1+1;
     98                                edgestemp[nbe*3+1] = v2+1;
     99                                edgestemp[nbe*3+2] = elementedges_markers[j];
    96100
    97101                                /*Update Connectivity*/
     
    113117
    114118        /*Create final edges*/
    115         int* edges = xNew<int>(nbe*2); /*vertex1 vertex2*/
    116         for(int i=0;i<2*nbe;i++) edges[i] = edgestemp[i];
     119        int* edges = xNew<int>(nbe*2); /*format: [vertex1 vertex2 marker]*/
     120        for(int i=0;i<3*nbe;i++) edges[i] = edgestemp[i];
    117121
    118122        /*Clean up*/
Note: See TracChangeset for help on using the changeset viewer.