Changeset 23532
- Timestamp:
- 12/11/18 12:45:16 (6 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 31 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp ¶
r23066 r23532 44 44 45 45 /* Add load */ 46 loads->AddObject(new Numericalflux(i omodel->loadcounter+i+1,i,i,iomodel,BalancethicknessAnalysisEnum));46 loads->AddObject(new Numericalflux(i+1,i,i,iomodel,BalancethicknessAnalysisEnum)); 47 47 } 48 48 -
TabularUnified issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp ¶
r23336 r23532 33 33 34 34 /*Get node ids*/ 35 penpair_ids[0]= iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+0]);36 penpair_ids[1]= iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+1]);35 penpair_ids[0]=reCast<int>(vertex_pairing[2*i+0]); 36 penpair_ids[1]=reCast<int>(vertex_pairing[2*i+1]); 37 37 38 38 /*Create Load*/ 39 loads->AddObject(new Penpair( 40 iomodel->loadcounter+count+1, 41 &penpair_ids[0], 42 FreeSurfaceBaseAnalysisEnum)); 39 loads->AddObject(new Penpair(count+1, &penpair_ids[0], FreeSurfaceBaseAnalysisEnum)); 43 40 count++; 44 41 } -
TabularUnified issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp ¶
r20690 r23532 33 33 34 34 /*Get node ids*/ 35 penpair_ids[0]= iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+0]);36 penpair_ids[1]= iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+1]);35 penpair_ids[0]=reCast<int>(vertex_pairing[2*i+0]); 36 penpair_ids[1]=reCast<int>(vertex_pairing[2*i+1]); 37 37 38 38 /*Create Load*/ 39 loads->AddObject(new Penpair( 40 iomodel->loadcounter+count+1, 41 &penpair_ids[0], 42 FreeSurfaceTopAnalysisEnum)); 39 loads->AddObject(new Penpair( count+1, &penpair_ids[0], FreeSurfaceTopAnalysisEnum)); 43 40 count++; 44 41 } -
TabularUnified issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp ¶
r23528 r23532 128 128 /*keep only this partition's nodes:*/ 129 129 if(iomodel->my_vertices[i]){ 130 loads->AddObject(new Moulin(i omodel->loadcounter+i+1,i,iomodel,HydrologyDCEfficientAnalysisEnum));130 loads->AddObject(new Moulin(i+1,i,iomodel,HydrologyDCEfficientAnalysisEnum)); 131 131 } 132 132 } 133 133 else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){ 134 134 if(iomodel->my_vertices[i]){ 135 loads->AddObject(new Moulin(i omodel->loadcounter+i+1,i,iomodel,HydrologyDCEfficientAnalysisEnum));135 loads->AddObject(new Moulin(i+1,i,iomodel,HydrologyDCEfficientAnalysisEnum)); 136 136 } 137 137 } -
TabularUnified issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp ¶
r23387 r23532 155 155 /*keep only this partition's nodes:*/ 156 156 if(iomodel->my_vertices[i]){ 157 loads->AddObject(new Pengrid(i omodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));158 loads->AddObject(new Moulin(i omodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));157 loads->AddObject(new Pengrid(i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum)); 158 loads->AddObject(new Moulin(i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum)); 159 159 } 160 160 } 161 161 else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){ 162 162 if(iomodel->my_vertices[i]){ 163 loads->AddObject(new Pengrid(i omodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));164 loads->AddObject(new Moulin(i omodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum));163 loads->AddObject(new Pengrid(i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum)); 164 loads->AddObject(new Moulin(i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum)); 165 165 } 166 166 } -
TabularUnified issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp ¶
r23066 r23532 38 38 /*keep only this partition's nodes:*/ 39 39 if(iomodel->my_vertices[i]){ 40 loads->AddObject(new Moulin(i omodel->loadcounter+i+1,i,iomodel,HydrologyShaktiAnalysisEnum));40 loads->AddObject(new Moulin(i+1,i,iomodel,HydrologyShaktiAnalysisEnum)); 41 41 } 42 42 } 43 43 else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){ 44 44 if(iomodel->my_vertices[i]){ 45 loads->AddObject(new Moulin(i omodel->loadcounter+i+1,i,iomodel,HydrologyShaktiAnalysisEnum));45 loads->AddObject(new Moulin(i+1,i,iomodel,HydrologyShaktiAnalysisEnum)); 46 46 } 47 47 } … … 58 58 for(int i=0;i<M;i++){ 59 59 if(iomodel->my_elements[segments[i*3+2]-1]){ 60 loads->AddObject(new Neumannflux(i omodel->loadcounter+i+1,i,iomodel,segments,HydrologyShaktiAnalysisEnum));60 loads->AddObject(new Neumannflux(i+1,i,iomodel,segments,HydrologyShaktiAnalysisEnum)); 61 61 } 62 62 } -
TabularUnified issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp ¶
r23505 r23532 51 51 52 52 /* Add load */ 53 loads->AddObject(new Numericalflux(i omodel->loadcounter+i+1,i,i,iomodel,MasstransportAnalysisEnum));53 loads->AddObject(new Numericalflux(i+1,i,i,iomodel,MasstransportAnalysisEnum)); 54 54 } 55 55 … … 77 77 78 78 /*Get node ids*/ 79 penpair_ids[0]= iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+0]);80 penpair_ids[1]= iomodel->nodecounter+reCast<int>(vertex_pairing[2*i+1]);79 penpair_ids[0]=reCast<int>(vertex_pairing[2*i+0]); 80 penpair_ids[1]=reCast<int>(vertex_pairing[2*i+1]); 81 81 82 82 /*Create Load*/ 83 loads->AddObject(new Penpair( 84 iomodel->loadcounter+count+1, 85 &penpair_ids[0], 86 MasstransportAnalysisEnum)); 83 loads->AddObject(new Penpair(count+1,&penpair_ids[0],MasstransportAnalysisEnum)); 87 84 count++; 88 85 } -
TabularUnified issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp ¶
r21915 r23532 21 21 if(iomodel->my_vertices[i]){ 22 22 if (reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){ 23 loads->AddObject(new Pengrid(i omodel->loadcounter+i+1,i,iomodel,MeltingAnalysisEnum));23 loads->AddObject(new Pengrid(i+1,i,iomodel,MeltingAnalysisEnum)); 24 24 } 25 25 } -
TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp ¶
r23475 r23532 15 15 /*Intermediary*/ 16 16 int i,j; 17 int count,finiteelement,p_fe,v_fe;17 int finiteelement,p_fe,v_fe; 18 18 IssmDouble g; 19 19 IssmDouble rho_ice; … … 122 122 123 123 /*Pressure spc*/ 124 count = constraints->Size();124 int count = constraints->Size(); 125 125 iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation"); 126 126 iomodel->FetchData(&surface,NULL,NULL,"md.geometry.surface"); … … 139 139 if(iomodel->my_vertices[i]){ 140 140 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 141 constraints->AddObject(new SpcStatic(count+1,iomodel->n odecounter+iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));141 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 142 142 count++; 143 143 } … … 149 149 if(iomodel->my_vertices[i]){ 150 150 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 151 constraints->AddObject(new SpcStatic(count+1,iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));151 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 152 152 count++; 153 153 } … … 159 159 if(iomodel->my_vertices[i]){ 160 160 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 161 constraints->AddObject(new SpcStatic(count+1,iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));161 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 162 162 count++; 163 163 } … … 197 197 198 198 /*Initialize counter: */ 199 count=0;199 int count=0; 200 200 201 201 /*figure out times: */ … … 223 223 /*If grionSSA, spc HO dofs: 3 & 4*/ 224 224 if (reCast<int,IssmDouble>(nodeonHO[i])){ 225 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.225 constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 226 226 count++; 227 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.227 constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 228 228 count++; 229 229 if (!xIsNan<IssmDouble>(spcvx[i])){ 230 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.230 constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 231 231 count++; 232 232 } 233 233 if (!xIsNan<IssmDouble>(spcvy[i])){ 234 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.234 constraints->AddObject(new SpcStatic(count+1,i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 235 235 count++; 236 236 } … … 238 238 } 239 239 else if (reCast<int,IssmDouble>(nodeonSSA[i])){ 240 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.240 constraints->AddObject(new SpcStatic(count+1,i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 241 241 count++; 242 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.242 constraints->AddObject(new SpcStatic(count+1,i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 243 243 count++; 244 244 if (!xIsNan<IssmDouble>(spcvx[i])){ 245 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.245 constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 246 246 count++; 247 247 } 248 248 if (!xIsNan<IssmDouble>(spcvy[i])){ 249 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.249 constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 250 250 count++; 251 251 } … … 258 258 /*If grion,HO spc FS dofs: 3 4 & 5*/ 259 259 if (reCast<int,IssmDouble>(nodeonHO[i])){ 260 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.260 constraints->AddObject(new SpcStatic(count+1,i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 261 261 count++; 262 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.262 constraints->AddObject(new SpcStatic(count+1,i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 263 263 count++; 264 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.264 constraints->AddObject(new SpcStatic(count+1,i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 265 265 count++; 266 266 if (!xIsNan<IssmDouble>(spcvx[i])){ 267 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.267 constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 268 268 count++; 269 269 } 270 270 if (!xIsNan<IssmDouble>(spcvy[i])){ 271 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.271 constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 272 272 count++; 273 273 } … … 275 275 } 276 276 else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc HO nodes: 1 & 2 277 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.277 constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 278 278 count++; 279 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.279 constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 280 280 count++; 281 281 if (!xIsNan<IssmDouble>(spcvx[i])){ 282 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.282 constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 283 283 count++; 284 284 } 285 285 if (!xIsNan<IssmDouble>(spcvy[i])){ 286 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.286 constraints->AddObject(new SpcStatic(count+1,i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 287 287 count++; 288 288 } 289 289 if (!xIsNan<IssmDouble>(spcvz[i])){ 290 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.290 constraints->AddObject(new SpcStatic(count+1,i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 291 291 count++; 292 292 } … … 298 298 /*If grion,HO spc FS dofs: 3 4 & 5*/ 299 299 if (reCast<int,IssmDouble>(nodeonSSA[i])){ 300 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.300 constraints->AddObject(new SpcStatic(count+1,i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 301 301 count++; 302 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.302 constraints->AddObject(new SpcStatic(count+1,i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 303 303 count++; 304 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.304 constraints->AddObject(new SpcStatic(count+1,i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 305 305 count++; 306 306 if (!xIsNan<IssmDouble>(spcvx[i])){ 307 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.307 constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 308 308 count++; 309 309 } 310 310 if (!xIsNan<IssmDouble>(spcvy[i])){ 311 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.311 constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 312 312 count++; 313 313 } … … 315 315 } 316 316 else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc SSA nodes: 1 & 2 317 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.317 constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 318 318 count++; 319 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.319 constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 320 320 count++; 321 321 if (!xIsNan<IssmDouble>(spcvx[i])){ 322 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.322 constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 323 323 count++; 324 324 } 325 325 if (!xIsNan<IssmDouble>(spcvy[i])){ 326 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.326 constraints->AddObject(new SpcStatic(count+1,i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 327 327 count++; 328 328 } 329 329 if (!xIsNan<IssmDouble>(spcvz[i])){ 330 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.330 constraints->AddObject(new SpcStatic(count+1,i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 331 331 count++; 332 332 } … … 337 337 else{ 338 338 if (Mx==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){ 339 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.339 constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 340 340 count++; 341 341 … … 351 351 352 352 if(spcpresent){ 353 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,Nx,timesx,values,StressbalanceAnalysisEnum));353 constraints->AddObject(new SpcTransient(count+1,i+1,0,Nx,timesx,values,StressbalanceAnalysisEnum)); 354 354 count++; 355 355 } … … 357 357 } 358 358 else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){ 359 constraints->AddObject(new SpcDynamic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,StressbalanceAnalysisEnum));359 constraints->AddObject(new SpcDynamic(count+1,i+1,0,StressbalanceAnalysisEnum)); 360 360 count++; 361 361 } 362 362 363 363 if (My==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){ 364 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.364 constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy. 365 365 count++; 366 366 } … … 374 374 } 375 375 if(spcpresent){ 376 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,Ny,timesy,values,StressbalanceAnalysisEnum));376 constraints->AddObject(new SpcTransient(count+1,i+1,1,Ny,timesy,values,StressbalanceAnalysisEnum)); 377 377 count++; 378 378 } … … 380 380 } 381 381 else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){ 382 constraints->AddObject(new SpcDynamic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,StressbalanceAnalysisEnum));382 constraints->AddObject(new SpcDynamic(count+1,i+1,1,StressbalanceAnalysisEnum)); 383 383 count++; 384 384 } … … 386 386 if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==FSApproximationEnum || (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum)){ 387 387 if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){ 388 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy388 constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 389 389 count++; 390 390 } … … 398 398 } 399 399 if(spcpresent){ 400 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,Nz,timesz,values,StressbalanceAnalysisEnum));400 constraints->AddObject(new SpcTransient(count+1,i+1,2,Nz,timesz,values,StressbalanceAnalysisEnum)); 401 401 count++; 402 402 } … … 406 406 } 407 407 if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 408 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy408 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 409 409 count++; 410 410 } … … 470 470 471 471 /*Get node ids*/ 472 penpair_ids[0]= iomodel->nodecounter+reCast<int,IssmDouble>(penalties[2*i+0]);473 penpair_ids[1]= iomodel->nodecounter+reCast<int,IssmDouble>(penalties[2*i+1]);472 penpair_ids[0]=reCast<int,IssmDouble>(penalties[2*i+0]); 473 penpair_ids[1]=reCast<int,IssmDouble>(penalties[2*i+1]); 474 474 475 475 /*Create Load*/ 476 loads->AddObject(new Penpair( iomodel->loadcounter+count+1,&penpair_ids[0],StressbalanceAnalysisEnum));476 loads->AddObject(new Penpair(count+1,&penpair_ids[0],StressbalanceAnalysisEnum)); 477 477 count++; 478 478 } … … 488 488 for(i=0;i<numriftsegments;i++){ 489 489 if(iomodel->my_elements[reCast<int,IssmDouble>(*(riftinfo+RIFTINFOSIZE*i+2))-1]){ 490 loads->AddObject(new Riftfront( iomodel->loadcounter+count+1,i,iomodel,StressbalanceAnalysisEnum));490 loads->AddObject(new Riftfront(count+1,i,iomodel,StressbalanceAnalysisEnum)); 491 491 count++; 492 492 } … … 558 558 approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])); 559 559 if(approximation==FSApproximationEnum) approximation=FSvelocityEnum; 560 nodes->AddObject(new Node(i omodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,approximation));560 nodes->AddObject(new Node(i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,approximation)); 561 561 } 562 562 } 563 563 for(int i=0;i<iomodel->numberofelements;i++){ 564 564 if(iomodel->my_elements[i]){ 565 node = new Node(iomodel->n odecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum);565 node = new Node(iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum); 566 566 node->Deactivate(); 567 567 nodes->AddObject(node); … … 572 572 if(iomodel->my_vertices[i]){ 573 573 approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])); 574 node = new Node(iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum);574 node = new Node(iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum); 575 575 if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){ 576 576 node->Deactivate(); … … 583 583 for(int i=0;i<iomodel->numberofvertices;i++){ 584 584 if(iomodel->my_vertices[i]){ 585 nodes->AddObject(new Node(i omodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))));585 nodes->AddObject(new Node(i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])))); 586 586 } 587 587 } -
TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp ¶
r23084 r23532 38 38 39 39 /*Initialize conunter*/ 40 int count =0;40 int count = 0; 41 41 42 42 /*vx and vy are spc'd if we are not on nodeonSIA: */ … … 46 46 if (IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){ 47 47 48 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum));48 constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceSIAAnalysisEnum)); 49 49 count++; 50 50 51 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceSIAAnalysisEnum));51 constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceSIAAnalysisEnum)); 52 52 count++; 53 53 } 54 54 else{ 55 55 if (!xIsNan<IssmDouble>(iomodel->Data("md.stressbalance.spcvx")[i])){ 56 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,iomodel->Data("md.stressbalance.spcvx")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.56 constraints->AddObject(new SpcStatic(count+1,i+1,0,iomodel->Data("md.stressbalance.spcvx")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 57 57 count++; 58 58 } 59 59 60 60 if (!xIsNan<IssmDouble>(iomodel->Data("md.stressbalance.spcvy")[i])){ 61 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data("md.stressbalance.spcvy")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy61 constraints->AddObject(new SpcStatic(count+1,i+1,1,iomodel->Data("md.stressbalance.spcvy")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 62 62 count++; 63 63 } … … 99 99 100 100 /*Create new node if is in this processor's partition*/ 101 node = new Node(i omodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));101 node = new Node(i+1,i,lid++,i,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))); 102 102 103 103 /*Deactivate node if not SIA*/ -
TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp ¶
r23341 r23532 51 51 52 52 if (reCast<int,IssmDouble>(iomodel->Data("md.flowequation.borderFS")[i])){ 53 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS53 constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS 54 54 count++; 55 55 } 56 56 else if (!xIsNan<IssmDouble>(spcvz[i])){ 57 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,57 constraints->AddObject(new SpcStatic(count+1,i+1,0, 58 58 spcvz[i],StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 59 59 count++; -
TabularUnified issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp ¶
r23475 r23532 84 84 if(iomodel->my_vertices[i]){ 85 85 if (xIsNan<IssmDouble>(iomodel->Data("md.thermal.spctemperature")[i])){ //No penalty applied on spc nodes! 86 loads->AddObject(new Pengrid(i omodel->loadcounter+i+1,i,iomodel,ThermalAnalysisEnum));86 loads->AddObject(new Pengrid(i+1,i,iomodel,ThermalAnalysisEnum)); 87 87 } 88 88 } -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/ElementHook.cpp ¶
r23066 r23532 46 46 47 47 /*retrieve material_id: */ 48 matpar_id = iomodel-> matparcounter;48 matpar_id = iomodel->numberofelements+1; 49 49 50 50 /*retrieve material_id*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp ¶
r23169 r23532 2891 2891 numnodes = 6; 2892 2892 penta_node_ids = xNew<int>(numnodes); 2893 penta_node_ids[0]=iomodel-> nodecounter+iomodel->elements[6*index+0];2894 penta_node_ids[1]=iomodel-> nodecounter+iomodel->elements[6*index+1];2895 penta_node_ids[2]=iomodel-> nodecounter+iomodel->elements[6*index+2];2896 penta_node_ids[3]=iomodel-> nodecounter+iomodel->elements[6*index+3];2897 penta_node_ids[4]=iomodel-> nodecounter+iomodel->elements[6*index+4];2898 penta_node_ids[5]=iomodel-> nodecounter+iomodel->elements[6*index+5];2893 penta_node_ids[0]=iomodel->elements[6*index+0]; 2894 penta_node_ids[1]=iomodel->elements[6*index+1]; 2895 penta_node_ids[2]=iomodel->elements[6*index+2]; 2896 penta_node_ids[3]=iomodel->elements[6*index+3]; 2897 penta_node_ids[4]=iomodel->elements[6*index+4]; 2898 penta_node_ids[5]=iomodel->elements[6*index+5]; 2899 2899 break; 2900 2900 case P1bubbleEnum: case P1bubblecondensedEnum: 2901 2901 numnodes = 7; 2902 2902 penta_node_ids = xNew<int>(numnodes); 2903 penta_node_ids[0]=iomodel-> nodecounter+iomodel->elements[6*index+0];2904 penta_node_ids[1]=iomodel-> nodecounter+iomodel->elements[6*index+1];2905 penta_node_ids[2]=iomodel-> nodecounter+iomodel->elements[6*index+2];2906 penta_node_ids[3]=iomodel-> nodecounter+iomodel->elements[6*index+3];2907 penta_node_ids[4]=iomodel-> nodecounter+iomodel->elements[6*index+4];2908 penta_node_ids[5]=iomodel-> nodecounter+iomodel->elements[6*index+5];2909 penta_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+index+1;2903 penta_node_ids[0]=iomodel->elements[6*index+0]; 2904 penta_node_ids[1]=iomodel->elements[6*index+1]; 2905 penta_node_ids[2]=iomodel->elements[6*index+2]; 2906 penta_node_ids[3]=iomodel->elements[6*index+3]; 2907 penta_node_ids[4]=iomodel->elements[6*index+4]; 2908 penta_node_ids[5]=iomodel->elements[6*index+5]; 2909 penta_node_ids[6]=iomodel->numberofvertices+index+1; 2910 2910 break; 2911 2911 case P1xP2Enum: 2912 2912 numnodes = 9; 2913 2913 penta_node_ids = xNew<int>(numnodes); 2914 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];2915 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];2916 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];2917 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];2918 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];2919 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];2920 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;2921 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;2922 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;2914 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 2915 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 2916 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 2917 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 2918 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 2919 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 2920 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 2921 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 2922 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 2923 2923 break; 2924 2924 case P1xP3Enum: 2925 2925 numnodes = 12; 2926 2926 penta_node_ids = xNew<int>(numnodes); 2927 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];2928 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];2929 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];2930 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];2931 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];2932 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];2933 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+1;2934 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+1;2935 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+1;2936 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+2;2937 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+2;2938 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+2;2927 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 2928 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 2929 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 2930 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 2931 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 2932 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 2933 penta_node_ids[ 6]=iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+1; 2934 penta_node_ids[ 7]=iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+1; 2935 penta_node_ids[ 8]=iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+1; 2936 penta_node_ids[ 9]=iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+0]+2; 2937 penta_node_ids[10]=iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+1]+2; 2938 penta_node_ids[11]=iomodel->numberofvertices+2*iomodel->elementtoedgeconnectivity[9*index+2]+2; 2939 2939 break; 2940 2940 case P2xP1Enum: 2941 2941 numnodes = 12; 2942 2942 penta_node_ids = xNew<int>(numnodes); 2943 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];2944 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];2945 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];2946 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];2947 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];2948 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];2949 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;2950 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;2951 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;2952 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;2953 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;2954 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;2943 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 2944 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 2945 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 2946 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 2947 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 2948 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 2949 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 2950 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 2951 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 2952 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 2953 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 2954 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 2955 2955 break; 2956 2956 case P1xP4Enum: 2957 2957 numnodes = 15; 2958 2958 penta_node_ids = xNew<int>(numnodes); 2959 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0]; /*Vertex 1*/2960 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1]; /*Vertex 2*/2961 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2]; /*Vertex 3*/2962 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3]; /*Vertex 4*/2963 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4]; /*Vertex 5*/2964 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5]; /*Vertex 6*/2965 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/2966 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/2967 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/2968 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/2969 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/2970 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/2971 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 3/4 vertical edge 1*/2972 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 3/4 vertical edge 2*/2973 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 3/4 vertical edge 3*/2959 penta_node_ids[ 0]=iomodel->elements[6*index+0]; /*Vertex 1*/ 2960 penta_node_ids[ 1]=iomodel->elements[6*index+1]; /*Vertex 2*/ 2961 penta_node_ids[ 2]=iomodel->elements[6*index+2]; /*Vertex 3*/ 2962 penta_node_ids[ 3]=iomodel->elements[6*index+3]; /*Vertex 4*/ 2963 penta_node_ids[ 4]=iomodel->elements[6*index+4]; /*Vertex 5*/ 2964 penta_node_ids[ 5]=iomodel->elements[6*index+5]; /*Vertex 6*/ 2965 penta_node_ids[ 6]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/ 2966 penta_node_ids[ 7]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/ 2967 penta_node_ids[ 8]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/ 2968 penta_node_ids[ 9]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/ 2969 penta_node_ids[10]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/ 2970 penta_node_ids[11]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/ 2971 penta_node_ids[12]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 3/4 vertical edge 1*/ 2972 penta_node_ids[13]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 3/4 vertical edge 2*/ 2973 penta_node_ids[14]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 3/4 vertical edge 3*/ 2974 2974 break; 2975 2975 case P2xP4Enum: 2976 2976 numnodes = 30; 2977 2977 penta_node_ids = xNew<int>(numnodes); 2978 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0]; /*Vertex 1*/2979 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1]; /*Vertex 2*/2980 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2]; /*Vertex 3*/2981 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3]; /*Vertex 4*/2982 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4]; /*Vertex 5*/2983 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5]; /*Vertex 6*/2984 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/2985 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/2986 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/2987 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/2988 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/2989 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/2990 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/2991 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/2992 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/2993 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/2994 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/2995 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/2996 penta_node_ids[18]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 3/4 vertical edge 1*/2997 penta_node_ids[19]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 3/4 vertical edge 2*/2998 penta_node_ids[20]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 3/4 vertical edge 3*/2999 penta_node_ids[21]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+1; /* 1/4 vertical face 1*/3000 penta_node_ids[22]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+1; /* 1/4 vertical face 2*/3001 penta_node_ids[23]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+1; /* 1/4 vertical face 3*/3002 penta_node_ids[24]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+2; /* 2/4 vertical face 1*/3003 penta_node_ids[25]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+2; /* 2/4 vertical face 2*/3004 penta_node_ids[26]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+2; /* 2/4 vertical face 3*/3005 penta_node_ids[27]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+3; /* 3/4 vertical face 1*/3006 penta_node_ids[28]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+3; /* 3/4 vertical face 2*/3007 penta_node_ids[29]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+3; /* 3/4 vertical face 3*/2978 penta_node_ids[ 0]=iomodel->elements[6*index+0]; /*Vertex 1*/ 2979 penta_node_ids[ 1]=iomodel->elements[6*index+1]; /*Vertex 2*/ 2980 penta_node_ids[ 2]=iomodel->elements[6*index+2]; /*Vertex 3*/ 2981 penta_node_ids[ 3]=iomodel->elements[6*index+3]; /*Vertex 4*/ 2982 penta_node_ids[ 4]=iomodel->elements[6*index+4]; /*Vertex 5*/ 2983 penta_node_ids[ 5]=iomodel->elements[6*index+5]; /*Vertex 6*/ 2984 penta_node_ids[ 6]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/ 2985 penta_node_ids[ 7]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/ 2986 penta_node_ids[ 8]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/ 2987 penta_node_ids[ 9]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/ 2988 penta_node_ids[10]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/ 2989 penta_node_ids[11]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/ 2990 penta_node_ids[12]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/ 2991 penta_node_ids[13]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/ 2992 penta_node_ids[14]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/ 2993 penta_node_ids[15]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/ 2994 penta_node_ids[16]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/ 2995 penta_node_ids[17]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/ 2996 penta_node_ids[18]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 3/4 vertical edge 1*/ 2997 penta_node_ids[19]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 3/4 vertical edge 2*/ 2998 penta_node_ids[20]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 3/4 vertical edge 3*/ 2999 penta_node_ids[21]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+1; /* 1/4 vertical face 1*/ 3000 penta_node_ids[22]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+1; /* 1/4 vertical face 2*/ 3001 penta_node_ids[23]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+1; /* 1/4 vertical face 3*/ 3002 penta_node_ids[24]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+2; /* 2/4 vertical face 1*/ 3003 penta_node_ids[25]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+2; /* 2/4 vertical face 2*/ 3004 penta_node_ids[26]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+2; /* 2/4 vertical face 3*/ 3005 penta_node_ids[27]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+3; /* 3/4 vertical face 1*/ 3006 penta_node_ids[28]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+3; /* 3/4 vertical face 2*/ 3007 penta_node_ids[29]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+3; /* 3/4 vertical face 3*/ 3008 3008 break; 3009 3009 case P2Enum: 3010 3010 numnodes = 18; 3011 3011 penta_node_ids = xNew<int>(numnodes); 3012 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3013 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3014 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3015 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3016 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3017 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3018 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;3019 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;3020 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;3021 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;3022 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;3023 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;3024 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;3025 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;3026 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;3027 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;3028 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;3029 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;3012 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3013 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3014 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3015 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3016 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3017 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3018 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 3019 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 3020 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 3021 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 3022 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 3023 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 3024 penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 3025 penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 3026 penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 3027 penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1; 3028 penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1; 3029 penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1; 3030 3030 break; 3031 3031 case P2bubbleEnum: case P2bubblecondensedEnum: 3032 3032 numnodes = 19; 3033 3033 penta_node_ids = xNew<int>(numnodes); 3034 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3035 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3036 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3037 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3038 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3039 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3040 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;3041 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;3042 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;3043 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;3044 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;3045 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;3046 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;3047 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;3048 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;3049 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;3050 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;3051 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;3052 penta_node_ids[18]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;3034 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3035 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3036 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3037 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3038 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3039 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3040 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 3041 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 3042 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 3043 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 3044 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 3045 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 3046 penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 3047 penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 3048 penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 3049 penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1; 3050 penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1; 3051 penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1; 3052 penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1; 3053 3053 break; 3054 3054 case P1P1Enum: case P1P1GLSEnum: 3055 3055 numnodes = 12; 3056 3056 penta_node_ids = xNew<int>(numnodes); 3057 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3058 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3059 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3060 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3061 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3062 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3063 3064 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[6*index+0];3065 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[6*index+1];3066 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[6*index+2];3067 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[6*index+3];3068 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[6*index+4];3069 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[6*index+5];3057 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3058 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3059 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3060 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3061 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3062 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3063 3064 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elements[6*index+0]; 3065 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elements[6*index+1]; 3066 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elements[6*index+2]; 3067 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elements[6*index+3]; 3068 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elements[6*index+4]; 3069 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elements[6*index+5]; 3070 3070 break; 3071 3071 case MINIEnum: case MINIcondensedEnum: 3072 3072 numnodes = 13; 3073 3073 penta_node_ids = xNew<int>(numnodes); 3074 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3075 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3076 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3077 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3078 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3079 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3080 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+index+1;3081 3082 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+0];3083 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+1];3084 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+2];3085 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+3];3086 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+4];3087 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+5];3074 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3075 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3076 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3077 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3078 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3079 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3080 penta_node_ids[ 6]=iomodel->numberofvertices+index+1; 3081 3082 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+0]; 3083 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+1]; 3084 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+2]; 3085 penta_node_ids[10]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+3]; 3086 penta_node_ids[11]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+4]; 3087 penta_node_ids[12]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+5]; 3088 3088 break; 3089 3089 case TaylorHoodEnum: 3090 3090 numnodes = 24; 3091 3091 penta_node_ids = xNew<int>(numnodes); 3092 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3093 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3094 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3095 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3096 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3097 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3098 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;3099 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;3100 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;3101 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;3102 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;3103 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;3104 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;3105 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;3106 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;3107 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;3108 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;3109 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;3110 3111 penta_node_ids[18]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+0];3112 penta_node_ids[19]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+1];3113 penta_node_ids[20]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+2];3114 penta_node_ids[21]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+3];3115 penta_node_ids[22]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+4];3116 penta_node_ids[23]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+5];3092 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3093 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3094 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3095 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3096 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3097 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3098 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 3099 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 3100 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 3101 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 3102 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 3103 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 3104 penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 3105 penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 3106 penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 3107 penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1; 3108 penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1; 3109 penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1; 3110 3111 penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+0]; 3112 penta_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+1]; 3113 penta_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+2]; 3114 penta_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+3]; 3115 penta_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+4]; 3116 penta_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->elements[6*index+5]; 3117 3117 break; 3118 3118 case LATaylorHoodEnum: 3119 3119 numnodes = 18; 3120 3120 penta_node_ids = xNew<int>(numnodes); 3121 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3122 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3123 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3124 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3125 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3126 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3127 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;3128 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;3129 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;3130 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;3131 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;3132 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;3133 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;3134 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;3135 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;3136 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;3137 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;3138 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;3121 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3122 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3123 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3124 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3125 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3126 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3127 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 3128 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 3129 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 3130 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 3131 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 3132 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 3133 penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 3134 penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 3135 penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 3136 penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1; 3137 penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1; 3138 penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1; 3139 3139 break; 3140 3140 case OneLayerP4zEnum: 3141 3141 numnodes = 30+6; 3142 3142 penta_node_ids = xNew<int>(numnodes); 3143 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0]; /*Vertex 1*/3144 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1]; /*Vertex 2*/3145 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2]; /*Vertex 3*/3146 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3]; /*Vertex 4*/3147 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4]; /*Vertex 5*/3148 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5]; /*Vertex 6*/3149 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/3150 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/3151 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/3152 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/3153 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/3154 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/3155 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/3156 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/3157 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/3158 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/3159 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/3160 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/3161 penta_node_ids[18]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 2/4 vertical edge 1*/3162 penta_node_ids[19]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 2/4 vertical edge 2*/3163 penta_node_ids[20]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 2/4 vertical edge 3*/3164 penta_node_ids[21]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+1; /* 1/4 vertical face 1*/3165 penta_node_ids[22]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+1; /* 1/4 vertical face 2*/3166 penta_node_ids[23]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+1; /* 1/4 vertical face 3*/3167 penta_node_ids[24]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+2; /* 2/4 vertical face 1*/3168 penta_node_ids[25]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+2; /* 2/4 vertical face 2*/3169 penta_node_ids[26]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+2; /* 2/4 vertical face 3*/3170 penta_node_ids[27]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+3; /* 3/4 vertical face 1*/3171 penta_node_ids[28]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+3; /* 3/4 vertical face 2*/3172 penta_node_ids[29]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+3; /* 3/4 vertical face 3*/3173 3174 penta_node_ids[30]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+0];3175 penta_node_ids[31]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+1];3176 penta_node_ids[32]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+2];3177 penta_node_ids[33]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+3];3178 penta_node_ids[34]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+4];3179 penta_node_ids[35]=iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+5];3143 penta_node_ids[ 0]=iomodel->elements[6*index+0]; /*Vertex 1*/ 3144 penta_node_ids[ 1]=iomodel->elements[6*index+1]; /*Vertex 2*/ 3145 penta_node_ids[ 2]=iomodel->elements[6*index+2]; /*Vertex 3*/ 3146 penta_node_ids[ 3]=iomodel->elements[6*index+3]; /*Vertex 4*/ 3147 penta_node_ids[ 4]=iomodel->elements[6*index+4]; /*Vertex 5*/ 3148 penta_node_ids[ 5]=iomodel->elements[6*index+5]; /*Vertex 6*/ 3149 penta_node_ids[ 6]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/ 3150 penta_node_ids[ 7]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/ 3151 penta_node_ids[ 8]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/ 3152 penta_node_ids[ 9]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/ 3153 penta_node_ids[10]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/ 3154 penta_node_ids[11]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/ 3155 penta_node_ids[12]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/ 3156 penta_node_ids[13]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/ 3157 penta_node_ids[14]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/ 3158 penta_node_ids[15]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/ 3159 penta_node_ids[16]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/ 3160 penta_node_ids[17]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/ 3161 penta_node_ids[18]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 2/4 vertical edge 1*/ 3162 penta_node_ids[19]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 2/4 vertical edge 2*/ 3163 penta_node_ids[20]=iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 2/4 vertical edge 3*/ 3164 penta_node_ids[21]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+1; /* 1/4 vertical face 1*/ 3165 penta_node_ids[22]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+1; /* 1/4 vertical face 2*/ 3166 penta_node_ids[23]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+1; /* 1/4 vertical face 3*/ 3167 penta_node_ids[24]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+2; /* 2/4 vertical face 1*/ 3168 penta_node_ids[25]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+2; /* 2/4 vertical face 2*/ 3169 penta_node_ids[26]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+2; /* 2/4 vertical face 3*/ 3170 penta_node_ids[27]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+3; /* 3/4 vertical face 1*/ 3171 penta_node_ids[28]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+3; /* 3/4 vertical face 2*/ 3172 penta_node_ids[29]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+3; /* 3/4 vertical face 3*/ 3173 3174 penta_node_ids[30]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+0]; 3175 penta_node_ids[31]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+1]; 3176 penta_node_ids[32]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+2]; 3177 penta_node_ids[33]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+3]; 3178 penta_node_ids[34]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+4]; 3179 penta_node_ids[35]=iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->numberoffaces+iomodel->elements[6*index+5]; 3180 3180 break; 3181 3181 case CrouzeixRaviartEnum: 3182 3182 numnodes = 25; 3183 3183 penta_node_ids = xNew<int>(numnodes); 3184 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3185 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3186 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3187 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3188 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3189 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3190 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;3191 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;3192 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;3193 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;3194 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;3195 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;3196 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;3197 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;3198 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;3199 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;3200 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;3201 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;3202 penta_node_ids[18]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;3203 3204 penta_node_ids[19]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+1;3205 penta_node_ids[20]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+2;3206 penta_node_ids[21]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+3;3207 penta_node_ids[22]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+4;3208 penta_node_ids[23]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+5;3209 penta_node_ids[24]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+6;3184 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3185 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3186 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3187 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3188 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3189 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3190 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 3191 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 3192 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 3193 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 3194 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 3195 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 3196 penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 3197 penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 3198 penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 3199 penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1; 3200 penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1; 3201 penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1; 3202 penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1; 3203 3204 penta_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+1; 3205 penta_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+2; 3206 penta_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+3; 3207 penta_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+4; 3208 penta_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+5; 3209 penta_node_ids[24]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+6; 3210 3210 break; 3211 3211 case LACrouzeixRaviartEnum: 3212 3212 numnodes = 19; 3213 3213 penta_node_ids = xNew<int>(numnodes); 3214 penta_node_ids[ 0]=iomodel-> nodecounter+iomodel->elements[6*index+0];3215 penta_node_ids[ 1]=iomodel-> nodecounter+iomodel->elements[6*index+1];3216 penta_node_ids[ 2]=iomodel-> nodecounter+iomodel->elements[6*index+2];3217 penta_node_ids[ 3]=iomodel-> nodecounter+iomodel->elements[6*index+3];3218 penta_node_ids[ 4]=iomodel-> nodecounter+iomodel->elements[6*index+4];3219 penta_node_ids[ 5]=iomodel-> nodecounter+iomodel->elements[6*index+5];3220 penta_node_ids[ 6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;3221 penta_node_ids[ 7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;3222 penta_node_ids[ 8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;3223 penta_node_ids[ 9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;3224 penta_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;3225 penta_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;3226 penta_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;3227 penta_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;3228 penta_node_ids[14]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;3229 penta_node_ids[15]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;3230 penta_node_ids[16]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;3231 penta_node_ids[17]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;3232 penta_node_ids[18]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;3214 penta_node_ids[ 0]=iomodel->elements[6*index+0]; 3215 penta_node_ids[ 1]=iomodel->elements[6*index+1]; 3216 penta_node_ids[ 2]=iomodel->elements[6*index+2]; 3217 penta_node_ids[ 3]=iomodel->elements[6*index+3]; 3218 penta_node_ids[ 4]=iomodel->elements[6*index+4]; 3219 penta_node_ids[ 5]=iomodel->elements[6*index+5]; 3220 penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; 3221 penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; 3222 penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; 3223 penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; 3224 penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; 3225 penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; 3226 penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; 3227 penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; 3228 penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; 3229 penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1; 3230 penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1; 3231 penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1; 3232 penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1; 3233 3233 break; 3234 3234 default: -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp ¶
r23169 r23532 917 917 numnodes = 4; 918 918 tetra_node_ids = xNew<int>(numnodes); 919 tetra_node_ids[0]=iomodel-> nodecounter+iomodel->elements[4*index+0];920 tetra_node_ids[1]=iomodel-> nodecounter+iomodel->elements[4*index+1];921 tetra_node_ids[2]=iomodel-> nodecounter+iomodel->elements[4*index+2];922 tetra_node_ids[3]=iomodel-> nodecounter+iomodel->elements[4*index+3];919 tetra_node_ids[0]=iomodel->elements[4*index+0]; 920 tetra_node_ids[1]=iomodel->elements[4*index+1]; 921 tetra_node_ids[2]=iomodel->elements[4*index+2]; 922 tetra_node_ids[3]=iomodel->elements[4*index+3]; 923 923 break; 924 924 case P1bubbleEnum: case P1bubblecondensedEnum: 925 925 numnodes = 5; 926 926 tetra_node_ids = xNew<int>(numnodes); 927 tetra_node_ids[0]=iomodel-> nodecounter+iomodel->elements[4*index+0];928 tetra_node_ids[1]=iomodel-> nodecounter+iomodel->elements[4*index+1];929 tetra_node_ids[2]=iomodel-> nodecounter+iomodel->elements[4*index+2];930 tetra_node_ids[3]=iomodel-> nodecounter+iomodel->elements[4*index+3];931 tetra_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+index+1;927 tetra_node_ids[0]=iomodel->elements[4*index+0]; 928 tetra_node_ids[1]=iomodel->elements[4*index+1]; 929 tetra_node_ids[2]=iomodel->elements[4*index+2]; 930 tetra_node_ids[3]=iomodel->elements[4*index+3]; 931 tetra_node_ids[4]=iomodel->numberofvertices+index+1; 932 932 break; 933 933 case P2Enum: 934 934 numnodes = 10; 935 935 tetra_node_ids = xNew<int>(numnodes); 936 tetra_node_ids[0]=iomodel-> nodecounter+iomodel->elements[4*index+0];937 tetra_node_ids[1]=iomodel-> nodecounter+iomodel->elements[4*index+1];938 tetra_node_ids[2]=iomodel-> nodecounter+iomodel->elements[4*index+2];939 tetra_node_ids[3]=iomodel-> nodecounter+iomodel->elements[4*index+3];940 tetra_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;941 tetra_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;942 tetra_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;943 tetra_node_ids[7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;944 tetra_node_ids[8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;945 tetra_node_ids[9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;936 tetra_node_ids[0]=iomodel->elements[4*index+0]; 937 tetra_node_ids[1]=iomodel->elements[4*index+1]; 938 tetra_node_ids[2]=iomodel->elements[4*index+2]; 939 tetra_node_ids[3]=iomodel->elements[4*index+3]; 940 tetra_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1; 941 tetra_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1; 942 tetra_node_ids[6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1; 943 tetra_node_ids[7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1; 944 tetra_node_ids[8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1; 945 tetra_node_ids[9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1; 946 946 break; 947 947 case MINIEnum: case MINIcondensedEnum: 948 948 numnodes = 9; 949 949 tetra_node_ids = xNew<int>(numnodes); 950 tetra_node_ids[0]=iomodel-> nodecounter+iomodel->elements[4*index+0];951 tetra_node_ids[1]=iomodel-> nodecounter+iomodel->elements[4*index+1];952 tetra_node_ids[2]=iomodel-> nodecounter+iomodel->elements[4*index+2];953 tetra_node_ids[3]=iomodel-> nodecounter+iomodel->elements[4*index+3];954 tetra_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+index+1;955 956 tetra_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+0];957 tetra_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+1];958 tetra_node_ids[7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+2];959 tetra_node_ids[8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+3];950 tetra_node_ids[0]=iomodel->elements[4*index+0]; 951 tetra_node_ids[1]=iomodel->elements[4*index+1]; 952 tetra_node_ids[2]=iomodel->elements[4*index+2]; 953 tetra_node_ids[3]=iomodel->elements[4*index+3]; 954 tetra_node_ids[4]=iomodel->numberofvertices+index+1; 955 956 tetra_node_ids[5]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+0]; 957 tetra_node_ids[6]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+1]; 958 tetra_node_ids[7]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+2]; 959 tetra_node_ids[8]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+3]; 960 960 break; 961 961 case TaylorHoodEnum: … … 963 963 numnodes = 14; 964 964 tetra_node_ids = xNew<int>(numnodes); 965 tetra_node_ids[0]=iomodel-> nodecounter+iomodel->elements[4*index+0];966 tetra_node_ids[1]=iomodel-> nodecounter+iomodel->elements[4*index+1];967 tetra_node_ids[2]=iomodel-> nodecounter+iomodel->elements[4*index+2];968 tetra_node_ids[3]=iomodel-> nodecounter+iomodel->elements[4*index+3];969 tetra_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;970 tetra_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;971 tetra_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;972 tetra_node_ids[7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;973 tetra_node_ids[8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;974 tetra_node_ids[9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;975 976 tetra_node_ids[10]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+0];977 tetra_node_ids[11]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+1];978 tetra_node_ids[12]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+2];979 tetra_node_ids[13]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+3];965 tetra_node_ids[0]=iomodel->elements[4*index+0]; 966 tetra_node_ids[1]=iomodel->elements[4*index+1]; 967 tetra_node_ids[2]=iomodel->elements[4*index+2]; 968 tetra_node_ids[3]=iomodel->elements[4*index+3]; 969 tetra_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1; 970 tetra_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1; 971 tetra_node_ids[6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1; 972 tetra_node_ids[7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1; 973 tetra_node_ids[8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1; 974 tetra_node_ids[9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1; 975 976 tetra_node_ids[10]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+0]; 977 tetra_node_ids[11]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+1]; 978 tetra_node_ids[12]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+2]; 979 tetra_node_ids[13]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+3]; 980 980 break; 981 981 case LATaylorHoodEnum: 982 982 numnodes = 10; 983 983 tetra_node_ids = xNew<int>(numnodes); 984 tetra_node_ids[0]=iomodel-> nodecounter+iomodel->elements[4*index+0];985 tetra_node_ids[1]=iomodel-> nodecounter+iomodel->elements[4*index+1];986 tetra_node_ids[2]=iomodel-> nodecounter+iomodel->elements[4*index+2];987 tetra_node_ids[3]=iomodel-> nodecounter+iomodel->elements[4*index+3];988 tetra_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;989 tetra_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;990 tetra_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;991 tetra_node_ids[7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;992 tetra_node_ids[8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;993 tetra_node_ids[9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;984 tetra_node_ids[0]=iomodel->elements[4*index+0]; 985 tetra_node_ids[1]=iomodel->elements[4*index+1]; 986 tetra_node_ids[2]=iomodel->elements[4*index+2]; 987 tetra_node_ids[3]=iomodel->elements[4*index+3]; 988 tetra_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1; 989 tetra_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1; 990 tetra_node_ids[6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1; 991 tetra_node_ids[7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1; 992 tetra_node_ids[8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1; 993 tetra_node_ids[9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1; 994 994 break; 995 995 default: -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp ¶
r23173 r23532 3747 3747 numnodes = 3; 3748 3748 tria_node_ids = xNew<int>(numnodes); 3749 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3750 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3751 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3749 tria_node_ids[0]=iomodel->elements[3*index+0]; 3750 tria_node_ids[1]=iomodel->elements[3*index+1]; 3751 tria_node_ids[2]=iomodel->elements[3*index+2]; 3752 3752 break; 3753 3753 case P1DGEnum: 3754 3754 numnodes = 3; 3755 3755 tria_node_ids = xNew<int>(numnodes); 3756 tria_node_ids[0]= iomodel->nodecounter+3*index+1;3757 tria_node_ids[1]= iomodel->nodecounter+3*index+2;3758 tria_node_ids[2]= iomodel->nodecounter+3*index+3;3756 tria_node_ids[0]=3*index+1; 3757 tria_node_ids[1]=3*index+2; 3758 tria_node_ids[2]=3*index+3; 3759 3759 break; 3760 3760 case P1bubbleEnum: case P1bubblecondensedEnum: 3761 3761 numnodes = 4; 3762 3762 tria_node_ids = xNew<int>(numnodes); 3763 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3764 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3765 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3766 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+index+1;3763 tria_node_ids[0]=iomodel->elements[3*index+0]; 3764 tria_node_ids[1]=iomodel->elements[3*index+1]; 3765 tria_node_ids[2]=iomodel->elements[3*index+2]; 3766 tria_node_ids[3]=iomodel->numberofvertices+index+1; 3767 3767 break; 3768 3768 case P2Enum: 3769 3769 numnodes = 6; 3770 3770 tria_node_ids = xNew<int>(numnodes); 3771 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3772 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3773 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3774 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;3775 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;3776 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;3771 tria_node_ids[0]=iomodel->elements[3*index+0]; 3772 tria_node_ids[1]=iomodel->elements[3*index+1]; 3773 tria_node_ids[2]=iomodel->elements[3*index+2]; 3774 tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1; 3775 tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1; 3776 tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1; 3777 3777 break; 3778 3778 case P2bubbleEnum: case P2bubblecondensedEnum: 3779 3779 numnodes = 7; 3780 3780 tria_node_ids = xNew<int>(numnodes); 3781 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3782 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3783 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3784 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;3785 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;3786 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;3787 tria_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1;3781 tria_node_ids[0]=iomodel->elements[3*index+0]; 3782 tria_node_ids[1]=iomodel->elements[3*index+1]; 3783 tria_node_ids[2]=iomodel->elements[3*index+2]; 3784 tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1; 3785 tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1; 3786 tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1; 3787 tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+index+1; 3788 3788 break; 3789 3789 case P1P1Enum: case P1P1GLSEnum: 3790 3790 numnodes = 6; 3791 3791 tria_node_ids = xNew<int>(numnodes); 3792 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3793 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3794 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3795 3796 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[3*index+0];3797 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[3*index+1];3798 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elements[3*index+2];3792 tria_node_ids[0]=iomodel->elements[3*index+0]; 3793 tria_node_ids[1]=iomodel->elements[3*index+1]; 3794 tria_node_ids[2]=iomodel->elements[3*index+2]; 3795 3796 tria_node_ids[3]=iomodel->numberofvertices+iomodel->elements[3*index+0]; 3797 tria_node_ids[4]=iomodel->numberofvertices+iomodel->elements[3*index+1]; 3798 tria_node_ids[5]=iomodel->numberofvertices+iomodel->elements[3*index+2]; 3799 3799 break; 3800 3800 case MINIEnum: case MINIcondensedEnum: 3801 3801 numnodes = 7; 3802 3802 tria_node_ids = xNew<int>(numnodes); 3803 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3804 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3805 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3806 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+index+1;3807 3808 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+0];3809 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+1];3810 tria_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+2];3803 tria_node_ids[0]=iomodel->elements[3*index+0]; 3804 tria_node_ids[1]=iomodel->elements[3*index+1]; 3805 tria_node_ids[2]=iomodel->elements[3*index+2]; 3806 tria_node_ids[3]=iomodel->numberofvertices+index+1; 3807 3808 tria_node_ids[4]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+0]; 3809 tria_node_ids[5]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+1]; 3810 tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+2]; 3811 3811 break; 3812 3812 case TaylorHoodEnum: … … 3814 3814 numnodes = 9; 3815 3815 tria_node_ids = xNew<int>(numnodes); 3816 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3817 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3818 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3819 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;3820 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;3821 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;3822 3823 tria_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+0];3824 tria_node_ids[7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+1];3825 tria_node_ids[8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+2];3816 tria_node_ids[0]=iomodel->elements[3*index+0]; 3817 tria_node_ids[1]=iomodel->elements[3*index+1]; 3818 tria_node_ids[2]=iomodel->elements[3*index+2]; 3819 tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1; 3820 tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1; 3821 tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1; 3822 3823 tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+0]; 3824 tria_node_ids[7]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+1]; 3825 tria_node_ids[8]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+2]; 3826 3826 break; 3827 3827 case LATaylorHoodEnum: 3828 3828 numnodes = 6; 3829 3829 tria_node_ids = xNew<int>(numnodes); 3830 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3831 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3832 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3833 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;3834 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;3835 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;3830 tria_node_ids[0]=iomodel->elements[3*index+0]; 3831 tria_node_ids[1]=iomodel->elements[3*index+1]; 3832 tria_node_ids[2]=iomodel->elements[3*index+2]; 3833 tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1; 3834 tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1; 3835 tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1; 3836 3836 break; 3837 3837 case CrouzeixRaviartEnum: 3838 3838 numnodes = 10; 3839 3839 tria_node_ids = xNew<int>(numnodes); 3840 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3841 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3842 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3843 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;3844 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;3845 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;3846 tria_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1;3847 3848 tria_node_ids[7]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+1;3849 tria_node_ids[8]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+2;3850 tria_node_ids[9]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+3;3840 tria_node_ids[0]=iomodel->elements[3*index+0]; 3841 tria_node_ids[1]=iomodel->elements[3*index+1]; 3842 tria_node_ids[2]=iomodel->elements[3*index+2]; 3843 tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1; 3844 tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1; 3845 tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1; 3846 tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+index+1; 3847 3848 tria_node_ids[7]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+1; 3849 tria_node_ids[8]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+2; 3850 tria_node_ids[9]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+3; 3851 3851 break; 3852 3852 case LACrouzeixRaviartEnum: 3853 3853 numnodes = 7; 3854 3854 tria_node_ids = xNew<int>(numnodes); 3855 tria_node_ids[0]=iomodel-> nodecounter+iomodel->elements[3*index+0];3856 tria_node_ids[1]=iomodel-> nodecounter+iomodel->elements[3*index+1];3857 tria_node_ids[2]=iomodel-> nodecounter+iomodel->elements[3*index+2];3858 tria_node_ids[3]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;3859 tria_node_ids[4]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;3860 tria_node_ids[5]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;3861 tria_node_ids[6]=iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+index+1;3855 tria_node_ids[0]=iomodel->elements[3*index+0]; 3856 tria_node_ids[1]=iomodel->elements[3*index+1]; 3857 tria_node_ids[2]=iomodel->elements[3*index+2]; 3858 tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1; 3859 tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1; 3860 tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1; 3861 tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+index+1; 3862 3862 break; 3863 3863 default: -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp ¶
r23528 r23532 2650 2650 Nodes** new_nodes_list = xNew<Nodes*>(this->nummodels); 2651 2651 2652 int nodecounter =0;2653 int constraintcounter=0;2654 2652 this->analysis_counter=-1; 2655 2653 for(int i=0;i<this->nummodels;i++){//create nodes for each analysis in analysis_type_list … … 2664 2662 if(analysis_enum==StressbalanceVerticalAnalysisEnum) continue; 2665 2663 2666 this->CreateNodes(newnumberofvertices,my_vertices,nodecounter,analysis_enum,new_nodes_list[i]); 2667 this->CreateConstraints(new_vertices,nodecounter,constraintcounter,analysis_enum,new_constraints_list[i]); 2668 this->UpdateElements(newnumberofelements,newelementslist,my_elements,nodecounter,i,new_elements); 2669 2670 if(new_nodes_list[i]->Size()) nodecounter=new_nodes_list[i]->MaximumId(); 2671 constraintcounter = new_constraints_list[i]->NumberOfConstraints(); 2672 /*Make sure nodecounter is at least 0 (if no node exists, maxid will be -1*/ 2673 _assert_(nodecounter>=0); 2664 this->CreateNodes(newnumberofvertices,my_vertices,analysis_enum,new_nodes_list[i]); 2665 this->CreateConstraints(new_vertices,analysis_enum,new_constraints_list[i]); 2666 this->UpdateElements(newnumberofelements,newelementslist,my_elements,i,new_elements); 2674 2667 2675 2668 new_constraints_list[i]->Presort(); … … 3267 3260 } 3268 3261 /*}}}*/ 3269 void FemModel::CreateNodes(int newnumberofvertices,int* my_vertices,int nodecounter,intanalysis_enum,Nodes* nodes){/*{{{*/3262 void FemModel::CreateNodes(int newnumberofvertices,int* my_vertices,int analysis_enum,Nodes* nodes){/*{{{*/ 3270 3263 3271 3264 int lid=0; … … 3276 3269 3277 3270 /*id: */ 3278 newnode->id= nodecounter+j+1;3271 newnode->id=j+1; 3279 3272 newnode->sid=j; 3280 3273 newnode->lid=lid++; … … 3475 3468 } 3476 3469 /*}}}*/ 3477 void FemModel::CreateConstraints(Vertices* newfemmodel_vertices,int nodecounter,int constraintcounter,intanalysis_enum,Constraints* newfemmodel_constraints){/*{{{*/3470 void FemModel::CreateConstraints(Vertices* newfemmodel_vertices,int analysis_enum,Constraints* newfemmodel_constraints){/*{{{*/ 3478 3471 3479 3472 /*ATTENTION: JUST SPCVX AND SPCVY*/ … … 3551 3544 /*spcvx*/ 3552 3545 if(!xIsNan<IssmDouble>(newspc[i*numberofcols]) && newspc[i*numberofcols+dofpernode]>(1-eps)){ 3553 newfemmodel_constraints->AddObject(new SpcStatic(co nstraintcounter+count+1,nodecounter+vertex->Sid()+1,0,newspc[i*numberofcols],analysis_enum));3546 newfemmodel_constraints->AddObject(new SpcStatic(count+1,vertex->Sid()+1,0,newspc[i*numberofcols],analysis_enum)); 3554 3547 //add count'th spc, on node i+1, setting dof 1 to vx. 3555 3548 count++; … … 3561 3554 /*spcvy*/ 3562 3555 if(!xIsNan<IssmDouble>(newspc[i*numberofcols+1]) && newspc[i*numberofcols+dofpernode+1]>(1-eps) ){ 3563 newfemmodel_constraints->AddObject(new SpcStatic(co nstraintcounter+count+1,nodecounter+vertex->Sid()+1,1,newspc[i*numberofcols+1],analysis_enum));3556 newfemmodel_constraints->AddObject(new SpcStatic(count+1,vertex->Sid()+1,1,newspc[i*numberofcols+1],analysis_enum)); 3564 3557 //add count'th spc, on node i+1, setting dof 1 to vx. 3565 3558 count++; … … 3575 3568 } 3576 3569 /*}}}*/ 3577 void FemModel::UpdateElements(int newnumberofelements,int* newelementslist,bool* my_elements,int nodecounter,intanalysis_counter,Elements* newelements){/*{{{*/3570 void FemModel::UpdateElements(int newnumberofelements,int* newelementslist,bool* my_elements,int analysis_counter,Elements* newelements){/*{{{*/ 3578 3571 3579 3572 /*newelementslist is in Matlab indexing*/ … … 3589 3582 int numnodes=3; 3590 3583 int* tria_node_ids=xNew<int>(numnodes); 3591 tria_node_ids[0]=n odecounter+newelementslist[3*iel+0]; //matlab indexing3592 tria_node_ids[1]=n odecounter+newelementslist[3*iel+1]; //matlab indexing3593 tria_node_ids[2]=n odecounter+newelementslist[3*iel+2]; //matlab indexing3584 tria_node_ids[0]=newelementslist[3*iel+0]; //matlab indexing 3585 tria_node_ids[1]=newelementslist[3*iel+1]; //matlab indexing 3586 tria_node_ids[2]=newelementslist[3*iel+2]; //matlab indexing 3594 3587 tria->SetHookNodes(tria_node_ids,numnodes,analysis_counter); tria->nodes=NULL; 3595 3588 xDelete<int>(tria_node_ids); -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.h ¶
r23501 r23532 182 182 void CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements); 183 183 void CreateMaterials(int newnumberofelements,bool* my_elements,Materials* materials); 184 void CreateNodes(int newnumberofvertices,int* my_vertices,int nodecounter,intanalysis_enum,Nodes* nodes);185 void CreateConstraints(Vertices* newfemmodel_vertices,int nodecounter,int constraintcounter,intanalysis_enum,Constraints* newfemmodel_constraints);184 void CreateNodes(int newnumberofvertices,int* my_vertices,int analysis_enum,Nodes* nodes); 185 void CreateConstraints(Vertices* newfemmodel_vertices,int analysis_enum,Constraints* newfemmodel_constraints); 186 186 void GetInputs(int* pnumP0inputs,IssmDouble** pP0inputs,int** pP0input_enums,int** pP0input_interp,int* pnumP1inputs,IssmDouble** pP1inputs,int** pP1input_enums,int** pP1input_interp); 187 187 void InterpolateInputs(Vertices* newfemmodel_vertices,Elements* newfemmodel_elements); 188 void UpdateElements(int newnumberofelements,int* newelementslist,bool* my_elements,int nodecounter,intanalysis_counter,Elements* newelements);188 void UpdateElements(int newnumberofelements,int* newelementslist,bool* my_elements,int analysis_counter,Elements* newelements); 189 189 void ElementsAndVerticesPartitioning(int& newnumberofvertices,int& newnumberofelements,int& elementswidth,int* newelementslist,bool** pmy_elements,int** pmy_vertices); 190 190 void WriteMeshInResults(void); -
TabularUnified issm/trunk-jpl/src/c/classes/IoModel.cpp ¶
r23513 r23532 155 155 this->singlenodetoelementconnectivity=NULL; 156 156 this->numbernodetoelementconnectivity=NULL; 157 158 this->nodecounter=0; 159 this->loadcounter=0; 160 this->constraintcounter=0; 161 } 162 /*}}}*/ 157 }/*}}}*/ 163 158 IoModel::IoModel(FILE* iomodel_handle,int solution_enum_in,bool trace,IssmPDouble* X){/*{{{*/ 164 159 … … 219 214 this->singlenodetoelementconnectivity = NULL; 220 215 this->numbernodetoelementconnectivity = NULL; 221 222 this->nodecounter=0; 223 this->loadcounter=0; 224 this->constraintcounter=0; 225 } 226 /*}}}*/ 216 }/*}}}*/ 227 217 IoModel::~IoModel(){/*{{{*/ 228 218 -
TabularUnified issm/trunk-jpl/src/c/classes/IoModel.h ¶
r23513 r23532 86 86 int *singlenodetoelementconnectivity; 87 87 88 /*Data to synchronize through low level object drivers: */89 int constraintcounter; //keep track of how many constraints are being created in each analysis90 int loadcounter; //keep track of how many loads are being created in each analysis91 int nodecounter; //keep track of how many nodes are being created in each analysis92 int matparcounter; //keep track of where we end up putting this object accessed by every element.93 94 88 /*Methods*/ 95 89 ~IoModel(); -
TabularUnified issm/trunk-jpl/src/c/classes/Loads/Moulin.cpp ¶
r23066 r23532 46 46 47 47 /*hooks: */ 48 pengrid_node_id=i omodel->nodecounter+index+1;48 pengrid_node_id=index+1; 49 49 pengrid_element_id=iomodel->singlenodetoelementconnectivity[index]; 50 50 _assert_(pengrid_element_id); -
TabularUnified issm/trunk-jpl/src/c/classes/Loads/Neumannflux.cpp ¶
r23066 r23532 44 44 45 45 /*2: Get the ids of the nodes*/ 46 neumannflux_node_ids[0]= iomodel->nodecounter+neumannflux_vertex_ids[0];47 neumannflux_node_ids[1]= iomodel->nodecounter+neumannflux_vertex_ids[1];46 neumannflux_node_ids[0]=neumannflux_vertex_ids[0]; 47 neumannflux_node_ids[1]=neumannflux_vertex_ids[1]; 48 48 49 49 /*Get element id*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp ¶
r20827 r23532 85 85 /*3: We have the id of the elements and the position of the vertices in the index 86 86 * we can compute their dofs!*/ 87 numericalflux_node_ids[0]= iomodel->nodecounter+3*(e1-1)+pos1;88 numericalflux_node_ids[1]= iomodel->nodecounter+3*(e1-1)+pos2;89 numericalflux_node_ids[2]= iomodel->nodecounter+3*(e2-1)+pos3;90 numericalflux_node_ids[3]= iomodel->nodecounter+3*(e2-1)+pos4;87 numericalflux_node_ids[0]=3*(e1-1)+pos1; 88 numericalflux_node_ids[1]=3*(e1-1)+pos2; 89 numericalflux_node_ids[2]=3*(e2-1)+pos3; 90 numericalflux_node_ids[3]=3*(e2-1)+pos4; 91 91 } 92 92 else{ … … 102 102 /*3: We have the id of the elements and the position of the vertices in the index 103 103 * we can compute their dofs!*/ 104 numericalflux_node_ids[0]= iomodel->nodecounter+3*(e1-1)+pos1;105 numericalflux_node_ids[1]= iomodel->nodecounter+3*(e1-1)+pos2;104 numericalflux_node_ids[0]=3*(e1-1)+pos1; 105 numericalflux_node_ids[1]=3*(e1-1)+pos2; 106 106 } 107 107 -
TabularUnified issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp ¶
r23524 r23532 51 51 52 52 /*hooks: */ 53 pengrid_node_id=i omodel->nodecounter+index+1;53 pengrid_node_id=index+1; 54 54 pengrid_element_id=iomodel->singlenodetoelementconnectivity[index]; 55 55 _assert_(pengrid_element_id); -
TabularUnified issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp ¶
r21049 r23532 60 60 61 61 /*hooks: */ 62 riftfront_node_ids[0]= iomodel->nodecounter+node1;63 riftfront_node_ids[1]= iomodel->nodecounter+node2;62 riftfront_node_ids[0]=node1; 63 riftfront_node_ids[1]=node2; 64 64 riftfront_elem_ids[0]=el1; 65 65 riftfront_elem_ids[1]=el2; -
TabularUnified issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp ¶
r23524 r23532 71 71 iomodel->FindConstant(&materials_type,"md.materials.type"); 72 72 73 this->mid = iomodel-> matparcounter;73 this->mid = iomodel->numberofelements+1; 74 74 75 75 switch(materials_type){ -
TabularUnified issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp ¶
r23184 r23532 54 54 55 55 /*intermediary: */ 56 int i,j, count,elementnbv,numfacevertices;56 int i,j,elementnbv,numfacevertices; 57 57 IssmDouble value; 58 IssmDouble *times 59 IssmDouble *values 60 bool spcpresent 58 IssmDouble *times = NULL; 59 IssmDouble *values = NULL; 60 bool spcpresent = false; 61 61 62 62 /*Higher-order finite elements*/ … … 113 113 } 114 114 115 count=0;115 int count=0; 116 116 if(M==iomodel->numberofvertices){ 117 117 switch(finite_element){ … … 120 120 if((iomodel->my_vertices[i])){ 121 121 if (!xIsNan<IssmDouble>(spcdata[i])){ 122 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));122 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 123 123 count++; 124 124 } … … 130 130 if((iomodel->my_vertices[i])){ 131 131 if (!xIsNan<IssmDouble>(spcdata[i])){ 132 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));132 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 133 133 count++; 134 134 } … … 140 140 v2 = iomodel->edges[3*i+1]-1; 141 141 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 142 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,142 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1, 143 143 dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type)); 144 144 count++; … … 157 157 value = value/reCast<IssmDouble>(numfacevertices); 158 158 if(!xIsNan<IssmDouble>(value)){ 159 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,160 iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,159 constraints->AddObject(new SpcStatic(count+1, 160 iomodel->numberofvertices+iomodel->numberofedges+i+1, 161 161 dof,value,analysis_type)); 162 162 count++; … … 171 171 if((iomodel->my_vertices[i])){ 172 172 if (!xIsNan<IssmDouble>(spcdata[i])){ 173 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));173 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 174 174 count++; 175 175 } … … 181 181 v2 = iomodel->edges[3*i+1]-1; 182 182 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 183 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,183 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1, 184 184 dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type)); 185 185 count++; … … 198 198 value = value/reCast<IssmDouble>(numfacevertices); 199 199 if(!xIsNan<IssmDouble>(value)){ 200 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,201 iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,200 constraints->AddObject(new SpcStatic(count+1, 201 iomodel->numberofvertices+iomodel->numberofedges+i+1, 202 202 dof,value,analysis_type)); 203 203 count++; … … 213 213 value = value/reCast<IssmDouble,int>(elementnbv+0); 214 214 if(!xIsNan<IssmDouble>(value)){ 215 int nodeid = iomodel->n odecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1;215 int nodeid = iomodel->numberofvertices+iomodel->numberofedges+i+1; 216 216 if(iomodel->meshelementtype==PentaEnum){ 217 217 nodeid += iomodel->numberoffaces; 218 218 } 219 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,nodeid,dof,value,analysis_type));219 constraints->AddObject(new SpcStatic(count+1,nodeid,dof,value,analysis_type)); 220 220 count++; 221 221 } … … 227 227 if((iomodel->my_vertices[i])){ 228 228 if (!xIsNan<IssmDouble>(spcdata[i])){ 229 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));229 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 230 230 count++; 231 231 } … … 238 238 v2 = iomodel->edges[3*i+1]-1; 239 239 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 240 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*i+1,240 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+3*i+1, 241 241 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 242 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+3*i+2,242 constraints->AddObject(new SpcStatic(count+2,iomodel->numberofvertices+3*i+2, 243 243 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 244 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+3*i+3,244 constraints->AddObject(new SpcStatic(count+3,iomodel->numberofvertices+3*i+3, 245 245 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 246 246 count=count+3; … … 253 253 v2 = iomodel->edges[3*i+1]-1; 254 254 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 255 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*i+1,255 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+3*i+1, 256 256 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 257 257 count=count+1; … … 270 270 value = value/reCast<IssmDouble>(numfacevertices); 271 271 if(!xIsNan<IssmDouble>(value)){ 272 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,273 iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+1,272 constraints->AddObject(new SpcStatic(count+1, 273 iomodel->numberofvertices+3*iomodel->numberofedges+3*i+1, 274 274 dof,value,analysis_type)); 275 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+2,276 iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+2,275 constraints->AddObject(new SpcStatic(count+2, 276 iomodel->numberofvertices+3*iomodel->numberofedges+3*i+2, 277 277 dof,value,analysis_type)); 278 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+3,279 iomodel->n odecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+3,278 constraints->AddObject(new SpcStatic(count+3, 279 iomodel->numberofvertices+3*iomodel->numberofedges+3*i+3, 280 280 dof,value,analysis_type)); 281 281 count=count+3; … … 289 289 if((iomodel->my_vertices[i])){ 290 290 if (!xIsNan<IssmDouble>(spcdata[i])){ 291 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));291 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 292 292 count++; 293 293 } … … 300 300 value = value/reCast<IssmDouble,int>(elementnbv+0); 301 301 if(!xIsNan<IssmDouble>(value)){ 302 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,302 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1, 303 303 dof,value,analysis_type)); 304 304 count++; … … 311 311 if((iomodel->my_vertices[i])){ 312 312 if (!xIsNan<IssmDouble>(spcdata[i])){ 313 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));313 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 314 314 count++; 315 315 } … … 321 321 if((iomodel->my_vertices[i])){ 322 322 if (!xIsNan<IssmDouble>(spcdata[i])){ 323 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));323 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 324 324 count++; 325 325 } … … 332 332 v2 = iomodel->edges[3*i+1]-1; 333 333 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 334 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,334 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1, 335 335 dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type)); 336 336 count++; … … 344 344 if((iomodel->my_vertices[i])){ 345 345 if (!xIsNan<IssmDouble>(spcdata[i])){ 346 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));346 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 347 347 count++; 348 348 } … … 355 355 v2 = iomodel->edges[3*i+1]-1; 356 356 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 357 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+1,357 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+2*i+1, 358 358 dof,2./3.*spcdata[v1]+1./3.*spcdata[v2],analysis_type)); 359 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+2*i+2,359 constraints->AddObject(new SpcStatic(count+2,iomodel->numberofvertices+2*i+2, 360 360 dof,1./3.*spcdata[v1]+2./3.*spcdata[v2],analysis_type)); 361 361 count=count+2; … … 369 369 if((iomodel->my_vertices[i])){ 370 370 if (!xIsNan<IssmDouble>(spcdata[i])){ 371 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));371 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 372 372 count++; 373 373 } … … 380 380 v2 = iomodel->edges[3*i+1]-1; 381 381 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 382 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*i+1,382 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+3*i+1, 383 383 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 384 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+3*i+2,384 constraints->AddObject(new SpcStatic(count+2,iomodel->numberofvertices+3*i+2, 385 385 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 386 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+3*i+3,386 constraints->AddObject(new SpcStatic(count+3,iomodel->numberofvertices+3*i+3, 387 387 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 388 388 count=count+3; … … 396 396 if((iomodel->my_vertices[i])){ 397 397 if (!xIsNan<IssmDouble>(spcdata[i])){ 398 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));398 constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type)); 399 399 count++; 400 400 } … … 407 407 v2 = iomodel->edges[3*i+1]-1; 408 408 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 409 constraints->AddObject(new SpcStatic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,409 constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1, 410 410 dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type)); 411 411 count++; … … 441 441 442 442 if(spcpresent){ 443 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));443 constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type)); 444 444 count++; 445 445 } … … 462 462 463 463 if(spcpresent){ 464 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));464 constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type)); 465 465 count++; 466 466 } … … 479 479 } 480 480 if(spcpresent){ 481 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,dof, 482 N,times,values,analysis_type)); 481 constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+i+1,dof,N,times,values,analysis_type)); 483 482 count++; 484 483 } … … 500 499 501 500 if(spcpresent){ 502 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));501 constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type)); 503 502 count++; 504 503 } … … 518 517 } 519 518 if(spcpresent){ 520 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,dof, 521 N,times,values,analysis_type)); 519 constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+i+1,dof,N,times,values,analysis_type)); 522 520 count++; 523 521 } … … 540 538 541 539 if(spcpresent){ 542 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));540 constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type)); 543 541 count++; 544 542 } … … 558 556 } 559 557 if(spcpresent){ 560 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+1,dof, 561 N,times,values,analysis_type)); 558 constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+2*i+1,dof,N,times,values,analysis_type)); 562 559 count++; 563 560 } … … 568 565 } 569 566 if(spcpresent){ 570 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+2,dof, 571 N,times,values,analysis_type)); 567 constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+2*i+2,dof,N,times,values,analysis_type)); 572 568 count++; 573 569 } … … 590 586 591 587 if(spcpresent){ 592 constraints->AddObject(new SpcTransient( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));588 constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type)); 593 589 count++; 594 590 } … … 608 604 } 609 605 if(spcpresent){ 610 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,dof, 611 N,times,values,analysis_type)); 606 constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+i+1,dof,N,times,values,analysis_type)); 612 607 count++; 613 608 } … … 625 620 } 626 621 627 /*Update counter now since we have added some constraints*/628 iomodel->constraintcounter = constraints->NumberOfConstraints();629 630 622 /*Free ressources:*/ 631 623 xDelete<IssmDouble>(times); … … 636 628 637 629 /*intermediary: */ 638 int i,j, count,elementnbv,numfacevertices;630 int i,j,elementnbv,numfacevertices; 639 631 IssmDouble value; 640 632 IssmDouble *times = NULL; … … 698 690 } 699 691 700 count=0;692 int count=0; 701 693 if(M==iomodel->numberofvertices){ 702 694 switch(finite_element){ … … 705 697 if((iomodel->my_vertices[i])){ 706 698 if (!xIsNan<IssmDouble>(spcdata[i])){ 707 constraints->AddObject(new SpcDynamic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,analysis_type));699 constraints->AddObject(new SpcDynamic(count+1,i+1,dof,analysis_type)); 708 700 count++; 709 701 } … … 715 707 if((iomodel->my_vertices[i])){ 716 708 if (!xIsNan<IssmDouble>(spcdata[i])){ 717 constraints->AddObject(new SpcDynamic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,analysis_type));709 constraints->AddObject(new SpcDynamic(count+1,i+1,dof,analysis_type)); 718 710 count++; 719 711 } … … 726 718 v2 = iomodel->edges[3*i+1]-1; 727 719 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 728 constraints->AddObject(new SpcDynamic( iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,720 constraints->AddObject(new SpcDynamic(count+1,iomodel->numberofvertices+i+1, 729 721 dof,analysis_type)); 730 722 count++; … … 738 730 if((iomodel->my_vertices[i])){ 739 731 if (!xIsNan<IssmDouble>(spcdata[i])){ 740 constraints->AddObject(new SpcDynamic( iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,analysis_type));732 constraints->AddObject(new SpcDynamic(count+1,i+1,dof,analysis_type)); 741 733 count++; 742 734 } … … 749 741 v2 = iomodel->edges[3*i+1]-1; 750 742 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 751 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+1, 752 dof,analysis_type)); 753 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+2*i+2, 754 dof,analysis_type)); 743 constraints->AddObject(new SpcDynamic(count+1,iomodel->numberofvertices+2*i+1,dof,analysis_type)); 744 constraints->AddObject(new SpcDynamic(count+2,iomodel->numberofvertices+2*i+2,dof,analysis_type)); 755 745 count=count+2; 756 746 } … … 767 757 } 768 758 769 /*Update counter now since we have added some constraints*/770 iomodel->constraintcounter = constraints->NumberOfConstraints();771 772 759 /*Free ressources:*/ 773 760 xDelete<IssmDouble>(times); -
TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp ¶
r23522 r23532 20 20 /*Did we already create the elements? : */ 21 21 _assert_(elements->Size()==0); 22 23 /*Setup matpar counter in iomodel before we call on element constructors: */24 iomodel->matparcounter=iomodel->numberofelements+1;25 22 26 23 /*Create elements*/ -
TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp ¶
r23505 r23532 14 14 int i,j,counter,vnodes,lid=0; 15 15 int numberoffaces,elementnbv; 16 int id0 = iomodel->nodecounter;17 16 bool *my_nodes = NULL; 18 17 Node *node = NULL; 19 18 19 int id0 = 0; 20 20 switch(finite_element){ 21 21 case P1Enum: … … 215 215 for(i=0;i<iomodel->numberofelements;i++){ 216 216 if(iomodel->my_elements[i]){ 217 nodes->AddObject(new Node(id0+i+1,id0-i omodel->nodecounter+i,lid++,0,iomodel,analysis,approximation));217 nodes->AddObject(new Node(id0+i+1,id0-i,lid++,0,iomodel,analysis,approximation)); 218 218 } 219 219 } … … 532 532 for(i=0;i<iomodel->numberofelements;i++){ 533 533 if(iomodel->my_elements[i]){ 534 nodes->AddObject(new Node(id0+i+1,id0-i omodel->nodecounter+i,lid++,0,iomodel,analysis,FSvelocityEnum));534 nodes->AddObject(new Node(id0+i+1,id0-i,lid++,0,iomodel,analysis,FSvelocityEnum)); 535 535 } 536 536 } … … 547 547 if(iomodel->my_elements[i]){ 548 548 for(j=0;j<elementnbv;j++){ 549 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));549 nodes->AddObject(new Node(vnodes+elementnbv*i+j+1,vnodes-elementnbv*i+j,lid++,iomodel->elements[+elementnbv*i+j]-1,iomodel,analysis,FSpressureEnum)); 550 550 551 551 } … … 588 588 for(i=0;i<iomodel->numberofelements;i++){ 589 589 if(iomodel->my_elements[i]){ 590 nodes->AddObject(new Node(id0+i+1,id0-i omodel->nodecounter+i,lid++,0,iomodel,analysis,FSvelocityEnum));590 nodes->AddObject(new Node(id0+i+1,id0-i,lid++,0,iomodel,analysis,FSvelocityEnum)); 591 591 } 592 592 } -
TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp ¶
r23514 r23532 62 62 delete analysis; 63 63 64 /* Update counters, because we have created more nodes, loads and65 * constraints, and ids for objects created in next call to CreateDataSets66 * will need to start at the end of the updated counters: */67 if(nodes[i]->Size()) iomodel->nodecounter = nodes[i]->MaximumId();68 iomodel->loadcounter = loads[i]->NumberOfLoads();69 iomodel->constraintcounter = constraints[i]->NumberOfConstraints();70 71 /*Make sure nodecounter is at least 0 (if no node exists, maxid will be -1*/72 _assert_(iomodel->nodecounter>=0);73 74 64 /*Tell datasets that Ids are already sorted*/ 75 65 constraints[i]->Presort(); -
TabularUnified issm/trunk-jpl/src/c/toolkits/issm/IssmMpiSparseMat.h ¶
r23294 r23532 150 150 void Assemble(){/*{{{*/ 151 151 152 int i,j; 153 154 int *RowRank = NULL; 155 int num_procs; 156 157 int *row_indices_forcpu = NULL; 158 int *col_indices_forcpu = NULL; 159 int *modes_forcpu = NULL; 160 doubletype *values_forcpu = NULL; 161 int *numvalues_forcpu = NULL; 162 DataSet **bucketsforcpu = NULL; 163 152 int *RowRank = NULL; 153 int *row_indices_forcpu = NULL; 154 int *col_indices_forcpu = NULL; 155 int *modes_forcpu = NULL; 156 doubletype *values_forcpu = NULL; 157 int *numvalues_forcpu = NULL; 158 DataSet **bucketsforcpu = NULL; 164 159 int **row_indices_fromcpu = NULL; 165 160 int **col_indices_fromcpu = NULL; … … 167 162 doubletype **values_fromcpu = NULL; 168 163 int *numvalues_fromcpu = NULL; 169 170 int lower_row; 171 int upper_row; 172 int* sendcnts = NULL; 173 int* displs = NULL; 174 int count = 0; 175 176 int this_row_numvalues; 177 int* this_row_cols = NULL; 178 int* this_row_mods = NULL; 179 int* numvalues_perrow = NULL; 180 int row; 181 182 doubletype** values_perrow = NULL; 183 int** cols_perrow = NULL; 184 int** mods_perrow = NULL; 185 int* counters_perrow = NULL; 186 int counter; 164 int lower_row; 165 int upper_row; 166 int *sendcnts = NULL; 167 int *displs = NULL; 168 int this_row_numvalues; 169 int *this_row_cols = NULL; 170 int *this_row_mods = NULL; 171 int *numvalues_perrow = NULL; 172 173 doubletype **values_perrow = NULL; 174 int **cols_perrow = NULL; 175 int **mods_perrow = NULL; 176 int *counters_perrow = NULL; 187 177 188 178 /*Early exit: */ 189 if(this->M*this->N==0) return; //no need to assemble.179 if(this->M*this->N==0) return; 190 180 191 181 /*some communicator info: */ 192 num_procs=IssmComm::GetSize();182 int num_procs=IssmComm::GetSize(); 193 183 ISSM_MPI_Comm comm=IssmComm::GetComm(); 194 184 … … 196 186 RowRank=DetermineRowRankFromLocalSize(M,m,comm); 197 187 198 /*Now, sort out our dataset of buckets according to cpu ownership of rows : {{{*/188 /*Now, sort out our dataset of buckets according to cpu ownership of rows*/ 199 189 bucketsforcpu=xNew<DataSet*>(num_procs); 200 201 for(i=0;i<num_procs;i++){ 190 for(int i=0;i<num_procs;i++){ 202 191 DataSet* bucketsofcpu_i=new DataSet(); 203 for (j=0;j<buckets->Size();j++){192 for(int j=0;j<buckets->Size();j++){ 204 193 Bucket<doubletype>* bucket=(Bucket<doubletype>*)buckets->GetObjectByOffset(j); 205 194 bucket->SpawnBucketsPerCpu(bucketsofcpu_i,i,RowRank); … … 207 196 bucketsforcpu[i]=bucketsofcpu_i; 208 197 } 209 /*}}}*/ 210 211 /*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this {{{ 198 199 /*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this 212 200 * dataset owns correspond to rows that are owned by cpu i, not j!. Out of all the buckets we own, make row,col,value,insert_mode 213 201 * vectors that will be shipped around the cluster: */ 214 202 this->BucketsBuildScatterBuffers(&numvalues_forcpu,&row_indices_forcpu,&col_indices_forcpu,&values_forcpu,&modes_forcpu,bucketsforcpu,num_procs); 215 /*}}}*/ 216 217 /*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need {{{ 203 204 /*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need 218 205 *some scatter calls: */ 219 206 numvalues_fromcpu = xNew<int>(num_procs); 220 for(i=0;i<num_procs;i++){ 221 ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm); 222 } 207 for(int i=0;i<num_procs;i++) ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm); 223 208 224 209 row_indices_fromcpu=xNew<int*>(num_procs); … … 226 211 values_fromcpu=xNew<doubletype*>(num_procs); 227 212 modes_fromcpu=xNew<int*>(num_procs); 228 for(i =0;i<num_procs;i++){213 for(int i=0;i<num_procs;i++){ 229 214 int size=numvalues_fromcpu[i]; 230 215 if(size){ … … 238 223 values_fromcpu[i]=xNew<doubletype>(size); 239 224 #endif 240 241 225 modes_fromcpu[i]=xNew<int>(size); 242 226 } 243 227 else{ 244 row_indices_fromcpu[i]=NULL; 245 col_indices_fromcpu[i]=NULL; 246 values_fromcpu[i]=NULL; 247 modes_fromcpu[i]=NULL; 248 } 249 } 250 /*}}}*/ 251 252 /*Scatter values around: {{{*/ 228 row_indices_fromcpu[i] = NULL; 229 col_indices_fromcpu[i] = NULL; 230 values_fromcpu[i] = NULL; 231 modes_fromcpu[i] = NULL; 232 } 233 } 234 235 /*Scatter values around*/ 253 236 /*Now, to scatter values across the cluster, we need sendcnts and displs. Our sendbufs have been built by BucketsBuildScatterBuffers, with a stride given 254 237 * by numvalues_forcpu. Get this ready to go before starting the scatter itslef. For reference, here is the ISSM_MPI_Scatterv prototype: … … 256 239 sendcnts=xNew<int>(num_procs); 257 240 displs=xNew<int>(num_procs); 258 count=0;259 for(i =0;i<num_procs;i++){241 int count=0; 242 for(int i=0;i<num_procs;i++){ 260 243 sendcnts[i]=numvalues_forcpu[i]; 261 244 displs[i]=count; … … 263 246 } 264 247 265 for(i =0;i<num_procs;i++){248 for(int i=0;i<num_procs;i++){ 266 249 ISSM_MPI_Scatterv( row_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, row_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm); 267 250 ISSM_MPI_Scatterv( col_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, col_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm); … … 269 252 ISSM_MPI_Scatterv( modes_forcpu, sendcnts, displs, ISSM_MPI_INT, modes_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm); 270 253 } 271 /*}}}*/ 272 273 /*Plug values into global matrix. To do so, we are going to first figure out how many overall values each sparse row is going to get, then we fill up these values, and give it to each sparse row: {{{*/ 254 255 /*Plug values into global matrix. To do so, we are going to first figure out how many overall values each sparse row is going to get, then we fill up these values, and give it to each sparse row*/ 274 256 GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,comm); 275 257 276 258 /*Figure out how many values each row is going to get: */ 277 259 numvalues_perrow=xNewZeroInit<int>(this->m); 278 for(i =0;i<num_procs;i++){260 for(int i=0;i<num_procs;i++){ 279 261 int numvalues=numvalues_fromcpu[i]; 280 262 int* rows=row_indices_fromcpu[i]; 281 for( j=0;j<numvalues;j++)numvalues_perrow[rows[j]-lower_row]++;263 for(int j=0;j<numvalues;j++)numvalues_perrow[rows[j]-lower_row]++; 282 264 } 283 265 … … 288 270 counters_perrow=xNewZeroInit<int>(this->m); 289 271 290 for(i =0;i<this->m;i++){272 for(int i=0;i<this->m;i++){ 291 273 values_perrow[i]=xNewZeroInit<doubletype>(numvalues_perrow[i]); 292 274 cols_perrow[i]=xNewZeroInit<int>(numvalues_perrow[i]); … … 295 277 296 278 /*collect:*/ 297 for(i =0;i<num_procs;i++){279 for(int i=0;i<num_procs;i++){ 298 280 int numvalues=numvalues_fromcpu[i]; 299 281 int* rows=row_indices_fromcpu[i]; … … 301 283 doubletype* values=values_fromcpu[i]; 302 284 int* mods=modes_fromcpu[i]; 303 304 for(j=0;j<numvalues;j++){ 305 row=rows[j]-lower_row; 306 counter=counters_perrow[row]; 285 for(int j=0;j<numvalues;j++){ 286 int row=rows[j]-lower_row; 287 int counter=counters_perrow[row]; 307 288 values_perrow[row][counter]=values[j]; 308 289 cols_perrow[row][counter]=cols[j]; … … 313 294 314 295 /*Plug into matrix: */ 315 for(i=0;i<this->m;i++){ 316 this->matrix[i]->SetValues(numvalues_perrow[i],cols_perrow[i],values_perrow[i],mods_perrow[i]); 317 } 318 /*}}}*/ 319 320 /*Free ressources:{{{*/ 296 for(int i=0;i<this->m;i++) this->matrix[i]->SetValues(numvalues_perrow[i],cols_perrow[i],values_perrow[i],mods_perrow[i]); 297 298 /*Free ressources*/ 321 299 xDelete<int>(numvalues_perrow); 322 300 xDelete<int>(RowRank); … … 326 304 xDelete<doubletype>(values_forcpu); 327 305 xDelete<int>(numvalues_forcpu); 328 329 for(i=0;i<num_procs;i++){ 306 for(int i=0;i<num_procs;i++){ 330 307 DataSet* buckets=bucketsforcpu[i]; 331 308 delete buckets; 332 309 } 333 310 xDelete<DataSet*>(bucketsforcpu); 334 335 for(i=0;i<num_procs;i++){ 311 for(int i=0;i<num_procs;i++){ 336 312 int* rows=row_indices_fromcpu[i]; 337 313 int* cols=col_indices_fromcpu[i]; 338 314 int* modes=modes_fromcpu[i]; 339 315 doubletype* values=values_fromcpu[i]; 340 341 316 xDelete<int>(rows); 342 317 xDelete<int>(cols); … … 349 324 xDelete<doubletype*>(values_fromcpu); 350 325 xDelete<int>(numvalues_fromcpu); 351 352 326 xDelete<int>(sendcnts); 353 327 xDelete<int>(displs); 354 355 for(i=0;i<this->m;i++){ 328 for(int i=0;i<this->m;i++){ 356 329 doubletype* values=values_perrow[i]; xDelete<doubletype>(values); 357 330 int* cols=cols_perrow[i]; xDelete<int>(cols); … … 362 335 xDelete<int*>(cols_perrow); 363 336 xDelete<int*>(mods_perrow); 364 /*}}}*/ 365 366 } 367 /*}}}*/ 337 }/*}}}*/ 368 338 doubletype Norm(NormMode mode){/*{{{*/ 369 339 … … 458 428 459 429 /*intermediary: */ 460 int i,j; 461 int count = 0; 462 int total_size = 0; 430 int count; 463 431 int *temp_row_indices_forcpu = NULL; 464 432 int *temp_col_indices_forcpu = NULL; … … 476 444 477 445 numvalues_forcpu=xNew<int>(num_procs); 478 for(i=0;i<num_procs;i++){ 479 DataSet *buckets = bucketsforcpu[i]; 480 446 for(int i=0;i<num_procs;i++){ 447 DataSet *buckets = bucketsforcpu[i]; 481 448 count=0; 482 for( j=0;j<buckets->Size();j++){449 for(int j=0;j<buckets->Size();j++){ 483 450 Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j); 484 451 count+=bucket->MarshallSize(); 485 452 } 486 487 453 numvalues_forcpu[i]=count; 488 454 } … … 490 456 /*now, figure out size of total buffers (for all cpus!): */ 491 457 count=0; 492 for(i=0;i<num_procs;i++){ 493 count+=numvalues_forcpu[i]; 494 } 495 total_size=count; 458 for(int i=0;i<num_procs;i++) count+=numvalues_forcpu[i]; 459 int total_size=count; 496 460 497 461 /*Allocate buffers: */ … … 505 469 values_forcpu = xNew<doubletype>(total_size); 506 470 #endif 507 508 471 modes_forcpu = xNew<int>(total_size); 509 472 … … 511 474 *lose track of where these buffers are located in memory, we are going to work using copies 512 475 of them: */ 513 temp_row_indices_forcpu =row_indices_forcpu;514 temp_col_indices_forcpu =col_indices_forcpu;515 temp_values_forcpu =values_forcpu;516 temp_modes_forcpu =modes_forcpu;476 temp_row_indices_forcpu = row_indices_forcpu; 477 temp_col_indices_forcpu = col_indices_forcpu; 478 temp_values_forcpu = values_forcpu; 479 temp_modes_forcpu = modes_forcpu; 517 480 518 481 /*Fill buffers: */ 519 for(i =0;i<num_procs;i++){520 DataSet *buckets= bucketsforcpu[i];521 for( j=0;j<buckets->Size();j++){482 for(int i=0;i<num_procs;i++){ 483 DataSet *buckets = bucketsforcpu[i]; 484 for(int j=0;j<buckets->Size();j++){ 522 485 Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j); 523 486 bucket->Marshall(&temp_row_indices_forcpu,&temp_col_indices_forcpu,&temp_values_forcpu,&temp_modes_forcpu); //pass in the address of the buffers, so as to have the Marshall routine increment them. … … 526 489 527 490 /*sanity check: */ 528 if 529 if 530 if 531 if 491 if(temp_row_indices_forcpu!=row_indices_forcpu+total_size)_error_("problem with marshalling of buckets"); 492 if(temp_col_indices_forcpu!=col_indices_forcpu+total_size)_error_("problem with marshalling of buckets"); 493 if(temp_values_forcpu!=values_forcpu+total_size)_error_("problem with marshalling of buckets"); 494 if(temp_modes_forcpu!=modes_forcpu+total_size)_error_("problem with marshalling of buckets"); 532 495 533 496 /*output buffers: */
Note:
See TracChangeset
for help on using the changeset viewer.