计算化学公社

标题: fortran中的do循环得到的一个有很多值的数,在do之外应该怎么用 [打印本页]

作者
Author:
wulalalana    时间: 2020-12-30 17:11
标题: fortran中的do循环得到的一个有很多值的数,在do之外应该怎么用
我在程序中调用evbas得到 v 值,然后让  vev= vapang+ v ,代码如下
       call evbas(r,v)
         vev= vapang+ v

但是,evbas子程序中v 是通过下面代码来计算的,所以v应该是有227个值,但是我do循环结束后只有一个v值输出,如果我需要让每一个 v 值都与vapang相加得到多个vev值,这个应该怎么办呢?
      do k=1,227
        v= c(k)*b(k)
     enddo



作者
Author:
St_Maxwell    时间: 2020-12-31 12:20
本帖最后由 St_Maxwell 于 2020-12-31 12:23 编辑

要计算多个v,那么显然v应该是数组啊。所以你要把v和vev定义为数组,并且向子程序传递数组。(传数组的方法见http://fcode.cn/guide-103-1.html
  1. subroutine evbas(r, v)
  2.     sometype :: r
  3.     real, dimension(:) :: v

  4.     do k=1,227
  5.         v(k) = c(k)*b(k)
  6.     enddo
  7.     ! or v = c * k

  8. end subroutine evbas
复制代码

调用evbas的地方也不需要太大改动

  1. call evbas(r, v)
  2. vev = vapang + v ! vev 和 v 都是大小为227的数组
复制代码








欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3