jingjingdou
这是do的嵌套循环,首先执行的是小循环,即:
do j2=1,n
write(2,*)j1,j2,real(H0(j1,j2)
enddo
此次循环执行完毕在执行外部循环,即:
do j1=1,n
…………………………
enddo
数组H0(N,N)的输出即先输出第一行的所有元素(H0(1,j2)j2=1,…n),之后第二行(H0(2,j2),j2=1,…n),直至第n行所有元素。
楼主的程序是按照您所说的顺序输出的。
只是这个“real(H0(j1,j2) ”是不是少了个括号,还是另有其他含义?
田山东
引用回帖:
jingjingdou at 2012-12-27 14:21:34
这是do的嵌套循环,首先执行的是小循环,即:
do j2=1,n
write(2,*)j1,j2,real(H0(j1,j2)
enddo
此次循环执行完毕在执行外部循环,即:
do j1=1,n
……………… ...
我复制的时候漏掉一个),谢谢。我感觉好像不对啊。同一个矩阵,我用matlab输出和用上面的方法输出得到的结果恰好厄米。也就是说,
H(1,2)是第一列第二行了。
很奇怪,很纠结!!
田山东
多谢,刚刚仔细检查了一下,我错了。你说的是对的。
jingjingdou
引用回帖:
jingjingdou at 2012-12-27 14:21:34
这是do的嵌套循环,首先执行的是小循环,即:
do j2=1,n
write(2,*)j1,j2,real(H0(j1,j2)
enddo
此次循环执行完毕在执行外部循环,即:
do j1=1,n
……………… ...
好像matlab和fortran的读写方法有所不同,我用的fortran,matlab接触不多。在fortran里面,这个读写顺序应该就是上面那样没错。
田山东
引用回帖:
jingjingdou at 2012-12-27 14:21:34
这是do的嵌套循环,首先执行的是小循环,即:
do j2=1,n
write(2,*)j1,j2,real(H0(j1,j2)
enddo
此次循环执行完毕在执行外部循环,即:
do j1=1,n
……………… ...
我有个程序,里面要用到调用矩阵求逆的子函数,
call ZGETRF( N, N, TA, N, IPIV, INFO )
call ZGETRI( N, TA, N, IPIV, WORK, N, INFO )
linux下,装的interfortran,
/opt/intel/mkl/lib/intel64
这是intel64所在的目录,如果我想调用这两个库函数,该在后面加哪个命令呢?我打开这个目录看了,里面有好多,不知道该用哪个啊,是不是如果知道用哪个的话这样就可以了啊?
gfortran 222bylag.f –L/opt/intel/mkl/lib/intel64 -llibmkl_avx.so.......
libmkl_avx2.so libmkl_intel_lp64.so
libmkl_avx.so libmkl_intel_sp2dp.a
libmkl_blacs_ilp64.a libmkl_intel_sp2dp.so
libmkl_blacs_intelmpi_ilp64.a libmkl_intel_thread.a
libmkl_blacs_intelmpi_ilp64.so libmkl_intel_thread.so
libmkl_blacs_intelmpi_lp64.a libmkl_lapack95_ilp64.a
libmkl_blacs_intelmpi_lp64.so libmkl_lapack95_lp64.a
libmkl_blacs_lp64.a libmkl_mc3.so
libmkl_blacs_openmpi_ilp64.a libmkl_mc.so
libmkl_blacs_openmpi_lp64.a libmkl_p4n.so
libmkl_blacs_sgimpt_ilp64.a libmkl_pgi_thread.a
libmkl_blacs_sgimpt_lp64.a libmkl_pgi_thread.so
libmkl_blas95_ilp64.a libmkl_rt.so
libmkl_blas95_lp64.a libmkl_scalapack_ilp64.a
libmkl_cdft_core.a libmkl_scalapack_ilp64.so
libmkl_cdft_core.so libmkl_scalapack_lp64.a
libmkl_core.a libmkl_scalapack_lp64.so
libmkl_core.so libmkl_sequential.a
libmkl_def.so libmkl_sequential.so
libmkl_gf_ilp64.a libmkl_vml_avx2.so
libmkl_gf_ilp64.so libmkl_vml_avx.so
libmkl_gf_lp64.a libmkl_vml_cmpt.so
libmkl_gf_lp64.so libmkl_vml_def.so
libmkl_gnu_thread.a libmkl_vml_mc2.so
libmkl_gnu_thread.so libmkl_vml_mc3.so
libmkl_intel_ilp64.a libmkl_vml_mc.so
libmkl_intel_ilp64.so libmkl_vml_p4n.so
libmkl_intel_lp64.a locale
,
jingjingdou
引用回帖:
田山东 at 2012-12-27 21:09:39
我有个程序,里面要用到调用矩阵求逆的子函数,
call ZGETRF( N, N, TA, N, IPIV, INFO )
call ZGETRI( N, TA, N, IPIV, WORK, N, INFO )
linux下,装的interfortran,
/opt/intel/mkl/lib/intel64
...
实话说,我不大懂你所阐述的内容,我只是在windows下用的fortran语言,刚在百度里看了下,好复杂,看不懂。只copy了一个相关的内容:
http://zhidao.baidu.com/question/189009859.html
不晓得有没有用,
lastfreedom
引用回帖:
田山东 at 2012-12-27 21:09:39
我有个程序,里面要用到调用矩阵求逆的子函数,
call ZGETRF( N, N, TA, N, IPIV, INFO )
call ZGETRI( N, TA, N, IPIV, WORK, N, INFO )
linux下,装的interfortran,
/opt/intel/mkl/lib/intel64
...
楼主去这看看,很详细,或者看手册也行
http://software.intel.com/sites/products/mkl/