source: issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.m@ 20381

Last change on this file since 20381 was 20381, checked in by Mathieu Morlighem, 9 years ago

BUG: replaced , by ;

File size: 3.1 KB
Line 
1function ismodelselfconsistent(md),
2%ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
3%
4% Usage:
5% ismodelselfconsistent(md),
6
7%initialize consistency as true
8md.private.isconsistent=true;
9
10%Get solution and associated analyses
11solution=md.private.solution;
12[analyses]=AnalysisConfiguration(solution);
13
14%Go through a model field, check that it is a class, and call checkconsistency
15fields=properties('model');
16for i=1:length(fields),
17 field=fields{i};
18
19 %Some properties do not need to be checked
20 if ismember(field,{'results' 'debug' 'radaroverlay'}),
21 continue;
22 end
23
24 %Check that current field is an object
25 if ~isobject(md.(field))
26 md=checkmessage(md,['field ''' char(field) ''' is not an object']);
27 continue;
28 end
29
30 %Check consistency of the object
31 md=checkconsistency(md.(field),md,solution,analyses);
32end
33
34%error message if mode is not consistent
35if md.private.isconsistent==false,
36 error('Model not consistent, see messages above');
37end
38end
39
40function [analyses]=AnalysisConfiguration(solutiontype), % {{{
41%ANALYSISCONFIGURATION - return type of analyses, number of analyses
42%
43% Usage:
44% [analyses]=AnalysisConfiguration(solutiontype);
45
46switch solutiontype,
47
48 case StressbalanceSolutionEnum(),
49 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();L2ProjectionBaseAnalysisEnum()];
50
51 case SteadystateSolutionEnum(),
52 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();L2ProjectionBaseAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum()];
53
54 case ThermalSolutionEnum(),
55 analyses=[EnthalpyAnalysisEnum;ThermalAnalysisEnum();MeltingAnalysisEnum()];
56
57 case MasstransportSolutionEnum(),
58 analyses=[MasstransportAnalysisEnum()];
59
60 case BalancethicknessSolutionEnum(),
61 analyses=[BalancethicknessAnalysisEnum()];
62
63 case Balancethickness2SolutionEnum(),
64 analyses=[Balancethickness2AnalysisEnum()];
65
66 case BalancethicknessSoftSolutionEnum(),
67 analyses=[BalancethicknessAnalysisEnum()];
68
69 case BalancevelocitySolutionEnum(),
70 analyses=[BalancevelocityAnalysisEnum()];
71
72 case SurfaceSlopeSolutionEnum(),
73 analyses=[L2ProjectionBaseAnalysisEnum()];
74
75 case BedSlopeSolutionEnum(),
76 analyses=[L2ProjectionBaseAnalysisEnum()];
77
78 case GiaSolutionEnum(),
79 analyses=[GiaAnalysisEnum()];
80
81 case TransientSolutionEnum(),
82 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();L2ProjectionBaseAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum();MasstransportAnalysisEnum();HydrologySommersAnalysisEnum];
83
84 case FlaimSolutionEnum(),
85 analyses=[FlaimAnalysisEnum()];
86
87 case SealevelriseSolutionEnum(),
88 analyses=[SealevelriseAnalysisEnum()];
89
90 case HydrologySolutionEnum(),
91 analyses=[L2ProjectionBaseAnalysisEnum();HydrologyShreveAnalysisEnum();HydrologyDCInefficientAnalysisEnum();HydrologyDCEfficientAnalysisEnum()];
92
93 case DamageEvolutionSolutionEnum(),
94 analyses=[DamageEvolutionAnalysisEnum()];
95
96 otherwise
97 error('%s%s%s',' solution type: ',EnumToString(solutiontype),' not supported yet!');
98
99 end
100end % }}}
Note: See TracBrowser for help on using the repository browser.