免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ help
最近访问板块 发新帖
查看: 1383 | 回复: 1
打印 上一主题 下一主题

help [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-10 21:04 |只看该作者 |倒序浏览
编译一个程序,给出下面的提示:
/opt/mpich-1.2.5/gm_gcc/bin/mpicc abc.o farg.o -O -L/home/user/shaolxh/aztec64-gm/lib -laztec  -lm -L/opt/mpich-1.2.5/gm_gcc/lib  /usr/lib/gcc-lib/x86_64-pc-linux/3.2.2/libg2c.a -o abc.gm
/usr/lib/gcc-lib/x86_64-pc-linux/3.2.2/../../../../lib64/crt1.o(.text+0x21): In function `_start':
: undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [abc] Error 1
该如何解决?
程序abc.f
      program abc
      implicit none
        include "az_aztecf.h"
        include "mpif.h"
        integer ierror,mycpu,i,j,k,it

        integer proc_config(0:AZ_PROC_SIZE),N_update,update(0:40000)
        integer ks,ke,NC(0:40000),IJ(0:20000,0:2000),A2(0:20000,0:10),
     &        options(0:AZ_OPTIONS_SIZE),extern_index(0:40000)
        integer nrow,inode_N_update(0:47),bindx(0:40000),external(0:40000)
        integer update_index(0:40000),data_org(0:40000)
        double precision A1(0:20000,0:10),xs(0:20000),xtemp(0:20000),
     &     b(0:20000),val(0:20000),x(0:20000),f(0:20000),
     &     params(0:AZ_PARAMS_SIZE),status(0:AZ_STATUS_SIZE),
     &     pusi(0:400,0:400),theta(0:400,0:400),kesi(0:400,0:400),ss,
     &     starttime,endtime,si,so,d,ds,dt,dfai,pi,w,error1,error2,Pr,E,
     &     R,lpusi(0:400,0:400),ltheta(0:400,0:400),lkesi(0:400,0:400)
        integer ns,nfai,time,times,n
        parameter( pi=3.1415926535897932385d0)
        common ds,dt,dfai,si,so,d,E,Pr,R



       
        call MPI_INIT(ierror)
        call MPI_COMM_SIZE(MPI_COMM_WORLD,mycpu,ierror)
        starttime=MPI_WTIME(ierror)
      R=13d0
        E=0.00132d0
        Pr=0.23d0
      si=0.35d0
        so=0.98d0
        d=so-si
        ss=2*pi*d
        ns=25
        ds=d/ns
        dt=0.0001d0
        times=anint(3/dt)
c  dfai改的话200要改,subroutine readdata中的200也要改
        dfai=pi/60
        nfai=anint(2*pi/dfai )
        w=pi
        error1=0.0d0
        error2=0.0d0
200   format(120(e20.10,4x))
        call xishujuzhen(A1,A2,nfai,ns)
            
        do i=0,ns
          do j=0,nfai-1
             pusi(i,j)=(dsin(pi*i*ds/d))**2*dcos(j*dfai)
             lpusi(i,j)=pusi(i,j)
             theta(i,j)=(dsin(pi*i*ds/d))**2*dcos(j*dfai)
             ltheta(i,j)=theta(i,j)
             kesi(i,j)=dcos(j*dfai)*(2*(pi/d)**2*dcos(2*pi*i*ds/d)
     &                            +pi/((si+i*ds)*d)*dsin(2*pi*i*ds/d)
     &                            -1/(si+i*ds)**2*(dsin(pi*i*ds/d))**2 )
             lkesi(i,j)=kesi(i,j)
        enddo
        enddo
      
             do 20 time=0,times

        call rightf(F,ns,nfai,time,pusi,kesi,theta,
     &             lpusi,ltheta,lkesi)
        do i=0,ns
           do j=0,nfai-1
               lpusi(i,j)=pusi(i,j)
               ltheta(i,j)=theta(i,j)
               lkesi(i,j)=kesi(i,j)
              enddo
        enddo

        call AZ_SET_PROC_CONFIG(proc_config,MPI_COMM_WORLD)
        nrow=(3*ns-1)*nfai

        call AZ_READ_UPDATE(N_update,update,proc_config,nrow,1,0)
        inode_N_update(0)=N_update
        do         i=1,mycpu-1
            if (proc_config(AZ_node).eq.i)then
                call MPI_SEND(N_update,1,MPI_INTEGER,0,100+i,
     &                      MPI_COMM_WORLD,ierror)
c                write(*,*)N_update,proc_config(AZ_node)
            endif
        enddo

        if(proc_config(AZ_node).eq.0)then
          do i=1,mycpu-1
             call MPI_RECV(it,1,MPI_INTEGER,i,i+100,MPI_COMM_WORLD,
     &                   status,ierror)
             inode_N_update(i)=it
          enddo
        endif



      do i=0,N_update-1
                   NC(update(i))=0
          do j=0,20
         if(A1(update(i),j).ne.0.and.A2(update(i),j).ne.update(i))then       
                 NC(update(i))=NC(update(i))+1
                 IJ(update(i),NC(update(i))-1)=A2(update(i),j)
           endif       
           enddo
c        if(proc_config(AZ_node).eq.1)then
c             write(15,*)NC(update(i)),update(i),n_update,i
c        endif
        enddo
c        close(15)



       bindx(0)=N_update+1

        do i=0,N_update-1,1
           bindx(i+1)=NC(update(i))+bindx(i)
           ks=bindx(i)
           ke=bindx(i+1)-1
           do k=ks,ke
             bindx(k)=IJ(update(i),k-ks)
           enddo

         do j=0,20
              if(A2(update(i),j)==update(i))then
                     val(i)=A1(update(i),0)
              endif
           enddo

           do k=ks,ke
                   val(k)=A1(update(i),k-ks+1)
           enddo
        enddo
       

        call MPI_BARRIER(MPI_COMM_WORLD,ierror)

        call AZ_transform(proc_config,external,bindx,val,update,
     &                  update_index,extern_index,data_org,
     &                  N_update,0,0,0,0,AZ_MSR_MATRIX)
        call AZ_defaults(options,params)
      do  i=0,N_update-1
            x(update_index(i))=0.0
            b(update_index(i))=F(update(i))
        enddo

c        options(AZ_solver)=AZ_bicgstab
        options(AZ_solver)=AZ_gmres
c        options(AZ_solver)=AZ_tfqmr

        options(AZ_max_iter)=1000
        options(AZ_output)=AZ_last
        options(AZ_precond)=AZ_ls
        options(AZ_poly_ord)=6
        options(AZ_scaling)=AZ_row_sum
        params(AZ_tol)=1.0d-12

        call AZ_solve(x,b,options,params,0,bindx,0,0,
     &              0,val,data_org,status,proc_config)
        call AZ_invorder_vec(x,data_org,update_index,0,xtemp)
        do i=0,mycpu-1
         
        call MPI_gather(xtemp,N_update,MPI_DOUBLE_PRECISION,
     &                x,N_update,MPI_DOUBLE_PRECISION,
     &                i,MPI_COMM_WORLD,ierror)

        enddo
c把方程的解转换成pusi函数
        do i=0,ns
           do j=0,nfai-1
             kesi(i,j)=x(i*nfai+j)
         enddo
        enddo
      do i=1,ns-1
           do j=0,nfai-1
              pusi(i,j)=x((ns+1)*nfai+(i-1)*nfai+j)
              theta(i,j)=x(2*ns*nfai+(i-1)*nfai+j)
           enddo
        enddo
        do j=0,nfai-1
           pusi(0,j)=0
           pusi(ns,j)=0
           theta(0,j)=0
           theta(ns,j)=0
        enddo
c计算误差
      if(proc_config(AZ_node)==0)then
        open(11,file='pusi.dat')
        open(13,file='theta.dat')
        open(12,file='pusierror.dat')
        open(14,file='thetaerror.dat')
      do i=1,ns-1
           do j=0,nfai-1
             error1=error1+ds*dfai*dt/(ss*(time+1)*dt)*(pusi(i,j)-
     &         (dsin(pi*i*ds/d))**2*dcos(j*dfai)*dcos(w*(time+1)*dt))**2
             error2=error2+ds*dfai*dt/(ss*(time+1)*dt)*(theta(i,j)-
     &         (dsin(pi*i*ds/d))**2*dcos(j*dfai)*dcos(w*(time+1)*dt))**2
           enddo
        enddo
          if(mod(time,10)==0)then
              write(12,*)dsqrt(error1),(time+1)*dt
              write(14,*)dsqrt(error2),(time+1)*dt
          endif

          if(mod(time,1000)==0)then
            write(11,*)'time=   ',(time+1)*dt
            write(13,*)'time=   ',(time+1)*dt
            do i=1,ns-1
                write(11,200)(pusi(i,j),j=0,nfai-1)
                write(13,200)(theta(i,j),j=0,nfai-1)
            enddo
            write(11,*)'=========================================='
            write(13,*)'=========================================='
                do i=1,ns-1
               write(11,200)((dsin(pi*i*ds/d))**2*dcos(j*dfai)
     &                             *dcos(w*(time+1)*dt),j=0,nfai-1)
               write(13,200)((dsin(pi*i*ds/d))**2*dcos(j*dfai)
     &                             *dcos(w*(time+1)*dt),j=0,nfai-1)
            enddo

            write(11,*)'-----------------------error--------------------'
            write(13,*)'---------------------------------------------'
                write(11,*)'error=   ',dsqrt(error1)
                write(13,*)'error=   ',dsqrt(error2)
          endif
        endif
       
20    continue
        endtime=MPI_WTIME(ierror)
        write(11,*)endtime-starttime
        call MPI_FINALIZE(ierror)
        end
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc1
      subroutine xishujuzhen(A1,A2,nfai,ns)
        implicit none
        double precision si,s,ds,dfai,dt,pi,A1(0:20000,0:20),
     &                 E,so,d,Pr,R
        common ds,dt,dfai,si,so,d,E,Pr,R
        parameter( pi=3.1415926535897932385d0)
        integer i,j,n,nfai,ns,A2(0:20000,0:20)
       
             do i=0,20000
           do j=0,20
              A1(i,j)=0
              A2(i,j)=0
           enddo
        enddo
        n=nfai
        i=0
      do j=0,nfai-1
           A1(j,0)=1
           A2(j,0)=j
           A1(j,1)=-2/ds**2
           A2(j,1)=(ns+1)*n+j
        enddo

        do i=1,ns-1
        do j=0,nfai-1

        A1(i*n+j,0)=1+dt*E*(2/((si+i*ds)*dfai)**2+2/ds**2)
        A2(i*n+j,0)=i*n+j

        A1(i*n+j,1)=-dt*E/((si+i*ds)*dfai)**2
      A1(i*n+j,2)=-dt*E/((si+i*ds)*dfai)**2
      A1(i*n+j,3)=dt/(1-(si+i*ds)**2)/dfai
      A1(i*n+j,4)=-dt/(1-(si+i*ds)**2)/dfai
      A1(i*n+j,5)=dt*R/(2*dfai)
      A1(i*n+j,6)=-dt*R/(2*dfai)

        if(j==0)then
        A2(i*n+j,1)=i*n+n-1
        A2(i*n+j,2)=i*n+j+1
        A2(i*n+j,3)=(ns+1)*n+(i-1)*n+n-1
        A2(i*n+j,4)=(ns+1)*n+(i-1)*n+j+1
        A2(i*n+j,5)=2*ns*n+(i-1)*n+n-1
        A2(i*n+j,6)=2*ns*n+(i-1)*n+j+1
        elseif(j==nfai-1)then
        A2(i*n+j,1)=i*n+j-1
        A2(i*n+j,2)=i*n
        A2(i*n+j,3)=(ns+1)*n+(i-1)*n+j-1
        A2(i*n+j,4)=(ns+1)*n+(i-1)*n
        A2(i*n+j,5)=2*ns*n+(i-1)*n+j-1
        A2(i*n+j,6)=2*ns*n+(i-1)*n
        else
        A2(i*n+j,1)=i*n+j-1
        A2(i*n+j,2)=i*n+j+1
        A2(i*n+j,3)=(ns+1)*n+(i-1)*n+j-1
        A2(i*n+j,4)=(ns+1)*n+(i-1)*n+j+1
        A2(i*n+j,5)=2*ns*n+(i-1)*n+j-1
        A2(i*n+j,6)=2*ns*n+(i-1)*n+j+1
        endif


         
        A1(i*n+j,7)=-dt*E/(ds**2)+dt*E/((si+i*ds)*2*ds)
        A2(i*n+j,7)=(i-1)*n+j
        A1(i*n+j,=-dt*E/(ds**2)-dt*E/((si+i*ds)*2*ds)
        A2(i*n+j,=(i+1)*n+j
        enddo
        enddo
        i=ns
        do j=0,n-1
           A1(ns*n+j,0)=1
           A2(ns*n+j,0)=ns*n+j
           A1(ns*n+j,1)=-2/ds**2
           A2(ns*n+j,1)=(ns+1)*n+(ns-2)*n+j
        enddo
cc  第二个方程
      do i=1,ns-1
        do j=0,nfai-1
        A1((ns+1)*n+(i-1)*n+j,0)=-2/ds**2-2/((si+i*ds)*dfai)**2
        A2((ns+1)*n+(i-1)*n+j,0)=(ns+1)*n+(i-1)*n+j
        A1((ns+1)*n+(i-1)*n+j,1)=-1
        A2((ns+1)*n+(i-1)*n+j,1)=i*n+j
      

        A1((ns+1)*n+(i-1)*n+j,2)=1/((si+i*ds)*dfai)**2
      A1((ns+1)*n+(i-1)*n+j,3)=1/((si+i*ds)*dfai)**2

        if(j==0)then      
        A2((ns+1)*n+(i-1)*n+j,2)=(ns+1)*n+(i-1)*n+n-1
        A2((ns+1)*n+(i-1)*n+j,3)=(ns+1)*n+(i-1)*n+j+1
        elseif(j==nfai-1)then
        A2((ns+1)*n+(i-1)*n+j,2)=(ns+1)*n+(i-1)*n+j-1
        A2((ns+1)*n+(i-1)*n+j,3)=(ns+1)*n+(i-1)*n
        else
        A2((ns+1)*n+(i-1)*n+j,2)=(ns+1)*n+(i-1)*n+j-1
        A2((ns+1)*n+(i-1)*n+j,3)=(ns+1)*n+(i-1)*n+j+1
        endif

        if(i==1)then
        A1((ns+1)*n+(i-1)*n+j,4)=1/ds**2+1/((si+i*ds)*ds*2)
        A2((ns+1)*n+(i-1)*n+j,4)=(ns+1)*n+i*n+j
        elseif(i==ns-1)then
        A1((ns+1)*n+(i-1)*n+j,4)=1/ds**2-1/((si+i*ds)*ds*2)
        A2((ns+1)*n+(i-1)*n+j,4)=(ns+1)*n+(i-2)*n+j
        else
        A1((ns+1)*n+(i-1)*n+j,4)=1/ds**2-1/((si+i*ds)*2*ds)
        A2((ns+1)*n+(i-1)*n+j,4)=(ns+1)*n+(i-2)*n+j
      A1((ns+1)*n+(i-1)*n+j,5)=1/ds**2+1/((si+i*ds)*2*ds)
        A2((ns+1)*n+(i-1)*n+j,5)=(ns+1)*n+i*n+j
        endif

            
        enddo
        enddo
c第三个方程
        do i=1,ns-1
        do j=0,nfai-1

c      A(2*ns*nfai+(i-1)*n+j,2*ns*nfai+(i-1)*n+j)=
c     &                      Pr/E+dt*(2/(s*dfai)**2+2/ds**2)
        A1(2*ns*n+(i-1)*n+j,0)=Pr/E+dt*(2/((si+i*ds)*dfai)**2+2/ds**2)
        A2(2*ns*n+(i-1)*n+j,0)=2*ns*n+(i-1)*n+j

        A1(2*ns*n+(i-1)*n+j,1)=dt/(2*dfai)
        A1(2*ns*n+(i-1)*n+j,2)=-dt/(2*dfai)   
      A1(2*ns*n+(i-1)*n+j,3)=-dt/((si+i*ds)*dfai)**2
        A1(2*ns*n+(i-1)*n+j,4)=-dt/((si+i*ds)*dfai)**2
        if(j==0) then
        A2(2*ns*n+(i-1)*n+j,1)=(ns+1)*n+(i-1)*n+n-1
        A2(2*ns*n+(i-1)*n+j,2)=(ns+1)*n+(i-1)*n+j+1
        A2(2*ns*n+(i-1)*n+j,3)=2*ns*n+(i-1)*n+n-1
        A2(2*ns*n+(i-1)*n+j,4)=2*ns*n+(i-1)*n+j+1
        elseif(j==nfai-1)then
        A2(2*ns*n+(i-1)*n+j,1)=(ns+1)*n+(i-1)*n+j-1
        A2(2*ns*n+(i-1)*n+j,2)=(ns+1)*n+(i-1)*n
        A2(2*ns*n+(i-1)*n+j,3)=2*ns*n+(i-1)*n+j-1
        A2(2*ns*n+(i-1)*n+j,4)=2*ns*n+(i-1)*n
        else
        A2(2*ns*n+(i-1)*n+j,1)=(ns+1)*n+(i-1)*n+j-1
        A2(2*ns*n+(i-1)*n+j,2)=(ns+1)*n+(i-1)*n+j+1
        A2(2*ns*n+(i-1)*n+j,3)=2*ns*n+(i-1)*n+j-1
        A2(2*ns*n+(i-1)*n+j,4)=2*ns*n+(i-1)*n+j+1
        endif
       
      if(i==1)then
        A1(2*ns*nfai+(i-1)*n+j,5)=-dt/(ds**2)-dt/((si+i*ds)*2*ds)
        A2(2*ns*nfai+(i-1)*n+j,5)=2*ns*n+i*n+j
        elseif(i==ns-1)then
        A1(2*ns*nfai+(i-1)*n+j,5)=-dt/(ds**2)+dt/((si+i*ds)*2*ds)
        A2(2*ns*nfai+(i-1)*n+j,5)=2*ns*n+(i-2)*n+j
        else
        A1(2*ns*nfai+(i-1)*n+j,5)=-dt/(ds**2)+dt/((si+i*ds)*2*ds)
        A2(2*ns*nfai+(i-1)*n+j,5)=2*ns*n+(i-2)*n+j
        A1(2*ns*nfai+(i-1)*n+j,6)=-dt/(ds**2)-dt/((si+i*ds)*2*ds)
        A2(2*ns*nfai+(i-1)*n+j,6)=2*ns*n+i*n+j
        endif

        enddo
        enddo

        end
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc2
        subroutine rightf(F,ns,nfai,time,pusi,kesi,theta,
     &                  lpusi,ltheta,lkesi)
        implicit none
        integer ns,nfai,time,i,j,n
        double precision si,ds,dt,dfai,pi,F(0:20000),pusi(0:400,0:400),R
     &        ,kesi(0:400,0:400),theta(0:400,0:400),s,E,so,d,Pr,t,w
     &        ,lpusi(0:400,0:400),ltheta(0:400,0:400),lkesi(0:400,0:400)
        parameter( pi=3.1415926535897932385d0        )
        common ds,dt,dfai,si,so,d,E,Pr,R

             do j=0,20000
           F(j)=0
        enddo
        w=pi
        n=nfai
      do j=0,nfai-1
           pusi(0,j)=0
           pusi(ns,j)=0
        enddo
        t=time*dt
        i=0
        do j=0,nfai-1
           F(j)=-kesi(0,j)+2/ds**2*pusi(1,j)
        enddo
        do i=1,ns-1
        s=si+i*ds
        do j=0,nfai-1
        if(j==0)then
        F(i*nfai+j)=kesi(i,j)+dt*3/2*(-1/s)*(
     *                          (pusi(i,j+1)-pusi(i,nfai-1))/(2*dfai)*
     *            (kesi(i+1,j)-kesi(i-1,j))/(2*ds)
     *           -(pusi(i+1,j)-pusi(i-1,j))/(2*ds)*
     *            (kesi(i,j+1)-kesi(i,nfai-1))/(2*dfai)
     *                                                                      )
     *                     -dt/2*(-1/s)*(
     *            (lpusi(i,j+1)-lpusi(i,nfai-1))/(2*dfai)*
     *            (lkesi(i+1,j)-lkesi(i-1,j))/(2*ds)
     *           -(lpusi(i+1,j)-lpusi(i-1,j))/(2*ds)*
     *            (lkesi(i,j+1)-lkesi(i,nfai-1))/(2*dfai)
     *                                  )
        elseif(j==nfai-1)then
        F(i*nfai+j)=kesi(i,j)+dt*3/2*(-1/s)*(
     *                          (pusi(i,0)-pusi(i,j-1))/(2*dfai)*
     *            (kesi(i+1,j)-kesi(i-1,j))/(2*ds)
     *           -(pusi(i+1,j)-pusi(i-1,j))/(2*ds)*
     *            (kesi(i,0)-kesi(i,j-1))/(2*dfai)
     *                                                                      )
     *                     -dt/2*(-1/s)*(
     *            (lpusi(i,0)-lpusi(i,j-1))/(2*dfai)*
     *            (lkesi(i+1,j)-lkesi(i-1,j))/(2*ds)
     *           -(lpusi(i+1,j)-lpusi(i-1,j))/(2*ds)*
     *            (lkesi(i,0)-lkesi(i,j-1))/(2*dfai)
     *                                  )

        else
        F(i*nfai+j)=kesi(i,j)+dt*3/2*(-1/s)*(
     *                          (pusi(i,j+1)-pusi(i,j-1))/(2*dfai)*
     *            (kesi(i+1,j)-kesi(i-1,j))/(2*ds)
     *           -(pusi(i+1,j)-pusi(i-1,j))/(2*ds)*
     *            (kesi(i,j+1)-kesi(i,j-1))/(2*dfai)
     *                                                                      )
     *                     -dt/2*(-1/s)*(
     *            (lpusi(i,j+1)-lpusi(i,j-1))/(2*dfai)*
     *            (lkesi(i+1,j)-lkesi(i-1,j))/(2*ds)
     *           -(lpusi(i+1,j)-lpusi(i-1,j))/(2*ds)*
     *            (lkesi(i,j+1)-lkesi(i,j-1))/(2*dfai)
     *                                  )

        endif
        F(I*nfai+j)=F(I*nfai+j)
     - +dt*dcos(j*dfai)*(
     &        -w*(1.5*dsin(w*(time+1)*dt)-0.5*dsin(w*time*dt))*(
     &                2*(pi/d)**2*dcos(2*pi*i*ds/d)
     &                +pi/((si+i*ds)*d)*dsin(2*pi*i*ds/d)
     &                -1/(si+i*ds)**2*(dsin(pi*i*ds/d))**2
     &                               )
     &        -E*(1.5*dcos(w*(time+1)*dt)-0.5*dcos(w*time*dt))*(
     &           (3*pi/(d*(si+i*ds)**3)-8*(pi/d)**3/(si+i*ds))
     &                                                *dsin(2*pi*i*ds/d)
     &          -(6*(pi/(d*(si+i*ds)))**2+8*(pi/d)**4)*dcos(2*pi*i*ds/d)              
     &           -3/(si+i*ds)**4*(sin(pi*i*ds/d))**2
     &                            )                  )
     &        +dt*(R+2/(1-(si+i*ds)**2))
     &               *(dsin(pi*i*ds/d))**2*dsin(j*dfai)
     &               *(1.5*dcos(w*(time+1)*dt)-0.5*dcos(w*time*dt))
     -  +dt*((1.5*(Cos((time+1)*dt*w)**2-0.5*(cos(time*dt*w))**2)
     -                                 *Sin((Pi*(s - si))/d)*
     -        (Pi*s*(d**2 + 8*Pi**2*s**2)*
     -           Cos((Pi*(s - si))/d) +
     -          d*(-(d*Pi*s*Cos((3*Pi*(s - si))/d)) +
     -             2*(-d**2 + 2*Pi**2*s**2 +
     -                d**2*Cos((2*Pi*(s - si))/d))*
     -              Sin((Pi*(s - si))/d)))*Sin(2*j*dfai))/
     -      (4*d**3*s**4)        )




        enddo
        enddo
        i=ns
        do j=0,nfai-1
           F(i*nfai+j)=-kesi(i,j)+2/ds**2*pusi(i-1,j)
        enddo
c 第三个方程
        do i=1,ns-1
        s=si+i*ds
        do j=0,nfai-1
        if(j==0)then
         F(2*ns*n+(i-1)*nfai+j)=Pr/E*theta(i,j)
     *                    +dt*3/2*(-1/s)*(
     *                          (pusi(i,j+1)-pusi(i,nfai-1))/(2*dfai)*
     *            (theta(i+1,j)-theta(i-1,j))/(2*ds)
     *           -(pusi(i+1,j)-pusi(i-1,j))/(2*ds)*
     *            (theta(i,j+1)-theta(i,nfai-1))/(2*dfai)
     *                                                                       )
     *                     -dt/2*(-1/s)*(
     *            (lpusi(i,j+1)-lpusi(i,nfai-1))/(2*dfai)*
     *            (ltheta(i+1,j)-ltheta(i-1,j))/(2*ds)
     *           -(lpusi(i+1,j)-lpusi(i-1,j))/(2*ds)*
     *            (ltheta(i,j+1)-ltheta(i,nfai-1))/(2*dfai)
     *                                  )
        elseif(j==nfai-1)then
        F(2*n*ns+(i-1)*nfai+j)=Pr/E*theta(i,j)
     *                   +dt*3/2*(-1/s)*(
     *                          (pusi(i,0)-pusi(i,j-1))/(2*dfai)*
     *            (theta(i+1,j)-theta(i-1,j))/(2*ds)
     *           -(pusi(i+1,j)-pusi(i-1,j))/(2*ds)*
     *            (theta(i,0)-theta(i,j-1))/(2*dfai)
     *                                                                      )
     *                     -dt/2*(-1/s)*(
     *            (lpusi(i,0)-lpusi(i,j-1))/(2*dfai)*
     *            (ltheta(i+1,j)-ltheta(i-1,j))/(2*ds)
     *           -(lpusi(i+1,j)-lpusi(i-1,j))/(2*ds)*
     *            (ltheta(i,0)-ltheta(i,j-1))/(2*dfai)
     *                                  )
        else
        F(2*ns*n+(i-1)*nfai+j)=Pr/E*theta(i,j)
     *                   +dt*3/2*(-1/s)*(
     *                          (pusi(i,j+1)-pusi(i,j-1))/(2*dfai)*
     *            (theta(i+1,j)-theta(i-1,j))/(2*ds)
     *           -(pusi(i+1,j)-pusi(i-1,j))/(2*ds)*
     *            (theta(i,j+1)-theta(i,j-1))/(2*dfai)
     *                                                                      )
     *                     -dt/2*(-1/s)*(
     *            (lpusi(i,j+1)-lpusi(i,j-1))/(2*dfai)*
     *            (ltheta(i+1,j)-ltheta(i-1,j))/(2*ds)
     *           -(lpusi(i+1,j)-lpusi(i-1,j))/(2*ds)*
     *            (ltheta(i,j+1)-ltheta(i,j-1))/(2*dfai)
     *                                  )
        endif
        F(2*ns*n+(i-1)*nfai+j)=F(2*ns*n+(i-1)*nfai+j)
     &     +dt*dcos(j*dfai)*(
     &                  -Pr/E*w*(dsin(pi*i*ds/d))**2
     &                    *(1.5*dsin(w*(time+1)*dt)-0.5*dsin(w*time*dt))
     &                  -(1.5*dcos(w*(time+1)*dt)-0.5*dcos(w*time*dt))*
     &                             ( 2*(pi/d)**2*dcos(2*pi*i*ds/d)
     &                               +pi/(d*(si+i*ds))*dsin(2*pi*i*ds/d)
     &                               -(dsin(pi*i*ds/d)/(si+i*ds))**2 )
     &                                                         )
     &     +dt*(dsin(pi*i*ds/d))**2*dsin(j*dfai)
     &                 *(1.5*dcos(w*(time+1)*dt)-0.5*dcos(w*time*dt))


        enddo
        enddo

        end
另一个文件farg.f
      integer function mpir_iargc()
      mpir_iargc = iargc()
      return
      end
      subroutine mpir_getarg( i, s )
      integer       i
      character*(*) s
      call getarg(i,s)
      return
      end
makefile文件
# TOP LEVEL MAKEFILE FOR LIB SAMPLE PROBLEMS

#====================================================================
# ------------------------
# | CVS File Information |
# ------------------------
#
# $RCSfile: Makefile_dist_app,v $
#
# $Author: tuminaro $
#
# $Date: 2000/06/02 16:49:21 $
#
# $Revision: 1.36 $
#
# $Name:  $
#====================================================================
COMM    = SERIAL
MACHINE = GENERIC
MPI_INCLUDE_DIR = -I/opt/mpich-1.2.5/gm_gcc/include
MPI_LIB     = -L/opt/mpich-1.2.5/gm_gcc/lib -lg2c
#
# ANSI C compiler
#
CC_GENERIC      = cc
CC_SUN4         = acc
CC_SOLARIS      = cc
CC_SGI          = cc
CC_SGIM4        = cc
CC_SGI10K        = cc
CC_DEC          = cc
CC_I860         = icc
CC_HP           = cc
CC_SUNMOS       = sicc
CC_NCUBE        = ncc
CC_SP2          = mpcc
CC_T3E          = cc
CC_LINUX        = /opt/mpich-1.2.5/gm_gcc/bin/mpicc -lg2c
CC_TFLOP        = pgcc -cougar

#
# Fortran compiler
#
FC_GENERIC      = f77
FC_SUN4         = f77
FC_SOLARIS      = f77
FC_SGI          = f77
FC_SGIM4        = f77
FC_SGI10K        = f77
FC_DEC          = f77
FC_I860         = if77
FC_HP           = cc
FC_SUNMOS       = sif77
FC_NCUBE        = ncc
FC_SP2          = mpxlf
FC_T3E          = f90
FC_LINUX        = /opt/mpich-1.2.5/gm_gcc/bin/mpif77
FC_TFLOP        = pgf77 -cougar
#
# USE C or Fortran compiler to link
#
LD_GENERIC      = $(CC_GENERIC)
LD_SUN4         = $(FC_SUN4)
LD_SOLARIS      = $(FC_SOLARIS)
LD_SGI          = $(FC_SGI)
LD_SGIM4        = $(FC_SGIM4)
LD_SGI10K        = $(FC_SGI10K)
LD_DEC          = $(CC_DEC)
LD_I860         = $(CC_I860)
LD_HP           = $(CC_HP)
LD_SUNMOS       = $(CC_SUNMOS)
LD_NCUBE        = $(CC_NCUBE)
LD_SP2          = $(CC_SP2)
LD_T3E          = $(CC_T3E)
LD_LINUX        = $(CC_LINUX)
LD_TFLOP        = $(CC_TFLOP)

#
# Machine dependent fortran/C interface
#
CFORT_GENERIC     = -Dappend_
CFORT_SUN4        = -Dappend_
CFORT_SOLARIS     = -Dappend_
CFORT_SGI         = -Dappend_
CFORT_SGIM4       = -Dappend_
CFORT_SGI10K          = -Dappend_
CFORT_DEC         = -Dappend_
CFORT_I860        = -Dappend_
CFORT_HP          = -Dmatched
CFORT_SUNMOS      = -Dappend_
CFORT_NCUBE       = -Dcaps
CFORT_SP2         = -Dmatched
CFORT_T3E         = -Dcaps
CFORT_LINUX       = -Dappend_
CFORT_TFLOP       = -Dappend_

#
# Compilation flags
#
CFLAGS_GENERIC        = -O
CFLAGS_SUN4     = -O2 -vc -Xc
CFLAGS_SOLARIS  = -O -vc
CFLAGS_SGI      = -O  -n32
CFLAGS_SGIM4    = -O -n32
CFLAGS_SGI10K   = -O -64 -r10000
CFLAGS_DEC      = -O2
CFLAGS_NCUBE    = -O
CFLAGS_HP        = -O4
CFLAGS_I860     = -O4
CFLAGS_SUNMOS   = -O4
CFLAGS_SP2      = -O2
CFLAGS_T3E      = -O3 -DT3E
CFLAGS_LINUX    = -O3
CFLAGS_TFLOP    = -O3

FFLAGS_GENERIC = -O
FFLAGS_SUN4     = -O2
FFLAGS_SOLARIS  = -O2
FFLAGS_SGI      = $(CFLAGS_SGI)
FFLAGS_SGIM4    = $(CFLAGS_SGIM4)
FFLAGS_SGI10K   = $(CFLAGS_SGI10K)
FFLAGS_DEC      = $(CFLAGS_DEC)
FFLAGS_I860     = $(CFLAGS_I860)
FFLAGS_HP        = -O
FFLAGS_SUNMOS   = $(CFLAGS_SUNMOS)
FFLAGS_NCUBE    = $(CFLAGS_NCUBE)
FFLAGS_SP2      = $(CFLAGS_SP2)
FFLAGS_T3E      = -O3 -dp
FFLAGS_LINUX    = $(CFLAGS_LINUX)
FFLAGS_TFLOP    = $(CFLAGS_TFLOP)

LDFLAGS_GENERIC   = -O
LDFLAGS_SUN4      = -O2
LDFLAGS_SOLARIS   = -O2
LDFLAGS_SGI       = -O2 -n32
LDFLAGS_SGIM4     = -O  -n32
LDFLAGS_SGI10K    = -O  -64 -r10000
LDFLAGS_DEC       = -O2
LDFLAGS_I860      = -O4
LDFLAGS_HP        = -O4
LDFLAGS_SUNMOS    = -O4
LDFLAGS_NCUBE     = -O -Nstack 40000 -Nheap 2800000 -Ncomm 200000
LDFLAGS_SP2       = -O
LDFLAGS_T3E       = -O -Wl"-D equiv(DCOPY)=SCOPY;equiv(DDOT)=SDOT;equiv(DSQRT)=SQRT;equiv(DNRM2)=SNRM2;equiv(DSCAL)=SSCAL;equiv(DAXPY)=SAXPY;equiv(DASUM)=SASUM;equiv(IDAMAX)=ISAMAX;equiv(DSWAP)=SSWAP;equiv(DGEMV)=SGEMV;equiv(DGEMM)=SGEMM;equiv(DTRSM)=STRSM;equiv(DGER)=SGER;equiv(DTRMM)=STRMM;equiv(DTRMV)=STRMV;equiv(DSYRK)=SSYRK"
LDFLAGS_LINUX     = -O
LDFLAGS_TFLOP     = -O

#
# Communication Libraries to link
#
CLIB_SERIAL     =
CLIB_I860       =
CLIB_SUNMOS     =
CLIB_HP         =
CLIB_NCUBE      =
CLIB_MPI        = $(MPI_LIB)

LIB_SUN4        = -cg89
LIB_SOLARIS     = -L/opt/SUNWspro/lib -lnsl -lsocket -lgen -lnsl \
                 -lsocket -lgen -lM77 -lF77 -lsunmath -lm
LIB_SGI         = -lI77 -lF77 -lisam
LIB_SGIM4       = -lI77 -lF77 -lisam
LIB_SGI10K      =
LIB_DEC         = -lots -lfor
LIB_I860        = -lkmath -lf -nx
LIB_SUNMOS      = -lkmath -lf
LIB_NCUBE       = -lblas  -lf
LIB_SP2         = -lxlf90
LIB_T3E         =
#LIB_LINUX       = /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/libg2c.a
#LIB_LINUX       = /public/images/tc4000a/usr/lib/gcc-lib/x86_64-pc-linux/3.2.2/32/libg2c.a
LIB_LINUX      =/usr/lib/gcc-lib/x86_64-pc-linux/3.2.2/libg2c.a -lg2c -lm
LIB_TFLOP       = -lkmath -lf

# Choose the application you want to run:
#
# 1) Standard MSR/VBR application
#OBJ  = az_main.o az_examples.o az_app_utils.o
#
# 2) Tutorial application
#       Choose one of the 3 depending on whether you want to see a "C"  
#       application, a Fortran application using MPI, or a Fortran
#       application without MPI.
#       NOTE: You can only use 'az_tutorial_with_MPI.f' if you have MPI
#             and you can not use 'az_tutorial_without_MPI.f' with MPI.
#
#OBJ  = az_tutorial.o
#OBJ  = az_tutorial_with_MPI.o
#OBJ  = az_tutorial_without_MPI.o
#
# 3) Matrix free application
#
#OBJ  = az_mat_free_main.o az_mat_free_example.o az_mat_free_com.o

OBJ = abc.o

#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# No need to change the rest of this file when adding
# a new machine to the makefile
#
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

CC              = $(CC_LINUX)
FC              = $(FC_LINUX)
CFORT           = $(CFORT_LINUX)
CFLAGS2         = $(CFLAGS_LINUX)
FFLAGS2         = $(FFLAGS_LINUX)
LDFLAGS2        = $(LDFLAGS_LINUX)
LIB_MACH_DEP    = $(CLIB_MPI) $(LIB_LINUX)
LD_COMPILER     = $(LD_LINUX)


MAX_MEM = 16731136
GEN_CFLAGS   = -I/home/user/shaolxh/aztec64-gm/lib -DMAX_MEM_SIZE=$(MAX_MEM) -DCOMM_BUFF_SIZE=200000 \
               -DMAX_CHUNK_SIZE=200000
GEN_LIBS     = -L/home/user/shaolxh/aztec64-gm/lib -laztec  -lm -lg2c

LDFLAGS      = $(LDFLAGS2) $(GEN_LIBS) $(LIB_MACH_DEP)
CFLAGS       = $(CFLAGS2) $(CFORT) $(GEN_CFLAGS) -DAZ_MPI $(MPI_INCLUDE_DIR)
FFLAGS       = $(FFLAGS2)  $(MPI_INCLUDE_DIR) $(GEN_CFLAGS)
#                        -DMPI is used so that MPI_Init defined in
#                         az_main.c gets compiled and so that MPI_Request
#                         is defined properly.


#####################################
# Define implicit compilation rules #
#####################################
all: abc

# application code

abc:  $(OBJ)
        $(LD_COMPILER) $(OBJ) $(LDFLAGS) -o abc.gm
clean:
        @echo "cleaning ..."
        /bin/rm -f $(OBJ)

论坛徽章:
0
2 [报告]
发表于 2005-04-11 08:27 |只看该作者

help

没有  main  函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP