计算化学公社

 找回密码 Forget password
 注册 Register
Views: 2717|回复 Reply: 1
打印 Print 上一主题 Last thread 下一主题 Next thread

[Fortran] fortran中的do循环得到的一个有很多值的数,在do之外应该怎么用

[复制链接 Copy URL]

66

帖子

0

威望

201

eV
积分
267

Level 3 能力者

跳转到指定楼层 Go to specific reply
楼主
我在程序中调用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


20

帖子

0

威望

5188

eV
积分
5208

Level 6 (一方通行)

2#
发表于 Post on 2020-12-31 12:20:53 | 只看该作者 Only view this author
本帖最后由 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的数组
复制代码



个人网站:东方红茶馆

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-13 05:48 , Processed in 0.139180 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list