Changeset 17041


Ignore:
Timestamp:
12/21/13 13:42:01 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: working on P1xP3 element (needs some debugging)

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

Legend:

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

    r17028 r17041  
    27692769                        penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
    27702770                        break;
     2771                case P1xP3Enum:
     2772                        numnodes         = 12;
     2773                        penta_node_ids   = xNew<int>(numnodes);
     2774                        penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
     2775                        penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
     2776                        penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
     2777                        penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
     2778                        penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
     2779                        penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
     2780                        penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+1;
     2781                        penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+1;
     2782                        penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+1;
     2783                        penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+2;
     2784                        penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+2;
     2785                        penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+2;
     2786                        break;
    27712787                case P2xP1Enum:
    27722788                        numnodes         = 12;
  • issm/trunk-jpl/src/c/classes/gauss/GaussPenta.cpp

    r16892 r17041  
    587587                        }
    588588                        break;
     589                case P1xP3Enum:
     590                        switch(iv){
     591                                case 0 : coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
     592                                case 1 : coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
     593                                case 2 : coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
     594                                case 3 : coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
     595                                case 4 : coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
     596                                case 5 : coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
     597
     598                                case 6 : coord1=1.; coord2=0.; coord3=0.; coord4=-1./3.; break;
     599                                case 7 : coord1=0.; coord2=1.; coord3=0.; coord4=-1./3.; break;
     600                                case 8 : coord1=0.; coord2=0.; coord3=1.; coord4=-1./3.; break;
     601                                case 9 : coord1=1.; coord2=0.; coord3=0.; coord4=+1./3.; break;
     602                                case 10: coord1=0.; coord2=1.; coord3=0.; coord4=+1./3.; break;
     603                                case 11: coord1=0.; coord2=0.; coord3=1.; coord4=+1./3.; break;
     604                                default: _error_("node index should be in [0 11]");
     605                        }
     606                        break;
    589607                case P2xP1Enum:
    590608                        switch(iv){
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp

    r16336 r17041  
    6161                        EdgesPartitioning(&my_edges,iomodel);
    6262                        break;
     63                case P1xP3Enum:
     64                        EdgesPartitioning(&my_edges,iomodel);
     65                        break;
    6366                case P2xP1Enum:
    6467                        EdgesPartitioning(&my_edges,iomodel);
    6568                        break;
    6669                case P2Enum:
     70                        EdgesPartitioning(&my_edges,iomodel);
     71                        break;
     72                case P2xP4Enum:
    6773                        EdgesPartitioning(&my_edges,iomodel);
    6874                        break;
     
    160166                                }
    161167                                break;
     168                        case P1xP3Enum:
     169                                for(i=0;i<iomodel->numberofvertices;i++){
     170                                        if((iomodel->my_vertices[i])){
     171                                                if (!xIsNan<IssmDouble>(spcdata[i])){
     172                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
     173                                                        count++;
     174                                                }
     175                                        }
     176                                }
     177                                for(i=0;i<iomodel->numberofedges;i++){
     178                                        if(iomodel->edges[i*3+2]==2){
     179                                                if(my_edges[i]){
     180                                                        v1 = iomodel->edges[3*i+0]-1;
     181                                                        v2 = iomodel->edges[3*i+1]-1;
     182                                                        if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
     183                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+2*count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+1,
     184                                                                                                dof,2./3.*spcdata[v1]+1./3.*spcdata[v2],analysis_type));
     185                                                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+2*count+2,iomodel->nodecounter+iomodel->numberofvertices+2*i+2,
     186                                                                                                dof,1./3.*spcdata[v1]+2./3.*spcdata[v2],analysis_type));
     187                                                                count=count+2;
     188                                                        }
     189                                                }
     190                                        }
     191                                }
     192                                break;
    162193                        case P2xP1Enum:
    163194                                for(i=0;i<iomodel->numberofvertices;i++){
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

    r16542 r17041  
    8585                        }
    8686                        break;
     87
     88                case P1xP3Enum:
     89                        EdgesPartitioning(&my_edges,iomodel);
     90                        for(i=0;i<iomodel->numberofvertices;i++){
     91                                if(iomodel->my_vertices[i]){
     92                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,analysis,approximation));
     93                                }
     94                        }
     95
     96                        counter = iomodel->numberofvertices;
     97                        for(i=0;i<iomodel->numberofedges;i++){
     98                                if(iomodel->edges[i*3+2]==2){
     99                                        if(my_edges[i]){
     100                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     101                                                nodes->AddObject(node);
     102                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     103                                                nodes->AddObject(node);
     104                                        }
     105                                        counter=counter+2;
     106                                }
     107                        }
     108                        break;
     109
    87110                case P2xP1Enum:
    88111                        EdgesPartitioning(&my_edges,iomodel);
     
    213236                                }
    214237                        }
     238                        break;
     239                case OneLayerP4zEnum:
     240                        _assert_(approximation==FSApproximationEnum);
     241                        /*P2xP4 velocity*/
     242                        EdgesPartitioning(&my_edges,iomodel);
     243                        /*P1xP3 pressure*/
     244                        _error_("Not supported");
    215245                        break;
    216246
  • issm/trunk-jpl/src/m/classes/flowequation.m

    r17040 r17041  
    8686                                md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0 1]);
    8787                                md = checkfield(md,'fieldname','flowequation.fe_SSA','values',{'P1','P1bubble','P1bubblecondensed','P2'});
    88                                 md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',{'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2'});
     88                                md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',{'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4'});
    8989                                md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',{'P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','OneLayerP4z'});
    9090                                md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
  • issm/trunk-jpl/src/m/classes/flowequation.py

    r17040 r17041  
    7575                        md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2'])
    7676                        md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2'])
    77                         md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','OneLayerP4z'])
     77                        md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','OneLayerP4z','P1xP3','P2xP4'])
    7878                        md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])
    7979                        md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
Note: See TracChangeset for help on using the changeset viewer.