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

Last change on this file since 11427 was 11354, checked in by seroussi, 13 years ago

fixed nr temporarily but not very good way of handeling things

File size: 3.2 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=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}
Note: See TracBrowser for help on using the repository browser.