source: issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp@ 2714

Last change on this file since 2714 was 2714, checked in by Mathieu Morlighem, 15 years ago

Added Balancedthickness solution

File size: 1.6 KB
Line 
1/*!\file: DistributeNumDofs.cpp
2 * \brief: figure out the maximum number of dofs per grid.
3 */
4
5#include "../../include/macros.h"
6#include "../../EnumDefinitions/EnumDefinitions.h"
7#include "../shared.h"
8
9#undef __FUNCT__
10#define __FUNCT__ "DistributeNumDofs"
11
12int DistributeNumDofs(int *pnumdofs,int analysis_type,int sub_analysis_type){
13
14 int numdofs=2; //default numdofs
15 int i;
16
17 /*ok, according to analysis type: */
18 if (analysis_type==ControlAnalysisEnum()){
19 if (sub_analysis_type==HorizAnalysisEnum()){
20 numdofs=2;
21 }
22 else if (sub_analysis_type==VertAnalysisEnum()){
23 numdofs=1;
24 }
25 else if (sub_analysis_type==StokesAnalysisEnum()){
26 numdofs=4;
27 }
28 else if (sub_analysis_type==HutterAnalysisEnum()){
29 numdofs=2;
30 }
31 }
32 else if (analysis_type==DiagnosticAnalysisEnum()){
33 if (sub_analysis_type==HorizAnalysisEnum()){
34 numdofs=2;
35 }
36 else if (sub_analysis_type==VertAnalysisEnum()){
37 numdofs=1;
38 }
39 else if (sub_analysis_type==StokesAnalysisEnum()){
40 numdofs=4;
41 }
42 else if (sub_analysis_type==HutterAnalysisEnum()){
43 numdofs=2;
44 }
45 }
46 else if (analysis_type==SlopeComputeAnalysisEnum()){
47 numdofs=1;
48 }
49 else if (analysis_type==ThermalAnalysisEnum()){
50 numdofs=1;
51 }
52 else if (analysis_type==MeltingAnalysisEnum()){
53 numdofs=1;
54 }
55 else if (analysis_type==PrognosticAnalysisEnum()){
56 numdofs=1;
57 }
58 else if (analysis_type==BalancedthicknessAnalysisEnum()){
59 numdofs=1;
60 }
61 else throw ErrorException(__FUNCT__,exprintf("%s%i%s"," analysis type: ",analysis_type," not implemented yet!"));
62
63 /*Assign output pointers:*/
64 *pnumdofs=numdofs;;
65
66 return 1;
67}
Note: See TracBrowser for help on using the repository browser.