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

Last change on this file since 16008 was 16008, checked in by Mathieu Morlighem, 12 years ago

NEW: added balancevelocity solver (not finished yet)

File size: 3.2 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,numanalyses]=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 end
28
29 %Check consistency of the object
30 md=checkconsistency(md.(field),md,solution,analyses);
31end
32
33%error message if mode is not consistent
34if md.private.isconsistent==false,
35 error('Model not consistent, see messages above');
36end
37end
38
39function [analyses,numanalyses]=AnalysisConfiguration(solutiontype), % {{{
40%ANALYSISCONFIGURATION - return type of analyses, number of analyses
41%
42% Usage:
43% [analyses, numanalyses]=AnalysisConfiguration(solutiontype);
44
45switch solutiontype,
46
47 case StressbalanceSolutionEnum(),
48 numanalyses=5;
49 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum()];
50
51 case SteadystateSolutionEnum(),
52 numanalyses=7;
53 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum()];
54
55 case ThermalSolutionEnum(),
56 numanalyses=2;
57 analyses=[ThermalAnalysisEnum();MeltingAnalysisEnum()];
58
59 case EnthalpySolutionEnum(),
60 numanalyses=1;
61 analyses=[EnthalpyAnalysisEnum()];
62
63 case MasstransportSolutionEnum(),
64 numanalyses=1;
65 analyses=[MasstransportAnalysisEnum()];
66
67 case BalancethicknessSolutionEnum(),
68 numanalyses=1;
69 analyses=[BalancethicknessAnalysisEnum()];
70
71 case BalancethicknessSoftSolutionEnum(),
72 numanalyses=1;
73 analyses=[BalancethicknessAnalysisEnum()];
74
75 case BalancevelocitySolutionEnum(),
76 numanalyses=1;
77 analyses=[BalancevelocityAnalysisEnum()];
78
79 case SurfaceSlopeSolutionEnum(),
80 numanalyses=1;
81 analyses=[SurfaceSlopeAnalysisEnum()];
82
83 case BedSlopeSolutionEnum(),
84 numanalyses=1;
85 analyses=[BedSlopeAnalysisEnum()];
86
87 case GiaSolutionEnum(),
88 numanalyses=1;
89 analyses=[GiaAnalysisEnum()];
90
91 case TransientSolutionEnum(),
92 numanalyses=9;
93 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum();MasstransportAnalysisEnum()];
94
95 case FlaimSolutionEnum(),
96 numanalyses=1;
97 analyses=[FlaimAnalysisEnum()];
98
99 case HydrologySolutionEnum(),
100 numanalyses=3;
101 analyses=[BedSlopeAnalysisEnum();SurfaceSlopeAnalysisEnum();HydrologyShreveAnalysisEnum();HydrologyDCInefficientAnalysisEnum();HydrologyDCEfficientAnalysisEnum()];
102
103 otherwise
104 error('%s%s%s',' solution type: ',EnumToString(solutiontype),' not supported yet!');
105
106 end
107end % }}}
Note: See TracBrowser for help on using the repository browser.