Changeset 21526
- Timestamp:
- 02/07/17 13:22:30 (8 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/analyses/HydrologySommersAnalysis.cpp ¶
r21506 r21526 148 148 parameters->AddObject(iomodel->CopyConstantObject("md.friction.law",FrictionLawEnum)); 149 149 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.relaxation",HydrologyRelaxationEnum)); 150 parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.storage",HydrologyStorageEnum)); 150 151 }/*}}}*/ 151 152 … … 173 174 ElementMatrix* Ke = element->NewElementMatrix(); 174 175 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); 176 IssmDouble* basis = xNew<IssmDouble>(numnodes); 175 177 176 178 /*Retrieve all inputs and parameters*/ … … 179 181 /*Get conductivity from inputs*/ 180 182 IssmDouble conductivity = GetConductivity(element); 183 184 /*Get englacial storage coefficient*/ 185 IssmDouble storage,dt; 186 element->FindParam(&storage,HydrologyStorageEnum); 187 element->FindParam(&dt,TimesteppingTimeStepEnum); 181 188 182 189 /* Start looping on the number of gaussian points: */ … … 187 194 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 188 195 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 196 element->NodalFunctions(basis,gauss); 189 197 190 198 for(int i=0;i<numnodes;i++){ 191 199 for(int j=0;j<numnodes;j++){ 192 Ke->values[i*numnodes+j] += conductivity*gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]); 200 Ke->values[i*numnodes+j] += conductivity*gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]) 201 + gauss->weight*Jdet*storage/dt*basis[i]*basis[j]; 193 202 } 194 203 } … … 244 253 IssmDouble conductivity = GetConductivity(element); 245 254 255 /*Get englacial storage coefficient*/ 256 IssmDouble storage,dt; 257 element->FindParam(&storage,HydrologyStorageEnum); 258 element->FindParam(&dt,TimesteppingTimeStepEnum); 259 246 260 /*Build friction element, needed later: */ 247 261 Friction* friction=new Friction(element,2); … … 308 322 -beta*sqrt(vx*vx+vy*vy) 309 323 +ieb 324 +storage*head_old/dt 310 325 )*basis[i]; 311 326 } -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h ¶
r21518 r21526 176 176 HydrologyRelaxationEnum, 177 177 HydrologyBasalFluxEnum, 178 HydrologyStorageEnum, 178 179 InversionControlParametersEnum, 179 180 InversionControlScalingFactorsEnum, -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp ¶
r21518 r21526 182 182 case HydrologyRelaxationEnum : return "HydrologyRelaxation"; 183 183 case HydrologyBasalFluxEnum : return "HydrologyBasalFlux"; 184 case HydrologyStorageEnum : return "HydrologyStorage"; 184 185 case InversionControlParametersEnum : return "InversionControlParameters"; 185 186 case InversionControlScalingFactorsEnum : return "InversionControlScalingFactors"; -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp ¶
r21518 r21526 185 185 else if (strcmp(name,"HydrologyRelaxation")==0) return HydrologyRelaxationEnum; 186 186 else if (strcmp(name,"HydrologyBasalFlux")==0) return HydrologyBasalFluxEnum; 187 else if (strcmp(name,"HydrologyStorage")==0) return HydrologyStorageEnum; 187 188 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 188 189 else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum; … … 259 260 else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum; 260 261 else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum; 261 else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum; 265 if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum; 266 else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum; 266 267 else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum; 267 268 else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum; … … 382 383 else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum; 383 384 else if (strcmp(name,"SmbWini")==0) return SmbWiniEnum; 384 else if (strcmp(name,"SmbAini")==0) return SmbAiniEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbTini")==0) return SmbTiniEnum; 388 if (strcmp(name,"SmbAini")==0) return SmbAiniEnum; 389 else if (strcmp(name,"SmbTini")==0) return SmbTiniEnum; 389 390 else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum; 390 391 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; … … 505 506 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; 506 507 else if (strcmp(name,"Temperature")==0) return TemperatureEnum; 507 else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum; 511 if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum; 512 else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum; 512 513 else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum; 513 514 else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum; … … 628 629 else if (strcmp(name,"Outputdefinition38")==0) return Outputdefinition38Enum; 629 630 else if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum; 630 else if (strcmp(name,"Outputdefinition40")==0) return Outputdefinition40Enum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition41")==0) return Outputdefinition41Enum; 634 if (strcmp(name,"Outputdefinition40")==0) return Outputdefinition40Enum; 635 else if (strcmp(name,"Outputdefinition41")==0) return Outputdefinition41Enum; 635 636 else if (strcmp(name,"Outputdefinition42")==0) return Outputdefinition42Enum; 636 637 else if (strcmp(name,"Outputdefinition43")==0) return Outputdefinition43Enum; … … 751 752 else if (strcmp(name,"Mpi")==0) return MpiEnum; 752 753 else if (strcmp(name,"Mumps")==0) return MumpsEnum; 753 else if (strcmp(name,"Gsl")==0) return GslEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"Cuffey")==0) return CuffeyEnum; 757 if (strcmp(name,"Gsl")==0) return GslEnum; 758 else if (strcmp(name,"Cuffey")==0) return CuffeyEnum; 758 759 else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 759 760 else if (strcmp(name,"CuffeyTemperate")==0) return CuffeyTemperateEnum; … … 874 875 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; 875 876 else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum; 876 else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum; 880 if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; 881 else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum; 881 882 else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum; 882 883 else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum; … … 997 998 else if (strcmp(name,"Materials")==0) return MaterialsEnum; 998 999 else if (strcmp(name,"Nodes")==0) return NodesEnum; 999 else if (strcmp(name,"Contours")==0) return ContoursEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"Parameters")==0) return ParametersEnum; 1003 if (strcmp(name,"Contours")==0) return ContoursEnum; 1004 else if (strcmp(name,"Parameters")==0) return ParametersEnum; 1004 1005 else if (strcmp(name,"Vertices")==0) return VerticesEnum; 1005 1006 else if (strcmp(name,"Results")==0) return ResultsEnum; -
TabularUnified issm/trunk-jpl/src/m/classes/hydrologysommers.m ¶
r21463 r21526 16 16 neumannflux = NaN; 17 17 relaxation = 0; 18 storage = 0; 18 19 end 19 20 methods … … 33 34 % Set under-relaxation parameter to be 1 (no under-relaxation of nonlinear iteration) 34 35 self.relaxation=1; 36 self.storage=0; 35 37 end % }}} 36 38 function md = checkconsistency(self,md,solution,analyses) % {{{ … … 51 53 md = checkfield(md,'fieldname','hydrology.spchead','size',[md.mesh.numberofvertices 1]); 52 54 md = checkfield(md,'fieldname','hydrology.relaxation','>=',0); 55 md = checkfield(md,'fieldname','hydrology.storage','>=',0); 53 56 end % }}} 54 57 function disp(self) % {{{ … … 64 67 fielddisplay(self,'spchead','water head constraints (NaN means no constraint) (m)'); 65 68 fielddisplay(self,'relaxation','under-relaxation coefficient for nonlinear iteration'); 69 fielddisplay(self,'storage','englacial storage coefficient (void ratio)'); 66 70 end % }}} 67 71 function marshall(self,prefix,md,fid) % {{{ … … 80 84 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','spchead','format','DoubleMat','mattype',1); 81 85 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','relaxation','format','Double'); 86 WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','storage','format','Double'); 82 87 end % }}} 83 88 end
Note:
See TracChangeset
for help on using the changeset viewer.