回 帖 发 新 帖 刷新版面

主题:急改程序

以前从没接触过fortran,看不懂,谁能给解释一下,好让小弟试着用C或者matlab实现同样的功能啊!谢谢先了!!
程序如下:
subroutine seasonality(mx,my,v1,v2,v3,v4,fai0,grdy,suv)
      parameter(ma=1,mb=1)
      dimension v1(mx,my,2),v2(mx,my,2),v3(mx,my,2),v4(mx,my,2)
      dimension suv(mx,my)
      dimension vw1((-ma+1):(mx+ma),(-mb+1):(my+mb),2) !work array
      dimension vw2((-ma+1):(mx+ma),(-mb+1):(my+mb),2) !work array
      dimension vw3((-ma+1):(mx+ma),(-mb+1):(my+mb),2) !work array
      dimension vw4((-ma+1):(mx+ma),(-mb+1):(my+mb),2) !work array
      dimension uv1((-ma+1):(mx+ma),(-mb+1):(my+mb)) !work array
      dimension uv2((-ma+1):(mx+ma),(-mb+1):(my+mb)) !work array
      mc=-ma+1
      md=-mb+1
      do k=1,2
        call processing(mx,my,ma,mb,fai0,grdy,v1(1,1,k),vw1(mc,md,k))
        call processing(mx,my,ma,mb,fai0,grdy,v2(1,1,k),vw2(mc,md,k))
        call processing(mx,my,ma,mb,fai0,grdy,v3(1,1,k),vw3(mc,md,k))
        call processing(mx,my,ma,mb,fai0,grdy,v4(1,1,k),vw4(mc,md,k))
      enddo
      do 10 j=-mb+1,my+mb
      do 10 i=-ma+1,mx+ma
        a1=(vw1(i,j,1)-vw2(i,j,1))**2
        b1=(vw1(i,j,2)-vw2(i,j,2))**2
        uv1(i,j)=a1+b1
        a2=(vw3(i,j,1)+vw4(i,j,1))**2
        b2=(vw3(i,j,2)+vw4(i,j,2))**2
        uv2(i,j)=a2+b2
 10   continue
      do 20 j=1,my
      do 20 i=1,mx
        su1=4.*uv1(i,j)+uv1(i-1,j)+uv1(i+1,j)+uv1(i,j-1)+uv1(i,j+1)
        su2=4.*uv2(i,j)+uv2(i-1,j)+uv2(i+1,j)+uv2(i,j-1)+uv2(i,j+1)
        suv(i,j)=2.*sqrt(su1)/sqrt(su2)
 20   continue
      return
      end

回复列表 (共3个回复)

沙发

妈呀,这么长一段代码,我看要解释个把小时吧?

论坛不是免费劳动力市场。

我希望大家能提一些比较具体的问题。当然,首先,应该自己去尝试。

板凳

而且还有调用某个子程序processing, 弄不好解释一天.
楼主有C语言的底可以快速翻翻fortran的书,只是想看明白还是比较容易的.

3 楼

谢谢大家  翻了一天的书 算是弄明白了!

我来回复

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