source: issm/oecreview/Archive/16554-17801/ISSM-17077-17078.diff@ 17802

Last change on this file since 17802 was 17802, checked in by Mathieu Morlighem, 11 years ago

Added archives

File size: 37.0 KB
  • ../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

     
    8989                case SMBEnum:
    9090                        iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum,0.);
    9191                        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;
    92111                case SurfaceforcingsEnum: /*To Be REMOVED*/
    93112                        iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
    94113                        iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
  • ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

     
    280280        SurfaceforcingsEnum,
    281281        SMBEnum,
    282282        SurfaceforcingsMassBalanceEnum,
    283 
     283        SMBpddEnum,
    284284        SurfaceforcingsDelta18oEnum,
    285285        SurfaceforcingsDelta18oSurfaceEnum,
    286286        SurfaceforcingsIsdelta18oEnum,
     
    288288        SurfaceforcingsTemperaturesPresentdayEnum,
    289289        SurfaceforcingsTemperaturesLgmEnum,
    290290        SurfaceforcingsPrecipitationEnum,
    291         SurfaceforcingsIspddEnum,
    292291        SurfaceforcingsDesfacEnum,
    293292        SurfaceforcingsS0pEnum,
    294         SurfaceforcingsIssmbgradientsEnum,
     293        SMBgradientsEnum,
    295294        SurfaceforcingsMonthlytemperaturesEnum,
    296295        SurfaceforcingsHrefEnum,
    297296        SurfaceforcingsSmbrefEnum,
    298297        SurfaceforcingsBPosEnum,
    299298        SurfaceforcingsBNegEnum,
     299        SMBlapserate,
     300        /*TO BE REMOVED*/
     301        SurfaceforcingsIspddEnum,
     302        SurfaceforcingsIssmbgradientsEnum,
    300303        /*}}}*/
    301304        /*Solutions and Analyses{{{ */
    302305        SolutionTypeEnum,
  • ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

     
    284284                case SurfaceforcingsEnum : return "Surfaceforcings";
    285285                case SMBEnum : return "SMB";
    286286                case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance";
     287                case SMBpddEnum : return "SMBpdd";
    287288                case SurfaceforcingsDelta18oEnum : return "SurfaceforcingsDelta18o";
    288289                case SurfaceforcingsDelta18oSurfaceEnum : return "SurfaceforcingsDelta18oSurface";
    289290                case SurfaceforcingsIsdelta18oEnum : return "SurfaceforcingsIsdelta18o";
     
    291292                case SurfaceforcingsTemperaturesPresentdayEnum : return "SurfaceforcingsTemperaturesPresentday";
    292293                case SurfaceforcingsTemperaturesLgmEnum : return "SurfaceforcingsTemperaturesLgm";
    293294                case SurfaceforcingsPrecipitationEnum : return "SurfaceforcingsPrecipitation";
    294                 case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
    295295                case SurfaceforcingsDesfacEnum : return "SurfaceforcingsDesfac";
    296296                case SurfaceforcingsS0pEnum : return "SurfaceforcingsS0p";
    297                 case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
     297                case SMBgradientsEnum : return "SMBgradients";
    298298                case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures";
    299299                case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref";
    300300                case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref";
    301301                case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos";
    302302                case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg";
     303                case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
     304                case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
    303305                case SolutionTypeEnum : return "SolutionType";
    304306                case AnalysisTypeEnum : return "AnalysisType";
    305307                case ConfigurationTypeEnum : return "ConfigurationType";
  • ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

     
    290290              else if (strcmp(name,"Surfaceforcings")==0) return SurfaceforcingsEnum;
    291291              else if (strcmp(name,"SMB")==0) return SMBEnum;
    292292              else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
     293              else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
    293294              else if (strcmp(name,"SurfaceforcingsDelta18o")==0) return SurfaceforcingsDelta18oEnum;
    294295              else if (strcmp(name,"SurfaceforcingsDelta18oSurface")==0) return SurfaceforcingsDelta18oSurfaceEnum;
    295296              else if (strcmp(name,"SurfaceforcingsIsdelta18o")==0) return SurfaceforcingsIsdelta18oEnum;
     
    297298              else if (strcmp(name,"SurfaceforcingsTemperaturesPresentday")==0) return SurfaceforcingsTemperaturesPresentdayEnum;
    298299              else if (strcmp(name,"SurfaceforcingsTemperaturesLgm")==0) return SurfaceforcingsTemperaturesLgmEnum;
    299300              else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum;
    300               else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
    301301              else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum;
    302302              else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum;
    303               else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
     303              else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
    304304              else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
    305305              else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
    306306              else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
    307307              else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
    308308              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;
    309311              else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
    310312              else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
    311313              else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
     
    380382              else if (strcmp(name,"AdolcParam")==0) return AdolcParamEnum;
    381383              else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
    382384              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;
    384389              else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
    385390              else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
    386391              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;
    391393              else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
    392394              else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
    393395              else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
     
    503505              else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
    504506              else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
    505507              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;
    507512              else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
    508513              else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
    509514              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;
    514516              else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    515517              else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
    516518              else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
     
    626628              else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
    627629              else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
    628630              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;
    630635              else if (strcmp(name,"XYZ")==0) return XYZEnum;
    631636              else if (strcmp(name,"Dense")==0) return DenseEnum;
    632637              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;
    637639              else if (strcmp(name,"Seq")==0) return SeqEnum;
    638640              else if (strcmp(name,"Mpi")==0) return MpiEnum;
    639641              else if (strcmp(name,"Mumps")==0) return MumpsEnum;
  • ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

     
    9090                case SMBEnum:
    9191                        /*Nothing to add to parameters*/
    9292                        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;
    93117                case SurfaceforcingsEnum: /*To Be REMOVED*/
    94118                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIspddEnum));
    95119                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum));
  • ../trunk-jpl/src/c/cores/transient_core.cpp

     
    2121        /*parameters: */
    2222        int    i;
    2323        IssmDouble starttime,finaltime,dt,yts;
    24         bool   isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isdelta18o,isgia,islevelset;
     24        bool   isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isgia,islevelset;
    2525        bool   save_results,dakota_analysis;
    2626        bool   time_adapt=false;
    2727        int    output_frequency;
    28         int    meshtype,groundingline_migration;
     28        int    meshtype,groundingline_migration,smb_model;
    2929        int    numoutputs         = 0;
    3030  Analysis *analysis = NULL;
    3131        char** requested_outputs = NULL;
     
    5353        if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
    5454        femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
    5555        if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum);
    56         femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
    5756
    5857        /*initialize: */
    5958        step=0;
     
    169168                /*unload results*/
    170169                if(VerboseSolution()) _printf0_("   computing requested outputs\n");
    171170                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                 }
    176171                if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){
    177172                        int outputs[1] = {MaskGroundediceLevelsetEnum};
    178173                        femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1,save_results);
  • ../trunk-jpl/src/c/cores/masstransport_core.cpp

     
    4444                case SMBEnum:
    4545                        /*Nothing to be done*/
    4646                        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;
    4760                case SurfaceforcingsEnum: /*To Be REMOVED*/
    4861                        femmodel->parameters->FindParam(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
    4962                        femmodel->parameters->FindParam(&ispdd,SurfaceforcingsIspddEnum);
  • ../trunk-jpl/src/c/classes/Materials/Matpar.cpp

     
    4646                case SMBEnum:
    4747                        /*Nothing to add*/
    4848                        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;
    4956                case SurfaceforcingsEnum: /*To Be REMOVED*/
    5057                        iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
    5158                        if(ispdd){
  • ../trunk-jpl/src/m/classes/SMBpdd.py

     
     1from fielddisplay import fielddisplay
     2from EnumDefinitions import *
     3from checkfield import *
     4from WriteData import *
     5
     6class 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
     6classdef 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
     96end
  • ../trunk-jpl/src/m/classes/SMBgradients.m

     
     1%SMBgradients Class definition
     2%
     3%   Usage:
     4%      SMBgradients=SMBgradients();
     5
     6classdef 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
     63end
  • ../trunk-jpl/src/m/classes/model.py

     
    88from constants import constants
    99from surfaceforcings import surfaceforcings
    1010from SMB import SMB
     11from SMBpdd import SMBpdd
     12from SMBgradients import SMBgradients
    1113from basalforcings import basalforcings
    1214from matice import matice
    1315from damage import damage
  • ../trunk-jpl/src/m/classes/SMBgradients.py

     
     1from fielddisplay import fielddisplay
     2from EnumDefinitions import *
     3from checkfield import *
     4from WriteData import *
     5
     6class 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

     
     1function 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
     11macro=StringToEnum('SMBpdd');
  • ../trunk-jpl/src/m/enum/SMBgradientsEnum.m

     
     1function 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
     11macro=StringToEnum('SMBgradients');
  • ../trunk-jpl/src/m/enum/LevelsetAnalysisEnum.m

     
     1function 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
     11macro=StringToEnum('LevelsetAnalysis');
  • ../trunk-jpl/src/m/enum/EnumDefinitions.py

     
    276276def SurfaceforcingsEnum(): return StringToEnum("Surfaceforcings")[0]
    277277def SMBEnum(): return StringToEnum("SMB")[0]
    278278def SurfaceforcingsMassBalanceEnum(): return StringToEnum("SurfaceforcingsMassBalance")[0]
     279def SMBpddEnum(): return StringToEnum("SMBpdd")[0]
    279280def SurfaceforcingsDelta18oEnum(): return StringToEnum("SurfaceforcingsDelta18o")[0]
    280281def SurfaceforcingsDelta18oSurfaceEnum(): return StringToEnum("SurfaceforcingsDelta18oSurface")[0]
    281282def SurfaceforcingsIsdelta18oEnum(): return StringToEnum("SurfaceforcingsIsdelta18o")[0]
     
    283284def SurfaceforcingsTemperaturesPresentdayEnum(): return StringToEnum("SurfaceforcingsTemperaturesPresentday")[0]
    284285def SurfaceforcingsTemperaturesLgmEnum(): return StringToEnum("SurfaceforcingsTemperaturesLgm")[0]
    285286def SurfaceforcingsPrecipitationEnum(): return StringToEnum("SurfaceforcingsPrecipitation")[0]
    286 def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
    287287def SurfaceforcingsDesfacEnum(): return StringToEnum("SurfaceforcingsDesfac")[0]
    288288def SurfaceforcingsS0pEnum(): return StringToEnum("SurfaceforcingsS0p")[0]
    289 def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
     289def SMBgradientsEnum(): return StringToEnum("SMBgradients")[0]
    290290def SurfaceforcingsMonthlytemperaturesEnum(): return StringToEnum("SurfaceforcingsMonthlytemperatures")[0]
    291291def SurfaceforcingsHrefEnum(): return StringToEnum("SurfaceforcingsHref")[0]
    292292def SurfaceforcingsSmbrefEnum(): return StringToEnum("SurfaceforcingsSmbref")[0]
    293293def SurfaceforcingsBPosEnum(): return StringToEnum("SurfaceforcingsBPos")[0]
    294294def SurfaceforcingsBNegEnum(): return StringToEnum("SurfaceforcingsBNeg")[0]
     295def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
     296def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
    295297def SolutionTypeEnum(): return StringToEnum("SolutionType")[0]
    296298def AnalysisTypeEnum(): return StringToEnum("AnalysisType")[0]
    297299def ConfigurationTypeEnum(): return StringToEnum("ConfigurationType")[0]
  • ../trunk-jpl/src/m/enum/TransientIslevelsetEnum.m

     
     1function 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
     11macro=StringToEnum('TransientIslevelset');
Note: See TracBrowser for help on using the repository browser.