Changeset 22448
- Timestamp:
- 02/21/18 18:19:30 (7 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
r21709 r22448 21 21 22 22 int smb_model; 23 bool isdelta18o,ismungsm,isd18opd ;23 bool isdelta18o,ismungsm,isd18opd,issetpddfac; 24 24 25 25 /*Update elements: */ … … 90 90 iomodel->FindConstant(&ismungsm,"md.smb.ismungsm"); 91 91 iomodel->FindConstant(&isd18opd,"md.smb.isd18opd"); 92 iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac"); 92 93 iomodel->FetchDataToInput(elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum); 93 94 iomodel->FetchDataToInput(elements,"md.smb.s0p",SmbS0pEnum); … … 97 98 iomodel->FetchDataToInput(elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum); 98 99 } 99 100 if(issetpddfac){ 101 iomodel->FetchDataToInput(elements,"md.smb.pddfac_snow",SmbPddfacSnowEnum,-1.); 102 iomodel->FetchDataToInput(elements,"md.smb.pddfac_ice",SmbPddfacIceEnum,-1.); 103 } 100 104 break; 101 105 case SMBgradientsEnum: … … 137 141 int numoutputs; 138 142 char** requestedoutputs = NULL; 139 bool isdelta18o,ismungsm,isd18opd,i nterp;143 bool isdelta18o,ismungsm,isd18opd,issetpddfac,interp; 140 144 int smb_model; 141 145 IssmDouble *temp = NULL; … … 176 180 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdelta18o",SmbIsdelta18oEnum)); 177 181 parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum)); 182 parameters->AddObject(iomodel->CopyConstantObject("md.smb.issetpddfac",SmbIssetpddfacEnum)); 178 183 parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum)); 179 184 parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum)); … … 208 213 parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum)); 209 214 parameters->AddObject(iomodel->CopyConstantObject("md.smb.isd18opd",SmbIsd18opdEnum)); 215 parameters->AddObject(iomodel->CopyConstantObject("md.smb.issetpddfac",SmbIssetpddfacEnum)); 210 216 parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum)); 211 217 parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum)); … … 213 219 iomodel->FindConstant(&ismungsm,"md.smb.ismungsm"); 214 220 iomodel->FindConstant(&isd18opd,"md.smb.isd18opd"); 221 iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac"); 215 222 if(isd18opd){ 216 223 iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r22429 r22448 2128 2128 } 2129 2129 /*}}}*/ 2130 void Element::PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm ){/*{{{*/2130 void Element::PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm,bool issetpddfac){/*{{{*/ 2131 2131 2132 2132 int numvertices = this->GetNumberOfVertices(); … … 2144 2144 IssmDouble* s0p=xNew<IssmDouble>(numvertices); 2145 2145 IssmDouble* s0t=xNew<IssmDouble>(numvertices); 2146 IssmDouble pddsnowfac = -1.; 2147 IssmDouble pddicefac = -1.; 2146 2148 IssmDouble rho_water,rho_ice,desfac,rlaps,rlapslgm; 2147 2149 IssmDouble PfacTime,TdiffTime,sealevTime; … … 2190 2192 } 2191 2193 2194 /*Recover pdd factors at time t. 2195 * This parameter is set, if the user wants to define the 2196 * pdd factors regionally, if issetpddfac==1 in the d18opdd method */ 2197 if (issetpddfac==1){ 2198 input=this->GetInput(SmbPddfacSnowEnum); _assert_(input); 2199 input2=this->GetInput(SmbPddfacIceEnum); _assert_(input2); 2200 } 2201 2192 2202 /*Recover info at the vertices: */ 2193 2203 GetInputListOnVertices(&h[0],ThicknessEnum); … … 2198 2208 /*measure the surface mass balance*/ 2199 2209 for (int iv = 0; iv<numvertices; iv++){ 2210 gauss->GaussVertex(iv); 2211 pddsnowfac=-1.; 2212 pddicefac=-1.; 2213 input->GetInputValue(&pddsnowfac,gauss); 2214 input2->GetInputValue(&pddicefac,gauss); 2200 2215 agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv*12], &monthlyprec[iv*12], 2201 2216 pdds, pds, &melt[iv], &accu[iv], signorm, yts, h[iv], s[iv], 2202 2217 desfac, s0t[iv], s0p[iv],rlaps,rlapslgm,TdiffTime,sealevTime, 2203 rho_water,rho_ice);2218 pddsnowfac,pddicefac,rho_water,rho_ice); 2204 2219 /*Get yearlytemperatures */ 2205 2220 for(int month=0;month<12;month++) { -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r22379 r22448 140 140 ElementMatrix* NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum); 141 141 ElementVector* NewElementVector(int approximation_enum=NoneApproximationEnum); 142 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm );142 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm,bool issetpddfac); 143 143 IssmDouble PureIceEnthalpy(IssmDouble pressure); 144 144 void ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum); -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
r22249 r22448 188 188 189 189 bool ismungsm; 190 bool issetpddfac; 190 191 191 192 IssmDouble *pdds = NULL; … … 198 199 // Get ismungsm parameter 199 200 femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum); 201 202 // Get issetpddfac parameter 203 femmodel->parameters->FindParam(&issetpddfac,SmbIssetpddfacEnum); 200 204 201 205 /* initialize PDD (creation of a lookup table)*/ … … 253 257 for(i=0;i<femmodel->elements->Size();i++){ 254 258 element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 255 element->PositiveDegreeDay(pdds,pds,signorm,ismungsm );259 element->PositiveDegreeDay(pdds,pds,signorm,ismungsm,issetpddfac); 256 260 } 257 261 /*free ressouces: */ -
issm/trunk-jpl/src/c/shared/Elements/PddSurfaceMassBalance.cpp
r19325 r22448 4 4 */ 5 5 6 #include "../io/io.h" 6 7 #include "./elements.h" 7 8 #include "../Numerics/numerics.h" … … 11 12 IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac, 12 13 IssmDouble s0t,IssmDouble s0p, IssmDouble rlaps,IssmDouble rlapslgm, 13 IssmDouble TdiffTime,IssmDouble sealevTime, 14 IssmDouble TdiffTime,IssmDouble sealevTime, IssmDouble pddsnowfac,IssmDouble pddicefac, 14 15 IssmDouble rho_water,IssmDouble rho_ice){ 15 16 … … 67 68 IssmDouble fsupT=0.5, fsupndd=0.5; // Tsurf mode factors for supice 68 69 IssmDouble pddtj, hmx2; 70 IssmDouble pddsnowfac0=4.3, pddicefac0=8.3; 71 IssmDouble snowfac, icefac; 69 72 70 73 sconv=(rho_water/rho_ice)/12.; //rhow_rain/rhoi / 12 months … … 128 131 prect = qmp; // total precipitation during 1 year taking into account des. ef. 129 132 Tsum=Tsum/3; 133 134 snowfac=pddsnowfac0; 135 icefac=pddicefac0; 136 if (pddsnowfac>=0) { 137 if (pddsnowfac<1.65) { 138 _printf0_("WARNING: Pdd snow factor input, " << pddsnowfac << ", results in a negative value. It will be ignored. \n"); 139 } 140 else{ 141 snowfac=pddsnowfac; 142 } 143 } 144 if (pddicefac>=0) { 145 if (pddicefac>17.22) { 146 _printf0_("WARNING: Pdd ice factor input, " << pddsnowfac << ", results in a negative value. It will be ignored. \n"); 147 } 148 else{ 149 icefac=pddicefac; 150 } 151 } 130 152 131 153 /***** determine PDD factors *****/ 132 154 if(Tsum< -1.) { 133 snwmf= 2.65*0.001; // ablation factor for snow per positive degree day.*0.001 to go from mm to m/ppd155 snwmf=(2.65+snowfac-pddsnowfac0)*0.001; // ablation factor for snow per positive degree day.*0.001 to go from mm to m/ppd 134 156 smf=17.22*0.001; // ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002) 135 157 } 136 158 else if(Tsum< 10){ 137 snwmf = (0.15* Tsum + 2.8)*0.001;138 smf = ( 0.0067*pow((10.-Tsum),3) + 8.3)*0.001;159 snwmf = (0.15*(Tsum+1) + (2.65+snowfac-pddsnowfac0))*0.001; 160 smf = (((icefac-pddicefac0)/(Tsum+1))*pow((10.-Tsum),3) + pddicefac0)*0.001; 139 161 } 140 162 else{ 141 snwmf= 4.3*0.001;142 smf= 8.3*0.001;163 snwmf=snowfac*0.001; 164 smf=icefac*0.001; 143 165 } 144 166 snwmf=0.95*snwmf; -
issm/trunk-jpl/src/c/shared/Elements/elements.h
r21826 r22448 22 22 IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,IssmDouble s0t, 23 23 IssmDouble s0p, IssmDouble rlaps, IssmDouble rlapslgm, 24 IssmDouble TdiffTime,IssmDouble sealevTime, 24 IssmDouble TdiffTime,IssmDouble sealevTime,IssmDouble pddsnowfac,IssmDouble pddicefac, 25 25 IssmDouble rho_water, IssmDouble rho_ice); 26 26 void ComputeDelta18oTemperaturePrecipitation(IssmDouble Delta18oSurfacePresent, IssmDouble Delta18oSurfaceLgm, IssmDouble Delta18oSurfaceTime, -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r22416 r22448 474 474 SmbDelta18oSurfaceEnum, 475 475 SmbIsdelta18oEnum, 476 SmbIssetpddfacEnum, 476 477 SmbIsmungsmEnum, 477 478 SmbIsd18opdEnum, … … 481 482 SmbTemperaturesLgmEnum, 482 483 SmbPrecipitationEnum, 484 SmbPddfacSnowEnum, 485 SmbPddfacIceEnum, 483 486 SmbDesfacEnum, 484 487 SmbS0pEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r22416 r22448 475 475 case SmbDelta18oSurfaceEnum : return "SmbDelta18oSurface"; 476 476 case SmbIsdelta18oEnum : return "SmbIsdelta18o"; 477 case SmbIssetpddfacEnum : return "SmbIssetpddfac"; 477 478 case SmbIsmungsmEnum : return "SmbIsmungsm"; 478 479 case SmbIsd18opdEnum : return "SmbIsd18opd"; … … 482 483 case SmbTemperaturesLgmEnum : return "SmbTemperaturesLgm"; 483 484 case SmbPrecipitationEnum : return "SmbPrecipitation"; 485 case SmbPddfacSnowEnum : return "SmbPddfacSnow"; 486 case SmbPddfacIceEnum : return "SmbPddfacIce"; 484 487 case SmbDesfacEnum : return "SmbDesfac"; 485 488 case SmbS0pEnum : return "SmbS0p"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r22416 r22448 484 484 else if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum; 485 485 else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum; 486 else if (strcmp(name,"SmbIssetpddfac")==0) return SmbIssetpddfacEnum; 486 487 else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum; 487 488 else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum; … … 491 492 else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum; 492 493 else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum; 494 else if (strcmp(name,"SmbPddfacSnow")==0) return SmbPddfacSnowEnum; 495 else if (strcmp(name,"SmbPddfacIce")==0) return SmbPddfacIceEnum; 493 496 else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum; 494 497 else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum; … … 503 506 else if (strcmp(name,"SmbF")==0) return SmbFEnum; 504 507 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; 505 else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;506 else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;507 else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum; 511 if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum; 512 else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum; 513 else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum; 514 else if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum; 512 515 else if (strcmp(name,"SmbBNeg")==0) return SmbBNegEnum; 513 516 else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum; … … 626 629 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 627 630 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 628 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;629 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;630 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"J")==0) return JEnum; 634 if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 635 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 636 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 637 else if (strcmp(name,"J")==0) return JEnum; 635 638 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 636 639 else if (strcmp(name,"Step")==0) return StepEnum; … … 749 752 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum; 750 753 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; 751 else if (strcmp(name,"AugmentedLagrangianR")==0) return AugmentedLagrangianREnum;752 else if (strcmp(name,"AugmentedLagrangianRhop")==0) return AugmentedLagrangianRhopEnum;753 else if (strcmp(name,"AugmentedLagrangianRlambda")==0) return AugmentedLagrangianRlambdaEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"AugmentedLagrangianRholambda")==0) return AugmentedLagrangianRholambdaEnum; 757 if (strcmp(name,"AugmentedLagrangianR")==0) return AugmentedLagrangianREnum; 758 else if (strcmp(name,"AugmentedLagrangianRhop")==0) return AugmentedLagrangianRhopEnum; 759 else if (strcmp(name,"AugmentedLagrangianRlambda")==0) return AugmentedLagrangianRlambdaEnum; 760 else if (strcmp(name,"AugmentedLagrangianRholambda")==0) return AugmentedLagrangianRholambdaEnum; 758 761 else if (strcmp(name,"AugmentedLagrangianTheta")==0) return AugmentedLagrangianThetaEnum; 759 762 else if (strcmp(name,"None")==0) return NoneEnum; … … 872 875 else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum; 873 876 else if (strcmp(name,"EsaEmotion")==0) return EsaEmotionEnum; 874 else if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum;875 else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum;876 else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum; 880 if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum; 881 else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum; 882 else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum; 883 else if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum; 881 884 else if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum; 882 885 else if (strcmp(name,"EsaStrainrateyy")==0) return EsaStrainrateyyEnum; … … 995 998 else if (strcmp(name,"BalancevelocitySolution")==0) return BalancevelocitySolutionEnum; 996 999 else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum; 997 else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum;998 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;999 else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum; 1003 if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum; 1004 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 1005 else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum; 1006 else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum; 1004 1007 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 1005 1008 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; … … 1118 1121 else if (strcmp(name,"Loads")==0) return LoadsEnum; 1119 1122 else if (strcmp(name,"Materials")==0) return MaterialsEnum; 1120 else if (strcmp(name,"Nodes")==0) return NodesEnum;1121 else if (strcmp(name,"Contours")==0) return ContoursEnum;1122 else if (strcmp(name,"Parameters")==0) return ParametersEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"Vertices")==0) return VerticesEnum; 1126 if (strcmp(name,"Nodes")==0) return NodesEnum; 1127 else if (strcmp(name,"Contours")==0) return ContoursEnum; 1128 else if (strcmp(name,"Parameters")==0) return ParametersEnum; 1129 else if (strcmp(name,"Vertices")==0) return VerticesEnum; 1127 1130 else if (strcmp(name,"Results")==0) return ResultsEnum; 1128 1131 else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum; -
issm/trunk-jpl/src/m/classes/SMBd18opdd.m
r21917 r22448 17 17 ismungsm = 0; 18 18 isd18opd = 0; 19 issetpddfac = 0; 19 20 delta18o = NaN; 20 21 delta18o_surface = NaN; 21 22 temperatures_presentday = NaN; 22 23 precipitations_presentday = NaN; 24 pddfac_snow = NaN; 25 pddfac_ice = NaN; 23 26 requested_outputs = {}; 24 27 end … … 35 38 if(self.isd18opd),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end 36 39 if(self.isd18opd),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end 40 if(self.issetpddfac), self.pddfac_snow=project3d(md,'vector',self.pddfac_snow,'type','node');end 41 if(self.issetpddfac), self.pddfac_ice=project3d(md,'vector',self.pddfac_ice,'type','node');end 37 42 self.s0p=project3d(md,'vector',self.s0p,'type','node'); 38 43 self.s0t=project3d(md,'vector',self.s0t,'type','node'); 39 44 40 45 end % }}} 41 46 function list = defaultoutputs(self,md) % {{{ 42 47 43 48 list = {''}; … … 65 70 self.dpermil = 2.4; 66 71 self.f = 0.169; 72 self.issetpddfac = 0; 67 73 68 74 end % }}} … … 86 92 md = checkfield(md,'fieldname','smb.f','>=',0,'numel',1); 87 93 end 94 if(self.issetpddfac==1) 95 md = checkfield(md,'fieldname','smb.pddfac_snow','>=',0,'NaN',1,'Inf',1); 96 md = checkfield(md,'fieldname','smb.pddfac_ice','>=',0,'NaN',1,'Inf',1); 97 end 88 98 end 89 99 md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1); … … 94 104 disp(sprintf('\n PDD and deltaO18 parameters:')); 95 105 fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'); 106 fielddisplay(self,'issetpddfac','is user passing in defined pdd factors at each vertex (0 or 1, default is 0)'); 96 107 fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'); 97 108 fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'); … … 104 115 fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'); 105 116 fielddisplay(self,'f','precip/temperature scaling factor, required if d18opd is activated'); 117 end 118 if(self.issetpddfac==1) 119 fielddisplay(self,'pddfac_snow','Pdd factor for snow, at each vertex [mm ice equiv/day/degree C]'); 120 fielddisplay(self,'pddfac_ice','Pdd factor for ice, at each vertex [mm ice equiv/day/degree C]'); 106 121 end 107 122 fielddisplay(self,'requested_outputs','additional outputs requested'); … … 118 133 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean'); 119 134 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isd18opd','format','Boolean'); 135 WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean'); 120 136 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double'); 121 137 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1); … … 133 149 WriteData(fid,prefix,'object',self,'class','smb','fieldname','f','format','Double'); 134 150 end 151 if self.issetpddfac==1 152 WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_snow','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 153 WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_ice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 154 end 135 155 136 156 %process requested outputs -
issm/trunk-jpl/src/m/classes/SMBd18opdd.py
r21917 r22448 25 25 self.ismungsm = 0 26 26 self.isd18opd = 0 27 self.setpddfac = 0 27 28 self.delta18o = float('NaN') 28 29 self.delta18o_surface = float('NaN') 29 30 self.temperatures_presentday = float('NaN') 30 31 self.precipitations_presentday = float('NaN') 32 self.pddfac_snow = float('NaN') 33 self.pddfac_ice = float('NaN') 31 34 32 35 #set defaults … … 38 41 39 42 string="%s\n%s"%(string,fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)')) 43 string="%s\n%s"%(string,fielddisplay(self,'issetpddfac','is user passing in defined pdd factors at each vertex (0 or 1, default is 0)')) 40 44 string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]')) 41 45 string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]')) … … 47 51 string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated')) 48 52 string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated')) 53 54 if self.issetpddfac==1: 55 string="%s\n%s"%(string,fielddisplay(self,'pddfac_snow','Pdd factor for snow, at each vertex [mm ice equiv/day/degree C]')) 56 string="%s\n%s"%(string,fielddisplay(self,'pddfac_ice','Pdd factor for ice, at each vertex [mm ice equiv/day/degree C]')) 49 57 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested')) 50 58 … … 55 63 if self.isd18opd: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node') 56 64 if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node') 65 if self.issetpddfac: self.pddfac_snow=project3d(md,'vector',self.pddfac_snow,'type','node') 66 if self.issetpddfac: self.pddfac_ice=project3d(md,'vector',self.pddfac_ice,'type','node') 57 67 self.s0p=project3d(md,'vector',self.s0p,'type','node') 58 68 self.s0t=project3d(md,'vector',self.s0t,'type','node') … … 85 95 self.dpermil = 2.4 86 96 self.f = 0.169 97 self.issetpddfac = 0 87 98 return self 88 99 #}}} … … 107 118 md = checkfield(md,'fieldname','smb.f','>=',0,'numel',[1]) 108 119 120 if self.issetpddfac: 121 md = checkfield(md,'fieldname','smb.pddfac_snow','>=',0,'NaN',1,'Inf',1) 122 md = checkfield(md,'fieldname','smb.pddfac_ice','>=',0,'NaN',1,'Inf',1) 123 109 124 md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1) 110 125 … … 119 134 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean') 120 135 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isd18opd','format','Boolean') 136 WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean'); 121 137 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double') 122 138 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1); … … 133 149 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double') 134 150 WriteData(fid,prefix,'object',self,'class','smb','fieldname','f','format','Double') 151 152 if self.issetpddfac: 153 WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_snow','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 154 WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_ice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 155 135 156 #process requested outputs 136 157 outputs = self.requested_outputs -
issm/trunk-jpl/src/m/classes/SMBpdd.m
r21049 r22448 18 18 isdelta18o = 0; 19 19 ismungsm = 0; 20 issetpddfac = 0; 20 21 delta18o = NaN; 21 22 delta18o_surface = NaN; … … 148 149 149 150 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean'); 151 WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean'); 150 152 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean'); 151 153 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double'); -
issm/trunk-jpl/src/m/classes/SMBpdd.py
r21303 r22448 26 26 self.isdelta18o = 0 27 27 self.ismungsm = 0 28 self.issetpddfac = 0 28 29 self.delta18o = float('NaN') 29 30 self.delta18o_surface = float('NaN') … … 156 157 WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean') 157 158 WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean') 159 WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean'); 158 160 WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double') 159 161 WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
Note:
See TracChangeset
for help on using the changeset viewer.