mkl_pardiso.f90 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513
  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-90 header file
  16. !
  17. ! Contains PARDISO routine definition.
  18. ! For CDECL use only.
  19. !
  20. !*******************************************************************************
  21. !DEC$ IF .NOT. DEFINED( __MKL_PARDISO_F90 )
  22. !DEC$ DEFINE __MKL_PARDISO_F90
  23. MODULE MKL_PARDISO_PRIVATE
  24. TYPE MKL_PARDISO_HANDLE; INTEGER(KIND=8) DUMMY; END TYPE
  25. END MODULE MKL_PARDISO_PRIVATE
  26. MODULE MKL_PARDISO
  27. USE MKL_PARDISO_PRIVATE
  28. !
  29. ! Subroutine prototype for PARDISO
  30. !
  31. INTERFACE PARDISO
  32. SUBROUTINE PARDISO_S( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  33. USE MKL_PARDISO_PRIVATE
  34. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  35. INTEGER, INTENT(IN) :: MAXFCT
  36. INTEGER, INTENT(IN) :: MNUM
  37. INTEGER, INTENT(IN) :: MTYPE
  38. INTEGER, INTENT(IN) :: PHASE
  39. INTEGER, INTENT(IN) :: N
  40. INTEGER, INTENT(IN) :: IA(*)
  41. INTEGER, INTENT(IN) :: JA(*)
  42. INTEGER, INTENT(INOUT) :: PERM(*)
  43. INTEGER, INTENT(IN) :: NRHS
  44. INTEGER, INTENT(INOUT) :: IPARM(*)
  45. INTEGER, INTENT(IN) :: MSGLVL
  46. INTEGER, INTENT(OUT) :: ERROR
  47. REAL(KIND=4), INTENT(IN) :: A(*)
  48. REAL(KIND=4), INTENT(INOUT) :: B(*)
  49. REAL(KIND=4), INTENT(OUT) :: X(*)
  50. END SUBROUTINE PARDISO_S
  51. SUBROUTINE PARDISO_D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  52. USE MKL_PARDISO_PRIVATE
  53. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  54. INTEGER, INTENT(IN) :: MAXFCT
  55. INTEGER, INTENT(IN) :: MNUM
  56. INTEGER, INTENT(IN) :: MTYPE
  57. INTEGER, INTENT(IN) :: PHASE
  58. INTEGER, INTENT(IN) :: N
  59. INTEGER, INTENT(IN) :: IA(*)
  60. INTEGER, INTENT(IN) :: JA(*)
  61. INTEGER, INTENT(INOUT) :: PERM(*)
  62. INTEGER, INTENT(IN) :: NRHS
  63. INTEGER, INTENT(INOUT) :: IPARM(*)
  64. INTEGER, INTENT(IN) :: MSGLVL
  65. INTEGER, INTENT(OUT) :: ERROR
  66. REAL(KIND=8), INTENT(IN) :: A(*)
  67. REAL(KIND=8), INTENT(INOUT) :: B(*)
  68. REAL(KIND=8), INTENT(OUT) :: X(*)
  69. END SUBROUTINE PARDISO_D
  70. SUBROUTINE PARDISO_SC( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  71. USE MKL_PARDISO_PRIVATE
  72. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  73. INTEGER, INTENT(IN) :: MAXFCT
  74. INTEGER, INTENT(IN) :: MNUM
  75. INTEGER, INTENT(IN) :: MTYPE
  76. INTEGER, INTENT(IN) :: PHASE
  77. INTEGER, INTENT(IN) :: N
  78. INTEGER, INTENT(IN) :: IA(*)
  79. INTEGER, INTENT(IN) :: JA(*)
  80. INTEGER, INTENT(INOUT) :: PERM(*)
  81. INTEGER, INTENT(IN) :: NRHS
  82. INTEGER, INTENT(INOUT) :: IPARM(*)
  83. INTEGER, INTENT(IN) :: MSGLVL
  84. INTEGER, INTENT(OUT) :: ERROR
  85. COMPLEX(KIND=4), INTENT(IN) :: A(*)
  86. COMPLEX(KIND=4), INTENT(INOUT) :: B(*)
  87. COMPLEX(KIND=4), INTENT(OUT) :: X(*)
  88. END SUBROUTINE PARDISO_SC
  89. SUBROUTINE PARDISO_DC( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  90. USE MKL_PARDISO_PRIVATE
  91. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  92. INTEGER, INTENT(IN) :: MAXFCT
  93. INTEGER, INTENT(IN) :: MNUM
  94. INTEGER, INTENT(IN) :: MTYPE
  95. INTEGER, INTENT(IN) :: PHASE
  96. INTEGER, INTENT(IN) :: N
  97. INTEGER, INTENT(IN) :: IA(*)
  98. INTEGER, INTENT(IN) :: JA(*)
  99. INTEGER, INTENT(INOUT) :: PERM(*)
  100. INTEGER, INTENT(IN) :: NRHS
  101. INTEGER, INTENT(INOUT) :: IPARM(*)
  102. INTEGER, INTENT(IN) :: MSGLVL
  103. INTEGER, INTENT(OUT) :: ERROR
  104. COMPLEX(KIND=8), INTENT(IN) :: A(*)
  105. COMPLEX(KIND=8), INTENT(INOUT) :: B(*)
  106. COMPLEX(KIND=8), INTENT(OUT) :: X(*)
  107. END SUBROUTINE PARDISO_DC
  108. SUBROUTINE PARDISO_S_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  109. USE MKL_PARDISO_PRIVATE
  110. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  111. INTEGER, INTENT(IN) :: MAXFCT
  112. INTEGER, INTENT(IN) :: MNUM
  113. INTEGER, INTENT(IN) :: MTYPE
  114. INTEGER, INTENT(IN) :: PHASE
  115. INTEGER, INTENT(IN) :: N
  116. INTEGER, INTENT(IN) :: IA(*)
  117. INTEGER, INTENT(IN) :: JA(*)
  118. INTEGER, INTENT(INOUT) :: PERM(*)
  119. INTEGER, INTENT(IN) :: NRHS
  120. INTEGER, INTENT(INOUT) :: IPARM(*)
  121. INTEGER, INTENT(IN) :: MSGLVL
  122. INTEGER, INTENT(OUT) :: ERROR
  123. REAL(KIND=4), INTENT(IN) :: A(*)
  124. REAL(KIND=4), INTENT(INOUT) :: B(N,*)
  125. REAL(KIND=4), INTENT(OUT) :: X(N,*)
  126. END SUBROUTINE PARDISO_S_2D
  127. SUBROUTINE PARDISO_D_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  128. USE MKL_PARDISO_PRIVATE
  129. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  130. INTEGER, INTENT(IN) :: MAXFCT
  131. INTEGER, INTENT(IN) :: MNUM
  132. INTEGER, INTENT(IN) :: MTYPE
  133. INTEGER, INTENT(IN) :: PHASE
  134. INTEGER, INTENT(IN) :: N
  135. INTEGER, INTENT(IN) :: IA(*)
  136. INTEGER, INTENT(IN) :: JA(*)
  137. INTEGER, INTENT(INOUT) :: PERM(*)
  138. INTEGER, INTENT(IN) :: NRHS
  139. INTEGER, INTENT(INOUT) :: IPARM(*)
  140. INTEGER, INTENT(IN) :: MSGLVL
  141. INTEGER, INTENT(OUT) :: ERROR
  142. REAL(KIND=8), INTENT(IN) :: A(*)
  143. REAL(KIND=8), INTENT(INOUT) :: B(N,*)
  144. REAL(KIND=8), INTENT(OUT) :: X(N,*)
  145. END SUBROUTINE PARDISO_D_2D
  146. SUBROUTINE PARDISO_SC_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  147. USE MKL_PARDISO_PRIVATE
  148. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  149. INTEGER, INTENT(IN) :: MAXFCT
  150. INTEGER, INTENT(IN) :: MNUM
  151. INTEGER, INTENT(IN) :: MTYPE
  152. INTEGER, INTENT(IN) :: PHASE
  153. INTEGER, INTENT(IN) :: N
  154. INTEGER, INTENT(IN) :: IA(*)
  155. INTEGER, INTENT(IN) :: JA(*)
  156. INTEGER, INTENT(INOUT) :: PERM(*)
  157. INTEGER, INTENT(IN) :: NRHS
  158. INTEGER, INTENT(INOUT) :: IPARM(*)
  159. INTEGER, INTENT(IN) :: MSGLVL
  160. INTEGER, INTENT(OUT) :: ERROR
  161. COMPLEX(KIND=4), INTENT(IN) :: A(*)
  162. COMPLEX(KIND=4), INTENT(INOUT) :: B(N,*)
  163. COMPLEX(KIND=4), INTENT(OUT) :: X(N,*)
  164. END SUBROUTINE PARDISO_SC_2D
  165. SUBROUTINE PARDISO_DC_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  166. USE MKL_PARDISO_PRIVATE
  167. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  168. INTEGER, INTENT(IN) :: MAXFCT
  169. INTEGER, INTENT(IN) :: MNUM
  170. INTEGER, INTENT(IN) :: MTYPE
  171. INTEGER, INTENT(IN) :: PHASE
  172. INTEGER, INTENT(IN) :: N
  173. INTEGER, INTENT(IN) :: IA(*)
  174. INTEGER, INTENT(IN) :: JA(*)
  175. INTEGER, INTENT(INOUT) :: PERM(*)
  176. INTEGER, INTENT(IN) :: NRHS
  177. INTEGER, INTENT(INOUT) :: IPARM(*)
  178. INTEGER, INTENT(IN) :: MSGLVL
  179. INTEGER, INTENT(OUT) :: ERROR
  180. COMPLEX(KIND=8), INTENT(IN) :: A(*)
  181. COMPLEX(KIND=8), INTENT(INOUT) :: B(N,*)
  182. COMPLEX(KIND=8), INTENT(OUT) :: X(N,*)
  183. END SUBROUTINE PARDISO_DC_2D
  184. END INTERFACE
  185. INTERFACE
  186. SUBROUTINE PARDISO_HANDLE_STORE( PT, STORE_NAME, ERROR )
  187. USE MKL_PARDISO_PRIVATE
  188. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  189. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  190. INTEGER, INTENT(OUT) :: ERROR
  191. END SUBROUTINE PARDISO_HANDLE_STORE
  192. END INTERFACE
  193. INTERFACE
  194. SUBROUTINE PARDISO_HANDLE_STORE_64( PT, STORE_NAME, ERROR )
  195. USE MKL_PARDISO_PRIVATE
  196. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  197. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  198. INTEGER*8, INTENT(OUT) :: ERROR
  199. END SUBROUTINE PARDISO_HANDLE_STORE_64
  200. END INTERFACE
  201. INTERFACE
  202. SUBROUTINE PARDISO_HANDLE_RESTORE( PT, STORE_NAME, ERROR )
  203. USE MKL_PARDISO_PRIVATE
  204. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  205. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  206. INTEGER, INTENT(OUT) :: ERROR
  207. END SUBROUTINE PARDISO_HANDLE_RESTORE
  208. END INTERFACE
  209. INTERFACE
  210. SUBROUTINE PARDISO_HANDLE_RESTORE_64( PT, STORE_NAME, ERROR )
  211. USE MKL_PARDISO_PRIVATE
  212. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  213. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  214. INTEGER*8, INTENT(OUT) :: ERROR
  215. END SUBROUTINE PARDISO_HANDLE_RESTORE_64
  216. END INTERFACE
  217. INTERFACE
  218. SUBROUTINE PARDISO_HANDLE_DELETE( STORE_NAME, ERROR )
  219. USE MKL_PARDISO_PRIVATE
  220. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  221. INTEGER, INTENT(OUT) :: ERROR
  222. END SUBROUTINE PARDISO_HANDLE_DELETE
  223. END INTERFACE
  224. INTERFACE
  225. SUBROUTINE PARDISO_HANDLE_DELETE_64( STORE_NAME, ERROR )
  226. USE MKL_PARDISO_PRIVATE
  227. CHARACTER, INTENT(IN) :: STORE_NAME(*)
  228. INTEGER*8, INTENT(OUT) :: ERROR
  229. END SUBROUTINE PARDISO_HANDLE_DELETE_64
  230. END INTERFACE
  231. !
  232. ! Subroutine prototype for PARDISO_64
  233. !
  234. ! Note: The pardiso_64 interface is not supported on IA-32 architecture.
  235. ! If called on IA-32, error = -12 is returned.
  236. !
  237. INTERFACE PARDISO_64
  238. SUBROUTINE PARDISO_S_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  239. USE MKL_PARDISO_PRIVATE
  240. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  241. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  242. INTEGER(KIND=8), INTENT(IN) :: MNUM
  243. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  244. INTEGER(KIND=8), INTENT(IN) :: PHASE
  245. INTEGER(KIND=8), INTENT(IN) :: N
  246. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  247. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  248. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  249. INTEGER(KIND=8), INTENT(IN) :: NRHS
  250. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  251. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  252. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  253. REAL(KIND=4), INTENT(IN) :: A(*)
  254. REAL(KIND=4), INTENT(INOUT) :: B(*)
  255. REAL(KIND=4), INTENT(OUT) :: X(*)
  256. END SUBROUTINE PARDISO_S_64
  257. SUBROUTINE PARDISO_D_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  258. USE MKL_PARDISO_PRIVATE
  259. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  260. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  261. INTEGER(KIND=8), INTENT(IN) :: MNUM
  262. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  263. INTEGER(KIND=8), INTENT(IN) :: PHASE
  264. INTEGER(KIND=8), INTENT(IN) :: N
  265. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  266. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  267. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  268. INTEGER(KIND=8), INTENT(IN) :: NRHS
  269. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  270. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  271. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  272. REAL(KIND=8), INTENT(IN) :: A(*)
  273. REAL(KIND=8), INTENT(INOUT) :: B(*)
  274. REAL(KIND=8), INTENT(OUT) :: X(*)
  275. END SUBROUTINE PARDISO_D_64
  276. SUBROUTINE PARDISO_SC_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  277. USE MKL_PARDISO_PRIVATE
  278. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  279. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  280. INTEGER(KIND=8), INTENT(IN) :: MNUM
  281. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  282. INTEGER(KIND=8), INTENT(IN) :: PHASE
  283. INTEGER(KIND=8), INTENT(IN) :: N
  284. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  285. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  286. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  287. INTEGER(KIND=8), INTENT(IN) :: NRHS
  288. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  289. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  290. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  291. COMPLEX(KIND=4), INTENT(IN) :: A(*)
  292. COMPLEX(KIND=4), INTENT(INOUT) :: B(*)
  293. COMPLEX(KIND=4), INTENT(OUT) :: X(*)
  294. END SUBROUTINE PARDISO_SC_64
  295. SUBROUTINE PARDISO_DC_64( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  296. USE MKL_PARDISO_PRIVATE
  297. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  298. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  299. INTEGER(KIND=8), INTENT(IN) :: MNUM
  300. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  301. INTEGER(KIND=8), INTENT(IN) :: PHASE
  302. INTEGER(KIND=8), INTENT(IN) :: N
  303. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  304. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  305. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  306. INTEGER(KIND=8), INTENT(IN) :: NRHS
  307. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  308. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  309. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  310. COMPLEX(KIND=8), INTENT(IN) :: A(*)
  311. COMPLEX(KIND=8), INTENT(INOUT) :: B(*)
  312. COMPLEX(KIND=8), INTENT(OUT) :: X(*)
  313. END SUBROUTINE PARDISO_DC_64
  314. SUBROUTINE PARDISO_S_64_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  315. USE MKL_PARDISO_PRIVATE
  316. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  317. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  318. INTEGER(KIND=8), INTENT(IN) :: MNUM
  319. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  320. INTEGER(KIND=8), INTENT(IN) :: PHASE
  321. INTEGER(KIND=8), INTENT(IN) :: N
  322. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  323. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  324. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  325. INTEGER(KIND=8), INTENT(IN) :: NRHS
  326. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  327. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  328. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  329. REAL(KIND=4), INTENT(IN) :: A(*)
  330. REAL(KIND=4), INTENT(INOUT) :: B(N,*)
  331. REAL(KIND=4), INTENT(OUT) :: X(N,*)
  332. END SUBROUTINE PARDISO_S_64_2D
  333. SUBROUTINE PARDISO_D_64_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  334. USE MKL_PARDISO_PRIVATE
  335. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  336. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  337. INTEGER(KIND=8), INTENT(IN) :: MNUM
  338. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  339. INTEGER(KIND=8), INTENT(IN) :: PHASE
  340. INTEGER(KIND=8), INTENT(IN) :: N
  341. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  342. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  343. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  344. INTEGER(KIND=8), INTENT(IN) :: NRHS
  345. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  346. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  347. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  348. REAL(KIND=8), INTENT(IN) :: A(*)
  349. REAL(KIND=8), INTENT(INOUT) :: B(N,*)
  350. REAL(KIND=8), INTENT(OUT) :: X(N,*)
  351. END SUBROUTINE PARDISO_D_64_2D
  352. SUBROUTINE PARDISO_SC_64_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  353. USE MKL_PARDISO_PRIVATE
  354. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  355. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  356. INTEGER(KIND=8), INTENT(IN) :: MNUM
  357. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  358. INTEGER(KIND=8), INTENT(IN) :: PHASE
  359. INTEGER(KIND=8), INTENT(IN) :: N
  360. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  361. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  362. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  363. INTEGER(KIND=8), INTENT(IN) :: NRHS
  364. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  365. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  366. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  367. COMPLEX(KIND=4), INTENT(IN) :: A(*)
  368. COMPLEX(KIND=4), INTENT(INOUT) :: B(N,*)
  369. COMPLEX(KIND=4), INTENT(OUT) :: X(N,*)
  370. END SUBROUTINE PARDISO_SC_64_2D
  371. SUBROUTINE PARDISO_DC_64_2D( PT, MAXFCT, MNUM, MTYPE, PHASE, N, A, IA, JA, PERM, NRHS, IPARM, MSGLVL, B, X, ERROR )
  372. USE MKL_PARDISO_PRIVATE
  373. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  374. INTEGER(KIND=8), INTENT(IN) :: MAXFCT
  375. INTEGER(KIND=8), INTENT(IN) :: MNUM
  376. INTEGER(KIND=8), INTENT(IN) :: MTYPE
  377. INTEGER(KIND=8), INTENT(IN) :: PHASE
  378. INTEGER(KIND=8), INTENT(IN) :: N
  379. INTEGER(KIND=8), INTENT(IN) :: IA(*)
  380. INTEGER(KIND=8), INTENT(IN) :: JA(*)
  381. INTEGER(KIND=8), INTENT(INOUT) :: PERM(*)
  382. INTEGER(KIND=8), INTENT(IN) :: NRHS
  383. INTEGER(KIND=8), INTENT(INOUT) :: IPARM(*)
  384. INTEGER(KIND=8), INTENT(IN) :: MSGLVL
  385. INTEGER(KIND=8), INTENT(OUT) :: ERROR
  386. COMPLEX(KIND=8), INTENT(IN) :: A(*)
  387. COMPLEX(KIND=8), INTENT(INOUT) :: B(N,*)
  388. COMPLEX(KIND=8), INTENT(OUT) :: X(N,*)
  389. END SUBROUTINE PARDISO_DC_64_2D
  390. END INTERFACE
  391. INTERFACE
  392. SUBROUTINE PARDISOINIT(PT, MTYPE, IPARM)
  393. USE MKL_PARDISO_PRIVATE
  394. TYPE(MKL_PARDISO_HANDLE), INTENT(OUT) :: PT(*)
  395. INTEGER, INTENT(IN) :: MTYPE
  396. INTEGER, INTENT(OUT) :: IPARM(*)
  397. END SUBROUTINE PARDISOINIT
  398. END INTERFACE
  399. INTERFACE PARDISO_PIV
  400. FUNCTION MKL_PARDISO_PIVOT( AII, BII, EPS)
  401. REAL(KIND=8) :: AII, BII, EPS
  402. INTEGER MKL_PARDISO_PIVOT
  403. END
  404. END INTERFACE PARDISO_PIV
  405. INTERFACE PARDISO_GETDIAG
  406. SUBROUTINE PARDISO_GETDIAG_D(PT,DIAG_FACT,DIAG_A,MNUM,ERROR)
  407. USE MKL_PARDISO_PRIVATE
  408. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  409. REAL(KIND=8), INTENT(INOUT) :: DIAG_FACT(*), DIAG_A(*)
  410. INTEGER, INTENT(IN) :: MNUM
  411. INTEGER, INTENT(INOUT) :: ERROR
  412. END
  413. SUBROUTINE PARDISO_GETDIAG_Z(PT,DIAG_FACT,DIAG_A,MNUM,ERROR)
  414. USE MKL_PARDISO_PRIVATE
  415. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  416. COMPLEX(KIND=8), INTENT(INOUT) :: DIAG_FACT(*), DIAG_A(*)
  417. INTEGER, INTENT(IN) :: MNUM
  418. INTEGER, INTENT(INOUT) :: ERROR
  419. END
  420. END INTERFACE PARDISO_GETDIAG
  421. INTERFACE PARDISO_EXPORT
  422. SUBROUTINE PARDISO_EXPORT_D(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  423. USE MKL_PARDISO_PRIVATE
  424. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  425. REAL(KIND=8) , INTENT(INOUT) :: VALUES(*)
  426. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  427. INTEGER , INTENT(IN) :: STEP
  428. INTEGER , INTENT(INOUT) :: IPARM(*)
  429. INTEGER , INTENT(OUT) :: ERROR
  430. END
  431. SUBROUTINE PARDISO_EXPORT_S(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  432. USE MKL_PARDISO_PRIVATE
  433. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  434. REAL(KIND=4) , INTENT(INOUT) :: VALUES(*)
  435. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  436. INTEGER , INTENT(IN) :: STEP
  437. INTEGER , INTENT(INOUT) :: IPARM(*)
  438. INTEGER , INTENT(OUT) :: ERROR
  439. END
  440. SUBROUTINE PARDISO_EXPORT_C(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  441. USE MKL_PARDISO_PRIVATE
  442. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  443. COMPLEX(KIND=4) , INTENT(INOUT) :: VALUES(*)
  444. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  445. INTEGER , INTENT(IN) :: STEP
  446. INTEGER , INTENT(INOUT) :: IPARM(*)
  447. INTEGER , INTENT(OUT) :: ERROR
  448. END
  449. SUBROUTINE PARDISO_EXPORT_Z(PT,VALUES,IA,JA,STEP,IPARM,ERROR)
  450. USE MKL_PARDISO_PRIVATE
  451. TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) :: PT(*)
  452. COMPLEX(KIND=8) , INTENT(INOUT) :: VALUES(*)
  453. INTEGER , INTENT(INOUT) :: IA(*), JA(*)
  454. INTEGER , INTENT(IN) :: STEP
  455. INTEGER , INTENT(INOUT) :: IPARM(*)
  456. INTEGER , INTENT(OUT) :: ERROR
  457. END
  458. END INTERFACE PARDISO_EXPORT
  459. END MODULE MKL_PARDISO
  460. !DEC$ ENDIF