Mentions légales du service

Skip to content
Snippets Groups Projects
Commit dda0f1c0 authored by Mathieu Faverge's avatar Mathieu Faverge
Browse files

Add the Fortran library

parent 680c167d
No related branches found
No related tags found
1 merge request!8Wrappers
......@@ -44,7 +44,7 @@ parser.add_argument('args', nargs='*', action='store', help='Files to process')
opts = parser.parse_args()
# exclude inline functions from the interface
exclude_list = [ "inline", "spmIntSort" ]
exclude_list = [ "inline", "spmIntSort", "spmIntMSort" ]
def polish_file(whole_file):
"""Preprocessing and cleaning of the header file.
......@@ -475,7 +475,7 @@ spm_enums = {
'description' : "SPM fortran 90 wrapper to define enums and datatypes",
'header' : " implicit none\n",
'footer' : enums_fortran_footer,
'enums' : {}
'enums' : { 'mtxtype' : " enumerator :: SpmSymPosDef = SpmConjTrans + 1\n enumerator :: HerPosDef = SpmConjTrans + 2\n" }
},
}
......
......@@ -27,7 +27,7 @@ return_variables_dict = {
}
# global list used to determine derived types
derived_types = [ 'pastix_int_t', 'pastix_data_t', 'pastix_order_t']
derived_types = [ 'spmatrix_t', 'spm_int_t', 'pastix_int_t', 'pastix_data_t', 'pastix_order_t']
# name arrays which will be translated to assumed-size arrays, e.g. pA(*)
arrays_names_2D = ["pA", "pB", "pC", "pAB", "pQ", "pX", "pAs"]
......
###
#
# @copyright 2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
# @version 6.0.0
# @author Mathieu Faverge
# @date 2017-05-22
#
###
cmake_minimum_required (VERSION 3.1)
# Coherce CMake to install the generated .mod files
set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/mod_files)
install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/ DESTINATION include)
add_library( spmf
src/spm_enums.F90
src/spmf.f90 )
if ( SPM_INT64 )
set_source_files_properties(
src/spm_enums.F90
PROPERTIES COMPILE_DEFINITIONS "SPM_INT_KIND=8")
else()
set_source_files_properties(
src/spm_enums.F90
PROPERTIES COMPILE_DEFINITIONS "SPM_INT_KIND=4")
endif()
target_link_libraries( spmf spm )
install(TARGETS spmf
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib )
#
# Add examples
#
#set (EXAMPLES
# fsimple.f90
# flaplacian.f90
# fstep-by-step.f90
# )
#
#foreach (_file ${EXAMPLES})
# get_filename_component(_name_we ${_file} NAME_WE)
# add_executable(${_name_we} examples/${_file})
# target_link_libraries(${_name_we} pastixf)
#
# install(TARGETS ${_name_we} RUNTIME DESTINATION examples )
# install(FILES examples/${_file} DESTINATION examples )
#
# add_test(fortran_${_name_we} ./${_name_we})
#
#endforeach()
!
! @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
This diff is collapsed.
......@@ -143,10 +143,6 @@ def pyspm_spmIntConvert( n, input ):
libspm.spmIntConvert.restype = POINTER(__spm_int__)
return libspm.spmIntConvert( n, input )
def pyspm_spmIntMSortIntAsc( pbase, n ):
libspm.spmIntMSortIntAsc.argtypes = [ c_void_p, __spm_int__ ]
libspm.spmIntMSortIntAsc( pointer( pbase ), n )
def pyspm_spmLoad( spm ):
libspm.spmLoad.argtypes = [ POINTER(pyspm_spmatrix_t), c_void_p ]
libspm.spmLoad.restype = c_int
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment