If using free-format use extension .F90 not .F

On 10/08/2010 09:33 PM, Peter Wang wrote:
> I am trying to modify the example code in 
> {PETSc_Dir}\src\vec\vec\examples\tests\ex19f.F . Only three lines are
> added into the original code.   However, if the three lines are added,
> there is error coming out when it is compiled.  Why it cannot be
> compiled when the lines are added?  I am using gfortran 4.4.3 and
> openMPI 1.3.2  and petsc 3.1-p5-v1.  The error infomation is as following:
> *********************************************************
>  
>  
> ex19f.F:29.5:
>     call MPI_COMM_RANK(MPI_COMM_WORLD,myid,rc)
>      1
> Error: Non-numeric character in statement label at (1)
> ex19f.F:29.5:
>     call MPI_COMM_RANK(MPI_COMM_WORLD,myid,rc)
>      1
> Error: Unclassifiable statement at (1)
> ex19f.F:30.5:
>     call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,rc)
>      1
> Error: Non-numeric character in statement label at (1)
> ex19f.F:30.5:
>     call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,rc)
>      1
> Error: Unclassifiable statement at (1)
> make: *** [ex19f.o] Error 1
> 
> *********************************************************
> Following is the code I modified. The lines followed by
> !***************Added for MPI are added by me for MPI subroutine.
> *********************************************************
> !
> !
>       program main
> !  include 'mpif.h'
> #include "finclude/petscsys.h"
> #include "finclude/petscvec.h"
> !
> !  This example demonstrates basic use of the PETSc Fortran interface
> !  to vectors.
> !
>  
>        integer myid,numprocs,namelen,rc  !***************Added for MPI
>        PetscInt  n
>        PetscErrorCode ierr
>        PetscTruth flg
>        PetscScalar      one,two,three,dot
>        PetscReal        norm,rdot
>        Vec              x,y,w
>  
>        n     = 20
>        one   = 1.0
>        two   = 2.0
>        three = 3.0
>        call PetscInitialize(PETSC_NULL_CHARACTER,ierr)                 
>        call PetscOptionsGetInt(PETSC_NULL_CHARACTER,'-n',n,flg,ierr)
>  
>     call MPI_COMM_RANK(MPI_COMM_WORLD,myid,rc)     
> !***************Added for MPI
>     call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,rc) 
> !***************Added for MPI
>  
>   
> 
> ! Create a vector, then duplicate it
>        call VecCreate(PETSC_COMM_WORLD,x,ierr)
>        call VecSetSizes(x,PETSC_DECIDE,n,ierr)
>        call VecSetFromOptions(x,ierr)
>        call VecDuplicate(x,y,ierr)
>        call VecDuplicate(x,w,ierr)
>        call VecSet(x,one,ierr)
>        call VecSet(y,two,ierr)
>        call VecDot(x,y,dot,ierr)
>        rdot = PetscRealPart(dot)
>        write(6,100) rdot
>   100  format('Result of inner product ',f10.4)
>        call VecScale(x,two,ierr)
>        call VecNorm(x,NORM_2,norm,ierr)
>        write(6,110) norm
>   110  format('Result of scaling ',f10.4)
>        call VecCopy(x,w,ierr)
>        call VecNorm(w,NORM_2,norm,ierr)
>        write(6,120) norm
>   120  format('Result of copy ',f10.4)
>        call VecAXPY(y,three,x,ierr)
>        call VecNorm(y,NORM_2,norm,ierr)
>        write(6,130) norm
>   130  format('Result of axpy ',f10.4)
>        call VecDestroy(x,ierr)
>        call VecDestroy(y,ierr)
>        call VecDestroy(w,ierr)
>        call PetscFinalize(ierr)
>        end
> 

Reply via email to