Ice Sheet System Model  4.18
Code documentation
PetscOptionsDetermineSolverType.cpp
Go to the documentation of this file.
1 
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 /*Petsc includes: */
12 #include "petscmat.h"
13 #include "petscvec.h"
14 #include "petscksp.h"
15 
16 #include "./petscpatches.h"
17 
18 #include "../../../shared/shared.h"
19 
20 void PetscOptionsDetermineSolverType(int* psolver_type){
21 
22  char option[100];
23  #if _PETSC_MAJOR_ < 3 || (_PETSC_MAJOR_ == 3 && _PETSC_MINOR_ < 2)
24  PetscTruth flag;
25  #else
26  PetscBool flag;
27  #endif
28 
29  /*output: */
30  int solver_type=PETSCPACKAGE;
31 
32  /*retrieve mat_type option: */
33  #if (_PETSC_MAJOR_==3) && (_PETSC_MINOR_>=7)
34  PetscOptionsGetString(NULL,PETSC_NULL,"-mat_type",&option[0],100,&flag);
35  #else
36  PetscOptionsGetString(PETSC_NULL,"-mat_type",&option[0],100,&flag);
37  #endif
38 
39  if (strcmp(option,"aijmumps")==0){
40  solver_type=MUMPSPACKAGE_LU;
41  }
42  if (strcmp(option,"sbaijmumps")==0){
43  solver_type=MUMPSPACKAGE_CHOL;
44  }
45  if (strcmp(option,"aijspooles")==0){
46  solver_type=SPOOLESPACKAGE_LU;
47  }
48  if (strcmp(option,"sbaijspooles")==0){
49  solver_type=SPOOLESPACKAGE_CHOL;
50  }
51  if (strcmp(option,"superlu_dist")==0){
52  solver_type=SUPERLUDISTPACKAGE;
53  }
54  if (strcmp(option,"")==0){
55  solver_type=SUPERLUDISTPACKAGE;
56  }
57 
58  #if _PETSC_MAJOR_ >= 3
59  #if (_PETSC_MINOR_>=7)
60  PetscOptionsGetString(NULL,PETSC_NULL,"-pc_factor_mat_solver_package",&option[0],100,&flag);
61  #else
62  PetscOptionsGetString(PETSC_NULL,"-pc_factor_mat_solver_package",&option[0],100,&flag);
63  #endif
64  if (strcmp(option,"mumps")==0){
65  solver_type=MUMPSPACKAGE_LU;
66  }
67  #endif
68 
69  #if (_PETSC_MAJOR_==3) && (_PETSC_MINOR_>=7)
70  PetscOptionsGetString(NULL,PETSC_NULL,"-issm_option_solver",&option[0],100,&flag);
71  #else
72  PetscOptionsGetString(PETSC_NULL,"-issm_option_solver",&option[0],100,&flag);
73  #endif
74  if(strcmp(option,"FS")==0 || strcmp(option,"stokes")==0){
75  solver_type=FSSolverEnum;
76  }
77 
78  *psolver_type=solver_type;
79 }
SPOOLESPACKAGE_CHOL
@ SPOOLESPACKAGE_CHOL
Definition: SolverEnum.h:13
PetscOptionsDetermineSolverType
void PetscOptionsDetermineSolverType(int *psolver_type)
Definition: PetscOptionsDetermineSolverType.cpp:20
SUPERLUDISTPACKAGE
@ SUPERLUDISTPACKAGE
Definition: SolverEnum.h:14
SPOOLESPACKAGE_LU
@ SPOOLESPACKAGE_LU
Definition: SolverEnum.h:12
FSSolverEnum
@ FSSolverEnum
Definition: EnumDefinitions.h:1061
petscpatches.h
MUMPSPACKAGE_CHOL
@ MUMPSPACKAGE_CHOL
Definition: SolverEnum.h:11
PETSCPACKAGE
@ PETSCPACKAGE
Definition: SolverEnum.h:9
MUMPSPACKAGE_LU
@ MUMPSPACKAGE_LU
Definition: SolverEnum.h:10