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

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

CHG: new sea level rise solution. Not valdated yet!

This solution requires one Sealevelrise analysis (so added the corresponding EnumToAnalysis and analysis.h files + SealevelriseAnalysis.* files).
In terms of solution core: we have a new sealevelrise_core.cpp files + corresponding hook up in CorePointerFromSolutionEnum.
This core calls the new FemModel Sealevelrise module, which loops through the elements, hence the mods to Element.* along with all
derivatives classes, in particular Tria.
In terms of ModelProcessorx, we have a modified CreateElementsVerticesAndMaterials to include lat,long and radius, which also translsates
into modifications for the Vertex object. The VertexCoordinatesx module is also modified, to be able to retrieve x,y,z but also lat,long,r
from vertices.
Of course, this is all driven from matlab, where we have a new field in the model, the slr class.

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()];
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.