Changeset 9853


Ignore:
Timestamp:
09/20/11 11:05:10 (13 years ago)
Author:
Mathieu Morlighem
Message:

Checkmodelconsistency passes solution and analyses to the objects for further checks

Location:
issm/trunk/src/m
Files:
37 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk/src/m/classes/autodiff.m

    r9799 r9853  
    3535                        end
    3636                end % }}}
    37                 function checkconsistency(obj,md) % {{{
     37                function checkconsistency(obj,md,solution,analyses) % {{{
    3838
    3939                end % }}}
  • TabularUnified issm/trunk/src/m/classes/balancethickness.m

    r9799 r9853  
    3939
    4040                end % }}}
    41                 function checkconsistency(obj,md) % {{{
     41                function checkconsistency(obj,md,solution,analyses) % {{{
    4242                        if ~ismember(md.balancethickness.stabilization,[0 1 3]),
    4343                                checkmessage('model not consistent: balancethickness.stabilization should be a scalar (0 or 1 or 3)');
  • TabularUnified issm/trunk/src/m/classes/basalforcings.m

    r9799 r9853  
    3535                        end
    3636                end % }}}
    37                 function checkconsistency(obj,md) % {{{
     37                function checkconsistency(obj,md,solution,analyses) % {{{
    3838
    3939                        fields={'melting_rate','geothermalflux'};
  • TabularUnified issm/trunk/src/m/classes/clusters/castor.m

    r9751 r9853  
    4646                 end
    4747                 %}}}
    48                  function checkconsistency(cluster,md) % {{{1
     48                 function checkconsistency(cluster,md,solution,analyses) % {{{1
    4949
    5050                         available_queues={'shortc','longc'};
     
    5959                         %retrieve parameters
    6060                         modelname=md.miscellaneous.name;
    61                          solution_type=md.private.solution;
     61                         solution=md.private.solution;
    6262
    6363                         %open file for writing:
     
    7777                         fprintf(fid,'cd $PBS_O_WORKDIR\n');
    7878                         fprintf(fid,'export OMP_NUM_THREADS=1\n');
    79                          fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname);
     79                         fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname);
    8080
    8181                         %close file
  • TabularUnified issm/trunk/src/m/classes/clusters/cosmos.m

    r9751 r9853  
    4646                 end
    4747                 %}}}
    48                  function checkconsistency(cluster,md) % {{{1
     48                 function checkconsistency(cluster,md,solution,analyses) % {{{1
    4949
    5050                         available_queues={'debug','shortq','longq'};
     
    5959                         %retrieve parameters
    6060                         modelname=md.miscellaneous.name;
    61                          solution_type=md.private.solution;
     61                         solution=md.private.solution;
    6262
    6363                         %open file for writing:
     
    7676                         fprintf(fid,'ulimit -s unlimited\n');
    7777                         fprintf(fid,'ulimit -c 0\n');
    78                          fprintf(fid,'/opt/mpich/gm/intel10.1/bin/mpiexec -np %i %s/issm.exe %s %s %s',cluster.np,cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname);
     78                         fprintf(fid,'/opt/mpich/gm/intel10.1/bin/mpiexec -np %i %s/issm.exe %s %s %s',cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname);
    7979
    8080                         %close file
  • TabularUnified issm/trunk/src/m/classes/clusters/gemini.m

    r9751 r9853  
    4646                 end
    4747                 %}}}
    48                  function checkconsistency(cluster,md) % {{{1
     48                 function checkconsistency(cluster,md,solution,analyses) % {{{1
    4949
    5050                         available_queues={'debug','shortg','longg'};
     
    5959                         %retrieve parameters
    6060                         modelname=md.miscellaneous.name;
    61                          solution_type=md.private.solution;
     61                         solution=md.private.solution;
    6262
    6363                         %open file for writing:
     
    7777                         fprintf(fid,'cd $PBS_O_WORKDIR\n');
    7878                         fprintf(fid,'export OMP_NUM_THREADS=1\n');
    79                          fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname);
     79                         fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname);
    8080
    8181                         %close file
  • TabularUnified issm/trunk/src/m/classes/clusters/generic.m

    r9751 r9853  
    6060                 end
    6161                 %}}}
    62                  function checkconsistency(cluster,md) % {{{1
     62                 function checkconsistency(cluster,md,solution,analyses) % {{{1
    6363                         if cluster.np<1
    6464                                 checkmessage(['number of processors should be at least 1']);
     
    7373                         %retrieve parameters
    7474                         modelname=md.miscellaneous.name;
    75                          solution_type=md.private.solution;
     75                         solution=md.private.solution;
    7676                         isvalgrind=md.debug.valgrind;
    7777                         isgprof=md.debug.gprof;
     
    8585                                 if cluster.interactive
    8686                                         fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s ',...
    87                                                  cluster.np,cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname);
     87                                                 cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname);
    8888                                 else
    8989                                         fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
    90                                                  cluster.np,cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname,modelname,modelname);
     90                                                 cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname,modelname,modelname);
    9191                                 end
    9292                         else
    93                                  %fprintf(fid,'LD_PRELOAD=%s mpiexec -np %i %s --leak-check=full --gen-suppressions=all --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',cluster.valgrindlib,cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname,modelname,modelname);
     93                                 %fprintf(fid,'LD_PRELOAD=%s mpiexec -np %i %s --leak-check=full --gen-suppressions=all --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',cluster.valgrindlib,cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname,modelname,modelname);
    9494                                 fprintf(fid,'LD_PRELOAD=%s mpiexec -np %i %s --leak-check=full --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
    95                                          cluster.valgrindlib,cluster.np,cluster.valgrind,cluster.valgrindsup, cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname,modelname,modelname);
     95                                         cluster.valgrindlib,cluster.np,cluster.valgrind,cluster.valgrindsup, cluster.codepath,EnumToString(solution),cluster.executionpath,modelname,modelname,modelname);
    9696                         end
    9797
  • TabularUnified issm/trunk/src/m/classes/clusters/none.m

    r9751 r9853  
    3030                 end
    3131                 %}}}
    32                  function checkconsistency(cluster,md) % {{{1
     32                 function checkconsistency(cluster,md,solution,analyses) % {{{1
    3333                 end
    3434                 %}}}
  • TabularUnified issm/trunk/src/m/classes/clusters/pfe.m

    r9751 r9853  
    6565                 end
    6666                 %}}}
    67                  function checkconsistency(cluster,md) % {{{1
     67                 function checkconsistency(cluster,md,solution,analyses) % {{{1
    6868
    6969                         available_queues={'long','debug'};
     
    109109                         %retrieve parameters
    110110                         modelname=md.miscellaneous.name;
    111                          solution_type=md.private.solution;
     111                         solution=md.private.solution;
    112112                         isvalgrind=md.debug.valgrind;
    113113
     
    138138                         fprintf(fid,'cd $PBS_O_WORKDIR\n\n');
    139139
    140                          fprintf(fid,'mpiexec -verbose -np %i %s/issm.exe %s $PBS_O_WORKDIR %s\n',cluster.np,cluster.codepath,EnumToString(solution_type),modelname);
     140                         fprintf(fid,'mpiexec -verbose -np %i %s/issm.exe %s $PBS_O_WORKDIR %s\n',cluster.np,cluster.codepath,EnumToString(solution),modelname);
    141141
    142142                         if ~md.settings.io_gather,
     
    152152                                 fid=fopen([modelname '.run'],'w');
    153153                                 if ~isvalgrind,
    154                                          fprintf(fid,'mpiexec -verbose -np %i %s/issm.exe %s $PBS_O_WORKDIR %s\n',cluster.np,cluster.codepath,EnumToString(solution_type),modelname);
    155                                  else
    156                                          fprintf(fid,'mpiexec -verbose -np %i valgrind --leak-check=full %s/issm.exe %s $PBS_O_WORKDIR %s\n',cluster.np,cluster.codepath,EnumToString(solution_type),modelname);
     154                                         fprintf(fid,'mpiexec -verbose -np %i %s/issm.exe %s $PBS_O_WORKDIR %s\n',cluster.np,cluster.codepath,EnumToString(solution),modelname);
     155                                 else
     156                                         fprintf(fid,'mpiexec -verbose -np %i valgrind --leak-check=full %s/issm.exe %s $PBS_O_WORKDIR %s\n',cluster.np,cluster.codepath,EnumToString(solution),modelname);
    157157                                 end
    158158
  • TabularUnified issm/trunk/src/m/classes/clusters/pollux.m

    r9751 r9853  
    4646                 end
    4747                 %}}}
    48                  function checkconsistency(cluster,md) % {{{1
     48                 function checkconsistency(cluster,md,solution,analyses) % {{{1
    4949
    5050                         available_queues={'shortp','longp'};
     
    5959                         %retrieve parameters
    6060                         modelname=md.miscellaneous.name;
    61                          solution_type=md.private.solution;
     61                         solution=md.private.solution;
    6262
    6363                         %open file for writing:
     
    7777                         fprintf(fid,'cd $PBS_O_WORKDIR\n');
    7878                         fprintf(fid,'export OMP_NUM_THREADS=1\n');
    79                          fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,EnumToString(solution_type),cluster.executionpath,modelname);
     79                         fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,EnumToString(solution),cluster.executionpath,modelname);
    8080
    8181                         %close file
  • TabularUnified issm/trunk/src/m/classes/constants.m

    r9799 r9853  
    4545
    4646                end % }}}
    47                 function flag = checkconsistency(obj,md) % {{{
     47                function flag = checkconsistency(obj,md,solution,analyses) % {{{
    4848
    4949                        fields={'g'};
  • TabularUnified issm/trunk/src/m/classes/diagnostic.m

    r9799 r9853  
    7777
    7878                end % }}}
    79                 function checkconsistency(obj,md) % {{{
     79                function checkconsistency(obj,md,solution,analyses) % {{{
    8080
    8181                        fields={'restol','maxiter'};
  • TabularUnified issm/trunk/src/m/classes/flaim.m

    r9739 r9853  
    4141
    4242                end % }}}
    43                 function checkconsistency(obj,md) % {{{
     43                function checkconsistency(obj,md,solution,analyses) % {{{
    4444
    45                         if md.private.solution~=FlaimSolutionEnum,
     45                        if solution~=FlaimSolutionEnum,
    4646                                return;
    4747                        end
  • TabularUnified issm/trunk/src/m/classes/flowequation.m

    r9799 r9853  
    4141
    4242                end % }}}
    43                 function checkconsistency(obj,md) % {{{
     43                function checkconsistency(obj,md,solution,analyses) % {{{
    4444
    4545                end % }}}
  • TabularUnified issm/trunk/src/m/classes/friction.m

    r9811 r9853  
    3636
    3737                end % }}}
    38                 function checkconsistency(obj,md) % {{{
     38                function checkconsistency(obj,md,solution,analyses) % {{{
    3939
    4040                        fields={'coefficient','p','q'};
  • TabularUnified issm/trunk/src/m/classes/geometry.m

    r9811 r9853  
    3838
    3939                end % }}}
    40                 function checkconsistency(obj,md) % {{{
     40                function checkconsistency(obj,md,solution,analyses) % {{{
    4141                        fields={'surface','thickness','bed'};
    4242                        checknan(md,'geometry',fields);
  • TabularUnified issm/trunk/src/m/classes/groundingline.m

    r9820 r9853  
    4242
    4343                end % }}}
    44                 function checkconsistency(obj,md) % {{{
     44                function checkconsistency(obj,md,solution,analyses) % {{{
    4545
    4646                        if ~ismember({obj.migration},{'None' 'AgressiveMigration' 'SoftMigration'}),
  • TabularUnified issm/trunk/src/m/classes/hydrology.m

    r9842 r9853  
    4949                        obj.stabilization=1;
    5050                end % }}}
    51                 function checkconsistency(obj,md) % {{{
     51                function checkconsistency(obj,md,solution,analyses) % {{{
    5252
    5353                end % }}}
  • TabularUnified issm/trunk/src/m/classes/initialization.m

    r9820 r9853  
    4141
    4242                end % }}}
    43                 function checkconsistency(obj,md) % {{{
     43                function checkconsistency(obj,md,solution,analyses) % {{{
    4444
    4545                end % }}}
  • TabularUnified issm/trunk/src/m/classes/inversion.m

    r9821 r9853  
    8686
    8787                end % }}}
    88                 function checkconsistency(obj,md) % {{{
     88                function checkconsistency(obj,md,solution,analyses) % {{{
    8989
    9090                        %Early return
     
    124124
    125125                        %OBSERVED VELOCITIES
    126                         if md.private.solution==BalancethicknessSolutionEnum
     126                        if solution==BalancethicknessSolutionEnum
    127127                                fields={'thickness_obs'};
    128128                                checksize(md,'inversion',fields,[md.mesh.numberofvertices 1]);
  • TabularUnified issm/trunk/src/m/classes/mask.m

    r9749 r9853  
    3939
    4040                end % }}}
    41                 function checkconsistency(obj,md) % {{{
     41                function checkconsistency(obj,md,solution,analyses) % {{{
    4242
    4343                        fields=properties('mask');
  • TabularUnified issm/trunk/src/m/classes/materials.m

    r9751 r9853  
    7575                        obj.rheology_law='Paterson';
    7676                end % }}}
    77                 function checkconsistency(obj,md) % {{{
     77                function checkconsistency(obj,md,solution,analyses) % {{{
    7878                        fields={'rho_ice','rho_water','rheology_B','rheology_n'};
    7979                        checknan(md,'materials',fields);
  • TabularUnified issm/trunk/src/m/classes/mesh.m

    r9823 r9853  
    7878                        obj.average_vertex_connectivity=25;
    7979                end % }}}
    80                 function checkconsistency(obj,md) % {{{
     80                function checkconsistency(obj,md,solution,analyses) % {{{
    8181
    8282                        fields={'x','y','z','elements','elementonbed','elementonsurface','vertexonbed','vertexonsurface','elementconnectivity'};
     
    118118
    119119                        %Solution specific checks
    120                         switch(md.private.solution),
     120                        switch(solution),
    121121                                case PrognosticSolutionEnum,
    122122                                        if md.prognostic.stabilization==3,
  • TabularUnified issm/trunk/src/m/classes/miscellaneous.m

    r9821 r9853  
    2626                        end
    2727                end % }}}
    28                 function checkconsistency(obj,md) % {{{
     28                function checkconsistency(obj,md,solution,analyses) % {{{
    2929
    3030                        fields={'name'};
  • TabularUnified issm/trunk/src/m/classes/private.m

    r9821 r9853  
    3636
    3737                end % }}}
    38                 function checkconsistency(obj,md) % {{{
     38                function checkconsistency(obj,md,solution,analyses) % {{{
    3939
    4040                end % }}}
  • TabularUnified issm/trunk/src/m/classes/prognostic.m

    r9821 r9853  
    4646                        obj.hydrostatic_adjustment='Absolute';
    4747                end % }}}
    48                 function checkconsistency(obj,md) % {{{
     48                function checkconsistency(obj,md,solution,analyses) % {{{
    4949                        if ~ismember(obj.stabilization,[0 1 3]),
    5050                                checkmessage('prognostic.stabilization should be a scalar (0 or 1 or 3)');
  • TabularUnified issm/trunk/src/m/classes/qmu.m

    r9821 r9853  
    4848                        end
    4949                end % }}}
    50                 function checkconsistency(obj,md) % {{{
     50                function checkconsistency(obj,md,solution,analyses) % {{{
    5151
    5252                        %Early return
  • TabularUnified issm/trunk/src/m/classes/rifts.m

    r9821 r9853  
    3535                        end
    3636                end % }}}
    37                 function checkconsistency(obj,md) % {{{
     37                function checkconsistency(obj,md,solution,analyses) % {{{
    3838                        if obj.numrifts,
    3939                                if ~(md.mesh.dimension==2),
  • TabularUnified issm/trunk/src/m/classes/settings.m

    r9847 r9853  
    5252                        obj.waitonlock=Inf;
    5353                end % }}}
    54                 function checkconsistency(obj,md) % {{{
     54                function checkconsistency(obj,md,solution,analyses) % {{{
    5555
    5656                        fields={'lowmem'};
  • TabularUnified issm/trunk/src/m/classes/solver.m

    r9822 r9853  
    2727                 end
    2828                 %}}}
    29                  function checkconsistency(obj,md) % {{{
     29                 function checkconsistency(obj,md,solution,analyses) % {{{
    3030
    3131                 end % }}}
  • TabularUnified issm/trunk/src/m/classes/steadystate.m

    r9821 r9853  
    4141                        obj.reltol=0.01;
    4242                end % }}}
    43                 function checkconsistency(obj,md) % {{{
     43                function checkconsistency(obj,md,solution,analyses) % {{{
    4444
    4545                        %Early return
    46                         if md.private.solution~=SteadystateSolutionEnum, return; end;
     46                        if solution~=SteadystateSolutionEnum, return; end;
    4747
    4848                        if md.timestepping.time_step~=0,
  • TabularUnified issm/trunk/src/m/classes/surfaceforcings.m

    r9821 r9853  
    3535                        end
    3636                end % }}}
    37                 function checkconsistency(obj,md) % {{{
     37                function checkconsistency(obj,md,solution,analyses) % {{{
    3838
    3939                end % }}}
  • TabularUnified issm/trunk/src/m/classes/thermal.m

    r9821 r9853  
    5050                        obj.penalty_factor=3;
    5151                end % }}}
    52                 function checkconsistency(obj,md) % {{{
     52                function checkconsistency(obj,md,solution,analyses) % {{{
    5353                        if ~ismember(obj.stabilization,[0 1 2]),
    5454                                checkmessage('thermal.stabilization should be a scalar (0 or 1 or 2)');
  • TabularUnified issm/trunk/src/m/classes/timestepping.m

    r9821 r9853  
    4646                        obj.cfl_coefficient=.5;
    4747                end % }}}
    48                 function checkconsistency(obj,md) % {{{
     48                function checkconsistency(obj,md,solution,analyses) % {{{
    4949                        if ~ismember(md.timestepping.time_adapt,[0 1]),
    5050                                checkmessage(['model not consistent: model ' md.miscellaneous.name ' time_adapt field should be 0 or 1']);
  • TabularUnified issm/trunk/src/m/classes/transient.m

    r9821 r9853  
    4444
    4545                end % }}}
    46                 function checkconsistency(obj,md) % {{{
     46                function checkconsistency(obj,md,solution,analyses) % {{{
    4747                        if ~ismember(md.transient.isdiagnostic,[0 1]),
    4848                                checkmessage('model not consistent: transient.isdiagnostic should be a scalar (1 or 0)');
  • TabularUnified issm/trunk/src/m/classes/verbose.m

    r9739 r9853  
    9999                end
    100100                %}}}
    101                 function checkconsistency(obj,md) % {{{
     101                function checkconsistency(obj,md,solution,analyses) % {{{
    102102
    103103                end % }}}
  • TabularUnified issm/trunk/src/m/model/ismodelselfconsistent.m

    r9751 r9853  
    88modelconsistency(true);
    99
     10%Get solution and associated analyses
     11solution=md.private.solution;
     12[analyses,numanalyses]=AnalysisConfiguration(solution);
     13
    1014%Go through al model field check that it is a class and call checkconsistency
    1115fields=properties(md);
    1216for i=1:length(fields),
    1317        field=fields{i};
     18
     19        %Some properties do not need to be checked
    1420        if ismember(field,{'results' 'debug' 'radaroverlay'}),
    1521                continue;
    1622        end
     23
     24        %Check that current field is an object
    1725        if ~isobject(md.(field))
    1826                checkmessage(['field ''' char(field) ''' is not an object']);
    19         else
    20                 md.(field).checkconsistency(md);
    2127        end
     28
     29        %Check consistency of the object
     30        md.(field).checkconsistency(md,solution,analyses);
    2231end
    2332
Note: See TracChangeset for help on using the changeset viewer.