source: issm/oecreview/Archive/15392-16133/ISSM-15626-15627.diff@ 16134

Last change on this file since 16134 was 16134, checked in by Mathieu Morlighem, 12 years ago

Added Archive/15392-16133

File size: 8.3 KB
RevLine 
[16134]1Index: ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
2===================================================================
3--- ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp (revision 15626)
4+++ ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp (revision 15627)
5@@ -55,8 +55,9 @@
6 else if(isHO){
7 iomodel->Constant(&temp,FlowequationFeHOEnum);
8 switch(temp){
9- case 0 : finiteelement = P1Enum; break;
10- case 1 : finiteelement = P2Enum; break;
11+ case 0 : finiteelement = P1Enum; break;
12+ case 1 : finiteelement = P2Enum; break;
13+ case 2 : finiteelement = P2xP1Enum; break;
14 default: _error_("finite element "<<temp<<" not supported");
15 }
16 }
17Index: ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
18===================================================================
19--- ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp (revision 15626)
20+++ ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp (revision 15627)
21@@ -84,8 +84,9 @@
22 else if(isHO){
23 iomodel->Constant(&temp,FlowequationFeHOEnum);
24 switch(temp){
25- case 0 : finiteelement = P1Enum; break;
26- case 1 : finiteelement = P2Enum; break;
27+ case 0 : finiteelement = P1Enum; break;
28+ case 1 : finiteelement = P2Enum; break;
29+ case 2 : finiteelement = P2xP1Enum; break;
30 default: _error_("finite element "<<temp<<" not supported");
31 }
32 }
33Index: ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
34===================================================================
35--- ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp (revision 15626)
36+++ ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp (revision 15627)
37@@ -50,8 +50,9 @@
38 approximation = HOApproximationEnum;
39 iomodel->Constant(&temp,FlowequationFeHOEnum);
40 switch(temp){
41- case 0 : finiteelement = P1Enum; break;
42- case 1 : finiteelement = P2Enum; break;
43+ case 0 : finiteelement = P1Enum; break;
44+ case 1 : finiteelement = P2Enum; break;
45+ case 2 : finiteelement = P2xP1Enum; break;
46 default: _error_("finite element "<<temp<<" not supported");
47 }
48 }
49Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
50===================================================================
51--- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp (revision 15626)
52+++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp (revision 15627)
53@@ -42,6 +42,25 @@
54 }
55 break;
56
57+ case P2xP1Enum:
58+ EdgesPartitioning(&my_edges,iomodel);
59+ for(i=0;i<iomodel->numberofvertices;i++){
60+ if(iomodel->my_vertices[i]){
61+ nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel,analysis,approximation));
62+ }
63+ }
64+ int numberofvertices2d;
65+ Node* node = NULL;
66+ iomodel->Constant(&numberofvertices2d,MeshNumberofvertices2dEnum);
67+ /*Create all P2 nodes anyway*/
68+ for(i=0;i<iomodel->numberofedges;i++){
69+ if(my_edges[i]){
70+ node = new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,0,iomodel,analysis,approximation);
71+ nodes->AddObject(node);
72+ }
73+ }
74+ break;
75+
76 case P2Enum:
77 EdgesPartitioning(&my_edges,iomodel);
78 for(i=0;i<iomodel->numberofvertices;i++){
79Index: ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp
80===================================================================
81--- ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp (revision 15626)
82+++ ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp (revision 15627)
83@@ -1624,9 +1624,10 @@
84 int PentaRef::NumberofNodes(void){
85
86 switch(this->element_type){
87- case P1Enum: return NUMNODESP1;
88- case P2Enum: return NUMNODESP2;
89- case MINIEnum: return NUMNODESP1b;
90+ case P1Enum: return NUMNODESP1;
91+ case P2Enum: return NUMNODESP2;
92+ case P2xP1Enum: return NUMNODESP2xP1;
93+ case MINIEnum: return NUMNODESP1b;
94 default: _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
95 }
96
97Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp
98===================================================================
99--- ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 15626)
100+++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 15627)
101@@ -3177,6 +3177,22 @@
102 penta_node_ids[4]=iomodel->nodecounter+iomodel->elements[6*index+4];
103 penta_node_ids[5]=iomodel->nodecounter+iomodel->elements[6*index+5];
104 break;
105+ case P2xP1Enum:
106+ numnodes = 12;
107+ penta_node_ids = xNew<int>(numnodes);
108+ penta_node_ids[ 0]=iomodel->nodecounter+iomodel->elements[6*index+0];
109+ penta_node_ids[ 1]=iomodel->nodecounter+iomodel->elements[6*index+1];
110+ penta_node_ids[ 2]=iomodel->nodecounter+iomodel->elements[6*index+2];
111+ penta_node_ids[ 3]=iomodel->nodecounter+iomodel->elements[6*index+3];
112+ penta_node_ids[ 4]=iomodel->nodecounter+iomodel->elements[6*index+4];
113+ penta_node_ids[ 5]=iomodel->nodecounter+iomodel->elements[6*index+5];
114+ penta_node_ids[ 6]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
115+ penta_node_ids[ 7]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
116+ penta_node_ids[ 8]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
117+ penta_node_ids[ 9]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
118+ penta_node_ids[10]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
119+ penta_node_ids[11]=iomodel->nodecounter+iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
120+ break;
121 case P2Enum:
122 numnodes = 15;
123 penta_node_ids = xNew<int>(numnodes);
124@@ -6974,6 +6990,7 @@
125 xDelete<IssmDouble>(D);
126 xDelete<IssmDouble>(Bprime);
127 xDelete<IssmDouble>(B);
128+ if(id==1) Ke->Echo();
129 return Ke;
130 }
131 /*}}}*/
132Index: ../trunk-jpl/src/c/classes/gauss/GaussPenta.cpp
133===================================================================
134--- ../trunk-jpl/src/c/classes/gauss/GaussPenta.cpp (revision 15626)
135+++ ../trunk-jpl/src/c/classes/gauss/GaussPenta.cpp (revision 15627)
136@@ -414,6 +414,24 @@
137 default: _error_("node index should be in [0 5]");
138 }
139 break;
140+ case 12: //P2xP1 Lagrange element
141+ switch(iv){
142+ case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
143+ case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
144+ case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
145+ case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
146+ case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
147+ case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
148+
149+ case 6: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
150+ case 7: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
151+ case 8: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
152+ case 9: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
153+ case 10: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
154+ case 11: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
155+ default: _error_("node index should be in [0 5]");
156+ }
157+ break;
158 case 15: //P2 Lagrange element
159 switch(iv){
160 case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
161Index: ../trunk-jpl/src/m/classes/flowequation.m
162===================================================================
163--- ../trunk-jpl/src/m/classes/flowequation.m (revision 15626)
164+++ ../trunk-jpl/src/m/classes/flowequation.m (revision 15627)
165@@ -79,7 +79,7 @@
166 md = checkfield(md,'flowequation.isHO','numel',[1],'values',[0 1]);
167 md = checkfield(md,'flowequation.isFS','numel',[1],'values',[0 1]);
168 md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0 1]);
169- md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0 1]);
170+ md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0 1 2]);
171 md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',[0]);
172 md = checkfield(md,'flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
173 md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices 1],'values',[0 1]);
Note: See TracBrowser for help on using the repository browser.