source: issm/oecreview/Archive/15392-16133/ISSM-15626-15627.diff

Last change on this file was 16134, checked in by Mathieu Morlighem, 12 years ago

Added Archive/15392-16133

File size: 8.3 KB
  • ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp

     
    5555                else if(isHO){
    5656                        iomodel->Constant(&temp,FlowequationFeHOEnum);
    5757                        switch(temp){
    58                                 case 0 : finiteelement = P1Enum; break;
    59                                 case 1 : finiteelement = P2Enum; break;
     58                                case 0 : finiteelement = P1Enum;    break;
     59                                case 1 : finiteelement = P2Enum;    break;
     60                                case 2 : finiteelement = P2xP1Enum; break;
    6061                                default: _error_("finite element "<<temp<<" not supported");
    6162                        }
    6263                }
  • ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

     
    8484                else if(isHO){
    8585                        iomodel->Constant(&temp,FlowequationFeHOEnum);
    8686                        switch(temp){
    87                                 case 0 : finiteelement = P1Enum; break;
    88                                 case 1 : finiteelement = P2Enum; break;
     87                                case 0 : finiteelement = P1Enum;    break;
     88                                case 1 : finiteelement = P2Enum;    break;
     89                                case 2 : finiteelement = P2xP1Enum; break;
    8990                                default: _error_("finite element "<<temp<<" not supported");
    9091                        }
    9192                }
  • ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp

     
    5050                        approximation = HOApproximationEnum;
    5151                        iomodel->Constant(&temp,FlowequationFeHOEnum);
    5252                        switch(temp){
    53                                 case 0 : finiteelement = P1Enum; break;
    54                                 case 1 : finiteelement = P2Enum; break;
     53                                case 0 : finiteelement = P1Enum;    break;
     54                                case 1 : finiteelement = P2Enum;    break;
     55                                case 2 : finiteelement = P2xP1Enum; break;
    5556                                default: _error_("finite element "<<temp<<" not supported");
    5657                        }
    5758                }
  • ../trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

     
    4242                        }
    4343                        break;
    4444
     45                case P2xP1Enum:
     46                        EdgesPartitioning(&my_edges,iomodel);
     47                        for(i=0;i<iomodel->numberofvertices;i++){
     48                                if(iomodel->my_vertices[i]){
     49                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel,analysis,approximation));
     50                                }
     51                        }
     52                        int numberofvertices2d;
     53                        Node* node = NULL;
     54                        iomodel->Constant(&numberofvertices2d,MeshNumberofvertices2dEnum);
     55                        /*Create all P2 nodes anyway*/
     56                        for(i=0;i<iomodel->numberofedges;i++){
     57                                if(my_edges[i]){
     58                                        node = new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,0,iomodel,analysis,approximation);
     59                                        nodes->AddObject(node);
     60                                }
     61                        }
     62                        break;
     63
    4564                case P2Enum:
    4665                        EdgesPartitioning(&my_edges,iomodel);
    4766                        for(i=0;i<iomodel->numberofvertices;i++){
  • ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp

     
    16241624int PentaRef::NumberofNodes(void){
    16251625
    16261626        switch(this->element_type){
    1627                 case P1Enum:   return NUMNODESP1;
    1628                 case P2Enum:   return NUMNODESP2;
    1629                 case MINIEnum: return NUMNODESP1b;
     1627                case P1Enum:    return NUMNODESP1;
     1628                case P2Enum:    return NUMNODESP2;
     1629                case P2xP1Enum: return NUMNODESP2xP1;
     1630                case MINIEnum:  return NUMNODESP1b;
    16301631                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    16311632        }
    16321633
  • ../trunk-jpl/src/c/classes/Elements/Penta.cpp

     
    31773177                        penta_node_ids[4]=iomodel->nodecounter+iomodel->elements[6*index+4];
    31783178                        penta_node_ids[5]=iomodel->nodecounter+iomodel->elements[6*index+5];
    31793179                        break;
     3180                case P2xP1Enum:
     3181                        numnodes         = 12;
     3182                        penta_node_ids   = xNew<int>(numnodes);
     3183                        penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
     3184                        penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
     3185                        penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
     3186                        penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
     3187                        penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
     3188                        penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
     3189                        penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
     3190                        penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
     3191                        penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
     3192                        penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
     3193                        penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
     3194                        penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
     3195                        break;
    31803196                case P2Enum:
    31813197                        numnodes         = 15;
    31823198                        penta_node_ids   = xNew<int>(numnodes);
     
    69746990        xDelete<IssmDouble>(D);
    69756991        xDelete<IssmDouble>(Bprime);
    69766992        xDelete<IssmDouble>(B);
     6993        if(id==1) Ke->Echo();
    69776994        return Ke;
    69786995}
    69796996/*}}}*/
  • ../trunk-jpl/src/c/classes/gauss/GaussPenta.cpp

     
    414414                                default: _error_("node index should be in [0 5]");
    415415                        }
    416416                        break;
     417                case 12: //P2xP1 Lagrange element
     418                        switch(iv){
     419                                case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
     420                                case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
     421                                case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
     422                                case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
     423                                case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
     424                                case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
     425
     426                                case  6: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
     427                                case  7: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
     428                                case  8: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
     429                                case  9: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
     430                                case 10: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
     431                                case 11: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
     432                                default: _error_("node index should be in [0 5]");
     433                        }
     434                        break;
    417435                case 15: //P2 Lagrange element
    418436                        switch(iv){
    419437                                case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
  • ../trunk-jpl/src/m/classes/flowequation.m

     
    7979                                md = checkfield(md,'flowequation.isHO','numel',[1],'values',[0 1]);
    8080                                md = checkfield(md,'flowequation.isFS','numel',[1],'values',[0 1]);
    8181                                md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0 1]);
    82                                 md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0 1]);
     82                                md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0 1 2]);
    8383                                md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',[0]);
    8484                                md = checkfield(md,'flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
    8585                                md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices 1],'values',[0 1]);
Note: See TracBrowser for help on using the repository browser.