[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Programming in *.f90 free format with PETSc



Hi,
 
I can compile and run with visual fortran by putting all the declarations inside a subroutine e.g.
 
module ada

...

subroutine ddd
 

#define PETSC_AVOID_DECLARATIONS
#include "include/finclude/ petsc.h"
<other includes>
#undef PETSC_AVOID_DECLARATIONS

....

end subroutine ddd
 

end module ada
 
However, on my school's server which uses ifort, I get errors both using your way and my way e.g.
 

#define PETSC_AVOID_DECLARATIONS
#include "include/finclude/petsc.h"
#include "include/finclude/petscvec.h"
#include "include/finclude/petscmat.h"
#include "include/finclude/petscksp.h"
#include "include/finclude/petscpc.h"
#include "include/finclude/petscmat.h90"
#undef PETSC_AVOID_DECLARATIONS

program test

implicit none

integer :: x,y

Vec test_vec

x=1

print *, x

end program test

 
I compile using
 
ifort -r8 -132 -fPIC -g -c -static-libcxa -O3  -I/lsftmp/g0306332/petsc-2.3.3-p0 -I/lsftmp/g0306332/petsc-2.3.3-p0/bmake/atlas3 -I/lsftmp/g0306332/petsc-2.3.3-p0/include -I/lsftmp/g0306332/petsc-2.3.3-p0/externalpackages/hypre- 2.0.0/atlas3/include -I/lsftmp/g0306332/mpich2/include temp.f90
 
and get the error msg:
 
fortcom: Warning: Bad # preprocessor line
fortcom: Warning: Bad # preprocessor line
fortcom: Warning: Bad # preprocessor line
fortcom: Warning: Bad # preprocessor line
fortcom: Warning: Bad # preprocessor line
fortcom: Warning: Bad # preprocessor line
fortcom: Warning: Bad # preprocessor line
fortcom: Warning: Bad # preprocessor line
 
fortcom: Error: temp.f90, line 18: Syntax error, found IDENTIFIER 'TEST_VEC' when expecting one of: => = . ( : %
Vec test_vec
----^
fortcom: Error: temp.f90, line 18: This name does not have a type, and must have an explicit type.   [VEC]
Vec test_vec
^
fortcom: Error: temp.f90, line 18: This name does not have a type, and must have an explicit type.   [TEST_VEC]
Vec test_vec
----^
compilation aborted for temp.f90 (code 1)
 
I also tried shifting the declarations after the "program test" line but it also failed. There is no problem if I changed the code to fixed format.
 
Thanks
 
 

 
On 8/6/07, Satish Balay <balay@xxxxxxxxxxx> wrote:
This is incorrect usage.

If you are getting errors with the correct usage, send us the error
messages, with your code, and we can sugest fixes.

- one issue could be

> > #define PETSC_AVOID_DECLARATIONS
> > #include "include/finclude/petsc.h"
> > #include "include/finclude/petscvec.h90"  <--- This should be removed from here..
> > <other includes>
> > #undef PETSC_AVOID_DECLARATIONS
> >
> > moudle foobar
> > <other module stuff>
> > end module


Satish

On Mon, 6 Aug 2007, Ben Tay wrote:

> Hi,
>
> I tried to use
>
> #define PETSC_AVOID_DECLARATIONS
> #include "include/finclude/petsc.h"
> <other includes>
> #undef PETSC_AVOID_DECLARATIONS
>
>
> module ada
> ...
>
> subroutine ....
>
> end module ada
>
> but the compiler says that the module is placed in the wrong order. Anyway, I
> just move the top 4 lines into the subroutine instead and it worked. Thanks
>
> module ada
>
> ...
>
> subroutine ddd
>
> #define PETSC_AVOID_DECLARATIONS
> #include "include/finclude/petsc.h"
> <other includes>
> #undef PETSC_AVOID_DECLARATIONS
>
> ....
>
> end subroutine ddd
>
>
>
>
> Satish Balay wrote:
> > you can use .F90 suffix for free-from preprocesed code. [or use
> > compiler options to force it always use free-form]
> >
> > And when using fortran modules use the following organization:
> >
> >
> > #define PETSC_AVOID_DECLARATIONS
> > #include "include/finclude/petsc.h"
> > <other includes>
> > #undef PETSC_AVOID_DECLARATIONS
> >
> > moudle foobar
> > <other module stuff>
> > end module
> >
> > subroutine xyz()
> > use foobar
> > implicit none
> > #include "include/finclude/petsc.h"
> > <other includes>
> > <code>
> > end subroutine
> > <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> >
> > Satish
> >
> > On Mon, 6 Aug 2007, Ben Tay wrote:
> >
> >
> > > Hi,
> > >
> > > I've no problem writing out codes in fortran fixed format with PETSc.
> > > However,
> > > is it possible to do it in fortran free format as well?
> > >
> > > I'm using visual fortran and there's error.
> > >
> > > original :
> > >
> > > test.F
> > >
> > > module global_data
> > >
> > >    implicit none
> > >
> > >    save
> > >
> > > #include "include/finclude/petsc.h"
> > > #include "include/finclude/petscvec.h"
> > > #include "include/finclude/petscmat.h"
> > > #include "include/finclude/petscksp.h"
> > > #include "include/finclude/petscpc.h"
> > > #include "include/finclude/petscmat.h90"
> > >
> > >    Vec    xx,b_rhs
> > >
> > > ....
> > >
> > > How can I change this code to fortran free format *.f90?
> > >
> > > Thanks
> > >
> > >
> > >
> >
> >
> >
>
>