Changeset 16243


Ignore:
Timestamp:
09/24/13 16:07:49 (11 years ago)
Author:
Eric.Larour
Message:

NEW: adding 4 buffer fields to autodiff capability.

Location:
issm/trunk-jpl
Files:
4 added
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/externalpackages/freetype

    • Property svn:ignore
      •  

        old new  
         1freetype-*
        12*.gz
        23*.zip
  • issm/trunk-jpl/externalpackages/freetype/install.sh

    r13249 r16243  
    55rm -rf src
    66rm -rf install
    7 rm -rf freetype-2.4.9
     7rm -rf freetype-2.5.0
    88mkdir src install
    99
    1010#Download from ISSM server
    11 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/freetype-2.4.9.tar.gz' 'freetype-2.4.9.tar.gz'
     11$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/freetype-2.5.0.tar.gz' 'freetype-2.5.0.tar.gz'
    1212
    1313#Untar
    14 tar -zxvf  freetype-2.4.9.tar.gz
     14tar -zxvf  freetype-2.5.0.tar.gz
    1515
    1616#Move freetype into src directory
    17 mv freetype-2.4.9/* src
    18 rm -rf freetype-2.4.9
     17mv freetype-2.5.0/* src
     18rm -rf freetype-2.5.0
    1919
    2020#Configure freetype
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp

    r16142 r16243  
    3838                #ifdef _HAVE_ADOLC_
    3939
    40                 /*Copy some parameters from IoModel to parameters dataset: */
     40                /*Copy some parameters from IoModel to parameters dataset: {{{*/
    4141                parameters->AddObject(iomodel->CopyConstantObject(AutodiffKeepEnum));
    42 
     42                parameters->AddObject(iomodel->CopyConstantObject(AutodiffObufsizeEnum));
     43                parameters->AddObject(iomodel->CopyConstantObject(AutodiffCbufsizeEnum));
     44                parameters->AddObject(iomodel->CopyConstantObject(AutodiffLbufsizeEnum));
     45                parameters->AddObject(iomodel->CopyConstantObject(AutodiffTbufsizeEnum));
     46                /*}}}*/
    4347                /*retrieve driver: {{{*/
    4448                iomodel->Constant(&autodiff_driver,AutodiffDriverEnum);
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r16235 r16243  
    2929        AutodiffMassFluxSegmentsPresentEnum,
    3030        AutodiffKeepEnum,
     31        AutodiffObufsizeEnum,
     32        AutodiffLbufsizeEnum,
     33        AutodiffCbufsizeEnum,
     34        AutodiffTbufsizeEnum,
    3135        BalancethicknessSpcthicknessEnum,
    3236        BalancethicknessStabilizationEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r16235 r16243  
    3737                case AutodiffMassFluxSegmentsPresentEnum : return "AutodiffMassFluxSegmentsPresent";
    3838                case AutodiffKeepEnum : return "AutodiffKeep";
     39                case AutodiffObufsizeEnum : return "AutodiffObufsize";
     40                case AutodiffLbufsizeEnum : return "AutodiffLbufsize";
     41                case AutodiffCbufsizeEnum : return "AutodiffCbufsize";
     42                case AutodiffTbufsizeEnum : return "AutodiffTbufsize";
    3943                case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
    4044                case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r16235 r16243  
    3737              else if (strcmp(name,"AutodiffMassFluxSegmentsPresent")==0) return AutodiffMassFluxSegmentsPresentEnum;
    3838              else if (strcmp(name,"AutodiffKeep")==0) return AutodiffKeepEnum;
     39              else if (strcmp(name,"AutodiffObufsize")==0) return AutodiffObufsizeEnum;
     40              else if (strcmp(name,"AutodiffLbufsize")==0) return AutodiffLbufsizeEnum;
     41              else if (strcmp(name,"AutodiffCbufsize")==0) return AutodiffCbufsizeEnum;
     42              else if (strcmp(name,"AutodiffTbufsize")==0) return AutodiffTbufsizeEnum;
    3943              else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
    4044              else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
     
    133137              else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum;
    134138              else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
    135               else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
     139         else stage=2;
     140   }
     141   if(stage==2){
     142              if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
    136143              else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
    137144              else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum;
    138145              else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
    139          else stage=2;
    140    }
    141    if(stage==2){
    142               if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
     146              else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
    143147              else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;
    144148              else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
     
    256260              else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
    257261              else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
    258               else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
     262         else stage=3;
     263   }
     264   if(stage==3){
     265              if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
    259266              else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
    260267              else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
    261268              else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
    262          else stage=3;
    263    }
    264    if(stage==3){
    265               if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
     269              else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
    266270              else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum;
    267271              else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
     
    379383              else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
    380384              else if (strcmp(name,"Matice")==0) return MaticeEnum;
    381               else if (strcmp(name,"Matpar")==0) return MatparEnum;
     385         else stage=4;
     386   }
     387   if(stage==4){
     388              if (strcmp(name,"Matpar")==0) return MatparEnum;
    382389              else if (strcmp(name,"Node")==0) return NodeEnum;
    383390              else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    384391              else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
    385          else stage=4;
    386    }
    387    if(stage==4){
    388               if (strcmp(name,"Param")==0) return ParamEnum;
     392              else if (strcmp(name,"Param")==0) return ParamEnum;
    389393              else if (strcmp(name,"Pengrid")==0) return PengridEnum;
    390394              else if (strcmp(name,"Penpair")==0) return PenpairEnum;
     
    502506              else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
    503507              else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
    504               else if (strcmp(name,"GiaW")==0) return GiaWEnum;
     508         else stage=5;
     509   }
     510   if(stage==5){
     511              if (strcmp(name,"GiaW")==0) return GiaWEnum;
    505512              else if (strcmp(name,"P0")==0) return P0Enum;
    506513              else if (strcmp(name,"P1")==0) return P1Enum;
    507514              else if (strcmp(name,"P1DG")==0) return P1DGEnum;
    508          else stage=5;
    509    }
    510    if(stage==5){
    511               if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
     515              else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
    512516              else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
    513517              else if (strcmp(name,"P2")==0) return P2Enum;
  • issm/trunk-jpl/src/m/classes/autodiff.m

    r15131 r16243  
    55
    66classdef autodiff
    7         properties (SetAccess=public)
    8                 isautodiff   = false;
     7        properties (SetAccess=public)  
     8                % {{{isautodiff   = false;
    99                dependents   = {};
    1010                independents = {};
    1111                driver       = 'fos_forward';
    12         end
     12                obufsize     = NaN;
     13                lbufsize     = NaN;
     14                cbufsize     = NaN;
     15                tbufsize     = NaN;
     16                end
     17                %}}}
    1318        methods
    1419                function obj = autodiff(varargin) % {{{
     
    2126                end % }}}
    2227                function obj = setdefaultparameters(obj) % {{{
    23 
     28                obufsize     = 524288;
     29                lbufsize     = 524288;
     30                cbufsize     = 524288;
     31                tbufsize     = 524288;
    2432                end % }}}
    2533                function md = checkconsistency(obj,md,solution,analyses) % {{{
     
    3038                        %Driver value:
    3139                        md = checkfield(md,'autodiff.driver','values',{'fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'});
     40                       
     41                        %buffer values:
     42                        md = checkfield(md,'autodiff.obufsize','>=',524288);
     43                        md = checkfield(md,'autodiff.lbufsize','>=',524288);
     44                        md = checkfield(md,'autodiff.cbufsize','>=',524288);
     45                        md = checkfield(md,'autodiff.tbufsize','>=',524288);
    3246
    3347                        %go through our dependents and independents and check consistency:
     
    4862                        fielddisplay(obj,'independents','list of independent variables');
    4963                        fielddisplay(obj,'driver','ADOLC driver (''fos_forward'' or ''fov_forward'')');
     64                        fielddisplay(obj,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
     65                        fielddisplay(obj,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
     66                        fielddisplay(obj,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
     67                        fielddisplay(obj,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
    5068                end % }}}
    5169                function marshall(obj,md,fid) % {{{
     
    6179                        end
    6280
     81                        %buffer sizes {{{
     82                        WriteData(fid,'data',obj,'fieldname','obufsize','enum',AutodiffObufsizeEnum(),'format','Double');
     83                        WriteData(fid,'data',obj,'fieldname','lbufsize','enum',AutodiffLbufsizeEnum(),'format','Double');
     84                        WriteData(fid,'data',obj,'fieldname','cbufsize','enum',AutodiffCbufsizeEnum(),'format','Double');
     85                        WriteData(fid,'data',obj,'fieldname','tbufsize','enum',AutodiffTbufsizeEnum(),'format','Double');
     86                        %}}}
    6387                        %process dependent variables {{{
    6488                        num_dependent_objects=numel(obj.dependents);
  • issm/trunk-jpl/src/m/classes/autodiff.py

    r15131 r16243  
    2020                self.independents = []
    2121                self.driver       = 'fos_forward'
    22 
     22                self.obufsize     = float('NaN')
     23                self.lbufsize     = float('NaN')
     24                self.cbufsize     = float('NaN')
     25                self.tbufsize     = float('NaN')
    2326                if not len(args):
    2427                        self.setdefaultparameters()
     
    3336                s+="%s\n" % fielddisplay(self,'independents',"list of independent variables")
    3437                s+="%s\n" % fielddisplay(self,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')")
    35 
     38                s+="%s\n" % fielddisplay(self,'obufsize',"Number of operations per buffer (==OBUFSIZE in usrparms.h)")
     39                s+="%s\n" % fielddisplay(self,'lbufsize',"Number of locations per buffer (==LBUFSIZE in usrparms.h)")
     40                s+="%s\n" % fielddisplay(self,'cbufsize',"Number of values per buffer (==CBUFSIZE in usrparms.h)")
     41                s+="%s\n" % fielddisplay(self,'tbufsize',"Number of taylors per buffer (<=TBUFSIZE in usrparms.h)")
    3642                return s
    3743        # }}}
    3844        def setdefaultparameters(self):    # {{{
    39                 return self
     45                self.obufsize     = 524288
     46                self.lbufsize     = 524288
     47                self.cbufsize     = 524288
     48                self.tbufsize     = 524288
     49return self
    4050        # }}}
    4151        def checkconsistency(self,md,solution,analyses):    # {{{
     
    4353                #Early return
    4454                if not self.isautodiff:
    45                         return md
     55                        return md
     56               
     57                md = checkfield(md,'autodiff.obufsize','>=',524288)
     58                md = checkfield(md,'autodiff.lbufsize','>=',524288)
     59                md = checkfield(md,'autodiff.cbufsize','>=',524288)
     60                md = checkfield(md,'autodiff.tbufsize','>=',524288)
    4661
    4762                #Driver value:
     
    6580                        WriteData(fid,'data',False,'enum',AutodiffKeepEnum(),'format','Boolean')
    6681                        return
    67 
     82                       
     83                #buffer sizes {{{
     84                WriteData(fid,'data',self,'fieldname','obufsize','enum',AutodiffObufsizeEnum(),'format','Double');
     85                WriteData(fid,'data',self,'fieldname','lbufsize','enum',AutodiffLbufsizeEnum(),'format','Double');
     86                WriteData(fid,'data',self,'fieldname','cbufsize','enum',AutodiffCbufsizeEnum(),'format','Double');
     87                WriteData(fid,'data',self,'fieldname','tbufsize','enum',AutodiffTbufsizeEnum(),'format','Double');
     88                #}}}
    6889                #process dependent variables {{{
    6990                num_dependent_objects=len(self.dependents)
     
    84105                        WriteData(fid,'data',indices,'enum',AutodiffDependentObjectIndicesEnum(),'format','IntMat','mattype',3)
    85106                #}}}
    86 
    87107                #process independent variables {{{
    88108                num_independent_objects=len(self.independents)
     
    100120                        WriteData(fid,'data',types,'enum',AutodiffIndependentObjectTypesEnum(),'format','IntMat','mattype',3)
    101121                #}}}
    102 
    103122                #if driver is fos_forward, build index:  {{{
    104123                if strcmpi(self.driver,'fos_forward'):
     
    118137                        WriteData(fid,'data',index,'enum',AutodiffFosForwardIndexEnum(),'format','Integer')
    119138                #}}}
    120 
    121139                #if driver is fos_reverse, build index:  {{{
    122140                if strcmpi(self.driver,'fos_reverse'):
     
    136154                        WriteData(fid,'data',index,'enum',AutodiffFosReverseIndexEnum(),'format','Integer')
    137155                #}}}
    138 
    139156                #if driver is fov_forward, build indices:  {{{
    140157                if strcmpi(self.driver,'fov_forward'):
     
    154171                        WriteData(fid,'data',indices,'enum',AutodiffFovForwardIndicesEnum(),'format','IntMat','mattype',3)
    155172                #}}}
    156 
    157173                #deal with mass fluxes:  {{{
    158174                mass_flux_segments=[dep.segments for dep in self.dependents if strcmpi(dep.name,'MassFlux')]
     
    165181                WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean')
    166182                #}}}
    167 
    168183                #deal with trace keep on: {{{
    169184                keep=False
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r16234 r16243  
    2929def AutodiffMassFluxSegmentsPresentEnum(): return StringToEnum("AutodiffMassFluxSegmentsPresent")[0]
    3030def AutodiffKeepEnum(): return StringToEnum("AutodiffKeep")[0]
     31def AutodiffObufsizeEnum(): return StringToEnum("AutodiffObufsize")[0]
     32def AutodiffLbufsizeEnum(): return StringToEnum("AutodiffLbufsize")[0]
     33def AutodiffCbufsizeEnum(): return StringToEnum("AutodiffCbufsize")[0]
     34def AutodiffTbufsizeEnum(): return StringToEnum("AutodiffTbufsize")[0]
    3135def BalancethicknessSpcthicknessEnum(): return StringToEnum("BalancethicknessSpcthickness")[0]
    3236def BalancethicknessStabilizationEnum(): return StringToEnum("BalancethicknessStabilization")[0]
Note: See TracChangeset for help on using the changeset viewer.