Changeset 15132


Ignore:
Timestamp:
05/28/13 19:33:26 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: do not scale entire matrix if forcing, scale up to the last row

Location:
issm/trunk-jpl/src/m
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/balancethickness.m

    r15131 r15132  
    2929                        if solution~=BalancethicknessSolutionEnum(), return; end
    3030
    31                         md = checkfield(md,'balancethickness.spcthickness','forcing',1);
     31                        md = checkfield(md,'balancethickness.spcthickness');
    3232                        md = checkfield(md,'balancethickness.thickening_rate','size',[md.mesh.numberofvertices 1],'NaN',1);
    3333                        md = checkfield(md,'balancethickness.stabilization','size',[1 1],'values',[0 1 2 3]);
  • issm/trunk-jpl/src/m/classes/balancethickness.py

    r15131 r15132  
    4242                        return md
    4343
    44                 md = checkfield(md,'balancethickness.spcthickness','forcing',1)
     44                md = checkfield(md,'balancethickness.spcthickness')
    4545                md = checkfield(md,'balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1)
    4646                md = checkfield(md,'balancethickness.stabilization','size',[1],'values',[0,1,2,3])
  • issm/trunk-jpl/src/m/classes/basalforcings.m

    r15131 r15132  
    4747                        yts=365.0*24.0*3600.0;
    4848
    49                         WriteData(fid,'object',obj,'fieldname','melting_rate','format','DoubleMat','mattype',1,'scale',1./yts);
     49                        WriteData(fid,'object',obj,'fieldname','melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1);
    5050                        WriteData(fid,'object',obj,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1,'scale',1./yts);
    51                         WriteData(fid,'object',obj,'fieldname','geothermalflux','format','DoubleMat','mattype',1);
     51                        WriteData(fid,'object',obj,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'forcing',1);
    5252                end % }}}
    5353        end
  • issm/trunk-jpl/src/m/classes/basalforcings.py

    r15131 r15132  
    5050                yts=365.0*24.0*3600.0
    5151
    52                 WriteData(fid,'object',self,'fieldname','melting_rate','format','DoubleMat','mattype',1,'scale',1./yts)
     52                WriteData(fid,'object',self,'fieldname','melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1)
    5353                WriteData(fid,'object',self,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1,'scale',1./yts)
    54                 WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1)
     54                WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'forcing',1)
    5555        # }}}
  • issm/trunk-jpl/src/m/classes/diagnostic.m

    r15131 r15132  
    151151                end % }}}
    152152                function marshall(obj,md,fid) % {{{
    153                         WriteData(fid,'object',obj,'fieldname','spcvx','format','DoubleMat','mattype',1);
    154                         WriteData(fid,'object',obj,'fieldname','spcvy','format','DoubleMat','mattype',1);
    155                         WriteData(fid,'object',obj,'fieldname','spcvz','format','DoubleMat','mattype',1);
     153                        WriteData(fid,'object',obj,'fieldname','spcvx','format','DoubleMat','mattype',1,'forcing',1);
     154                        WriteData(fid,'object',obj,'fieldname','spcvy','format','DoubleMat','mattype',1,'forcing',1);
     155                        WriteData(fid,'object',obj,'fieldname','spcvz','format','DoubleMat','mattype',1,'forcing',1);
    156156                        WriteData(fid,'object',obj,'fieldname','restol','format','Double');
    157157                        WriteData(fid,'object',obj,'fieldname','reltol','format','Double');
  • issm/trunk-jpl/src/m/classes/diagnostic.py

    r15131 r15132  
    161161        # }}}
    162162        def marshall(self,md,fid):    # {{{
    163                 WriteData(fid,'object',self,'fieldname','spcvx','format','DoubleMat','mattype',1)
    164                 WriteData(fid,'object',self,'fieldname','spcvy','format','DoubleMat','mattype',1)
    165                 WriteData(fid,'object',self,'fieldname','spcvz','format','DoubleMat','mattype',1)
     163                WriteData(fid,'object',self,'fieldname','spcvx','format','DoubleMat','mattype',1,'forcing',1)
     164                WriteData(fid,'object',self,'fieldname','spcvy','format','DoubleMat','mattype',1,'forcing',1)
     165                WriteData(fid,'object',self,'fieldname','spcvz','format','DoubleMat','mattype',1,'forcing',1)
    166166                WriteData(fid,'object',self,'fieldname','restol','format','Double')
    167167                WriteData(fid,'object',self,'fieldname','reltol','format','Double')
  • issm/trunk-jpl/src/m/classes/geometry.m

    r15131 r15132  
    5252                function marshall(obj,md,fid) % {{{
    5353                        WriteData(fid,'data',obj.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum());
    54                         WriteData(fid,'data',obj.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum());
     54                        WriteData(fid,'data',obj.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'forcing',1);
    5555                        WriteData(fid,'data',obj.bed,'format','DoubleMat','mattype',1,'enum',BedEnum());
    5656                        WriteData(fid,'data',obj.bathymetry,'format','DoubleMat','mattype',1,'enum',BathymetryEnum());
  • issm/trunk-jpl/src/m/classes/geometry.py

    r15131 r15132  
    4040                md = checkfield(md,'geometry.surface'  ,'NaN',1,'size',[md.mesh.numberofvertices])
    4141                md = checkfield(md,'geometry.bed'      ,'NaN',1,'size',[md.mesh.numberofvertices])
    42                 md = checkfield(md,'geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices],'>',0)
     42                md = checkfield(md,'geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices],'>',0,'forcing',1)
    4343                if any((self.thickness-self.surface+self.bed)>10**-9):
    4444                        md.checkmessage("equality thickness=surface-bed violated")
     
    5050        def marshall(self,md,fid):    # {{{
    5151                WriteData(fid,'data',self.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum())
    52                 WriteData(fid,'data',self.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum())
     52                WriteData(fid,'data',self.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'forcing',1)
    5353                WriteData(fid,'data',self.bed,'format','DoubleMat','mattype',1,'enum',BedEnum())
    5454                WriteData(fid,'data',self.bathymetry,'format','DoubleMat','mattype',1,'enum',BathymetryEnum())
  • issm/trunk-jpl/src/m/classes/hydrologydc.m

    r15131 r15132  
    147147            end
    148148
    149                         WriteData(fid,'object',obj,'fieldname','spcsediment_head','format','DoubleMat','mattype',1);
     149                        WriteData(fid,'object',obj,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'forcing',1);
    150150                        WriteData(fid,'object',obj,'fieldname','sediment_compressibility','format','Double');                   
    151151                        WriteData(fid,'object',obj,'fieldname','sediment_porosity','format','Double');                 
     
    154154
    155155                        if obj.isefficientlayer==1,     
    156                                 WriteData(fid,'object',obj,'fieldname','spcepl_head','format','DoubleMat','mattype',1);
     156                                WriteData(fid,'object',obj,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'forcing',1);
    157157                                WriteData(fid,'object',obj,'fieldname','epl_compressibility','format','Double');                       
    158158                                WriteData(fid,'object',obj,'fieldname','epl_porosity','format','Double');                       
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.m

    r15131 r15132  
    6161                function marshall(obj,md,fid) % {{{
    6262                        WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
    63                         WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1);
     63                        WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'forcing',1);
    6464                        WriteData(fid,'object',obj,'fieldname','n','format','Double');
    6565                        WriteData(fid,'object',obj,'fieldname','CR','format','Double');
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.py

    r15131 r15132  
    6464        def marshall(self,md,fid):    # {{{
    6565                WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
    66                 WriteData(fid,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1)
     66                WriteData(fid,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'forcing',1)
    6767                WriteData(fid,'object',self,'fieldname','n','format','Double')
    6868                WriteData(fid,'object',self,'fieldname','CR','format','Double')
  • issm/trunk-jpl/src/m/classes/prognostic.m

    r15131 r15132  
    6565                end % }}}
    6666                function marshall(obj,md,fid) % {{{
    67                         WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1);
     67                        WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1,'forcing',1);
    6868                        WriteData(fid,'object',obj,'fieldname','min_thickness','format','Double');
    6969                        WriteData(fid,'data',StringToEnum(obj.hydrostatic_adjustment),'format','Integer','enum',PrognosticHydrostaticAdjustmentEnum());
  • issm/trunk-jpl/src/m/classes/prognostic.py

    r15131 r15132  
    6868        # }}}
    6969        def marshall(self,md,fid):    # {{{
    70                 WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1)
     70                WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'forcing',1)
    7171                WriteData(fid,'object',self,'fieldname','min_thickness','format','Double')
    7272                WriteData(fid,'data',StringToEnum(self.hydrostatic_adjustment)[0],'format','Integer','enum',PrognosticHydrostaticAdjustmentEnum())
  • issm/trunk-jpl/src/m/classes/surfaceforcings.m

    r15131 r15132  
    104104                        yts=365.0*24.0*3600.0;
    105105
    106                         WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts);
    107                         WriteData(fid,'object',obj,'fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts);
     106                        WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1);
     107                        WriteData(fid,'object',obj,'fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1);
    108108                        WriteData(fid,'object',obj,'fieldname','ispdd','format','Boolean');
    109109                        WriteData(fid,'object',obj,'fieldname','isdelta18o','format','Boolean');
     
    118118                                        WriteData(fid,'object',obj,'fieldname','delta18o','format','DoubleMat','mattype',1);
    119119                                else
    120                                         WriteData(fid,'object',obj,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
    121                                         WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1);
     120                                        WriteData(fid,'object',obj,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'forcing',1);
     121                                        WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1,'forcing',1);
    122122                                end
    123123                        end
    124124                        WriteData(fid,'object',obj,'fieldname','issmbgradients','format','Boolean');
    125125                        if obj.issmbgradients,
    126                                 WriteData(fid,'object',obj,'fieldname','href','format','DoubleMat','mattype',1);
    127                                 WriteData(fid,'object',obj,'fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts);
    128                                 WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts);
    129                                 WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts);
     126                                WriteData(fid,'object',obj,'fieldname','href','format','DoubleMat','mattype',1,'forcing',1);
     127                                WriteData(fid,'object',obj,'fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1);
     128                                WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1);
     129                                WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1);
    130130                        end
    131131
  • issm/trunk-jpl/src/m/classes/surfaceforcings.py

    r15131 r15132  
    104104                yts=365.0*24.0*3600.0
    105105
    106                 WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts)
    107                 WriteData(fid,'object',self,'fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts)
     106                WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1)
     107                WriteData(fid,'object',self,'fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1)
    108108                WriteData(fid,'object',self,'fieldname','ispdd','format','Boolean')
    109109                WriteData(fid,'object',self,'fieldname','isdelta18o','format','Boolean')
     
    119119                                WriteData(fid,'object',self,'fieldname','delta18o','format','DoubleMat','mattype',1)
    120120                        else:
    121                                 WriteData(fid,'object',self,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1)
    122                                 WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1)
     121                                WriteData(fid,'object',self,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'forcing',1)
     122                                WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1,'forcing',1)
    123123
    124124                WriteData(fid,'object',self,'fieldname','issmbgradients','format','Boolean')
    125125
    126126                if self.issmbgradients:
    127                         WriteData(fid,'object',self,'fieldname','href','format','DoubleMat','mattype',1)
    128                         WriteData(fid,'object',self,'fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts)
    129                         WriteData(fid,'object',self,'fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts)
    130                         WriteData(fid,'object',self,'fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts)
     127                        WriteData(fid,'object',self,'fieldname','href','format','DoubleMat','mattype',1,'forcing',1)
     128                        WriteData(fid,'object',self,'fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1)
     129                        WriteData(fid,'object',self,'fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1)
     130                        WriteData(fid,'object',self,'fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'forcing',1)
    131131        # }}}
  • issm/trunk-jpl/src/m/classes/thermal.m

    r15131 r15132  
    6666                end % }}}
    6767                function marshall(obj,md,fid) % {{{
    68                         WriteData(fid,'object',obj,'fieldname','spctemperature','format','DoubleMat','mattype',1);
     68                        WriteData(fid,'object',obj,'fieldname','spctemperature','format','DoubleMat','mattype',1,'forcing',1);
    6969                        WriteData(fid,'object',obj,'fieldname','penalty_threshold','format','Integer');
    7070                        WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer');
  • issm/trunk-jpl/src/m/classes/thermal.py

    r15131 r15132  
    7272        # }}}
    7373        def marshall(self,md,fid):    # {{{
    74                 WriteData(fid,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1)
     74                WriteData(fid,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'forcing',1)
    7575                WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer')
    7676                WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
  • issm/trunk-jpl/src/m/solve/WriteData.m

    r15123 r15132  
    2424format  = getfieldvalue(options,'format');
    2525mattype = getfieldvalue(options,'mattype',0);    %only required for matrices
     26forcing = getfieldvalue(options,'forcing',1);
    2627
    2728%Process sparse matrices
     
    3334if exist(options,'scale'),
    3435        scale = getfieldvalue(options,'scale');
    35         data  = scale.*data;
     36        if forcing,
     37                data(1:end-1,:) = scale.*data;
     38        else
     39                data  = scale.*data;
     40        end
    3641end
    3742
  • issm/trunk-jpl/src/m/solve/WriteData.py

    r15123 r15132  
    3535        format  = options.getfieldvalue('format')
    3636        mattype = options.getfieldvalue('mattype',0)    #only required for matrices
     37        forcing = options.getfieldvalue('forcing',0)
    3738
    3839        #Process sparse matrices
     
    4041#               data=full(data);
    4142#       end
     43
    4244        #Scale data if necesarry
    4345        if options.exist('scale'):
    4446                scale = options.getfieldvalue('scale')
    45                 data  = scale*data
     47                if forcing:
     48                        data[0:-1] = scale*data[0:-1]
     49                else:
     50                        data  = scale*data
    4651
    4752        #Step 1: write the enum to identify this record uniquely
Note: See TracChangeset for help on using the changeset viewer.