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 |
|
---|
20 | void 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=7;
|
---|
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]=ThermalAnalysisEnum;
|
---|
48 | analyses[6]=MeltingAnalysisEnum;
|
---|
49 | break;
|
---|
50 |
|
---|
51 | case ThermalSolutionEnum:
|
---|
52 | numanalyses=2;
|
---|
53 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
54 | analyses[0]=ThermalAnalysisEnum;
|
---|
55 | analyses[1]=MeltingAnalysisEnum;
|
---|
56 | break;
|
---|
57 |
|
---|
58 | case EnthalpySolutionEnum:
|
---|
59 | numanalyses=1;
|
---|
60 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
61 | analyses[0]=EnthalpyAnalysisEnum;
|
---|
62 | break;
|
---|
63 |
|
---|
64 | case HydrologySolutionEnum:
|
---|
65 | numanalyses=3;
|
---|
66 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
67 | analyses[0]=HydrologyAnalysisEnum;
|
---|
68 | analyses[1]=SurfaceSlopeAnalysisEnum;
|
---|
69 | analyses[2]=BedSlopeAnalysisEnum;
|
---|
70 | break;
|
---|
71 |
|
---|
72 | case PrognosticSolutionEnum:
|
---|
73 | numanalyses=1;
|
---|
74 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
75 | analyses[0]=PrognosticAnalysisEnum;
|
---|
76 | break;
|
---|
77 |
|
---|
78 | case BalancethicknessSolutionEnum:
|
---|
79 | numanalyses=1;
|
---|
80 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
81 | analyses[0]=BalancethicknessAnalysisEnum;
|
---|
82 | break;
|
---|
83 |
|
---|
84 | case SurfaceSlopeSolutionEnum:
|
---|
85 | numanalyses=1;
|
---|
86 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
87 | analyses[0]=SurfaceSlopeAnalysisEnum;
|
---|
88 | break;
|
---|
89 |
|
---|
90 | case BedSlopeSolutionEnum:
|
---|
91 | numanalyses=1;
|
---|
92 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
93 | analyses[0]=BedSlopeAnalysisEnum;
|
---|
94 | break;
|
---|
95 |
|
---|
96 | case TransientSolutionEnum:
|
---|
97 | numanalyses=9;
|
---|
98 | analyses=(int*)xmalloc(numanalyses*sizeof(int));
|
---|
99 | analyses[0]=DiagnosticHorizAnalysisEnum;
|
---|
100 | analyses[1]=DiagnosticVertAnalysisEnum;
|
---|
101 | analyses[2]=DiagnosticHutterAnalysisEnum;
|
---|
102 | analyses[3]=SurfaceSlopeAnalysisEnum;
|
---|
103 | analyses[4]=BedSlopeAnalysisEnum;
|
---|
104 | analyses[5]=ThermalAnalysisEnum;
|
---|
105 | analyses[6]=MeltingAnalysisEnum;
|
---|
106 | analyses[7]=EnthalpyAnalysisEnum;
|
---|
107 | analyses[8]=PrognosticAnalysisEnum;
|
---|
108 | break;
|
---|
109 |
|
---|
110 | default:
|
---|
111 | _error_("%s%s%s"," solution type: ",EnumToStringx(solutiontype)," not supported yet!");
|
---|
112 | break;
|
---|
113 | }
|
---|
114 |
|
---|
115 | /*Assign output pointers:*/
|
---|
116 | if(pnumanalyses) *pnumanalyses=numanalyses;
|
---|
117 | if(panalyses) *panalyses=analyses;
|
---|
118 | else xfree((void**)&analyses);
|
---|
119 | }
|
---|