回 帖 发 新 帖 刷新版面

主题:求助adams模型中用fortran语言编写子程序的一个问题

各位大侠您好,我是一位刚刚使用fortran语言编写程序的菜鸟。因为要在自己建立的adams模型中通过fortran语言编写关于橡胶元件用户子程序。因为有一段程序已经通过matlab的m文件仿真过了,现在参照已有程序改写成fortran语言。但其中有一段程序不知道如何编写。
   用matlab编写的程序为:
   t=0:0.0001:1;%%%%时间
   x=A*sin(2*pi*B*t);%%%%位移
   n=length(x);%%%%作图点个数 
   for k=2:n
     if k>2
        [color=FF0000]if(x(k-1)>=x(k) & x(k-1)>=x(k-2)) | (x(k-1)<=x(k) & x(k-1)<=x(k-2));[/color]
            xs=x(k-1);
            ffs=ff(k-1);
        end
     end
    ...
   end 
而在fortran语言中,其仿真次数不能提前得知,只是按照时间依次进行。所以不知道如何保存最近两次仿真计算得到的结果,用于后面的比较运算。因为小弟周围没有使用fortran语言经历的熟人,不知道该求助于谁,现在也特别着急。盼望各位大侠百忙之中能给予及时指导。

回复列表 (共2个回复)

沙发

顶啊,我现在也碰到这问题了,不知道楼主解决没?

板凳

翻译?

声明部分
integer i
real :: t(10001) = 0.00001*(/i-1, i=1:10001/)
real :: x(10001)
real B, pi, A
real xs, ffs
integer n, k

程序代码部分
x=A*sin(2*pi*B*t) !位移
n=10001 !作图点个数

do k=2,n
     if(k>2) then
        if(x(k-1)>=x(k).AND.x(k-1)>=x(k-2)).OR.(x(k-1)<=x(k)&
            .AND.x(k-1)<=x(k-2)) then
            xs=x(k-1)
            ffs=ff(k-1)
        end if
     end if
    ...
end do

如果事先不知道数组大小可以用allocatable定义数组。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册