Changeset 8585
- Timestamp:
- 06/09/11 09:34:51 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/model/ismodelselfconsistent.m
r8486 r8585 10 10 if nargin~=1, 11 11 help ismodelselfconsistent 12 error('ismodelselfconsistent errormessage: wrong usage');12 message('ismodelselfconsistent message message: wrong usage'); 13 13 end 14 14 %}}} … … 22 22 disp(' md.verbose=verbose;'); 23 23 disp(' '); 24 error(['field verbose should be of class ''verbose'' ']);24 message(['field verbose should be of class ''verbose'' ']); 25 25 end 26 26 %}}} 27 27 %COUNTER {{{1 28 28 if md.counter<3, 29 error(['model ' md.name ' is not correctly configured. You forgot one step in the following sequence (mesh, geography, parameterize,setelementstype)!']);29 message(['model ' md.name ' is not correctly configured. You forgot one step in the following sequence (mesh, geography, parameterize,setelementstype)!']); 30 30 end 31 31 %}}} 32 32 %NAME{{{1 33 33 if isempty(md.name), 34 error(['model is not correctly configured: missing name!']);34 message(['model is not correctly configured: missing name!']); 35 35 end 36 36 %}}} … … 43 43 end 44 44 if any(~ismember(1:md.numberofnodes,sort(unique(md.elements(:))))); 45 error('orphan nodes have been found. Check the mesh');45 message('orphan nodes have been found. Check the mesh'); 46 46 end 47 47 %}}} … … 65 65 checksize(md,fields,[NaN 6]); 66 66 else 67 error('dim should be either 2 3');67 message('dim should be either 2 3'); 68 68 end 69 69 checkvalues(md,{'pressureload(:,end)'},[WaterEnum() AirEnum() IceEnum()]); … … 101 101 %THICKNESS = SURFACE - BED {{{1 102 102 if any((md.thickness-md.surface+md.bed)>tolerance), 103 error(['model not consistent: model ' md.name ' violates the equality thickness=surface-bed!']);103 message(['model not consistent: model ' md.name ' violates the equality thickness=surface-bed!']); 104 104 end 105 105 %GROUNDING LINE MIGRATION {{{1 … … 107 107 if (md.gl_migration~=NoneEnum), 108 108 if (md.dim==3 | strcmpi(md.cluster.name,'none')), 109 error(['model ' md.name ' requesting grounding line migration, but grounding line module only implemented for 2d models and parallel runs!']);109 message(['model ' md.name ' requesting grounding line migration, but grounding line module only implemented for 2d models and parallel runs!']); 110 110 end 111 111 if isnan(md.bathymetry), 112 error(['model not consistent: model ' md.name ' requesting grounding line migration, but bathymetry is absent!']);112 message(['model not consistent: model ' md.name ' requesting grounding line migration, but bathymetry is absent!']); 113 113 end 114 114 end … … 118 118 if md.numrifts, 119 119 if ~(md.dim==2), 120 error(['model not consistent: models with rifts are only supported in 2d for now!']);120 message(['model not consistent: models with rifts are only supported in 2d for now!']); 121 121 end 122 122 if ~isstruct(md.rifts), 123 error(['model not consistent: md.rifts should be a structure!']);123 message(['model not consistent: md.rifts should be a structure!']); 124 124 end 125 125 if ~isempty(find(md.segmentmarkers>=2)), 126 126 %We have segments with rift markers, but no rift structure! 127 error(['model not consistent: model ' md.name ' should be processed for rifts (run meshprocessrifts)!']);127 message(['model not consistent: model ' md.name ' should be processed for rifts (run meshprocessrifts)!']); 128 128 end 129 129 %Check that rifts are filled with proper material … … 131 131 else 132 132 if ~isnans(md.rifts), 133 error(['model not consistent: md.rifts shoud be NaN since md.numrifts is 0!']);133 message(['model not consistent: md.rifts shoud be NaN since md.numrifts is 0!']); 134 134 end 135 135 end … … 137 137 %FLAGS (0 or 1){{{1 138 138 if ~ismember(md.artificial_diffusivity,[0 1 2]), 139 error('model not consistent: artificial_diffusivity should be a scalar (0 or 1 or 2)');139 message('model not consistent: artificial_diffusivity should be a scalar (0 or 1 or 2)'); 140 140 end 141 141 if ~ismember(md.prognostic_DG,[0 1]), 142 error('model not consistent: prognostic_DG should be a scalar (1 or 0)');142 message('model not consistent: prognostic_DG should be a scalar (1 or 0)'); 143 143 end 144 144 if ~ismember(md.lowmem,[0 1]), 145 error(['model not consistent: model ' md.name ' lowmem field should be 0 or 1']);145 message(['model not consistent: model ' md.name ' lowmem field should be 0 or 1']); 146 146 end 147 147 if ~ismember(md.time_adapt,[0 1]), 148 error(['model not consistent: model ' md.name ' time_adapt field should be 0 or 1']);148 message(['model not consistent: model ' md.name ' time_adapt field should be 0 or 1']); 149 149 end 150 150 if ~ismember(md.hydrostatic_adjustment,[AbsoluteEnum IncrementalEnum]), 151 error(['model not consistent: model ' md.name ' hydrostatic_adjustment field should be AbsoluteEnum or IncrementalEnum']);151 message(['model not consistent: model ' md.name ' hydrostatic_adjustment field should be AbsoluteEnum or IncrementalEnum']); 152 152 end 153 153 if ~ismember(md.rheology_law,[NoneEnum PatersonEnum ArrheniusEnum]), 154 error(['model not consistent: model ' md.name ' rheology_law field should be NoneEnum, PatersonEnum or ArrheniusEnum']);154 message(['model not consistent: model ' md.name ' rheology_law field should be NoneEnum, PatersonEnum or ArrheniusEnum']); 155 155 end 156 156 %}}} 157 157 %PARAMETEROUTPUT {{{1 158 158 if md.numoutput~=length(md.parameteroutput), 159 error('model not consistent: numoutput should be the same size as parameteroutput');159 message('model not consistent: numoutput should be the same size as parameteroutput'); 160 160 end 161 161 %}}} … … 163 163 if (md.dim==2), 164 164 if md.connectivity<9, 165 error('model not consistent: connectivity should be at least 9 for 2d models');165 message('model not consistent: connectivity should be at least 9 for 2d models'); 166 166 end 167 167 end 168 168 if md.dim==3, 169 169 if md.connectivity<24, 170 error('model not consistent: connectivity should be at least 24 for 3d models');170 message('model not consistent: connectivity should be at least 24 for 3d models'); 171 171 end 172 172 end … … 213 213 pos=find(md.thickness<=0); 214 214 if any(find(md.spcthickness(pos,1)==0)), 215 error(['model not consistent: model ' md.name ' has some nodes with 0 thickness']);215 message(['model not consistent: model ' md.name ' has some nodes with 0 thickness']); 216 216 end 217 217 end … … 225 225 if md.qmu_analysis, 226 226 if md.qmu_params.evaluation_concurrency~=1, 227 error(['model not consistent: concurrency should be set to 1 when running dakota in library mode']);227 message(['model not consistent: concurrency should be set to 1 when running dakota in library mode']); 228 228 end 229 229 if ~isempty(md.part), 230 230 if numel(md.part)~=md.numberofnodes, 231 error(['model not consistent: user supplied partition for qmu analysis should have size md.numberofnodes x 1 ']);231 message(['model not consistent: user supplied partition for qmu analysis should have size md.numberofnodes x 1 ']); 232 232 end 233 233 if find(md.part)>=md.numberofnodes, 234 error(['model not consistent: user supplied partition should be indexed from 0 (c-convention)']);234 message(['model not consistent: user supplied partition should be indexed from 0 (c-convention)']); 235 235 end 236 236 if min(md.part)~=0, 237 error(['model not consistent: partition vector not indexed from 0 on']);237 message(['model not consistent: partition vector not indexed from 0 on']); 238 238 end 239 239 if max(md.part)>=md.numberofnodes, 240 error(['model not consistent: partition vector cannot have maximum index larger than number of nodes']);240 message(['model not consistent: partition vector cannot have maximum index larger than number of nodes']); 241 241 end 242 242 if ~isempty(find(md.part<0)), 243 error(['model not consistent: partition vector cannot have values less than 0']);243 message(['model not consistent: partition vector cannot have values less than 0']); 244 244 end 245 245 if ~isempty(find(md.part>=md.npart)), 246 error(['model not consistent: partition vector cannot have values more than md.npart-1']);246 message(['model not consistent: partition vector cannot have values more than md.npart-1']); 247 247 end 248 248 if max(md.part)>=md.npart, 249 error(['model not consistent: for qmu analysis, partitioning vector cannot go over npart, number of partition areas']);249 message(['model not consistent: for qmu analysis, partitioning vector cannot go over npart, number of partition areas']); 250 250 end 251 251 end 252 252 if ~md.qmu_relax, 253 253 if md.eps_rel>1.1*10^-5, 254 error(['model not consistent: for qmu analysis, eps_rel should be least than 10^-5, 10^-15 being a better value']);254 message(['model not consistent: for qmu analysis, eps_rel should be least than 10^-5, 10^-15 being a better value']); 255 255 end 256 256 end … … 260 260 if ~strcmpi(md.cluster.name,'none'), 261 261 if md.waitonlock==0, 262 error(['model is not correctly configured: waitonlock should be activated when running qmu in parallel mode!']);262 message(['model is not correctly configured: waitonlock should be activated when running qmu in parallel mode!']); 263 263 end 264 264 end … … 271 271 272 272 if md.dt<=0, 273 error('model not consistent: field dt must be positive for a transient run')273 message('model not consistent: field dt must be positive for a transient run') 274 274 end 275 275 if(md.cfl_coefficient>1 | md.cfl_coefficient<0), 276 error(['model not consistent: model ' md.name ' cfl_coefficient field should between 0 and 1']);276 message(['model not consistent: model ' md.name ' cfl_coefficient field should between 0 and 1']); 277 277 end 278 278 if(md.cfl_coefficient>1 | md.cfl_coefficient<0), 279 error(['model not consistent: model ' md.name ' cfl_coefficient field should between 0 and 1']);279 message(['model not consistent: model ' md.name ' cfl_coefficient field should between 0 and 1']); 280 280 end 281 281 if ~ismember(md.isdiagnostic,[0 1]), 282 error('model not consistent: isdiagnostic should be a scalar (1 or 0)');282 message('model not consistent: isdiagnostic should be a scalar (1 or 0)'); 283 283 end 284 284 if ~ismember(md.isprognostic,[0 1]), 285 error('model not consistent: isprognostic should be a scalar (1 or 0)');285 message('model not consistent: isprognostic should be a scalar (1 or 0)'); 286 286 end 287 287 if ~ismember(md.isthermal,[0 1]), 288 error('model not consistent: isthermal should be a scalar (1 or 0)');288 message('model not consistent: isthermal should be a scalar (1 or 0)'); 289 289 end 290 290 … … 300 300 for i=1:length(forcingnames), 301 301 if md.forcings.(forcingnames{i})(end,:)~=sort(md.forcings.(forcingnames{i})(end,:)), 302 error(['model not consistent: model ' md.name ' forcings.' forcingnames{i} ' columns should be chronological']);302 message(['model not consistent: model ' md.name ' forcings.' forcingnames{i} ' columns should be chronological']); 303 303 end 304 304 end … … 311 311 %NDT 312 312 if md.dt~=0, 313 error(['model not consistent: for a steadystate computation, dt must be zero.']);313 message(['model not consistent: for a steadystate computation, dt must be zero.']); 314 314 end 315 315 316 316 %eps: 317 317 if isnan(md.eps_rel), 318 error(['model not consistent: for a steadystate computation, eps_rel (relative convergence criterion) must be defined!']);318 message(['model not consistent: for a steadystate computation, eps_rel (relative convergence criterion) must be defined!']); 319 319 end 320 320 end … … 323 323 if md.solution_type==GroundingLineMigration2DSolutionEnum, 324 324 if strcmpi(md.cluster.name,'none'), 325 error(['model not consistent: ' md.solution_type ' is only implemented in parallel mode !'])325 message(['model not consistent: ' md.solution_type ' is only implemented in parallel mode !']) 326 326 end 327 327 328 328 if md.dt<=0, 329 error('model not consistent: field dt must be positive for a transient run') 330 end 331 332 %recursive call to ismodelselfconsistent 329 message('model not consistent: field dt must be positive for a transient run') 330 end 331 333 332 if (md.dim~=2), 334 error(['model not consistent: for a ' md.solution_type ' computation, the grounding line module is only implemented in 2d !'])333 message(['model not consistent: for a ' md.solution_type ' computation, the grounding line module is only implemented in 2d !']) 335 334 end 336 335 337 336 if(md.cfl_coefficient>1 | md.cfl_coefficient<0), 338 error(['model not consistent: model ' md.name ' cfl_coefficient field should between 0 and 1']);337 message(['model not consistent: model ' md.name ' cfl_coefficient field should between 0 and 1']); 339 338 end 340 339 end … … 343 342 if (md.solution_type == FlaimSolutionEnum), 344 343 if ~exist(md.fm_tracks,'file') 345 error(['model not consistent: fm_tracks file ''' md.fm_tracks ''' must exist.']);344 message(['model not consistent: fm_tracks file ''' md.fm_tracks ''' must exist.']); 346 345 end 347 346 % probably going to need some checks on fm_flightreqs here 348 347 if (numel(md.fm_criterion) ~= md.numberofnodes) && (numel(md.fm_criterion) ~= md.numberofelements) 349 error(['model not consistent: fm_criterion vector must have number of nodes (' int2str(md.numberofnodes) ') or elements (' int2str(md.numberofelements) ') values, not ' int2str(numel(md.fm_criterion)) ' values.']);348 message(['model not consistent: fm_criterion vector must have number of nodes (' int2str(md.numberofnodes) ') or elements (' int2str(md.numberofelements) ') values, not ' int2str(numel(md.fm_criterion)) ' values.']); 350 349 end 351 350 end … … 359 358 end 360 359 %}}} 360 361 if modelconsistency==false, error(['model not consistent']); end 361 362 end 362 363 … … 370 371 %SINGULAR 371 372 if ~any(sum(md.spcvelocity(:,1:2),2)==2), 372 error(['model not consistent: model ' md.name ' is not well posed (singular). You need at least one node with fixed velocity!'])373 message(['model not consistent: model ' md.name ' is not well posed (singular). You need at least one node with fixed velocity!']) 373 374 end 374 375 … … 377 378 pos=find(md.thickness<=0); 378 379 if any(find(md.spcthickness(pos,1)==0)), 379 error(['model not consistent: model ' md.name ' has some nodes with 0 thickness']);380 message(['model not consistent: model ' md.name ' has some nodes with 0 thickness']); 380 381 end 381 382 end … … 384 385 %CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES 385 386 if any(sum(isnan(md.diagnostic_ref),2)~=0 & sum(isnan(md.diagnostic_ref),2)~=6), 386 error(['model not consistent: model ' md.name ' has problem with rotated spc. Each line of diagnostic_ref should contain either only NaN values or no NaN values']);387 message(['model not consistent: model ' md.name ' has problem with rotated spc. Each line of diagnostic_ref should contain either only NaN values or no NaN values']); 387 388 end 388 389 %CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL … … 391 392 if any(dot(md.diagnostic_ref(pos,1:3),md.diagnostic_ref(pos,4:6))), 392 393 dot(md.diagnostic_ref(pos,1:3),md.diagnostic_ref(pos,4:6)) 393 error(['model not consistent: model ' md.name ' has problem with rotated spc. Vectors in diagnostic_ref (colums 1 to 3 and 4 to 6) must be orthogonal']);394 message(['model not consistent: model ' md.name ' has problem with rotated spc. Vectors in diagnostic_ref (colums 1 to 3 and 4 to 6) must be orthogonal']); 394 395 end 395 396 … … 399 400 pos=find(sum(isnan(md.diagnostic_ref),2)==0 & md.nodeonmacayeal); 400 401 if any(md.diagnostic_ref(pos,3:5)~=0); 401 error(['model not consistent: model ' md.name ' has problem with rotated spc. The rotation should be in the (x,y) plane for 2D diagnostic models (nodeonmacayeal)']);402 message(['model not consistent: model ' md.name ' has problem with rotated spc. The rotation should be in the (x,y) plane for 2D diagnostic models (nodeonmacayeal)']); 402 403 end 403 404 end … … 421 422 end 422 423 if (md.ismacayealpattyn==0 && md.ishutter==0 && md.isstokes==0), 423 error(['model not consistent: no elements type set for this model. at least one of ismacayealpattyn, ishutter and isstokes need to be =1']);424 message(['model not consistent: no elements type set for this model. at least one of ismacayealpattyn, ishutter and isstokes need to be =1']); 424 425 end 425 426 … … 435 436 end 436 437 if (md.ismacayealpattyn==0 && md.ishutter==0 && md.isstokes==0), 437 error(['model not consistent: no elements type set for this model. at least one of ismacayealpattyn, ishutter and isstokes need to be =1']);438 message(['model not consistent: no elements type set for this model. at least one of ismacayealpattyn, ishutter and isstokes need to be =1']); 438 439 end 439 440 %}}} … … 469 470 if (md.dim==2), 470 471 if isnan(find(~md.spcthickness(:,1))), 471 error(['model not consistent: model ' md.name ' is totally constrained for prognostic, no need to solve!']);472 message(['model not consistent: model ' md.name ' is totally constrained for prognostic, no need to solve!']); 472 473 end 473 474 end … … 487 488 return; 488 489 else 489 error(['model not consistent: for a ' EnumToString(md.solution_type) ' computation, the model must be 3d, extrude it first!'])490 message(['model not consistent: for a ' EnumToString(md.solution_type) ' computation, the model must be 3d, extrude it first!']) 490 491 end 491 492 end … … 493 494 %CHECK THAT WE ARE NOT FULLY CONSTRAINED 494 495 if isnan(find(~md.spctemperature(:,1))), 495 error(['model not consistent: model ' md.name ' is totally constrained for temperature, no need to solve!']);496 message(['model not consistent: model ' md.name ' is totally constrained for temperature, no need to solve!']); 496 497 end 497 498 … … 525 526 return; 526 527 else 527 error(['model not consistent: for a ' EnumToString(md.solution_type) ' computation, the model must be 3d, extrude it first!'])528 message(['model not consistent: for a ' EnumToString(md.solution_type) ' computation, the model must be 3d, extrude it first!']) 528 529 end 529 530 end … … 531 532 %CHECK THAT WE ARE NOT FULLY CONSTRAINED 532 533 if isnan(find(~md.spctemperature(:,1))), 533 error(['model not consistent: model ' md.name ' is totally constrained for temperature, no need to solve!']);534 message(['model not consistent: model ' md.name ' is totally constrained for temperature, no need to solve!']); 534 535 end 535 536 … … 570 571 % if ~md.prognostic_DG, 571 572 % if any(md.spcthickness(find(md.nodeonboundary))~=1), 572 % error(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcthickness']);573 % message(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcthickness']); 573 574 % end 574 575 % end … … 576 577 %Triangle with zero velocity 577 578 if any(sum(abs(md.vx(md.elements)),2)==0 & sum(abs(md.vy(md.elements)),2)==0) 578 error('model not consistent: at least one triangle has all its vertices with a zero velocity');579 message('model not consistent: at least one triangle has all its vertices with a zero velocity'); 579 580 end 580 581 %}}} … … 588 589 %SPC 589 590 if any(md.spcvelocity(find(md.nodeonboundary),[1:2])~=1), 590 error(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcvelocity']);591 message(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcvelocity']); 591 592 end 592 593 %}}} … … 597 598 otherwise 598 599 disp(['WARNING: no check implemented for analysis ' EnumToString(analysis_enum) '!']); 599 error('stop')600 message('stop') 600 601 end 601 602 … … 610 611 eval(['field=md.' fields{i} ';']); 611 612 if length(field)~=fieldlength, 612 error(['model not consistent: field ' fields{i} ' length should be ' num2str(fieldlength)]);613 message(['model not consistent: field ' fields{i} ' length should be ' num2str(fieldlength)]); 613 614 end 614 615 end … … 622 623 if isnan(fieldsize(1)), 623 624 if (size(field,2)~=fieldsize(2)), 624 error(['model not consistent: field ' fields{i} ' should have ' num2str(fieldsize(2)) ' columns']);625 message(['model not consistent: field ' fields{i} ' should have ' num2str(fieldsize(2)) ' columns']); 625 626 end 626 627 elseif isnan(fieldsize(2)), 627 628 if (size(field,1)~=fieldsize(1)), 628 error(['model not consistent: field ' fields{i} ' should have ' num2str(fieldsize(1)) ' rows']);629 message(['model not consistent: field ' fields{i} ' should have ' num2str(fieldsize(1)) ' rows']); 629 630 end 630 631 else … … 646 647 disp('!!! '); 647 648 end 648 error(['model not consistent: field ' fields{i} ' size should be ' num2str(fieldsize(1)) ' x ' num2str(fieldsize(2))]);649 message(['model not consistent: field ' fields{i} ' size should be ' num2str(fieldsize(1)) ' x ' num2str(fieldsize(2))]); 649 650 end 650 651 end … … 658 659 eval(['field=reshape(md.' fields{i} ',[prod(size(md.' fields{i} ')) 1]);']); 659 660 if any(isnan(field)), 660 error(['model not consistent: NaN values found in field ' fields{i}]);661 message(['model not consistent: NaN values found in field ' fields{i}]); 661 662 end 662 663 end … … 669 670 eval(['field=reshape(md.' fields{i} ',[prod(size(md.' fields{i} ')) 1]);']); 670 671 if any(~isreal(field)), 671 error(['model not consistent: complex values found in field ' fields{i}]);672 message(['model not consistent: complex values found in field ' fields{i}]); 672 673 end 673 674 end … … 680 681 eval(['field=reshape(md.' fields{i} ',[prod(size(md.' fields{i} ')) 1]);']); 681 682 if any(field<=lowerbound), 682 error(['model not consistent: field ' fields{i} ' should have values stricly above ' num2str(lowerbound)]);683 message(['model not consistent: field ' fields{i} ' should have values stricly above ' num2str(lowerbound)]); 683 684 end 684 685 end … … 691 692 eval(['field=reshape(md.' fields{i} ',[prod(size(md.' fields{i} ')) 1]);']); 692 693 if any(field<lowerbound), 693 error(['model not consistent: field ' fields{i} ' should have values above ' num2str(lowerbound)]);694 message(['model not consistent: field ' fields{i} ' should have values above ' num2str(lowerbound)]); 694 695 end 695 696 end … … 702 703 eval(['field=reshape(md.' fields{i} ',[prod(size(md.' fields{i} ')) 1]);']); 703 704 if any(field>=upperbound), 704 error(['model not consistent: field ' fields{i} ' should have values stricly below ' num2str(upperbound)]);705 message(['model not consistent: field ' fields{i} ' should have values stricly below ' num2str(upperbound)]); 705 706 end 706 707 end … … 713 714 eval(['field=reshape(md.' fields{i} ',[prod(size(md.' fields{i} ')) 1]);']); 714 715 if any(field>upperbound), 715 error(['model not consistent: field ' fields{i} ' should have values below ' num2str(upperbound)]);716 message(['model not consistent: field ' fields{i} ' should have values below ' num2str(upperbound)]); 716 717 end 717 718 end … … 724 725 eval(['field=reshape(md.' fields{i} ',[prod(size(md.' fields{i} ')) 1]);']); 725 726 if any(~ismember(field,values)), 726 error(['model not consistent: field ' fields{i} ' should have values in ' num2str(values)]); 727 end 728 end 729 end 730 %}}} 727 message(['model not consistent: field ' fields{i} ' should have values in ' num2str(values)]); 728 end 729 end 730 end 731 %}}} 732 733 %error messages 734 %modelconsistency{{{1 735 function flag=modelconsistency(flag_in) 736 737 persistent consistency; 738 739 if nargin==1 & nargout==0, 740 %OK model is inconsistent, set flag as false 741 consistency=false; 742 elseif nargin==0 & nargout==1, 743 if isempty(consistency), 744 %modelinconsistent has never been called, model is consistent 745 consistency=true; 746 end 747 else 748 message('Bad usage'); 749 end 750 751 flag=consistency; 752 end 753 %}}} 754 %message{{{1 755 function message(string) 756 757 disp(string); 758 modelconsistency(false); 759 end 760 %}}}
Note:
See TracChangeset
for help on using the changeset viewer.