Changeset 17692
- Timestamp:
- 04/09/14 13:15:54 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp
r17686 r17692 59 59 case Mesh2DverticalEnum: dim = 2; break; 60 60 case Mesh3DEnum: dim = 3; break; 61 case Mesh3DtetrasEnum: dim = 3; break;62 61 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 63 62 } -
issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp
r17686 r17692 36 36 void L2ProjectionBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/ 37 37 38 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum){38 if(iomodel->domaintype==Mesh3DEnum){ 39 39 iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum); 40 40 } … … 82 82 break; 83 83 case Mesh3DEnum: 84 if(!element->IsOnBase()) return NULL;85 basalelement = element->SpawnBasalElement();86 break;87 case Mesh3DtetrasEnum:88 84 if(!element->IsOnBase()) return NULL; 89 85 basalelement = element->SpawnBasalElement(); … … 145 141 break; 146 142 case Mesh3DEnum: 147 if(!element->IsOnBase()) return NULL;148 basalelement = element->SpawnBasalElement();149 break;150 case Mesh3DtetrasEnum:151 143 if(!element->IsOnBase()) return NULL; 152 144 basalelement = element->SpawnBasalElement(); … … 212 204 void L2ProjectionBaseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/ 213 205 214 int inputenum,domaintype ;206 int inputenum,domaintype,elementtype; 215 207 216 208 element->FindParam(&inputenum,InputToL2ProjectEnum); 217 209 element->FindParam(&domaintype,DomainTypeEnum); 210 element->FindParam(&elementtype,MeshElementtypeEnum); 218 211 switch(domaintype){ 219 212 case Mesh2DhorizontalEnum: … … 221 214 break; 222 215 case Mesh2DverticalEnum: 223 case Mesh3DtetrasEnum:224 216 element->InputUpdateFromSolutionOneDof(solution,inputenum); 225 217 break; 226 218 case Mesh3DEnum: 227 element->InputUpdateFromSolutionOneDofCollapsed(solution,inputenum); 219 if(elementtype==TetraEnum) 220 element->InputUpdateFromSolutionOneDof(solution,inputenum); 221 else 222 element->InputUpdateFromSolutionOneDofCollapsed(solution,inputenum); 228 223 break; 229 224 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); -
issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.cpp
r17686 r17692 261 261 case Mesh2DverticalEnum: dim = 2; dofpernode = 1; break; 262 262 case Mesh3DEnum: dim = 3; dofpernode = 1; break; 263 case Mesh3DtetrasEnum: dim = 3; dofpernode = 1; break;264 263 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 265 264 } -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17686 r17692 20 20 switch(domaintype){ 21 21 case Mesh3DEnum: numdofs=2; break; 22 case Mesh3DtetrasEnum: numdofs=2; break;23 22 case Mesh2DhorizontalEnum: numdofs=2; break; 24 23 case Mesh2DverticalEnum: numdofs=1; break; … … 30 29 switch(domaintype){ 31 30 case Mesh3DEnum: numdofs=2; break; 32 case Mesh3DtetrasEnum: numdofs=2; break;33 31 case Mesh2DverticalEnum: numdofs=1; break; 34 32 default: _error_("mesh type not supported yet"); … … 39 37 switch(domaintype){ 40 38 case Mesh3DEnum: numdofs=3; break; 41 case Mesh3DtetrasEnum: numdofs=3; break;42 39 case Mesh2DverticalEnum: numdofs=2; break; 43 40 default: _error_("mesh type not supported yet"); … … 48 45 switch(domaintype){ 49 46 case Mesh3DEnum: numdofs=4; break; 50 case Mesh3DtetrasEnum: numdofs=4; break;51 47 case Mesh2DverticalEnum: numdofs=3; break; 52 48 default: _error_("mesh type not supported yet"); … … 227 223 if(dakota_analysis)elements->InputDuplicate(VzEnum,QmuVzEnum); 228 224 } 229 if(iomodel->domaintype==Mesh3DtetrasEnum){230 iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);231 iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);232 iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum);233 iomodel->FetchDataToInput(elements,LoadingforceZEnum);234 iomodel->FetchDataToInput(elements,VzEnum,0.);235 if(dakota_analysis)elements->InputDuplicate(VzEnum,QmuVzEnum);236 }237 225 if(iomodel->domaintype==Mesh2DverticalEnum){ 238 226 iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum); … … 431 419 iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum); 432 420 iomodel->FetchData(&groundedice_ls,NULL,NULL,MaskGroundediceLevelsetEnum); 433 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum){421 if(iomodel->domaintype==Mesh3DEnum){ 434 422 iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvzEnum); 435 423 } … … 440 428 _error_("not supported yet"); 441 429 } 442 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum){430 if(iomodel->domaintype==Mesh3DEnum){ 443 431 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0); 444 432 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,1); … … 520 508 iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvzEnum); 521 509 iomodel->FetchData(&nodeonSSA,NULL,NULL,FlowequationBorderSSAEnum); 522 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->FetchData(&nodeonHO,NULL,NULL,FlowequationBorderHOEnum);523 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->FetchData(&nodeonFS,NULL,NULL,FlowequationBorderFSEnum);524 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);525 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,MaskGroundediceLevelsetEnum);510 if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&nodeonHO,NULL,NULL,FlowequationBorderHOEnum); 511 if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&nodeonFS,NULL,NULL,FlowequationBorderFSEnum); 512 if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum); 513 if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,MaskGroundediceLevelsetEnum); 526 514 iomodel->FetchData(&vertices_type,NULL,NULL,FlowequationVertexEquationEnum); 527 515 iomodel->FetchData(&surface,NULL,NULL,SurfaceEnum); … … 750 738 iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum); 751 739 iomodel->DeleteData(nodeonSSA,FlowequationBorderSSAEnum); 752 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->DeleteData(nodeonHO,FlowequationBorderHOEnum);753 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->DeleteData(nodeonFS,FlowequationBorderFSEnum);754 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->DeleteData(nodeonbase,MeshVertexonbaseEnum);755 if(iomodel->domaintype==Mesh3DEnum || iomodel->domaintype==Mesh3DtetrasEnum)iomodel->DeleteData(groundedice_ls,MaskGroundediceLevelsetEnum);740 if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(nodeonHO,FlowequationBorderHOEnum); 741 if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(nodeonFS,FlowequationBorderFSEnum); 742 if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(nodeonbase,MeshVertexonbaseEnum); 743 if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(groundedice_ls,MaskGroundediceLevelsetEnum); 756 744 iomodel->DeleteData(vertices_type,FlowequationVertexEquationEnum); 757 745 iomodel->DeleteData(surface,SurfaceEnum); … … 998 986 case Mesh2DverticalEnum: dim = 2; dofpernode = 1; break; 999 987 case Mesh3DEnum: dim = 3; dofpernode = 2; break; 1000 case Mesh3DtetrasEnum: dim = 3; dofpernode = 2; break;1001 988 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 1002 989 } … … 1216 1203 case Mesh2DhorizontalEnum: dim = 2;break; 1217 1204 case Mesh3DEnum: dim = 2;break; 1218 case Mesh3DtetrasEnum: dim = 2;break;1219 1205 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 1220 1206 } … … 1302 1288 case Mesh2DhorizontalEnum: dim = 2; bsize = 3; break; 1303 1289 case Mesh3DEnum: dim = 2; bsize = 3; break; 1304 case Mesh3DtetrasEnum: dim = 2; bsize = 3; break;1305 1290 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 1306 1291 } … … 1415 1400 case Mesh2DhorizontalEnum: dim = 2;break; 1416 1401 case Mesh3DEnum: dim = 2;break; 1417 case Mesh3DtetrasEnum: dim = 2;break;1418 1402 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 1419 1403 } … … 1481 1465 case Mesh2DhorizontalEnum: dim = 2;break; 1482 1466 case Mesh3DEnum: dim = 2;break; 1483 case Mesh3DtetrasEnum: dim = 2;break;1484 1467 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 1485 1468 } … … 2180 2163 case Mesh2DverticalEnum: dim = 2; bsize = 2; break; 2181 2164 case Mesh3DEnum: dim = 3; bsize = 5; break; 2182 case Mesh3DtetrasEnum: dim = 3; bsize = 5; break;2183 2165 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2184 2166 } … … 2260 2242 case Mesh2DverticalEnum: dim = 2; break; 2261 2243 case Mesh3DEnum: dim = 3; break; 2262 case Mesh3DtetrasEnum: dim = 3; break;2263 2244 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2264 2245 } … … 2346 2327 case Mesh2DverticalEnum: dim = 2; break; 2347 2328 case Mesh3DEnum: dim = 3; break; 2348 case Mesh3DtetrasEnum: dim = 3; break;2349 2329 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2350 2330 } … … 2423 2403 case Mesh2DverticalEnum: dim = 2; break; 2424 2404 case Mesh3DEnum: dim = 3; break; 2425 case Mesh3DtetrasEnum: dim = 3; break;2426 2405 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2427 2406 } … … 2485 2464 case Mesh2DverticalEnum: dim = 2; break; 2486 2465 case Mesh3DEnum: dim = 3; break; 2487 case Mesh3DtetrasEnum: dim = 3; break;2488 2466 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2489 2467 } … … 2684 2662 case Mesh2DverticalEnum: dim = 2; break; 2685 2663 case Mesh3DEnum: dim = 3; break; 2686 case Mesh3DtetrasEnum: dim = 3; break;2687 2664 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2688 2665 } … … 2772 2749 case Mesh2DverticalEnum: dim = 2; break; 2773 2750 case Mesh3DEnum: dim = 3; break; 2774 case Mesh3DtetrasEnum: dim = 3; break;2775 2751 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2776 2752 } … … 2914 2890 case Mesh2DverticalEnum: dim = 2; epssize = 3; break; 2915 2891 case Mesh3DEnum: dim = 3; epssize = 6; break; 2916 case Mesh3DtetrasEnum: dim = 3; epssize = 6; break;2917 2892 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2918 2893 } … … 2986 2961 case Mesh2DverticalEnum: dim = 2; epssize = 3; break; 2987 2962 case Mesh3DEnum: dim = 3; epssize = 6; break; 2988 case Mesh3DtetrasEnum: dim = 3; epssize = 6; break;2989 2963 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 2990 2964 } … … 3072 3046 case Mesh2DverticalEnum: dim = 2;break; 3073 3047 case Mesh3DEnum: dim = 3;break; 3074 case Mesh3DtetrasEnum: dim = 3;break;3075 3048 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3076 3049 } … … 3143 3116 case Mesh2DverticalEnum: dim = 2;break; 3144 3117 case Mesh3DEnum: dim = 3;break; 3145 case Mesh3DtetrasEnum: dim = 3;break;3146 3118 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3147 3119 } … … 3207 3179 case Mesh2DverticalEnum: dim = 2; break; 3208 3180 case Mesh3DEnum: dim = 3; break; 3209 case Mesh3DtetrasEnum: dim = 3; break;3210 3181 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3211 3182 } … … 3293 3264 case Mesh2DverticalEnum: dim = 2;break; 3294 3265 case Mesh3DEnum: dim = 3;break; 3295 case Mesh3DtetrasEnum: dim = 3;break;3296 3266 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3297 3267 } … … 3408 3378 case Mesh2DverticalEnum: dim = 2; break; 3409 3379 case Mesh3DEnum: dim = 3; break; 3410 case Mesh3DtetrasEnum: dim = 3; break;3411 3380 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3412 3381 } … … 3486 3455 case Mesh2DverticalEnum: dim = 2; tausize = 3; break; 3487 3456 case Mesh3DEnum: dim = 3; tausize = 6; break; 3488 case Mesh3DtetrasEnum: dim = 3; tausize = 6; break;3489 3457 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3490 3458 } … … 3663 3631 case Mesh2DverticalEnum: dim = 2; break; 3664 3632 case Mesh3DEnum: dim = 3; break; 3665 case Mesh3DtetrasEnum: dim = 3; break;3666 3633 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3667 3634 } … … 3740 3707 case Mesh2DverticalEnum: dim = 2; break; 3741 3708 case Mesh3DEnum: dim = 3; break; 3742 case Mesh3DtetrasEnum: dim = 3; break;3743 3709 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 3744 3710 } … … 4093 4059 case Mesh2DverticalEnum: dim = 2; break; 4094 4060 case Mesh3DEnum: dim = 3; break; 4095 case Mesh3DtetrasEnum: dim = 3; break;4096 4061 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 4097 4062 } … … 4160 4125 case Mesh2DverticalEnum: dim = 2; break; 4161 4126 case Mesh3DEnum: dim = 3; break; 4162 case Mesh3DtetrasEnum: dim = 3; break;4163 4127 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 4164 4128 } … … 4246 4210 case Mesh2DverticalEnum: dim = 2; break; 4247 4211 case Mesh3DEnum: dim = 3; break; 4248 case Mesh3DtetrasEnum: dim = 3; break;4249 4212 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 4250 4213 } … … 4344 4307 case Mesh2DverticalEnum: dim = 2; tausize = 3; break; 4345 4308 case Mesh3DEnum: dim = 3; tausize = 6; break; 4346 case Mesh3DtetrasEnum: dim = 3; tausize = 6; break;4347 4309 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 4348 4310 } … … 4558 4520 case Mesh2DverticalEnum: dim = 2; tausize = 3; break; 4559 4521 case Mesh3DEnum: dim = 3; tausize = 6; break; 4560 case Mesh3DtetrasEnum: dim = 3; tausize = 6; break;4561 4522 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 4562 4523 } -
issm/trunk-jpl/src/c/classes/IoModel.cpp
r17686 r17692 31 31 32 32 this->domaintype=-1; 33 this->domaindim=-1; 34 this->meshelementtype=-1; 33 35 this->numberofvertices=-1; 34 36 this->numberofelements=-1; … … 76 78 77 79 FetchData(&this->domaintype,DomainTypeEnum); 80 FetchData(&this->domaindim,DomainDimensionEnum); 81 FetchData(&this->meshelementtype,MeshElementtypeEnum); 78 82 FetchData(&this->numberofvertices,MeshNumberofverticesEnum); 79 83 FetchData(&this->numberofelements,MeshNumberofelementsEnum); -
issm/trunk-jpl/src/c/classes/IoModel.h
r17686 r17692 32 32 /*Mesh properties and connectivity tables*/ 33 33 int domaintype; 34 int domaindim; 35 int meshelementtype; 34 36 int numberofvertices; 35 37 int numberofelements; -
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
r17686 r17692 51 51 break; 52 52 case P1bubbleEnum: 53 switch(iomodel->domaintype){ 54 case Mesh2DhorizontalEnum: elementnbv = 3; break; 55 case Mesh2DverticalEnum: elementnbv = 3; break; 56 case Mesh3DtetrasEnum: elementnbv = 4; break; 57 case Mesh3DEnum: elementnbv = 6; break; 53 switch(iomodel->meshelementtype){ 54 case TriaEnum: elementnbv = 3; break; 55 case TetraEnum: elementnbv = 4; break; 56 case PentaEnum: elementnbv = 6; break; 58 57 default: _error_("mesh type not supported yet"); 59 58 } … … 73 72 case P2Enum: 74 73 EdgesPartitioning(&my_edges,iomodel); 75 if(iomodel-> domaintype==Mesh3DEnum){74 if(iomodel->meshelementtype==PentaEnum){ 76 75 FacesPartitioning(&my_faces,iomodel); 77 76 } … … 118 117 } 119 118 } 120 if(iomodel-> domaintype==Mesh3DEnum){119 if(iomodel->meshelementtype==PentaEnum){ 121 120 for(i=0;i<iomodel->numberoffaces;i++){ 122 121 if(iomodel->faces[i*6+5]==2){/*Vertical quads*/ -
issm/trunk-jpl/src/c/modules/MeshPartitionx/MeshPartitionx.h
r17686 r17692 11 11 template <class doubletype> 12 12 int MeshPartitionx(int** pepart, int** pnpart, int numberofelements,int numberofnodes,int* elements, 13 int numberofelements2d,int numberofnodes2d,doubletype* elements2d,int numlayers,int elements_width, int domaintype,int num_procs){13 int numberofelements2d,int numberofnodes2d,doubletype* elements2d,int numlayers,int elements_width, int meshelementtype,int num_procs){ 14 14 15 15 int noerr=1; … … 31 31 int edgecut=1; 32 32 33 switch(domaintype){ 34 case Mesh2DhorizontalEnum: 35 case Mesh2DverticalEnum: 36 case Mesh3DtetrasEnum: 33 switch(meshelementtype){ 34 case TriaEnum: 35 case TetraEnum: 37 36 epart=xNew<int>(numberofelements); 38 37 npart=xNew<int>(numberofnodes); … … 59 58 else _error_("At least one processor is required"); 60 59 break; 61 case Mesh3DEnum:60 case PentaEnum: 62 61 /*We have a 3d mesh, made of a regularly extruded 2d mesh. We first partition the 2d mesh, then we extrude the partition: */ 63 62 … … 111 110 break; 112 111 default: 113 _error_("mesh type "<<EnumToStringx( domaintype)<<" not supported yet");112 _error_("mesh type "<<EnumToStringx(meshelementtype)<<" not supported yet"); 114 113 } 115 114 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateEdges.cpp
r17686 r17692 23 23 24 24 /*Mesh dependent variables*/ 25 if(iomodel->domaintype==Mesh2DhorizontalEnum){ 26 elementnbv = 3; 27 elementnbe = 3; 28 elementedges = xNew<int>(elementnbe*2); 29 elementedges_markers = xNew<int>(elementnbe); 30 elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1; 31 elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = 1; 32 elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1; 33 } 34 else if(iomodel->domaintype==Mesh2DverticalEnum){ 35 elementnbv = 3; 36 elementnbe = 3; 37 elementedges = xNew<int>(elementnbe*2); 38 elementedges_markers = xNew<int>(elementnbe); 39 elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1; 40 elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = 1; 41 elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1; 42 } 43 else if(iomodel->domaintype==Mesh3DtetrasEnum){ 44 elementnbv = 4; 45 elementnbe = 6; 46 elementedges = xNew<int>(elementnbe*2); 47 elementedges_markers = xNew<int>(elementnbe); 48 elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1; 49 elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = 1; 50 elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1; 51 elementedges[2*3+0] = 0; elementedges[2*3+1] = 3; elementedges_markers[3] = 1; 52 elementedges[2*4+0] = 1; elementedges[2*4+1] = 3; elementedges_markers[4] = 1; 53 elementedges[2*5+0] = 2; elementedges[2*5+1] = 3; elementedges_markers[5] = 1; 54 } 55 else if(iomodel->domaintype==Mesh3DEnum){ 56 elementnbv = 6; 57 elementnbe = 9; 58 elementedges = xNew<int>(elementnbe*2); 59 elementedges_markers = xNew<int>(elementnbe); 60 elementedges[2*0+0] = 0; elementedges[2*0+1] = 3; elementedges_markers[0] = 2; 61 elementedges[2*1+0] = 1; elementedges[2*1+1] = 4; elementedges_markers[1] = 2; 62 elementedges[2*2+0] = 2; elementedges[2*2+1] = 5; elementedges_markers[2] = 2; 63 elementedges[2*3+0] = 1; elementedges[2*3+1] = 2; elementedges_markers[3] = 1; 64 elementedges[2*4+0] = 2; elementedges[2*4+1] = 0; elementedges_markers[4] = 1; 65 elementedges[2*5+0] = 0; elementedges[2*5+1] = 1; elementedges_markers[5] = 1; 66 elementedges[2*6+0] = 4; elementedges[2*6+1] = 5; elementedges_markers[6] = 1; 67 elementedges[2*7+0] = 5; elementedges[2*7+1] = 3; elementedges_markers[7] = 1; 68 elementedges[2*8+0] = 3; elementedges[2*8+1] = 4; elementedges_markers[8] = 1; 69 } 70 else{ 25 switch(iomodel->meshelementtype){ 26 case TriaEnum: 27 elementnbv = 3; 28 elementnbe = 3; 29 elementedges = xNew<int>(elementnbe*2); 30 elementedges_markers = xNew<int>(elementnbe); 31 elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1; 32 elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = 1; 33 elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1; 34 break; 35 case TetraEnum: 36 elementnbv = 4; 37 elementnbe = 6; 38 elementedges = xNew<int>(elementnbe*2); 39 elementedges_markers = xNew<int>(elementnbe); 40 elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = 1; 41 elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = 1; 42 elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = 1; 43 elementedges[2*3+0] = 0; elementedges[2*3+1] = 3; elementedges_markers[3] = 1; 44 elementedges[2*4+0] = 1; elementedges[2*4+1] = 3; elementedges_markers[4] = 1; 45 elementedges[2*5+0] = 2; elementedges[2*5+1] = 3; elementedges_markers[5] = 1; 46 break; 47 case PentaEnum: 48 elementnbv = 6; 49 elementnbe = 9; 50 elementedges = xNew<int>(elementnbe*2); 51 elementedges_markers = xNew<int>(elementnbe); 52 elementedges[2*0+0] = 0; elementedges[2*0+1] = 3; elementedges_markers[0] = 2; 53 elementedges[2*1+0] = 1; elementedges[2*1+1] = 4; elementedges_markers[1] = 2; 54 elementedges[2*2+0] = 2; elementedges[2*2+1] = 5; elementedges_markers[2] = 2; 55 elementedges[2*3+0] = 1; elementedges[2*3+1] = 2; elementedges_markers[3] = 1; 56 elementedges[2*4+0] = 2; elementedges[2*4+1] = 0; elementedges_markers[4] = 1; 57 elementedges[2*5+0] = 0; elementedges[2*5+1] = 1; elementedges_markers[5] = 1; 58 elementedges[2*6+0] = 4; elementedges[2*6+1] = 5; elementedges_markers[6] = 1; 59 elementedges[2*7+0] = 5; elementedges[2*7+1] = 3; elementedges_markers[7] = 1; 60 elementedges[2*8+0] = 3; elementedges[2*8+1] = 4; elementedges_markers[8] = 1; 61 break; 62 default: 71 63 _error_("mesh dimension not supported yet"); 72 64 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r17686 r17692 26 26 /*Create elements*/ 27 27 if(control_analysis)iomodel->FetchData(3,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum); 28 switch(iomodel-> domaintype){29 case Mesh2DhorizontalEnum:28 switch(iomodel->meshelementtype){ 29 case TriaEnum: 30 30 for(i=0;i<iomodel->numberofelements;i++){ 31 31 if(iomodel->my_elements[i]) elements->AddObject(new Tria(i+1,i,i,iomodel,nummodels)); 32 32 } 33 33 break; 34 case Mesh2DverticalEnum: 35 for(i=0;i<iomodel->numberofelements;i++){ 36 if(iomodel->my_elements[i]) elements->AddObject(new Tria(i+1,i,i,iomodel,nummodels)); 37 } 38 break; 39 case Mesh3DtetrasEnum: 34 case TetraEnum: 40 35 for(i=0;i<iomodel->numberofelements;i++){ 41 36 if(iomodel->my_elements[i]) elements->AddObject(new Tetra(i+1,i,i,iomodel,nummodels)); 42 37 } 43 38 break; 44 case Mesh3DEnum:39 case PentaEnum: 45 40 iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum); 46 41 for(i=0;i<iomodel->numberofelements;i++){ … … 59 54 iomodel->FetchDataToInput(elements,DamageDEnum); 60 55 for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel)); 61 switch(iomodel->domain type){62 case Mesh2DhorizontalEnum: case Mesh2DverticalEnum:56 switch(iomodel->domaindim){ 57 case 2: 63 58 elements->InputDuplicate(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 64 59 elements->InputDuplicate(DamageDEnum,DamageDbarEnum); 65 60 if(dakota_analysis) elements->InputDuplicate(MaterialsRheologyBbarEnum,QmuMaterialsRheologyBEnum); 66 61 break; 67 case Mesh3DEnum: case Mesh3DtetrasEnum:62 case 3: 68 63 if(dakota_analysis) elements->InputDuplicate(MaterialsRheologyBEnum,QmuMaterialsRheologyBEnum); 69 64 break; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp
r17686 r17692 144 144 145 145 /*Mesh specific face indexing per element*/ 146 if(iomodel-> domaintype==Mesh3DEnum){146 if(iomodel->meshelementtype==PentaEnum){ 147 147 elementnbv = 6; /*Number of vertices per element*/ 148 148 elementnbf = 5; /*Number of faces per element*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
r17686 r17692 144 144 } 145 145 id0 = id0+iomodel->numberofvertices+iomodel->numberofedges; 146 if(iomodel-> domaintype==Mesh3DEnum){146 if(iomodel->meshelementtype==PentaEnum){ 147 147 FacesPartitioning(&my_faces,iomodel); 148 148 for(i=0;i<iomodel->numberoffaces;i++){ … … 309 309 } 310 310 id0 = id0+iomodel->numberofvertices+iomodel->numberofedges; 311 if(iomodel-> domaintype==Mesh3DEnum){311 if(iomodel->meshelementtype==PentaEnum){ 312 312 FacesPartitioning(&my_faces,iomodel); 313 313 for(i=0;i<iomodel->numberoffaces;i++){ … … 328 328 329 329 /*P1 pressure*/ 330 if(iomodel-> domaintype==Mesh3DEnum){330 if(iomodel->meshelementtype==PentaEnum){ 331 331 numberoffaces=iomodel->numberoffaces; 332 332 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
r17686 r17692 36 36 37 37 /*Get element width*/ 38 switch(iomodel->domaintype){ 39 case Mesh2DhorizontalEnum: elementswidth=3; break; 40 case Mesh2DverticalEnum: elementswidth=3; break; 41 case Mesh3DtetrasEnum: elementswidth=4; break; 42 case Mesh3DEnum: elementswidth=6; break; 38 switch(iomodel->meshelementtype){ 39 case TriaEnum: elementswidth=3; break; 40 case TetraEnum: elementswidth=4; break; 41 case PentaEnum: elementswidth=6; break; 43 42 default: _error_("mesh not supported yet"); 44 43 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r17686 r17692 42 42 /*Copy some constants from iomodel */ 43 43 parameters->AddObject(iomodel->CopyConstantObject(DomainTypeEnum)); 44 parameters->AddObject(iomodel->CopyConstantObject(DomainDimensionEnum)); 45 parameters->AddObject(iomodel->CopyConstantObject(MeshElementtypeEnum)); 44 46 parameters->AddObject(iomodel->CopyConstantObject(SettingsOutputFrequencyEnum)); 45 47 parameters->AddObject(iomodel->CopyConstantObject(SteadystateReltolEnum)); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp
r17686 r17692 18 18 19 19 /*Mesh dependent variables*/ 20 if(iomodel->domaintype==Mesh2DhorizontalEnum){ 21 elementnbe = 3; 20 switch(iomodel->meshelementtype){ 21 case TriaEnum: elementnbe = 3; break; 22 case TetraEnum: elementnbe = 6; break; 23 case PentaEnum: elementnbe = 9; break; 24 default: _error_("mesh dimension not supported yet"); 22 25 } 23 else if(iomodel->domaintype==Mesh2DverticalEnum){ 24 elementnbe = 3; 25 } 26 else if(iomodel->domaintype==Mesh3DtetrasEnum){ 27 elementnbe = 6; 28 } 29 else if(iomodel->domaintype==Mesh3DEnum){ 30 elementnbe = 9; 31 } 32 else{ 33 _error_("mesh dimension not supported yet"); 34 } 26 35 27 /*output: */ 36 28 bool* my_edges=xNewZeroInit<bool>(iomodel->numberofedges); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
r17686 r17692 51 51 /*Number of vertices per elements, needed to correctly retrieve data: */ 52 52 /*Determine parallel partitioning of elements: we use Metis for now. First load the data, then partition*/ 53 switch(iomodel-> domaintype){54 case Mesh2DhorizontalEnum:53 switch(iomodel->meshelementtype){ 54 case TriaEnum: 55 55 elements_width=3; 56 56 numberofelements2d = 0; … … 58 58 numlayers = 0; 59 59 break; 60 case Mesh2DverticalEnum:61 elements_width= 3;60 case TetraEnum: 61 elements_width=4; 62 62 numberofelements2d = 0; 63 63 numberofvertices2d = 0; 64 64 numlayers = 0; 65 65 break; 66 case Mesh3DtetrasEnum: 67 elements_width=4; //penta elements 68 numberofelements2d = 0; 69 numberofvertices2d = 0; 70 numlayers = 0; 71 break; 72 case Mesh3DEnum: 73 elements_width=6; //penta elements 66 case PentaEnum: 67 elements_width=6; 74 68 iomodel->FetchData(&elements2d,NULL,NULL,MeshElements2dEnum); 75 69 iomodel->Constant(&numberofelements2d,MeshNumberofelements2dEnum); … … 81 75 } 82 76 83 MeshPartitionx(&epart,&npart,iomodel->numberofelements,iomodel->numberofvertices,iomodel->elements,numberofelements2d,numberofvertices2d,elements2d,numlayers,elements_width,iomodel-> domaintype,num_procs);77 MeshPartitionx(&epart,&npart,iomodel->numberofelements,iomodel->numberofvertices,iomodel->elements,numberofelements2d,numberofvertices2d,elements2d,numlayers,elements_width,iomodel->meshelementtype,num_procs); 84 78 85 79 /*Free elements2d: */
Note:
See TracChangeset
for help on using the changeset viewer.