source:
issm/oecreview/Archive/16554-17801/ISSM-17134-17135.diff@
17802
Last change on this file since 17802 was 17802, checked in by , 11 years ago | |
---|---|
File size: 18.7 KB |
-
../trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp
159 159 elementfaces_markers[2] = 2; 160 160 elementfaces_markers[3] = 2; 161 161 elementfaces_markers[4] = 2; 162 elementfaces[cols*2+0] = 4; elementfaces[cols*2+1] = 0; elementfaces[cols*2+2] = 1; elementfaces[cols*2+3] = 4; elementfaces[cols*2+4] = 3;163 elementfaces[cols*3+0] = 4; elementfaces[cols*3+1] = 1; elementfaces[cols*3+2] = 2; elementfaces[cols*3+3] = 5; elementfaces[cols*3+4] = 4;164 elementfaces[cols*4+0] = 4; elementfaces[cols*4+1] = 2; elementfaces[cols*4+2] = 0; elementfaces[cols*4+3] = 3; elementfaces[cols*4+4] = 5;162 elementfaces[cols*2+0] = 4; elementfaces[cols*2+1] = 1; elementfaces[cols*2+2] = 2; elementfaces[cols*2+3] = 5; elementfaces[cols*2+4] = 4; 163 elementfaces[cols*3+0] = 4; elementfaces[cols*3+1] = 2; elementfaces[cols*3+2] = 0; elementfaces[cols*3+3] = 3; elementfaces[cols*3+4] = 5; 164 elementfaces[cols*4+0] = 4; elementfaces[cols*4+1] = 0; elementfaces[cols*4+2] = 1; elementfaces[cols*4+3] = 4; elementfaces[cols*4+4] = 3; 165 165 } 166 166 else{ 167 167 _error_("mesh dimension not supported yet"); -
../trunk-jpl/src/c/modules/ModelProcessorx/CreateEdges.cpp
51 51 elementedges[2*3+0] = 1; elementedges[2*3+1] = 2; elementedges_markers[3] = 1; 52 52 elementedges[2*4+0] = 2; elementedges[2*4+1] = 0; elementedges_markers[4] = 1; 53 53 elementedges[2*5+0] = 0; elementedges[2*5+1] = 1; elementedges_markers[5] = 1; 54 elementedges[2*6+0] = 4; elementedges[2*6+1] = 5; elementedges_markers[6] = 3;55 elementedges[2*7+0] = 5; elementedges[2*7+1] = 3; elementedges_markers[7] = 3;56 elementedges[2*8+0] = 3; elementedges[2*8+1] = 4; elementedges_markers[8] = 3;54 elementedges[2*6+0] = 4; elementedges[2*6+1] = 5; elementedges_markers[6] = 1; 55 elementedges[2*7+0] = 5; elementedges[2*7+1] = 3; elementedges_markers[7] = 1; 56 elementedges[2*8+0] = 3; elementedges[2*8+1] = 4; elementedges_markers[8] = 1; 57 57 } 58 58 else{ 59 59 _error_("mesh dimension not supported yet"); -
../trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
13 13 /*Intermediaries*/ 14 14 int i,j,counter,vnodes,lid=0; 15 15 int id0 = iomodel->nodecounter; 16 bool *my_faces = NULL; 16 17 bool *my_edges = NULL; 17 18 bool *my_nodes = NULL; 18 19 Node *node = NULL; … … 143 144 break; 144 145 case P2xP4Enum: 145 146 EdgesPartitioning(&my_edges,iomodel); 147 FacesPartitioning(&my_faces,iomodel); 146 148 for(i=0;i<iomodel->numberofvertices;i++){ 147 149 if(iomodel->my_vertices[i]){ 148 150 nodes->AddObject(new Node(id0+i+1,i,lid++,i,iomodel,analysis,approximation)); … … 152 154 for(i=0;i<iomodel->numberofedges;i++){ 153 155 if(iomodel->edges[i*3+2]==2){/*Vertical edges*/ 154 156 if(my_edges[i]){ 155 node = new Node(id0+iomodel->numberofvertices+ 4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);157 node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation); 156 158 nodes->AddObject(node); 157 node = new Node(id0+iomodel->numberofvertices+ 4*i+2,counter+2,lid++,0,iomodel,analysis,approximation);159 node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,iomodel,analysis,approximation); 158 160 nodes->AddObject(node); 159 node = new Node(id0+iomodel->numberofvertices+ 4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);161 node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,iomodel,analysis,approximation); 160 162 nodes->AddObject(node); 161 163 } 162 164 counter=counter+3; 163 165 } 164 else if(iomodel->edges[i*3+2]==1){/* Basal edges*/166 else if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/ 165 167 if(my_edges[i]){ 166 node = new Node(id0+iomodel->numberofvertices+ 4*i+1,counter+1,lid++,0,iomodel,analysis,approximation);168 node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation); 167 169 nodes->AddObject(node); 168 node = new Node(id0+iomodel->numberofvertices+4*i+2,counter+2,lid++,0,iomodel,analysis,approximation); 170 } 171 counter=counter+1; 172 } 173 else{ 174 _error_("not supported"); 175 } 176 } 177 id0 = id0+iomodel->numberofvertices+3*iomodel->numberofedges; 178 for(i=0;i<iomodel->numberoffaces;i++){ 179 if(iomodel->faces[i*6+5]==2){/*Vertical quads*/ 180 if(my_faces[i]){ 181 node = new Node(id0+3*i+1,counter+1,lid++,0,iomodel,analysis,approximation); 169 182 nodes->AddObject(node); 170 node = new Node(id0+ iomodel->numberofvertices+4*i+3,counter+3,lid++,0,iomodel,analysis,approximation);183 node = new Node(id0+3*i+2,counter+2,lid++,0,iomodel,analysis,approximation); 171 184 nodes->AddObject(node); 172 node = new Node(id0+ iomodel->numberofvertices+4*i+4,counter+4,lid++,0,iomodel,analysis,approximation);185 node = new Node(id0+3*i+3,counter+3,lid++,0,iomodel,analysis,approximation); 173 186 nodes->AddObject(node); 174 187 } 175 counter=counter+ 4;188 counter=counter+3; 176 189 } 177 else if(iomodel->edges[i*3+2]==3){/*Top edges*/ 178 if(my_edges[i]){ 179 node = new Node(id0+iomodel->numberofvertices+4*i+1,counter+1,lid++,0,iomodel,analysis,approximation); 180 nodes->AddObject(node); 181 } 182 counter=counter+1; 190 else if(iomodel->faces[i*6+5]==1){/*Triangular base/top*/ 191 /*Nothing*/ 183 192 } 184 193 else{ 185 194 _error_("not supported"); … … 290 299 case OneLayerP4zEnum: 291 300 _assert_(approximation==FSApproximationEnum); 292 301 EdgesPartitioning(&my_edges,iomodel); 302 FacesPartitioning(&my_faces,iomodel); 293 303 /*P2xP4 velocity*/ 294 304 for(i=0;i<iomodel->numberofvertices;i++){ 295 305 if(iomodel->my_vertices[i]){ … … 359 369 } 360 370 361 371 /*Clean up*/ 372 xDelete<bool>(my_faces); 362 373 xDelete<bool>(my_edges); 363 374 xDelete<bool>(my_nodes); 364 375 } -
../trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
38 38 IssmDouble *values = NULL; 39 39 bool spcpresent = false; 40 40 41 /* P2finite elements*/42 int v1,v2 ;41 /*Higher-order finite elements*/ 42 int v1,v2,v3,v4; 43 43 bool *my_edges = NULL; 44 bool *my_faces = NULL; 44 45 45 46 switch(finite_element){ 46 47 case P1Enum: … … 71 72 break; 72 73 case P2xP4Enum: 73 74 EdgesPartitioning(&my_edges,iomodel); 75 FacesPartitioning(&my_faces,iomodel); 74 76 break; 75 77 default: 76 78 _error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet"); … … 125 127 v1 = iomodel->edges[3*i+0]-1; 126 128 v2 = iomodel->edges[3*i+1]-1; 127 129 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 128 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+ 4*i+1,130 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*i+1, 129 131 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 130 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+ 4*i+2,132 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+3*i+2, 131 133 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 132 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+ 4*i+3,134 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+3*i+3, 133 135 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 134 136 count=count+3; 135 137 } 136 138 } 137 139 } 138 if(iomodel->edges[i*3+2]==1){/* Basal edges*/140 if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/ 139 141 if(my_edges[i]){ 140 142 v1 = iomodel->edges[3*i+0]-1; 141 143 v2 = iomodel->edges[3*i+1]-1; 142 144 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 143 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+ 4*i+1,145 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*i+1, 144 146 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 145 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+4*i+2, 146 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 147 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+4*i+3, 148 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 149 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+4,iomodel->nodecounter+iomodel->numberofvertices+4*i+4, 150 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 151 count=count+4; 147 count=count+1; 152 148 } 153 149 } 154 150 } 155 if(iomodel->edges[i*3+2]==3){/*Top edges*/ 156 if(my_edges[i]){ 157 v1 = iomodel->edges[3*i+0]-1; 158 v2 = iomodel->edges[3*i+1]-1; 151 } 152 for(i=0;i<iomodel->numberoffaces;i++){ 153 if(iomodel->faces[i*6+5]==2){/*Vertical quads*/ 154 if(my_faces[i]){ 155 v1 = iomodel->faces[6*i+0]-1; 156 v2 = iomodel->faces[6*i+1]-1; 159 157 if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){ 160 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+ 4*i+1,158 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+1, 161 159 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 162 count=count+1; 160 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+2,iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+2, 161 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 162 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+3,iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*i+3, 163 dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type)); 164 count=count+3; 163 165 } 164 166 } 165 167 } -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
2833 2833 case P2xP4Enum: 2834 2834 numnodes = 30; 2835 2835 penta_node_ids = xNew<int>(numnodes); 2836 penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0]; 2837 penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1]; 2838 penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2]; 2839 penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3]; 2840 penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4]; 2841 penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5]; 2842 penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+0]+1;2843 penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+1]+1;2844 penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+2]+1;2845 penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+3]+1;2846 penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+4]+1;2847 penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+5]+1;2848 penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+6]+1;2849 penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+7]+1;2850 penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+8]+1;2851 penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+0]+2;2852 penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+1]+2;2853 penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+2]+2;2854 penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+0]+3;2855 penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+1]+3;2856 penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+2]+3;2857 penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+3]+2;2858 penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+4]+2;2859 penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+5]+2;2860 penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+3]+3;2861 penta_node_ids[25]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+4]+3;2862 penta_node_ids[26]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+5]+3;2863 penta_node_ids[27]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+3]+4;2864 penta_node_ids[28]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+4]+4;2865 penta_node_ids[29]=iomodel->nodecounter+iomodel->numberofvertices+ 4*iomodel->elementtoedgeconnectivity[9*index+5]+4;2836 penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0]; /*Vertex 1*/ 2837 penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1]; /*Vertex 2*/ 2838 penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2]; /*Vertex 3*/ 2839 penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3]; /*Vertex 4*/ 2840 penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4]; /*Vertex 5*/ 2841 penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5]; /*Vertex 6*/ 2842 penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/ 2843 penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/ 2844 penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/ 2845 penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/ 2846 penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/ 2847 penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/ 2848 penta_node_ids[12]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/ 2849 penta_node_ids[13]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/ 2850 penta_node_ids[14]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/ 2851 penta_node_ids[15]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+2; /* 1/4 vertical edge 1*/ 2852 penta_node_ids[16]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+2; /* 1/4 vertical edge 2*/ 2853 penta_node_ids[17]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+2; /* 1/4 vertical edge 3*/ 2854 penta_node_ids[18]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+0]+3; /* 2/4 vertical edge 1*/ 2855 penta_node_ids[19]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+1]+3; /* 2/4 vertical edge 2*/ 2856 penta_node_ids[20]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->elementtoedgeconnectivity[9*index+2]+3; /* 2/4 vertical edge 3*/ 2857 penta_node_ids[21]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+1; /* 1/4 vertical face 1*/ 2858 penta_node_ids[22]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+1; /* 1/4 vertical face 2*/ 2859 penta_node_ids[23]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+1; /* 1/4 vertical face 3*/ 2860 penta_node_ids[24]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+2; /* 2/4 vertical face 1*/ 2861 penta_node_ids[25]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+2; /* 2/4 vertical face 2*/ 2862 penta_node_ids[26]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+2; /* 2/4 vertical face 3*/ 2863 penta_node_ids[27]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+2]+3; /* 3/4 vertical face 1*/ 2864 penta_node_ids[28]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+3]+3; /* 3/4 vertical face 2*/ 2865 penta_node_ids[29]=iomodel->nodecounter+iomodel->numberofvertices+3*iomodel->numberofedges+3*iomodel->elementtofaceconnectivity[5*index+4]+3; /* 3/4 vertical face 3*/ 2866 2866 break; 2867 2867 case P2Enum: 2868 2868 numnodes = 15;
Note:
See TracBrowser
for help on using the repository browser.