Ice Sheet System Model  4.18
Code documentation
Functions
PetscOptionsDetermineSolverType.cpp File Reference
#include "petscmat.h"
#include "petscvec.h"
#include "petscksp.h"
#include "./petscpatches.h"
#include "../../../shared/shared.h"

Go to the source code of this file.

Functions

void PetscOptionsDetermineSolverType (int *psolver_type)
 

Detailed Description

: from the petsc options, determine what kind of solver we are using.

Definition in file PetscOptionsDetermineSolverType.cpp.

Function Documentation

◆ PetscOptionsDetermineSolverType()

void PetscOptionsDetermineSolverType ( int *  psolver_type)

Definition at line 20 of file PetscOptionsDetermineSolverType.cpp.

20  {
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
SUPERLUDISTPACKAGE
@ SUPERLUDISTPACKAGE
Definition: SolverEnum.h:14
SPOOLESPACKAGE_LU
@ SPOOLESPACKAGE_LU
Definition: SolverEnum.h:12
FSSolverEnum
@ FSSolverEnum
Definition: EnumDefinitions.h:1061
MUMPSPACKAGE_CHOL
@ MUMPSPACKAGE_CHOL
Definition: SolverEnum.h:11
PETSCPACKAGE
@ PETSCPACKAGE
Definition: SolverEnum.h:9
MUMPSPACKAGE_LU
@ MUMPSPACKAGE_LU
Definition: SolverEnum.h:10