声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 11789|回复: 42

[Fortran] [分享]精细时程积分FORTRAN源程序

[复制链接]
发表于 2005-8-7 16:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
主程序main.f90,搞了两个例子进行调用,例子是钟院士那篇文献里的,附后的文献里有的。一个程序是reciseTIM.f90,里面包含了精细时程积分的子程序。

最后的PDF文件是程序说明.

主程序Program Main
  1. use PreciseTimeIntegration

  2. Real(8), Dimension(8, 8) :: K,M,C,INVK
  3. Real(8), Dimension(8, 4) :: R,U,V,A
  4. Real(8) dt
  5. dt=1

  6. R=0
  7. C=0
  8. C(7,7)=5
  9. C(7,8)=-5
  10. C(8,7)=-5
  11. C(8,8)=5
  12. DO i=1,8
  13. M(i,i)=8
  14. END DO
  15. DO i=1,7
  16. K(i,i+1)=-4
  17. k(i+1,i)=-4
  18. END DO
  19. DO i=2,7
  20. k(i,i)=8
  21. END DO
  22. K(1,1)=4
  23. K(8,8)=4
  24. ! WRITE (*,*) M
  25. ! WRITE (*,*) K
  26. ! WRITE (*,*) C
  27. ! INVK=INV(K,8)
  28. ! STOP

  29. U=0
  30. U(8,1)=10
  31. V=0
  32. A=0
  33. call PreciseTIM (M, C, k, R, 8, 4, dt, U, V, A)
  34. write (*,*) U
  35. ! write (*,*) V
  36. ! write (*,*) A

  37. end
复制代码


本程序来自http://bbs.tongji.edu.cn/bbsanc.php?path=%2FPersonalCorpus%2FA%2FABAYA%2FD4F47E4DC%2FA41E7F755
回复
分享到:

使用道具 举报

 楼主| 发表于 2005-8-7 16:21 | 显示全部楼层
精细时程积分文件:

PreciseTIM.f90

!-----------------------------------------------------------------
    Module PreciseTimeIntegration

    Contains

  1. !//////////////////////////////////////////////////////////////
  2.     Subroutine PreciseTIM (M, G, K, R, N, Nt, tao, X, XX, XXX)
  3. !//////////////////////////////////////////////////////////////
  4. !   精细时程积分法程序,
  5. !       ABAYA,同济大学建筑工程系,2001.7.20
  6. !!//////////////////////////////////////////////////////////////
  7.     Real*8     M(N,N), G(N,N), K(N,N), R(N,Nt), X(N,Nt), &
  8.                XX(N,Nt), XXX(N,Nt), H(2*N,2*N), T(2*N,2*N), &
  9.                R0(2*N,Nt), R1(2*N,Nt), B(N,N), C(N,N), tao
  10.     Call CalH (M, G, K, N, Nt, H, B, C)
  11.     Call CalT (H, tao, N, T)
  12.     Call CalR0R1 (R, R0, R1, N, Nt)
  13.     Call CalX (T, H, R, R0, R1, tao, N, Nt, M, G, B, C, X, XX, XXX)
  14.     End Subroutine PreciseTIM
  15. !//////////////////////////////////////////////////////////////
  16.     Subroutine CalH (M, G, K, N, Nt, H, B, C)
  17.     Real*8     M(N,N), G(N,N), K(N,N), R(N,Nt), INVM(N,N), &
  18.                A(N,N), B(N,N), C(N,N), D(N,N), H(2*N,2*N)
  19.     INVM=INV(M,N)
  20.     A=-0.5*Matmul(INVM,G)
  21.     B=0.25*Matmul(Matmul(G,INVM),G)-K
  22.     C=-0.5*Matmul(G,INVM)
  23.     D=INVM
  24.     H(1:N,1:N)=A
  25.     H(N+1:2*N,1:N)=B
  26.     H(1:N,N+1:2*N)=D
  27.     H(N+1:2*N,N+1:2*N)=C
  28.     End Subroutine CalH
  29. !//////////////////////////////////////////////////////////////
  30.     Subroutine CalT (H, tao, N, T)
  31.     Real*8, Dimension(2*N,2*N) :: H, T, Ta, I
  32.     Real*8 tao, dt
  33.     Integer m
  34.     m=2**20
  35.     dt=tao/m
  36.     I=0; T=0
  37.     Do j=1,2*N
  38.     I(j,j)=1
  39.     End do
  40.     Ta=Matmul(dt*H,(I+0.5*dt*H))
  41.     Do j=1,20
  42.     Ta=2*Ta+Matmul(Ta,Ta)
  43.     End do
  44.     T=I+Ta
  45.     End Subroutine CalT
  46. !//////////////////////////////////////////////////////////////
  47.     Subroutine CalR0R1 (R, R0, R1, N, Nt)
  48.     Real*8 R(N,Nt), R0(2*N,Nt), R1(2*N,Nt)
  49.     R0=0; R1=0;
  50.     R0(N+1:2*N,:)=R
  51.     Do i=2,Nt
  52.     R1(N+1:2*N,i-1)=R(:,i)-R(:,i-1)
  53.     End do
  54.     End Subroutine CalR0R1
  55. !//////////////////////////////////////////////////////////////
  56.     Subroutine CalX (T, H, R, R0, R1, tao, N, Nt, M, G, B, C, X, XX, XXX)
  57.     Real*8     X(N,Nt), XX(N,Nt), XXX(N,Nt), H(2*N,2*N), &
  58.               T(2*N,2*N), R0(2*N,Nt), R1(2*N,Nt), V(2*N,Nt), &
  59.     p(N,Nt), q(N,Nt), R(N,Nt), B(N,N), C(N,N), M(N,N), &
  60.     G(N,N), tao, INVH(2*N,2*N), index
  61.    
  62.     q=X
  63.     p=Matmul(M,XX)+0.5*Matmul(G,X)
  64.     V(1:N,:)=q
  65.     V(N+1:2*N,:)=p
  66.     index=0
  67.     Do i=1,2*N
  68.     Do j=1,Nt
  69.     IF (ABS(R0(i,j)).GT.1E-8) THEN
  70.     index=1; GOTO 10
  71.     END IF
  72.     End do
  73.     End do
  74. 10  If (abs(index).gt.1e-8) then
  75.     INVH=INV(H,2*N)
  76.     Do i=2,Nt
  77.     WRITE (*,'("***********   LOAD STEP: ",I5,"   ***********")') i
  78.     V(:,i)=Matmul(T,(V(:,i-1)+Matmul(INVH,(R0(:,i-1)+ &
  79.            Matmul(INVH,R1(:,i-1))))))-Matmul(INVH &
  80.            ,(R0(:,i-1)+Matmul(INVH,R1(:,i-1))+ &
  81.            tao*R1(:,i-1)))
  82.     End do
  83.     Else
  84.     Do i=2,Nt
  85.     WRITE (*,'("***********   LOAD STEP: ",I5,"   ***********")') i
  86.     V(:,i)=Matmul(T,V(:,i-1))
  87.     End do
  88.     End if

  89.     q=V(1:N,:)
  90.     p=V(N+1:2*N,:)  
  91.     Do i=1,Nt
  92.     X(:,i)=q(:,i)
  93.     XX(:,i)=Matmul(INV(M,N),p(:,i))-0.5*Matmul(Matmul(INV(M,N),G),X(:,i))
  94. XXX(:,i)=Matmul(Matmul(INV(M,N),B),X(:,i))-0.5*Matmul(Matmul(INV(M,N) &
  95. ,G),XX(:,i))+Matmul(Matmul(INV(M,N),C),p(:,i))+Matmul(INV(M,N),R(:,i))
  96.     End do
  97.     End Subroutine CalX
  98. !//////////////////////////////////////////////////////////////
  99.     Function INV (A, N)
  100.     Use Numerical_Libraries
  101.     REAL*8, DIMENSION(N,N) :: A, INV
  102.     INV=0
  103.     CALL DLINRG (N, A, N, INV, N)
  104.     End Function INV
  105. !//////////////////////////////////////////////////////////////
复制代码

    End Module PreciseTimeIntegration
发表于 2005-8-7 18:54 | 显示全部楼层
赞一个先,
自己也曾编过线性的wilson时程分析程序.
可以解决剪切层模型问题.没有作验证:)
发表于 2005-8-8 15:35 | 显示全部楼层
对此比较感兴趣,先睹为快
发表于 2005-8-9 14:27 | 显示全部楼层
谢谢了,感谢共享这么好的源代码。
发表于 2005-8-9 21:23 | 显示全部楼层
谢谢共享
发表于 2005-8-16 10:37 | 显示全部楼层
pdf的文档怎么无法下载?
发表于 2005-8-22 20:39 | 显示全部楼层
使用marc进行有限元分析时一定要用fortran语言进行有关的编程吗?可不可以用C语言
发表于 2005-8-22 20:51 | 显示全部楼层
Marc的接口是Fortran的,会C语言学Fortran不难
Marc各个版本与fortran版本搭配如下:

marc2003需要fortran6.0以上版本
marc2000以及marc2001需要fortran5.0以上版本
发表于 2005-8-23 20:26 | 显示全部楼层
ding
发表于 2005-8-27 22:39 | 显示全部楼层
哈哈,找拉好久的拉
好!!!!
发表于 2005-8-28 16:09 | 显示全部楼层
非常不错的东西,感谢搂住的热心
发表于 2005-8-30 17:22 | 显示全部楼层
好咚咚
发表于 2005-8-30 20:40 | 显示全部楼层
先看一下,是否有用
发表于 2005-9-17 01:34 | 显示全部楼层
xiexie
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-13 00:49 , Processed in 0.067747 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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