[465] | 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 | int DistributeNumDofs(int *pnumdofs,int analysis_type,int sub_analysis_type){
|
---|
| 10 |
|
---|
| 11 | int numdofs=2; //default numdofs
|
---|
| 12 | int i;
|
---|
| 13 |
|
---|
| 14 | /*ok, according to analysis type: */
|
---|
[3567] | 15 | if (analysis_type==ControlAnalysisEnum){
|
---|
| 16 | if (sub_analysis_type==HorizAnalysisEnum){
|
---|
[1120] | 17 | numdofs=2;
|
---|
| 18 | }
|
---|
[3567] | 19 | else if (sub_analysis_type==VertAnalysisEnum){
|
---|
[1120] | 20 | numdofs=1;
|
---|
| 21 | }
|
---|
[3567] | 22 | else if (sub_analysis_type==StokesAnalysisEnum){
|
---|
[1120] | 23 | numdofs=4;
|
---|
| 24 | }
|
---|
[3567] | 25 | else if (sub_analysis_type==HutterAnalysisEnum){
|
---|
[1120] | 26 | numdofs=2;
|
---|
| 27 | }
|
---|
[465] | 28 | }
|
---|
[3567] | 29 | else if (analysis_type==DiagnosticAnalysisEnum){
|
---|
| 30 | if (sub_analysis_type==HorizAnalysisEnum){
|
---|
[465] | 31 | numdofs=2;
|
---|
| 32 | }
|
---|
[3567] | 33 | else if (sub_analysis_type==VertAnalysisEnum){
|
---|
[465] | 34 | numdofs=1;
|
---|
| 35 | }
|
---|
[3567] | 36 | else if (sub_analysis_type==StokesAnalysisEnum){
|
---|
[465] | 37 | numdofs=4;
|
---|
| 38 | }
|
---|
[3567] | 39 | else if (sub_analysis_type==HutterAnalysisEnum){
|
---|
[465] | 40 | numdofs=2;
|
---|
| 41 | }
|
---|
| 42 | }
|
---|
[3567] | 43 | else if (analysis_type==SlopecomputeAnalysisEnum){
|
---|
[465] | 44 | numdofs=1;
|
---|
| 45 | }
|
---|
[3567] | 46 | else if (analysis_type==ThermalAnalysisEnum){
|
---|
[465] | 47 | numdofs=1;
|
---|
| 48 | }
|
---|
[3567] | 49 | else if (analysis_type==MeltingAnalysisEnum){
|
---|
[496] | 50 | numdofs=1;
|
---|
| 51 | }
|
---|
[3567] | 52 | else if (analysis_type==PrognosticAnalysisEnum){
|
---|
[586] | 53 | numdofs=1;
|
---|
| 54 | }
|
---|
[3567] | 55 | else if (analysis_type==Prognostic2AnalysisEnum){
|
---|
[3354] | 56 | numdofs=1;
|
---|
| 57 | }
|
---|
[3567] | 58 | else if (analysis_type==BalancedthicknessAnalysisEnum){
|
---|
[2714] | 59 | numdofs=1;
|
---|
| 60 | }
|
---|
[3588] | 61 | else if (analysis_type==Balancedthickness2AnalysisEnum){
|
---|
| 62 | numdofs=1;
|
---|
| 63 | }
|
---|
[3567] | 64 | else if (analysis_type==BalancedvelocitiesAnalysisEnum){
|
---|
[2722] | 65 | numdofs=1;
|
---|
| 66 | }
|
---|
[3570] | 67 | else ISSMERROR("%s%i%s"," analysis type: ",analysis_type," not implemented yet!");
|
---|
[465] | 68 |
|
---|
| 69 | /*Assign output pointers:*/
|
---|
| 70 | *pnumdofs=numdofs;;
|
---|
| 71 |
|
---|
| 72 | return 1;
|
---|
| 73 | }
|
---|