mkl_poisson.f90 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. !===============================================================================
  2. ! Copyright 2006-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. MODULE MKL_POISSON
  15. USE MKL_DFTI
  16. INTERFACE
  17. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  18. !!!!!!!!!!!!!!INTERFACES FOR 3D CASE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  19. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  20. SUBROUTINE D_INIT_HELMHOLTZ_3D(AX,BX,AY,BY,AZ,BZ,NX,NY,NZ,BCTYPE,Q,IPAR,DPAR,STAT)
  21. USE MKL_DFTI
  22. INTEGER NX, NY, NZ, STAT
  23. INTEGER IPAR(*)
  24. DOUBLE PRECISION AX,BX,AY,BY,AZ,BZ,Q
  25. CHARACTER(6) BCTYPE
  26. DOUBLE PRECISION DPAR(*)
  27. END SUBROUTINE
  28. !---------------------------------------------------------------------
  29. SUBROUTINE D_COMMIT_HELMHOLTZ_3D(F,BD_AX,BD_BX,BD_AY,BD_BY,BD_AZ,BD_BZ,XHANDLE,YHANDLE,IPAR,DPAR,STAT)
  30. USE MKL_DFTI
  31. INTEGER STAT
  32. INTEGER IPAR(*)
  33. DOUBLE PRECISION DPAR(*)
  34. DOUBLE PRECISION F(IPAR(11)+1,IPAR(12)+1,*)
  35. DOUBLE PRECISION BD_AX(IPAR(12)+1,*),BD_BX(IPAR(12)+1,*),BD_AY(IPAR(11)+1,*),BD_BY(IPAR(11)+1,*)
  36. DOUBLE PRECISION BD_AZ(IPAR(11)+1,*),BD_BZ(IPAR(11)+1,*)
  37. TYPE(DFTI_DESCRIPTOR), POINTER :: XHANDLE, YHANDLE
  38. END SUBROUTINE
  39. !---------------------------------------------------------------------
  40. SUBROUTINE D_HELMHOLTZ_3D(F,BD_AX,BD_BX,BD_AY,BD_BY,BD_AZ,BD_BZ,XHANDLE,YHANDLE,IPAR,DPAR,STAT)
  41. USE MKL_DFTI
  42. INTEGER STAT
  43. INTEGER IPAR(*)
  44. DOUBLE PRECISION F(IPAR(11)+1,IPAR(12)+1,*)
  45. DOUBLE PRECISION BD_AX(IPAR(12)+1,*),BD_BX(IPAR(12)+1,*),BD_AY(IPAR(11)+1,*),BD_BY(IPAR(11)+1,*)
  46. DOUBLE PRECISION BD_AZ(IPAR(11)+1,*),BD_BZ(IPAR(11)+1,*)
  47. DOUBLE PRECISION DPAR(*)
  48. TYPE(DFTI_DESCRIPTOR), POINTER :: XHANDLE, YHANDLE
  49. END SUBROUTINE
  50. !---------------------------------------------------------------------
  51. SUBROUTINE FREE_HELMHOLTZ_3D(XHANDLE,YHANDLE,IPAR,STAT)
  52. USE MKL_DFTI
  53. INTEGER STAT
  54. INTEGER IPAR(*)
  55. TYPE(DFTI_DESCRIPTOR), POINTER :: XHANDLE, YHANDLE
  56. END SUBROUTINE
  57. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  58. !!!!!!!!!!!!!!INTERFACES FOR 2D CASE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  59. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  60. SUBROUTINE D_INIT_HELMHOLTZ_2D(AX,BX,AY,BY,NX,NY,BCTYPE,Q,IPAR,DPAR,STAT)
  61. USE MKL_DFTI
  62. INTEGER NX, NY, STAT
  63. INTEGER IPAR(*)
  64. DOUBLE PRECISION AX,BX,AY,BY,Q
  65. CHARACTER(4) BCTYPE
  66. DOUBLE PRECISION DPAR(*)
  67. END SUBROUTINE
  68. !---------------------------------------------------------------------
  69. SUBROUTINE D_COMMIT_HELMHOLTZ_2D(F,BD_AX,BD_BX,BD_AY,BD_BY,HANDLE,IPAR,DPAR,STAT)
  70. USE MKL_DFTI
  71. INTEGER STAT
  72. INTEGER IPAR(*)
  73. DOUBLE PRECISION F(IPAR(11)+1,*)
  74. DOUBLE PRECISION BD_AX(*),BD_BX(*),BD_AY(*),BD_BY(*)
  75. DOUBLE PRECISION DPAR(*)
  76. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  77. END SUBROUTINE
  78. !---------------------------------------------------------------------
  79. SUBROUTINE D_HELMHOLTZ_2D(F,BD_AX,BD_BX,BD_AY,BD_BY,HANDLE,IPAR,DPAR,STAT)
  80. USE MKL_DFTI
  81. INTEGER STAT
  82. INTEGER IPAR(*)
  83. DOUBLE PRECISION F(IPAR(11)+1,*)
  84. DOUBLE PRECISION BD_AX(*),BD_BX(*),BD_AY(*),BD_BY(*)
  85. DOUBLE PRECISION DPAR(*)
  86. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  87. END SUBROUTINE
  88. !---------------------------------------------------------------------
  89. SUBROUTINE FREE_HELMHOLTZ_2D(HANDLE,IPAR,STAT)
  90. USE MKL_DFTI
  91. INTEGER STAT
  92. INTEGER IPAR(*)
  93. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  94. END SUBROUTINE
  95. !**********************************************************************
  96. !***********************SINGLE*****************************************
  97. !**********************************************************************
  98. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  99. !!!!!!!!!!!!!!INTERFACES FOR 3D CASE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  100. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  101. SUBROUTINE S_INIT_HELMHOLTZ_3D(AX,BX,AY,BY,AZ,BZ,NX,NY,NZ,BCTYPE,Q,IPAR,SPAR,STAT)
  102. USE MKL_DFTI
  103. INTEGER NX, NY, NZ, STAT
  104. INTEGER IPAR(*)
  105. REAL AX,BX,AY,BY,AZ,BZ,Q
  106. CHARACTER(6) BCTYPE
  107. REAL SPAR(*)
  108. END SUBROUTINE
  109. !---------------------------------------------------------------------
  110. SUBROUTINE S_COMMIT_HELMHOLTZ_3D(F,BD_AX,BD_BX,BD_AY,BD_BY,BD_AZ,BD_BZ,XHANDLE,YHANDLE,IPAR,SPAR,STAT)
  111. USE MKL_DFTI
  112. INTEGER STAT
  113. INTEGER IPAR(*)
  114. REAL SPAR(*)
  115. REAL F(IPAR(11)+1,IPAR(12)+1,*)
  116. REAL BD_AX(IPAR(12)+1,*),BD_BX(IPAR(12)+1,*),BD_AY(IPAR(11)+1,*),BD_BY(IPAR(11)+1,*)
  117. REAL BD_AZ(IPAR(11)+1,*),BD_BZ(IPAR(11)+1,*)
  118. TYPE(DFTI_DESCRIPTOR), POINTER :: XHANDLE, YHANDLE
  119. END SUBROUTINE
  120. !---------------------------------------------------------------------
  121. SUBROUTINE S_HELMHOLTZ_3D(F,BD_AX,BD_BX,BD_AY,BD_BY,BD_AZ,BD_BZ,XHANDLE,YHANDLE,IPAR,SPAR,STAT)
  122. USE MKL_DFTI
  123. INTEGER STAT
  124. INTEGER IPAR(*)
  125. REAL F(IPAR(11)+1,IPAR(12)+1,*)
  126. REAL BD_AX(IPAR(12)+1,*),BD_BX(IPAR(12)+1,*),BD_AY(IPAR(11)+1,*),BD_BY(IPAR(11)+1,*)
  127. REAL BD_AZ(IPAR(11)+1,*),BD_BZ(IPAR(11)+1,*)
  128. REAL SPAR(*)
  129. TYPE(DFTI_DESCRIPTOR), POINTER :: XHANDLE, YHANDLE
  130. END SUBROUTINE
  131. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  132. !!!!!!!!!!!!!!INTERFACES FOR 2D CASE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  133. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  134. SUBROUTINE S_INIT_HELMHOLTZ_2D(AX,BX,AY,BY,NX,NY,BCTYPE,Q,IPAR,SPAR,STAT)
  135. USE MKL_DFTI
  136. INTEGER NX, NY, STAT
  137. INTEGER IPAR(*)
  138. REAL AX,BX,AY,BY,Q
  139. CHARACTER(4) BCTYPE
  140. REAL SPAR(*)
  141. END SUBROUTINE
  142. !---------------------------------------------------------------------
  143. SUBROUTINE S_COMMIT_HELMHOLTZ_2D(F,BD_AX,BD_BX,BD_AY,BD_BY,HANDLE,IPAR,SPAR,STAT)
  144. USE MKL_DFTI
  145. INTEGER STAT
  146. INTEGER IPAR(*)
  147. REAL F(IPAR(11)+1,*)
  148. REAL BD_AX(*),BD_BX(*),BD_AY(*),BD_BY(*)
  149. REAL SPAR(*)
  150. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  151. END SUBROUTINE
  152. !---------------------------------------------------------------------
  153. SUBROUTINE S_HELMHOLTZ_2D(F,BD_AX,BD_BX,BD_AY,BD_BY,HANDLE,IPAR,SPAR,STAT)
  154. USE MKL_DFTI
  155. INTEGER STAT
  156. INTEGER IPAR(*)
  157. REAL F(IPAR(11)+1,*)
  158. REAL BD_AX(*),BD_BX(*),BD_AY(*),BD_BY(*)
  159. REAL SPAR(*)
  160. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  161. END SUBROUTINE
  162. SUBROUTINE D_INIT_SPH_P(AX,BX,AY,BY,NX,NY,Q,IPAR,DPAR,STAT)
  163. USE MKL_DFTI
  164. INTEGER NX, NY, STAT
  165. INTEGER IPAR(*)
  166. DOUBLE PRECISION AX,BX,AY,BY,Q
  167. DOUBLE PRECISION DPAR(*)
  168. END SUBROUTINE
  169. !---------------------------------------------------------------------
  170. SUBROUTINE D_COMMIT_SPH_P(F,HANDLE_S,HANDLE_C,IPAR,DPAR,STAT)
  171. USE MKL_DFTI
  172. INTEGER STAT
  173. INTEGER IPAR(*)
  174. DOUBLE PRECISION DPAR(*)
  175. DOUBLE PRECISION F(IPAR(11)+1,*)
  176. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE_C, HANDLE_S
  177. END SUBROUTINE
  178. !---------------------------------------------------------------------
  179. SUBROUTINE D_SPH_P(F,HANDLE_S,HANDLE_C,IPAR,DPAR,STAT)
  180. USE MKL_DFTI
  181. INTEGER STAT
  182. INTEGER IPAR(*)
  183. DOUBLE PRECISION DPAR(*)
  184. DOUBLE PRECISION F(IPAR(11)+1,*)
  185. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE_C, HANDLE_S
  186. END SUBROUTINE
  187. !---------------------------------------------------------------------
  188. SUBROUTINE FREE_SPH_P(HANDLE_S,HANDLE_C,IPAR,STAT)
  189. USE MKL_DFTI
  190. INTEGER STAT
  191. INTEGER IPAR(*)
  192. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE_S, HANDLE_C
  193. END SUBROUTINE
  194. !---------------------------------------------------------------------
  195. SUBROUTINE D_INIT_SPH_NP(AX,BX,AY,BY,NX,NY,Q,IPAR,DPAR,STAT)
  196. USE MKL_DFTI
  197. INTEGER NX, NY, STAT
  198. INTEGER IPAR(*)
  199. DOUBLE PRECISION AX,BX,AY,BY,Q
  200. DOUBLE PRECISION DPAR(*)
  201. END SUBROUTINE
  202. !---------------------------------------------------------------------
  203. SUBROUTINE D_COMMIT_SPH_NP(F,HANDLE,IPAR,DPAR,STAT)
  204. USE MKL_DFTI
  205. INTEGER STAT
  206. INTEGER IPAR(*)
  207. DOUBLE PRECISION DPAR(*)
  208. DOUBLE PRECISION F(IPAR(11)+1,*)
  209. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  210. END SUBROUTINE
  211. !---------------------------------------------------------------------
  212. SUBROUTINE D_SPH_NP(F,HANDLE,IPAR,DPAR,STAT)
  213. USE MKL_DFTI
  214. INTEGER STAT
  215. INTEGER IPAR(*)
  216. DOUBLE PRECISION DPAR(*)
  217. DOUBLE PRECISION F(IPAR(11)+1,*)
  218. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  219. END SUBROUTINE
  220. !---------------------------------------------------------------------
  221. SUBROUTINE FREE_SPH_NP(HANDLE,IPAR,STAT)
  222. USE MKL_DFTI
  223. INTEGER STAT
  224. INTEGER IPAR(*)
  225. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  226. END SUBROUTINE
  227. !======================================================================
  228. SUBROUTINE S_INIT_SPH_P(AX,BX,AY,BY,NX,NY,Q,IPAR,SPAR,STAT)
  229. USE MKL_DFTI
  230. INTEGER NX, NY, STAT
  231. INTEGER IPAR(*)
  232. REAL AX,BX,AY,BY,Q
  233. REAL SPAR(*)
  234. END SUBROUTINE
  235. !---------------------------------------------------------------------
  236. SUBROUTINE S_COMMIT_SPH_P(F,HANDLE_S,HANDLE_C,IPAR,SPAR,STAT)
  237. USE MKL_DFTI
  238. INTEGER STAT
  239. INTEGER IPAR(*)
  240. REAL SPAR(*)
  241. REAL F(IPAR(11)+1,*)
  242. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE_C, HANDLE_S
  243. END SUBROUTINE
  244. !---------------------------------------------------------------------
  245. SUBROUTINE S_SPH_P(F,HANDLE_S,HANDLE_C,IPAR,SPAR,STAT)
  246. USE MKL_DFTI
  247. INTEGER STAT
  248. INTEGER IPAR(*)
  249. REAL SPAR(*)
  250. REAL F(IPAR(11)+1,*)
  251. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE_C, HANDLE_S
  252. END SUBROUTINE
  253. !--------------------------------------------------------------------
  254. SUBROUTINE S_INIT_SPH_NP(AX,BX,AY,BY,NX,NY,Q,IPAR,SPAR,STAT)
  255. USE MKL_DFTI
  256. INTEGER NX, NY, STAT
  257. INTEGER IPAR(*)
  258. REAL AX,BX,AY,BY,Q
  259. REAL SPAR(*)
  260. END SUBROUTINE
  261. !---------------------------------------------------------------------
  262. SUBROUTINE S_COMMIT_SPH_NP(F,HANDLE,IPAR,SPAR,STAT)
  263. USE MKL_DFTI
  264. INTEGER STAT
  265. INTEGER IPAR(*)
  266. REAL SPAR(*)
  267. REAL F(IPAR(11)+1,*)
  268. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  269. END SUBROUTINE
  270. !---------------------------------------------------------------------
  271. SUBROUTINE S_SPH_NP(F,HANDLE,IPAR,SPAR,STAT)
  272. USE MKL_DFTI
  273. INTEGER STAT
  274. INTEGER IPAR(*)
  275. REAL SPAR(*)
  276. REAL F(IPAR(11)+1,*)
  277. TYPE(DFTI_DESCRIPTOR), POINTER :: HANDLE
  278. END SUBROUTINE
  279. END INTERFACE
  280. END MODULE