Changeset 17065


Ignore:
Timestamp:
01/07/14 13:05:28 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: putting together FS OneLayerz4 formulation

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r17010 r17065  
    372372                                case MINIEnum          : finiteelement = P1bubbleEnum; break;
    373373                                case TaylorHoodEnum    : finiteelement = P2Enum;       break;
     374                                case OneLayerP4zEnum   : finiteelement = P2xP4Enum;    break;
    374375                                default: _error_("finite element "<<finiteelement<<" not supported");
    375376                        }
     
    462463                                        }
    463464                                        break;
     465                                case P2xP4Enum:
     466                                        //Nothing yet
     467                                        break;
    464468                                default:
    465469                                        _error_("not implemented yet");
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r17057 r17065  
    29152915                        penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[6*index+5];
    29162916                        break;
     2917                case OneLayerP4zEnum:
     2918                        numnodes         = 30+12;
     2919                        penta_node_ids   = xNew<int>(numnodes);
     2920                        penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
     2921                        penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
     2922                        penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
     2923                        penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
     2924                        penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
     2925                        penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
     2926                        penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+0]+1;
     2927                        penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+1]+1;
     2928                        penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+2]+1;
     2929                        penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+1;
     2930                        penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+1;
     2931                        penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+1;
     2932                        penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+6]+1;
     2933                        penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+7]+1;
     2934                        penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+8]+1;
     2935                        penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+0]+2;
     2936                        penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+1]+2;
     2937                        penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+2]+2;
     2938                        penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+0]+3;
     2939                        penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+1]+3;
     2940                        penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+2]+3;
     2941                        penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+2;
     2942                        penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+2;
     2943                        penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+2;
     2944                        penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+3;
     2945                        penta_node_ids[25]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+3;
     2946                        penta_node_ids[26]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+3;
     2947                        penta_node_ids[27]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+3]+4;
     2948                        penta_node_ids[28]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+4]+4;
     2949                        penta_node_ids[29]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->elementtoedgeconnectivity[9*index+5]+4;
     2950
     2951                        penta_node_ids[30]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->elements[6*index+0];
     2952                        penta_node_ids[31]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->elements[6*index+1];
     2953                        penta_node_ids[32]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->elements[6*index+2];
     2954                        penta_node_ids[33]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->elements[6*index+3];
     2955                        penta_node_ids[34]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->elements[6*index+4];
     2956                        penta_node_ids[35]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->elements[6*index+5];
     2957                        penta_node_ids[36]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+1;
     2958                        penta_node_ids[37]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+1;
     2959                        penta_node_ids[38]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+1;
     2960                        penta_node_ids[39]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+2;
     2961                        penta_node_ids[40]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+2;
     2962                        penta_node_ids[41]=iomodel->nodecounter+iomodel->numberofvertices+4*iomodel->numberofedges+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+2;
     2963                        break;
    29172964                default:
    29182965                        _error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet");
  • issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp

    r17058 r17065  
    14521452                        this->element_type = TaylorHoodEnum;
    14531453                        return;
     1454                case OneLayerP4zEnum:
     1455                        this->element_type = P2xP4Enum;
     1456                        this->GetNodalFunctions(basis,gauss);
     1457                        this->element_type = OneLayerP4zEnum;
     1458                        return;
    14541459                default:
    14551460                        _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
     
    14861491                        this->GetNodalFunctions(basis,gauss);
    14871492                        this->element_type = TaylorHoodEnum;
     1493                        return;
     1494                case OneLayerP4zEnum:
     1495                        this->element_type = P1xP3Enum;
     1496                        this->GetNodalFunctions(basis,gauss);
     1497                        this->element_type = OneLayerP4zEnum;
    14881498                        return;
    14891499                default:
     
    15541564                        this->GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss);
    15551565                        this->element_type = TaylorHoodEnum;
     1566                        return;
     1567                case OneLayerP4zEnum:
     1568                        this->element_type = P2xP4Enum;
     1569                        this->GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss);
     1570                        this->element_type = OneLayerP4zEnum;
    15561571                        return;
    15571572                default:
     
    22522267                case MINIEnum:              return NUMNODESP1b+NUMNODESP1;
    22532268                case TaylorHoodEnum:        return NUMNODESP2+NUMNODESP1;
     2269                case OneLayerP4zEnum:       return NUMNODESP2xP4+NUMNODESP1xP3;
    22542270                case P2xP4Enum:             return NUMNODESP2xP4;
    22552271                case P1xP3Enum:             return NUMNODESP1xP3;
     
    22692285                case MINIEnum:          return NUMNODESP1;
    22702286                case TaylorHoodEnum:    return NUMNODESP1;
     2287                case OneLayerP4zEnum:   return NUMNODESP1xP3;
    22712288                default: _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    22722289        }
     
    22842301                case MINIEnum:          return NUMNODESP1b;
    22852302                case TaylorHoodEnum:    return NUMNODESP2;
     2303                case OneLayerP4zEnum:   return NUMNODESP2xP4;
    22862304                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    22872305        }
     
    22992317                case MINIEnum:          return P1bubbleEnum;
    23002318                case TaylorHoodEnum:    return P2Enum;
     2319                case OneLayerP4zEnum:   return P2xP4Enum;
    23012320                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    23022321        }
     
    23142333                case MINIEnum:          return P1Enum;
    23152334                case TaylorHoodEnum:    return P1Enum;
     2335                case OneLayerP4zEnum:   return P1xP3Enum;
    23162336                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    23172337        }
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp

    r17063 r17065  
    291291                        for(i=0;i<iomodel->numberofvertices;i++){
    292292                                if(iomodel->my_vertices[i]){
    293                                         nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,analysis,approximation));
     293                                        nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum));
    294294                                }
    295295                        }
     
    298298                                if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
    299299                                        if(my_edges[i]){
    300                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
    301                                                 nodes->AddObject(node);
    302                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
    303                                                 nodes->AddObject(node);
    304                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
     300                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
     301                                                nodes->AddObject(node);
     302                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,FSvelocityEnum);
     303                                                nodes->AddObject(node);
     304                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,FSvelocityEnum);
    305305                                                nodes->AddObject(node);
    306306                                        }
     
    308308                                else if(iomodel->edges[i*3+2]==1){/*Basal edges*/
    309309                                        if(my_edges[i]){
    310                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
    311                                                 nodes->AddObject(node);
    312                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
    313                                                 nodes->AddObject(node);
    314                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);
    315                                                 nodes->AddObject(node);
    316                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+4,counter+4,lid++,0,iomodel,analysis,approximation);
     310                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
     311                                                nodes->AddObject(node);
     312                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,FSvelocityEnum);
     313                                                nodes->AddObject(node);
     314                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,FSvelocityEnum);
     315                                                nodes->AddObject(node);
     316                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+4,counter+4,lid++,0,iomodel,analysis,FSvelocityEnum);
    317317                                                nodes->AddObject(node);
    318318                                        }
     
    320320                                else if(iomodel->edges[i*3+2]==3){/*Top edges*/
    321321                                        if(my_edges[i]){
    322                                                 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
     322                                                node = new Node(iomodel->nodecounter+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,FSvelocityEnum);
    323323                                                nodes->AddObject(node);
    324324                                        }
     
    333333                        for(i=0;i<iomodel->numberofvertices;i++){
    334334                                if(iomodel->my_vertices[i]){
    335                                         nodes->AddObject(new Node(vnodes+i+1,i,lid++,i,iomodel,analysis,approximation));
     335                                        nodes->AddObject(new Node(vnodes+i+1,i,lid++,i,iomodel,analysis,FSpressureEnum));
    336336                                }
    337337                        }
     
    341341                                if(iomodel->edges[i*3+2]==2){
    342342                                        if(my_edges[i]){
    343                                                 node = new Node(vnodes+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,iomodel,analysis,approximation);
    344                                                 nodes->AddObject(node);
    345                                                 node = new Node(vnodes+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,iomodel,analysis,approximation);
     343                                                node = new Node(vnodes+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,iomodel,analysis,FSpressureEnum);
     344                                                nodes->AddObject(node);
     345                                                node = new Node(vnodes+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,iomodel,analysis,FSpressureEnum);
    346346                                                nodes->AddObject(node);
    347347                                        }
Note: See TracChangeset for help on using the changeset viewer.