source:
issm/oecreview/Archive/16554-17801/ISSM-17077-17078.diff@
17802
Last change on this file since 17802 was 17802, checked in by , 11 years ago | |
---|---|
File size: 37.0 KB |
-
../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
89 89 case SMBEnum: 90 90 iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum,0.); 91 91 break; 92 case SMBpddEnum: 93 iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum); 94 iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum); 95 if(isdelta18o){ 96 iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesLgmEnum); 97 iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesPresentdayEnum); 98 iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsPresentdayEnum); 99 } 100 else{ 101 iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum); 102 iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum); 103 } 104 break; 105 case SMBgradientsEnum: 106 iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum); 107 iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum); 108 iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum); 109 iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum); 110 break; 92 111 case SurfaceforcingsEnum: /*To Be REMOVED*/ 93 112 iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum); 94 113 iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum); -
../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
280 280 SurfaceforcingsEnum, 281 281 SMBEnum, 282 282 SurfaceforcingsMassBalanceEnum, 283 283 SMBpddEnum, 284 284 SurfaceforcingsDelta18oEnum, 285 285 SurfaceforcingsDelta18oSurfaceEnum, 286 286 SurfaceforcingsIsdelta18oEnum, … … 288 288 SurfaceforcingsTemperaturesPresentdayEnum, 289 289 SurfaceforcingsTemperaturesLgmEnum, 290 290 SurfaceforcingsPrecipitationEnum, 291 SurfaceforcingsIspddEnum,292 291 SurfaceforcingsDesfacEnum, 293 292 SurfaceforcingsS0pEnum, 294 S urfaceforcingsIssmbgradientsEnum,293 SMBgradientsEnum, 295 294 SurfaceforcingsMonthlytemperaturesEnum, 296 295 SurfaceforcingsHrefEnum, 297 296 SurfaceforcingsSmbrefEnum, 298 297 SurfaceforcingsBPosEnum, 299 298 SurfaceforcingsBNegEnum, 299 SMBlapserate, 300 /*TO BE REMOVED*/ 301 SurfaceforcingsIspddEnum, 302 SurfaceforcingsIssmbgradientsEnum, 300 303 /*}}}*/ 301 304 /*Solutions and Analyses{{{ */ 302 305 SolutionTypeEnum, -
../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
284 284 case SurfaceforcingsEnum : return "Surfaceforcings"; 285 285 case SMBEnum : return "SMB"; 286 286 case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance"; 287 case SMBpddEnum : return "SMBpdd"; 287 288 case SurfaceforcingsDelta18oEnum : return "SurfaceforcingsDelta18o"; 288 289 case SurfaceforcingsDelta18oSurfaceEnum : return "SurfaceforcingsDelta18oSurface"; 289 290 case SurfaceforcingsIsdelta18oEnum : return "SurfaceforcingsIsdelta18o"; … … 291 292 case SurfaceforcingsTemperaturesPresentdayEnum : return "SurfaceforcingsTemperaturesPresentday"; 292 293 case SurfaceforcingsTemperaturesLgmEnum : return "SurfaceforcingsTemperaturesLgm"; 293 294 case SurfaceforcingsPrecipitationEnum : return "SurfaceforcingsPrecipitation"; 294 case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";295 295 case SurfaceforcingsDesfacEnum : return "SurfaceforcingsDesfac"; 296 296 case SurfaceforcingsS0pEnum : return "SurfaceforcingsS0p"; 297 case S urfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";297 case SMBgradientsEnum : return "SMBgradients"; 298 298 case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures"; 299 299 case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref"; 300 300 case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref"; 301 301 case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos"; 302 302 case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg"; 303 case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd"; 304 case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients"; 303 305 case SolutionTypeEnum : return "SolutionType"; 304 306 case AnalysisTypeEnum : return "AnalysisType"; 305 307 case ConfigurationTypeEnum : return "ConfigurationType"; -
../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
290 290 else if (strcmp(name,"Surfaceforcings")==0) return SurfaceforcingsEnum; 291 291 else if (strcmp(name,"SMB")==0) return SMBEnum; 292 292 else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum; 293 else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum; 293 294 else if (strcmp(name,"SurfaceforcingsDelta18o")==0) return SurfaceforcingsDelta18oEnum; 294 295 else if (strcmp(name,"SurfaceforcingsDelta18oSurface")==0) return SurfaceforcingsDelta18oSurfaceEnum; 295 296 else if (strcmp(name,"SurfaceforcingsIsdelta18o")==0) return SurfaceforcingsIsdelta18oEnum; … … 297 298 else if (strcmp(name,"SurfaceforcingsTemperaturesPresentday")==0) return SurfaceforcingsTemperaturesPresentdayEnum; 298 299 else if (strcmp(name,"SurfaceforcingsTemperaturesLgm")==0) return SurfaceforcingsTemperaturesLgmEnum; 299 300 else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum; 300 else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;301 301 else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum; 302 302 else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum; 303 else if (strcmp(name,"S urfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;303 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; 304 304 else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum; 305 305 else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum; 306 306 else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum; 307 307 else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum; 308 308 else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; 309 else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum; 310 else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum; 309 311 else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum; 310 312 else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum; 311 313 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum; … … 380 382 else if (strcmp(name,"AdolcParam")==0) return AdolcParamEnum; 381 383 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 382 384 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 383 else if (strcmp(name,"Contour")==0) return ContourEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"Contour")==0) return ContourEnum; 384 389 else if (strcmp(name,"ControlInput")==0) return ControlInputEnum; 385 390 else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum; 386 391 else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum; 387 else stage=4; 388 } 389 if(stage==4){ 390 if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum; 392 else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum; 391 393 else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum; 392 394 else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum; 393 395 else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum; … … 503 505 else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum; 504 506 else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum; 505 507 else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum; 506 else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum; 507 512 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 508 513 else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum; 509 514 else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum; 510 else stage=5; 511 } 512 if(stage==5){ 513 if (strcmp(name,"TransientInput")==0) return TransientInputEnum; 515 else if (strcmp(name,"TransientInput")==0) return TransientInputEnum; 514 516 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; 515 517 else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum; 516 518 else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum; … … 626 628 else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum; 627 629 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 628 630 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 629 else if (strcmp(name,"XY")==0) return XYEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"XY")==0) return XYEnum; 630 635 else if (strcmp(name,"XYZ")==0) return XYZEnum; 631 636 else if (strcmp(name,"Dense")==0) return DenseEnum; 632 637 else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; 633 else stage=6; 634 } 635 if(stage==6){ 636 if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum; 638 else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum; 637 639 else if (strcmp(name,"Seq")==0) return SeqEnum; 638 640 else if (strcmp(name,"Mpi")==0) return MpiEnum; 639 641 else if (strcmp(name,"Mumps")==0) return MumpsEnum; -
../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
90 90 case SMBEnum: 91 91 /*Nothing to add to parameters*/ 92 92 break; 93 case SMBpddEnum: 94 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum)); 95 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum)); 96 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0pEnum)); 97 iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum); 98 if(isdelta18o){ 99 IssmDouble *temp = NULL; 100 IssmDouble yts; 101 int N,M; 102 iomodel->Constant(&yts,ConstantsYtsEnum); 103 iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oEnum); _assert_(N==2); 104 for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i]; 105 parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],M)); 106 iomodel->DeleteData(temp,SurfaceforcingsDelta18oEnum); 107 108 iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oSurfaceEnum); _assert_(N==2); 109 for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i]; 110 parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oSurfaceEnum,&temp[0],&temp[M],M)); 111 iomodel->DeleteData(temp,SurfaceforcingsDelta18oSurfaceEnum); 112 } 113 break; 114 case SMBgradientsEnum: 115 /*Nothing to add to parameters*/ 116 break; 93 117 case SurfaceforcingsEnum: /*To Be REMOVED*/ 94 118 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIspddEnum)); 95 119 parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum)); -
../trunk-jpl/src/c/cores/transient_core.cpp
21 21 /*parameters: */ 22 22 int i; 23 23 IssmDouble starttime,finaltime,dt,yts; 24 bool isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,is delta18o,isgia,islevelset;24 bool isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isgia,islevelset; 25 25 bool save_results,dakota_analysis; 26 26 bool time_adapt=false; 27 27 int output_frequency; 28 int meshtype,groundingline_migration ;28 int meshtype,groundingline_migration,smb_model; 29 29 int numoutputs = 0; 30 30 Analysis *analysis = NULL; 31 31 char** requested_outputs = NULL; … … 53 53 if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum); 54 54 femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum); 55 55 if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum); 56 femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);57 56 58 57 /*initialize: */ 59 58 step=0; … … 169 168 /*unload results*/ 170 169 if(VerboseSolution()) _printf0_(" computing requested outputs\n"); 171 170 femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs,save_results); 172 if(isdelta18o){173 int outputs[2] = {SurfaceforcingsMonthlytemperaturesEnum,SurfaceforcingsPrecipitationEnum};174 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2,save_results);175 }176 171 if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){ 177 172 int outputs[1] = {MaskGroundediceLevelsetEnum}; 178 173 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1,save_results); -
../trunk-jpl/src/c/cores/masstransport_core.cpp
44 44 case SMBEnum: 45 45 /*Nothing to be done*/ 46 46 break; 47 case SMBpddEnum: 48 femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum); 49 if(isdelta18o){ 50 if(VerboseSolution()) _printf0_(" call Delta18oParametrization module\n"); 51 Delta18oParameterizationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 52 } 53 if(VerboseSolution()) _printf0_(" call positive degree day module\n"); 54 PositiveDegreeDayx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 55 break; 56 case SMBgradientsEnum: 57 if(VerboseSolution())_printf_(" call smb gradients module\n\n"); 58 SmbGradientsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 59 break; 47 60 case SurfaceforcingsEnum: /*To Be REMOVED*/ 48 61 femmodel->parameters->FindParam(&issmbgradients,SurfaceforcingsIssmbgradientsEnum); 49 62 femmodel->parameters->FindParam(&ispdd,SurfaceforcingsIspddEnum); -
../trunk-jpl/src/c/classes/Materials/Matpar.cpp
46 46 case SMBEnum: 47 47 /*Nothing to add*/ 48 48 break; 49 case SMBpddEnum: 50 iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum); 51 iomodel->Constant(&this->s0p,SurfaceforcingsS0pEnum); 52 break; 53 case SMBgradientsEnum: 54 /*Nothing to add*/ 55 break; 49 56 case SurfaceforcingsEnum: /*To Be REMOVED*/ 50 57 iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum); 51 58 if(ispdd){ -
../trunk-jpl/src/m/classes/SMBpdd.py
1 from fielddisplay import fielddisplay 2 from EnumDefinitions import * 3 from checkfield import * 4 from WriteData import * 5 6 class SMBpdd(object): 7 """ 8 SMBpdd Class definition 9 10 Usage: 11 SMBpdd=SMBpdd(); 12 """ 13 14 def __init__(self): # {{{ 15 self.precipitation = float('NaN') 16 self.monthlytemperatures = float('NaN') 17 self.desfac = 0. 18 self.s0p = 0. 19 self.isdelta18o = 0 20 self.delta18o = float('NaN') 21 self.delta18o_surface = float('NaN') 22 self.temperatures_presentday = float('NaN') 23 self.temperatures_lgm = float('NaN') 24 self.precipitations_presentday = float('NaN') 25 26 #set defaults 27 self.setdefaultparameters() 28 #}}} 29 def __repr__(self): # {{{ 30 string=" surface forcings parameters:" 31 32 string="%s\n%s"%(string,fielddisplay(self,'precipitation','surface precipitation [m/yr water eq]')) 33 string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]')) 34 string="%s\n%s"%(string,fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)')) 35 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]')) 36 string="%s\n%s"%(string,fielddisplay(self,'monthlytemperatures','monthly surface temperatures [K], required if pdd is activated and delta18o not activated')) 37 string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if pdd is activated and delta18o activated')) 38 string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if pdd is activated and delta18o activated')) 39 string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o activated')) 40 string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o, required if pdd is activated and delta18o activated')) 41 string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated')) 42 43 return string 44 #}}} 45 def initialize(self,md): # {{{ 46 47 if numpy.all(numpy.isnan(self.precipitation)): 48 self.precipitation=numpy.zeros((md.mesh.numberofvertices,1)) 49 print " no SMBpdd.precipitation specified: values set as zero" 50 51 return self 52 #}}} 53 def setdefaultparameters(self): # {{{ 54 55 #pdd method not used in default mode 56 self.isdelta18o = 0 57 self.desfac = 0.5 58 self.s0p = 0. 59 60 return self 61 #}}} 62 def checkconsistency(self,md,solution,analyses): # {{{ 63 64 if MasstransportAnalysisEnum() in analyses: 65 md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',[1]); 66 md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',[1]); 67 if not self.isdelta18o: 68 md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','forcing',1,'NaN',1) 69 md = checkfield(md,'fieldname','surfaceforcings.precipitation','forcing',1,'NaN',1) 70 else: 71 md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1) 72 md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1) 73 md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1) 74 md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1) 75 md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1) 76 77 return md 78 # }}} 79 def marshall(self,md,fid): # {{{ 80 81 yts=365.0*24.0*3600.0 82 83 WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer'); 84 85 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 86 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean') 87 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double'); 88 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double'); 89 if self.isdelta18o: 90 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1) 91 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1) 92 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1) 93 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1) 94 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1) 95 else: 96 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1) 97 # }}} -
../trunk-jpl/src/m/classes/SMBpdd.m
1 %SMBpdd Class definition 2 % 3 % Usage: 4 % SMBpdd=SMBpdd(); 5 6 classdef SMBpdd 7 properties (SetAccess=public) 8 precipitation = NaN; 9 monthlytemperatures = NaN; 10 desfac = 0.5; 11 s0p = 0; 12 isdelta18o = 0; 13 delta18o = NaN; 14 delta18o_surface = NaN; 15 temperatures_presentday = NaN; 16 temperatures_lgm = NaN; 17 precipitations_presentday = NaN; 18 end 19 methods 20 function obj = SMBpdd(varargin) % {{{ 21 switch nargin 22 case 0 23 obj=setdefaultparameters(obj); 24 otherwise 25 error('constructor not supported'); 26 end 27 end % }}} 28 function self = initialize(self,md) % {{{ 29 30 if isnan(self.precipitation), 31 self.precipitation=zeros(md.mesh.numberofvertices,1); 32 disp(' no SMBpdd.precipitation specified: values set as zero'); 33 end 34 35 end % }}} 36 function obj = setdefaultparameters(obj) % {{{ 37 38 obj.isdelta18o = 0; 39 obj.desfac = 0.5; 40 obj.s0p = 0; 41 end % }}} 42 function md = checkconsistency(obj,md,solution,analyses) % {{{ 43 44 if ismember(MasstransportAnalysisEnum(),analyses), 45 md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',1); 46 md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',1); 47 if(obj.isdelta18o==0) 48 md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','forcing',1,'NaN',1); 49 md = checkfield(md,'fieldname','surfaceforcings.precipitation','forcing',1,'NaN',1); 50 else 51 md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1); 52 md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1); 53 md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1); 54 md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1); 55 md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1); 56 end 57 end 58 end % }}} 59 function disp(obj) % {{{ 60 disp(sprintf(' surface forcings parameters:')); 61 62 disp(sprintf('\n PDD and deltaO18 parameters:')); 63 fielddisplay(obj,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'); 64 fielddisplay(obj,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'); 65 fielddisplay(obj,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'); 66 fielddisplay(obj,'monthlytemperatures','monthly surface temperatures [K], required if pdd is activated and delta18o not activated'); 67 fielddisplay(obj,'precipitation','surface precipitation [m/yr water eq]'); 68 fielddisplay(obj,'temperatures_presentday','monthly present day surface temperatures [K], required if pdd is activated and delta18o activated'); 69 fielddisplay(obj,'temperatures_lgm','monthly LGM surface temperatures [K], required if pdd is activated and delta18o activated'); 70 fielddisplay(obj,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o activated'); 71 fielddisplay(obj,'delta18o','delta18o, required if pdd is activated and delta18o activated'); 72 fielddisplay(obj,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'); 73 74 end % }}} 75 function marshall(obj,md,fid) % {{{ 76 77 yts=365.0*24.0*3600.0; 78 79 WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer'); 80 81 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 82 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','desfac','format','Double'); 83 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','s0p','format','Double'); 84 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean'); 85 if obj.isdelta18o 86 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1); 87 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1); 88 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1); 89 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1); 90 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1); 91 else 92 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1); 93 end 94 end % }}} 95 end 96 end -
../trunk-jpl/src/m/classes/SMBgradients.m
1 %SMBgradients Class definition 2 % 3 % Usage: 4 % SMBgradients=SMBgradients(); 5 6 classdef SMBgradients 7 properties (SetAccess=public) 8 href = NaN; 9 smbref = NaN; 10 b_pos = NaN; 11 b_neg = NaN; 12 end 13 methods 14 function obj = SMBgradients(varargin) % {{{ 15 switch nargin 16 case 0 17 obj=setdefaultparameters(obj); 18 otherwise 19 error('constructor not supported'); 20 end 21 end % }}} 22 function self = initialize(self,md) % {{{ 23 24 %Nothing done for now 25 26 end % }}} 27 function obj = setdefaultparameters(obj) % {{{ 28 29 %Nothing for now 30 31 end % }}} 32 function md = checkconsistency(obj,md,solution,analyses) % {{{ 33 34 if ismember(MasstransportAnalysisEnum(),analyses), 35 md = checkfield(md,'fieldname','surfaceforcings.href','forcing',1,'NaN',1); 36 md = checkfield(md,'fieldname','surfaceforcings.smbref','forcing',1,'NaN',1); 37 md = checkfield(md,'fieldname','surfaceforcings.b_pos','forcing',1,'NaN',1); 38 md = checkfield(md,'fieldname','surfaceforcings.b_neg','forcing',1,'NaN',1); 39 end 40 end % }}} 41 function disp(obj) % {{{ 42 disp(sprintf(' surface forcings parameters:')); 43 44 disp(sprintf('\n SMB gradients parameters:')); 45 fielddisplay(obj,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'); 46 fielddisplay(obj,'smbref',' reference smb from which deviation is calculated in smb gradients method'); 47 fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'); 48 fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'); 49 50 end % }}} 51 function marshall(obj,md,fid) % {{{ 52 53 yts=365.0*24.0*3600.0; 54 55 WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer'); 56 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1); 57 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 58 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 59 WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 60 61 end % }}} 62 end 63 end -
../trunk-jpl/src/m/classes/model.py
8 8 from constants import constants 9 9 from surfaceforcings import surfaceforcings 10 10 from SMB import SMB 11 from SMBpdd import SMBpdd 12 from SMBgradients import SMBgradients 11 13 from basalforcings import basalforcings 12 14 from matice import matice 13 15 from damage import damage -
../trunk-jpl/src/m/classes/SMBgradients.py
1 from fielddisplay import fielddisplay 2 from EnumDefinitions import * 3 from checkfield import * 4 from WriteData import * 5 6 class SMBgradients(object): 7 """ 8 SMBgradients Class definition 9 10 Usage: 11 SMBgradients=SMBgradients(); 12 """ 13 14 def __init__(self): # {{{ 15 self.href = float('NaN') 16 self.smbref = float('NaN') 17 self.b_pos = float('NaN') 18 self.b_neg = float('NaN') 19 #}}} 20 def __repr__(self): # {{{ 21 string=" surface forcings parameters:" 22 23 string="%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)')) 24 string="%s\n%s"%(string,fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method')) 25 string="%s\n%s"%(string,fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method')) 26 string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated')) 27 string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated')) 28 29 return string 30 #}}} 31 def initialize(self,md): # {{{ 32 33 #Nothing for now 34 35 return self 36 #}}} 37 def checkconsistency(self,md,solution,analyses): # {{{ 38 39 if MasstransportAnalysisEnum() in analyses: 40 md = checkfield(md,'fieldname','surfaceforcings.href','forcing',1,'NaN',1) 41 md = checkfield(md,'fieldname','surfaceforcings.smbref','forcing',1,'NaN',1) 42 md = checkfield(md,'fieldname','surfaceforcings.b_pos','forcing',1,'NaN',1) 43 md = checkfield(md,'fieldname','surfaceforcings.b_neg','forcing',1,'NaN',1) 44 45 return md 46 # }}} 47 def marshall(self,md,fid): # {{{ 48 49 yts=365.0*24.0*3600.0 50 51 WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer'); 52 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1) 53 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 54 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 55 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 56 # }}} -
../trunk-jpl/src/m/enum/SMBpddEnum.m
1 function macro=SMBpddEnum() 2 %SMBPDDENUM - Enum of SMBpdd 3 % 4 % WARNING: DO NOT MODIFY THIS FILE 5 % this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 6 % Please read src/c/shared/Enum/README for more information 7 % 8 % Usage: 9 % macro=SMBpddEnum() 10 11 macro=StringToEnum('SMBpdd'); -
../trunk-jpl/src/m/enum/SMBgradientsEnum.m
1 function macro=SMBgradientsEnum() 2 %SMBGRADIENTSENUM - Enum of SMBgradients 3 % 4 % WARNING: DO NOT MODIFY THIS FILE 5 % this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 6 % Please read src/c/shared/Enum/README for more information 7 % 8 % Usage: 9 % macro=SMBgradientsEnum() 10 11 macro=StringToEnum('SMBgradients'); -
../trunk-jpl/src/m/enum/LevelsetAnalysisEnum.m
1 function macro=LevelsetAnalysisEnum() 2 %LEVELSETANALYSISENUM - Enum of LevelsetAnalysis 3 % 4 % WARNING: DO NOT MODIFY THIS FILE 5 % this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 6 % Please read src/c/shared/Enum/README for more information 7 % 8 % Usage: 9 % macro=LevelsetAnalysisEnum() 10 11 macro=StringToEnum('LevelsetAnalysis'); -
../trunk-jpl/src/m/enum/EnumDefinitions.py
276 276 def SurfaceforcingsEnum(): return StringToEnum("Surfaceforcings")[0] 277 277 def SMBEnum(): return StringToEnum("SMB")[0] 278 278 def SurfaceforcingsMassBalanceEnum(): return StringToEnum("SurfaceforcingsMassBalance")[0] 279 def SMBpddEnum(): return StringToEnum("SMBpdd")[0] 279 280 def SurfaceforcingsDelta18oEnum(): return StringToEnum("SurfaceforcingsDelta18o")[0] 280 281 def SurfaceforcingsDelta18oSurfaceEnum(): return StringToEnum("SurfaceforcingsDelta18oSurface")[0] 281 282 def SurfaceforcingsIsdelta18oEnum(): return StringToEnum("SurfaceforcingsIsdelta18o")[0] … … 283 284 def SurfaceforcingsTemperaturesPresentdayEnum(): return StringToEnum("SurfaceforcingsTemperaturesPresentday")[0] 284 285 def SurfaceforcingsTemperaturesLgmEnum(): return StringToEnum("SurfaceforcingsTemperaturesLgm")[0] 285 286 def SurfaceforcingsPrecipitationEnum(): return StringToEnum("SurfaceforcingsPrecipitation")[0] 286 def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]287 287 def SurfaceforcingsDesfacEnum(): return StringToEnum("SurfaceforcingsDesfac")[0] 288 288 def SurfaceforcingsS0pEnum(): return StringToEnum("SurfaceforcingsS0p")[0] 289 def S urfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]289 def SMBgradientsEnum(): return StringToEnum("SMBgradients")[0] 290 290 def SurfaceforcingsMonthlytemperaturesEnum(): return StringToEnum("SurfaceforcingsMonthlytemperatures")[0] 291 291 def SurfaceforcingsHrefEnum(): return StringToEnum("SurfaceforcingsHref")[0] 292 292 def SurfaceforcingsSmbrefEnum(): return StringToEnum("SurfaceforcingsSmbref")[0] 293 293 def SurfaceforcingsBPosEnum(): return StringToEnum("SurfaceforcingsBPos")[0] 294 294 def SurfaceforcingsBNegEnum(): return StringToEnum("SurfaceforcingsBNeg")[0] 295 def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0] 296 def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0] 295 297 def SolutionTypeEnum(): return StringToEnum("SolutionType")[0] 296 298 def AnalysisTypeEnum(): return StringToEnum("AnalysisType")[0] 297 299 def ConfigurationTypeEnum(): return StringToEnum("ConfigurationType")[0] -
../trunk-jpl/src/m/enum/TransientIslevelsetEnum.m
1 function macro=TransientIslevelsetEnum() 2 %TRANSIENTISLEVELSETENUM - Enum of TransientIslevelset 3 % 4 % WARNING: DO NOT MODIFY THIS FILE 5 % this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 6 % Please read src/c/shared/Enum/README for more information 7 % 8 % Usage: 9 % macro=TransientIslevelsetEnum() 10 11 macro=StringToEnum('TransientIslevelset');
Note:
See TracBrowser
for help on using the repository browser.