12
12
#include "petscversion.h"
13
13
#ifdef HAVE_PETSC_MODULES
15
#if PETSC_VERSION_MINOR==0
25
17
#ifdef HAVE_PETSC_MODULES
26
#include "finclude/petscvecdef.h"
27
#include "finclude/petscmatdef.h"
28
#include "finclude/petsckspdef.h"
29
#include "finclude/petscpcdef.h"
30
#include "finclude/petscviewerdef.h"
31
#include "finclude/petscsysdef.h"
18
#include "finclude/petscdef.h"
33
20
#include "finclude/petsc.h"
34
#if PETSC_VERSION_MINOR==0
35
#include "finclude/petscmat.h"
36
#include "finclude/petscvec.h"
37
#include "finclude/petscviewer.h"
38
#include "finclude/petscksp.h"
39
#include "finclude/petscpc.h"
40
#include "finclude/petscsys.h"
43
#if PETSC_VERSION_MINOR==2
22
#if PETSC_VERSION_MINOR>=2
44
23
#define KSP_NORM_NO KSP_NORM_NONE
25
#if PETSC_VERSION_MINOR>=3
26
#define MatCreateSeqAIJ myMatCreateSeqAIJ
27
#define MatCreateMPIAIJ myMatCreateMPIAIJ
28
#define MatCreateSeqBAIJ myMatCreateSeqBAIJ
29
#define MatCreateMPIBAIJ myMatCreateMPIBAIJ
47
32
!! Some parameters that change the behaviour of
48
33
!! the smoothed aggregation method. All of
688
673
PetscErrorCode:: ierr
675
#if PETSC_VERSION_MINOR>=3
676
call KSPSetType(ksp, KSPCHEBYSHEV, ierr)
690
678
call KSPSetType(ksp, KSPCHEBYCHEV, ierr)
691
680
call KSPSetOperators(ksp, matrix, matrix, SAME_PRECONDITIONER, ierr)
692
681
call KSPSetTolerances(ksp, PETSC_DEFAULT_DOUBLE_PRECISION, &
693
682
PETSC_DEFAULT_DOUBLE_PRECISION, PETSC_DEFAULT_DOUBLE_PRECISION, &
694
683
iterations, ierr)
696
call KSPChebychevSetEigenvalues(ksp, emax, emin, ierr)
684
#if PETSC_VERSION_MINOR>=3
685
call KSPChebyshevSetEigenvalues(ksp, emax, emin, ierr)
698
687
call KSPChebychevSetEigenvalues(ksp, emax, emin, ierr)
710
699
integer, intent(out):: maxlevels, coarsesize
711
700
integer, intent(out):: nosmd, nosmu, clustersize
713
#if PETSC_VERSION_MINOR==2
702
#if PETSC_VERSION_MINOR>=2
813
802
call VecCopy(diag, sqrt_diag, ierr)
814
#if PETSC_VERSION_MINOR==2
803
#if PETSC_VERSION_MINOR>=3
815
804
call VecSqrtAbs(sqrt_diag, ierr)
817
806
call VecSqrt(sqrt_diag, ierr)