Changeset 17742
- Timestamp:
- 04/15/14 17:28:59 (11 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 1 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r17734 r17742 303 303 Input* sed_trans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); 304 304 Input* thickness_input = basalelement->GetInput(ThicknessEnum); 305 Input* base_input 305 Input* base_input = basalelement->GetInput(BaseEnum); 306 306 Input* water_input = basalelement->GetInput(BasalforcingsMeltingRateEnum); _assert_(water_input); 307 307 if(dt!= 0.){old_wh_input = basalelement->GetInput(SedimentHeadOldEnum); _assert_(old_wh_input);} … … 411 411 basalelement->GetDofList(&doflist,NoneApproximationEnum,GsetEnum); 412 412 IssmDouble* values = xNew<IssmDouble>(numnodes); 413 IssmDouble* pressure = xNew<IssmDouble>(numnodes); 413 414 IssmDouble* residual = xNew<IssmDouble>(numnodes); 414 415 … … 419 420 } 420 421 421 /*If converged keep the residual in mind */422 element->GetInputValue(&converged,ConvergedEnum);422 /*If converged keep the residual in mind, also compute effective pressure*/ 423 basalelement->GetInputValue(&converged,ConvergedEnum); 423 424 424 425 /*Get inputs*/ 425 426 if(converged){ 426 427 IssmDouble penalty_factor,kmax,kappa,h_max; 427 element->FindParam(&kmax,HydrologySedimentKmaxEnum); 428 element->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum); 428 IssmDouble rho_freshwater,rho_ice; 429 IssmDouble g; 430 IssmDouble* thickness = xNew<IssmDouble>(numnodes); 431 IssmDouble* base = xNew<IssmDouble>(numnodes); 432 433 basalelement->FindParam(&kmax,HydrologySedimentKmaxEnum); 434 basalelement->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum); 435 basalelement->GetMaterialParameter(MaterialsRhoFreshwaterEnum); 436 basalelement->GetMaterialParameter(MaterialsRhoIceEnum); 437 basalelement->GetMaterialParameter(ConstantsGEnum); 438 439 basalelement->GetInputListOnVertices(thickness,ThicknessEnum); 440 basalelement->GetInputListOnVertices(base,BaseEnum); 429 441 430 442 kappa=kmax*pow(10.,penalty_factor); 431 443 432 444 for(int i=0;i<numnodes;i++){ 445 433 446 GetHydrologyDCInefficientHmax(&h_max,basalelement,basalelement->GetNode(i)); 434 if(values[i]>h_max) residual[i] = kappa*(values[i]-h_max); 435 else residual[i] = 0.; 436 } 447 if(values[i]>h_max) { 448 residual[i] = kappa*(values[i]-h_max); 449 pressure[i]=(rho_ice*g*thickness[i])-(rho_freshwater*g*(values[i]-base[i])); 450 } 451 else{ 452 residual[i] = 0.; 453 pressure[i]=(rho_ice*g*thickness[i])-(rho_freshwater*g*(h_max-base[i])); 454 } 455 } 456 xDelete<IssmDouble>(thickness); 457 xDelete<IssmDouble>(base); 437 458 } 438 459 … … 440 461 element->AddBasalInput(SedimentHeadEnum,values,P1Enum); 441 462 element->AddBasalInput(SedimentHeadResidualEnum,residual,P1Enum); 463 element->AddBasalInput(EffectivePressureEnum,pressure,P1Enum); 442 464 443 465 /*Free ressources:*/ 444 466 xDelete<IssmDouble>(values); 445 467 xDelete<IssmDouble>(residual); 468 xDelete<IssmDouble>(pressure); 446 469 xDelete<int>(doflist); 447 470 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; -
issm/trunk-jpl/src/c/cores/hydrology_core.cpp
r17734 r17742 64 64 if(VerboseSolution()) _printf0_(" saving results \n"); 65 65 if(isefficientlayer){ 66 int outputs[ 8] = {SedimentHeadEnum,SedimentHeadResidualEnum,EplHeadEnum,HydrologydcMaskEplactiveNodeEnum,HydrologydcMaskEplactiveEltEnum,EplHeadSlopeXEnum,EplHeadSlopeYEnum,HydrologydcEplThicknessEnum};67 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0], 8);66 int outputs[9] = {SedimentHeadEnum,SedimentHeadResidualEnum,EplHeadEnum,HydrologydcMaskEplactiveNodeEnum,HydrologydcMaskEplactiveEltEnum,EplHeadSlopeXEnum,EplHeadSlopeYEnum,HydrologydcEplThicknessEnum,EffectivePressureEnum}; 67 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],9); 68 68 } 69 69 else{ 70 int outputs[ 2] = {SedimentHeadEnum,SedimentHeadResidualEnum};71 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0], 2);70 int outputs[3] = {SedimentHeadEnum,SedimentHeadResidualEnum,EffectivePressureEnum}; 71 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3); 72 72 } 73 73 /*unload results*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r17735 r17742 98 98 SedimentHeadOldEnum, 99 99 SedimentHeadResidualEnum, 100 EffectivePressureEnum, 100 101 EplHeadEnum, 101 102 EplHeadOldEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r17735 r17742 106 106 case SedimentHeadOldEnum : return "SedimentHeadOld"; 107 107 case SedimentHeadResidualEnum : return "SedimentHeadResidual"; 108 case EffectivePressureEnum : return "EffectivePressure"; 108 109 case EplHeadEnum : return "EplHead"; 109 110 case EplHeadOldEnum : return "EplHeadOld"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r17735 r17742 106 106 else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum; 107 107 else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum; 108 else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum; 108 109 else if (strcmp(name,"EplHead")==0) return EplHeadEnum; 109 110 else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum; … … 136 137 else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum; 137 138 else if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum; 138 else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum; 142 if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum; 143 else if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum; 143 144 else if (strcmp(name,"HydrologyEfficient")==0) return HydrologyEfficientEnum; 144 145 else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum; … … 259 260 else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum; 260 261 else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum; 261 else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum; 265 if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum; 266 else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum; 266 267 else if (strcmp(name,"MaxIterationConvergenceFlag")==0) return MaxIterationConvergenceFlagEnum; 267 268 else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum; … … 382 383 else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum; 383 384 else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum; 384 else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 388 if (strcmp(name,"FSpressure")==0) return FSpressureEnum; 389 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 389 390 else if (strcmp(name,"Loads")==0) return LoadsEnum; 390 391 else if (strcmp(name,"Materials")==0) return MaterialsEnum; … … 505 506 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum; 506 507 else if (strcmp(name,"Vx")==0) return VxEnum; 507 else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 511 if (strcmp(name,"VxPicard")==0) return VxPicardEnum; 512 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 512 513 else if (strcmp(name,"Vy")==0) return VyEnum; 513 514 else if (strcmp(name,"VyPicard")==0) return VyPicardEnum; … … 628 629 else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum; 629 630 else if (strcmp(name,"QmuMaskGroundediceLevelset")==0) return QmuMaskGroundediceLevelsetEnum; 630 else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"GaussTria")==0) return GaussTriaEnum; 634 if (strcmp(name,"GaussSeg")==0) return GaussSegEnum; 635 else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum; 635 636 else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum; 636 637 else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum; -
issm/trunk-jpl/src/m/classes/transient.m
r17734 r17742 54 54 55 55 %default output 56 obj.requested_outputs={' default'};56 obj.requested_outputs={'none'}; 57 57 end % }}} 58 58 function obj = setdefaultparameters(obj) % {{{ -
issm/trunk-jpl/src/m/classes/transient.py
r17734 r17742 47 47 return [] 48 48 49 #}}} 50 def setallnullparameters(self): # {{{ 51 52 #Nothing done 53 self.ismasstransport = False 54 self.isstressbalance = False 55 self.isthermal = False 56 self.isgroundingline = False 57 self.isgia = False 58 self.isdamageevolution = False 59 self.islevelset = False 60 self.ishydrology = False 61 62 #default output 63 self.requested_outputs=['none'] 64 return self 49 65 #}}} 50 66 def setdefaultparameters(self): # {{{ -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r17735 r17742 98 98 def SedimentHeadOldEnum(): return StringToEnum("SedimentHeadOld")[0] 99 99 def SedimentHeadResidualEnum(): return StringToEnum("SedimentHeadResidual")[0] 100 def EffectivePressureEnum(): return StringToEnum("EffectivePressure")[0] 100 101 def EplHeadEnum(): return StringToEnum("EplHead")[0] 101 102 def EplHeadOldEnum(): return StringToEnum("EplHeadOld")[0]
Note:
See TracChangeset
for help on using the changeset viewer.