Fortran Coder

标题: Fortran代码调用pardiso函数的问题 [打印本页]

作者: wojiaoshuhua    时间: 2019-8-6 00:37
标题: Fortran代码调用pardiso函数的问题
自己按照MKL手册写了一个调用pardiso函数的简单代码,for格式的,不知道为什么,总是出现访问冲突,可参数都是按照要求给的,麻烦大家帮忙看一下,我有点懵了,谢谢!!!
[Fortran] 纯文本查看 复制代码

      PROGRAM pardisotest

      integer*8, dimension(64) :: pt
      integer :: maxfct=1
      integer :: mnum  =1
      integer :: mtype  = -2
      integer :: phase      
      integer :: n=8
      
      REAL,dimension(18) :: a
      integer,dimension(9):: ia
      integer,dimension(18) :: ja   
           
      integer, dimension(8) :: perm      
      integer :: nrhs  =1
      integer, dimension(64) :: iparm
      integer :: msglvl = 1
      
       REAL, dimension(8) :: b
       REAL, dimension(8) :: x      
      
      integer :: error  = 0
      
       ia = (/ 1, 5, 8, 10, 12, 15, 17, 18, 19 /)

       ja = (/ 1,    3,       6, 7,   
     &            2, 3,    5,         
     &               3,             8,
     &                  4,       7,   
     &                     5, 6, 7,   
     &                        6,    8,
     &                           7,   
     &                              8 /)

      a = (/ 7.d0,        1.d0,             2.d0, 7.d0,        
     &             -4.d0, 8.d0,       2.d0,                    
     &                    1.d0,                         5.d0,  
     &                          7.d0,             9.d0,        
     &                                5.d0, 1.d0, 5.d0,        
     &                                     -1.d0,       5.d0,  
     &                                            11.d0,        
     &                                                  5.d0 /)


      b=(/17.d0, 6.d0, 6.d0, 16.d0 ,11.d0, 4.d0, 11.d0, 5.d0/)
      
      DO i = 1, 64
          pt(i)=0
       iparm(i) = 0
      END DO

      DO i = 1, 8
       x(i) = 0
      END DO

      phase = 13
      
      CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a, ia, ja,
     &         perm, nrhs, iparm, msglvl, b, x, error)
      
       WRITE(*,*) 'The solution of the system is '
      DO i = 1, n
      WRITE(*,*) ' x(',i,') = ', x(i)
      END DO
      
      read*
      
      END PROGRAM pardisotest





作者: li913    时间: 2019-8-6 10:18
include 'mkl_pardiso.f90'
作者: wojiaoshuhua    时间: 2019-8-6 21:17
li913 发表于 2019-8-6 10:18
include 'mkl_pardiso.f90'

谢谢老师,请问这个include语句到底起什么作用,我添加了这个语句后,出现了很多错误啊,请教一下怎么解决

QQ图片20190806211541.png (168.03 KB, 下载次数: 182)

QQ图片20190806211541.png

作者: li913    时间: 2019-8-7 10:04
那就换 use lapack95

QQ截图20190807100346.png (59.96 KB, 下载次数: 226)

QQ截图20190807100346.png

作者: 白南先生    时间: 2019-8-7 21:08
https://blog.csdn.net/chd_lkl/article/details/83011186#comments




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2