need help with makefile

P. Aaron Lott palott at ipst.umd.edu
Sat Mar 3 08:56:36 CST 2007


Hi Satish,

You're right the problem is from mpif90, I tried

mpif90 -qfree -c  -I. -g  __unsteady_ex.F -o unsteady_ex.o

but I'm getting the same error messages.  The file unsteady_ex  
compiled fine before using petsc and the preprocessor, so I really  
don't know what the problem could be.

Any ideas?

-Aaron







On Mar 2, 2007, at 12:16 PM, Satish Balay wrote:

>>>> /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
>>
>>
>

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