Changeset 26204
- Timestamp:
- 04/22/21 06:08:36 (4 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r26192 r26204 783 783 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum,0.); 784 784 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum,0.); 785 if(isMLHO){//itapopo FIXME the shearvelocities should be initialized correctly785 if(isMLHO){//itapopo FIXME shear and base velocities should be initialized correctly 786 786 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxShearEnum,0.); 787 787 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyShearEnum,0.); 788 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum,0.); 789 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum,0.); 788 790 } 789 791 iomodel->FetchDataToInput(inputs,elements,"md.stressbalance.loadingforcex",LoadingforceXEnum); … … 3202 3204 /*Fetch number of nodes and dof for this finite element*/ 3203 3205 int numnodes = basalelement->GetNumberOfNodes(); 3204 int numdof = numnodes* 2*2; //4 DOFs per node3206 int numdof = numnodes*4; //4 DOFs per node 3205 3207 3206 3208 /*Fetch dof list and allocate solution vectors*/ … … 3208 3210 //basalelement->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum); 3209 3211 IssmDouble* values = xNew<IssmDouble>(numdof); 3210 IssmDouble* v x= xNew<IssmDouble>(numnodes);3211 IssmDouble* v y= xNew<IssmDouble>(numnodes);3212 IssmDouble* vbx = xNew<IssmDouble>(numnodes); 3213 IssmDouble* vby = xNew<IssmDouble>(numnodes); 3212 3214 IssmDouble* vshx = xNew<IssmDouble>(numnodes); 3213 3215 IssmDouble* vshy = xNew<IssmDouble>(numnodes); 3216 IssmDouble* vsx = xNew<IssmDouble>(numnodes); 3217 IssmDouble* vsy = xNew<IssmDouble>(numnodes); 3214 3218 IssmDouble* vz = xNew<IssmDouble>(numnodes); 3215 3219 IssmDouble* vel = xNew<IssmDouble>(numnodes); … … 3229 3233 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ 3230 3234 for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MLHO is written 3231 v x[i]=values[i*4+0]; //base vx3235 vbx[i] =values[i*4+0]; //base vx 3232 3236 vshx[i]=values[i*4+1]; //shear vx 3233 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 3234 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 3237 vsx[i] =vbx[i]+vshx[i]; //surface vx 3238 if(xIsNan<IssmDouble>(vbx[i])) _error_("NaN found in solution vector"); 3239 if(xIsInf<IssmDouble>(vbx[i])) _error_("Inf found in solution vector"); 3235 3240 if(xIsNan<IssmDouble>(vshx[i])) _error_("NaN found in solution vector"); 3236 3241 if(xIsInf<IssmDouble>(vshx[i])) _error_("Inf found in solution vector"); 3237 v y[i]=values[i*4+2]; //base vy3242 vby[i] =values[i*4+2]; //base vy 3238 3243 vshy[i]=values[i*4+3]; //shear vy 3239 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 3240 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 3244 vsy[i] =vby[i]+vshy[i]; //surface vy 3245 if(xIsNan<IssmDouble>(vby[i])) _error_("NaN found in solution vector"); 3246 if(xIsInf<IssmDouble>(vby[i])) _error_("Inf found in solution vector"); 3241 3247 if(xIsNan<IssmDouble>(vshy[i])) _error_("NaN found in solution vector"); 3242 3248 if(xIsInf<IssmDouble>(vshy[i])) _error_("Inf found in solution vector"); … … 3249 3255 /*Get Vz and compute vel (base)*/ 3250 3256 basalelement->GetInputListOnNodes(&vz[0],VzEnum,0.); 3251 for(i=0;i<numnodes;i++) vel[i]=sqrt(v x[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);3257 for(i=0;i<numnodes;i++) vel[i]=sqrt(vbx[i]*vbx[i] + vby[i]*vby[i] + vz[i]*vz[i]); 3252 3258 3253 3259 /*Add vx and vy as inputs to the tria element (base velocities): */ 3254 element->AddBasalInput(VxEnum,vx,element->GetElementType()); 3255 element->AddBasalInput(VyEnum,vy,element->GetElementType()); 3256 element->AddBasalInput(VelEnum,vel,element->GetElementType()); 3260 element->AddBasalInput(VxBaseEnum,vbx,element->GetElementType()); 3261 element->AddBasalInput(VyBaseEnum,vby,element->GetElementType()); 3262 element->AddBasalInput(VelEnum,vel,element->GetElementType()); //itapopo check this 3263 3264 /*Add vx and vy as inputs to the tria element (surface velocities): */ 3265 element->AddBasalInput(VxSurfaceEnum,vsx,element->GetElementType()); 3266 element->AddBasalInput(VySurfaceEnum,vsy,element->GetElementType()); 3257 3267 3258 3268 /*Free ressources:*/ 3259 3269 xDelete<IssmDouble>(vel); 3260 3270 xDelete<IssmDouble>(vz); 3261 xDelete<IssmDouble>(vy); 3262 xDelete<IssmDouble>(vx); 3271 xDelete<IssmDouble>(vby); 3272 xDelete<IssmDouble>(vbx); 3273 xDelete<IssmDouble>(vsy); 3274 xDelete<IssmDouble>(vsx); 3263 3275 xDelete<IssmDouble>(vshy); 3264 3276 xDelete<IssmDouble>(vshx); … … 3270 3282 void StressbalanceAnalysis::GetSolutionFromInputsMLHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/ 3271 3283 3272 IssmDouble v x,vy,vshx,vshy;3284 IssmDouble vbx,vby,vshx,vshy; 3273 3285 int domaintype,dim,approximation,dofpernode; 3274 3286 int* doflist = NULL; … … 3293 3305 3294 3306 /*Get inputs*/ 3295 Input* vx _input =element->GetInput(VxEnum); _assert_(vx_input);3307 Input* vxbase_input =element->GetInput(VxBaseEnum); _assert_(vxbase_input); 3296 3308 Input* vxshear_input =element->GetInput(VxShearEnum); _assert_(vxshear_input); 3297 Input* vy _input =element->GetInput(VyEnum); _assert_(vy_input);3309 Input* vybase_input =element->GetInput(VyBaseEnum); _assert_(vybase_input); 3298 3310 Input* vyshear_input =element->GetInput(VyShearEnum); _assert_(vyshear_input); 3299 3311 … … 3304 3316 3305 3317 /*Recover vx and vy*/ 3306 vx _input->GetInputValue(&vx,gauss);//base vx3318 vxbase_input->GetInputValue(&vbx,gauss); //base vx 3307 3319 vxshear_input->GetInputValue(&vshx,gauss);//shear vx 3308 values[i*4+0]=v x;//base vx3320 values[i*4+0]=vbx; //base vx 3309 3321 values[i*4+1]=vshx; //shear vx 3310 vy _input->GetInputValue(&vy,gauss);//base vy3322 vybase_input->GetInputValue(&vby,gauss); //base vy 3311 3323 vyshear_input->GetInputValue(&vshy,gauss);//shear vy 3312 values[i*4+2]=v y;//base vy3324 values[i*4+2]=vby; //base vy 3313 3325 values[i*4+3]=vshy;//shear vy 3314 3326 } -
issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
r26175 r26204 852 852 }/*}}}*/ 853 853 IssmDouble Friction::VelMag(Gauss* gauss){/*{{{*/ 854 /*Get effective pressure as a function of flag */ 855 854 /*Get the velocity magnitude as a function of flag */ 856 855 857 856 /*diverse*/ 857 bool isMLHO=false; //employing mono layer higher order model? Default is no 858 858 IssmDouble vx,vy,vz,vmag; 859 860 element->parameters->FindParam(&isMLHO,FlowequationIsMLHOEnum); 861 if(isMLHO) _assert_(dim==2); 859 862 860 863 switch(dim){ … … 864 867 break; 865 868 case 2: 866 element->GetInputValue(&vx,gauss,VxEnum); 867 element->GetInputValue(&vy,gauss,VyEnum); 869 if(isMLHO){ 870 element->GetInputValue(&vx,gauss,VxBaseEnum); 871 element->GetInputValue(&vy,gauss,VyBaseEnum); 872 } 873 else{ 874 element->GetInputValue(&vx,gauss,VxEnum); 875 element->GetInputValue(&vy,gauss,VyEnum); 876 } 868 877 vmag=sqrt(vx*vx+vy*vy); 869 878 break; -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26196 r26204 936 936 syn keyword cConstant VelEnum 937 937 syn keyword cConstant VxAverageEnum 938 syn keyword cConstant VxBaseEnum 938 939 syn keyword cConstant VxEnum 939 940 syn keyword cConstant VxMeshEnum 940 941 syn keyword cConstant VxObsEnum 941 942 syn keyword cConstant VxShearEnum 943 syn keyword cConstant VxSurfaceEnum 942 944 syn keyword cConstant VyAverageEnum 945 syn keyword cConstant VyBaseEnum 943 946 syn keyword cConstant VyEnum 944 947 syn keyword cConstant VyMeshEnum 945 948 syn keyword cConstant VyObsEnum 946 949 syn keyword cConstant VyShearEnum 950 syn keyword cConstant VySurfaceEnum 947 951 syn keyword cConstant VzEnum 948 952 syn keyword cConstant VzFSEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26196 r26204 933 933 VelEnum, 934 934 VxAverageEnum, 935 VxBaseEnum, 935 936 VxEnum, 936 937 VxMeshEnum, 937 938 VxObsEnum, 938 939 VxShearEnum, 940 VxSurfaceEnum, 939 941 VyAverageEnum, 942 VyBaseEnum, 940 943 VyEnum, 941 944 VyMeshEnum, 942 945 VyObsEnum, 943 946 VyShearEnum, 947 VySurfaceEnum, 944 948 VzEnum, 945 949 VzFSEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26196 r26204 938 938 case VelEnum : return "Vel"; 939 939 case VxAverageEnum : return "VxAverage"; 940 case VxBaseEnum : return "VxBase"; 940 941 case VxEnum : return "Vx"; 941 942 case VxMeshEnum : return "VxMesh"; 942 943 case VxObsEnum : return "VxObs"; 943 944 case VxShearEnum : return "VxShear"; 945 case VxSurfaceEnum : return "VxSurface"; 944 946 case VyAverageEnum : return "VyAverage"; 947 case VyBaseEnum : return "VyBase"; 945 948 case VyEnum : return "Vy"; 946 949 case VyMeshEnum : return "VyMesh"; 947 950 case VyObsEnum : return "VyObs"; 948 951 case VyShearEnum : return "VyShear"; 952 case VySurfaceEnum : return "VySurface"; 949 953 case VzEnum : return "Vz"; 950 954 case VzFSEnum : return "VzFS"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r26196 r26204 959 959 else if (strcmp(name,"Vel")==0) return VelEnum; 960 960 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum; 961 else if (strcmp(name,"VxBase")==0) return VxBaseEnum; 961 962 else if (strcmp(name,"Vx")==0) return VxEnum; 962 963 else if (strcmp(name,"VxMesh")==0) return VxMeshEnum; 963 964 else if (strcmp(name,"VxObs")==0) return VxObsEnum; 964 965 else if (strcmp(name,"VxShear")==0) return VxShearEnum; 966 else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum; 965 967 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 968 else if (strcmp(name,"VyBase")==0) return VyBaseEnum; 966 969 else if (strcmp(name,"Vy")==0) return VyEnum; 967 970 else if (strcmp(name,"VyMesh")==0) return VyMeshEnum; 968 971 else if (strcmp(name,"VyObs")==0) return VyObsEnum; 969 972 else if (strcmp(name,"VyShear")==0) return VyShearEnum; 973 else if (strcmp(name,"VySurface")==0) return VySurfaceEnum; 970 974 else if (strcmp(name,"Vz")==0) return VzEnum; 971 975 else if (strcmp(name,"VzFS")==0) return VzFSEnum; … … 994 998 else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum; 995 999 else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; 996 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 997 1004 else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; 998 1005 else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 999 1006 else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; 1007 else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; 1004 1008 else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum; 1005 1009 else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum; … … 1117 1121 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 1118 1122 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; 1119 else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 1120 1127 else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 1121 1128 else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum; 1122 1129 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum; 1130 else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum; 1127 1131 else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum; 1128 1132 else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum; … … 1240 1244 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 1241 1245 else if (strcmp(name,"ElementInput")==0) return ElementInputEnum; 1242 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 1243 1250 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 1244 1251 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 1245 1252 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"Inputs")==0) return InputsEnum; 1253 else if (strcmp(name,"Inputs")==0) return InputsEnum; 1250 1254 else if (strcmp(name,"Internal")==0) return InternalEnum; 1251 1255 else if (strcmp(name,"Intersect")==0) return IntersectEnum; … … 1363 1367 else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum; 1364 1368 else if (strcmp(name,"SamplingSolution")==0) return SamplingSolutionEnum; 1365 else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum; 1366 1373 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1367 1374 else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum; 1368 1375 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum; 1376 else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum; 1373 1377 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 1374 1378 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; -
issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m
r26192 r26204 228 228 field = field*yts; 229 229 elseif strcmp(fieldname,'VyShear'), 230 field = field*yts; 231 elseif strcmp(fieldname,'VxBase'), 232 field = field*yts; 233 elseif strcmp(fieldname,'VyBase'), 234 field = field*yts; 235 elseif strcmp(fieldname,'VxSurface'), 236 field = field*yts; 237 elseif strcmp(fieldname,'VySurface'), 230 238 field = field*yts; 231 239 elseif strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'), -
issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
r26193 r26204 179 179 field = field * yts 180 180 elif fieldname == 'VyShear': 181 field = field * yts 182 elif fieldname == 'VxBase': 183 field = field * yts 184 elif fieldname == 'VyBase': 185 field = field * yts 186 elif fieldname == 'VxSurface': 187 field = field * yts 188 elif fieldname == 'VySurface': 181 189 field = field * yts 182 190 elif fieldname == 'BasalforcingsGroundediceMeltingRate':
Note:
See TracChangeset
for help on using the changeset viewer.