Changeset 20993
- Timestamp:
- 07/24/16 00:20:27 (9 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp ¶
r20835 r20993 130 130 for(i=0;i<iomodel->numberofvertices;i++){ 131 131 if(iomodel->my_vertices[i]){ 132 if( reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){132 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 133 133 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 134 134 count++; … … 140 140 for(i=0;i<iomodel->numberofvertices;i++){ 141 141 if(iomodel->my_vertices[i]){ 142 if( reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){142 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 143 143 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 144 144 count++; … … 150 150 for(i=0;i<iomodel->numberofvertices;i++){ 151 151 if(iomodel->my_vertices[i]){ 152 if( reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){152 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 153 153 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 154 154 count++; … … 160 160 for(i=0;i<iomodel->numberofvertices;i++){ 161 161 if(iomodel->my_vertices[i]){ 162 if( reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){162 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 163 163 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+iomodel->numberoffaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 164 164 count++; … … 224 224 225 225 /*Start with adding spcs of coupling: zero at the border SSA/HO for the appropriate dofs*/ 226 if( reCast<int,IssmDouble>(vertices_type[i]==SSAHOApproximationEnum)){226 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAHOApproximationEnum){ 227 227 /*If grionSSA, spc HO dofs: 3 & 4*/ 228 228 if (reCast<int,IssmDouble>(nodeonHO[i])){ … … 259 259 } 260 260 /*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/ 261 else if ( reCast<int,IssmDouble>(vertices_type[i])==HOFSApproximationEnum){261 else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==HOFSApproximationEnum){ 262 262 /*If grion,HO spc FS dofs: 3 4 & 5*/ 263 263 if (reCast<int,IssmDouble>(nodeonHO[i])){ … … 299 299 } 300 300 /*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/ 301 else if ( reCast<int,IssmDouble>(vertices_type[i])==SSAFSApproximationEnum){301 else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAFSApproximationEnum){ 302 302 /*If grion,HO spc FS dofs: 3 4 & 5*/ 303 303 if (reCast<int,IssmDouble>(nodeonSSA[i])){ … … 360 360 xDelete<IssmDouble>(values); 361 361 } 362 else if ( vertices_type[i]==SIAApproximationEnum){362 else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){ 363 363 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,StressbalanceAnalysisEnum)); 364 364 count++; … … 383 383 xDelete<IssmDouble>(values); 384 384 } 385 else if ( vertices_type[i]==SIAApproximationEnum){385 else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){ 386 386 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,StressbalanceAnalysisEnum)); 387 387 count++; 388 388 } 389 389 390 if ( reCast<int,IssmDouble>(vertices_type[i])==FSApproximationEnum || (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){390 if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==FSApproximationEnum || (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum)){ 391 391 if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){ 392 392 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 vy … … 409 409 410 410 } 411 if ( reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){411 if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 412 412 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 vy 413 413 count++; … … 560 560 for(int i=0;i<iomodel->numberofvertices;i++){ 561 561 if(iomodel->my_vertices[i]){ 562 approximation= reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]);562 approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])); 563 563 if(approximation==FSApproximationEnum) approximation=FSvelocityEnum; 564 564 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,approximation)); … … 575 575 for(int i=0;i<iomodel->numberofvertices;i++){ 576 576 if(iomodel->my_vertices[i]){ 577 approximation= reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]);577 approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])); 578 578 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum); 579 579 if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){ … … 587 587 for(int i=0;i<iomodel->numberofvertices;i++){ 588 588 if(iomodel->my_vertices[i]){ 589 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum, reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));589 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])))); 590 590 } 591 591 } … … 717 717 if(isFS){ 718 718 for(int i=0;i<iomodel->numberofelements;i++){ 719 approximation= reCast<int>(iomodel->Data("md.flowequation.element_equation")[i]);719 approximation=IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[i])); 720 720 if(approximation==FSApproximationEnum || approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){ 721 721 finiteelement_list[i]=MINIcondensedEnum; -
TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp ¶
r20690 r20993 44 44 /*keep only this partition's nodes:*/ 45 45 if((iomodel->my_vertices[i])){ 46 if ( reCast<int,IssmDouble>(iomodel->Data("md.flowequation.vertex_equation")[i])!=SIAApproximationEnum){46 if (IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){ 47 47 48 48 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum)); … … 99 99 100 100 /*Create new node if is in this processor's partition*/ 101 node = new Node(iomodel->nodecounter+i+1,i,lid++,i,iomodel,StressbalanceSIAAnalysisEnum, reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));101 node = new Node(iomodel->nodecounter+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*/ 104 if( reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])!=SIAApproximationEnum){104 if(IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){ 105 105 node->Deactivate(); 106 106 } -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp ¶
r20810 r20993 1483 1483 /*Need to know the type of approximation for this element*/ 1484 1484 if(iomodel->Data("md.flowequation.element_equation")){ 1485 this->inputs->AddInput(new IntInput(ApproximationEnum, reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])));1485 this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))); 1486 1486 } 1487 1487 … … 3077 3077 _assert_(iomodel->Data("md.flowequation.element_equation")); 3078 3078 3079 if( *(iomodel->Data("md.flowequation.element_equation")+index)==HOFSApproximationEnum){3079 if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==HOFSApproximationEnum){ 3080 3080 /*Create VzHO and VzFS Enums*/ 3081 3081 if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){ … … 3091 3091 } 3092 3092 } 3093 if( *(iomodel->Data("md.flowequation.element_equation")+index)==SSAFSApproximationEnum){3093 if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==SSAFSApproximationEnum){ 3094 3094 /*Create VzSSA and VzFS Enums*/ 3095 3095 if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp ¶
r20810 r20993 225 225 z6=xyz_list[3*5+2]; 226 226 227 /* DEBUG228 * REMOVE BEFORE SUBMITTING229 * ----------230 * CHANGE SQRT3/12 TO MULTIPLY BY RECIPROCAL231 */232 227 j_const_reciprocal=SQRT3/12; 233 228 -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp ¶
r20690 r20993 447 447 /*Need to know the type of approximation for this element*/ 448 448 if(iomodel->Data("md.flowequation.element_equation")){ 449 this->inputs->AddInput(new IntInput(ApproximationEnum, reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])));449 this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))); 450 450 } 451 451 -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp ¶
r20871 r20993 1747 1747 /*Need to know the type of approximation for this element*/ 1748 1748 if(iomodel->Data("md.flowequation.element_equation")){ 1749 this->inputs->AddInput(new IntInput(ApproximationEnum, reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])));1749 this->inputs->AddInput(new IntInput(ApproximationEnum,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))); 1750 1750 } 1751 1751 -
TabularUnified issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp ¶
r20925 r20993 90 90 }/*}}}*/ 91 91 92 int IoCodeToEnumVertexEquation(int enum_in){/*{{{*/ 93 switch(enum_in){ 94 case 0: return NoneApproximationEnum; 95 case 1: return SIAApproximationEnum; 96 case 2: return SSAApproximationEnum; 97 case 3: return L1L2ApproximationEnum; 98 case 4: return HOApproximationEnum; 99 case 5: return FSApproximationEnum; 100 case 6: return SSAHOApproximationEnum; 101 case 7: return HOFSApproximationEnum; 102 case 8: return SSAFSApproximationEnum; 103 default: _error_("Marshalled vertex equation code \""<<enum_in<<"\" not supported yet."); 104 } 105 }/*}}}*/ 106 int IoCodeToEnumElementEquation(int enum_in){/*{{{*/ 107 switch(enum_in){ 108 case 0: return NoneApproximationEnum; 109 case 1: return SIAApproximationEnum; 110 case 2: return SSAApproximationEnum; 111 case 3: return L1L2ApproximationEnum; 112 case 4: return HOApproximationEnum; 113 case 5: return FSApproximationEnum; 114 case 6: return SSAHOApproximationEnum; 115 case 7: return SSAFSApproximationEnum; 116 case 8: return HOFSApproximationEnum; 117 default: _error_("Marshalled element equation code \""<<enum_in<<"\" not supported yet."); 118 } 119 120 }/*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.h ¶
r20925 r20993 10 10 int IoCodeToEnumMaterials(int enum_in); 11 11 12 int IoCodeToEnumVertexEquation(int enum_in); 13 int IoCodeToEnumElementEquation(int enum_in); 12 14 #endif -
TabularUnified issm/trunk-jpl/src/m/classes/flowequation.js ¶
r20927 r20993 118 118 119 119 //convert approximations to enums 120 data=this.vertex_equation; 121 122 //some optimization: 123 var noneap=NoneApproximationEnum(); 124 var siaap=SIAApproximationEnum(); 125 var ssaap=SSAApproximationEnum(); 126 var l1l2ap=L1L2ApproximationEnum(); 127 var hoap=HOApproximationEnum(); 128 var fsap=FSApproximationEnum(); 129 var ssahoap=SSAHOApproximationEnum(); 130 var hofsaap=HOFSApproximationEnum(); 131 var ssafsap=SSAFSApproximationEnum(); 132 133 for(var i=0;i<data.length;i++){ 134 if(data[i]==0)data[i]=nonap; 135 if(data[i]==1) data[i]=siaap; 136 if(data[i]==2) data[i]=ssaap; 137 if(data[i]==3) data[i]=l1l2ap; 138 if(data[i]==4) data[i]=hoap; 139 if(data[i]==5) data[i]=fsap; 140 if(data[i]==6) data[i]=ssahoap; 141 if(data[i]==7) data[i]=hofsaap; 142 if(data[i]==8) data[i]=ssafsap; 143 } 144 WriteData(fid,prefix,'data',data,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1); 145 146 data=this.element_equation; 147 for(var i=0;i<data.length;i++){ 148 if(data[i]==0) data[i]=nonap; 149 if(data[i]==1) data[i]=siaap; 150 if(data[i]==2) data[i]=ssaap; 151 if(data[i]==3) data[i]=l1l2ap; 152 if(data[i]==4) data[i]=hoap; 153 if(data[i]==5) data[i]=fsap; 154 if(data[i]==6) data[i]=ssahoap; 155 if(data[i]==7) data[i]=ssafsap; 156 if(data[i]==8) data[i]=hofsaap; 157 } 158 WriteData(fid,prefix,'data',data,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2); 120 WriteData(fid,prefix,'data',this.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1); 121 WriteData(fid,prefix,'data',this.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2); 159 122 160 123 }//}}} -
TabularUnified issm/trunk-jpl/src/m/classes/flowequation.m ¶
r20925 r20993 172 172 WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1); 173 173 %convert approximations to enums 174 data=self.vertex_equation; 175 pos=find(data==0); data(pos,end)=NoneApproximationEnum(); 176 pos=find(data==1); data(pos,end)=SIAApproximationEnum(); 177 pos=find(data==2); data(pos,end)=SSAApproximationEnum(); 178 pos=find(data==3); data(pos,end)=L1L2ApproximationEnum(); 179 pos=find(data==4); data(pos,end)=HOApproximationEnum(); 180 pos=find(data==5); data(pos,end)=FSApproximationEnum(); 181 182 pos=find(data==6); data(pos,end)=SSAHOApproximationEnum(); 183 pos=find(data==7); data(pos,end)=HOFSApproximationEnum(); 184 pos=find(data==8); data(pos,end)=SSAFSApproximationEnum(); 185 WriteData(fid,prefix,'data',data,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1); 186 data=self.element_equation; 187 pos=find(data==0); data(pos,end)=NoneApproximationEnum(); 188 pos=find(data==1); data(pos,end)=SIAApproximationEnum(); 189 pos=find(data==2); data(pos,end)=SSAApproximationEnum(); 190 pos=find(data==3); data(pos,end)=L1L2ApproximationEnum(); 191 pos=find(data==4); data(pos,end)=HOApproximationEnum(); 192 pos=find(data==5); data(pos,end)=FSApproximationEnum(); 193 194 pos=find(data==6); data(pos,end)=SSAHOApproximationEnum(); 195 pos=find(data==7); data(pos,end)=SSAFSApproximationEnum(); 196 pos=find(data==8); data(pos,end)=HOFSApproximationEnum(); 197 WriteData(fid,prefix,'data',data,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2); 174 WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1); 175 WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2); 198 176 end % }}} 199 177 function savemodeljs(self,fid,modelname) % {{{ -
TabularUnified issm/trunk-jpl/src/m/classes/flowequation.py ¶
r20925 r20993 138 138 WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1) 139 139 #convert approximations to enums 140 data=copy.deepcopy(self.vertex_equation); 140 WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1) 141 WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2) 141 142 142 if isinstance(data, (list, tuple, numpy.ndarray)):143 data[numpy.nonzero(data==0)]=NoneApproximationEnum()144 data[numpy.nonzero(data==1)]=SIAApproximationEnum()145 data[numpy.nonzero(data==2)]=SSAApproximationEnum()146 data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()147 data[numpy.nonzero(data==4)]=HOApproximationEnum()148 data[numpy.nonzero(data==5)]=FSApproximationEnum()149 data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()150 data[numpy.nonzero(data==7)]=HOFSApproximationEnum()151 data[numpy.nonzero(data==8)]=SSAFSApproximationEnum()152 WriteData(fid,prefix,'data',data,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1)153 data=copy.deepcopy(self.element_equation)154 if isinstance(data, (list, tuple, numpy.ndarray)):155 data[numpy.nonzero(data==0)]=NoneApproximationEnum()156 data[numpy.nonzero(data==1)]=SIAApproximationEnum()157 data[numpy.nonzero(data==2)]=SSAApproximationEnum()158 data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()159 data[numpy.nonzero(data==4)]=HOApproximationEnum()160 data[numpy.nonzero(data==5)]=FSApproximationEnum()161 data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()162 data[numpy.nonzero(data==7)]=SSAFSApproximationEnum()163 data[numpy.nonzero(data==8)]=HOFSApproximationEnum()164 WriteData(fid,prefix,'data',data,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2)165 143 # }}}
Note:
See TracChangeset
for help on using the changeset viewer.