Ignore:
Timestamp:
08/23/18 11:09:21 (7 years ago)
Author:
Mathieu Morlighem
Message:

CHG: moving my_edges and my_faces to iomodel to avoid recomputation

File:
1 edited

Legend:

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

    r22362 r23167  
    6262        /*Higher-order finite elements*/
    6363        int   v1,v2;
    64         bool *my_edges = NULL;
    65         bool *my_faces = NULL;
    6664        bool *boundaryedge = NULL;
    6765
     
    8482                case P1xP3Enum:
    8583                case P1xP4Enum:
    86                         EdgesPartitioning(&my_edges,iomodel);
     84                        EdgesPartitioning(iomodel);
    8785                        break;
    8886                case P2xP1Enum:
    89                         EdgesPartitioning(&my_edges,iomodel);
     87                        EdgesPartitioning(iomodel);
    9088                        break;
    9189                case P2Enum:
    92                         EdgesPartitioning(&my_edges,iomodel);
    93               if(iomodel->meshelementtype==PentaEnum){
    94                                 FacesPartitioning(&my_faces,iomodel);
    95                         }
     90                        EdgesPartitioning(iomodel);
     91              if(iomodel->meshelementtype==PentaEnum) FacesPartitioning(iomodel);
    9692                        EdgeOnBoundaryFlags(&boundaryedge,iomodel);
    9793                        break;
    9894                case P2bubbleEnum:
    99                         EdgesPartitioning(&my_edges,iomodel);
     95                        EdgesPartitioning(iomodel);
    10096                        if(iomodel->meshelementtype==PentaEnum){
    101                                 FacesPartitioning(&my_faces,iomodel);
     97                                FacesPartitioning(iomodel);
    10298                        }
    10399                        EdgeOnBoundaryFlags(&boundaryedge,iomodel);
     
    110106                        break;
    111107                case P2xP4Enum:
    112                         EdgesPartitioning(&my_edges,iomodel);
    113                         FacesPartitioning(&my_faces,iomodel);
     108                        EdgesPartitioning(iomodel);
     109                        FacesPartitioning(iomodel);
    114110                        break;
    115111                default:
     
    140136                                }
    141137                                for(i=0;i<iomodel->numberofedges;i++){
    142                                         if(my_edges[i] && boundaryedge[i]){
     138                                        if(iomodel->my_edges[i] && boundaryedge[i]){
    143139                                                v1 = iomodel->edges[3*i+0]-1;
    144140                                                v2 = iomodel->edges[3*i+1]-1;
     
    153149                                        for(i=0;i<iomodel->numberoffaces;i++){
    154150                                                if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    155                                                         if(my_faces[i]){
     151                                                        if(iomodel->my_faces[i]){
    156152                                                                numfacevertices = iomodel->faces[i*iomodel->facescols+3];
    157153                                                                value=0.;
     
    181177                                }
    182178                                for(i=0;i<iomodel->numberofedges;i++){
    183                                         if(my_edges[i] && boundaryedge[i]){
     179                                        if(iomodel->my_edges[i] && boundaryedge[i]){
    184180                                                v1 = iomodel->edges[3*i+0]-1;
    185181                                                v2 = iomodel->edges[3*i+1]-1;
     
    194190                                        for(i=0;i<iomodel->numberoffaces;i++){
    195191                                                if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    196                                                         if(my_faces[i]){
     192                                                        if(iomodel->my_faces[i]){
    197193                                                                numfacevertices = iomodel->faces[i*iomodel->facescols+3];
    198194                                                                value=0.;
     
    238234                                for(i=0;i<iomodel->numberofedges;i++){
    239235                                        if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
    240                                                 if(my_edges[i]){
     236                                                if(iomodel->my_edges[i]){
    241237                                                        v1 = iomodel->edges[3*i+0]-1;
    242238                                                        v2 = iomodel->edges[3*i+1]-1;
     
    253249                                        }
    254250                                        if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
    255                                                 if(my_edges[i]){
     251                                                if(iomodel->my_edges[i]){
    256252                                                        v1 = iomodel->edges[3*i+0]-1;
    257253                                                        v2 = iomodel->edges[3*i+1]-1;
     
    266262                                for(i=0;i<iomodel->numberoffaces;i++){
    267263                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    268                                                 if(my_faces[i]){
     264                                                if(iomodel->my_faces[i]){
    269265                                                        numfacevertices = iomodel->faces[i*iomodel->facescols+3];
    270266                                                        value=0.;
     
    332328                                for(i=0;i<iomodel->numberofedges;i++){
    333329                                        if(iomodel->edges[i*3+2]==2){
    334                                                 if(my_edges[i]){
     330                                                if(iomodel->my_edges[i]){
    335331                                                        v1 = iomodel->edges[3*i+0]-1;
    336332                                                        v2 = iomodel->edges[3*i+1]-1;
     
    355351                                for(i=0;i<iomodel->numberofedges;i++){
    356352                                        if(iomodel->edges[i*3+2]==2){
    357                                                 if(my_edges[i]){
     353                                                if(iomodel->my_edges[i]){
    358354                                                        v1 = iomodel->edges[3*i+0]-1;
    359355                                                        v2 = iomodel->edges[3*i+1]-1;
     
    380376                                for(i=0;i<iomodel->numberofedges;i++){
    381377                                        if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
    382                                                 if(my_edges[i]){
     378                                                if(iomodel->my_edges[i]){
    383379                                                        v1 = iomodel->edges[3*i+0]-1;
    384380                                                        v2 = iomodel->edges[3*i+1]-1;
     
    407403                                for(i=0;i<iomodel->numberofedges;i++){
    408404                                        if(iomodel->edges[i*3+2]!=2){
    409                                                 if(my_edges[i]){
     405                                                if(iomodel->my_edges[i]){
    410406                                                        v1 = iomodel->edges[3*i+0]-1;
    411407                                                        v2 = iomodel->edges[3*i+1]-1;
     
    472468                                }
    473469                                for(i=0;i<iomodel->numberofedges;i++){
    474                                         if(my_edges[i]){
     470                                        if(iomodel->my_edges[i]){
    475471                                                v1 = iomodel->edges[3*i+0]-1;
    476472                                                v2 = iomodel->edges[3*i+1]-1;
     
    511507                                for(i=0;i<iomodel->numberofedges;i++){
    512508                                        if(iomodel->edges[i*3+2]==2){
    513                                                 if(my_edges[i]){
     509                                                if(iomodel->my_edges[i]){
    514510                                                        v1 = iomodel->edges[3*i+0]-1;
    515511                                                        v2 = iomodel->edges[3*i+1]-1;
     
    551547                                for(i=0;i<iomodel->numberofedges;i++){
    552548                                        if(iomodel->edges[i*3+2]==2){
    553                                                 if(my_edges[i]){
     549                                                if(iomodel->my_edges[i]){
    554550                                                        v1 = iomodel->edges[3*i+0]-1;
    555551                                                        v2 = iomodel->edges[3*i+1]-1;
     
    601597                                for(i=0;i<iomodel->numberofedges;i++){
    602598                                        if(iomodel->edges[i*3+2]!=2){
    603                                                 if(my_edges[i]){
     599                                                if(iomodel->my_edges[i]){
    604600                                                        v1 = iomodel->edges[3*i+0]-1;
    605601                                                        v2 = iomodel->edges[3*i+1]-1;
     
    634630        xDelete<IssmDouble>(times);
    635631        xDelete<IssmDouble>(values);
    636         xDelete<bool>(my_edges);
    637         xDelete<bool>(my_faces);
    638632        xDelete<bool>(boundaryedge);
    639633}/*}}}*/
     
    649643        /*Higher-order finite elements*/
    650644        int   v1,v2;
    651         bool *my_edges = NULL;
    652         bool *my_faces = NULL;
    653645        bool *boundaryedge = NULL;
    654646
     
    669661                        break;
    670662                case P1xP2Enum:
    671                         EdgesPartitioning(&my_edges,iomodel);
     663                        EdgesPartitioning(iomodel);
    672664                        break;
    673665                case P1xP3Enum:
    674                         EdgesPartitioning(&my_edges,iomodel);
     666                        EdgesPartitioning(iomodel);
    675667                        break;
    676668                case P2xP1Enum:
    677                         EdgesPartitioning(&my_edges,iomodel);
     669                        EdgesPartitioning(iomodel);
    678670                        break;
    679671                case P2Enum:
    680                         EdgesPartitioning(&my_edges,iomodel);
     672                        EdgesPartitioning(iomodel);
    681673                        if(iomodel->meshelementtype==PentaEnum){
    682                                 FacesPartitioning(&my_faces,iomodel);
     674                                FacesPartitioning(iomodel);
    683675                        }
    684676                        EdgeOnBoundaryFlags(&boundaryedge,iomodel);
    685677                        break;
    686678                case P2bubbleEnum:
    687                         EdgesPartitioning(&my_edges,iomodel);
     679                        EdgesPartitioning(iomodel);
    688680                        if(iomodel->meshelementtype==PentaEnum){
    689                                 FacesPartitioning(&my_faces,iomodel);
     681                                FacesPartitioning(iomodel);
    690682                        }
    691683                        EdgeOnBoundaryFlags(&boundaryedge,iomodel);
     
    698690                        break;
    699691                case P2xP4Enum:
    700                         EdgesPartitioning(&my_edges,iomodel);
    701                         FacesPartitioning(&my_faces,iomodel);
     692                        EdgesPartitioning(iomodel);
     693                        FacesPartitioning(iomodel);
    702694                        break;
    703695                default:
     
    729721                                for(i=0;i<iomodel->numberofedges;i++){
    730722                                        if(iomodel->edges[i*3+2]==2){
    731                                                 if(my_edges[i]){
     723                                                if(iomodel->my_edges[i]){
    732724                                                        v1 = iomodel->edges[3*i+0]-1;
    733725                                                        v2 = iomodel->edges[3*i+1]-1;
     
    752744                                for(i=0;i<iomodel->numberofedges;i++){
    753745                                        if(iomodel->edges[i*3+2]==2){
    754                                                 if(my_edges[i]){
     746                                                if(iomodel->my_edges[i]){
    755747                                                        v1 = iomodel->edges[3*i+0]-1;
    756748                                                        v2 = iomodel->edges[3*i+1]-1;
     
    780772        xDelete<IssmDouble>(times);
    781773        xDelete<IssmDouble>(values);
    782         xDelete<bool>(my_edges);
    783         xDelete<bool>(my_faces);
    784774        xDelete<bool>(boundaryedge);
    785775}/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.