Changeset 23184
- Timestamp:
- 08/27/18 10:12:39 (7 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r23183 r23184 15 15 /*Intermediary*/ 16 16 int i,j; 17 int count,finiteelement,p finiteelement;17 int count,finiteelement,p_fe,v_fe; 18 18 IssmDouble g; 19 19 IssmDouble rho_ice; … … 69 69 /*Deduce velocity interpolation from finite element*/ 70 70 switch(finiteelement){ 71 case P1P1Enum : finiteelement = P1Enum; pfiniteelement= P1Enum; break;72 case P1P1GLSEnum : finiteelement = P1Enum; pfiniteelement= P1Enum; break;73 case MINIcondensedEnum : finiteelement = P1bubbleEnum; pfiniteelement= P1Enum; break;74 case MINIEnum : finiteelement = P1bubbleEnum; pfiniteelement= P1Enum; break;75 case TaylorHoodEnum : finiteelement = P2Enum; pfiniteelement= P1Enum; break;76 case XTaylorHoodEnum : finiteelement = P2Enum; pfiniteelement= P1Enum; break;77 case LATaylorHoodEnum : finiteelement = P2Enum; pfiniteelement= NoneEnum; break;78 case LACrouzeixRaviartEnum : finiteelement = P2bubbleEnum; pfiniteelement= NoneEnum; break;79 case OneLayerP4zEnum : finiteelement = P2xP4Enum; pfiniteelement= P1Enum; break;80 case CrouzeixRaviartEnum : finiteelement = P2bubbleEnum; pfiniteelement= P1DGEnum; break;71 case P1P1Enum : v_fe = P1Enum; p_fe = P1Enum; break; 72 case P1P1GLSEnum : v_fe = P1Enum; p_fe = P1Enum; break; 73 case MINIcondensedEnum : v_fe = P1bubbleEnum; p_fe = P1Enum; break; 74 case MINIEnum : v_fe = P1bubbleEnum; p_fe = P1Enum; break; 75 case TaylorHoodEnum : v_fe = P2Enum; p_fe = P1Enum; break; 76 case XTaylorHoodEnum : v_fe = P2Enum; p_fe = P1Enum; break; 77 case LATaylorHoodEnum : v_fe = P2Enum; p_fe = NoneEnum; break; 78 case LACrouzeixRaviartEnum : v_fe = P2bubbleEnum; p_fe = NoneEnum; break; 79 case OneLayerP4zEnum : v_fe = P2xP4Enum; p_fe = P1Enum; break; 80 case CrouzeixRaviartEnum : v_fe = P2bubbleEnum; p_fe = P1DGEnum; break; 81 81 default: _error_("finite element "<<EnumToStringx(finiteelement)<<" not supported"); 82 82 } … … 103 103 } 104 104 if(iomodel->domaintype==Domain3DEnum){ 105 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum, finiteelement,0);106 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum, finiteelement,1);107 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum, finiteelement,2);105 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,v_fe,0); 106 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,v_fe,1); 107 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,v_fe,2); 108 108 iomodel->DeleteData(spcvz,"md.stressbalance.spcvz"); 109 109 } 110 110 else if (iomodel->domaintype==Domain2DverticalEnum){ 111 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum, finiteelement,0);112 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum, finiteelement,1);111 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,v_fe,0); 112 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,v_fe,1); 113 113 iomodel->DeleteData(spcvz,"md.stressbalance.spcvy"); 114 114 } … … 134 134 } 135 135 if(addpressurespc){ 136 switch(pfiniteelement){ 137 case P1Enum: 136 switch(finiteelement){ 137 case P1P1Enum: case P1P1GLSEnum: 138 for(i=0;i<iomodel->numberofvertices;i++){ 139 if(iomodel->my_vertices[i]){ 140 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 141 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 142 count++; 143 } 144 } 145 } 146 break; 147 case MINIEnum: case MINIcondensedEnum: 138 148 for(i=0;i<iomodel->numberofvertices;i++){ 139 149 if(iomodel->my_vertices[i]){ … … 145 155 } 146 156 break; 147 case P1bubbleEnum:157 case TaylorHoodEnum: 148 158 for(i=0;i<iomodel->numberofvertices;i++){ 149 159 if(iomodel->my_vertices[i]){ 150 160 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){ 151 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofe lements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));161 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 152 162 count++; 153 163 } 154 164 } 155 165 } 156 break;157 case P2Enum:158 for(i=0;i<iomodel->numberofvertices;i++){159 if(iomodel->my_vertices[i]){160 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){161 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));162 count++;163 }164 }165 }166 break;167 case P2bubbleEnum:168 for(i=0;i<iomodel->numberofvertices;i++){169 if(iomodel->my_vertices[i]){170 if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){171 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));172 count++;173 }174 }175 }176 break;177 case P2xP4Enum:178 //Nothing yet179 166 break; 180 167 default: -
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
r23167 r23184 459 459 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 460 460 } 461 if(iomodel->meshelementtype==PentaEnum){ _error_("need to add nodes on faces! (See Spcstatic above)");} 461 462 462 463 if(spcpresent){
Note:
See TracChangeset
for help on using the changeset viewer.