Changeset 15656


Ignore:
Timestamp:
07/31/13 16:31:01 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: Added Taylor Hood element for FS

Location:
issm/trunk-jpl/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r15654 r15656  
    32823282                        penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
    32833283                        penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
     3284
    32843285                        penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+0];
    32853286                        penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elements[6*index+1];
     
    32993300                        penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
    33003301                        penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
     3302
    33013303                        penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+0];
    33023304                        penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+1];
     
    33053307                        penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+4];
    33063308                        penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+5];
     3309                        break;
     3310                case TaylorHoodEnum:
     3311                        numnodes         = 21;
     3312                        penta_node_ids   = xNew<int>(numnodes);
     3313                        penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
     3314                        penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
     3315                        penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
     3316                        penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
     3317                        penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
     3318                        penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
     3319                        penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
     3320                        penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
     3321                        penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
     3322                        penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
     3323                        penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
     3324                        penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
     3325                        penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
     3326                        penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
     3327                        penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
     3328
     3329                        penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[6*index+0];
     3330                        penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[6*index+1];
     3331                        penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[6*index+2];
     3332                        penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[6*index+3];
     3333                        penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[6*index+4];
     3334                        penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[6*index+5];
     3335                        printarray(penta_node_ids,1,21);
    33073336                        break;
    33083337                default:
  • issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp

    r15654 r15656  
    13031303                        this->element_type = MINIEnum;
    13041304                        return;
     1305                case TaylorHoodEnum:
     1306                        this->element_type = P2Enum;
     1307                        this->GetNodalFunctions(basis,gauss);
     1308                        this->element_type = TaylorHoodEnum;
     1309                        return;
    13051310                default:
    13061311                        _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
     
    13321337                        this->GetNodalFunctions(basis,gauss);
    13331338                        this->element_type = MINIEnum;
     1339                        return;
     1340                case TaylorHoodEnum:
     1341                        this->element_type = P1Enum;
     1342                        this->GetNodalFunctions(basis,gauss);
     1343                        this->element_type = TaylorHoodEnum;
    13341344                        return;
    13351345                default:
     
    13961406                        this->element_type = MINIEnum;
    13971407                        return;
     1408                case TaylorHoodEnum:
     1409                        this->element_type = P2Enum;
     1410                        this->GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss);
     1411                        this->element_type = TaylorHoodEnum;
     1412                        return;
    13981413                default:
    13991414                        _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
     
    14231438                        this->GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss);
    14241439                        this->element_type = MINIEnum;
     1440                        return;
     1441                case TaylorHoodEnum:
     1442                        this->element_type = P1Enum;
     1443                        this->GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss);
     1444                        this->element_type = TaylorHoodEnum;
    14251445                        return;
    14261446                default:
     
    19111931                case MINIcondensedEnum: return NUMNODESP1*2;
    19121932                case MINIEnum:          return NUMNODESP1b+NUMNODESP1;
     1933                case TaylorHoodEnum:    return NUMNODESP2+NUMNODESP1;
    19131934                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    19141935        }
     
    19251946                case MINIcondensedEnum: return NUMNODESP1;
    19261947                case MINIEnum:          return NUMNODESP1;
     1948                case TaylorHoodEnum:    return NUMNODESP1;
    19271949                default: _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    19281950        }
     
    19391961                case MINIcondensedEnum: return NUMNODESP1b;
    19401962                case MINIEnum:          return NUMNODESP1b;
     1963                case TaylorHoodEnum:    return NUMNODESP2;
    19411964                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    19421965        }
     
    19551978                case MINIcondensedEnum: return NUMNODESP1;
    19561979                case MINIEnum:          return NUMNODESP1b;
     1980                case TaylorHoodEnum:    return NUMNODESP2;
    19571981                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    19581982        }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

    r15654 r15656  
    156156                                }
    157157                        }
    158                         /*P1+ pressure statically condensed*/
     158                        /*P1 pressure*/
    159159                        for(i=0;i<iomodel->numberofvertices;i++){
    160160                                if(iomodel->my_vertices[i]){
    161161                                        nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,i,iomodel,analysis,FSpressureEnum));
     162                                }
     163                        }
     164                        break;
     165                case TaylorHoodEnum:
     166                        _assert_(approximation==FSApproximationEnum);
     167                        /*P2 velocity*/
     168                        EdgesPartitioning(&my_edges,iomodel);
     169                        for(i=0;i<iomodel->numberofvertices;i++){
     170                                if(iomodel->my_vertices[i]){
     171                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel,analysis,FSvelocityEnum));
     172                                }
     173                        }
     174                        for(i=0;i<iomodel->numberofedges;i++){
     175                                if(my_edges[i]){
     176                                        nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,0,iomodel,analysis,FSvelocityEnum));
     177                                }
     178                        }
     179
     180                        /*P1 pressure*/
     181                        for(i=0;i<iomodel->numberofvertices;i++){
     182                                if(iomodel->my_vertices[i]){
     183                                        nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,i,iomodel,analysis,FSpressureEnum));
    162184                                }
    163185                        }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r15654 r15656  
    9696                        iomodel->Constant(&temp,FlowequationFeFSEnum);
    9797                        switch(temp){
    98                                 case 0 : finiteelement = P1Enum; break;//P1P1
    99                                 case 1 : finiteelement = P1Enum; break;//P1P1GSL
    100                                 case 2 : finiteelement = P1Enum; break;//MINIcondensedEnum
    101                                 case 3 : finiteelement = P1bubbleEnum; break;//MINIEnum
     98                                case 0 : finiteelement = P1Enum;       break;//P1P1
     99                                case 1 : finiteelement = P1Enum;       break;//P1P1GSL
     100                                case 2 : finiteelement = P1Enum;       break;//MINIcondensed
     101                                case 3 : finiteelement = P1bubbleEnum; break;//MINI
     102                                case 4 : finiteelement = P2Enum;       break;//TaylorHood (P2P1)
    102103                                default: _error_("finite element "<<temp<<" not supported");
    103104                        }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp

    r15654 r15656  
    6666                                case 2 : finiteelement = MINIcondensedEnum; break;
    6767                                case 3 : finiteelement = MINIEnum;          break;
     68                                case 4 : finiteelement = TaylorHoodEnum;    break;
    6869                                default: _error_("finite element "<<temp<<" not supported");
    6970                        }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp

    r15654 r15656  
    7070                                case 2 : finiteelement = MINIcondensedEnum; break;
    7171                                case 3 : finiteelement = MINIEnum;          break;
     72                                case 4 : finiteelement = TaylorHoodEnum;    break;
    7273                                default: _error_("finite element "<<temp<<" not supported");
    7374                        }
  • issm/trunk-jpl/src/m/classes/flowequation.m

    r15654 r15656  
    8383                                md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0 1]);
    8484                                md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0:3]);
    85                                 md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',[0:3]);
     85                                md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',[0:4]);
    8686                                md = checkfield(md,'flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
    8787                                md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices 1],'values',[0 1]);
  • issm/trunk-jpl/src/m/classes/flowequation.py

    r15655 r15656  
    6868                        md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0,1])
    6969                        md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',numpy.arange(0,3+1))
    70                         md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',numpy.arange(0,3+1))
     70                        md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',numpy.arange(0,4+1))
    7171                        md = checkfield(md,'flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])
    7272                        md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
Note: See TracChangeset for help on using the changeset viewer.