mkl_pardiso.fi 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. !===============================================================================
  2. ! Copyright 2004-2022 Intel Corporation.
  3. !
  4. ! This software and the related documents are Intel copyrighted materials, and
  5. ! your use of them is governed by the express license under which they were
  6. ! provided to you (License). Unless the License provides otherwise, you may not
  7. ! use, modify, copy, publish, distribute, disclose or transmit this software or
  8. ! the related documents without Intel's prior written permission.
  9. !
  10. ! This software and the related documents are provided as is, with no express
  11. ! or implied warranties, other than those that are expressly stated in the
  12. ! License.
  13. !===============================================================================
  14. ! Content:
  15. ! Intel(R) oneAPI Math Kernel Library (oneMKL) PARDISO Fortran header file.
  16. !
  17. ! Contains PARDISO routine definition
  18. !
  19. !*******************************************************************************
  20. TYPE MKL_PARDISO_HANDLE; INTEGER(KIND=8) DUMMY; END TYPE
  21. !
  22. ! Subroutine prototype for PARDISO
  23. !
  24. INTERFACE PARDISO
  25. SUBROUTINE PARDISO_S( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, &
  26. & JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  27. IMPORT MKL_PARDISO_HANDLE
  28. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  29. INTEGER, INTENT(IN) :: MAXFCT
  30. INTEGER, INTENT(IN) :: MNUM
  31. INTEGER, INTENT(IN) :: MTYPE
  32. INTEGER, INTENT(IN) :: PHASE
  33. INTEGER, INTENT(IN) :: N
  34. INTEGER, INTENT(IN) :: IA(*)
  35. INTEGER, INTENT(IN) :: JA(*)
  36. INTEGER, INTENT(INOUT) :: PERM(*)
  37. INTEGER, INTENT(IN) :: NRHS
  38. INTEGER, INTENT(INOUT) :: IPARM(*)
  39. INTEGER, INTENT(IN) :: MSGLVL
  40. INTEGER, INTENT(OUT) :: ERROR
  41. REAL(KIND=4), INTENT(IN) :: A(*)
  42. REAL(KIND=4), INTENT(INOUT) :: B(*)
  43. REAL(KIND=4), INTENT(OUT) :: X(*)
  44. END SUBROUTINE PARDISO_S
  45. SUBROUTINE PARDISO_D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, &
  46. & JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  47. IMPORT MKL_PARDISO_HANDLE
  48. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  49. INTEGER, INTENT(IN) :: MAXFCT
  50. INTEGER, INTENT(IN) :: MNUM
  51. INTEGER, INTENT(IN) :: MTYPE
  52. INTEGER, INTENT(IN) :: PHASE
  53. INTEGER, INTENT(IN) :: N
  54. INTEGER, INTENT(IN) :: IA(*)
  55. INTEGER, INTENT(IN) :: JA(*)
  56. INTEGER, INTENT(INOUT) :: PERM(*)
  57. INTEGER, INTENT(IN) :: NRHS
  58. INTEGER, INTENT(INOUT) :: IPARM(*)
  59. INTEGER, INTENT(IN) :: MSGLVL
  60. INTEGER, INTENT(OUT) :: ERROR
  61. REAL(KIND=8), INTENT(IN) :: A(*)
  62. REAL(KIND=8), INTENT(INOUT) :: B(*)
  63. REAL(KIND=8), INTENT(OUT) :: X(*)
  64. END SUBROUTINE PARDISO_D
  65. SUBROUTINE PARDISO_SC( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA,&
  66. & JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  67. IMPORT MKL_PARDISO_HANDLE
  68. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  69. INTEGER, INTENT(IN) :: MAXFCT
  70. INTEGER, INTENT(IN) :: MNUM
  71. INTEGER, INTENT(IN) :: MTYPE
  72. INTEGER, INTENT(IN) :: PHASE
  73. INTEGER, INTENT(IN) :: N
  74. INTEGER, INTENT(IN) :: IA(*)
  75. INTEGER, INTENT(IN) :: JA(*)
  76. INTEGER, INTENT(INOUT) :: PERM(*)
  77. INTEGER, INTENT(IN) :: NRHS
  78. INTEGER, INTENT(INOUT) :: IPARM(*)
  79. INTEGER, INTENT(IN) :: MSGLVL
  80. INTEGER, INTENT(OUT) :: ERROR
  81. COMPLEX(KIND=4), INTENT(IN) :: A(*)
  82. COMPLEX(KIND=4), INTENT(INOUT) :: B(*)
  83. COMPLEX(KIND=4), INTENT(OUT) :: X(*)
  84. END SUBROUTINE PARDISO_SC
  85. SUBROUTINE PARDISO_DC( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA,&
  86. & JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  87. IMPORT MKL_PARDISO_HANDLE
  88. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  89. INTEGER, INTENT(IN) :: MAXFCT
  90. INTEGER, INTENT(IN) :: MNUM
  91. INTEGER, INTENT(IN) :: MTYPE
  92. INTEGER, INTENT(IN) :: PHASE
  93. INTEGER, INTENT(IN) :: N
  94. INTEGER, INTENT(IN) :: IA(*)
  95. INTEGER, INTENT(IN) :: JA(*)
  96. INTEGER, INTENT(INOUT) :: PERM(*)
  97. INTEGER, INTENT(IN) :: NRHS
  98. INTEGER, INTENT(INOUT) :: IPARM(*)
  99. INTEGER, INTENT(IN) :: MSGLVL
  100. INTEGER, INTENT(OUT) :: ERROR
  101. COMPLEX(KIND=8), INTENT(IN) :: A(*)
  102. COMPLEX(KIND=8), INTENT(INOUT) :: B(*)
  103. COMPLEX(KIND=8), INTENT(OUT) :: X(*)
  104. END SUBROUTINE PARDISO_DC
  105. END INTERFACE
  106. INTERFACE
  107. SUBROUTINE PARDISO_HANDLE_STORE( PT, STORE_NAME, ERROR )
  108. IMPORT MKL_PARDISO_HANDLE
  109. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  110. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  111. INTEGER, INTENT(OUT) :: ERROR
  112. END SUBROUTINE PARDISO_HANDLE_STORE
  113. END INTERFACE
  114. INTERFACE
  115. SUBROUTINE PARDISO_HANDLE_STORE_64( PT, STORE_NAME, ERROR )
  116. IMPORT MKL_PARDISO_HANDLE
  117. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  118. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  119. INTEGER, INTENT(OUT) :: ERROR
  120. END SUBROUTINE PARDISO_HANDLE_STORE_64
  121. END INTERFACE
  122. INTERFACE
  123. SUBROUTINE PARDISO_HANDLE_RESTORE( PT, STORE_NAME, ERROR )
  124. IMPORT MKL_PARDISO_HANDLE
  125. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  126. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  127. INTEGER, INTENT(OUT) :: ERROR
  128. END SUBROUTINE PARDISO_HANDLE_RESTORE
  129. END INTERFACE
  130. INTERFACE
  131. SUBROUTINE PARDISO_HANDLE_RESTORE_64( PT, STORE_NAME, ERROR )
  132. IMPORT MKL_PARDISO_HANDLE
  133. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  134. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  135. INTEGER, INTENT(OUT) :: ERROR
  136. END SUBROUTINE PARDISO_HANDLE_RESTORE_64
  137. END INTERFACE
  138. INTERFACE
  139. SUBROUTINE PARDISO_HANDLE_DELETE( STORE_NAME, ERROR )
  140. IMPORT MKL_PARDISO_HANDLE
  141. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  142. INTEGER, INTENT(OUT) :: ERROR
  143. END SUBROUTINE PARDISO_HANDLE_DELETE
  144. END INTERFACE
  145. INTERFACE
  146. SUBROUTINE PARDISO_HANDLE_DELETE_64( STORE_NAME, ERROR )
  147. IMPORT MKL_PARDISO_HANDLE
  148. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  149. INTEGER, INTENT(OUT) :: ERROR
  150. END SUBROUTINE PARDISO_HANDLE_DELETE_64
  151. END INTERFACE
  152. !
  153. ! Subroutine prototype for PARDISO_64
  154. !
  155. ! Note: The pardiso_64 interface is not supported on IA-32 architecture.
  156. ! If called on IA-32, error = -12 is returned.
  157. !
  158. INTERFACE PARDISO_64
  159. SUBROUTINE PARDISO_S_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, &
  160. & IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  161. IMPORT MKL_PARDISO_HANDLE
  162. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  163. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  164. INTEGER(KIND=8), INTENT(IN) :: MNUM
  165. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  166. INTEGER(KIND=8), INTENT(IN) :: PHASE
  167. INTEGER(KIND=8), INTENT(IN) :: N
  168. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  169. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  170. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  171. INTEGER(KIND=8), INTENT(IN) :: NRHS
  172. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  173. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  174. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  175. REAL(KIND=4), INTENT(IN) :: A(*)
  176. REAL(KIND=4), INTENT(INOUT) :: B(*)
  177. REAL(KIND=4), INTENT(OUT) :: X(*)
  178. END SUBROUTINE PARDISO_S_64
  179. SUBROUTINE PARDISO_D_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, &
  180. & IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  181. IMPORT MKL_PARDISO_HANDLE
  182. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  183. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  184. INTEGER(KIND=8), INTENT(IN) :: MNUM
  185. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  186. INTEGER(KIND=8), INTENT(IN) :: PHASE
  187. INTEGER(KIND=8), INTENT(IN) :: N
  188. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  189. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  190. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  191. INTEGER(KIND=8), INTENT(IN) :: NRHS
  192. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  193. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  194. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  195. REAL(KIND=8), INTENT(IN) :: A(*)
  196. REAL(KIND=8), INTENT(INOUT) :: B(*)
  197. REAL(KIND=8), INTENT(OUT) :: X(*)
  198. END SUBROUTINE PARDISO_D_64
  199. SUBROUTINE PARDISO_SC_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, &
  200. & IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  201. IMPORT MKL_PARDISO_HANDLE
  202. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  203. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  204. INTEGER(KIND=8), INTENT(IN) :: MNUM
  205. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  206. INTEGER(KIND=8), INTENT(IN) :: PHASE
  207. INTEGER(KIND=8), INTENT(IN) :: N
  208. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  209. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  210. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  211. INTEGER(KIND=8), INTENT(IN) :: NRHS
  212. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  213. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  214. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  215. COMPLEX(KIND=4), INTENT(IN) :: A(*)
  216. COMPLEX(KIND=4), INTENT(INOUT) :: B(*)
  217. COMPLEX(KIND=4), INTENT(OUT) :: X(*)
  218. END SUBROUTINE PARDISO_SC_64
  219. SUBROUTINE PARDISO_DC_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, &
  220. & IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  221. IMPORT MKL_PARDISO_HANDLE
  222. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  223. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  224. INTEGER(KIND=8), INTENT(IN) :: MNUM
  225. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  226. INTEGER(KIND=8), INTENT(IN) :: PHASE
  227. INTEGER(KIND=8), INTENT(IN) :: N
  228. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  229. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  230. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  231. INTEGER(KIND=8), INTENT(IN) :: NRHS
  232. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  233. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  234. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  235. COMPLEX(KIND=8), INTENT(IN) :: A(*)
  236. COMPLEX(KIND=8), INTENT(INOUT) :: B(*)
  237. COMPLEX(KIND=8), INTENT(OUT) :: X(*)
  238. END SUBROUTINE PARDISO_DC_64
  239. END INTERFACE
  240. INTERFACE
  241. SUBROUTINE PARDISOINIT(PT, MTYPE, IPARM)
  242. IMPORT MKL_PARDISO_HANDLE
  243. TYPE(MKL_PARDISO_HANDLE), INTENT(OUT) :: PT(*)
  244. INTEGER, INTENT(IN) :: MTYPE
  245. INTEGER, INTENT(OUT) :: IPARM(*)
  246. END SUBROUTINE PARDISOINIT
  247. END INTERFACE
  248. INTERFACE PARDISO_PIV
  249. FUNCTION MKL_PARDISO_PIVOT( AII, BII, EPS)
  250. REAL(KIND=8) :: AII, BII, EPS
  251. INTEGER MKL_PARDISO_PIVOT
  252. END
  253. END INTERFACE PARDISO_PIV
  254. INTERFACE PARDISO_GETDIAG
  255. SUBROUTINE PARDISO_GETDIAG_D(PT,DIAG_FACT,DIAG_A,MNUM,ERROR)
  256. IMPORT MKL_PARDISO_HANDLE
  257. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  258. REAL(KIND=8), INTENT(INOUT) :: DIAG_FACT(*), DIAG_A(*)
  259. INTEGER, INTENT(IN) :: MNUM
  260. INTEGER, INTENT(INOUT) :: ERROR
  261. END
  262. SUBROUTINE PARDISO_GETDIAG_Z(PT,DIAG_FACT,DIAG_A,MNUM,ERROR)
  263. IMPORT MKL_PARDISO_HANDLE
  264. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  265. COMPLEX(KIND=8), INTENT(INOUT) :: DIAG_FACT(*), DIAG_A(*)
  266. INTEGER, INTENT(IN) :: MNUM
  267. INTEGER, INTENT(INOUT) :: ERROR
  268. END
  269. END INTERFACE PARDISO_GETDIAG
  270. INTERFACE PARDISO_EXPORT
  271. SUBROUTINE PARDISO_EXPORT_D(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  272. IMPORT MKL_PARDISO_HANDLE
  273. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  274. REAL(KIND=8) , INTENT(INOUT) :: VALUES(*)
  275. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  276. INTEGER , INTENT(IN) :: STEP
  277. INTEGER , INTENT(INOUT) :: IPARM(*)
  278. INTEGER , INTENT(OUT) :: ERROR
  279. END
  280. SUBROUTINE PARDISO_EXPORT_S(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  281. IMPORT MKL_PARDISO_HANDLE
  282. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  283. REAL(KIND=4) , INTENT(INOUT) :: VALUES(*)
  284. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  285. INTEGER , INTENT(IN) :: STEP
  286. INTEGER , INTENT(INOUT) :: IPARM(*)
  287. INTEGER , INTENT(OUT) :: ERROR
  288. END
  289. SUBROUTINE PARDISO_EXPORT_C(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  290. IMPORT MKL_PARDISO_HANDLE
  291. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  292. COMPLEX(KIND=4) , INTENT(INOUT) :: VALUES(*)
  293. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  294. INTEGER , INTENT(IN) :: STEP
  295. INTEGER , INTENT(INOUT) :: IPARM(*)
  296. INTEGER , INTENT(OUT) :: ERROR
  297. END
  298. SUBROUTINE PARDISO_EXPORT_Z(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  299. IMPORT MKL_PARDISO_HANDLE
  300. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  301. COMPLEX(KIND=8) , INTENT(INOUT) :: VALUES(*)
  302. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  303. INTEGER , INTENT(IN) :: STEP
  304. INTEGER , INTENT(INOUT) :: IPARM(*)
  305. INTEGER , INTENT(OUT) :: ERROR
  306. END
  307. END INTERFACE PARDISO_EXPORT