Mentions légales du service

Skip to content
Snippets Groups Projects
spm_enums.F90 3.39 KiB

!
! @file spm_enums.F90
!
! SPM fortran 90 wrapper to define enums and datatypes
!
! @copyright 2017      Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
!                      Univ. Bordeaux. All rights reserved.
!
! @version 6.0.0
! @author Mathieu Faverge
! @date 2017-01-01
!
! This file has been automatically generated with gen_wrappers.py
!
module spm_enums
  use iso_c_binding
  implicit none

  ! enum verbose
  enum, bind(C)
     enumerator :: SpmVerboseNot = 0
     enumerator :: SpmVerboseNo  = 1
     enumerator :: SpmVerboseYes = 2
  end enum

  ! enum coeftype
  enum, bind(C)
     enumerator :: SpmPattern   = 0
     enumerator :: SpmFloat     = 2
     enumerator :: SpmDouble    = 3
     enumerator :: SpmComplex32 = 4
     enumerator :: SpmComplex64 = 5
  end enum

  ! enum fmttype
  enum, bind(C)
     enumerator :: SpmCSC = 0
     enumerator :: SpmCSR = 1
     enumerator :: SpmIJV = 2
  end enum

  ! enum error
  enum, bind(C)
     enumerator :: SPM_SUCCESS            = 0
     enumerator :: SPM_ERR_UNKNOWN        = 1
     enumerator :: SPM_ERR_ALLOC          = 2
     enumerator :: SPM_ERR_NOTIMPLEMENTED = 3
     enumerator :: SPM_ERR_OUTOFMEMORY    = 4
     enumerator :: SPM_ERR_THREAD         = 5
     enumerator :: SPM_ERR_INTERNAL       = 6
     enumerator :: SPM_ERR_BADPARAMETER   = 7
     enumerator :: SPM_ERR_FILE           = 8
     enumerator :: SPM_ERR_INTEGER_TYPE   = 9
     enumerator :: SPM_ERR_IO             = 10
     enumerator :: SPM_ERR_MPI            = 11
  end enum

  ! enum driver
  enum, bind(C)
     enumerator :: SpmDriverRSA        = 0
     enumerator :: SpmDriverHB         = 1
     enumerator :: SpmDriverIJV        = 2
     enumerator :: SpmDriverMM         = 3
     enumerator :: SpmDriverLaplacian  = 4
     enumerator :: SpmDriverXLaplacian = 5
     enumerator :: SpmDriverGraph      = 6
     enumerator :: SpmDriverSPM        = 7
  end enum
  ! enum rhstype
  enum, bind(C)
     enumerator :: SpmRhsOne  = 0
     enumerator :: SpmRhsI    = 1
     enumerator :: SpmRhsRndX = 2
     enumerator :: SpmRhsRndB = 3
  end enum

  ! enum layout
  enum, bind(C)
     enumerator :: SpmRowMajor = 101
     enumerator :: SpmColMajor = 102
  end enum

  ! enum trans
  enum, bind(C)
     enumerator :: SpmNoTrans   = 111
     enumerator :: SpmTrans     = 112
     enumerator :: SpmConjTrans = 113
  end enum

  ! enum mtxtype
  enum, bind(C)
     enumerator :: SpmGeneral   = SpmNoTrans
     enumerator :: SpmSymmetric = SpmTrans
     enumerator :: SpmHermitian = SpmConjTrans
  end enum

  ! enum uplo
  enum, bind(C)
     enumerator :: SpmUpper      = 121
     enumerator :: SpmLower      = 122
     enumerator :: SpmUpperLower = 123
  end enum

  ! enum diag
  enum, bind(C)
     enumerator :: SpmNonUnit = 131
     enumerator :: SpmUnit    = 132
  end enum

  ! enum side
  enum, bind(C)
     enumerator :: SpmLeft  = 141
     enumerator :: SpmRight = 142
  end enum

  ! enum normtype
  enum, bind(C)
     enumerator :: SpmOneNorm       = 171
     enumerator :: SpmFrobeniusNorm = 174
     enumerator :: SpmInfNorm       = 175
     enumerator :: SpmMaxNorm       = 177
  end enum

  ! enum dir
  enum, bind(C)
     enumerator :: SpmDirForward  = 391
     enumerator :: SpmDirBackward = 392
  end enum


  integer, parameter :: spm_int_t = SPM_INT_KIND

contains

  function spm_getintsize()
    integer :: spm_getintsize
    spm_getintsize = SPM_INT_KIND
    return
  end function spm_getintsize

end module spm_enums