标题:版主求救!关于fortran有限元编程
只看楼主
lengend
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-10-21
 问题点数:0 回复次数:7 
版主求救!关于fortran有限元编程
最近在学习有限元,下面是书上fortran语言编写的一段程序,以前没学过fortran看不懂,请求版版大人给翻译下,多谢
SUBROUTINE KE(IO,NE,NWE,T,A1,A2,V,EK,BCA)
            DIMENSION B(7),BCA(7,NE),EK(6,6)
            DO 10 I=1,7
            B(I)=BCA(I,IO)
10            CONTINUE
            A=A1/B(7)*T
            DO 20 I=1,3
            DO 20 J=I,3
             I1=2*I
             J1=2*J
             EK(I1-1,J1-1)=A*(B(I)*B(J)+A2*B(I+3)*B(J+3))
             EK(I1-1,J1)=A*(V*B(I)*B(J+3)+A2*B(I+3)*B(J))
             EK(I1,J1-1)=A*(V*B(I+3)*B(J)+A2*B(I)*B(J+3))
             EK(I1,J1)=A*(B(I+3)*B(J+3)+A2*B(I)*B(J))
20            CONTINUE
            DO 30 I=3,6
             DO 30 J=1,I
              EK(I,J)=EK(J,I)
30            CONTINUE
            IF(NWE.EQ.0) GOTO 60
            WRITE(6,40) IO
40            FORMAT(/1X,'EK NE='I5)
            WRITE(6,50) EK
50            FORMAT(1X,6E11.4)
60            RETURN
            END
搜索更多相关主题的帖子: 有限元 fortran 版主 
2008-10-21 17:57
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
偶也没学过…………
2008-10-21 21:05
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
得分:0 
不会... 只是在看计算方法的时候,例子用的是fortran,其他都没接触过.     数学计算的话,还是要学学fortran.

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2008-10-21 23:39
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
得分:0 
FORTRAN是科学计算语言。很多年不碰它了(87年用)。。。你怎么不去FORTRAN论坛?
试着说说:
SUBROUTINE KE(IO,NE,NWE,T,A1,A2,V,EK,BCA)       *子例行程序KE(可以CALL调用)
            DIMENSION B(7),BCA(7,NE),EK(6,6)    *定义1个一维数组和2个两维数组
            DO 10 I=1,7                         *循环,10是下面的标号
            B(I)=BCA(I,IO)                      *给一维数组B(I)赋值。但BCA函数我没见过,外部函数?
10            CONTINUE                          *未完成7次循环继续
            A=A1/B(7)*T                         *表达式计算结果赋值给A
            DO 20 I=1,3                         *下面是双重循环——外循环
            DO 20 J=I,3                         *内循环
             I1=2*I
             J1=2*J
             EK(I1-1,J1-1)=A*(B(I)*B(J)+A2*B(I+3)*B(J+3)) *2维数组通过表达式计算后赋值
             EK(I1-1,J1)=A*(V*B(I)*B(J+3)+A2*B(I+3)*B(J))
             EK(I1,J1-1)=A*(V*B(I+3)*B(J)+A2*B(I)*B(J+3))
             EK(I1,J1)=A*(B(I+3)*B(J+3)+A2*B(I)*B(J))
20            CONTINUE                          *循环未完成继续
            DO 30 I=3,6                         *有是一个双重循环
             DO 30 J=1,I
              EK(I,J)=EK(J,I)
30            CONTINUE                          *循环未完成继续
            IF(NWE.EQ.0) GOTO 60                *如果NWE=0 转标号60处
            WRITE(6,40) IO                      *输出IO,6=显示器或打印机,40是表控格式,就是由40标号语句控制输出格式
40            FORMAT(/1X,'EK NE='I5)            *格式说明,似乎1X前多个/
            WRITE(6,50) EK                      *输出EK
50            FORMAT(1X,6E11.4)                 *同上
60            RETURN                            *返回操作系统
            END                                 *程序结束

EK(I1-1,J1-1)=A*(B(I)*B(J)+A2*B(I+3)*B(J+3))
假如I=2,J=3
I1=2*I=4,J1=2*J=6,这样上面的语句就相当于:
EK(3,5)=A*(B(2)*B(3)+A2*B(5)*B(6))
呵呵,就这意思。一维、二维数组你总该知道吧?B(2)就是元素在数组中第二个,EK(3,5)第三行第五列那个元素(行列式)。有限元离不开行列式,甚至需要用到张量(N维数组)。
FORTRAN在计算上得天独厚。

[[it] 本帖最后由 cnhanxiao 于 2008-10-22 04:41 编辑 [/it]]
收到的鲜花
  • ONEPROBLEM2008-10-22 09:35 送鲜花  50朵   附言:好文章
2008-10-22 04:32
lengend
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-10-21
得分:0 
回复 4# cnhanxiao 的帖子
非常有用,多谢!
2008-10-22 08:56
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
得分:0 
[bo][un]cnhanxiao[/un] 在 2008-10-22 04:32 的发言:[/bo]

FORTRAN是科学计算语言。很多年不碰它了(87年用)。。。你怎么不去FORTRAN论坛?
试着说说:
SUBROUTINE KE(IO,NE,NWE,T,A1,A2,V,EK,BCA)       *子例行程序KE(可以CALL调用)
            DIMENSION B(7),BCA(7, ...

87年就接触编程语言了?
朋友,你太厉害了!俺1987年的时候还@$$%%^!$@^%#呢.
2008-10-22 09:31
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
得分:0 
回复 6# ONEPROBLEM 的帖子
呵呵,谢谢版主。
1987年上大学二年级,继BASIC后学的FORTRAN,就是从此喜欢上了电脑和编程。
不过我是业余消遣,因为我的专业跟计算机没关系。

版主的头像真可爱!
2008-10-22 09:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
[bo][un]cnhanxiao[/un] 在 2008-10-22 09:48 的发言:[/bo]

呵呵,谢谢版主。
1987年上大学二年级,继BASIC后学的FORTRAN,就是从此喜欢上了电脑和编程。
不过我是业余消遣,因为我的专业跟计算机没关系。

版主的头像真可爱!


前辈啊 偶87年还没出生呢 现在上大一……
2008-10-22 15:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-239667-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.162439 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved