Glad you have it working. Thanks for the update. Satish
On Mon, 7 Nov 2022, Jianbo Long wrote: > Hi Satish and Barry, > > Thanks very much for the feedback ! > > It looks like my include file path was not correct ! > > Bests, > Jianbo > > > On Fri, Nov 4, 2022 at 6:08 AM Satish Balay <[email protected]> wrote: > > > For ex83f.F90: > > > > >>>>> > > balay@p1 /home/balay/test > > $ ls > > ex83f.F90 > > balay@p1 /home/balay/test > > $ ls > > ex83f.F90 > > balay@p1 /home/balay/test > > $ export PETSC_DIR=$HOME/petsc > > balay@p1 /home/balay/test > > $ cp $PETSC_DIR/src/ksp/ksp/tests/makefile . > > balay@p1 /home/balay/test > > $ make ex83f > > mpif90 -fPIC -Wall -ffree-line-length-none -ffree-line-length-0 > > -Wno-lto-type-mismatch -Wno-unused-dummy-argument -g -O0 > > -I/home/balay/petsc/include > > -I/home/balay/petsc/arch-linux-c-debug/include ex83f.F90 > > -Wl,-rpath,/home/balay/petsc/arch-linux-c-debug/lib > > -L/home/balay/petsc/arch-linux-c-debug/lib > > -Wl,-rpath,/home/balay/soft/mpich-4.0.1/lib > > -L/home/balay/soft/mpich-4.0.1/lib > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/12 > > -L/usr/lib/gcc/x86_64-redhat-linux/12 -lpetsc -llapack -lblas -lm -lX11 > > -lstdc++ -ldl -lmpifort -lmpi -lgfortran -lm -lgfortran -lm -lgcc_s > > -lquadmath -lstdc++ -ldl -o ex83f > > balay@p1 /home/balay/test > > $ > > <<<<<< > > > > Also when you are adding PETSc to your current project - are you using > > source files with .f or .f90 suffix? If so rename them to .F or .F90 suffix. > > > > If you still have issues send more details - As Barry indicated - the > > makefile [with the sources compiled by this makefile] - and the compile log > > when you attempt to build these sources with this makefile. > > > > Satish > > > > On Thu, 3 Nov 2022, Barry Smith wrote: > > > > > > > > Please send your attempted makefile and we'll see if we can get it > > working. > > > > > > I am not sure if we can organize the include files as Fortran compiler > > include files easily. We've always used the preprocessor approach. The > > Intel compiler docs indicate the procedure for finding the Fortran compiler > > include files > > https://www.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top/program-structure/use-include-files.html > > is the same as for the preprocessor include files so I don't understand how > > the using the Fortran compiler include file approach would make the > > makefiles any simpler for users? > > > > > > > > > Barry > > > > > > > > > > On Nov 3, 2022, at 8:58 PM, Jianbo Long <[email protected]> > > wrote: > > > > > > > > Hello, > > > > > > > > I'm struggling to make my FORTRAN code work with petsc as I cannot > > link the required header files (e.g., petscksp.h) and compiled library > > files to my FORTRAN code. > > > > > > > > Compiling petsc was not a problem. However, even with the fortran > > examples (see those on https://petsc.org/main/docs/manual/fortran/) and > > the guide on using petsc in c++ and fortran codes (see Section "Writing > > C/C++ or Fortran Applications" at > > https://petsc.org/main/docs/manual/getting_started/), I still cannot make > > my FORTRAN code work. > > > > > > > > The Fortran test code is exactly the example code ex83f.F90 (see > > attached files). Aftering following the 2nd method in the Guide (see the > > picture below), I still get errors: > > > > > > > > petsc/finclude/petscksp.h: No such file or directory > > > > > > > > Even if I set up the path of the header file correctly in my own > > makefile without using environment variables, I still can only find the > > file "petscksp.h" for my code. Of course, the trouble is that all other > > headers files required by KSP are recursively included in this petscksp.h > > file, and I have no way to link them together for my Fortran code. > > > > > > > > So, here are my questions: > > > > 1) in the Guide, how exactly are we supposed to set up the environment > > variables PETSC_DIR and PETSC_ARCH ? More details and examples would be > > extremely helpful ! > > > > 2) Is there a way to get rid of the preprocessor statement > > > > #include <petsc/finclude/petscvec.h> > > > > when using c++/Fortran codes ? > > > > > > > > For example, when using MUMPS package in a Fortran code, we can simply > > use compiler 'include', rather than a preprocessor, to extract all required > > variables for the user's codes : > > > > INCLUDE 'zmumps_struc.h' > > > > where the header file zmumps_struc.h is already provided in the > > package. Similarly, I think it's much more portable and easier when using > > petsc in other codes if we can make it work to use petsc. > > > > > > > > (Note: similar issues were discussed before, see > > https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2019-January/037499.html. > > Unfortunately, I have no clue about the solution archived there ...) > > > > > > > > Any thoughts and solutions would be much appreciated ! > > > > > > > > Thanks, > > > > Jianbo Long > > > > > > > > <image.png> > > > > <ex83f.F90> > > > > > > > > > > >
