Fortran Coder

查看: 8763|回复: 3
打印 上一主题 下一主题

[数值问题] 一个有关提高运算速度的问题

[复制链接]

801

帖子

2

主题

0

精华

大宗师

F 币
3804 元
贡献
2273 点
楼主
发表于 2015-5-20 20:59:56 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
  PROGRAM test
      IMPLICIT NONE
      REAL, ALLOCATABLE :: a(:),b(:),hhs(:)
      INTEGER :: i, z, j, k, tn, num, numm
      REAL    :: summ, cos2, r1, q1, w1
      character(160):: filename
      Real(8) time
      Integer(4) time0, time1, dtime
      
       num=100
       numm=num*num
       tn=1000
       ALLOCATE(a(num),b(num),hhs(numm))
      Print*, 'Running...'
      Call system_clock(time0)
      OPEN(10, FILE='output.dat',status='unknown' )

      Do i=1,tn       
      write(filename,'(i6)') i
      Open(200,File="D:\x\"//trim(adjustl(filename))//'.dat',status='old')  
      READ(200,*) a
      close(200)
      Open(300,File="D:\y\"//trim(adjustl(filename))//'.dat',status='old')  
      READ(300,*) b
      close(300)
      z=0
      summ=0.0
      r1 = 20
      do  j = 1, num 
      do k = 1, num
      z=z+1
      q1 = b(j)-a(k)
      cos2 = (r1*q1+r1*r1+q1*q1)**2/3
      w1=sqrt(q1*q1+r1*r1)
      if (w1.GT.0.and.w1.LE.20) then
      hhs(z)=cos2/(w1*w1*w1)
      endif
      enddo
      enddo
      summ=sum(hhs)
      WRITE(10,'(1X,F12.6)') summ
      enddo
      DEALLOCATE(a,b)
      close(10)
      Call system_clock(time1, dtime)
      time = 1D0*(time1-time0)/dtime
      Write (*, '(a7,f16.7)') 'Time = ', time
      END PROGRAM

评分

参与人数 1F 币 +9 贡献 +9 收起 理由
fcode + 9 + 9 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-17 16:43

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表