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

Last change on this file since 26047 was 26047, checked in by Eric.Larour, 4 years ago

CHG: huge commit on solid earth capability rewrite. Complete cleanup of the sea level core.
New mass transport capabilities for ocean and tws. No more giacore. GiaIvins folded into
the sea level core. Debugging of Materials.

File size: 3.7 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
46 if strcmp(solutiontype,'StressbalanceSolution')
47 analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis'};
48 elseif strcmp(solutiontype,'SteadystateSolution')
49 analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis'};
50 elseif strcmp(solutiontype,'ThermalSolution')
51 analyses={'EnthalpyAnalysis','ThermalAnalysis','MeltingAnalysis'};
52 elseif strcmp(solutiontype,'MasstransportSolution')
53 analyses={'MasstransportAnalysis'};
54 elseif strcmp(solutiontype,'OceantransportSolution')
55 analyses={'OceantransportAnalysis'};
56 elseif strcmp(solutiontype,'BalancethicknessSolution')
57 analyses={'BalancethicknessAnalysis'};
58 elseif strcmp(solutiontype,'Balancethickness2Solution')
59 analyses={'Balancethickness2Analysis'};
60 elseif strcmp(solutiontype,'BalancethicknessSoftSolution')
61 analyses={'BalancethicknessAnalysis'};
62 elseif strcmp(solutiontype,'BalancevelocitySolution')
63 analyses={'BalancevelocityAnalysis'};
64 elseif strcmp(solutiontype,'SurfaceSlopeSolution')
65 analyses={'L2ProjectionBaseAnalysis'};
66 elseif strcmp(solutiontype,'BedSlopeSolution')
67 analyses={'L2ProjectionBaseAnalysis'};
68 elseif strcmp(solutiontype,'GiaSolution')
69 analyses={'GiaIvinsAnalysis'};
70 elseif strcmp(solutiontype,'LoveSolution')
71 analyses={'LoveAnalysis'};
72 elseif strcmp(solutiontype,'EsaSolution')
73 analyses={'EsaAnalysis'};
74 elseif strcmp(solutiontype,'TransientSolution')
75 analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','OceantransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis','HydrologyShreveAnalysis','HydrologyTwsAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','SealevelchangeAnalysis'};
76 elseif strcmp(solutiontype,'SealevelchangeSolution')
77 analyses={'SealevelchangeAnalysis'};
78 elseif strcmp(solutiontype,'HydrologySolution')
79 analyses={'L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','HydrologyGladsAnalysis','HydrologyShaktiAnalysis','HydrologyTwsAnalysis'};
80 elseif strcmp(solutiontype,'DamageEvolutionSolution')
81 analyses={'DamageEvolutionAnalysis'};
82 elseif strcmp(solutiontype,'SamplingSolution')
83 analyses={'SamplingAnalysis'};
84 else
85 error(' solution type: %s' , solutiontype, ' not supported yet!');
86 end
87end % }}}
Note: See TracBrowser for help on using the repository browser.