Changeset 9702


Ignore:
Timestamp:
09/08/11 15:48:24 (14 years ago)
Author:
Mathieu Morlighem
Message:

Added autofiff.m class and moved some other fields to settings

Location:
issm/trunk
Files:
7 added
7 deleted
25 edited

Legend:

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

    r9691 r9702  
    3535        SettingsLowmemEnum,
    3636        SettingsIoGatherEnum,
     37        SettingsResultsOnVerticesEnum,
     38        SettingsOutputFrequencyEnum,
     39        SettingsWaitonlockEnum,
    3740        ThermalSpctemperatureEnum,
    3841        ThermalPenaltyThresholdEnum,
     
    141144        BathymetryEnum,
    142145        SurfaceEnum,
     146        AutodiffAnalysisEnum,
     147        AutodiffForwardEnum,
     148        AutodiffReverseEnum,
    143149        /*}}}*/
    144150        /*Datasets {{{1*/
     
    364370        PatchNodesEnum,
    365371        TimeEnum,
    366         OutputFrequencyEnum,
    367372        WaterColumnOldEnum,
    368373        /*}}}*/
     
    472477        WaterfractionEnum,
    473478        WatercolumnEnum,
    474         WaitonlockEnum,
    475479        NumberOfResponsesEnum,
    476480        BasalFrictionEnum,
     
    481485        SpcDynamicEnum,
    482486        NumberOfEdgesEnum,
    483         ResultsOnVerticesEnum,
    484         /*Automatic Differentiation {{{1*/
    485         AdAnalysisEnum,
    486         AdForwardEnum,
    487         AdReverseEnum,
    488         /*}}}*/
     487
    489488        MaximumNumberOfEnums
    490489};
  • issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r9691 r9702  
    3939                case SettingsLowmemEnum : return "SettingsLowmem";
    4040                case SettingsIoGatherEnum : return "SettingsIoGather";
     41                case SettingsResultsOnVerticesEnum : return "SettingsResultsOnVertices";
     42                case SettingsOutputFrequencyEnum : return "SettingsOutputFrequency";
     43                case SettingsWaitonlockEnum : return "SettingsWaitonlock";
    4144                case ThermalSpctemperatureEnum : return "ThermalSpctemperature";
    4245                case ThermalPenaltyThresholdEnum : return "ThermalPenaltyThreshold";
     
    145148                case BathymetryEnum : return "Bathymetry";
    146149                case SurfaceEnum : return "Surface";
     150                case AutodiffAnalysisEnum : return "AutodiffAnalysis";
     151                case AutodiffForwardEnum : return "AutodiffForward";
     152                case AutodiffReverseEnum : return "AutodiffReverse";
    147153                case ConstraintsEnum : return "Constraints";
    148154                case ElementsEnum : return "Elements";
     
    327333                case PatchNodesEnum : return "PatchNodes";
    328334                case TimeEnum : return "Time";
    329                 case OutputFrequencyEnum : return "OutputFrequency";
    330335                case WaterColumnOldEnum : return "WaterColumnOld";
    331336                case MinVelEnum : return "MinVel";
     
    416421                case WaterfractionEnum : return "Waterfraction";
    417422                case WatercolumnEnum : return "Watercolumn";
    418                 case WaitonlockEnum : return "Waitonlock";
    419423                case NumberOfResponsesEnum : return "NumberOfResponses";
    420424                case BasalFrictionEnum : return "BasalFriction";
     
    425429                case SpcDynamicEnum : return "SpcDynamic";
    426430                case NumberOfEdgesEnum : return "NumberOfEdges";
    427                 case ResultsOnVerticesEnum : return "ResultsOnVertices";
    428                 case AdAnalysisEnum : return "AdAnalysis";
    429                 case AdForwardEnum : return "AdForward";
    430                 case AdReverseEnum : return "AdReverse";
    431431                default : return "unknown";
    432432
  • issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r9680 r9702  
    2929        parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsmacayealpattynEnum));
    3030        parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsstokesEnum));
    31         parameters->AddObject(iomodel->CopyConstantObject(OutputFrequencyEnum));
     31        parameters->AddObject(iomodel->CopyConstantObject(SettingsOutputFrequencyEnum));
    3232        parameters->AddObject(iomodel->CopyConstantObject(DiagnosticRestolEnum));
    3333        parameters->AddObject(iomodel->CopyConstantObject(DiagnosticReltolEnum));
     
    5959        parameters->AddObject(iomodel->CopyConstantObject(DiagnosticShelfDampeningEnum));
    6060        parameters->AddObject(iomodel->CopyConstantObject(DiagnosticViscosityOvershootEnum));
    61         parameters->AddObject(iomodel->CopyConstantObject(WaitonlockEnum));
     61        parameters->AddObject(iomodel->CopyConstantObject(SettingsWaitonlockEnum));
    6262        parameters->AddObject(iomodel->CopyConstantObject(NumberOfElementsEnum));
    6363        parameters->AddObject(iomodel->CopyConstantObject(SettingsIoGatherEnum));
  • issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r9691 r9702  
    3737        else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
    3838        else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
     39        else if (strcmp(name,"SettingsResultsOnVertices")==0) return SettingsResultsOnVerticesEnum;
     40        else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
     41        else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
    3942        else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
    4043        else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
     
    143146        else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum;
    144147        else if (strcmp(name,"Surface")==0) return SurfaceEnum;
     148        else if (strcmp(name,"AutodiffAnalysis")==0) return AutodiffAnalysisEnum;
     149        else if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;
     150        else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;
    145151        else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
    146152        else if (strcmp(name,"Elements")==0) return ElementsEnum;
     
    325331        else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum;
    326332        else if (strcmp(name,"Time")==0) return TimeEnum;
    327         else if (strcmp(name,"OutputFrequency")==0) return OutputFrequencyEnum;
    328333        else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
    329334        else if (strcmp(name,"MinVel")==0) return MinVelEnum;
     
    414419        else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    415420        else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
    416         else if (strcmp(name,"Waitonlock")==0) return WaitonlockEnum;
    417421        else if (strcmp(name,"NumberOfResponses")==0) return NumberOfResponsesEnum;
    418422        else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
     
    423427        else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
    424428        else if (strcmp(name,"NumberOfEdges")==0) return NumberOfEdgesEnum;
    425         else if (strcmp(name,"ResultsOnVertices")==0) return ResultsOnVerticesEnum;
    426         else if (strcmp(name,"AdAnalysis")==0) return AdAnalysisEnum;
    427         else if (strcmp(name,"AdForward")==0) return AdForwardEnum;
    428         else if (strcmp(name,"AdReverse")==0) return AdReverseEnum;
    429429        else _error_("Enum %s not found",name);
    430430
  • issm/trunk/src/c/solutions/issm.cpp

    r9681 r9702  
    8686
    8787        /*get parameters: */
    88         femmodel->parameters->FindParam(&waitonlock,WaitonlockEnum);
     88        femmodel->parameters->FindParam(&waitonlock,SettingsWaitonlockEnum);
    8989        femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
    9090        femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
  • issm/trunk/src/c/solutions/transient_core.cpp

    r9681 r9702  
    3636        femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
    3737        femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
    38         femmodel->parameters->FindParam(&output_frequency,OutputFrequencyEnum);
     38        femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
    3939        femmodel->parameters->FindParam(&time_adapt,TimesteppingTimeAdaptEnum);
    4040        femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
  • issm/trunk/src/m/classes/model/model.m

    r9691 r9702  
    8282                 nodeonbed         = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',1);
    8383                 nodeonsurface     = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',1);
    84                  minh              = modelfield('default',0,'marshall',false);
    8584
    8685                 %Extraction
     
    9392                 %Statics parameters
    9493                 connectivity             = modelfield('default',0,'marshall',true,'format','Integer');
    95 
    96 
    97                  %Results fields
    98                  output_frequency               = modelfield('default',0,'marshall',true,'format','Integer');
    99                  results_on_vertices            = modelfield('default',0,'marshall',true,'format','Boolean');
    100 
    101                  %Parallelisation
    102                  outlog        = modelfield('default','','marshall',false);
    103                  errlog        = modelfield('default','','marshall',false);
    104                  waitonlock    = modelfield('default',0,'marshall',true,'format','Boolean');
    105 
    106                  %ad: automatic differentiation
    107                  ad_analysis = modelfield('default',false,'marshall',true,'format','Boolean');
    108                  ad_forward = modelfield('default',true,'marshall',true,'format','Boolean');
    109                  ad_reverse = modelfield('default',false,'marshall',true,'format','Boolean');
    11094                 %}}}
    11195         end
     
    477461                         md.initialization   = initialization;
    478462                         md.geometry         = geometry;
    479 
    480                          %Solver parameters
     463                         md.verbose          = verbose('solution',true,'qmu',true,'control',true);
    481464
    482465                         %the connectivity is the avergaded number of nodes linked to a
     
    486469                         %trunk/test/Miscellaneous/runme.m
    487470                         md.connectivity=25;
    488 
    489 
    490                          %parameter used to print temporary results (convergence criterion,
    491                          %current step,...)
    492                          md.verbose=verbose('solution',true,'qmu',true,'control',true);
    493 
    494                          %minimum thickness to avoid stiffness singularity, used in
    495                          %the parameter file
    496                          md.minh=1;
    497 
    498                          %How often to save results, default is 1 so save every step
    499                          md.output_frequency=1;
    500 
    501                          %this option can be activated to load automatically the results
    502                          %onto the model after a parallel run by waiting for the lock file
    503                          %N minutes that is generated once the solution has converged
    504                          %0 to desactivate
    505                          md.waitonlock=Inf;
    506471                 end
    507472                 %}}}
    508                  function result = subsref(md,index) % {{{1
    509 
    510                          if length(index)==1,
    511                                  index1=index(1);
    512                                  if(strcmp(index1.subs,'mesh')), displaymesh(md);return; end
    513                                  if(strcmp(index1.subs,'bc')), displaybc(md);return; end
    514                                  if(strcmp(index1.subs,'mat')), displaymaterials(md);return; end
    515                                  if(strcmp(index1.subs,'par')), displayparameters(md);return; end
    516                                  if(strcmp(index1.subs,'res')), displayresults(md);return; end
    517                                  if(strcmp(index1.subs,'parallel')), displayparallel(md);return; end
    518                          end
    519 
    520                          %return built in value
    521                          result=builtin('subsref',md,index);
    522                  end %}}}
    523473         end
    524474 end
  • issm/trunk/src/m/classes/settings.m

    r9622 r9702  
    66classdef settings
    77        properties (SetAccess=public)
    8                 io_gather = modelfield('default',0,'marshall',true,'format','Boolean');
    9                 lowmem    = modelfield('default',0,'marshall',true,'format','Boolean');
     8                io_gather           = modelfield('default',0,'marshall',true,'format','Boolean');
     9                lowmem              = modelfield('default',0,'marshall',true,'format','Boolean');
     10                results_on_vertices = modelfield('default',0,'marshall',true,'format','Boolean');
     11                output_frequency    = modelfield('default',0,'marshall',true,'format','Boolean');
     12                waitonlock          = modelfield('default',0,'marshall',true,'format','Boolean');
    1013        end
    1114        methods
     
    3437                        end
    3538
    36                         %lowmem??
     39                        %are we short in memory ? (0 faster but requires more memory)
    3740                        obj.lowmem=0;
    3841
    3942                        %i/o:
    4043                        obj.io_gather=1;
     44
     45                        %results frequency by default every step
     46                        obj.output_frequency=1;
     47
     48                        %this option can be activated to load automatically the results
     49                        %onto the model after a parallel run by waiting for the lock file
     50                        %N minutes that is generated once the solution has converged
     51                        %0 to desactivate
     52                        md.waitonlock=Inf;
    4153                end % }}}
    4254        end
  • issm/trunk/src/m/model/ismodelselfconsistent.m

    r9691 r9702  
    284284if strcmpi(md.private.solution,'qmu'),
    285285        if ~strcmpi(md.cluster.name,'none'),
    286                 if md.waitonlock==0,
     286                if md.settings.waitonlock==0,
    287287                        message(['model is not correctly configured: waitonlock should be activated when running qmu in parallel mode!']);
    288288                end
  • issm/trunk/src/m/model/loadresultsfromcluster.m

    r9650 r9702  
    1414%Download outputs from the cluster
    1515cluster.Download(md);
    16 
    17 %read log files onto  fields
    18 if exist([md.miscellaneous.name '.errlog'],'file'),
    19         md.errlog=char(textread([md.miscellaneous.name '.errlog'],'%s','delimiter','\n'));
    20 else
    21         md.errlog='';
    22 end
    23 
    24 if exist([md.miscellaneous.name '.outlog'],'file'),
    25         md.outlog=char(textread([md.miscellaneous.name '.outlog'],'%s','delimiter','\n'));
    26 else
    27         md.outlog='';
    28 end
    29 
    30 if ~isempty(md.errlog),
    31         disp(['loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields']);
    32 end
    3316
    3417%If we are here, no errors in the solution sequence, call loadresultsfromdisk.
  • issm/trunk/src/m/model/loadresultsfromdisk.m

    r9650 r9702  
    2525        md.private.solution=structure(1).SolutionType;
    2626
     27        %read log files onto  fields
     28        if exist([md.miscellaneous.name '.errlog'],'file'),
     29                md.results.(structure(1).SolutionType).errlog=char(textread([md.miscellaneous.name '.errlog'],'%s','delimiter','\n'));
     30        else
     31                md.results.(structure(1).SolutionType).errlog='';
     32        end
     33
     34        if exist([md.miscellaneous.name '.outlog'],'file'),
     35                md.results.(structure(1).SolutionType).outlog=char(textread([md.miscellaneous.name '.outlog'],'%s','delimiter','\n'));
     36        else
     37                md.iresults.(structure(1).SolutionType).outlog='';
     38        end
     39
     40        if ~isempty(md.results.(structure(1).SolutionType).errlog),
     41                disp(['loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields']);
     42        end
     43
     44
    2745%post processes qmu results if necessary
    2846else
  • issm/trunk/src/m/model/solveparallel.m

    r9650 r9702  
    2525
    2626                %Do we return, or just wait for results?
    27                 if (md.waitonlock>0 &  ~strcmpi(options.batch,'yes')),
     27                if (md.settings.waitonlock>0 &  ~strcmpi(options.batch,'yes')),
    2828                        %we wait for the done file
    2929                        islock=waitonlock(md);
  • issm/trunk/src/m/model/waitonlock.m

    r9625 r9702  
    1313login=md.cluster.login;
    1414port=md.cluster.port;
    15 timelimit=md.waitonlock;
     15timelimit=md.settings.waitonlock;
    1616filename=[executionpath '/' md.private.runtimename '/' md.miscellaneous.name '.lock'];
    1717
     
    4949        %build output
    5050        if (time>timelimit),
    51                 disp('Time limit exceeded. Increase md.waitonlock');
     51                disp('Time limit exceeded. Increase md.settings.waitonlock');
    5252                disp('The results must be loaded manually with md=loadresultsfromcluster(md).');
    5353                error(['waitonlock error message: time limit exceeded']);
  • issm/trunk/src/m/solutions/transient_core.m

    r9681 r9702  
    1212        control_analysis=femmodel.parameters.InversionIscontrol;
    1313        solution_type=femmodel.parameters.SolutionType;
    14         output_frequency=femmodel.parameters.OutputFrequency;
     14        output_frequency=femmodel.parameters.SettingsOutputFrequency;
    1515        time_adapt=femmodel.parameters.TimesteppingTimeAdapt;
    1616        isdiagnostic=femmodel.parameters.TransientIsdiagnostic;
  • issm/trunk/template

    r9691 r9702  
    4949          -> already exists
    5050}}}
    51 results{{{
    52         results_on_vertices
    53           output_frequency
    54           outlog
    55           errlog
    56           + all model results ??? (DiagnosticSolution and others?)
    57 }}}
  • issm/trunk/test/Miscellaneous/Bump/Bump.par

    r9691 r9702  
    3232
    3333%Parallel options
    34 md.waitonlock=1;
     34md.settings.waitonlock=1;
    3535md.connectivity=100;
  • issm/trunk/test/Miscellaneous/GJM_test1/SquareShelf.par

    r9691 r9702  
    2828md.prognostic.stabilization=1;
    2929md.thermal.stabilization=1;
    30 md.waitonlock=30;
     30md.settings.waitonlock=30;
    3131md.verbose=verbose(0);
    3232md.eps_res=0.10;
  • issm/trunk/test/Miscellaneous/connectivity/Square.par

    r9691 r9702  
    3636md.np=8;
    3737md.time=50;
    38 md.waitonlock=1;
     38md.settings.waitonlock=1;
    3939md.debug=1;
  • issm/trunk/test/Par/79North.par

    r9691 r9702  
    3434md.thermal.stabilization=1;
    3535md.verbose=verbose(0);
    36 md.waitonlock=30;
     36md.settings.waitonlock=30;
    3737md.timestepping.time_step=1;
    3838md.timestepping.final_time=3;
  • issm/trunk/test/Par/Pig.par

    r9691 r9702  
    3131md.prognostic.stabilization=1;
    3232md.verbose=verbose(0);
    33 md.waitonlock=30;
     33md.settings.waitonlock=30;
    3434md.timestepping.time_step=1;
    3535md.timestepping.final_time=2;
  • issm/trunk/test/Par/RoundSheetShelf.par

    r9693 r9702  
    6161md.thermal.stabilization=1;
    6262md.verbose=verbose(0);
    63 md.waitonlock=30;
     63md.settings.waitonlock=30;
    6464md.diagnostic.restol=0.05;
    6565md.diagnostic.reltol=0.05;
  • issm/trunk/test/Par/SquareSheetConstrained.par

    r9691 r9702  
    3535md.thermal.stabilization=1;
    3636md.verbose=verbose(0);
    37 md.waitonlock=30;
     37md.settings.waitonlock=30;
    3838md.diagnostic.restol=0.05;
    3939md.steadystate.reltol=0.05;
  • issm/trunk/test/Par/SquareSheetShelf.par

    r9691 r9702  
    4242md.thermal.stabilization=1;
    4343md.verbose=verbose(0);
    44 md.waitonlock=30;
     44md.settings.waitonlock=30;
    4545md.diagnostic.restol=0.05;
    4646md.steadystate.reltol=0.05;
  • issm/trunk/test/Par/SquareShelf.par

    r9691 r9702  
    3434md.prognostic.stabilization=1;
    3535md.thermal.stabilization=1;
    36 md.waitonlock=30;
     36md.settings.waitonlock=30;
    3737md.verbose=verbose(0);
    3838md.diagnostic.restol=0.10;
  • issm/trunk/test/Par/SquareShelfConstrained.par

    r9691 r9702  
    3939md.thermal.stabilization=1;
    4040md.verbose=verbose(0);
    41 md.waitonlock=30;
     41md.settings.waitonlock=30;
    4242md.diagnostic.restol=0.05;
    4343md.diagnostic.reltol=0.05;
Note: See TracChangeset for help on using the changeset viewer.