Changeset 19309


Ignore:
Timestamp:
04/23/15 15:03:59 (10 years ago)
Author:
schlegel
Message:

Make s0p and s0t inputs instead of parameters

Location:
issm/trunk-jpl/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

    r19200 r19309  
    181181                        iomodel->Constant(&ismungsm,SurfaceforcingsIsmungsmEnum);
    182182                        iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
     183                        iomodel->FetchDataToInput(elements,SurfaceforcingsS0pEnum);
     184                        iomodel->FetchDataToInput(elements,SurfaceforcingsS0tEnum);
    183185                        if(isdelta18o || ismungsm){
    184186                                iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesLgmEnum);
     
    188190                        }
    189191                        else{
    190                                 iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
     192                                iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
    191193                                iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum);
    192194                        }
     
    196198                        iomodel->Constant(&isd18opd,SurfaceforcingsIsd18opdEnum);
    197199                        iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
     200                        iomodel->FetchDataToInput(elements,SurfaceforcingsS0pEnum);
     201                        iomodel->FetchDataToInput(elements,SurfaceforcingsS0tEnum);
    198202                        if (isd18opd){
    199203                                iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesPresentdayEnum);
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r19275 r19309  
    16911691        IssmDouble* h=xNew<IssmDouble>(numvertices);
    16921692        IssmDouble* s=xNew<IssmDouble>(numvertices);
    1693         IssmDouble rho_water,rho_ice,desfac,s0p,s0t,rlaps,rlapslgm;
     1693        IssmDouble* s0p=xNew<IssmDouble>(numvertices);
     1694        IssmDouble* s0t=xNew<IssmDouble>(numvertices);
     1695        IssmDouble rho_water,rho_ice,desfac,rlaps,rlapslgm;
    16941696        IssmDouble PfacTime,TdiffTime,sealevTime;
    16951697        IssmDouble mavg=1./12.; //factor for monthly average
     
    17011703        /*Get some pdd parameters*/
    17021704        desfac=this->matpar->GetMaterialParameter(SurfaceforcingsDesfacEnum);
    1703         s0p=this->matpar->GetMaterialParameter(SurfaceforcingsS0pEnum);
    1704         s0t=this->matpar->GetMaterialParameter(SurfaceforcingsS0tEnum);
    17051705        rlaps=this->matpar->GetMaterialParameter(SurfaceforcingsRlapsEnum);
    17061706        rlapslgm=this->matpar->GetMaterialParameter(SurfaceforcingsRlapslgmEnum);
     
    17421742        GetInputListOnVertices(&h[0],ThicknessEnum);
    17431743        GetInputListOnVertices(&s[0],SurfaceEnum);
     1744        GetInputListOnVertices(&s0p[0],SurfaceforcingsS0pEnum);
     1745        GetInputListOnVertices(&s0t[0],SurfaceforcingsS0tEnum);
    17441746
    17451747        /*measure the surface mass balance*/
     
    17471749                agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv*12], &monthlyprec[iv*12],
    17481750                                        pdds, pds, signorm, yts, h[iv], s[iv],
    1749                                         desfac, s0t, s0p,rlaps,rlapslgm,TdiffTime,sealevTime,
     1751                                        desfac, s0t[iv], s0p[iv],rlaps,rlapslgm,TdiffTime,sealevTime,
    17501752                                        rho_water,rho_ice);
    17511753        }
     
    18011803        xDelete<IssmDouble>(h);
    18021804        xDelete<IssmDouble>(s);
     1805        xDelete<IssmDouble>(s0t);
     1806        xDelete<IssmDouble>(s0p);
    18031807        xDelete<IssmDouble>(tmp);
    18041808
  • issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp

    r19282 r19309  
    3535        omega=0;
    3636        desfac=0;
    37         s0p=0;
    38         s0t=0;
    3937        rlaps=0;
    4038        rlapslgm=0;
     
    10098                                case SMBpddEnum:
    10199                                        iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum);
    102                                         iomodel->Constant(&this->s0p,SurfaceforcingsS0pEnum);
    103                                         iomodel->Constant(&this->s0t,SurfaceforcingsS0tEnum);
    104100                                        iomodel->Constant(&this->rlaps,SurfaceforcingsRlapsEnum);
    105101                                        iomodel->Constant(&this->rlapslgm,SurfaceforcingsRlapslgmEnum);
     
    107103                                case SMBd18opddEnum:
    108104                                        iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum);
    109                                         iomodel->Constant(&this->s0p,SurfaceforcingsS0pEnum);
    110                                         iomodel->Constant(&this->s0t,SurfaceforcingsS0tEnum);
    111105                                        iomodel->Constant(&this->rlaps,SurfaceforcingsRlapsEnum);
    112106                                        iomodel->Constant(&this->rlapslgm,SurfaceforcingsRlapslgmEnum);
     
    187181        _printf_("   g: " << g << "\n");
    188182        _printf_("   desfac: " << desfac << "\n");
    189         _printf_("   s0p: " << s0p << "\n");
    190         _printf_("   s0t: " << s0t << "\n");
    191183        _printf_("   rlaps: " << rlaps << "\n");
    192184        _printf_("   rlapslgm: " << rlapslgm << "\n");
     
    233225        matpar->g=this->g;
    234226        matpar->desfac=this->desfac;
    235         matpar->s0p=this->s0p;
    236         matpar->s0t=this->s0t;
    237227        matpar->rlaps=this->rlaps;
    238228        matpar->rlapslgm=this->rlapslgm;
     
    280270        MARSHALLING(omega);
    281271        MARSHALLING(desfac);
    282         MARSHALLING(s0p);
    283         MARSHALLING(s0t);
    284272        MARSHALLING(rlaps);
    285273        MARSHALLING(rlapslgm);
     
    379367                case  SurfaceforcingsDesfacEnum:
    380368                        this->desfac=constant;
    381                         break;
    382                 case SurfaceforcingsS0pEnum:
    383                         this->s0p=constant;
    384                         break;
    385                 case SurfaceforcingsS0tEnum:
    386                         this->s0t=constant;
    387369                        break;
    388370                case SurfaceforcingsRlapsEnum:
     
    517499                case ConstantsGEnum:                         return this->g;
    518500                case SurfaceforcingsDesfacEnum:              return this->desfac;
    519                 case SurfaceforcingsS0pEnum:                 return this->s0p;
    520                 case SurfaceforcingsS0tEnum:                 return this->s0t;
    521501                case SurfaceforcingsRlapsEnum:               return this->rlaps;
    522502                case SurfaceforcingsRlapslgmEnum:            return this->rlapslgm;
  • issm/trunk-jpl/src/c/classes/Materials/Matpar.h

    r19216 r19309  
    3232                IssmDouble  omega;
    3333                IssmDouble  desfac;
    34                 IssmDouble  s0p;
    35                 IssmDouble  s0t;
    3634                IssmDouble  rlaps;
    3735                IssmDouble  rlapslgm;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r19268 r19309  
    110110                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsmungsmEnum));
    111111                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum));
    112                         parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0pEnum));
    113                         parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0tEnum));
    114112                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapsEnum));
    115113                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapslgmEnum));
     
    144142                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsd18opdEnum));
    145143                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum));
    146                         parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0pEnum));
    147                         parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0tEnum));
    148144                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapsEnum));
    149145                        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapslgmEnum));
  • issm/trunk-jpl/src/m/classes/SMBd18opdd.m

    r19285 r19309  
    77        properties (SetAccess=public)
    88                desfac                    = 0;
    9                 s0p                       = 0;
    10                 s0t                       = 0;
     9                s0p                       = NaN;
     10                s0t                       = NaN;
    1111                rlaps                     = 0;
    1212                rlapslgm                  = 0;
     
    3333                        if(self.isd18opd),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
    3434                        if(self.isd18opd),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
     35                        self.s0p=project3d(md,'vector',self.s0p,'type','node');
     36                        self.s0t=project3d(md,'vector',self.s0t,'type','node');
    3537
    3638                end % }}}
    3739                function self = initialize(self,md) % {{{
    3840                   
    39                         % if isnan(self.precipitation),
    40                         %       self.precipitation=zeros(md.mesh.numberofvertices,1);
    41                         %       disp('      no SMBd18opdd.precipitation specified: values set as zero');
    42                         % end
     41                        if isnan(self.s0p),
     42                                self.s0p=zeros(md.mesh.numberofvertices,1);
     43                                disp('      no SMBd18opdd.s0p specified: values set as zero');
     44                        end
     45                        if isnan(self.s0t),
     46                                self.s0t=zeros(md.mesh.numberofvertices,1);
     47                                disp('      no SMBd18opdd.s0t specified: values set as zero');
     48                        end
    4349
    4450                end % }}}
     
    4854                  self.isd18opd   = 1;
    4955                  self.desfac     = 0.5;
    50                   self.s0p        = 0;
    51                   self.s0t        = 0;
    5256                  self.rlaps      = 6.5;
    5357                  self.rlapslgm   = 6.5;
     
    5963                        if ismember(MasstransportAnalysisEnum(),analyses),
    6064                                md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',1);
    61                                 md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',1);
    62                                 md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'numel',1);
     65                                md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
     66                                md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
    6367                                md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',1);
    6468                                md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',1);
     
    99103                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isd18opd','format','Boolean');
    100104                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double');
    101                         WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double');
    102                         WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','Double');
     105                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
     106                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
    103107                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double');
    104108                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double');
  • issm/trunk-jpl/src/m/classes/SMBd18opdd.py

    r19285 r19309  
    1616        def __init__(self): # {{{
    1717                self.desfac                    = 0.
    18                 self.s0p                       = 0.
    19                 self.s0t                       = 0.
     18                self.s0p                       = float('NaN')
     19                self.s0t                       = float('NaN')
    2020                self.rlaps                     = 0.
    2121                self.rlapslgm                  = 0.
     
    5353                if self.isd18opd: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
    5454                if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
     55                self.s0p=project3d(md,'vector',self.s0p,'type','node')
     56                self.s0t=project3d(md,'vector',self.s0t,'type','node')
     57
    5558                return self
    5659        #}}}
    5760        def initialize(self,md): # {{{
    5861
    59                 # if numpy.all(numpy.isnan(self.precipitation)):
    60                 #       self.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
    61                 #       print "      no SMBpdd.precipitation specified: values set as zero"
    62                 #
    63                  return self
    64         #}}}
     62                if numpy.all(numpy.isnan(self.s0p)):
     63                        self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
     64                        print "      no SMBd18opdd.s0p specified: values set as zero"
     65
     66                if numpy.all(numpy.isnan(self.s0t)):
     67                        self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
     68                        print "      no SMBd18opdd.s0t specified: values set as zero"
     69                       
     70                return self
     71        # }}}
    6572        def setdefaultparameters(self): # {{{
    6673
     
    6976                self.isd18opd   = 1
    7077                self.desfac     = 0.5
    71                 self.s0p        = 0.
    72                 self.s0t        = 0.
    7378                self.rlaps      = 6.5
    7479                self.rlapslgm   = 6.5
     
    8186                if MasstransportAnalysisEnum() in analyses:
    8287                        md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',[1])
    83                         md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',[1])
    84                         md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'numel',[1])
     88                        md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
     89                        md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
    8590                        md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',[1])
    8691                        md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',[1])
     
    103108                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isd18opd','format','Boolean')
    104109                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double')
    105                 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double')
    106                 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','Double')
     110                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
     111                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
    107112                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double')
    108113                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double')
  • issm/trunk-jpl/src/m/classes/SMBpdd.m

    r19285 r19309  
    99                monthlytemperatures       = NaN;
    1010                desfac                    = 0;
    11                 s0p                       = 0;
    12                 s0t                       = 0;
     11                s0p                       = NaN;
     12                s0t                       = NaN;
    1313                rlaps                     = 0;
    1414                rlapslgm                  = 0;
     
    4545                        if(self.ismungsm),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
    4646                        if(self.ismungsm),self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node');end
     47                        self.s0p=project3d(md,'vector',self.s0p,'type','node');
     48                        self.s0t=project3d(md,'vector',self.s0t,'type','node');
    4749
    4850                end % }}}
    4951                function self = initialize(self,md) % {{{
    5052                   
    51                         % if isnan(self.precipitation),
    52                         %       self.precipitation=zeros(md.mesh.numberofvertices,1);
    53                         %       disp('      no SMBpdd.precipitation specified: values set as zero');
    54                         % end
     53                        if isnan(self.s0p),
     54                                self.s0p=zeros(md.mesh.numberofvertices,1);
     55                                disp('      no SMBpdd.s0p specified: values set as zero');
     56                        end
     57                        if isnan(self.s0t),
     58                                self.s0t=zeros(md.mesh.numberofvertices,1);
     59                                disp('      no SMBpdd.s0t specified: values set as zero');
     60                        end
    5561
    5662                end % }}}
     
    6066                  self.ismungsm   = 0;
    6167                  self.desfac     = 0.5;
    62                   self.s0p        = 0;
    63                   self.s0t        = 0;
    6468                  self.rlaps      = 6.5;
    6569                  self.rlapslgm   = 6.5;
     
    7074                        if ismember(MasstransportAnalysisEnum(),analyses),
    7175                                md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',1);
    72                                 md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',1);
    73                                 md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'numel',1);
     76                                md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
     77                                md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
    7478                                md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',1);
    7579                                md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',1);
     
    139143                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean');
    140144                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double');
    141                         WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double');
    142                         WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','Double');
     145                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
     146                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
    143147                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double');
    144148                        WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double');
  • issm/trunk-jpl/src/m/classes/SMBpdd.py

    r19285 r19309  
    1818                self.monthlytemperatures       = float('NaN')
    1919                self.desfac                    = 0.
    20                 self.s0p                       = 0.
    21                 self.s0t                       = 0.
     20                self.s0p                       = float('NaN')
     21                self.s0t                       = float('NaN')
    2222                self.rlaps                     = 0.
    2323                self.rlapslgm                  = 0.
     
    6767                                string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
    6868                                string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
     69                               
    6970                return string
    70                 #}}}
     71        # }}}
    7172        def extrude(self,md): # {{{
    7273
     
    8283                if self.ismungsm: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
    8384                if self.ismungsm: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
     85                self.s0p=project3d(md,'vector',self.s0p,'type','node')
     86                self.s0t=project3d(md,'vector',self.s0t,'type','node')
     87
    8488                return self
    8589        #}}}
    8690        def initialize(self,md): # {{{
    8791
    88                 # if numpy.all(numpy.isnan(self.precipitation)):
    89                 #       self.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
    90                 #       print "      no SMBpdd.precipitation specified: values set as zero"
    91                 #
    92                  return self
     92                if numpy.all(numpy.isnan(self.s0p)):
     93                        self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
     94                        print "      no SMBpdd.s0p specified: values set as zero"
     95
     96                if numpy.all(numpy.isnan(self.s0t)):
     97                        self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
     98                        print "      no SMBpdd.s0t specified: values set as zero"
     99
     100                return self
    93101        #}}}
    94102        def setdefaultparameters(self): # {{{
     
    98106                self.ismungsm   = 0
    99107                self.desfac     = 0.5
    100                 self.s0p        = 0.
    101                 self.s0t        = 0.
    102108                self.rlaps      = 6.5
    103109                self.rlapslgm   = 6.5
     
    109115                if MasstransportAnalysisEnum() in analyses:
    110116                        md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',[1])
    111                         md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',[1])
    112                         md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'numel',[1])
     117                        md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
     118                        md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
    113119                        md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',[1])
    114120                        md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',[1])
     
    136142
    137143                return md
    138         # }}}
     144        #}}}
    139145        def marshall(self,md,fid):    # {{{
    140146
     
    146152                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean')
    147153                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double')
    148                 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double')
    149                 WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','Double')
     154                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
     155                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
    150156                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double')
    151157                WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double')
Note: See TracChangeset for help on using the changeset viewer.