找回密码
 注册
查看: 2508|回复: 4

求runge-kutta 法程序,多谢

[复制链接]
发表于 2007-3-13 10:30:55 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?注册

x
请各位大师帮忙,再次感谢[br][br][以下内容由 bunana 在 2007年03月14日 09:14pm 时添加] [br]
伤心啊,怎么没人理呢
 楼主| 发表于 2007-3-14 21:29:11 | 显示全部楼层

求runge-kutta 法程序,多谢

我自己编了一个程序,可是调不通, 用的是用具有TVD性质二阶Runge-Kutta方法进行时间离散。
先谢了
发表于 2007-5-14 16:59:41 | 显示全部楼层

求runge-kutta 法程序,多谢

地方经过可是搭街坊卡
发表于 2007-5-21 17:10:11 | 显示全部楼层

求runge-kutta 法程序,多谢

这个方法现在用的人倒是比较多,我知道等离子方面的求解有很多都用这个方法,http://w3.pppl.gov/topdac/overview.htm网站上的orbit程序就是用这个方法求解的,你可以把它的源代码(免费的)下载下来看看
发表于 2007-5-22 08:00:23 | 显示全部楼层

求runge-kutta 法程序,多谢

C ***************************************************************
          SUBROUTINE RK3TVD_ONE_STEP(T,DT,X,M,F,RHS,TMP)
          EXTERNAL F
          DIMENSION X(M),RHS(M),TMP(M)
          PARAMETER(C13=1.0/3.0,C23=2.0/3.0)
          TT = T
          CALL F(TT,X,M,RHS)
          TMP = X
          X = X + DT*RHS
          TT = T + DT
          CALL F(TT,X,M,RHS)
          X = 0.75*TMP + 0.25*(X+DT*RHS)
          CALL F(TT,X,M,RHS)
          X = C13*TMP + C23*(X + DT*RHS)
          T = T + DT
          RETURN
          END
C ***************************************************************
          SUBROUTINE RK3_ONE_STEP(T,DT,X,M,F,RHS,TMP,TMP1)
          EXTERNAL F
          DIMENSION X(M),RHS(M),TMP(M),TMP1(M)
          PARAMETER(C13=1.0/3.0,C23=2.0/3.0)
          TT = T
          CALL F(TT,X,M,RHS)
          TMP = X
          X = X + C13*DT*RHS
          TMP1 = X
          TT = T + C13*DT
          CALL F(TT,X,M,RHS)
          X = TMP + C23*DT*RHS
          TT = T + C23*DT
          CALL F(TT,X,M,RHS)
          X = 0.25*(TMP+3.0*TMP1)+0.75*DT*RHS
          T = T + DT
          RETURN
          END
C ***************************************************************
          SUBROUTINE RKJameson_ONE_STEP(T,DT,X,M,F,RHS,TMP)
          EXTERNAL F
          DIMENSION X(M),RHS(M),TMP(M)
          PARAMETER(C13=1.0/3.0)
          TT = T
          CALL F(TT,X,M,RHS)
          TMP = X
          X = X + C13*DT*RHS
          TT = T + C13*DT
          CALL F(TT,X,M,RHS)
          X = TMP + 0.5*DT*RHS
          TT = T + 0.5*DT
          CALL F(TT,X,M,RHS)
          X = TMP + DT*RHS
          T = T + DT
          RETURN
          END
C ***************************************************************
          SUBROUTINE RKELiu_ONE_STEP(T,DT,X,M,F,RHS,TMP)
          EXTERNAL F
          DIMENSION X(M),RHS(M),TMP(M)
          TT = T
          CALL F(TT,X,M,RHS)
          TMP = X
          X = X + 0.5*DT*RHS
          TT = T + 0.5*DT
          CALL F(TT,X,M,RHS)
          X = TMP + 0.5*DT*RHS
          CALL F(TT,X,M,RHS)
          X = TMP + DT*RHS
          T = T + DT
          RETURN
          END
[br][br][以下内容由 caiqd 在 2007年05月22日 08:04am 时添加] [br]
程序很简单,分别是TVD-RK, 三阶RK,Jameson的RK,以及鄂维南和刘健国提出的三阶RK。都是积分一步,需要提供子程序F(T,X,M,RHS),T是时间,M为常微分方程的阶数,X是当前函数值,RHS是方程右端项。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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