source:
issm/oecreview/Archive/25834-26739/ISSM-26289-26290.diff
Last change on this file was 26740, checked in by , 3 years ago | |
---|---|
File size: 3.8 KB |
-
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
193 193 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,1); 194 194 } 195 195 } 196 else{// itapopo FIXME only base velocities are constrained here196 else{//MLHO itapopo FIXME base and shear velocities are constrained 197 197 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0); 198 //IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,1); 199 if(iomodel->domaintype!=Domain2DverticalEnum){ 200 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,2); 201 //IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,3); 202 } 198 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,1); 199 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,2); 200 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,3); 203 201 } 204 202 } 205 203 … … 3065 3063 thickness_input->GetInputValue(&thickness,gauss); 3066 3064 surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss); 3067 3065 n_input->GetInputValue(&n,gauss); 3068 3066 3069 3067 for(int i=0;i<numnodes;i++){// per node: vx (basal vx), vshx, vy (basal vy), vshy 3070 3068 pe->values[i*4+0]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i]; //F1 3071 3069 pe->values[i*4+1]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i]*(n+1)/(n+2); //F2 … … 3090 3088 3091 3089 /*Intermediaries*/ 3092 3090 IssmDouble Jdet,thickness,base,sealevel,water_pressure,ice_pressure; 3093 IssmDouble water_pressure_sh,ice_pressure_sh,pressure_sh,n,s,b; 3094 IssmDouble surface_under_water,base_under_water,pressure; 3091 IssmDouble water_pressure_sh,ice_pressure_sh,pressure_sh,pressure,n,s,b; 3095 3092 IssmDouble *xyz_list = NULL; 3096 3093 IssmDouble *xyz_list_front = NULL; 3097 3094 IssmDouble normal[2]; … … 3124 3121 sealevel_input->GetInputValue(&sealevel,gauss); 3125 3122 element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss); 3126 3123 element->NodalFunctions(basis,gauss); 3127 3128 surface_under_water = min(0.,thickness+base-sealevel); // 0 if the top of the glacier is above waterlevel3129 base_under_water = min(0.,base-sealevel); // 0 if the bottom of the glacier is above waterlevel3124 3125 b = base-sealevel; // ice base shifted by the sea level 3126 s = thickness+b; // ice surface shifted by the sea level 3130 3127 /*Vertically integrated pressure - SSA type*/ 3131 water_pressure = (1.0/2.0)*gravity*rho_water*(surface_under_water*surface_under_water - base_under_water*base_under_water);3132 ice_pressure = (1.0/2.0)*gravity*rho_ice*thickness*thickness;3128 water_pressure = -(1.0/2.0)*gravity*rho_water*(b*b); 3129 ice_pressure = (1.0/2.0)*gravity*rho_ice*thickness*thickness; 3133 3130 pressure = ice_pressure + water_pressure; 3134 3131 /*Vertically integrated pressure - HO type*/ 3135 b=min(0.,base-sealevel); // 0 if the bottom of the glacier is above water level 3136 s=thickness+b; // ice surface regardless of whether the top of the glacier is above water level or not 3137 water_pressure_sh = gravity*rho_water*( -b*b/2 + (pow(-b,n+2)/pow(thickness,n+1))*(-s/(n+2)-b/(n+3)) ); 3132 water_pressure_sh = gravity*rho_water*( -b*b/2 - (s*thickness/(n+2))*(1-pow(s/thickness,n+2)) + (thickness*thickness/(n+3))*(1-pow(s/thickness,n+3)) ); 3138 3133 ice_pressure_sh = gravity*rho_ice*thickness*thickness*(n+1)/(2*(n+3)); 3139 3134 pressure_sh = ice_pressure_sh + water_pressure_sh; 3140 3135
Note:
See TracBrowser
for help on using the repository browser.