~fluidity-core/fluidity/sea-ice-branch

« back to all changes in this revision

Viewing changes to femtools/Multigrid.F90

  • Committer: Simon Mouradian
  • Date: 2012-10-19 10:35:59 UTC
  • mfrom: (3520.32.371 fluidity)
  • Revision ID: simon.mouradian06@imperial.ac.uk-20121019103559-y36qa47phc69q8sc
mergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#include "petscversion.h"
13
13
#ifdef HAVE_PETSC_MODULES
14
14
  use petsc
15
 
#if PETSC_VERSION_MINOR==0
16
 
  use petscvec
17
 
  use petscmat
18
 
  use petscksp
19
 
  use petscpc
20
 
  use petscis
21
 
  use petscmg
22
 
#endif
23
15
#endif
24
16
implicit none
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"
32
19
#else
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"
41
 
#endif
42
 
#endif
43
 
#if PETSC_VERSION_MINOR==2
 
21
#endif
 
22
#if PETSC_VERSION_MINOR>=2
44
23
#define KSP_NORM_NO KSP_NORM_NONE
45
24
#endif
 
25
#if PETSC_VERSION_MINOR>=3
 
26
#define MatCreateSeqAIJ myMatCreateSeqAIJ
 
27
#define MatCreateMPIAIJ myMatCreateMPIAIJ
 
28
#define MatCreateSeqBAIJ myMatCreateSeqBAIJ
 
29
#define MatCreateMPIBAIJ myMatCreateMPIBAIJ
 
30
#endif
46
31
 
47
32
!! Some parameters that change the behaviour of 
48
33
!! the smoothed aggregation method. All of
687
672
  PC:: pc
688
673
  PetscErrorCode:: ierr
689
674
  
 
675
#if PETSC_VERSION_MINOR>=3
 
676
  call KSPSetType(ksp, KSPCHEBYSHEV, ierr)
 
677
#else
690
678
  call KSPSetType(ksp, KSPCHEBYCHEV, ierr)
 
679
#endif
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)
695
 
#ifdef DOUBLEP
696
 
  call KSPChebychevSetEigenvalues(ksp, emax, emin, ierr)
 
684
#if PETSC_VERSION_MINOR>=3
 
685
  call KSPChebyshevSetEigenvalues(ksp, emax, emin, ierr)
697
686
#else
698
687
  call KSPChebychevSetEigenvalues(ksp, emax, emin, ierr)
699
688
#endif
710
699
integer, intent(out):: maxlevels, coarsesize
711
700
integer, intent(out):: nosmd, nosmu, clustersize
712
701
 
713
 
#if PETSC_VERSION_MINOR==2
 
702
#if PETSC_VERSION_MINOR>=2
714
703
  PetscBool flag
715
704
#else
716
705
  PetscTruth flag
811
800
  
812
801
  !
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)
816
805
#else
817
806
  call VecSqrt(sqrt_diag, ierr)