need help with makefile

Satish Balay balay at mcs.anl.gov
Fri Mar 2 11:16:12 CST 2007


>>>/usr/local/mpich-1.2.5.2/bin/mpif90 -c  -I. -g  __unsteady_ex.F -o unsteady_ex.o
"__unsteady_ex.F", line 965.2: 1515-019 (S) Syntax is incorrect.
<<<

The error is from mpif90 - not the preprocessor. Maybe its interpreting
the code as fixed form? Try adding '-qfree' to FFLAGS and see if it makes
a difference.

Satish

On Fri, 2 Mar 2007, P. Aaron Lott wrote:

> 
> Thanks Satish,
> 
> I checked the __unsteady_ex.F file. The preprocessor doesn't seem to like any
> of my fortran code. It starts complaining about the use of the use statements,
> and basically all the lines of code in this file.
> 
> Any ideas?
> 
> -Aaron
> 
> Here are some of the statements  the preprocessor complains about:
> 
>  use initialize
>  use coordinates
>  use maps
>  use boundaries
>  use elements
>  use buildU
>  use matrix_ops
>  use output
>  use d1ops
>  use globaldata
>  use dss
>  use par_dss
>  use forces
>  use winds
>  use stokes_solvers
> 
>  implicit none
> 
>  integer n,i,j
>  real(kind=8) dt,gam
>  integer nsteps
>  type(coord) coords
>  type(coord) proc_coords
>  type(solution) GUXY,LUXY
>  real(kind=8),allocatable, dimension(:):: force,wind
>  integer nelements
>  integer nely,nelx
>  integer twod
>  integer nglobaldofs
>  integer  irc,myrank,nprocs, ierr, status(MPI_STATUS_SIZE)
> 
>  call mpi_init(ierr)
>  ! Get myrank
>  call mpi_comm_rank(MPI_COMM_WORLD,myrank,ierr)
>  call mpi_comm_size(MPI_COMM_WORLD,nprocs,ierr)
> 
>  call PetscInitialize( PETSC_NULL_CHARACTER, ierr )
>  call MPI_Comm_rank( PETSC_COMM_WORLD, myrank, ierr )
>    if (myrank .eq. 0) then
>        print *, ?Hello World?
>    endif
>    call PetscFinalize(ierr)
> 
>    stop
> 
> 
> 
> 
> 
> 
> On Mar 2, 2007, at 11:38 AM, Satish Balay wrote:
> 
> > 
> > 
> > On Fri, 2 Mar 2007, P. Aaron Lott wrote:
> > 
> > > 
> > > Thanks for this information. I think I setup things almost right, but
> > > something is causing preprocessor to complain. The errors it is giving are
> > > referring to lines of my main program file that doesn't exist.
> > 
> > The line numbers refer to the temoprary file created - __unsteady_ex.F
> > 
> > You can run the following command to preserve the temporary file - and
> > check it for the correct line number
> > 
> > make unsteady_ex SKIP_RM=yes
> > 
> > Preprocessing fortran code with C compiler can have some false
> > positives.  For eg: if you have quotes in comments - then cpp can
> > misbehave.
> > 
> > > 
> > > I would appreciate any recommendations about how to fix this problem. I've
> > > list some of the details of my setup below.
> > > 
> > > Thanks,
> > > 
> > > -Aaron
> > > 
> > > 
> > > 
> > > e.g.
> > > 
> > > macbeth% make unsteady_ex
> > > /usr/local/mpich-1.2.5.2/bin/mpicc
> > > -I/Users/palott/research/codes/petsc/petsc-2.3.2-p8
> > > -I/Users/palott/research/codes/pets
> > > c/petsc-2.3.2-p8/bmake/darwin-mpich-g
> > > -I/Users/palott/research/codes/petsc/petsc-2.3.2-p8/include
> > > -I/usr/local/mpich-1.2.
> > > 5.2/include        -E -traditional-cpp __unsteady_ex.c | /usr/bin/grep -v
> > > '^
> > > *#' > __unsteady_ex.F
> > > /usr/local/mpich-1.2.5.2/bin/mpif90 -c  -I. -g  __unsteady_ex.F -o
> > > unsteady_ex.o
> > > "__unsteady_ex.F", line 965.2: 1515-019 (S) Syntax is incorrect.
> > > 
> > > 
> > > But there are only 207 lines in this file.....
> > > 
> > > 
> > > 
> > > In my current makefile I have
> > > 
> > > F90=mpif90
> > > F77=mpif77
> > 
> > These don't need to be specified as PETSc .F.o targets don't use them.. [and
> > you don't want to redefine whats already configured inside PETSc]
> > 
> > > F77FLAGS= -C -g -qdpc -qautodbl=dbl4 -qinitauto -Wl,-framework -Wl,vecLib
> > 
> > This variable is not used by PETSc target
> > 
> > > FLAGS=  -C -g  -qdpc -qautodbl=dbl4 -qinitauto -Wl,-framework -Wl,vecLib
> > 
> > PETSc should already use a blas implementation - so no need to specify
> > vecLib again.
> > 
> > > 
> > > 
> > > EXENAME = unsteady_ex
> > > CMD:=EXENAME
> > > 
> > > SOBJS = mpi.o  quicksort.o routines.o binsort.o  coordinates.o comm_maps.o
> > > elements.o globaldata.o sem.o comp_inv.o d1ops.o maps.o  pardss.o dss.o
> > > stiffness.o convection.o Mass.o  pressure.o buildU.o  wind.o forcing.o
> > > boundary_cond.o  navier_stokes.o runge_kutta.o  out.o gmres.o pcg.o
> > > stream.o
> > > uzawa.o print_matrices.o projection.o bdf.o  stokes_solvers.o
> > > initialize_mpi.o unsteady_ex.o
> > > 
> > > 
> > > $(CMD)  : $(SOBJS)
> > > 	-${FLINKER} $(FLAGS) -o $(EXENAME) $(SOBJS)   $(PETSC_SYS_LIB)
> > 
> > No need to specify FLAGS here - as the default targets pick it up [in this
> > case
> > the flags get added to FLINKER
> > 
> > Satish
> > 
> > > 
> > > 
> > > mpi.o		: ../Comm/mpi.f90 		;$(F90) $(FLAGS) -c
> > > ../Comm/mpi.f90
> > > gmres.o		: ../Solvers/gmres.f90		;$(F90) $(FLAGS) -c
> > > ../Solvers/gmres.f90
> > > etc.... for all the object files except unsteady_ex.o
> > > 
> > > unsteady_ex.F is my main program.
> > > 
> > > In the example you gave, ex1f.F would be the main program, and at the top
> > > of
> > > the file it would have the statement:
> > > 
> > > #include "include/finclude/petsc.h"
> > > 
> > > So in my case, I've put that in the top of my unsteady_ex.F
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > On Mar 1, 2007, at 5:56 PM, Satish Balay wrote:
> > > 
> > > > The idea is to use a PETSc example makefile - and modify it
> > > > appropriately.
> > > > 
> > > > And with fortran codes - we require preprocessing [i.e source files
> > > > that call PETSc routines should be .F]
> > > > 
> > > > A minimal PETSc makefile is as follows:
> > > > ------------------------------------------------
> > > > CFLAGS           =
> > > > FFLAGS           =
> > > > CPPFLAGS         =
> > > > FPPFLAGS         =
> > > > CLEANFILES       =
> > > > 
> > > > include ${PETSC_DIR}/bmake/common/base
> > > > 
> > > > ex1f: ex1f.o  chkopts
> > > > 	-${FLINKER} -o ex1f ex1f.o  ${PETSC_KSP_LIB}
> > > > 	${RM} ex1f.o
> > > > -----------------------------------------------------
> > > > 
> > > > So you'll just make the change [with the variables CMD and SOBJS
> > > > properly
> > > > defined]
> > > > 
> > > > ex1f -> $(CMD)
> > > > ex1f.o -> $(SOBJS)
> > > > 
> > > > Note: Necessary FFLAGS should already be PETSc config files. Some
> > > > additional flags can be specified with FFLAGS variable
> > > > 
> > > > Satish
> > > > 
> > > > 
> > > > On Thu, 1 Mar 2007, P. Aaron Lott wrote:
> > > > 
> > > > > 
> > > > > 
> > > > > Hi,
> > > > > 
> > > > > I have a fortran90 code and I would like to use petsc's
> > > > > preconditioners
> > > > > inside of it. I'm having trouble setting up a makefile that will allow
> > > > > me
> > > > > include a petsc. It seems the problem is from the use of the
> > > > > c-preprocessor.
> > > > > 
> > > > > My old makefile looked something like this:
> > > > > 
> > > > > $(CMD)  : $(SOBJS)
> > > > > 	$(F90) $(FLAGS) -o $(EXENAME) $(SOBJS)
> > > > > 
> > > > > where SOBJ is a list of all of my object files.
> > > > > 
> > > > > I was hoping to be able to make a petsc object file and include it in
> > > > > this
> > > > > list. Is this possible? Is there a tutorial on how to get petsc setup
> > > > > inside
> > > > > of your existing code?
> > > > > 
> > > > > Thanks,
> > > > > 
> > > > > -Aaron
> > > > > 
> > > > > 
> > > > > 
> > > > > P. Aaron Lott
> > > > > Ph.D. Candidate
> > > > > 4239 Computer and Space Sciences Building
> > > > > University of Maryland
> > > > > College Park, MD 20742-4015
> > > > > 
> > > > > palott at ipst.umd.edu
> > > > > http://www.lcv.umd.edu/~palott
> > > > > Office: 301.405.4894
> > > > > Fax:      301.314.0827
> > > > > 
> > > > > 
> > > > 
> > > 
> > > P. Aaron Lott
> > > Ph.D. Candidate
> > > 4239 Computer and Space Sciences Building
> > > University of Maryland
> > > College Park, MD 20742-4015
> > > 
> > > palott at ipst.umd.edu
> > > http://www.lcv.umd.edu/~palott
> > > Office: 301.405.4894
> > > Fax:      301.314.0827
> > > 
> > > 
> > 
> 
> P. Aaron Lott
> Ph.D. Candidate
> 4239 Computer and Space Sciences Building
> University of Maryland
> College Park, MD 20742-4015
> 
> palott at ipst.umd.edu
> http://www.lcv.umd.edu/~palott
> Office: 301.405.4894
> Fax:      301.314.0827
> 
> 




More information about the petsc-users mailing list