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