need help with makefile

P. Aaron Lott palott at ipst.umd.edu
Fri Mar 2 10:58:54 CST 2007


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