Changeset 17057


Ignore:
Timestamp:
12/24/13 01:40:32 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: working on P2xP4 finite elements

Location:
issm/trunk-jpl/src/c
Files:
4 edited

Legend:

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

    r17041 r17057  
    28012801                        penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
    28022802                        break;
     2803                case P2xP4Enum:
     2804                        numnodes         = 30;
     2805                        penta_node_ids   = xNew<int>(numnodes);
     2806                        penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
     2807                        penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
     2808                        penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
     2809                        penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
     2810                        penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
     2811                        penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
     2812                        penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+0]+1;
     2813                        penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+1]+1;
     2814                        penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+2]+1;
     2815                        penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+1;
     2816                        penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+1;
     2817                        penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+1;
     2818                        penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+6]+1;
     2819                        penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+7]+1;
     2820                        penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+8]+1;
     2821                        penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+0]+2;
     2822                        penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+1]+2;
     2823                        penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+2]+2;
     2824                        penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+0]+3;
     2825                        penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+1]+3;
     2826                        penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+2]+3;
     2827                        penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+2;
     2828                        penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+2;
     2829                        penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+2;
     2830                        penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+3;
     2831                        penta_node_ids[25]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+3;
     2832                        penta_node_ids[26]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+3;
     2833                        penta_node_ids[27]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+4;
     2834                        penta_node_ids[28]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+4;
     2835                        penta_node_ids[29]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+4;
     2836                        break;
    28032837                case P2Enum:
    28042838                        numnodes         = 15;
  • issm/trunk-jpl/src/c/classes/gauss/GaussPenta.cpp

    r17041 r17057  
    657657                        }
    658658                        break;
     659                case P2xP4Enum:
     660                        switch(iv){
     661                                case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
     662                                case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
     663                                case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
     664                                case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
     665                                case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
     666                                case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
     667
     668                                case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
     669                                case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
     670                                case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
     671
     672                                case  9: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
     673                                case 10: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
     674                                case 11: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
     675                                case 12: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
     676                                case 13: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
     677                                case 14: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
     678
     679                                case 15: coord1=1.; coord2=0.; coord3=0.; coord4=-.5; break;
     680                                case 16: coord1=0.; coord2=1.; coord3=0.; coord4=-.5; break;
     681                                case 17: coord1=0.; coord2=0.; coord3=1.; coord4=-.5; break;
     682                                case 18: coord1=1.; coord2=0.; coord3=0.; coord4=+.5; break;
     683                                case 19: coord1=0.; coord2=1.; coord3=0.; coord4=+.5; break;
     684                                case 20: coord1=0.; coord2=0.; coord3=1.; coord4=+.5; break;
     685
     686                                case 21: coord1=0.; coord2=.5; coord3=.5; coord4=-.5;break;
     687                                case 22: coord1=.5; coord2=0.; coord3=.5; coord4=-.5;break;
     688                                case 23: coord1=.5; coord2=.5; coord3=0.; coord4=-.5;break;
     689                                case 24: coord1=0.; coord2=.5; coord3=.5; coord4=0.;break;
     690                                case 25: coord1=.5; coord2=0.; coord3=.5; coord4=0.;break;
     691                                case 26: coord1=.5; coord2=.5; coord3=0.; coord4=0.;break;
     692                                case 27: coord1=0.; coord2=.5; coord3=.5; coord4=+.5;break;
     693                                case 28: coord1=.5; coord2=0.; coord3=.5; coord4=+.5;break;
     694                                case 29: coord1=.5; coord2=.5; coord3=0.; coord4=+.5;break;
     695                                default: _error_("node index should be in [0 14]");
     696                        }
     697                        break;
    659698                default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
    660699        }
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp

    r17042 r17057  
    110110                                        }
    111111                                }
     112                                break;
     113                        case P2xP4Enum:
     114                                for(i=0;i<iomodel->numberofvertices;i++){
     115                                        if((iomodel->my_vertices[i])){
     116                                                if (!xIsNan<IssmDouble>(spcdata[i])){
     117                                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
     118                                                        count++;
     119                                                }
     120                                        }
     121                                }
     122                                _printf0_("WARNING: Skipping constraints along edges\n");
    112123                                break;
    113124                        case P1bubbleEnum:
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

    r17041 r17057  
    141141                        }
    142142                        break;
     143                case P2xP4Enum:
     144                        EdgesPartitioning(&my_edges,iomodel);
     145                        for(i=0;i<iomodel->numberofvertices;i++){
     146                                if(iomodel->my_vertices[i]){
     147                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,analysis,approximation));
     148                                }
     149                        }
     150                        counter = iomodel->numberofvertices;
     151                        for(i=0;i<iomodel->numberofedges;i++){
     152                                if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
     153                                        if(my_edges[i]){
     154                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     155                                                nodes->AddObject(node);
     156                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     157                                                nodes->AddObject(node);
     158                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     159                                                nodes->AddObject(node);
     160                                        }
     161                                }
     162                                else if(iomodel->edges[i*3+2]==1){/*Basal edges*/
     163                                        if(my_edges[i]){
     164                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     165                                                nodes->AddObject(node);
     166                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+1,lid++,0,iomodel,analysis,approximation);
     167                                                nodes->AddObject(node);
     168                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+1,lid++,0,iomodel,analysis,approximation);
     169                                                nodes->AddObject(node);
     170                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+4,counter+1,lid++,0,iomodel,analysis,approximation);
     171                                                nodes->AddObject(node);
     172                                        }
     173                                }
     174                                else if(iomodel->edges[i*3+2]==3){/*Top edges*/
     175                                        if(my_edges[i]){
     176                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     177                                                nodes->AddObject(node);
     178                                        }
     179                                }
     180                                else{
     181                                        _error_("not supported");
     182                                }
     183                                counter=counter+4;
     184                        }
     185                        break;
    143186
    144187                /*Stokes elements*/
Note: See TracChangeset for help on using the changeset viewer.