Changeset 18173
- Timestamp:
- 06/23/14 09:47:02 (11 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r18151 r18173 414 414 /*Deduce velocity interpolation from finite element*/ 415 415 switch(finiteelement){ 416 case P1P1Enum : finiteelement = P1Enum; break; 417 case P1P1GLSEnum : finiteelement = P1Enum; break; 418 case MINIcondensedEnum : finiteelement = P1bubbleEnum; break; 419 case MINIEnum : finiteelement = P1bubbleEnum; break; 420 case TaylorHoodEnum : finiteelement = P2Enum; break; 421 case XTaylorHoodEnum : finiteelement = P2Enum; break; 422 case OneLayerP4zEnum : finiteelement = P2xP4Enum; break; 416 case P1P1Enum : finiteelement = P1Enum; break; 417 case P1P1GLSEnum : finiteelement = P1Enum; break; 418 case MINIcondensedEnum : finiteelement = P1bubbleEnum; break; 419 case MINIEnum : finiteelement = P1bubbleEnum; break; 420 case TaylorHoodEnum : finiteelement = P2Enum; break; 421 case XTaylorHoodEnum : finiteelement = P2Enum; break; 422 case OneLayerP4zEnum : finiteelement = P2xP4Enum; break; 423 case CrouzeixRaviartEnum : finiteelement = P2bubbleEnum; break; 423 424 default: _error_("finite element "<<EnumToStringx(finiteelement)<<" not supported"); 424 425 } … … 494 495 if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){ 495 496 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 497 count++; 498 } 499 } 500 } 501 break; 502 case P2bubbleEnum: 503 for(i=0;i<iomodel->numberofvertices;i++){ 504 if(iomodel->my_vertices[i]){ 505 if(reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){ 506 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+iomodel->numberoffaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 496 507 count++; 497 508 } -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r18171 r18173 2362 2362 penta_node_ids[35]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+5]; 2363 2363 break; 2364 case CrouzeixRaviartEnum: 2365 numnodes = 25; 2366 penta_node_ids = xNew<int>(numnodes); 2367 penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0]; 2368 penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1]; 2369 penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2]; 2370 penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3]; 2371 penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4]; 2372 penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5]; 2373 penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 2374 penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 2375 penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 2376 penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 2377 penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 2378 penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 2379 penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 2380 penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 2381 penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 2382 penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1; 2383 penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1; 2384 penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1; 2385 penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1; 2386 2387 penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+1; 2388 penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+2; 2389 penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+3; 2390 penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+4; 2391 penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+5; 2392 penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+6; 2393 break; 2364 2394 default: 2365 2395 _error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet"); -
issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp
r18171 r18173 947 947 case P0Enum: return NUMNODESP0; 948 948 case P1Enum: return NUMNODESP1; 949 case P1DGEnum: return NUMNODESP1; 949 950 case P1bubbleEnum: return NUMNODESP1b; 950 951 case P1bubblecondensedEnum: return NUMNODESP1b; … … 954 955 case P2xP1Enum: return NUMNODESP2xP1; 955 956 case P1xP2Enum: return NUMNODESP1xP2; 957 case P2xP4Enum: return NUMNODESP2xP4; 958 case P1xP3Enum: return NUMNODESP1xP3; 956 959 case P1P1Enum: return NUMNODESP1*2; 957 960 case P1P1GLSEnum: return NUMNODESP1*2; … … 960 963 case TaylorHoodEnum: return NUMNODESP2+NUMNODESP1; 961 964 case OneLayerP4zEnum: return NUMNODESP2xP4+NUMNODESP1; 962 case P2xP4Enum: return NUMNODESP2xP4; 963 case P1xP3Enum: return NUMNODESP1xP3; 965 case CrouzeixRaviartEnum: return NUMNODESP2b+NUMNODESP1; 964 966 default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet"); 965 967 } … … 971 973 972 974 switch(fe_stokes){ 973 case P1P1Enum: return P1Enum; 974 case P1P1GLSEnum: return P1Enum; 975 case MINIcondensedEnum: return P1bubbleEnum; 976 case MINIEnum: return P1bubbleEnum; 977 case TaylorHoodEnum: return P2Enum; 978 case OneLayerP4zEnum: return P2xP4Enum; 975 case P1P1Enum: return P1Enum; 976 case P1P1GLSEnum: return P1Enum; 977 case MINIcondensedEnum: return P1bubbleEnum; 978 case MINIEnum: return P1bubbleEnum; 979 case TaylorHoodEnum: return P2Enum; 980 case OneLayerP4zEnum: return P2xP4Enum; 981 case CrouzeixRaviartEnum:return P2bubbleEnum; 979 982 default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet"); 980 983 } … … 986 989 987 990 switch(fe_stokes){ 988 case P1P1Enum: return P1Enum; 989 case P1P1GLSEnum: return P1Enum; 990 case MINIcondensedEnum: return P1Enum; 991 case MINIEnum: return P1Enum; 992 case TaylorHoodEnum: return P1Enum; 993 case OneLayerP4zEnum: return P1Enum; 991 case P1P1Enum: return P1Enum; 992 case P1P1GLSEnum: return P1Enum; 993 case MINIcondensedEnum: return P1Enum; 994 case MINIEnum: return P1Enum; 995 case TaylorHoodEnum: return P1Enum; 996 case OneLayerP4zEnum: return P1Enum; 997 case CrouzeixRaviartEnum:return P1DGEnum; 994 998 default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet"); 995 999 } … … 1054 1058 break; 1055 1059 case P2Enum: 1060 numindices = 6; 1061 indices = xNew<int>(numindices); 1062 indices[0] = 0; 1063 indices[1] = 1; 1064 indices[2] = 2; 1065 indices[3] = 9; 1066 indices[4] = 10; 1067 indices[5] = 11; 1068 break; 1069 case P2bubbleEnum: 1056 1070 numindices = 6; 1057 1071 indices = xNew<int>(numindices); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r18170 r18173 1975 1975 tria_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+2]; 1976 1976 break; 1977 case CrouzeixRaviartEnum: 1978 numnodes = 10; 1979 tria_node_ids = xNew<int>(numnodes); 1980 tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0]; 1981 tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1]; 1982 tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2]; 1983 tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1; 1984 tria_node_ids[4]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1; 1985 tria_node_ids[5]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1; 1986 tria_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1; 1987 1988 tria_node_ids[7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+1; 1989 tria_node_ids[8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+2; 1990 tria_node_ids[9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+3; 1991 break; 1977 1992 default: 1978 1993 _error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet"); -
issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp
r18170 r18173 420 420 case TaylorHoodEnum: return NUMNODESP2+NUMNODESP1; 421 421 case XTaylorHoodEnum: return NUMNODESP2+NUMNODESP1; 422 case CrouzeixRaviartEnum: return NUMNODESP2b+NUMNODESP1; 422 423 default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet"); 423 424 } … … 429 430 430 431 switch(fe_stokes){ 431 case P1P1Enum: return P1Enum; 432 case P1P1GLSEnum: return P1Enum; 433 case MINIcondensedEnum: return P1bubbleEnum; 434 case MINIEnum: return P1bubbleEnum; 435 case TaylorHoodEnum: return P2Enum; 436 case XTaylorHoodEnum: return P2Enum; 432 case P1P1Enum: return P1Enum; 433 case P1P1GLSEnum: return P1Enum; 434 case MINIcondensedEnum: return P1bubbleEnum; 435 case MINIEnum: return P1bubbleEnum; 436 case TaylorHoodEnum: return P2Enum; 437 case XTaylorHoodEnum: return P2Enum; 438 case CrouzeixRaviartEnum:return P2bubbleEnum; 437 439 default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet"); 438 440 } … … 444 446 445 447 switch(fe_stokes){ 446 case P1P1Enum: return P1Enum; 447 case P1P1GLSEnum: return P1Enum; 448 case MINIcondensedEnum: return P1Enum; 449 case MINIEnum: return P1Enum; 450 case TaylorHoodEnum: return P1Enum; 451 case XTaylorHoodEnum: return P1Enum; 448 case P1P1Enum: return P1Enum; 449 case P1P1GLSEnum: return P1Enum; 450 case MINIcondensedEnum: return P1Enum; 451 case MINIEnum: return P1Enum; 452 case TaylorHoodEnum: return P1Enum; 453 case XTaylorHoodEnum: return P1Enum; 454 case CrouzeixRaviartEnum: return P1DGEnum; 452 455 default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet"); 453 456 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
r18170 r18173 13 13 /*Intermediaries*/ 14 14 int i,j,counter,vnodes,lid=0; 15 int numberoffaces ;15 int numberoffaces,elementnbv; 16 16 int id0 = iomodel->nodecounter; 17 17 bool *my_faces = NULL; … … 442 442 } 443 443 break; 444 case CrouzeixRaviartEnum: 445 _assert_(approximation==FSApproximationEnum); 446 /*P2b velocity*/ 447 EdgesPartitioning(&my_edges,iomodel); 448 for(i=0;i<iomodel->numberofvertices;i++){ 449 if(iomodel->my_vertices[i]){ 450 nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,FSvelocityEnum)); 451 } 452 } 453 for(i=0;i<iomodel->numberofedges;i++){ 454 if(my_edges[i]){ 455 nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum)); 456 } 457 } 458 id0 = id0+iomodel->numberofvertices+iomodel->numberofedges; 459 if(iomodel->meshelementtype==PentaEnum){ 460 FacesPartitioning(&my_faces,iomodel); 461 for(i=0;i<iomodel->numberoffaces;i++){ 462 if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/ 463 if(my_faces[i]){ 464 node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,FSvelocityEnum); 465 nodes->AddObject(node); 466 } 467 } 468 else if(iomodel->faces[i*iomodel->facescols+2]==1){/*Triangular base/top*/ 469 /*Nothing*/ 470 } 471 else{ 472 _error_("not supported"); 473 } 474 } 475 id0 = id0+iomodel->numberoffaces; 476 } 477 for(i=0;i<iomodel->numberofelements;i++){ 478 if(iomodel->my_elements[i]){ 479 nodes->AddObject(new Node(id0+i+1,id0-iomodel->nodecounter+i,lid++,0,iomodel,analysis,FSvelocityEnum)); 480 } 481 } 482 483 /*P1 DG pressure*/ 484 vnodes = id0+iomodel->numberofelements; 485 switch(iomodel->meshelementtype){ 486 case TriaEnum: elementnbv = 3; break; 487 case TetraEnum: elementnbv = 4; break; 488 case PentaEnum: elementnbv = 6; break; 489 default: _error_("mesh dimension not supported yet"); 490 } 491 for(i=0;i<iomodel->numberofelements;i++){ 492 if(iomodel->my_elements[i]){ 493 for(j=0;j<elementnbv;j++){ 494 nodes->AddObject(new Node(vnodes+elementnbv*i+j+1,vnodes-iomodel->nodecounter+elementnbv*i+j,lid++,iomodel->elements[+elementnbv*i+j]-1,iomodel,analysis,FSpressureEnum)); 495 496 } 497 } 498 } 499 break; 444 500 445 501 default: -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r18170 r18173 615 615 XTaylorHoodEnum, 616 616 OneLayerP4zEnum, 617 CrouzeixRaviartEnum, 617 618 /*}}}*/ 618 619 /*Results{{{*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r18170 r18173 604 604 case XTaylorHoodEnum : return "XTaylorHood"; 605 605 case OneLayerP4zEnum : return "OneLayerP4z"; 606 case CrouzeixRaviartEnum : return "CrouzeixRaviart"; 606 607 case SaveResultsEnum : return "SaveResults"; 607 608 case BoolExternalResultEnum : return "BoolExternalResult"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r18170 r18173 616 616 else if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum; 617 617 else if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum; 618 else if (strcmp(name,"CrouzeixRaviart")==0) return CrouzeixRaviartEnum; 618 619 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 619 620 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; … … 628 629 else if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum; 629 630 else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum; 630 else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"MassfluxatgateName")==0) return MassfluxatgateNameEnum; 634 if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum; 635 else if (strcmp(name,"MassfluxatgateName")==0) return MassfluxatgateNameEnum; 635 636 else if (strcmp(name,"MassfluxatgateSegments")==0) return MassfluxatgateSegmentsEnum; 636 637 else if (strcmp(name,"MisfitName")==0) return MisfitNameEnum; -
issm/trunk-jpl/src/m/classes/flowequation.m
r18171 r18173 134 134 md = checkfield(md,'fieldname','flowequation.fe_SSA','values',{'P1','P1bubble','P1bubblecondensed','P2','P2bubble'}); 135 135 md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',{'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'}); 136 md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',{'P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z' });136 md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',{'P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'}); 137 137 md = checkfield(md,'fieldname','flowequation.XTH_r','numel',[1],'>',0.); 138 138 md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5); -
issm/trunk-jpl/src/m/classes/flowequation.py
r18171 r18173 78 78 md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble']) 79 79 md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4']) 80 md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z' ])80 md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart']) 81 81 md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1]) 82 82 md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
Note:
See TracChangeset
for help on using the changeset viewer.