Changeset 17063


Ignore:
Timestamp:
01/06/14 12:51:46 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: creating FS One layer nodes

File:
1 edited

Legend:

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

    r17062 r17063  
    1212
    1313        /*Intermediaries*/
    14         int   i,j,counter,lid=0;
     14        int   i,j,counter,vnodes,lid=0;
    1515        bool *my_edges = NULL;
    1616        bool *my_nodes = NULL;
     
    195195                        }
    196196                        /*P1 pressure*/
    197                         for(i=0;i<iomodel->numberofvertices;i++){
    198                                 if(iomodel->my_vertices[i]){
    199                                         nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
     197                        vnodes = iomodel->nodecounter+iomodel->numberofvertices;
     198                        for(i=0;i<iomodel->numberofvertices;i++){
     199                                if(iomodel->my_vertices[i]){
     200                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
    200201                                }
    201202                        }
     
    210211                        }
    211212                        /*P1 pressure*/
    212                         for(i=0;i<iomodel->numberofvertices;i++){
    213                                 if(iomodel->my_vertices[i]){
    214                                         nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
     213                        vnodes = iomodel->nodecounter+iomodel->numberofvertices;
     214                        for(i=0;i<iomodel->numberofvertices;i++){
     215                                if(iomodel->my_vertices[i]){
     216                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
    215217                                }
    216218                        }
     
    232234                        }
    233235                        /*P1 pressure*/
    234                         for(i=0;i<iomodel->numberofvertices;i++){
    235                                 if(iomodel->my_vertices[i]){
    236                                         nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
     236                        vnodes = iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements;
     237                        for(i=0;i<iomodel->numberofvertices;i++){
     238                                if(iomodel->my_vertices[i]){
     239                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
    237240                                }
    238241                        }
     
    252255                        }
    253256                        /*P1 pressure*/
    254                         for(i=0;i<iomodel->numberofvertices;i++){
    255                                 if(iomodel->my_vertices[i]){
    256                                         nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
     257                        vnodes = iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements;
     258                        for(i=0;i<iomodel->numberofvertices;i++){
     259                                if(iomodel->my_vertices[i]){
     260                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
    257261                                }
    258262                        }
     
    274278
    275279                        /*P1 pressure*/
    276                         for(i=0;i<iomodel->numberofvertices;i++){
    277                                 if(iomodel->my_vertices[i]){
    278                                         nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,i,iomodel,analysis,FSpressureEnum));
     280                        vnodes = iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges;
     281                        for(i=0;i<iomodel->numberofvertices;i++){
     282                                if(iomodel->my_vertices[i]){
     283                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,i,iomodel,analysis,FSpressureEnum));
    279284                                }
    280285                        }
     
    282287                case OneLayerP4zEnum:
    283288                        _assert_(approximation==FSApproximationEnum);
     289                        EdgesPartitioning(&my_edges,iomodel);
    284290                        /*P2xP4 velocity*/
    285                         EdgesPartitioning(&my_edges,iomodel);
     291                        for(i=0;i<iomodel->numberofvertices;i++){
     292                                if(iomodel->my_vertices[i]){
     293                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,analysis,approximation));
     294                                }
     295                        }
     296                        counter = iomodel->numberofvertices;
     297                        for(i=0;i<iomodel->numberofedges;i++){
     298                                if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
     299                                        if(my_edges[i]){
     300                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     301                                                nodes->AddObject(node);
     302                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     303                                                nodes->AddObject(node);
     304                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     305                                                nodes->AddObject(node);
     306                                        }
     307                                }
     308                                else if(iomodel->edges[i*3+2]==1){/*Basal edges*/
     309                                        if(my_edges[i]){
     310                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     311                                                nodes->AddObject(node);
     312                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     313                                                nodes->AddObject(node);
     314                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     315                                                nodes->AddObject(node);
     316                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+4,counter+4,lid++,0,iomodel,analysis,approximation);
     317                                                nodes->AddObject(node);
     318                                        }
     319                                }
     320                                else if(iomodel->edges[i*3+2]==3){/*Top edges*/
     321                                        if(my_edges[i]){
     322                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     323                                                nodes->AddObject(node);
     324                                        }
     325                                }
     326                                else{
     327                                        _error_("not supported");
     328                                }
     329                                counter=counter+4;
     330                        }
    286331                        /*P1xP3 pressure*/
    287                         _error_("Not supported");
     332                        vnodes = iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges;
     333                        for(i=0;i<iomodel->numberofvertices;i++){
     334                                if(iomodel->my_vertices[i]){
     335                                        nodes->AddObject(new Node(vnodes+i+1,i,lid++,i,iomodel,analysis,approximation));
     336                                }
     337                        }
     338
     339                        counter = iomodel->numberofvertices;
     340                        for(i=0;i<iomodel->numberofedges;i++){
     341                                if(iomodel->edges[i*3+2]==2){
     342                                        if(my_edges[i]){
     343                                                node = new Node(vnodes+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     344                                                nodes->AddObject(node);
     345                                                node = new Node(vnodes+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     346                                                nodes->AddObject(node);
     347                                        }
     348                                        counter=counter+2;
     349                                }
     350                        }
    288351                        break;
    289352
Note: See TracChangeset for help on using the changeset viewer.