24小时热门版块排行榜    

查看: 1856  |  回复: 7

田山东

捐助贵宾 (著名写手)

[求助] fortran数组输出,行与列请教

do j1=1,n
         do j2=1,n
         write(2,*)j1,j2,real(H0(j1,j2)         
         enddo
         enddo
数组H0(N,N),这样输出的话,j1是行指标,j2是列指标吗?我想按照行输出,先输出第1行第j2列,然后依次输出。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

everythinghasitsseason.enjoyyourlife.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jingjingdou

银虫 (小有名气)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
田山东: 金币+2, ★★★很有帮助 2012-12-27 15:10:02
xzhdty: 金币+1, 谢谢参与 2012-12-27 21:17:16
这是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) ”是不是少了个括号,还是另有其他含义?
顺一点,一点就好!
2楼2012-12-27 14:21:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
2楼: Originally posted by 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)是第一列第二行了。
很奇怪,很纠结!!
everythinghasitsseason.enjoyyourlife.
3楼2012-12-27 15:11:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

多谢,刚刚仔细检查了一下,我错了。你说的是对的。
everythinghasitsseason.enjoyyourlife.
4楼2012-12-27 15:14:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jingjingdou

银虫 (小有名气)

引用回帖:
2楼: Originally posted by 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里面,这个读写顺序应该就是上面那样没错。
顺一点,一点就好!
5楼2012-12-27 16:13:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
2楼: Originally posted by 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
everythinghasitsseason.enjoyyourlife.
6楼2012-12-27 21:09:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jingjingdou

银虫 (小有名气)

引用回帖:
6楼: Originally posted by 田山东 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
不晓得有没有用,
顺一点,一点就好!
7楼2012-12-28 09:05:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lastfreedom

木虫 (小有名气)

引用回帖:
6楼: Originally posted by 田山东 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/
8楼2012-12-28 14:07:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 田山东 的主题更新
信息提示
请填处理意见