source: issm/oecreview/Archive/23390-24306/ISSM-23558-23559.diff

Last change on this file was 24307, checked in by Mathieu Morlighem, 5 years ago

NEW: adding Archive/23390-24306

File size: 30.5 KB
  • ../trunk-jpl/src/c/classes/Node.cpp

     
    2020        this->approximation=0;
    2121}
    2222/*}}}*/
    23 Node::Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_enum,int in_approximation){/*{{{*/
     23Node::Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index, IoModel* iomodel,int analysis_enum,int in_approximation){/*{{{*/
    2424
    2525        /*Intermediary*/
    2626        int k,l;
     
    3030        this->id            = node_id;
    3131        this->sid           = node_sid;
    3232        this->lid           = node_lid;
     33        this->pid           = node_pid;
    3334        this->analysis_enum = analysis_enum;
    3435
    3536        /*Initialize coord_system: Identity matrix by default*/
     
    136137        output->id  = this->id;
    137138        output->sid = this->sid;
    138139        output->lid = this->lid;
     140        output->pid = this->pid;
    139141        output->analysis_enum = this->analysis_enum;
    140142        output->approximation = this->approximation;
    141143
     
    155157        MARSHALLING(id);
    156158        MARSHALLING(sid);
    157159        MARSHALLING(lid);
     160        MARSHALLING(pid);
    158161        MARSHALLING(indexingupdate);
    159162        indexing.Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
    160163        MARSHALLING(analysis_enum);
     
    181184        _printf_("Node:\n");
    182185        _printf_("   id : " << id << "\n");
    183186        _printf_("   sid: " << sid << "\n");
     187        _printf_("   lid: " << lid << "\n");
     188        _printf_("   pid: " << pid << "\n");
    184189        _printf_("   analysis_enum: " << EnumToStringx(analysis_enum) << "\n");
    185190        _printf_("   approximation: " << EnumToStringx(approximation) << "\n");
    186191        _printf_("   indexingupdate: " << indexingupdate << "\n");
  • ../trunk-jpl/src/c/classes/Node.h

     
    3131                int id;    // unique arbitrary id.
    3232                int sid;   // "serial" id (rank of this node if the dataset was serial on 1 cpu)
    3333                int lid;   // "local"  id (rank of this node in current partition)
     34                int pid;   // parallel id (specific to this partition)
    3435
    3536                int          analysis_enum;
    3637                IssmDouble   coord_system[3][3];
     
    3940
    4041                /*Node constructors, destructors*/
    4142                Node();
    42                 Node(int node_id,int node_sid,int node_lid,int io_index, IoModel* iomodel,int analysis_enum,int approximation_in);
     43                Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index, IoModel* iomodel,int analysis_enum,int approximation_in);
    4344                ~Node();
    4445
    4546                /*Object virtual functions definitions:*/
  • ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp

     
    9898                if(iomodel->my_vertices[i]){
    9999
    100100                        /*Create new node if is in this processor's partition*/
    101                         node = new Node(i+1,i,lid++,i,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));
     101                        node = new Node(i+1,i,lid++,0,i,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));
    102102
    103103                        /*Deactivate node if not SIA*/
    104104                        if(IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){
  • ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

     
    557557                                if(iomodel->my_vertices[i]){
    558558                                        approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
    559559                                        if(approximation==FSApproximationEnum)  approximation=FSvelocityEnum;
    560                                         nodes->AddObject(new Node(i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,approximation));
     560                                        nodes->AddObject(new Node(i+1,i,lid++,0,i,iomodel,StressbalanceAnalysisEnum,approximation));
    561561                                }
    562562                        }
    563563                        for(int i=0;i<iomodel->numberofelements;i++){
    564564                                if(iomodel->my_elements[i]){
    565                                         node = new Node(iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum);
     565                                        node = new Node(iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum);
    566566                                        node->Deactivate();
    567567                                        nodes->AddObject(node);
    568568                                }
     
    571571                        for(int i=0;i<iomodel->numberofvertices;i++){
    572572                                if(iomodel->my_vertices[i]){
    573573                                        approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
    574                                         node = new Node(iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum);
     574                                        node = new Node(iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum);
    575575                                        if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){
    576576                                                node->Deactivate();
    577577                                        }
     
    582582                else{
    583583                        for(int i=0;i<iomodel->numberofvertices;i++){
    584584                                if(iomodel->my_vertices[i]){
    585                                         nodes->AddObject(new Node(i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))));
     585                                        nodes->AddObject(new Node(i+1,i,lid++,0,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))));
    586586                                }
    587587                        }
    588588                }
  • ../trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp

     
    267267        int* vertices_ranks = xNew<int>(MAXCONNECTIVITY*iomodel->numberofvertices);
    268268        for(int i=0;i<MAXCONNECTIVITY*iomodel->numberofvertices;i++) vertices_ranks[i] = -1;
    269269
    270         /*For all vertices, cound how many cpus hold vertex i (initialize with 0)*/
     270        /*For all vertices, count how many cpus hold vertex i (initialize with 0)*/
    271271        int* vertices_proc_count = xNewZeroInit<int>(iomodel->numberofvertices);
    272272
    273273        /*Create vector of size total nbv, initialized with -1, that will keep track of local ids*/
  • ../trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

     
    2121                case P1Enum:
    2222                        for(i=0;i<iomodel->numberofvertices;i++){
    2323                                if(iomodel->my_vertices[i]){
    24                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     24                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    2525                                }
    2626                        }
    2727                        break;
     
    3131                        for(i=0;i<iomodel->numberofelements;i++){
    3232                                for(j=0;j<3;j++){
    3333                                        if(my_nodes[3*i+j]){
    34                                                 nodes->AddObject(new Node(id0+3*i+j+1,id0+3*i+j,lid++,iomodel->elements[3*i+j]-1,iomodel,analysis,approximation));
     34                                                nodes->AddObject(new Node(id0+3*i+j+1,id0+3*i+j,lid++,0,iomodel->elements[3*i+j]-1,iomodel,analysis,approximation));
    3535
    3636                                        }
    3737                                }
     
    4141                case P1bubbleEnum:
    4242                        for(i=0;i<iomodel->numberofvertices;i++){
    4343                                if(iomodel->my_vertices[i]){
    44                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     44                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    4545                                }
    4646                        }
    4747                        for(i=0;i<iomodel->numberofelements;i++){
    4848                                if(iomodel->my_elements[i]){
    49                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation));
     49                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation));
    5050                                }
    5151                        }
    5252                        break;
     
    5454                case P1bubblecondensedEnum:
    5555                        for(i=0;i<iomodel->numberofvertices;i++){
    5656                                if(iomodel->my_vertices[i]){
    57                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     57                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    5858                                }
    5959                        }
    6060                        for(i=0;i<iomodel->numberofelements;i++){
    6161                                if(iomodel->my_elements[i]){
    62                                         node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation);
     62                                        node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation);
    6363                                        node->HardDeactivate();
    6464                                        nodes->AddObject(node);
    6565                                }
     
    7070                        EdgesPartitioning(iomodel);
    7171                        for(i=0;i<iomodel->numberofvertices;i++){
    7272                                if(iomodel->my_vertices[i]){
    73                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     73                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    7474                                }
    7575                        }
    7676
     
    7878                        for(i=0;i<iomodel->numberofedges;i++){
    7979                                if(iomodel->edges[i*3+2]==2){
    8080                                        if(iomodel->my_edges[i]){
    81                                                 node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     81                                                node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
    8282                                                nodes->AddObject(node);
    8383                                        }
    8484                                        counter++;
     
    9090                        EdgesPartitioning(iomodel);
    9191                        for(i=0;i<iomodel->numberofvertices;i++){
    9292                                if(iomodel->my_vertices[i]){
    93                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     93                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    9494                                }
    9595                        }
    9696
     
    9898                        for(i=0;i<iomodel->numberofedges;i++){
    9999                                if(iomodel->edges[i*3+2]==2){
    100100                                        if(iomodel->my_edges[i]){
    101                                                 node = new Node(id0+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     101                                                node = new Node(id0+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
    102102                                                nodes->AddObject(node);
    103                                                 node = new Node(id0+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     103                                                node = new Node(id0+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
    104104                                                nodes->AddObject(node);
    105105                                        }
    106106                                        counter=counter+2;
     
    111111                        EdgesPartitioning(iomodel);
    112112                        for(i=0;i<iomodel->numberofvertices;i++){
    113113                                if(iomodel->my_vertices[i]){
    114                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     114                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    115115                                }
    116116                        }
    117117                        counter = iomodel->numberofvertices;
     
    118118                        for(i=0;i<iomodel->numberofedges;i++){
    119119                                if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
    120120                                        if(iomodel->my_edges[i]){
    121                                                 node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     121                                                node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
    122122                                                nodes->AddObject(node);
    123                                                 node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     123                                                node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
    124124                                                nodes->AddObject(node);
    125                                                 node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     125                                                node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,iomodel,analysis,approximation);
    126126                                                nodes->AddObject(node);
    127127                                        }
    128128                                        counter=counter+3;
     
    134134                        EdgesPartitioning(iomodel);
    135135                        for(i=0;i<iomodel->numberofvertices;i++){
    136136                                if(iomodel->my_vertices[i]){
    137                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     137                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    138138                                }
    139139                        }
    140140
     
    142142                        for(i=0;i<iomodel->numberofedges;i++){
    143143                                if(iomodel->edges[i*3+2]!=2){
    144144                                        if(iomodel->my_edges[i]){
    145                                                 node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     145                                                node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
    146146                                                nodes->AddObject(node);
    147147                                        }
    148148                                        counter++;
     
    154154                        EdgesPartitioning(iomodel);
    155155                        for(i=0;i<iomodel->numberofvertices;i++){
    156156                                if(iomodel->my_vertices[i]){
    157                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     157                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    158158                                }
    159159                        }
    160160                        for(i=0;i<iomodel->numberofedges;i++){
    161161                                if(iomodel->my_edges[i]){
    162                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation));
     162                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation));
    163163                                }
    164164                        }
    165165                        id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
     
    168168                                for(i=0;i<iomodel->numberoffaces;i++){
    169169                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    170170                                                if(iomodel->my_faces[i]){
    171                                                         node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,approximation);
     171                                                        node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,approximation);
    172172                                                        nodes->AddObject(node);
    173173                                                }
    174174                                        }
     
    185185                        EdgesPartitioning(iomodel);
    186186                        for(i=0;i<iomodel->numberofvertices;i++){
    187187                                if(iomodel->my_vertices[i]){
    188                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     188                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    189189                                }
    190190                        }
    191191                        for(i=0;i<iomodel->numberofedges;i++){
    192192                                if(iomodel->my_edges[i]){
    193                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation));
     193                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation));
    194194                                }
    195195                        }
    196196                        id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
     
    199199                                for(i=0;i<iomodel->numberoffaces;i++){
    200200                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    201201                                                if(iomodel->my_faces[i]){
    202                                                         node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,approximation);
     202                                                        node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,approximation);
    203203                                                        nodes->AddObject(node);
    204204                                                }
    205205                                        }
     
    214214                        }
    215215                        for(i=0;i<iomodel->numberofelements;i++){
    216216                                if(iomodel->my_elements[i]){
    217                                         nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,iomodel,analysis,approximation));
     217                                        nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,iomodel,analysis,approximation));
    218218                                }
    219219                        }
    220220                        break;
     
    223223                        FacesPartitioning(iomodel);
    224224                        for(i=0;i<iomodel->numberofvertices;i++){
    225225                                if(iomodel->my_vertices[i]){
    226                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation));
     226                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
    227227                                }
    228228                        }
    229229                        counter = iomodel->numberofvertices;
     
    230230                        for(i=0;i<iomodel->numberofedges;i++){
    231231                                if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
    232232                                        if(iomodel->my_edges[i]){
    233                                                 node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     233                                                node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
    234234                                                nodes->AddObject(node);
    235                                                 node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     235                                                node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
    236236                                                nodes->AddObject(node);
    237                                                 node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     237                                                node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,iomodel,analysis,approximation);
    238238                                                nodes->AddObject(node);
    239239                                        }
    240240                                        counter=counter+3;
     
    241241                                }
    242242                                else if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
    243243                                        if(iomodel->my_edges[i]){
    244                                                 node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     244                                                node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
    245245                                                nodes->AddObject(node);
    246246                                        }
    247247                                        counter=counter+1;
     
    254254                        for(i=0;i<iomodel->numberoffaces;i++){
    255255                                if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    256256                                        if(iomodel->my_faces[i]){
    257                                                 node = new Node(id0+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     257                                                node = new Node(id0+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
    258258                                                nodes->AddObject(node);
    259                                                 node = new Node(id0+3*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     259                                                node = new Node(id0+3*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
    260260                                                nodes->AddObject(node);
    261                                                 node = new Node(id0+3*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     261                                                node = new Node(id0+3*i+3,counter+3,lid++,0,0,iomodel,analysis,approximation);
    262262                                                nodes->AddObject(node);
    263263                                        }
    264264                                        counter=counter+3;
     
    278278                        /*P1 velocity*/
    279279                        for(i=0;i<iomodel->numberofvertices;i++){
    280280                                if(iomodel->my_vertices[i]){
    281                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     281                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    282282                                }
    283283                        }
    284284                        /*P1 pressure*/
     
    285285                        vnodes = id0+iomodel->numberofvertices;
    286286                        for(i=0;i<iomodel->numberofvertices;i++){
    287287                                if(iomodel->my_vertices[i]){
    288                                         nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
     288                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
    289289                                }
    290290                        }
    291291                        break;
     
    294294                        /*P1 velocity*/
    295295                        for(i=0;i<iomodel->numberofvertices;i++){
    296296                                if(iomodel->my_vertices[i]){
    297                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     297                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    298298                                }
    299299                        }
    300300                        /*P1 pressure*/
     
    301301                        vnodes = id0+iomodel->numberofvertices;
    302302                        for(i=0;i<iomodel->numberofvertices;i++){
    303303                                if(iomodel->my_vertices[i]){
    304                                         nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,i,iomodel,analysis,FSpressureEnum));
     304                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
    305305                                }
    306306                        }
    307307                        break;
     
    310310                        /*P1+ velocity (bubble statically condensed)*/
    311311                        for(i=0;i<iomodel->numberofvertices;i++){
    312312                                if(iomodel->my_vertices[i]){
    313                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     313                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    314314                                }
    315315                        }
    316316                        for(i=0;i<iomodel->numberofelements;i++){
    317317                                if(iomodel->my_elements[i]){
    318                                         node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum);
     318                                        node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    319319                                        node->HardDeactivate();
    320320                                        nodes->AddObject(node);
    321321                                }
     
    324324                        vnodes = id0+iomodel->numberofvertices+iomodel->numberofelements;
    325325                        for(i=0;i<iomodel->numberofvertices;i++){
    326326                                if(iomodel->my_vertices[i]){
    327                                         nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
     327                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
    328328                                }
    329329                        }
    330330                        break;
     
    333333                        /*P1+ velocity*/
    334334                        for(i=0;i<iomodel->numberofvertices;i++){
    335335                                if(iomodel->my_vertices[i]){
    336                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     336                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    337337                                }
    338338                        }
    339339                        for(i=0;i<iomodel->numberofelements;i++){
    340340                                if(iomodel->my_elements[i]){
    341                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
     341                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
    342342                                }
    343343                        }
    344344                        /*P1 pressure*/
     
    345345                        vnodes = id0+iomodel->numberofvertices+iomodel->numberofelements;
    346346                        for(i=0;i<iomodel->numberofvertices;i++){
    347347                                if(iomodel->my_vertices[i]){
    348                                         nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,analysis,FSpressureEnum));
     348                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
    349349                                }
    350350                        }
    351351                        break;
     
    356356                        EdgesPartitioning(iomodel);
    357357                        for(i=0;i<iomodel->numberofvertices;i++){
    358358                                if(iomodel->my_vertices[i]){
    359                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     359                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    360360                                }
    361361                        }
    362362                        for(i=0;i<iomodel->numberofedges;i++){
    363363                                if(iomodel->my_edges[i]){
    364                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
     364                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
    365365                                }
    366366                        }
    367367                        id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
     
    370370                                for(i=0;i<iomodel->numberoffaces;i++){
    371371                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    372372                                                if(iomodel->my_faces[i]){
    373                                                         node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
     373                                                        node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    374374                                                        nodes->AddObject(node);
    375375                                                }
    376376                                        }
     
    393393                        vnodes = id0+numberoffaces;
    394394                        for(i=0;i<iomodel->numberofvertices;i++){
    395395                                if(iomodel->my_vertices[i]){
    396                                         nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofedges+numberoffaces+i,lid++,i,iomodel,analysis,FSpressureEnum));
     396                                        nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofedges+numberoffaces+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
    397397                                }
    398398                        }
    399399                        break;
     
    403403                        EdgesPartitioning(iomodel);
    404404                        for(i=0;i<iomodel->numberofvertices;i++){
    405405                                if(iomodel->my_vertices[i]){
    406                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     406                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    407407                                }
    408408                        }
    409409                        for(i=0;i<iomodel->numberofedges;i++){
    410410                                if(iomodel->my_edges[i]){
    411                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
     411                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
    412412                                }
    413413                        }
    414414                        id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
     
    417417                                for(i=0;i<iomodel->numberoffaces;i++){
    418418                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    419419                                                if(iomodel->my_faces[i]){
    420                                                         node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
     420                                                        node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    421421                                                        nodes->AddObject(node);
    422422                                                }
    423423                                        }
     
    439439                        /*P2xP4 velocity*/
    440440                        for(i=0;i<iomodel->numberofvertices;i++){
    441441                                if(iomodel->my_vertices[i]){
    442                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     442                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    443443                                }
    444444                        }
    445445                        counter = iomodel->numberofvertices;
     
    446446                        for(i=0;i<iomodel->numberofedges;i++){
    447447                                if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
    448448                                        if(iomodel->my_edges[i]){
    449                                                 node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
     449                                                node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    450450                                                nodes->AddObject(node);
    451                                                 node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,iomodel,analysis,FSvelocityEnum);
     451                                                node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    452452                                                nodes->AddObject(node);
    453                                                 node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,iomodel,analysis,FSvelocityEnum);
     453                                                node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    454454                                                nodes->AddObject(node);
    455455                                        }
    456456                                        counter=counter+3;
     
    457457                                }
    458458                                else if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
    459459                                        if(iomodel->my_edges[i]){
    460                                                 node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
     460                                                node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    461461                                                nodes->AddObject(node);
    462462                                        }
    463463                                        counter=counter+1;
     
    470470                        for(i=0;i<iomodel->numberoffaces;i++){
    471471                                if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    472472                                        if(iomodel->my_faces[i]){
    473                                                 node = new Node(id0+3*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
     473                                                node = new Node(id0+3*i+1,counter+1,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    474474                                                nodes->AddObject(node);
    475                                                 node = new Node(id0+3*i+2,counter+2,lid++,0,iomodel,analysis,FSvelocityEnum);
     475                                                node = new Node(id0+3*i+2,counter+2,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    476476                                                nodes->AddObject(node);
    477                                                 node = new Node(id0+3*i+3,counter+3,lid++,0,iomodel,analysis,FSvelocityEnum);
     477                                                node = new Node(id0+3*i+3,counter+3,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    478478                                                nodes->AddObject(node);
    479479                                        }
    480480                                        counter=counter+3;
     
    491491                        vnodes = id0+3*iomodel->numberoffaces;
    492492                        for(i=0;i<iomodel->numberofvertices;i++){
    493493                                if(iomodel->my_vertices[i]){
    494                                         nodes->AddObject(new Node(vnodes+i+1,counter+1,lid++,i,iomodel,analysis,FSpressureEnum));
     494                                        nodes->AddObject(new Node(vnodes+i+1,counter+1,lid++,0,i,iomodel,analysis,FSpressureEnum));
    495495                                }
    496496                                counter++;
    497497                        }
     
    502502                        EdgesPartitioning(iomodel);
    503503                        for(i=0;i<iomodel->numberofvertices;i++){
    504504                                if(iomodel->my_vertices[i]){
    505                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     505                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    506506                                }
    507507                        }
    508508                        for(i=0;i<iomodel->numberofedges;i++){
    509509                                if(iomodel->my_edges[i]){
    510                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
     510                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
    511511                                }
    512512                        }
    513513                        id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
     
    516516                                for(i=0;i<iomodel->numberoffaces;i++){
    517517                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    518518                                                if(iomodel->my_faces[i]){
    519                                                         node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
     519                                                        node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    520520                                                        nodes->AddObject(node);
    521521                                                }
    522522                                        }
     
    531531                        }
    532532                        for(i=0;i<iomodel->numberofelements;i++){
    533533                                if(iomodel->my_elements[i]){
    534                                         nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,iomodel,analysis,FSvelocityEnum));
     534                                        nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
    535535                                }
    536536                        }
    537537
     
    546546                        for(i=0;i<iomodel->numberofelements;i++){
    547547                                if(iomodel->my_elements[i]){
    548548                                        for(j=0;j<elementnbv;j++){
    549                                                 nodes->AddObject(new Node(vnodes+elementnbv*i+j+1,vnodes+elementnbv*i+j,lid++,iomodel->elements[+elementnbv*i+j]-1,iomodel,analysis,FSpressureEnum));
     549                                                nodes->AddObject(new Node(vnodes+elementnbv*i+j+1,vnodes+elementnbv*i+j,lid++,0,iomodel->elements[+elementnbv*i+j]-1,iomodel,analysis,FSpressureEnum));
    550550
    551551                                        }
    552552                                }
     
    558558                        EdgesPartitioning(iomodel);
    559559                        for(i=0;i<iomodel->numberofvertices;i++){
    560560                                if(iomodel->my_vertices[i]){
    561                                         nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
     561                                        nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
    562562                                }
    563563                        }
    564564                        for(i=0;i<iomodel->numberofedges;i++){
    565565                                if(iomodel->my_edges[i]){
    566                                         nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum));
     566                                        nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
    567567                                }
    568568                        }
    569569                        id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
     
    572572                                for(i=0;i<iomodel->numberoffaces;i++){
    573573                                        if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
    574574                                                if(iomodel->my_faces[i]){
    575                                                         node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum);
     575                                                        node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
    576576                                                        nodes->AddObject(node);
    577577                                                }
    578578                                        }
     
    587587                        }
    588588                        for(i=0;i<iomodel->numberofelements;i++){
    589589                                if(iomodel->my_elements[i]){
    590                                         nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,iomodel,analysis,FSvelocityEnum));
     590                                        nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
    591591                                }
    592592                        }
    593593
Note: See TracBrowser for help on using the repository browser.