source: issm/branches/trunk-jpl-damage/src/c/solutions/AnalysisConfiguration.cpp@ 11684

Last change on this file since 11684 was 11684, checked in by cborstad, 13 years ago

merged revisions 11428:11680 from trunk-jpl into branches/trunk-jpl-damage

File size: 3.3 KB
Line 
1/*!\file: AnalysisConfiguration.cpp
2 * \brief: return type of analyses, number of analyses
3 */
4
5#ifdef HAVE_CONFIG_H
6 #include <config.h>
7#else
8#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
9#endif
10
11#include "../toolkits/toolkits.h"
12#include "../objects/objects.h"
13#include "../shared/shared.h"
14#include "../EnumDefinitions/EnumDefinitions.h"
15#include "./solutions.h"
16#include "../modules/modules.h"
17#include "../include/include.h"
18#include "../solvers/solvers.h"
19
20void AnalysisConfiguration(int** panalyses,int* pnumanalyses, int solutiontype){
21
22 /*output: */
23 int numanalyses;
24 int* analyses=NULL;
25
26 /*Analyses lists*/
27 switch(solutiontype){
28
29 case DiagnosticSolutionEnum:
30 numanalyses=5;
31 analyses=(int*)xmalloc(numanalyses*sizeof(int));
32 analyses[0]=DiagnosticHorizAnalysisEnum;
33 analyses[1]=DiagnosticVertAnalysisEnum;
34 analyses[2]=DiagnosticHutterAnalysisEnum;
35 analyses[3]=SurfaceSlopeAnalysisEnum;
36 analyses[4]=BedSlopeAnalysisEnum;
37 break;
38
39 case SteadystateSolutionEnum:
40 numanalyses=8;
41 analyses=(int*)xmalloc(numanalyses*sizeof(int));
42 analyses[0]=DiagnosticHorizAnalysisEnum;
43 analyses[1]=DiagnosticVertAnalysisEnum;
44 analyses[2]=DiagnosticHutterAnalysisEnum;
45 analyses[3]=SurfaceSlopeAnalysisEnum;
46 analyses[4]=BedSlopeAnalysisEnum;
47 analyses[5]=EnthalpyAnalysisEnum;
48 analyses[6]=ThermalAnalysisEnum;
49 analyses[7]=MeltingAnalysisEnum;
50 break;
51
52 case ThermalSolutionEnum:
53 numanalyses=2;
54 analyses=(int*)xmalloc(numanalyses*sizeof(int));
55 analyses[0]=ThermalAnalysisEnum;
56 analyses[1]=MeltingAnalysisEnum;
57 break;
58
59 case EnthalpySolutionEnum:
60 numanalyses=1;
61 analyses=(int*)xmalloc(numanalyses*sizeof(int));
62 analyses[0]=EnthalpyAnalysisEnum;
63 break;
64
65 case HydrologySolutionEnum:
66 numanalyses=3;
67 analyses=(int*)xmalloc(numanalyses*sizeof(int));
68 analyses[0]=HydrologyAnalysisEnum;
69 analyses[1]=SurfaceSlopeAnalysisEnum;
70 analyses[2]=BedSlopeAnalysisEnum;
71 break;
72
73 case PrognosticSolutionEnum:
74 numanalyses=1;
75 analyses=(int*)xmalloc(numanalyses*sizeof(int));
76 analyses[0]=PrognosticAnalysisEnum;
77 break;
78
79 case BalancethicknessSolutionEnum:
80 numanalyses=1;
81 analyses=(int*)xmalloc(numanalyses*sizeof(int));
82 analyses[0]=BalancethicknessAnalysisEnum;
83 break;
84
85 case SurfaceSlopeSolutionEnum:
86 numanalyses=1;
87 analyses=(int*)xmalloc(numanalyses*sizeof(int));
88 analyses[0]=SurfaceSlopeAnalysisEnum;
89 break;
90
91 case BedSlopeSolutionEnum:
92 numanalyses=1;
93 analyses=(int*)xmalloc(numanalyses*sizeof(int));
94 analyses[0]=BedSlopeAnalysisEnum;
95 break;
96
97 case TransientSolutionEnum:
98 numanalyses=9;
99 analyses=(int*)xmalloc(numanalyses*sizeof(int));
100 analyses[0]=DiagnosticHorizAnalysisEnum;
101 analyses[1]=DiagnosticVertAnalysisEnum;
102 analyses[2]=DiagnosticHutterAnalysisEnum;
103 analyses[3]=SurfaceSlopeAnalysisEnum;
104 analyses[4]=BedSlopeAnalysisEnum;
105 analyses[5]=ThermalAnalysisEnum;
106 analyses[6]=MeltingAnalysisEnum;
107 analyses[7]=EnthalpyAnalysisEnum;
108 analyses[8]=PrognosticAnalysisEnum;
109 break;
110
111 default:
112 _error_("%s%s%s"," solution type: ",EnumToStringx(solutiontype)," not supported yet!");
113 break;
114 }
115
116 /*Assign output pointers:*/
117 if(pnumanalyses) *pnumanalyses=numanalyses;
118 if(panalyses) *panalyses=analyses;
119 else xfree((void**)&analyses);
120}
Note: See TracBrowser for help on using the repository browser.