Changeset 13083


Ignore:
Timestamp:
08/17/12 13:57:03 (13 years ago)
Author:
Eric.Larour
Message:

CHG: introduced autodiff bool to hook off and on the ADOLC
at run time.

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r13047 r13083  
    1212enum definitions{
    1313        /*Model fields {{{1*/
    14         AutodiffForwardEnum,
    1514        AutodiffIsautodiffEnum,
    16         AutodiffReverseEnum,
    1715        BalancethicknessSpcthicknessEnum,
    1816        BalancethicknessStabilizationEnum,
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r13047 r13083  
    1717        switch(en){
    1818
    19                 case AutodiffForwardEnum : return "AutodiffForward";
    2019                case AutodiffIsautodiffEnum : return "AutodiffIsautodiff";
    21                 case AutodiffReverseEnum : return "AutodiffReverse";
    2220                case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
    2321                case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r13051 r13083  
    8686        parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
    8787        parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum));
    88         parameters->AddObject(iomodel->CopyConstantObject(AutodiffForwardEnum));
    89         parameters->AddObject(iomodel->CopyConstantObject(AutodiffReverseEnum));
    9088        parameters->AddObject(iomodel->CopyConstantObject(QmuIsdakotaEnum));
    9189        parameters->AddObject(iomodel->CopyConstantObject(InversionIscontrolEnum));
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r13056 r13083  
    1818
    1919   if(stage==1){
    20               if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;
    21               else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
    22               else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;
     20              if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
    2321              else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
    2422              else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
     
    138136              else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
    139137              else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
     138              else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
     139              else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
    140140         else stage=2;
    141141   }
    142142   if(stage==2){
    143               if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
    144               else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
    145               else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
     143              if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
    146144              else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
    147145              else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
     
    261259              else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
    262260              else if (strcmp(name,"Contour")==0) return ContourEnum;
     261              else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
     262              else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
    263263         else stage=3;
    264264   }
    265265   if(stage==3){
    266               if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
    267               else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
    268               else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
     266              if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
    269267              else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
    270268              else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
     
    384382              else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
    385383              else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
     384              else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
     385              else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
    386386         else stage=4;
    387387   }
    388388   if(stage==4){
    389               if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
    390               else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
    391               else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
     389              if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
    392390              else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
    393391              else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
  • issm/trunk-jpl/src/c/solutions/issm.cpp

    r13080 r13083  
    1515
    1616        /*AD: */
     17        bool autodiff=false;
    1718        #if _ADOLC_VERSION_ == 2
    1819        int      tape_stats[11];
     
    4950        ISSMBOOT();
    5051
    51         /*If running AD, then initialize the tape: */
    52         #ifdef _HAVE_ADOLC_
    53         trace_on(1);
    54         #endif
    55 
     52       
    5653        /*Initialize environments: Petsc, MPI, etc...: */
    5754        #ifdef _HAVE_PETSC_
     
    112109        femmodel->parameters->FindParam(&tao_analysis,InversionTaoEnum);
    113110        femmodel->parameters->FindParam(&profiling,DebugProfilingEnum);
     111        femmodel->parameters->FindParam(&autodiff,AutodiffIsautodiffEnum);
    114112
    115113        #ifdef _HAVE_MPI_
     
    117115        #else
    118116        finish_init=(IssmPDouble)clock();
     117        #endif
     118       
     119        /*If running AD, then initialize the tape: */
     120        #ifdef _HAVE_ADOLC_
     121        if(autodiff) trace_on(1);
    119122        #endif
    120123
     
    165168        _pprintLine_("write results to disk:");
    166169        OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
     170       
     171        /*If running AD, close our tape, print statistics: {{{*/
     172        #ifdef _HAVE_ADOLC_
     173        if(autodiff){
     174                trace_off();
     175                tapestats(1,tape_stats); //reading of tape statistics
     176                _pprintLine_("   ADOLC statistics: ");
     177                _pprintLine_("   "<<setw(45)<<left<<"Number of independents: " <<tape_stats[0]);
     178                _pprintLine_("   "<<setw(45)<<left<<"Number of dependents: " <<tape_stats[1]);
     179                _pprintLine_("   "<<setw(45)<<left<<"Maximal number of live active variables: " <<tape_stats[2]);
     180                _pprintLine_("   "<<setw(45)<<left<<"Size of value stack (number of overwrites): " <<tape_stats[3]);
     181                _pprintLine_("   "<<setw(45)<<left<<"Buffer size (a multiple of eight): " <<tape_stats[4]);
     182                _pprintLine_("   "<<setw(45)<<left<<"Total number of operations recorded: " <<tape_stats[5]);
     183        }
     184        #endif  /*}}}*/
    167185
    168186        /*Close output and petsc options file and write lock file if requested*/
     
    213231        #endif
    214232
    215         /*If running AD, close our tape, print statistics: */
    216         #ifdef _HAVE_ADOLC_
    217         trace_off();
    218         tapestats(1,tape_stats); //reading of tape statistics
    219         _pprintLine_("   ADOLC statistics: ");
    220         _pprintLine_("   "<<setw(45)<<left<<"Number of independents: " <<tape_stats[0]);
    221         _pprintLine_("   "<<setw(45)<<left<<"Number of dependents: " <<tape_stats[1]);
    222         _pprintLine_("   "<<setw(45)<<left<<"Maximal number of live active variables: " <<tape_stats[2]);
    223         _pprintLine_("   "<<setw(45)<<left<<"Size of value stack (number of overwrites): " <<tape_stats[3]);
    224         _pprintLine_("   "<<setw(45)<<left<<"Buffer size (a multiple of eight): " <<tape_stats[4]);
    225         _pprintLine_("   "<<setw(45)<<left<<"Total number of operations recorded: " <<tape_stats[5]);
    226         #endif
    227233       
    228234        /*end module: */
  • issm/trunk-jpl/src/m/classes/autodiff.m

    r12663 r13083  
    77        properties (SetAccess=public)
    88                isautodiff = false;
    9                 forward    = true;
    10                 reverse    = false;
    119        end
    1210        methods
     
    2927
    3028                        fielddisplay(obj,'isautodiff','indicates if the automatic differentiation is activated');
    31                         fielddisplay(obj,'forward','forward differentiation');
    32                         fielddisplay(obj,'reverse','backward differentiation');
    3329
    3430                end % }}}
    3531                function marshall(obj,fid) % {{{
    3632                        WriteData(fid,'object',obj,'fieldname','isautodiff','format','Boolean');
    37                         WriteData(fid,'object',obj,'fieldname','forward','format','Boolean');
    38                         WriteData(fid,'object',obj,'fieldname','reverse','format','Boolean');
    3933                end % }}}
    4034        end
  • issm/trunk-jpl/src/m/classes/autodiff.py

    r13023 r13083  
    1717                # {{{ Properties
    1818                self.isautodiff = False
    19                 self.forward    = True
    20                 self.reverse    = False
    2119
    2220                #set defaults
     
    2826                string='   automatic differentiation parameters:'
    2927                string="%s\n%s"%(string,fielddisplay(self,'isautodiff','indicates if the automatic differentiation is activated'))
    30                 string="%s\n%s"%(string,fielddisplay(self,'forward','forward differentiation'))
    31                 string="%s\n%s"%(string,fielddisplay(self,'reverse','backward differentiation'))
    3228                return string
    3329                #}}}
     
    4339        def marshall(self,fid):    # {{{
    4440                WriteData(fid,'object',self,'fieldname','isautodiff','format','Boolean')
    45                 WriteData(fid,'object',self,'fieldname','forward','format','Boolean')
    46                 WriteData(fid,'object',self,'fieldname','reverse','format','Boolean')
    4741        # }}}
    4842
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r13047 r13083  
    99"""
    1010
    11 def AutodiffForwardEnum():
    12         """
    13         AUTODIFFFORWARDENUM - Enum of AutodiffForward
    14 
    15            Usage:
    16               macro=AutodiffForwardEnum()
    17         """
    18 
    19         return StringToEnum('AutodiffForward')[0]
    20 
    2111def AutodiffIsautodiffEnum():
    2212        """
     
    2919        return StringToEnum('AutodiffIsautodiff')[0]
    3020
    31 def AutodiffReverseEnum():
    32         """
    33         AUTODIFFREVERSEENUM - Enum of AutodiffReverse
    34 
    35            Usage:
    36               macro=AutodiffReverseEnum()
    37         """
    38 
    39         return StringToEnum('AutodiffReverse')[0]
    40 
    4121def BalancethicknessSpcthicknessEnum():
    4222        """
     
    46274607        """
    46284608
    4629         return 461
    4630 
     4609        return 459
     4610
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r13047 r13083  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=461;
     11macro=459;
Note: See TracChangeset for help on using the changeset viewer.